]> git.siccegge.de Git - frida/frida.git/blobdiff - src/gui/Mainwindow.cxx
Add basic save support (Infrastructure)
[frida/frida.git] / src / gui / Mainwindow.cxx
index 70d31d509c33abf939ca44d9eef15f57eaebe7e5..03910a1be4801334ade968cbb237f6cd8cfe4d46 100644 (file)
@@ -4,7 +4,7 @@
 
 #include "widgets/CFGScene.hxx"
 #include "dialogs/NewFunctionDialog.hxx"
-#include "dialogs/RenameFunctionDialog.hxx"
+#include "dialogs/SimpleStringDialog.hxx"
 
 #include <sstream>
 
@@ -20,18 +20,19 @@ Mainwindow::Mainwindow(InformationManager* mgr)
        : manager(mgr)
        , logger(log4cxx::Logger::getLogger("Mainwindow")) {
        openAction = new QAction(tr("&Open"), this);
-       // saveAction = new QAction(tr("&Save"), this);
+       saveAction = new QAction(tr("&Save"), this);
        exitAction = new QAction(tr("E&xit"), this);
 
        connect(openAction, SIGNAL(triggered()),
                this, SLOT(open()));
-       // connect(saveAction, SIGNAL(triggered()), this, SLOT(save()));
+       connect(saveAction, SIGNAL(triggered()),
+               this, SLOT(save()));
        connect(exitAction, SIGNAL(triggered()),
                qApp, SLOT(quit()));
 
        fileMenu = menuBar()->addMenu(tr("&File"));
        fileMenu->addAction(openAction);
-       // fileMenu->addAction(saveAction);
+       fileMenu->addAction(saveAction);
        fileMenu->addSeparator();
        fileMenu->addAction(exitAction);
 
@@ -94,6 +95,11 @@ void Mainwindow::open() {
        manager->reset(fileName.toStdString());
 }
 
+void Mainwindow::save() {
+       QString filename = QFileDialog::getSaveFileName(this, tr("Save File"), "", tr("Frida Archives (*.frida)"));
+       manager->save(filename);
+}
+
 void Mainwindow::switchMainPlaneToAddress(uint64_t address) {
        if (objects_list_by_address.find(address) != objects_list_by_address.end()) {
                LOG4CXX_DEBUG(logger, "Switching to function " << std::hex << address);
@@ -140,7 +146,7 @@ void Mainwindow::requestNewFunctionByAddress(uint64_t address) {
 }
 
 void Mainwindow::renameFunction(QListWidgetItem * item) {
-       RenameFunctionDialog dialog;
+       SimpleStringDialog dialog("New name");
        int result = dialog.exec();
        if (QDialog::Accepted == result) {
                LOG4CXX_DEBUG(logger, "renaming Function " << item->text().toStdString()