diff --git a/src/macro-core/macro-dock.cpp b/src/macro-core/macro-dock.cpp index 2ec51ec8..acbea0e8 100644 --- a/src/macro-core/macro-dock.cpp +++ b/src/macro-core/macro-dock.cpp @@ -6,19 +6,21 @@ namespace advss { -MacroDock::MacroDock(Macro *m, QWidget *parent, const QString &runButtonText, - const QString &pauseButtonText, - const QString &unpauseButtonText, - const QString &conditionsTrueText, - const QString &conditionsFalseText) +MacroDock::MacroDock(Macro *m, QWidget *parent, + const StringVariable &runButtonText, + const StringVariable &pauseButtonText, + const StringVariable &unpauseButtonText, + const StringVariable &conditionsTrueText, + const StringVariable &conditionsFalseText) : OBSDock(parent), + _runButtonText(runButtonText), _pauseButtonText(pauseButtonText), _unpauseButtonText(unpauseButtonText), _conditionsTrueText(conditionsTrueText), _conditionsFalseText(conditionsFalseText), - _run(new QPushButton(runButtonText)), + _run(new QPushButton(runButtonText.c_str())), _pauseToggle(new QPushButton()), - _statusText(new QLabel(conditionsFalseText)), + _statusText(new QLabel(conditionsFalseText.c_str())), _macro(m) { if (_macro) { @@ -42,14 +44,9 @@ MacroDock::MacroDock(Macro *m, QWidget *parent, const QString &runButtonText, layout->addWidget(_pauseToggle); layout->addWidget(_statusText); - QWidget::connect(&_timer, SIGNAL(timeout()), this, - SLOT(UpdatePauseText())); - QWidget::connect(&_timer, SIGNAL(timeout()), this, - SLOT(UpdateStatusText())); - _timer.start(1000); - - UpdatePauseText(); - UpdateStatusText(); + UpdateText(); + QWidget::connect(&_timer, SIGNAL(timeout()), this, SLOT(UpdateText())); + _timer.start(500); // QFrame wrapper is necessary to avoid dock being partially // transparent @@ -73,9 +70,10 @@ void MacroDock::ShowRunButton(bool value) _run->setVisible(value); } -void MacroDock::SetRunButtonText(const QString &text) +void MacroDock::SetRunButtonText(const StringVariable &text) { - _run->setText(text); + _runButtonText = text; + _run->setText(text.c_str()); } void MacroDock::ShowPauseButton(bool value) @@ -83,16 +81,16 @@ void MacroDock::ShowPauseButton(bool value) _pauseToggle->setVisible(value); } -void MacroDock::SetPauseButtonText(const QString &text) +void MacroDock::SetPauseButtonText(const StringVariable &text) { _pauseButtonText = text; - UpdatePauseText(); + UpdateText(); } -void MacroDock::SetUnpauseButtonText(const QString &text) +void MacroDock::SetUnpauseButtonText(const StringVariable &text) { _unpauseButtonText = text; - UpdatePauseText(); + UpdateText(); } void MacroDock::ShowStatusLabel(bool value) @@ -100,16 +98,16 @@ void MacroDock::ShowStatusLabel(bool value) _statusText->setVisible(value); } -void MacroDock::SetConditionsTrueText(const QString &text) +void MacroDock::SetConditionsTrueText(const StringVariable &text) { _conditionsTrueText = text; - UpdateStatusText(); + UpdateText(); } -void MacroDock::SetConditionsFalseText(const QString &text) +void MacroDock::SetConditionsFalseText(const StringVariable &text) { _conditionsFalseText = text; - UpdateStatusText(); + UpdateText(); } void MacroDock::RunClicked() @@ -133,27 +131,21 @@ void MacroDock::PauseToggleClicked() } _macro->SetPaused(!_macro->Paused()); - UpdatePauseText(); + UpdateText(); } -void MacroDock::UpdatePauseText() +void MacroDock::UpdateText() { + _run->setText(_runButtonText.c_str()); + if (!_macro) { return; } - _pauseToggle->setText(_macro->Paused() ? _unpauseButtonText - : _pauseButtonText); -} - -void MacroDock::UpdateStatusText() -{ - if (!_macro) { - return; - } - - _statusText->setText(_macro->Matched() ? _conditionsTrueText - : _conditionsFalseText); + _pauseToggle->setText(_macro->Paused() ? _unpauseButtonText.c_str() + : _pauseButtonText.c_str()); + _statusText->setText(_macro->Matched() ? _conditionsTrueText.c_str() + : _conditionsFalseText.c_str()); } } // namespace advss diff --git a/src/macro-core/macro-dock.hpp b/src/macro-core/macro-dock.hpp index 471be2d2..44213176 100644 --- a/src/macro-core/macro-dock.hpp +++ b/src/macro-core/macro-dock.hpp @@ -1,5 +1,6 @@ #pragma once #include "obs-dock.hpp" +#include "variable-string.hpp" #include #include @@ -14,32 +15,32 @@ class MacroDock : public OBSDock { Q_OBJECT public: - MacroDock(Macro *, QWidget *parent, const QString &runButtonText, - const QString &pauseButtonText, - const QString &unpauseButtonText, - const QString &conditionsTrueText, - const QString &conditionsFalseText); + MacroDock(Macro *, QWidget *parent, const StringVariable &runButtonText, + const StringVariable &pauseButtonText, + const StringVariable &unpauseButtonText, + const StringVariable &conditionsTrueText, + const StringVariable &conditionsFalseText); void SetName(const QString &); void ShowRunButton(bool); - void SetRunButtonText(const QString &); + void SetRunButtonText(const StringVariable &); void ShowPauseButton(bool); - void SetPauseButtonText(const QString &); - void SetUnpauseButtonText(const QString &); + void SetPauseButtonText(const StringVariable &); + void SetUnpauseButtonText(const StringVariable &); void ShowStatusLabel(bool); - void SetConditionsTrueText(const QString &); - void SetConditionsFalseText(const QString &); + void SetConditionsTrueText(const StringVariable &); + void SetConditionsFalseText(const StringVariable &); private slots: void RunClicked(); void PauseToggleClicked(); - void UpdatePauseText(); - void UpdateStatusText(); + void UpdateText(); private: - QString _pauseButtonText; - QString _unpauseButtonText; - QString _conditionsTrueText; - QString _conditionsFalseText; + StringVariable _runButtonText; + StringVariable _pauseButtonText; + StringVariable _unpauseButtonText; + StringVariable _conditionsTrueText; + StringVariable _conditionsFalseText; QPushButton *_run; QPushButton *_pauseToggle; QLabel *_statusText; diff --git a/src/macro-core/macro-properties.cpp b/src/macro-core/macro-properties.cpp index 8cae76d4..312583cc 100644 --- a/src/macro-core/macro-properties.cpp +++ b/src/macro-core/macro-properties.cpp @@ -76,11 +76,11 @@ MacroPropertiesDialog::MacroPropertiesDialog(QWidget *parent, "AdvSceneSwitcher.macroTab.currentDockAddPauseButton"))), _currentMacroDockAddStatusLabel(new QCheckBox(obs_module_text( "AdvSceneSwitcher.macroTab.currentDockAddStatusLabel"))), - _runButtonText(new QLineEdit()), - _pauseButtonText(new QLineEdit()), - _unpauseButtonText(new QLineEdit()), - _conditionsTrueStatusText(new QLineEdit()), - _conditionsFalseStatusText(new QLineEdit()), + _runButtonText(new VariableLineEdit(this)), + _pauseButtonText(new VariableLineEdit(this)), + _unpauseButtonText(new VariableLineEdit(this)), + _conditionsTrueStatusText(new VariableLineEdit(this)), + _conditionsFalseStatusText(new VariableLineEdit(this)), _dockOptions(new QGroupBox( obs_module_text("AdvSceneSwitcher.macroTab.dockSettings"))), _dockLayout(new QGridLayout()) @@ -189,15 +189,11 @@ MacroPropertiesDialog::MacroPropertiesDialog(QWidget *parent, macro->DockHasPauseButton()); _currentMacroDockAddStatusLabel->setChecked( macro->DockHasStatusLabel()); - _runButtonText->setText(QString::fromStdString(macro->RunButtonText())); - _pauseButtonText->setText( - QString::fromStdString(macro->PauseButtonText())); - _unpauseButtonText->setText( - QString::fromStdString(macro->UnpauseButtonText())); - _conditionsTrueStatusText->setText( - QString::fromStdString(macro->ConditionsTrueStatusText())); - _conditionsFalseStatusText->setText( - QString::fromStdString(macro->ConditionsFalseStatusText())); + _runButtonText->setText(macro->RunButtonText()); + _pauseButtonText->setText(macro->PauseButtonText()); + _unpauseButtonText->setText(macro->UnpauseButtonText()); + _conditionsTrueStatusText->setText(macro->ConditionsTrueStatusText()); + _conditionsFalseStatusText->setText(macro->ConditionsFalseStatusText()); _currentMacroDockAddRunButton->setVisible(dockEnabled); _currentMacroDockAddPauseButton->setVisible(dockEnabled); diff --git a/src/macro-core/macro-properties.hpp b/src/macro-core/macro-properties.hpp index 100dd097..c31ac545 100644 --- a/src/macro-core/macro-properties.hpp +++ b/src/macro-core/macro-properties.hpp @@ -1,5 +1,6 @@ #pragma once #include "macro.hpp" +#include "variable-line-edit.hpp" #include #include @@ -50,11 +51,11 @@ private: QCheckBox *_currentMacroDockAddRunButton; QCheckBox *_currentMacroDockAddPauseButton; QCheckBox *_currentMacroDockAddStatusLabel; - QLineEdit *_runButtonText; - QLineEdit *_pauseButtonText; - QLineEdit *_unpauseButtonText; - QLineEdit *_conditionsTrueStatusText; - QLineEdit *_conditionsFalseStatusText; + VariableLineEdit *_runButtonText; + VariableLineEdit *_pauseButtonText; + VariableLineEdit *_unpauseButtonText; + VariableLineEdit *_conditionsTrueStatusText; + VariableLineEdit *_conditionsFalseStatusText; QGroupBox *_dockOptions; QGridLayout *_dockLayout; diff --git a/src/macro-core/macro.cpp b/src/macro-core/macro.cpp index 9c6a1715..9683c275 100644 --- a/src/macro-core/macro.cpp +++ b/src/macro-core/macro.cpp @@ -607,16 +607,13 @@ void Macro::SaveDockSettings(obs_data_t *obj) const obs_data_set_bool(dockSettings, "hasRunButton", _dockHasRunButton); obs_data_set_bool(dockSettings, "hasPauseButton", _dockHasPauseButton); obs_data_set_bool(dockSettings, "hasStatusLabel", _dockHasStatusLabel); - obs_data_set_string(dockSettings, "runButtonText", - _runButtonText.c_str()); - obs_data_set_string(dockSettings, "pauseButtonText", - _pauseButtonText.c_str()); - obs_data_set_string(dockSettings, "unpauseButtonText", - _unpauseButtonText.c_str()); - obs_data_set_string(dockSettings, "conditionsTrueStatusText", - _conditionsTrueStatusText.c_str()); - obs_data_set_string(dockSettings, "conditionsFalseStatusText", - _conditionsFalseStatusText.c_str()); + _runButtonText.Save(dockSettings, "runButtonText"); + _pauseButtonText.Save(dockSettings, "pauseButtonText"); + _unpauseButtonText.Save(dockSettings, "unpauseButtonText"); + _conditionsTrueStatusText.Save(dockSettings, + "conditionsTrueStatusText"); + _conditionsFalseStatusText.Save(dockSettings, + "conditionsFalseStatusText"); if (_dock) { auto window = static_cast( obs_frontend_get_main_window()); @@ -658,15 +655,13 @@ void Macro::LoadDockSettings(obs_data_t *obj) obs_data_set_default_string( dockSettings, "unpauseButtonText", obs_module_text("AdvSceneSwitcher.macroDock.unpause")); - - _runButtonText = obs_data_get_string(dockSettings, "runButtonText"); - _pauseButtonText = obs_data_get_string(dockSettings, "pauseButtonText"); - _unpauseButtonText = - obs_data_get_string(dockSettings, "unpauseButtonText"); - _conditionsTrueStatusText = - obs_data_get_string(dockSettings, "conditionsTrueStatusText"); - _conditionsFalseStatusText = - obs_data_get_string(dockSettings, "conditionsFalseStatusText"); + _runButtonText.Load(dockSettings, "runButtonText"); + _pauseButtonText.Load(dockSettings, "pauseButtonText"); + _unpauseButtonText.Load(dockSettings, "unpauseButtonText"); + _conditionsTrueStatusText.Load(dockSettings, + "conditionsTrueStatusText"); + _conditionsFalseStatusText.Load(dockSettings, + "conditionsFalseStatusText"); if (dockEnabled) { _dockHasRunButton = obs_data_get_bool(dockSettings, "hasRunButton"); @@ -709,12 +704,9 @@ void Macro::EnableDock(bool value) // Create new dock widget auto window = static_cast(obs_frontend_get_main_window()); - _dock = new MacroDock( - this, window, QString::fromStdString(_runButtonText), - QString::fromStdString(_pauseButtonText), - QString::fromStdString(_unpauseButtonText), - QString::fromStdString(_conditionsTrueStatusText), - QString::fromStdString(_conditionsFalseStatusText)); + _dock = new MacroDock(this, window, _runButtonText, _pauseButtonText, + _unpauseButtonText, _conditionsTrueStatusText, + _conditionsFalseStatusText); SetDockWidgetName(); // Used by OBS to restore position // Register new dock @@ -770,7 +762,7 @@ void Macro::SetRunButtonText(const std::string &text) if (!_dock) { return; } - _dock->SetRunButtonText(QString::fromStdString(text)); + _dock->SetRunButtonText(text); } void Macro::SetPauseButtonText(const std::string &text) @@ -779,7 +771,7 @@ void Macro::SetPauseButtonText(const std::string &text) if (!_dock) { return; } - _dock->SetPauseButtonText(QString::fromStdString(text)); + _dock->SetPauseButtonText(text); } void Macro::SetUnpauseButtonText(const std::string &text) @@ -788,7 +780,7 @@ void Macro::SetUnpauseButtonText(const std::string &text) if (!_dock) { return; } - _dock->SetUnpauseButtonText(QString::fromStdString(text)); + _dock->SetUnpauseButtonText(text); } void Macro::SetConditionsTrueStatusText(const std::string &text) @@ -797,10 +789,10 @@ void Macro::SetConditionsTrueStatusText(const std::string &text) if (!_dock) { return; } - _dock->SetConditionsTrueText(QString::fromStdString(text)); + _dock->SetConditionsTrueText(text); } -std::string Macro::ConditionsTrueStatusText() const +StringVariable Macro::ConditionsTrueStatusText() const { return _conditionsTrueStatusText; } @@ -811,10 +803,10 @@ void Macro::SetConditionsFalseStatusText(const std::string &text) if (!_dock) { return; } - _dock->SetConditionsFalseText(QString::fromStdString(text)); + _dock->SetConditionsFalseText(text); } -std::string Macro::ConditionsFalseStatusText() const +StringVariable Macro::ConditionsFalseStatusText() const { return _conditionsFalseStatusText; } diff --git a/src/macro-core/macro.hpp b/src/macro-core/macro.hpp index fc31c5b7..e25055a8 100644 --- a/src/macro-core/macro.hpp +++ b/src/macro-core/macro.hpp @@ -2,6 +2,7 @@ #include "macro-action.hpp" #include "macro-condition.hpp" #include "macro-ref.hpp" +#include "variable-string.hpp" #include #include @@ -91,16 +92,16 @@ public: bool DockHasPauseButton() const { return _dockHasPauseButton; } void SetDockHasStatusLabel(bool value); bool DockHasStatusLabel() const { return _dockHasStatusLabel; } - std::string RunButtonText() const { return _runButtonText; } + StringVariable RunButtonText() const { return _runButtonText; } void SetRunButtonText(const std::string &text); - std::string PauseButtonText() const { return _pauseButtonText; } + StringVariable PauseButtonText() const { return _pauseButtonText; } void SetPauseButtonText(const std::string &text); - std::string UnpauseButtonText() const { return _unpauseButtonText; } + StringVariable UnpauseButtonText() const { return _unpauseButtonText; } void SetUnpauseButtonText(const std::string &text); void SetConditionsTrueStatusText(const std::string &text); - std::string ConditionsTrueStatusText() const; + StringVariable ConditionsTrueStatusText() const; void SetConditionsFalseStatusText(const std::string &text); - std::string ConditionsFalseStatusText() const; + StringVariable ConditionsFalseStatusText() const; private: void SetupHotkeys(); @@ -150,15 +151,15 @@ private: bool _dockHasRunButton = true; bool _dockHasPauseButton = true; bool _dockHasStatusLabel = false; - std::string _runButtonText = + StringVariable _runButtonText = obs_module_text("AdvSceneSwitcher.macroDock.run"); - std::string _pauseButtonText = + StringVariable _pauseButtonText = obs_module_text("AdvSceneSwitcher.macroDock.pause"); - std::string _unpauseButtonText = + StringVariable _unpauseButtonText = obs_module_text("AdvSceneSwitcher.macroDock.unpause"); - std::string _conditionsTrueStatusText = + StringVariable _conditionsTrueStatusText = obs_module_text("AdvSceneSwitcher.macroDock.statusLabel.true"); - std::string _conditionsFalseStatusText = + StringVariable _conditionsFalseStatusText = obs_module_text("AdvSceneSwitcher.macroDock.statusLabel.false"); bool _dockIsFloating = true; bool _dockIsVisible = false;