diff --git a/data/locale/de-DE.ini b/data/locale/de-DE.ini index d4931024..db1bb86b 100644 --- a/data/locale/de-DE.ini +++ b/data/locale/de-DE.ini @@ -391,7 +391,6 @@ AdvSceneSwitcher.condition.variable.type.valueChanged="Wert verändert" AdvSceneSwitcher.condition.variable.type.equalsVariable="entspricht Variable" AdvSceneSwitcher.condition.variable.type.lessThanVariable="ist kleiner als die Variable" AdvSceneSwitcher.condition.variable.type.greaterThanVariable="ist größer als die Variable" -AdvSceneSwitcher.condition.variable.entry="{{variables}}{{conditions}}{{strValue}}{{numValue}}{{variables2}}" ; Macro Actions AdvSceneSwitcher.action.scene="Szene wechseln" diff --git a/data/locale/en-US.ini b/data/locale/en-US.ini index da26be48..660f2ca0 100644 --- a/data/locale/en-US.ini +++ b/data/locale/en-US.ini @@ -473,7 +473,7 @@ AdvSceneSwitcher.condition.variable.type.valueChanged="value changed" AdvSceneSwitcher.condition.variable.type.equalsVariable="equals variable" AdvSceneSwitcher.condition.variable.type.lessThanVariable="is less than variable" AdvSceneSwitcher.condition.variable.type.greaterThanVariable="is greater than variable" -AdvSceneSwitcher.condition.variable.entry="{{variables}}{{conditions}}{{strValue}}{{numValue}}{{variables2}}" +AdvSceneSwitcher.condition.variable.entry="{{variables}}{{conditions}}{{strValue}}{{numValue}}{{variables2}}{{regex}}" AdvSceneSwitcher.condition.run="Run" AdvSceneSwitcher.condition.run.entry="Process exits before timeout of{{timeout}}seconds" AdvSceneSwitcher.condition.run.entry.exit="{{checkExitCode}}Check for exit code{{exitCode}}" diff --git a/data/locale/es-ES.ini b/data/locale/es-ES.ini index a196924f..b5d2f4d9 100644 --- a/data/locale/es-ES.ini +++ b/data/locale/es-ES.ini @@ -277,7 +277,6 @@ AdvSceneSwitcher.condition.sceneTransform="Transformar elemento de escena" AdvSceneSwitcher.condition.sceneTransform.getTransform="Obtener transformación" AdvSceneSwitcher.condition.sceneTransform.entry.line1="En{{scenes}}{{sources}}{{types}}" AdvSceneSwitcher.condition.sceneTransform.entry.type.matches="coincide con la transformación" -; AdvSceneSwitcher.condition.sceneTransform.entry.type.changed= AdvSceneSwitcher.condition.sceneTransform.entry.line2="{{settings}}" AdvSceneSwitcher.condition.sceneTransform.entry.line3="{{regex}} {{getSettings}}" AdvSceneSwitcher.condition.transition="Transición" diff --git a/data/locale/fr-FR.ini b/data/locale/fr-FR.ini index 26d20542..57aecd93 100644 --- a/data/locale/fr-FR.ini +++ b/data/locale/fr-FR.ini @@ -388,7 +388,6 @@ AdvSceneSwitcher.condition.sceneTransform="Transformation de l'élément de la s AdvSceneSwitcher.condition.sceneTransform.getTransform="Obtenir la transformation" AdvSceneSwitcher.condition.sceneTransform.entry.line1="Sur{{scenes}}{{sources}}{{types}}" AdvSceneSwitcher.condition.sceneTransform.entry.type.matches="correspond à la transformation" -; AdvSceneSwitcher.condition.sceneTransform.entry.type.changed= AdvSceneSwitcher.condition.transition="Transition" AdvSceneSwitcher.condition.transition.type.current="Le type de transition actuel est" AdvSceneSwitcher.condition.transition.type.duration="La durée de la transition actuelle est" @@ -741,7 +740,7 @@ AdvSceneSwitcher.action.twitch.type.title="Définir le titre du flux" AdvSceneSwitcher.action.twitch.type.category="Définir la catégorie du flux" AdvSceneSwitcher.action.twitch.type.commercial="Démarrer une publicité d'une durée de" AdvSceneSwitcher.action.twitch.categorySelectionDisabled="Impossible de sélectionner une catégorie sans avoir d'abord sélectionné un compte Twitch !" -AdvSceneSwitcher.action.twitch.entry.line1="Sur{{account}}{{actions}}{{streamTitle}}{{category}}{{manualCategorySearch}}{{markerDescription}}{{clipHasDelay}}{{duration}}{{announcementMessage}}{{announcementColor}}{{channel}}" +AdvSceneSwitcher.action.twitch.entry.line1="Sur{{account}}{{actions}}{{streamTitle}}{{category}}{{markerDescription}}{{clipHasDelay}}{{duration}}{{announcementColor}}{{channel}}" ; Transition Tab AdvSceneSwitcher.transitionTab.title="Transition" diff --git a/data/locale/tr-TR.ini b/data/locale/tr-TR.ini index 0414cc4e..33897317 100644 --- a/data/locale/tr-TR.ini +++ b/data/locale/tr-TR.ini @@ -233,7 +233,6 @@ AdvSceneSwitcher.condition.sceneTransform="Sahne öğesi dönüşümü" AdvSceneSwitcher.condition.sceneTransform.getTransform="Dönüşümü al" AdvSceneSwitcher.condition.sceneTransform.entry.line1="Açık{{scenes}}{{sources}}{{types}}" AdvSceneSwitcher.condition.sceneTransform.entry.type.matches="dönüşümle eşleşir" -; AdvSceneSwitcher.condition.sceneTransform.entry.type.changed= AdvSceneSwitcher.condition.sceneTransform.entry.line2="{{settings}}" AdvSceneSwitcher.condition.sceneTransform.entry.line3="{{regex}} {{getSettings}}" AdvSceneSwitcher.condition.transition="Geçiş" diff --git a/data/locale/zh-CN.ini b/data/locale/zh-CN.ini index 7f934670..99531456 100644 --- a/data/locale/zh-CN.ini +++ b/data/locale/zh-CN.ini @@ -373,7 +373,6 @@ AdvSceneSwitcher.condition.sceneTransform="场景项目被改变" AdvSceneSwitcher.condition.sceneTransform.getTransform="内容或者设置被改变了" AdvSceneSwitcher.condition.sceneTransform.entry.line1="在 {{scenes}} {{sources}} {{types}}" AdvSceneSwitcher.condition.sceneTransform.entry.type.matches="匹配变换" -; AdvSceneSwitcher.condition.sceneTransform.entry.type.changed= AdvSceneSwitcher.condition.sceneTransform.entry.line2="{{settings}}" AdvSceneSwitcher.condition.sceneTransform.entry.line3="{{regex}} {{getSettings}}" AdvSceneSwitcher.condition.transition="转场" @@ -437,7 +436,6 @@ AdvSceneSwitcher.condition.variable.type.valueChanged="值已更改" AdvSceneSwitcher.condition.variable.type.equalsVariable="等于变量" AdvSceneSwitcher.condition.variable.type.lessThanVariable="小于变量" AdvSceneSwitcher.condition.variable.type.greaterThanVariable="大于变量" -AdvSceneSwitcher.condition.variable.entry="{{variables}}{{conditions}}{{strValue}}{{numValue}}{{variables2}}" AdvSceneSwitcher.condition.run="运行" AdvSceneSwitcher.condition.run.entry="进程在超时 {{timeout}} 秒之前退出" AdvSceneSwitcher.condition.run.entry.exit="{{checkExitCode}}检查退出代码{{exitCode}}" diff --git a/src/macro-core/macro-condition-variable.cpp b/src/macro-core/macro-condition-variable.cpp index 1cfbd49e..9548afad 100644 --- a/src/macro-core/macro-condition-variable.cpp +++ b/src/macro-core/macro-condition-variable.cpp @@ -1,8 +1,6 @@ #include "macro-condition-variable.hpp" #include "utility.hpp" -#include - namespace advss { const std::string MacroConditionVariable::id = "variable"; @@ -12,25 +10,25 @@ bool MacroConditionVariable::_registered = MacroConditionFactory::Register( {MacroConditionVariable::Create, MacroConditionVariableEdit::Create, "AdvSceneSwitcher.condition.variable"}); -const static std::map +const static std::map conditionTypes = { - {MacroConditionVariable::Type::EQUALS, + {MacroConditionVariable::Condition::EQUALS, "AdvSceneSwitcher.condition.variable.type.compare"}, - {MacroConditionVariable::Type::IS_EMPTY, + {MacroConditionVariable::Condition::IS_EMPTY, "AdvSceneSwitcher.condition.variable.type.empty"}, - {MacroConditionVariable::Type::IS_NUMBER, + {MacroConditionVariable::Condition::IS_NUMBER, "AdvSceneSwitcher.condition.variable.type.number"}, - {MacroConditionVariable::Type::LESS_THAN, + {MacroConditionVariable::Condition::LESS_THAN, "AdvSceneSwitcher.condition.variable.type.lessThan"}, - {MacroConditionVariable::Type::GREATER_THAN, + {MacroConditionVariable::Condition::GREATER_THAN, "AdvSceneSwitcher.condition.variable.type.greaterThan"}, - {MacroConditionVariable::Type::VALUE_CHANGED, + {MacroConditionVariable::Condition::VALUE_CHANGED, "AdvSceneSwitcher.condition.variable.type.valueChanged"}, - {MacroConditionVariable::Type::EQUALS_VARIABLE, + {MacroConditionVariable::Condition::EQUALS_VARIABLE, "AdvSceneSwitcher.condition.variable.type.equalsVariable"}, - {MacroConditionVariable::Type::LESS_THAN_VARIABLE, + {MacroConditionVariable::Condition::LESS_THAN_VARIABLE, "AdvSceneSwitcher.condition.variable.type.lessThanVariable"}, - {MacroConditionVariable::Type::GREATER_THAN_VARIABLE, + {MacroConditionVariable::Condition::GREATER_THAN_VARIABLE, "AdvSceneSwitcher.condition.variable.type.greaterThanVariable"}, }; @@ -62,7 +60,7 @@ bool MacroConditionVariable::Compare(const Variable &var) const return match.hasMatch(); } - return _strValue == var.Value(); + return std::string(_strValue) == var.Value(); } bool MacroConditionVariable::ValueChanged(const Variable &var) @@ -87,12 +85,12 @@ bool MacroConditionVariable::CompareVariables() bool validNumbers = val1.has_value() && val2.has_value(); switch (_type) { - case MacroConditionVariable::Type::EQUALS_VARIABLE: + case MacroConditionVariable::Condition::EQUALS_VARIABLE: return var1->Value() == var2->Value() || (validNumbers && val1 == val2); - case MacroConditionVariable::Type::LESS_THAN_VARIABLE: + case MacroConditionVariable::Condition::LESS_THAN_VARIABLE: return validNumbers && val1 < val2; - case MacroConditionVariable::Type::GREATER_THAN_VARIABLE: + case MacroConditionVariable::Condition::GREATER_THAN_VARIABLE: return validNumbers && val1 > val2; default: blog(LOG_WARNING, @@ -111,23 +109,23 @@ bool MacroConditionVariable::CheckCondition() } switch (_type) { - case MacroConditionVariable::Type::EQUALS: + case MacroConditionVariable::Condition::EQUALS: return Compare(*var); - case MacroConditionVariable::Type::IS_EMPTY: + case MacroConditionVariable::Condition::IS_EMPTY: return var->Value().empty(); - case MacroConditionVariable::Type::IS_NUMBER: + case MacroConditionVariable::Condition::IS_NUMBER: return isNumber(*var); - case MacroConditionVariable::Type::LESS_THAN: + case MacroConditionVariable::Condition::LESS_THAN: return compareNumber(*var, _numValue, true); - case MacroConditionVariable::Type::GREATER_THAN: + case MacroConditionVariable::Condition::GREATER_THAN: return compareNumber(*var, _numValue, false); - case MacroConditionVariable::Type::VALUE_CHANGED: + case MacroConditionVariable::Condition::VALUE_CHANGED: return ValueChanged(*var); - case MacroConditionVariable::Type::EQUALS_VARIABLE: + case MacroConditionVariable::Condition::EQUALS_VARIABLE: return CompareVariables(); - case MacroConditionVariable::Type::LESS_THAN_VARIABLE: + case MacroConditionVariable::Condition::LESS_THAN_VARIABLE: return CompareVariables(); - case MacroConditionVariable::Type::GREATER_THAN_VARIABLE: + case MacroConditionVariable::Condition::GREATER_THAN_VARIABLE: return CompareVariables(); } @@ -141,7 +139,7 @@ bool MacroConditionVariable::Save(obs_data_t *obj) const GetWeakVariableName(_variable).c_str()); obs_data_set_string(obj, "variable2Name", GetWeakVariableName(_variable2).c_str()); - obs_data_set_string(obj, "strValue", _strValue.c_str()); + _strValue.Save(obj, "strValue"); obs_data_set_double(obj, "numValue", _numValue); obs_data_set_int(obj, "condition", static_cast(_type)); _regex.Save(obj); @@ -155,9 +153,9 @@ bool MacroConditionVariable::Load(obs_data_t *obj) GetWeakVariableByName(obs_data_get_string(obj, "variableName")); _variable2 = GetWeakVariableByName( obs_data_get_string(obj, "variable2Name")); - _strValue = obs_data_get_string(obj, "strValue"); + _strValue.Load(obj, "strValue"); _numValue = obs_data_get_double(obj, "numValue"); - _type = static_cast(obs_data_get_int(obj, "condition")); + _type = static_cast(obs_data_get_int(obj, "condition")); _regex.Load(obj); // TODO: remove in future version if (obs_data_has_user_value(obj, "regex")) { @@ -185,7 +183,7 @@ MacroConditionVariableEdit::MacroConditionVariableEdit( _variables(new VariableSelection(this)), _variables2(new VariableSelection(this)), _conditions(new QComboBox()), - _strValue(new ResizingPlainTextEdit(this, 5, 1, 1)), + _strValue(new VariableTextEdit(this, 5, 1, 1)), _numValue(new QDoubleSpinBox()), _regex(new RegexConfigWidget(parent)) { @@ -215,19 +213,11 @@ MacroConditionVariableEdit::MacroConditionVariableEdit( {"{{regex}}", _regex}, }; - QHBoxLayout *layout = new QHBoxLayout; + auto layout = new QHBoxLayout; PlaceWidgets( obs_module_text("AdvSceneSwitcher.condition.variable.entry"), layout, widgetPlaceholders); - - auto *regexLayout = new QHBoxLayout; - regexLayout->addWidget(_regex); - regexLayout->addStretch(); - - QVBoxLayout *mainLayout = new QVBoxLayout; - mainLayout->addLayout(layout); - mainLayout->addLayout(regexLayout); - setLayout(mainLayout); + setLayout(layout); _entryData = entryData; UpdateEntryData(); @@ -243,7 +233,7 @@ void MacroConditionVariableEdit::UpdateEntryData() _variables->SetVariable(_entryData->_variable); _variables2->SetVariable(_entryData->_variable2); _conditions->setCurrentIndex(static_cast(_entryData->_type)); - _strValue->setPlainText(QString::fromStdString(_entryData->_strValue)); + _strValue->setPlainText(_entryData->_strValue); _numValue->setValue(_entryData->_numValue); _regex->SetRegexConfig(_entryData->_regex); SetWidgetVisibility(); @@ -277,7 +267,8 @@ void MacroConditionVariableEdit::ConditionChanged(int value) } auto lock = LockContext(); - _entryData->_type = static_cast(value); + _entryData->_type = + static_cast(value); SetWidgetVisibility(); } @@ -290,6 +281,7 @@ void MacroConditionVariableEdit::StrValueChanged() auto lock = LockContext(); _entryData->_strValue = _strValue->toPlainText().toStdString(); adjustSize(); + updateGeometry(); } void MacroConditionVariableEdit::NumValueChanged(double val) @@ -321,24 +313,26 @@ void MacroConditionVariableEdit::SetWidgetVisibility() } _regex->setVisible(_entryData->_type == - MacroConditionVariable::Type::EQUALS); + MacroConditionVariable::Condition::EQUALS); _strValue->setVisible(_entryData->_type == - MacroConditionVariable::Type::EQUALS); + MacroConditionVariable::Condition::EQUALS); _numValue->setVisible( - _entryData->_type == MacroConditionVariable::Type::LESS_THAN || _entryData->_type == - MacroConditionVariable::Type::GREATER_THAN); + MacroConditionVariable::Condition::LESS_THAN || + _entryData->_type == + MacroConditionVariable::Condition::GREATER_THAN); _numValue->setVisible( - _entryData->_type == MacroConditionVariable::Type::LESS_THAN || _entryData->_type == - MacroConditionVariable::Type::GREATER_THAN); + MacroConditionVariable::Condition::LESS_THAN || + _entryData->_type == + MacroConditionVariable::Condition::GREATER_THAN); _variables2->setVisible( _entryData->_type == - MacroConditionVariable::Type::EQUALS_VARIABLE || + MacroConditionVariable::Condition::EQUALS_VARIABLE || _entryData->_type == - MacroConditionVariable::Type::LESS_THAN_VARIABLE || + MacroConditionVariable::Condition::LESS_THAN_VARIABLE || _entryData->_type == - MacroConditionVariable::Type::GREATER_THAN_VARIABLE); + MacroConditionVariable::Condition::GREATER_THAN_VARIABLE); adjustSize(); updateGeometry(); diff --git a/src/macro-core/macro-condition-variable.hpp b/src/macro-core/macro-condition-variable.hpp index 89ffb8fe..3523b557 100644 --- a/src/macro-core/macro-condition-variable.hpp +++ b/src/macro-core/macro-condition-variable.hpp @@ -3,6 +3,7 @@ #include "resizing-text-edit.hpp" #include "variable.hpp" #include "regex-config.hpp" +#include "variable-text-edit.hpp" #include #include @@ -24,7 +25,7 @@ public: return std::make_shared(m); } - enum class Type { + enum class Condition { EQUALS, IS_EMPTY, IS_NUMBER, @@ -36,10 +37,10 @@ public: GREATER_THAN_VARIABLE, }; - Type _type = Type::EQUALS; + Condition _type = Condition::EQUALS; std::weak_ptr _variable; std::weak_ptr _variable2; - std::string _strValue = ""; + StringVariable _strValue = ""; double _numValue = 0; RegexConfig _regex; @@ -86,7 +87,7 @@ protected: VariableSelection *_variables; VariableSelection *_variables2; QComboBox *_conditions; - ResizingPlainTextEdit *_strValue; + VariableTextEdit *_strValue; QDoubleSpinBox *_numValue; RegexConfigWidget *_regex; std::shared_ptr _entryData;