未验证 提交 1fed2231 编写于 作者: J Jim 提交者: GitHub

Merge pull request #3144 from WizardCM/clickable-script-description

frontend-tools: Make links in script description clickable
......@@ -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"
......@@ -174,6 +174,9 @@
<property name="text">
<string notr="true"/>
</property>
<property name="openExternalLinks">
<bool>false</bool>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
......
#include "obs-module.h"
#include "scripts.hpp"
#include "frontend-tools-config.h"
#include "../../properties-view.hpp"
......@@ -13,6 +14,9 @@
#include <QDialogButtonBox>
#include <QResizeEvent>
#include <QAction>
#include <QMessageBox>
#include <QUrl>
#include <QDesktopServices>
#include <obs.hpp>
#include <obs-module.h>
......@@ -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()
......
......@@ -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);
};
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册