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