mirror of
https://github.com/WarmUpTill/SceneSwitcher.git
synced 2026-03-21 17:34:57 -05:00
Add temp variable support to Macro condition
This commit is contained in:
parent
f756de05c3
commit
5d8e24c19a
|
|
@ -1484,6 +1484,11 @@ AdvSceneSwitcher.tempVar.midi.note="Note"
|
|||
AdvSceneSwitcher.tempVar.midi.value1="Value 1"
|
||||
AdvSceneSwitcher.tempVar.midi.value2="Value 2"
|
||||
|
||||
AdvSceneSwitcher.tempVar.macro.runCount="Run count"
|
||||
AdvSceneSwitcher.tempVar.macro.runCount.description="The number of times a macro was executed."
|
||||
AdvSceneSwitcher.tempVar.macro.matchedCount="Matched count"
|
||||
AdvSceneSwitcher.tempVar.macro.matchedCount.description="The number of macros of which the condition state was true."
|
||||
|
||||
AdvSceneSwitcher.selectScene="--select scene--"
|
||||
AdvSceneSwitcher.selectPreviousScene="Previous Scene"
|
||||
AdvSceneSwitcher.selectCurrentScene="Current Scene"
|
||||
|
|
|
|||
|
|
@ -77,6 +77,8 @@ bool MacroConditionMacro::CheckMultiStateCondition()
|
|||
}
|
||||
}
|
||||
|
||||
SetTempVarValue("matchedCount", std::to_string(matchedCount));
|
||||
|
||||
switch (_multiSateCondition) {
|
||||
case MacroConditionMacro::MultiStateCondition::BELOW:
|
||||
return matchedCount < _multiSateCount;
|
||||
|
|
@ -126,6 +128,8 @@ bool MacroConditionMacro::CheckCountCondition()
|
|||
return false;
|
||||
}
|
||||
|
||||
SetTempVarValue("runCount", std::to_string(macro->RunCount()));
|
||||
|
||||
switch (_counterCondition) {
|
||||
case CounterCondition::BELOW:
|
||||
return macro->RunCount() < _count;
|
||||
|
|
@ -207,7 +211,7 @@ bool MacroConditionMacro::Load(obs_data_t *obj)
|
|||
|
||||
bool MacroConditionMacro::PostLoad()
|
||||
{
|
||||
return MacroRefCondition::PostLoad() &&
|
||||
return MacroCondition::PostLoad() && MacroRefCondition::PostLoad() &&
|
||||
MultiMacroRefCondtition::PostLoad();
|
||||
}
|
||||
|
||||
|
|
@ -216,6 +220,45 @@ std::string MacroConditionMacro::GetShortDesc() const
|
|||
return _macro.Name();
|
||||
}
|
||||
|
||||
void MacroConditionMacro::SetType(Type type)
|
||||
{
|
||||
_type = type;
|
||||
SetupTempVars();
|
||||
}
|
||||
|
||||
void MacroConditionMacro::SetupTempVars()
|
||||
{
|
||||
MacroCondition::SetupTempVars();
|
||||
switch (_type) {
|
||||
case Type::COUNT:
|
||||
AddTempvar(
|
||||
"runCount",
|
||||
obs_module_text(
|
||||
"AdvSceneSwitcher.tempVar.macro.runCount"),
|
||||
obs_module_text(
|
||||
"AdvSceneSwitcher.tempVar.macro.runCount.description"));
|
||||
break;
|
||||
case Type::STATE:
|
||||
break;
|
||||
case Type::MULTI_STATE:
|
||||
AddTempvar(
|
||||
"matchedCount",
|
||||
obs_module_text(
|
||||
"AdvSceneSwitcher.tempVar.macro.matchedCount"),
|
||||
obs_module_text(
|
||||
"AdvSceneSwitcher.tempVar.macro.matchedCount.description"));
|
||||
break;
|
||||
case Type::ACTION_DISABLED:
|
||||
break;
|
||||
case Type::ACTION_ENABLED:
|
||||
break;
|
||||
case Type::PAUSED:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static inline void populateTypeSelection(QComboBox *list)
|
||||
{
|
||||
for (auto entry : macroConditionTypes) {
|
||||
|
|
@ -352,7 +395,7 @@ void MacroConditionMacroEdit::SetupWidgets()
|
|||
SetWidgetVisibility();
|
||||
ClearLayouts();
|
||||
|
||||
switch (_entryData->_type) {
|
||||
switch (_entryData->GetType()) {
|
||||
case MacroConditionMacro::Type::COUNT:
|
||||
SetupCountWidgets();
|
||||
break;
|
||||
|
|
@ -432,35 +475,39 @@ void MacroConditionMacroEdit::SetupPauseWidgets()
|
|||
void MacroConditionMacroEdit::SetWidgetVisibility()
|
||||
{
|
||||
_macros->setVisible(
|
||||
_entryData->_type == MacroConditionMacro::Type::COUNT ||
|
||||
_entryData->_type == MacroConditionMacro::Type::STATE ||
|
||||
_entryData->_type ==
|
||||
_entryData->GetType() == MacroConditionMacro::Type::COUNT ||
|
||||
_entryData->GetType() == MacroConditionMacro::Type::STATE ||
|
||||
_entryData->GetType() ==
|
||||
MacroConditionMacro::Type::ACTION_DISABLED ||
|
||||
_entryData->_type ==
|
||||
_entryData->GetType() ==
|
||||
MacroConditionMacro::Type::ACTION_ENABLED ||
|
||||
_entryData->_type == MacroConditionMacro::Type::PAUSED);
|
||||
_counterConditions->setVisible(_entryData->_type ==
|
||||
_entryData->GetType() == MacroConditionMacro::Type::PAUSED);
|
||||
_counterConditions->setVisible(_entryData->GetType() ==
|
||||
MacroConditionMacro::Type::COUNT);
|
||||
_count->setVisible(_entryData->_type ==
|
||||
_count->setVisible(_entryData->GetType() ==
|
||||
MacroConditionMacro::Type::COUNT);
|
||||
_currentCount->setVisible(_entryData->_type ==
|
||||
_currentCount->setVisible(_entryData->GetType() ==
|
||||
MacroConditionMacro::Type::COUNT);
|
||||
_resetCount->setVisible(_entryData->_type ==
|
||||
_resetCount->setVisible(_entryData->GetType() ==
|
||||
MacroConditionMacro::Type::COUNT);
|
||||
_macroList->setVisible(_entryData->_type ==
|
||||
_macroList->setVisible(_entryData->GetType() ==
|
||||
MacroConditionMacro::Type::MULTI_STATE);
|
||||
_multiStateConditions->setVisible(
|
||||
_entryData->_type == MacroConditionMacro::Type::MULTI_STATE);
|
||||
_multiStateCount->setVisible(_entryData->_type ==
|
||||
_entryData->GetType() ==
|
||||
MacroConditionMacro::Type::MULTI_STATE);
|
||||
_multiStateCount->setVisible(_entryData->GetType() ==
|
||||
MacroConditionMacro::Type::MULTI_STATE);
|
||||
_actionIndex->setVisible(
|
||||
_entryData->_type ==
|
||||
_entryData->GetType() ==
|
||||
MacroConditionMacro::Type::ACTION_DISABLED ||
|
||||
_entryData->_type == MacroConditionMacro::Type::ACTION_ENABLED);
|
||||
if (_entryData->_type == MacroConditionMacro::Type::MULTI_STATE ||
|
||||
_entryData->_type == MacroConditionMacro::Type::ACTION_DISABLED ||
|
||||
_entryData->_type == MacroConditionMacro::Type::ACTION_ENABLED ||
|
||||
_entryData->_type == MacroConditionMacro::Type::PAUSED) {
|
||||
_entryData->GetType() ==
|
||||
MacroConditionMacro::Type::ACTION_ENABLED);
|
||||
if (_entryData->GetType() == MacroConditionMacro::Type::MULTI_STATE ||
|
||||
_entryData->GetType() ==
|
||||
MacroConditionMacro::Type::ACTION_DISABLED ||
|
||||
_entryData->GetType() ==
|
||||
MacroConditionMacro::Type::ACTION_ENABLED ||
|
||||
_entryData->GetType() == MacroConditionMacro::Type::PAUSED) {
|
||||
_pausedWarning->hide();
|
||||
}
|
||||
|
||||
|
|
@ -476,7 +523,7 @@ void MacroConditionMacroEdit::UpdateEntryData()
|
|||
|
||||
SetupWidgets();
|
||||
_macros->SetCurrentMacro(_entryData->_macro);
|
||||
_types->setCurrentIndex(static_cast<int>(_entryData->_type));
|
||||
_types->setCurrentIndex(static_cast<int>(_entryData->GetType()));
|
||||
_counterConditions->setCurrentIndex(
|
||||
static_cast<int>(_entryData->_counterCondition));
|
||||
_count->SetValue(_entryData->_count);
|
||||
|
|
@ -548,7 +595,7 @@ void MacroConditionMacroEdit::TypeChanged(int type)
|
|||
}
|
||||
|
||||
auto lock = LockContext();
|
||||
_entryData->_type = static_cast<MacroConditionMacro::Type>(type);
|
||||
_entryData->SetType(static_cast<MacroConditionMacro::Type>(type));
|
||||
SetupWidgets();
|
||||
}
|
||||
|
||||
|
|
@ -584,7 +631,8 @@ void MacroConditionMacroEdit::UpdatePaused()
|
|||
auto macro = _entryData->_macro.GetMacro();
|
||||
_pausedWarning->setVisible(
|
||||
_entryData &&
|
||||
_entryData->_type != MacroConditionMacro::Type::MULTI_STATE &&
|
||||
_entryData->GetType() !=
|
||||
MacroConditionMacro::Type::MULTI_STATE &&
|
||||
macro && macro->Paused());
|
||||
adjustSize();
|
||||
updateGeometry();
|
||||
|
|
|
|||
|
|
@ -41,7 +41,8 @@ public:
|
|||
ACTION_ENABLED,
|
||||
PAUSED,
|
||||
};
|
||||
Type _type = Type::STATE;
|
||||
void SetType(Type);
|
||||
Type GetType() const { return _type; }
|
||||
|
||||
enum class CounterCondition {
|
||||
BELOW,
|
||||
|
|
@ -67,6 +68,9 @@ private:
|
|||
bool CheckActionStateCondition();
|
||||
bool CheckPauseState();
|
||||
|
||||
void SetupTempVars();
|
||||
|
||||
Type _type = Type::STATE;
|
||||
static bool _registered;
|
||||
static const std::string id;
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user