Add more shortcuts to DisassemblyContextMenu (#1782)

This commit is contained in:
Itay Cohen 2019-09-25 16:58:58 +03:00 committed by xarkes
parent d1d1f97592
commit 2d34eb286a
5 changed files with 45 additions and 3 deletions

View File

@ -33,6 +33,7 @@ Widget shortcuts
Disassembly view shortcuts
--------------------------
*Most of these shortcuts are also applied to Disassembly Graph view*
+------------+----------------------------------+
| Shortcut | Function |
@ -45,10 +46,24 @@ Disassembly view shortcuts
+------------+----------------------------------+
| ; | Add comment |
+------------+----------------------------------+
| P | Define a new function |
+------------+----------------------------------+
| Shift+P | Edit function |
+------------+----------------------------------+
| U | Undefine a function |
+------------+----------------------------------+
| N | Rename current function/flag |
+------------+----------------------------------+
| Shift+N | Rename flag/function used here |
+------------+----------------------------------+
| Y | Edit\rename local variables |
+------------+----------------------------------+
| L | Link a type\struct to address |
+------------+----------------------------------+
| A | Set current address to String |
+------------+----------------------------------+
| C | Set current address to Code |
+------------+----------------------------------+
| X | Show Xrefs |
+------------+----------------------------------+
| \+ | Zoom in |

View File

@ -943,6 +943,13 @@ void CutterCore::cmdEsil(const char *command)
}
}
QString CutterCore::createFunctionAt(RVA addr)
{
QString ret = cmd("af " + RAddressString(addr));
emit functionsChanged();
return ret;
}
QString CutterCore::createFunctionAt(RVA addr, QString name)
{
static const QRegExp regExp("[^a-zA-Z0-9_]");

View File

@ -76,6 +76,7 @@ public:
RVA getLastFunctionInstruction(RVA addr);
QString cmdFunctionAt(QString addr);
QString cmdFunctionAt(RVA addr);
QString createFunctionAt(RVA addr);
QString createFunctionAt(RVA addr, QString name);
QStringList getDisassemblyPreview(RVA address, int num_of_lines);

View File

@ -49,7 +49,7 @@ DisassemblyContextMenu::DisassemblyContextMenu(QWidget *parent, MainWindow *main
addAction(&actionRename);
initAction(&actionEditFunction, tr("Edit function"),
SLOT(on_actionEditFunction_triggered()));
SLOT(on_actionEditFunction_triggered()), getEditFunctionSequence());
addAction(&actionEditFunction);
initAction(&actionRenameUsedHere, tr("Rename Flag/Fcn/Var Used Here"),
@ -67,11 +67,11 @@ DisassemblyContextMenu::DisassemblyContextMenu(QWidget *parent, MainWindow *main
addAction(&actionDeleteFlag);
initAction(&actionDeleteFunction, tr("Undefine function"),
SLOT(on_actionDeleteFunction_triggered()));
SLOT(on_actionDeleteFunction_triggered()), getUndefineFunctionSequence());
addAction(&actionDeleteFunction);
initAction(&actionAnalyzeFunction, tr("Define function here"),
SLOT(on_actionAnalyzeFunction_triggered()));
SLOT(on_actionAnalyzeFunction_triggered()), getDefineNewFunctionSequence());
addAction(&actionAnalyzeFunction);
addSeparator();
@ -530,6 +530,22 @@ QList<QKeySequence> DisassemblyContextMenu::getAddBPSequence() const
return {Qt::Key_F2, Qt::CTRL + Qt::Key_B};
}
QKeySequence DisassemblyContextMenu::getDefineNewFunctionSequence() const
{
return {Qt::Key_P};
}
QKeySequence DisassemblyContextMenu::getEditFunctionSequence() const
{
return {Qt::SHIFT + Qt::Key_P};
}
QKeySequence DisassemblyContextMenu::getUndefineFunctionSequence() const
{
return {Qt::Key_U};
}
void DisassemblyContextMenu::on_actionEditInstruction_triggered()
{
EditInstructionDialog e(EDIT_TEXT, this);

View File

@ -90,6 +90,9 @@ private:
QKeySequence getRetypeSequence() const;
QKeySequence getXRefSequence() const;
QKeySequence getDisplayOptionsSequence() const;
QKeySequence getDefineNewFunctionSequence() const;
QKeySequence getUndefineFunctionSequence() const;
QKeySequence getEditFunctionSequence() const;
QList<QKeySequence> getAddBPSequence() const;
/**