Make af from DisassemblyContextMenu more meaningful

This commit is contained in:
Florian Märkl 2018-08-18 21:28:04 +02:00
parent 08e55827b7
commit f92fb71b0e
4 changed files with 28 additions and 10 deletions

View File

@ -31,3 +31,8 @@ QString RenameDialog::getName() const
{ {
return ui->nameEdit->text(); return ui->nameEdit->text();
} }
void RenameDialog::setPlaceholderText(const QString &text)
{
ui->nameEdit->setPlaceholderText(text);
}

View File

@ -19,6 +19,8 @@ public:
void setName(QString fcnName); void setName(QString fcnName);
QString getName() const; QString getName() const;
void setPlaceholderText(const QString &text);
private slots: private slots:
void on_buttonBox_accepted(); void on_buttonBox_accepted();

View File

@ -33,10 +33,6 @@ DisassemblyContextMenu::DisassemblyContextMenu(QWidget *parent)
SLOT(on_actionAddFlag_triggered()), getAddFlagSequence()); SLOT(on_actionAddFlag_triggered()), getAddFlagSequence());
addAction(&actionAddFlag); addAction(&actionAddFlag);
initAction(&actionCreateFunction, tr("Create Function"),
SLOT(on_actionCreateFunction_triggered()));
addAction(&actionCreateFunction);
initAction(&actionRename, tr("Rename"), initAction(&actionRename, tr("Rename"),
SLOT(on_actionRename_triggered()), getRenameSequence()); SLOT(on_actionRename_triggered()), getRenameSequence());
addAction(&actionRename); addAction(&actionRename);
@ -54,6 +50,8 @@ DisassemblyContextMenu::DisassemblyContextMenu(QWidget *parent)
initAction(&actionDeleteFunction, tr("Undefine function"), SLOT(on_actionDeleteFunction_triggered())); initAction(&actionDeleteFunction, tr("Undefine function"), SLOT(on_actionDeleteFunction_triggered()));
addAction(&actionDeleteFunction); addAction(&actionDeleteFunction);
addAnalyzeMenu();
addSetBaseMenu(); addSetBaseMenu();
addSetBitsMenu(); addSetBitsMenu();
@ -92,6 +90,16 @@ DisassemblyContextMenu::~DisassemblyContextMenu()
} }
} }
void DisassemblyContextMenu::addAnalyzeMenu()
{
analyzeMenu = addMenu(tr("Analyze..."));
initAction(&actionAnalyzeFunction, tr("Create Function"));
analyzeMenu->addAction(&actionAnalyzeFunction);
connect(&actionAnalyzeFunction, &QAction::triggered, this,
&DisassemblyContextMenu::on_actionAnalyzeFunction_triggered);
}
void DisassemblyContextMenu::addSetBaseMenu() void DisassemblyContextMenu::addSetBaseMenu()
{ {
setBaseMenu = addMenu(tr("Set Immediate Base to...")); setBaseMenu = addMenu(tr("Set Immediate Base to..."));
@ -228,7 +236,7 @@ void DisassemblyContextMenu::aboutToShowSlot()
setBaseMenu->menuAction()->setVisible(immBase); setBaseMenu->menuAction()->setVisible(immBase);
setBitsMenu->menuAction()->setVisible(true); setBitsMenu->menuAction()->setVisible(true);
actionCreateFunction.setVisible(true); actionAnalyzeFunction.setVisible(true);
QString comment = Core()->cmd("CC." + RAddressString(offset)); QString comment = Core()->cmd("CC." + RAddressString(offset));
if (comment.isNull() || comment.isEmpty()) { if (comment.isNull() || comment.isEmpty()) {
@ -251,7 +259,7 @@ void DisassemblyContextMenu::aboutToShowSlot()
actionDeleteFunction.setVisible(fcn ? true : false); actionDeleteFunction.setVisible(fcn ? true : false);
if (fcn) { if (fcn) {
actionCreateFunction.setVisible(false); actionAnalyzeFunction.setVisible(false);
actionRename.setVisible(true); actionRename.setVisible(true);
actionRename.setText(tr("Rename function \"%1\"").arg(fcn->name)); actionRename.setText(tr("Rename function \"%1\"").arg(fcn->name));
} else if (f) { } else if (f) {
@ -457,10 +465,11 @@ void DisassemblyContextMenu::on_actionAddComment_triggered()
} }
} }
void DisassemblyContextMenu::on_actionCreateFunction_triggered() void DisassemblyContextMenu::on_actionAnalyzeFunction_triggered()
{ {
RenameDialog *dialog = new RenameDialog(this); RenameDialog *dialog = new RenameDialog(this);
dialog->setWindowTitle(tr("Add function at %1").arg(RAddressString(offset))); dialog->setWindowTitle(tr("Analyze function at %1").arg(RAddressString(offset)));
dialog->setPlaceholderText(tr("Auto"));
if (dialog->exec()) { if (dialog->exec()) {
QString function_name = dialog->getName(); QString function_name = dialog->getName();
Core()->createFunctionAt(offset, function_name); Core()->createFunctionAt(offset, function_name);

View File

@ -32,7 +32,7 @@ private slots:
void on_actionCopy_triggered(); void on_actionCopy_triggered();
void on_actionCopyAddr_triggered(); void on_actionCopyAddr_triggered();
void on_actionAddComment_triggered(); void on_actionAddComment_triggered();
void on_actionCreateFunction_triggered(); void on_actionAnalyzeFunction_triggered();
void on_actionAddFlag_triggered(); void on_actionAddFlag_triggered();
void on_actionRename_triggered(); void on_actionRename_triggered();
void on_actionRenameUsedHere_triggered(); void on_actionRenameUsedHere_triggered();
@ -82,7 +82,8 @@ private:
QAction actionAddComment; QAction actionAddComment;
QAction actionAddFlag; QAction actionAddFlag;
QAction actionCreateFunction; QMenu *analyzeMenu;
QAction actionAnalyzeFunction;
QAction actionRename; QAction actionRename;
QAction actionRenameUsedHere; QAction actionRenameUsedHere;
QAction actionXRefs; QAction actionXRefs;
@ -132,6 +133,7 @@ private:
void setToData(int size, int repeat = 1); void setToData(int size, int repeat = 1);
void setBits(int bits); void setBits(int bits);
void addAnalyzeMenu();
void addSetBaseMenu(); void addSetBaseMenu();
void addSetBitsMenu(); void addSetBitsMenu();
void addSetToDataMenu(); void addSetToDataMenu();