X-Git-Url: https://git.siccegge.de//index.cgi?p=frida%2Ffrida.git;a=blobdiff_plain;f=src%2Fgui%2FMainwindow.cxx;h=03910a1be4801334ade968cbb237f6cd8cfe4d46;hp=55bc86dd4fca2576bb9fa168ec82e2f8754f87c8;hb=64cdefa8eebaedef3a852b061d4df431b7e6c654;hpb=10d250c78f36a41d98a6dca768f4e2dafec64e57 diff --git a/src/gui/Mainwindow.cxx b/src/gui/Mainwindow.cxx index 55bc86d..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,15 +133,20 @@ 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()