X-Git-Url: https://git.siccegge.de//index.cgi?p=frida%2Ffrida.git;a=blobdiff_plain;f=src%2Fgui%2FMainwindow.cxx;h=03910a1be4801334ade968cbb237f6cd8cfe4d46;hp=754d5b2b0f1ab244b7932e77f571b14f1abc4d85;hb=64cdefa8eebaedef3a852b061d4df431b7e6c654;hpb=26ff0a6f5b4ea19657f851a82a8d679f10d19edb diff --git a/src/gui/Mainwindow.cxx b/src/gui/Mainwindow.cxx index 754d5b2..03910a1 100644 --- a/src/gui/Mainwindow.cxx +++ b/src/gui/Mainwindow.cxx @@ -4,7 +4,7 @@ #include "widgets/CFGScene.hxx" #include "dialogs/NewFunctionDialog.hxx" -#include "dialogs/RenameFunctionDialog.hxx" +#include "dialogs/SimpleStringDialog.hxx" #include @@ -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); @@ -127,18 +133,23 @@ void Mainwindow::requestNewFunction() { NewFunctionDialog dialog; int result = dialog.exec(); if (QDialog::Accepted == result) { - LOG4CXX_DEBUG(logger, "requesting Function at " << std::hex << dialog.result()); - manager->getDisassembler()->disassembleFunctionAt(dialog.result()); + requestNewFunctionByAddress(dialog.result()); } else { LOG4CXX_DEBUG(logger, "requestNewFunction aborted"); } } +void Mainwindow::requestNewFunctionByAddress(uint64_t address) { + LOG4CXX_DEBUG(logger, "requesting Function at " << std::hex << address); + manager->getDisassembler()->disassembleFunctionAt(address); + switchMainPlaneToAddress(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() + LOG4CXX_DEBUG(logger, "renaming Function " << item->text().toStdString() << " to " << dialog.result().toStdString()); item->setText(dialog.result()); } else {