diff --git a/UI/frontend-plugins/frontend-tools/data/locale/en-US.ini b/UI/frontend-plugins/frontend-tools/data/locale/en-US.ini index 298b53bfe..9eefe2c05 100644 --- a/UI/frontend-plugins/frontend-tools/data/locale/en-US.ini +++ b/UI/frontend-plugins/frontend-tools/data/locale/en-US.ini @@ -32,6 +32,8 @@ AddScripts="Add Scripts" RemoveScripts="Remove Scripts" ReloadScripts="Reload Scripts" LoadedScripts="Loaded Scripts" +Reload="Reload" +OpenFileLocation="Open file location" PythonSettings="Python Settings" PythonSettings.PythonInstallPath32bit="Python Install Path (32bit)" PythonSettings.PythonInstallPath64bit="Python Install Path (64bit)" diff --git a/UI/frontend-plugins/frontend-tools/forms/scripts.ui b/UI/frontend-plugins/frontend-tools/forms/scripts.ui index 7ff1f08cf..e4c299a6e 100644 --- a/UI/frontend-plugins/frontend-tools/forms/scripts.ui +++ b/UI/frontend-plugins/frontend-tools/forms/scripts.ui @@ -41,6 +41,9 @@ + + Qt::CustomContextMenu + true diff --git a/UI/frontend-plugins/frontend-tools/scripts.cpp b/UI/frontend-plugins/frontend-tools/scripts.cpp index 81507a3ed..cafca8866 100644 --- a/UI/frontend-plugins/frontend-tools/scripts.cpp +++ b/UI/frontend-plugins/frontend-tools/scripts.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -389,6 +390,43 @@ void ScriptsTool::on_reloadScripts_clicked() on_scripts_currentRowChanged(ui->scripts->currentRow()); } +void ScriptsTool::OpenScriptParentDirectory() +{ + QList items = ui->scripts->selectedItems(); + for (QListWidgetItem *item : items) { + QDir dir(item->data(Qt::UserRole).toString()); + dir.cdUp(); + QDesktopServices::openUrl( + QUrl::fromLocalFile(dir.absolutePath())); + } +} + +void ScriptsTool::on_scripts_customContextMenuRequested(const QPoint &pos) +{ + + QListWidgetItem *item = ui->scripts->itemAt(pos); + + QMenu popup(this); + + obs_frontend_push_ui_translation(obs_module_get_string); + + popup.addAction(tr("Add"), this, SLOT(on_addScripts_clicked())); + + if (item) { + popup.addSeparator(); + popup.addAction(obs_module_text("Reload"), this, + SLOT(on_reloadScripts_clicked())); + popup.addAction(obs_module_text("OpenFileLocation"), this, + SLOT(OpenScriptParentDirectory())); + popup.addSeparator(); + popup.addAction(tr("Remove"), this, + SLOT(on_removeScripts_clicked())); + } + obs_frontend_pop_ui_translation(); + + popup.exec(QCursor::pos()); +} + void ScriptsTool::on_scriptLog_clicked() { scriptLogWindow->show(); diff --git a/UI/frontend-plugins/frontend-tools/scripts.hpp b/UI/frontend-plugins/frontend-tools/scripts.hpp index c86f46f81..c511b378e 100644 --- a/UI/frontend-plugins/frontend-tools/scripts.hpp +++ b/UI/frontend-plugins/frontend-tools/scripts.hpp @@ -48,10 +48,13 @@ public slots: void on_scriptLog_clicked(); void on_defaults_clicked(); + void OpenScriptParentDirectory(); + void on_scripts_currentRowChanged(int row); void on_pythonPathBrowse_clicked(); private slots: void on_description_linkActivated(const QString &link); + void on_scripts_customContextMenuRequested(const QPoint &pos); };