From 953eca2732d2b45efc132c60a65859f17f46f270 Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Sun, 24 Dec 2023 15:35:12 +0100 Subject: [PATCH] Remove switcher-data dependency from variables --- src/general.cpp | 1 + src/macro-core/macro-action-variable.cpp | 1 - src/macro-core/macro-tab.cpp | 4 ++-- src/switcher-data.hpp | 4 ---- src/utils/variable-spinbox.cpp | 5 ++--- src/utils/variable-string.cpp | 9 ++------- src/utils/variable-text-edit.cpp | 4 +--- src/utils/variable.cpp | 24 +++++++++++++++--------- src/utils/variable.hpp | 22 ++++++++++++++-------- 9 files changed, 37 insertions(+), 37 deletions(-) diff --git a/src/general.cpp b/src/general.cpp index 75b08bb1..f9a27c62 100644 --- a/src/general.cpp +++ b/src/general.cpp @@ -3,6 +3,7 @@ #include "status-control.hpp" #include "file-selection.hpp" #include "filter-combo-box.hpp" +#include "variable.hpp" #include "utility.hpp" #include "version.h" diff --git a/src/macro-core/macro-action-variable.cpp b/src/macro-core/macro-action-variable.cpp index d9756cb2..803fbdd9 100644 --- a/src/macro-core/macro-action-variable.cpp +++ b/src/macro-core/macro-action-variable.cpp @@ -1,6 +1,5 @@ #include "macro-action-variable.hpp" #include "macro-condition-edit.hpp" -#include "switcher-data.hpp" #include "advanced-scene-switcher.hpp" #include "macro.hpp" #include "math-helpers.hpp" diff --git a/src/macro-core/macro-tab.cpp b/src/macro-core/macro-tab.cpp index 8790b7c1..d64a5205 100644 --- a/src/macro-core/macro-tab.cpp +++ b/src/macro-core/macro-tab.cpp @@ -243,7 +243,7 @@ void AdvSceneSwitcher::ExportMacros() obs_data_array_push_back(macroArray, obj); } obs_data_set_array(data, "macros", macroArray); - switcher->SaveVariables(data); + SaveVariables(data); obs_data_set_string(data, "version", g_GIT_TAG); auto json = obs_data_get_json(data); QString exportString(json); @@ -382,7 +382,7 @@ static void importVariables(obs_data_t *obj) if (variableWithNameExists(var->Name())) { continue; } - switcher->variables.emplace_back(var); + GetVariables().emplace_back(var); } } diff --git a/src/switcher-data.hpp b/src/switcher-data.hpp index 229dc51e..0bbc2066 100644 --- a/src/switcher-data.hpp +++ b/src/switcher-data.hpp @@ -76,14 +76,12 @@ public: /* --- Start of saving / loading section --- */ void SaveSettings(obs_data_t *obj); - void SaveVariables(obs_data_t *obj); void SaveGeneralSettings(obs_data_t *obj); void SaveHotkeys(obs_data_t *obj); void SaveUISettings(obs_data_t *obj); void SaveVersion(obs_data_t *obj, const std::string ¤tVersion); void LoadSettings(obs_data_t *obj); - void LoadVariables(obs_data_t *obj); void LoadGeneralSettings(obs_data_t *obj); void LoadHotkeys(obs_data_t *obj); void LoadUISettings(obs_data_t *obj); @@ -155,8 +153,6 @@ public: AudioFadeInfo masterAudioFade; std::unordered_map activeAudioFades; - std::deque> variables; - std::string lastTitle; std::string currentTitle; std::string currentForegroundProcess; diff --git a/src/utils/variable-spinbox.cpp b/src/utils/variable-spinbox.cpp index 3d3aff1b..cae61558 100644 --- a/src/utils/variable-spinbox.cpp +++ b/src/utils/variable-spinbox.cpp @@ -1,5 +1,4 @@ #include "variable-spinbox.hpp" -#include "switcher-data.hpp" #include "utility.hpp" #include @@ -175,7 +174,7 @@ void GenericVaraiableSpinbox::SetVisibilityInt() if (_numberInt.IsFixedType()) { _fixedValueInt->show(); _variable->hide(); - _toggleType->setVisible(!switcher->variables.empty() && + _toggleType->setVisible(!GetVariables().empty() && !_hideTypeToggle); } else { _fixedValueInt->hide(); @@ -191,7 +190,7 @@ void GenericVaraiableSpinbox::SetVisibilityDouble() if (_numberDouble.IsFixedType()) { _fixedValueDouble->show(); _variable->hide(); - _toggleType->setVisible(!switcher->variables.empty() && + _toggleType->setVisible(!GetVariables().empty() && !_hideTypeToggle); } else { _fixedValueDouble->hide(); diff --git a/src/utils/variable-string.cpp b/src/utils/variable-string.cpp index 19150828..ccc3d39c 100644 --- a/src/utils/variable-string.cpp +++ b/src/utils/variable-string.cpp @@ -1,12 +1,11 @@ #include "variable-string.hpp" -#include "switcher-data.hpp" #include "utility.hpp" namespace advss { void StringVariable::Resolve() const { - if (switcher && switcher->variables.empty()) { + if (GetVariables().empty()) { _resolvedValue = _value; return; } @@ -71,11 +70,7 @@ bool StringVariable::empty() const std::string SubstitueVariables(std::string str) { - if (!switcher) { - return str; - } - - for (const auto &v : switcher->variables) { + for (const auto &v : GetVariables()) { const auto &variable = std::dynamic_pointer_cast(v); const std::string pattern = "${" + variable->Name() + "}"; ReplaceAll(str, pattern, variable->Value()); diff --git a/src/utils/variable-text-edit.cpp b/src/utils/variable-text-edit.cpp index e670b8b5..1b80971c 100644 --- a/src/utils/variable-text-edit.cpp +++ b/src/utils/variable-text-edit.cpp @@ -1,7 +1,5 @@ #include "variable-text-edit.hpp" -#include "switcher-data.hpp" - -#include +#include "obs-module-helper.hpp" namespace advss { diff --git a/src/utils/variable.cpp b/src/utils/variable.cpp index 21597971..ed9a2b72 100644 --- a/src/utils/variable.cpp +++ b/src/utils/variable.cpp @@ -1,10 +1,12 @@ #include "variable.hpp" -#include "switcher-data.hpp" #include "math-helpers.hpp" +#include "obs-module-helper.hpp" #include "utility.hpp" namespace advss { +static std::deque> variables; + // Keep track of the last time a variable was changed to save some work when // when resolving strings containing variables, etc. static std::chrono::high_resolution_clock::time_point lastVariableChange{}; @@ -70,9 +72,14 @@ void Variable::SetValue(double value) lastVariableChange = std::chrono::high_resolution_clock::now(); } +std::deque> &GetVariables() +{ + return variables; +} + Variable *GetVariableByName(const std::string &name) { - for (const auto &v : switcher->variables) { + for (const auto &v : variables) { if (v->Name() == name) { return dynamic_cast(v.get()); } @@ -87,7 +94,7 @@ Variable *GetVariableByQString(const QString &name) std::weak_ptr GetWeakVariableByName(const std::string &name) { - for (const auto &v : switcher->variables) { + for (const auto &v : variables) { if (v->Name() == name) { std::weak_ptr wp = std::dynamic_pointer_cast(v); @@ -105,7 +112,7 @@ std::weak_ptr GetWeakVariableByQString(const QString &name) QStringList GetVariablesNameList() { QStringList list; - for (const auto &var : switcher->variables) { + for (const auto &var : variables) { list << QString::fromStdString(var->Name()); } list.sort(); @@ -121,7 +128,7 @@ std::string GetWeakVariableName(std::weak_ptr var_) return var->Name(); } -void SwitcherData::SaveVariables(obs_data_t *obj) +void SaveVariables(obs_data_t *obj) { obs_data_array_t *variablesArray = obs_data_array_create(); for (const auto &v : variables) { @@ -134,7 +141,7 @@ void SwitcherData::SaveVariables(obs_data_t *obj) obs_data_array_release(variablesArray); } -void SwitcherData::LoadVariables(obs_data_t *obj) +void LoadVariables(obs_data_t *obj) { variables.clear(); @@ -162,7 +169,7 @@ static void populateSaveActionSelection(QComboBox *list) VariableSettingsDialog::VariableSettingsDialog(QWidget *parent, const Variable &settings) - : ItemSettingsDialog(settings, switcher->variables, + : ItemSettingsDialog(settings, variables, "AdvSceneSwitcher.variable.select", "AdvSceneSwitcher.variable.add", "AdvSceneSwitcher.item.nameNotAvailable", parent), @@ -245,8 +252,7 @@ static bool AskForSettingsWrapper(QWidget *parent, Item &settings) } VariableSelection::VariableSelection(QWidget *parent) - : ItemSelection(switcher->variables, Variable::Create, - AskForSettingsWrapper, + : ItemSelection(variables, Variable::Create, AskForSettingsWrapper, "AdvSceneSwitcher.variable.select", "AdvSceneSwitcher.variable.add", "AdvSceneSwitcher.item.nameNotAvailable", diff --git a/src/utils/variable.hpp b/src/utils/variable.hpp index 9b9a87bf..f6fadf3a 100644 --- a/src/utils/variable.hpp +++ b/src/utils/variable.hpp @@ -43,14 +43,6 @@ private: friend VariableSettingsDialog; }; -Variable *GetVariableByName(const std::string &name); -Variable *GetVariableByQString(const QString &name); -std::weak_ptr GetWeakVariableByName(const std::string &name); -std::weak_ptr GetWeakVariableByQString(const QString &name); -QStringList GetVariablesNameList(); -std::string GetWeakVariableName(std::weak_ptr); -std::chrono::high_resolution_clock::time_point GetLastVariableChangeTime(); - class VariableSettingsDialog : public ItemSettingsDialog { Q_OBJECT @@ -76,4 +68,18 @@ public: void SetVariable(const std::weak_ptr &); }; +void SaveVariables(obs_data_t *obj); +void LoadVariables(obs_data_t *obj); + +std::deque> &GetVariables(); + +Variable *GetVariableByName(const std::string &name); +Variable *GetVariableByQString(const QString &name); +std::weak_ptr GetWeakVariableByName(const std::string &name); +std::weak_ptr GetWeakVariableByQString(const QString &name); +std::string GetWeakVariableName(std::weak_ptr); +QStringList GetVariablesNameList(); + +std::chrono::high_resolution_clock::time_point GetLastVariableChangeTime(); + } // namespace advss