From 2ca17e62cedb0871ad3bb451dcb6de81b35985b8 Mon Sep 17 00:00:00 2001 From: Matt Gajownik Date: Thu, 9 Jul 2020 20:49:14 +1000 Subject: [PATCH] frontend-tools: Make links in script description clickable --- .../frontend-tools/data/locale/en-US.ini | 3 ++ .../frontend-tools/forms/scripts.ui | 3 ++ .../frontend-tools/scripts.cpp | 38 +++++++++++++++++++ .../frontend-tools/scripts.hpp | 3 ++ 4 files changed, 47 insertions(+) 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 39414356a..298b53bfe 100644 --- a/UI/frontend-plugins/frontend-tools/data/locale/en-US.ini +++ b/UI/frontend-plugins/frontend-tools/data/locale/en-US.ini @@ -38,6 +38,9 @@ PythonSettings.PythonInstallPath64bit="Python Install Path (64bit)" PythonSettings.BrowsePythonPath="Browse Python Path" ScriptLogWindow="Script Log" Description="Description" +ScriptDescriptionLink.Text="Open this link in your default web browser?" +ScriptDescriptionLink.Text.Url="URL: %1" +ScriptDescriptionLink.OpenURL="Open URL" FileFilter.ScriptFiles="Script Files" FileFilter.AllFiles="All Files" diff --git a/UI/frontend-plugins/frontend-tools/forms/scripts.ui b/UI/frontend-plugins/frontend-tools/forms/scripts.ui index 4625044b5..7ff1f08cf 100644 --- a/UI/frontend-plugins/frontend-tools/forms/scripts.ui +++ b/UI/frontend-plugins/frontend-tools/forms/scripts.ui @@ -174,6 +174,9 @@ + + false + true diff --git a/UI/frontend-plugins/frontend-tools/scripts.cpp b/UI/frontend-plugins/frontend-tools/scripts.cpp index 14de18127..c174c59ce 100644 --- a/UI/frontend-plugins/frontend-tools/scripts.cpp +++ b/UI/frontend-plugins/frontend-tools/scripts.cpp @@ -1,3 +1,4 @@ +#include "obs-module.h" #include "scripts.hpp" #include "frontend-tools-config.h" #include "../../properties-view.hpp" @@ -13,6 +14,9 @@ #include #include #include +#include +#include +#include #include #include @@ -470,6 +474,40 @@ void ScriptsTool::on_defaults_clicked() item->data(Qt::UserRole).toString().toUtf8().constData()); } +void ScriptsTool::on_description_linkActivated(const QString &link) +{ + QUrl url(link, QUrl::StrictMode); + if (url.isValid() && (url.scheme().compare("http") == 0 || + url.scheme().compare("https") == 0)) { + QString msg(obs_module_text("ScriptDescriptionLink.Text")); + msg += "\n\n"; + msg += QString(obs_module_text( + "ScriptDescriptionLink.Text.Url")) + .arg(link); + + const char *open = + obs_module_text("ScriptDescriptionLink.OpenURL"); + + QMessageBox messageBox(this); + messageBox.setWindowTitle(open); + messageBox.setText(msg); + + obs_frontend_push_ui_translation(obs_module_get_string); + QPushButton *yesButton = + messageBox.addButton(open, QMessageBox::YesRole); + QPushButton *noButton = + messageBox.addButton(tr("Cancel"), QMessageBox::NoRole); + obs_frontend_pop_ui_translation(); + messageBox.setDefaultButton(yesButton); + messageBox.setEscapeButton(noButton); + messageBox.setIcon(QMessageBox::Question); + messageBox.exec(); + + if (messageBox.clickedButton() == yesButton) + QDesktopServices::openUrl(url); + } +} + /* ----------------------------------------------------------------- */ extern "C" void FreeScripts() diff --git a/UI/frontend-plugins/frontend-tools/scripts.hpp b/UI/frontend-plugins/frontend-tools/scripts.hpp index dd7d18b27..c86f46f81 100644 --- a/UI/frontend-plugins/frontend-tools/scripts.hpp +++ b/UI/frontend-plugins/frontend-tools/scripts.hpp @@ -51,4 +51,7 @@ public slots: void on_scripts_currentRowChanged(int row); void on_pythonPathBrowse_clicked(); + +private slots: + void on_description_linkActivated(const QString &link); };