diff --git a/x64_dbg_gui/Project/Src/Gui/ScriptView.cpp b/x64_dbg_gui/Project/Src/Gui/ScriptView.cpp index 1cdb0b11..19cb1423 100644 --- a/x64_dbg_gui/Project/Src/Gui/ScriptView.cpp +++ b/x64_dbg_gui/Project/Src/Gui/ScriptView.cpp @@ -281,6 +281,7 @@ void ScriptView::contextMenuSlot(const QPoint & pos) wMenu->addMenu(mLoadMenu); if(getRowCount()) { + wMenu->addAction(mScriptReload); wMenu->addAction(mScriptUnload); wMenu->addSeparator(); wMenu->addAction(mScriptBpToggle); @@ -350,6 +351,11 @@ void ScriptView::setupContextMenu() connect(mScriptLoad, SIGNAL(triggered()), this, SLOT(openFile())); mLoadMenu->addAction(mScriptLoad); + mScriptReload = new QAction("Reload Script", this); + mScriptReload->setShortcutContext(Qt::WidgetShortcut); + this->addAction(mScriptReload); + connect(mScriptReload, SIGNAL(triggered()), this, SLOT(reload())); + mScriptUnload = new QAction("Unload Script", this); mScriptUnload->setShortcutContext(Qt::WidgetShortcut); this->addAction(mScriptUnload); @@ -397,6 +403,7 @@ void ScriptView::setupContextMenu() void ScriptView::refreshShortcutsSlot() { mScriptLoad->setShortcut(ConfigShortcut("ActionLoadScript")); + mScriptReload->setShortcut(ConfigShortcut("ActionReloadScript")); mScriptUnload->setShortcut(ConfigShortcut("ActionUnloadScript")); mScriptRun->setShortcut(ConfigShortcut("ActionRunScript")); mScriptBpToggle->setShortcut(ConfigShortcut("ActionToggleBreakpointScript")); @@ -498,7 +505,7 @@ void ScriptView::setInfoLine(int line, QString info) void ScriptView::openFile() { - QString filename = QFileDialog::getOpenFileName(this, tr("Select script"), 0, tr("Script files (*.txt *.scr);;All files (*.*)")); + filename = QFileDialog::getOpenFileName(this, tr("Select script"), 0, tr("Script files (*.txt *.scr);;All files (*.*)")); if(!filename.length()) return; filename = QDir::toNativeSeparators(filename); //convert to native path format (with backlashes) @@ -506,6 +513,14 @@ void ScriptView::openFile() DbgScriptLoad(filename.toUtf8().constData()); } +void ScriptView::reload() +{ + if(!filename.length()) + return; + DbgScriptUnload(); + DbgScriptLoad(filename.toUtf8().constData()); +} + void ScriptView::unload() { DbgScriptUnload(); diff --git a/x64_dbg_gui/Project/Src/Gui/ScriptView.h b/x64_dbg_gui/Project/Src/Gui/ScriptView.h index 6615dfa3..d69d4117 100644 --- a/x64_dbg_gui/Project/Src/Gui/ScriptView.h +++ b/x64_dbg_gui/Project/Src/Gui/ScriptView.h @@ -25,6 +25,7 @@ public slots: void setTitle(QString title); void setInfoLine(int line, QString info); void openFile(); + void reload(); void unload(); void run(); void bpToggle(); @@ -46,9 +47,11 @@ private: //private variables int mIpLine; bool mEnableSyntaxHighlighting; + QString filename; QMenu* mLoadMenu; QAction* mScriptLoad; + QAction* mScriptReload; QAction* mScriptUnload; QAction* mScriptRun; QAction* mScriptRunCursor; diff --git a/x64_dbg_gui/Project/Src/Utils/Configuration.cpp b/x64_dbg_gui/Project/Src/Utils/Configuration.cpp index 28b1bc1a..a35eb4bf 100644 --- a/x64_dbg_gui/Project/Src/Utils/Configuration.cpp +++ b/x64_dbg_gui/Project/Src/Utils/Configuration.cpp @@ -253,6 +253,7 @@ Configuration::Configuration() : QObject() defaultShortcuts.insert("ActionCopy", Shortcut(tr("Actions -> Copy"), "Ctrl+C")); defaultShortcuts.insert("ActionCopySymbol", Shortcut(tr("Actions -> Copy Symbol"), "Ctrl+S")); defaultShortcuts.insert("ActionLoadScript", Shortcut(tr("Actions -> Load Script"), "Ctrl+O")); + defaultShortcuts.insert("ActionReloadScript", Shortcut(tr("Actions -> Reload Script"), "Ctrl+R")); 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"));