Merge pull request #3233 from WizardCM/scripts-context

Add context menu to Scripts list with "Open file location"
This commit is contained in:
Jim 2020-08-15 08:48:15 -07:00 committed by GitHub
commit 7667c107ef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 46 additions and 0 deletions

View File

@ -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)"

View File

@ -41,6 +41,9 @@
</item>
<item>
<widget class="QListWidget" name="scripts">
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
</property>
<property name="sortingEnabled">
<bool>true</bool>
</property>

View File

@ -16,6 +16,7 @@
#include <QResizeEvent>
#include <QAction>
#include <QMessageBox>
#include <QMenu>
#include <QUrl>
#include <QDesktopServices>
@ -389,6 +390,43 @@ void ScriptsTool::on_reloadScripts_clicked()
on_scripts_currentRowChanged(ui->scripts->currentRow());
}
void ScriptsTool::OpenScriptParentDirectory()
{
QList<QListWidgetItem *> 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();

View File

@ -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);
};