1
0
Fork 0

GUI: shortcuts now fully customizable

This commit is contained in:
Mr. eXoDia 2014-07-30 03:48:32 +02:00
parent a6d7989e34
commit 850ad8a1fe
12 changed files with 182 additions and 142 deletions

View File

@ -58,8 +58,8 @@ void ReferenceView::setupContextMenu()
void ReferenceView::refreshShortcutsSlot()
{
mToggleBreakpoint->setShortcut(QKeySequence("F2"));
mToggleBookmark->setShortcut(QKeySequence("ctrl+d"));
mToggleBreakpoint->setShortcut(ConfigShortcut("ActionToggleBreakpoint"));
mToggleBookmark->setShortcut(ConfigShortcut("ActionToggleBookmark"));
}
void ReferenceView::addColumnAt(int width, QString title)

View File

@ -191,14 +191,14 @@ void BreakpointsView::setupHardBPRightClickContextMenu()
void BreakpointsView::refreshShortcutsSlot()
{
mHardBPRemoveAction->setShortcut(QKeySequence(Qt::Key_Delete));
mHardBPEnableDisableAction->setShortcut(QKeySequence(Qt::Key_Space));
mHardBPRemoveAction->setShortcut(ConfigShortcut("ActionDeleteBreakpoint"));
mHardBPEnableDisableAction->setShortcut(ConfigShortcut("ActionEnableDisableBreakpoint"));
mSoftBPRemoveAction->setShortcut(QKeySequence(Qt::Key_Delete));
mSoftBPEnableDisableAction->setShortcut(QKeySequence(Qt::Key_Space));
mSoftBPRemoveAction->setShortcut(ConfigShortcut("ActionDeleteBreakpoint"));
mSoftBPEnableDisableAction->setShortcut(ConfigShortcut("ActionEnableDisableBreakpoint"));
mMemBPRemoveAction->setShortcut(QKeySequence(Qt::Key_Delete));
mMemBPEnableDisableAction->setShortcut(QKeySequence(Qt::Key_Space));
mMemBPRemoveAction->setShortcut(ConfigShortcut("ActionDeleteBreakpoint"));
mMemBPEnableDisableAction->setShortcut(ConfigShortcut("ActionEnableDisableBreakpoint"));
}
void BreakpointsView::hardwareBPContextMenuSlot(const QPoint & pos)

View File

@ -439,28 +439,28 @@ void CPUDisassembly::setupRightClickContextMenu()
void CPUDisassembly::refreshShortcutsSlot()
{
mBinaryEditAction->setShortcut(QKeySequence("ctrl+e"));
mBinaryFillAction->setShortcut(QKeySequence("f"));
mBinaryFillNopsAction->setShortcut(QKeySequence("ctrl+9"));
mBinaryCopyAction->setShortcut(QKeySequence("shift+c"));
mBinaryPasteAction->setShortcut(QKeySequence("shift+v"));
mBinaryPasteIgnoreSizeAction->setShortcut(QKeySequence("ctrl+shift+v"));
mUndoSelection->setShortcut(QKeySequence("ctrl+backspace"));
mSetLabel->setShortcut(QKeySequence(":"));
mSetComment->setShortcut(QKeySequence(";"));
mSetBookmark->setShortcut(QKeySequence("ctrl+d"));
mToggleFunction->setShortcut(QKeySequence("shift+f"));
mAssemble->setShortcut(QKeySequence("space"));
mToggleInt3BpAction->setShortcut(QKeySequence(Qt::Key_F2));
mPatchesAction->setShortcut(QKeySequence("ctrl+p"));
mSetNewOriginHere->setShortcut(QKeySequence("ctrl+*"));
mGotoOrigin->setShortcut(QKeySequence("*"));
mGotoPrevious->setShortcut(QKeySequence("-"));
mGotoNext->setShortcut(QKeySequence("+"));
mGotoExpression->setShortcut(QKeySequence("ctrl+g"));
mReferenceSelectedAddress->setShortcut(QKeySequence("ctrl+r"));
mSearchPattern->setShortcut(QKeySequence("ctrl+b"));
mEnableHighlightingMode->setShortcut(QKeySequence("ctrl+h"));
mBinaryEditAction->setShortcut(ConfigShortcut("ActionBinaryEdit"));
mBinaryFillAction->setShortcut(ConfigShortcut("ActionBinaryFill"));
mBinaryFillNopsAction->setShortcut(ConfigShortcut("ActionBinaryFillNops"));
mBinaryCopyAction->setShortcut(ConfigShortcut("ActionBinaryCopy"));
mBinaryPasteAction->setShortcut(ConfigShortcut("ActionBinaryPaste"));
mBinaryPasteIgnoreSizeAction->setShortcut(ConfigShortcut("ActionBinaryPasteIgnoreSize"));
mUndoSelection->setShortcut(ConfigShortcut("ActionUndoSelection"));
mSetLabel->setShortcut(ConfigShortcut("ActionSetLabel"));
mSetComment->setShortcut(ConfigShortcut("ActionSetComment"));
mSetBookmark->setShortcut(ConfigShortcut("ActionToggleBookmark"));
mToggleFunction->setShortcut(ConfigShortcut("ActionToggleFunction"));
mAssemble->setShortcut(ConfigShortcut("ActionAssemble"));
mToggleInt3BpAction->setShortcut(ConfigShortcut("ActionToggleBreakpoint"));
mPatchesAction->setShortcut(ConfigShortcut("ViewPatches"));
mSetNewOriginHere->setShortcut(ConfigShortcut("ActionSetNewOriginHere"));
mGotoOrigin->setShortcut(ConfigShortcut("ActionGotoOrigin"));
mGotoPrevious->setShortcut(ConfigShortcut("ActionGotoPrevious"));
mGotoNext->setShortcut(ConfigShortcut("ActionGotoNext"));
mGotoExpression->setShortcut(ConfigShortcut("ActionGotoExpression"));
mReferenceSelectedAddress->setShortcut(ConfigShortcut("ActionFindReferencesToSelectedAddress"));
mSearchPattern->setShortcut(ConfigShortcut("ActionFindPattern"));
mEnableHighlightingMode->setShortcut(ConfigShortcut("ActionHighlightingMode"));
}
void CPUDisassembly::gotoOrigin()

View File

@ -328,15 +328,15 @@ void CPUDump::setupContextMenu()
void CPUDump::refreshShortcutsSlot()
{
mBinaryEditAction->setShortcut(QKeySequence("ctrl+e"));
mBinaryFillAction->setShortcut(QKeySequence("f"));
mBinaryCopyAction->setShortcut(QKeySequence("shift+c"));
mBinaryPasteAction->setShortcut(QKeySequence("shift+v"));
mBinaryPasteIgnoreSizeAction->setShortcut(QKeySequence("ctrl+shift+v"));
mUndoSelection->setShortcut(QKeySequence("ctrl+backspace"));
mSetLabelAction->setShortcut(QKeySequence(":"));
mFindPatternAction->setShortcut(QKeySequence("ctrl+b"));
mGotoExpression->setShortcut(QKeySequence("ctrl+g"));
mBinaryEditAction->setShortcut(ConfigShortcut("ActionBinaryEdit"));
mBinaryFillAction->setShortcut(ConfigShortcut("ActionBinaryFill"));
mBinaryCopyAction->setShortcut(ConfigShortcut("ActionBinaryCopy"));
mBinaryPasteAction->setShortcut(ConfigShortcut("ActionBinaryPaste"));
mBinaryPasteIgnoreSizeAction->setShortcut(ConfigShortcut("ActionBinaryPasteIgnoreSize"));
mUndoSelection->setShortcut(ConfigShortcut("ActionUndoSelection"));
mSetLabelAction->setShortcut(ConfigShortcut("ActionSetLabel"));
mFindPatternAction->setShortcut(ConfigShortcut("ActionFindPattern"));
mGotoExpression->setShortcut(ConfigShortcut("ActionGotoExpression"));
}
QString CPUDump::paintContent(QPainter* painter, int_t rowBase, int rowOffset, int col, int x, int y, int w, int h)

View File

@ -150,15 +150,15 @@ void CPUStack::setupContextMenu()
void CPUStack::refreshShortcutsSlot()
{
mBinaryEditAction->setShortcut(QKeySequence("ctrl+e"));
mBinaryFillAction->setShortcut(QKeySequence("f"));
mBinaryCopyAction->setShortcut(QKeySequence("shift+c"));
mBinaryPasteAction->setShortcut(QKeySequence("shift+v"));
mBinaryPasteIgnoreSizeAction->setShortcut(QKeySequence("ctrl+shift+v"));
mUndoSelection->setShortcut(QKeySequence("ctrl+backspace"));
mGotoSp->setShortcut(QKeySequence("*"));
mFindPatternAction->setShortcut(QKeySequence("ctrl+b"));
mGotoExpression->setShortcut(QKeySequence("ctrl+g"));
mBinaryEditAction->setShortcut(ConfigShortcut("ActionBinaryEdit"));
mBinaryFillAction->setShortcut(ConfigShortcut("ActionBinaryFill"));
mBinaryCopyAction->setShortcut(ConfigShortcut("ActionBinaryCopy"));
mBinaryPasteAction->setShortcut(ConfigShortcut("ActionBinaryPaste"));
mBinaryPasteIgnoreSizeAction->setShortcut(ConfigShortcut("ActionBinaryPasteIgnoreSize"));
mUndoSelection->setShortcut(ConfigShortcut("ActionUndoSelection"));
mGotoSp->setShortcut(ConfigShortcut("ActionGotoOrigin"));
mFindPatternAction->setShortcut(ConfigShortcut("ActionFindPattern"));
mGotoExpression->setShortcut(ConfigShortcut("ActionGotoExpression"));
}
QString CPUStack::paintContent(QPainter* painter, int_t rowBase, int rowOffset, int col, int x, int y, int w, int h)

View File

@ -86,9 +86,9 @@ void MemoryMapView::setupContextMenu()
void MemoryMapView::refreshShortcutsSlot()
{
mMemoryExecuteSingleshoot->setShortcut(QKeySequence("f2"));
mMemoryRemove->setShortcut(QKeySequence("f2"));
mMemoryExecuteSingleshootToggle->setShortcut(QKeySequence("f2"));
mMemoryExecuteSingleshoot->setShortcut(ConfigShortcut("ActionToggleBreakpoint"));
mMemoryRemove->setShortcut(ConfigShortcut("ActionToggleBreakpoint"));
mMemoryExecuteSingleshootToggle->setShortcut(ConfigShortcut("ActionToggleBreakpoint"));
}
void MemoryMapView::contextMenuSlot(const QPoint &pos)

View File

@ -228,12 +228,12 @@ RegistersView::RegistersView(QWidget * parent) : QAbstractScrollArea(parent), mV
void RegistersView::refreshShortcutsSlot()
{
wCM_Increment->setShortcut(QKeySequence(Qt::Key_Plus));
wCM_Decrement->setShortcut(QKeySequence(Qt::Key_Minus));
wCM_Zero->setShortcut(QKeySequence(Qt::Key_0));
wCM_SetToOne->setShortcut(QKeySequence(Qt::Key_1));
wCM_ToggleValue->setShortcut(QKeySequence(Qt::Key_Space));
wCM_CopyToClipboard->setShortcut(QKeySequence::Copy);
wCM_Increment->setShortcut(ConfigShortcut("ActionIncreaseRegister"));
wCM_Decrement->setShortcut(ConfigShortcut("ActionDecreaseRegister"));
wCM_Zero->setShortcut(ConfigShortcut("ActionZeroRegister"));
wCM_SetToOne->setShortcut(ConfigShortcut("ActionSetOneRegister"));
wCM_ToggleValue->setShortcut(ConfigShortcut("ActionToggleRegisterValue"));
wCM_CopyToClipboard->setShortcut(ConfigShortcut("ActionCopy"));
}
RegistersView::~RegistersView()

View File

@ -389,14 +389,14 @@ void ScriptView::setupContextMenu()
void ScriptView::refreshShortcutsSlot()
{
mScriptLoad->setShortcut(QKeySequence("ctrl+o"));
mScriptUnload->setShortcut(QKeySequence("ctrl+u"));
mScriptRun->setShortcut(QKeySequence("space"));
mScriptBpToggle->setShortcut(QKeySequence("F2"));
mScriptRunCursor->setShortcut(QKeySequence("F4"));
mScriptStep->setShortcut(QKeySequence("tab"));
mScriptAbort->setShortcut(QKeySequence("esc"));
mScriptCmdExec->setShortcut(QKeySequence("x"));
mScriptLoad->setShortcut(ConfigShortcut("ActionLoadScript"));
mScriptUnload->setShortcut(ConfigShortcut("ActionUnloadScript"));
mScriptRun->setShortcut(ConfigShortcut("ActionRunScript"));
mScriptBpToggle->setShortcut(ConfigShortcut("ActionToggleBreakpointScript"));
mScriptRunCursor->setShortcut(ConfigShortcut("ActionRunToCursorScript"));
mScriptStep->setShortcut(ConfigShortcut("ActionStepScript"));
mScriptAbort->setShortcut(ConfigShortcut("ActionAbortScript"));
mScriptCmdExec->setShortcut(ConfigShortcut("ActionExecuteCommandScript"));
}
bool ScriptView::isScriptCommand(QString text, QString cmd)

View File

@ -12,26 +12,26 @@ ShortcutsDialog::ShortcutsDialog(QWidget *parent) : QDialog(parent), ui(new Ui::
// x64 has no model-view-controler pattern
QStringList tblHeader;
tblHeader << "Instruction" << "Shortcut";
QTableWidget* tbl = ui->tblShortcuts;
tbl->setColumnCount(2);
tbl->verticalHeader()->setVisible(false);
tbl->setHorizontalHeaderLabels(tblHeader);
tbl->setEditTriggers(QAbstractItemView::NoEditTriggers);
tbl->setSelectionBehavior(QAbstractItemView::SelectRows);
tbl->setSelectionMode(QAbstractItemView::SingleSelection);
tbl->setShowGrid(false);
tbl->horizontalHeader()->setResizeMode(0, QHeaderView::Stretch);
tbl->verticalHeader()->setDefaultSectionSize(15);
ui->tblShortcuts->setColumnCount(2);
ui->tblShortcuts->verticalHeader()->setVisible(false);
ui->tblShortcuts->setHorizontalHeaderLabels(tblHeader);
ui->tblShortcuts->setEditTriggers(QAbstractItemView::NoEditTriggers);
ui->tblShortcuts->setSelectionBehavior(QAbstractItemView::SelectRows);
ui->tblShortcuts->setSelectionMode(QAbstractItemView::SingleSelection);
ui->tblShortcuts->setShowGrid(false);
ui->tblShortcuts->horizontalHeader()->setResizeMode(0, QHeaderView::Stretch);
ui->tblShortcuts->verticalHeader()->setDefaultSectionSize(15);
const unsigned int numShortcuts = Config()->Shortcuts.count();
tbl->setRowCount(numShortcuts);
ui->tblShortcuts->setRowCount(numShortcuts);
int j=0;
for(QMap<QString, Configuration::Shortcut>::iterator i=Config()->Shortcuts.begin(); i!=Config()->Shortcuts.end(); ++i,j++)
{
QTableWidgetItem* shortcutName = new QTableWidgetItem(i.value().Name);
QTableWidgetItem* shortcutKey = new QTableWidgetItem(i.value().Hotkey.toString(QKeySequence::NativeText));
tbl->setItem(j, 0, shortcutName);
tbl->setItem(j, 1, shortcutKey);
ui->tblShortcuts->setItem(j, 0, shortcutName);
ui->tblShortcuts->setItem(j, 1, shortcutKey);
}
connect(ui->tblShortcuts, SIGNAL(itemSelectionChanged()), this, SLOT(syncTextfield()));
@ -45,12 +45,23 @@ void ShortcutsDialog::updateShortcut()
if(newKey != currentShortcut.Hotkey)
{
bool good=true;
foreach(Configuration::Shortcut S, Config()->Shortcuts)
if(!newKey.isEmpty())
{
if(!newKey.isEmpty() && S.Hotkey == newKey && S.Name != currentShortcut.Name)
int idx=0;
for(QMap<QString, Configuration::Shortcut>::iterator i=Config()->Shortcuts.begin(); i!=Config()->Shortcuts.end(); ++i,idx++)
{
good=false;
break;
if(i.value().Name == currentShortcut.Name) //skip current shortcut in list
continue;
if(i.value().GlobalShortcut && i.value().Hotkey == newKey) //newkey is trying to override a global shortcut
{
good=false;
break;
}
else if(currentShortcut.GlobalShortcut && i.value().Hotkey == newKey) //current shortcut is global and overrides another local hotkey
{
ui->tblShortcuts->setItem(idx, 1, new QTableWidgetItem(""));
Config()->setShortcut(i.key(), QKeySequence());
}
}
}
if(good)
@ -102,8 +113,8 @@ ShortcutsDialog::~ShortcutsDialog()
void ShortcutsDialog::on_btnSave_clicked()
{
Config()->save();
QMessageBox msg(QMessageBox::Information, "Information", "Shortcuts updated!\n\nYou may need to restart the debugger for all changes to take in effect.");
Config()->writeShortcuts();
QMessageBox msg(QMessageBox::Information, "Information", "Shortcuts updated!");
msg.setWindowIcon(QIcon(":/icons/images/information.png"));
msg.setParent(this, Qt::Dialog);
msg.setWindowFlags(msg.windowFlags()&(~Qt::WindowContextHelpButtonHint));

View File

@ -14,7 +14,6 @@ class ShortcutsDialog;
class ShortcutsDialog : public QDialog
{
Q_OBJECT
QTableWidget* tbl;
Configuration::Shortcut currentShortcut;
int currentRow;
bool editLock;

View File

@ -166,50 +166,89 @@ Configuration::Configuration() : QObject()
defaultFonts.insert("Application", QApplication::font());
// hotkeys settings
defaultShortcuts.insert("FileOpen", Shortcut(tr("File -> Open"), "F3"));
defaultShortcuts.insert("FileExit", Shortcut(tr("File -> Exit"), "Alt+X"));
defaultShortcuts.insert("FileOpen", Shortcut(tr("File -> Open"), "F3", true));
defaultShortcuts.insert("FileExit", Shortcut(tr("File -> Exit"), "Alt+X", true));
defaultShortcuts.insert("ViewCpu", Shortcut(tr("View -> CPU"), "Alt+C"));
defaultShortcuts.insert("ViewLog", Shortcut(tr("View -> Log"), "Alt+L"));
defaultShortcuts.insert("ViewBreakpoints", Shortcut(tr("View -> Breakpoints"), "Alt+B"));
defaultShortcuts.insert("ViewMemoryMap", Shortcut(tr("View -> Memory Map"), "Alt+M"));
defaultShortcuts.insert("ViewCallStack", Shortcut(tr("View -> Call Stack"), "Alt+K"));
defaultShortcuts.insert("ViewScript", Shortcut(tr("View -> Script"), "Alt+S"));
defaultShortcuts.insert("ViewSymbolInfo", Shortcut(tr("View -> Symbol Info"), "Ctrl+Alt+S"));
defaultShortcuts.insert("ViewReferences", Shortcut(tr("View -> References"), "Alt+R"));
defaultShortcuts.insert("ViewThreads", Shortcut(tr("View -> Threads"), "Alt+T"));
defaultShortcuts.insert("ViewPatches", Shortcut(tr("View -> Patches"), "Ctrl+P"));
defaultShortcuts.insert("ViewComments", Shortcut(tr("View -> Comments"), "Ctrl+Alt+C"));
defaultShortcuts.insert("ViewLabels", Shortcut(tr("View -> Labels"), "Ctrl+Alt+L"));
defaultShortcuts.insert("ViewBookmarks", Shortcut(tr("View -> Bookmarks"), "Ctrl+Alt+B"));
defaultShortcuts.insert("ViewFunctions", Shortcut(tr("View -> Functions"), "Alt+F"));
defaultShortcuts.insert("ViewCpu", Shortcut(tr("View -> CPU"), "Alt+C", true));
defaultShortcuts.insert("ViewLog", Shortcut(tr("View -> Log"), "Alt+L", true));
defaultShortcuts.insert("ViewBreakpoints", Shortcut(tr("View -> Breakpoints"), "Alt+B", true));
defaultShortcuts.insert("ViewMemoryMap", Shortcut(tr("View -> Memory Map"), "Alt+M", true));
defaultShortcuts.insert("ViewCallStack", Shortcut(tr("View -> Call Stack"), "Alt+K", true));
defaultShortcuts.insert("ViewScript", Shortcut(tr("View -> Script"), "Alt+S", true));
defaultShortcuts.insert("ViewSymbolInfo", Shortcut(tr("View -> Symbol Info"), "Ctrl+Alt+S", true));
defaultShortcuts.insert("ViewReferences", Shortcut(tr("View -> References"), "Alt+R", true));
defaultShortcuts.insert("ViewThreads", Shortcut(tr("View -> Threads"), "Alt+T", true));
defaultShortcuts.insert("ViewPatches", Shortcut(tr("View -> Patches"), "Ctrl+P", true));
defaultShortcuts.insert("ViewComments", Shortcut(tr("View -> Comments"), "Ctrl+Alt+C", true));
defaultShortcuts.insert("ViewLabels", Shortcut(tr("View -> Labels"), "Ctrl+Alt+L", true));
defaultShortcuts.insert("ViewBookmarks", Shortcut(tr("View -> Bookmarks"), "Ctrl+Alt+B", true));
defaultShortcuts.insert("ViewFunctions", Shortcut(tr("View -> Functions"), "Alt+F", true));
defaultShortcuts.insert("DebugRun", Shortcut(tr("Debug -> Run"), "F9"));
defaultShortcuts.insert("DebugeRun", Shortcut(tr("Debug -> Run (skip exceptions)"), "Shift+F9"));
defaultShortcuts.insert("DebugRunSelection", Shortcut(tr("Debug -> Run until selection"), "F4"));
defaultShortcuts.insert("DebugPause", Shortcut(tr("Debug -> Pause"), "F12"));
defaultShortcuts.insert("DebugRestart", Shortcut(tr("Debug -> Restart"), "Ctrl+F2"));
defaultShortcuts.insert("DebugClose", Shortcut(tr("Debug -> Close"), "Alt+F2"));
defaultShortcuts.insert("DebugStepInto", Shortcut(tr("Debug -> Step into"), "F7"));
defaultShortcuts.insert("DebugeStepInfo", Shortcut(tr("Debug -> Step into (skip execptions)"), "Shift+F7"));
defaultShortcuts.insert("DebugStepOver", Shortcut(tr("Debug -> Step over"), "F8"));
defaultShortcuts.insert("DebugeStepOver", Shortcut(tr("Debug -> Step over (skip execptions)"), "Shift+F8"));
defaultShortcuts.insert("DebugRtr", Shortcut(tr("Debug -> Execute till return"), "Ctrl+F9"));
defaultShortcuts.insert("DebugeRtr", Shortcut(tr("Debug -> execute till return (skip exceptions)"), "Ctrl+Shift+F9"));
defaultShortcuts.insert("DebugCommand", Shortcut(tr("Debug -> Command"), "Ctrl+Return"));
defaultShortcuts.insert("DebugRun", Shortcut(tr("Debug -> Run"), "F9", true));
defaultShortcuts.insert("DebugeRun", Shortcut(tr("Debug -> Run (skip exceptions)"), "Shift+F9", true));
defaultShortcuts.insert("DebugRunSelection", Shortcut(tr("Debug -> Run until selection"), "F4", true));
defaultShortcuts.insert("DebugPause", Shortcut(tr("Debug -> Pause"), "F12", true));
defaultShortcuts.insert("DebugRestart", Shortcut(tr("Debug -> Restart"), "Ctrl+F2", true));
defaultShortcuts.insert("DebugClose", Shortcut(tr("Debug -> Close"), "Alt+F2", true));
defaultShortcuts.insert("DebugStepInto", Shortcut(tr("Debug -> Step into"), "F7", true));
defaultShortcuts.insert("DebugeStepInfo", Shortcut(tr("Debug -> Step into (skip execptions)"), "Shift+F7", true));
defaultShortcuts.insert("DebugStepOver", Shortcut(tr("Debug -> Step over"), "F8", true));
defaultShortcuts.insert("DebugeStepOver", Shortcut(tr("Debug -> Step over (skip execptions)"), "Shift+F8", true));
defaultShortcuts.insert("DebugRtr", Shortcut(tr("Debug -> Execute till return"), "Ctrl+F9", true));
defaultShortcuts.insert("DebugeRtr", Shortcut(tr("Debug -> execute till return (skip exceptions)"), "Ctrl+Shift+F9", true));
defaultShortcuts.insert("DebugCommand", Shortcut(tr("Debug -> Command"), "Ctrl+Return", true));
defaultShortcuts.insert("PluginsScylla", Shortcut(tr("Plugins -> Scylla"), "Ctrl+I"));
defaultShortcuts.insert("PluginsScylla", Shortcut(tr("Plugins -> Scylla"), "Ctrl+I", true));
defaultShortcuts.insert("OptionsPreferences", Shortcut(tr("Options -> Preferences")));
defaultShortcuts.insert("OptionsAppearance", Shortcut(tr("Options -> Preferences")));
defaultShortcuts.insert("OptionsShortcuts", Shortcut(tr("Options -> Preferences")));
defaultShortcuts.insert("OptionsPreferences", Shortcut(tr("Options -> Preferences"), "", true));
defaultShortcuts.insert("OptionsAppearance", Shortcut(tr("Options -> Preferences"), "", true));
defaultShortcuts.insert("OptionsShortcuts", Shortcut(tr("Options -> Preferences"), "", true));
defaultShortcuts.insert("HelpAbout", Shortcut(tr("Help -> About")));
defaultShortcuts.insert("HelpDonate", Shortcut(tr("Help -> Donate")));
defaultShortcuts.insert("HelpCheckForUpdates", Shortcut(tr("Help -> Check for Updates")));
defaultShortcuts.insert("HelpAbout", Shortcut(tr("Help -> About"), "", true));
defaultShortcuts.insert("HelpDonate", Shortcut(tr("Help -> Donate"), "", true));
defaultShortcuts.insert("HelpCheckForUpdates", Shortcut(tr("Help -> Check for Updates"), "", true));
defaultShortcuts.insert("ActionFindStrings", Shortcut(tr("Actions -> Find Strings")));
defaultShortcuts.insert("ActionFindIntermodularCalls", Shortcut(tr("Actions -> Find Intermodular Calls")));
defaultShortcuts.insert("ActionFindStrings", Shortcut(tr("Actions -> Find Strings"), "", true));
defaultShortcuts.insert("ActionFindIntermodularCalls", Shortcut(tr("Actions -> Find Intermodular Calls"), "", true));
defaultShortcuts.insert("ActionToggleBreakpoint", Shortcut(tr("Actions -> Toggle Breakpoint"), "F2"));
defaultShortcuts.insert("ActionToggleBookmark", Shortcut(tr("Actions -> Toggle Bookmark"), "Ctrl+D"));
defaultShortcuts.insert("ActionDeleteBreakpoint", Shortcut(tr("Actions -> Delete Breakpoint"), "Delete"));
defaultShortcuts.insert("ActionEnableDisableBreakpoint", Shortcut(tr("Actions -> Enable/Disable Breakpoint"), "Space"));
defaultShortcuts.insert("ActionBinaryEdit", Shortcut(tr("Actions -> Binary Edit"), "Ctrl+E"));
defaultShortcuts.insert("ActionBinaryFill", Shortcut(tr("Actions -> Binary Fill"), "F"));
defaultShortcuts.insert("ActionBinaryFillNops", Shortcut(tr("Actions -> Binary Fill NOPs"), "Ctrl+9"));
defaultShortcuts.insert("ActionBinaryCopy", Shortcut(tr("Actions -> Binary Copy"), "Shift+C"));
defaultShortcuts.insert("ActionBinaryPaste", Shortcut(tr("Actions -> Binary Paste"), "Shift+V"));
defaultShortcuts.insert("ActionBinaryPasteIgnoreSize", Shortcut(tr("Actions -> Binary Paste (Ignore Size)"), "Ctrl+Shift+V"));
defaultShortcuts.insert("ActionUndoSelection", Shortcut(tr("Actions -> Undo Selection"), "Ctrl+Backspace"));
defaultShortcuts.insert("ActionSetLabel", Shortcut(tr("Actions -> Set Label"), ":"));
defaultShortcuts.insert("ActionSetComment", Shortcut(tr("Actions -> Set Comment"), ";"));
defaultShortcuts.insert("ActionToggleFunction", Shortcut(tr("Actions -> Toggle Function"), "Shift+F"));
defaultShortcuts.insert("ActionAssemble", Shortcut(tr("Actions -> Assemble"), "Space"));
defaultShortcuts.insert("ActionSetNewOriginHere", Shortcut(tr("Actions -> Set New Origin Here"), "Ctrl+*"));
defaultShortcuts.insert("ActionGotoOrigin", Shortcut(tr("Actions -> Goto Origin"), "*"));
defaultShortcuts.insert("ActionGotoPrevious", Shortcut(tr("Actions -> Goto Previous"), "-"));
defaultShortcuts.insert("ActionGotoNext", Shortcut(tr("Actions -> Goto Next"), "+"));
defaultShortcuts.insert("ActionGotoExpression", Shortcut(tr("Actions -> Goto Expression"), "Ctrl+G"));
defaultShortcuts.insert("ActionFindReferencesToSelectedAddress", Shortcut(tr("Actions -> Find References to Selected Address"), "Ctrl+R"));
defaultShortcuts.insert("ActionFindPattern", Shortcut(tr("Actions -> Find Pattern"), "Ctrl+B"));
defaultShortcuts.insert("ActionHighlightingMode", Shortcut(tr("Actions -> Highlighting Mode"), "Ctrl+H"));
defaultShortcuts.insert("ActionIncreaseRegister", Shortcut(tr("Actions -> Increase Register"), "+"));
defaultShortcuts.insert("ActionDecreaseRegister", Shortcut(tr("Actions -> Decrease Register"), "-"));
defaultShortcuts.insert("ActionZeroRegister", Shortcut(tr("Actions -> Zero Register"), "0"));
defaultShortcuts.insert("ActionSetOneRegister", Shortcut(tr("Actions -> Set Register to One"), "1"));
defaultShortcuts.insert("ActionToggleRegisterValue", Shortcut(tr("Actions -> Toggle Register Value"), "Space"));
defaultShortcuts.insert("ActionCopy", Shortcut(tr("Actions -> Copy"), "Ctrl+C"));
defaultShortcuts.insert("ActionLoadScript", Shortcut(tr("Actions -> Load Script"), "Ctrl+O"));
defaultShortcuts.insert("ActionUnloadScript", Shortcut(tr("Actions -> Unload Script"), "Ctrl+U"));
defaultShortcuts.insert("ActionRunScript", Shortcut(tr("Actions -> Run Script"), "Space"));
defaultShortcuts.insert("ActionToggleBreakpointScript", Shortcut(tr("Actions -> Toggle Script Breakpoint"), "F2"));
defaultShortcuts.insert("ActionRunToCursorScript", Shortcut(tr("Actions -> Run Script to Cursor"), "Shift+F4"));
defaultShortcuts.insert("ActionStepScript", Shortcut(tr("Actions -> Step Script"), "Tab"));
defaultShortcuts.insert("ActionAbortScript", Shortcut(tr("Actions -> Abort Script"), "Esc"));
defaultShortcuts.insert("ActionExecuteCommandScript", Shortcut(tr("Actions -> Execute Script Command"), "X"));
Shortcuts = defaultShortcuts;
@ -350,7 +389,6 @@ void Configuration::writeFonts()
emit fontsUpdated();
}
void Configuration::readShortcuts()
{
Shortcuts = defaultShortcuts;
@ -360,15 +398,15 @@ void Configuration::readShortcuts()
{
const QString id = it.key();
QString key = shortcutFromConfig(id);
if(key != "NOT_SET")
if(key != "")
{
if(key != "")
if(key == "NOT_SET")
Shortcuts[it.key()].Hotkey = QKeySequence();
else
{
QKeySequence KeySequence(key);
Shortcuts[it.key()].Hotkey = KeySequence;
}
else
Shortcuts[it.key()].Hotkey = QKeySequence();
}
it++;
}
@ -507,17 +545,6 @@ void Configuration::setShortcut(const QString key_id, const QKeySequence key_seq
{
if(Shortcuts.contains(key_id))
{
for(QMap<QString, Shortcut>::iterator i=Shortcuts.begin(); i!=Shortcuts.end(); ++i)
{
if(!key_sequence.isEmpty() && i.value().Hotkey == key_sequence)
{
QMessageBox msg(QMessageBox::Warning, "DUPLICATE SHORTCUT", key_id + ": " + key_sequence.toString());
msg.setWindowIcon(QIcon(":/icons/images/compile-warning.png"));
msg.setWindowFlags(msg.windowFlags()&(~Qt::WindowContextHelpButtonHint));
msg.exec();
return;
}
}
Shortcuts[key_id].Hotkey=key_sequence;
return;
}
@ -656,7 +683,7 @@ QString Configuration::shortcutFromConfig(const QString id)
{
return QString(setting);
}
return "NOT_SET";
return "";
}
bool Configuration::shortcutToConfig(const QString id, const QKeySequence shortcut)
@ -665,5 +692,7 @@ bool Configuration::shortcutToConfig(const QString id, const QKeySequence shortc
QString _key = "";
if(!shortcut.isEmpty())
_key = shortcut.toString(QKeySequence::NativeText);
else
_key = "NOT_SET";
return BridgeSettingSet("Shortcuts",_id.toUtf8().constData(),_key.toUtf8().constData());
}

View File

@ -5,7 +5,6 @@
#include <QString>
#include <QColor>
#include <QMap>
#include <QDebug>
#include <QObject>
#include <QKeySequence>
#include "Bridge.h"
@ -26,11 +25,13 @@ public:
{
QString Name;
QKeySequence Hotkey;
bool GlobalShortcut;
Shortcut(QString n = QString(), QString h = QString())
Shortcut(QString n = QString(), QString h = QString(), bool g = false)
{
Name = n;
Hotkey = QKeySequence(h);
GlobalShortcut = g;
}
};