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 b43843591..46d8056d9 100644 --- a/UI/frontend-plugins/frontend-tools/data/locale/en-US.ini +++ b/UI/frontend-plugins/frontend-tools/data/locale/en-US.ini @@ -39,6 +39,8 @@ PythonSettings="Python Settings" PythonSettings.PythonInstallPath32bit="Python Install Path (32bit)" PythonSettings.PythonInstallPath64bit="Python Install Path (64bit)" PythonSettings.BrowsePythonPath="Browse Python Path" +PythonSettings.PythonVersion="Loaded Python Version: %1" +PythonSettings.PythonNotLoaded="Python not currently loaded" ScriptLogWindow="Script Log" Description="Description" ScriptDescriptionLink.Text="Open this link in your default web browser?" diff --git a/UI/frontend-plugins/frontend-tools/forms/scripts.ui b/UI/frontend-plugins/frontend-tools/forms/scripts.ui index ce8987c50..e07844cfa 100644 --- a/UI/frontend-plugins/frontend-tools/forms/scripts.ui +++ b/UI/frontend-plugins/frontend-tools/forms/scripts.ui @@ -268,6 +268,13 @@ + + + + + + + diff --git a/UI/frontend-plugins/frontend-tools/scripts.cpp b/UI/frontend-plugins/frontend-tools/scripts.cpp index 4c561de7d..66fbd4ef6 100644 --- a/UI/frontend-plugins/frontend-tools/scripts.cpp +++ b/UI/frontend-plugins/frontend-tools/scripts.cpp @@ -194,6 +194,7 @@ ScriptsTool::ScriptsTool() : QDialog(nullptr), ui(new Ui_ScriptsTool) config_get_string(config, "Python", "Path" ARCH_NAME); ui->pythonPath->setText(path); ui->pythonPathLabel->setText(obs_module_text(PYTHONPATH_LABEL_TEXT)); + updatePythonVersionLabel(); #else delete ui->pythonSettingsTab; ui->pythonSettingsTab = nullptr; @@ -219,6 +220,20 @@ ScriptsTool::~ScriptsTool() ui->scripts->currentRow()); } +void ScriptsTool::updatePythonVersionLabel() +{ + QString label; + if (obs_scripting_python_loaded()) { + char version[8]; + obs_scripting_python_version(version, sizeof(version)); + label = QString(obs_module_text("PythonSettings.PythonVersion")) + .arg(version); + } else { + label = obs_module_text("PythonSettings.PythonNotLoaded"); + } + ui->pythonVersionLabel->setText(label); +} + void ScriptsTool::RemoveScript(const char *path) { for (size_t i = 0; i < scriptData->scripts.size(); i++) { @@ -460,6 +475,8 @@ void ScriptsTool::on_pythonPathBrowse_clicked() if (!obs_scripting_load_python(path)) return; + updatePythonVersionLabel(); + for (OBSScript &script : scriptData->scripts) { enum obs_script_lang lang = obs_script_get_lang(script); if (lang == OBS_SCRIPT_LANG_PYTHON) { diff --git a/UI/frontend-plugins/frontend-tools/scripts.hpp b/UI/frontend-plugins/frontend-tools/scripts.hpp index 3ce5385ad..052145352 100644 --- a/UI/frontend-plugins/frontend-tools/scripts.hpp +++ b/UI/frontend-plugins/frontend-tools/scripts.hpp @@ -31,6 +31,8 @@ class ScriptsTool : public QDialog { std::unique_ptr ui; QWidget *propertiesView = nullptr; + void updatePythonVersionLabel(); + public: ScriptsTool(); ~ScriptsTool(); diff --git a/deps/obs-scripting/obs-scripting-python.c b/deps/obs-scripting/obs-scripting-python.c index 35f549938..124164ebd 100644 --- a/deps/obs-scripting/obs-scripting-python.c +++ b/deps/obs-scripting/obs-scripting-python.c @@ -1590,6 +1590,17 @@ bool obs_scripting_python_runtime_linked(void) return (bool)RUNTIME_LINK; } +void obs_scripting_python_version(char *version, size_t version_length) +{ +#if RUNTIME_LINK + snprintf(version, version_length, "%d.%d", python_version.major, + python_version.minor); +#else + snprintf(version, version_length, "%d.%d", PY_MAJOR_VERSION, + PY_MINOR_VERSION); +#endif +} + bool obs_scripting_python_loaded(void) { return python_loaded; diff --git a/deps/obs-scripting/obs-scripting.h b/deps/obs-scripting/obs-scripting.h index 415c313e3..420c4b19a 100644 --- a/deps/obs-scripting/obs-scripting.h +++ b/deps/obs-scripting/obs-scripting.h @@ -46,6 +46,7 @@ EXPORT void obs_scripting_set_log_callback(scripting_log_handler_t handler, void *param); EXPORT bool obs_scripting_python_runtime_linked(void); +EXPORT void obs_scripting_python_version(char *version, size_t version_length); EXPORT bool obs_scripting_python_loaded(void); EXPORT bool obs_scripting_load_python(const char *python_path);