Add option to check if macro is paused

This commit is contained in:
WarmUpTill
2023-11-29 17:37:14 +01:00
committed by WarmUpTill
parent 574fdb496f
commit f756de05c3
3 changed files with 42 additions and 24 deletions

View File

@@ -329,6 +329,7 @@ AdvSceneSwitcher.condition.macro.type.state="Macro condition state"
AdvSceneSwitcher.condition.macro.type.multiState="Multiple macro condition state"
AdvSceneSwitcher.condition.macro.type.actionDisabled="Macro action disabled"
AdvSceneSwitcher.condition.macro.type.actionEnabled="Macro action enabled"
AdvSceneSwitcher.condition.macro.type.paused="Macro is paused"
AdvSceneSwitcher.condition.macro.type.selection="{{types}}"
AdvSceneSwitcher.condition.macro.count.type.below="Less than"
AdvSceneSwitcher.condition.macro.count.type.above="More than"
@@ -344,6 +345,7 @@ AdvSceneSwitcher.condition.macro.count.entry.line1="{{macros}}was executed{{cond
AdvSceneSwitcher.condition.macro.count.entry.line2="Current count:{{currentCount}}{{resetCount}}"
AdvSceneSwitcher.condition.macro.actionState.disabled.entry="Action{{actionIndex}}of{{macros}}is disabled"
AdvSceneSwitcher.condition.macro.actionState.enabled.entry="Action{{actionIndex}}of{{macros}}is enabled"
AdvSceneSwitcher.condition.macro.paused.entry="Macro{{macros}}is paused"
AdvSceneSwitcher.condition.source="Source"
AdvSceneSwitcher.condition.source.type.active="Is active"
AdvSceneSwitcher.condition.source.type.showing="Is showing"

View File

@@ -24,6 +24,8 @@ const static std::map<MacroConditionMacro::Type, std::string>
"AdvSceneSwitcher.condition.macro.type.actionDisabled"},
{MacroConditionMacro::Type::ACTION_ENABLED,
"AdvSceneSwitcher.condition.macro.type.actionEnabled"},
{MacroConditionMacro::Type::PAUSED,
"AdvSceneSwitcher.condition.macro.type.paused"},
};
const static std::map<MacroConditionMacro::CounterCondition, std::string>
@@ -107,6 +109,16 @@ bool MacroConditionMacro::CheckActionStateCondition()
return false;
}
bool MacroConditionMacro::CheckPauseState()
{
auto macro = _macro.GetMacro();
if (!macro) {
return false;
}
return macro->Paused();
}
bool MacroConditionMacro::CheckCountCondition()
{
auto macro = _macro.GetMacro();
@@ -140,6 +152,8 @@ bool MacroConditionMacro::CheckCondition()
case Type::ACTION_DISABLED:
case Type::ACTION_ENABLED:
return CheckActionStateCondition();
case Type::PAUSED:
return CheckPauseState();
default:
break;
}
@@ -335,6 +349,9 @@ void MacroConditionMacroEdit::ClearLayouts()
void MacroConditionMacroEdit::SetupWidgets()
{
SetWidgetVisibility();
ClearLayouts();
switch (_entryData->_type) {
case MacroConditionMacro::Type::COUNT:
SetupCountWidgets();
@@ -351,6 +368,9 @@ void MacroConditionMacroEdit::SetupWidgets()
case MacroConditionMacro::Type::ACTION_ENABLED:
SetupActionStateWidgets(true);
break;
case MacroConditionMacro::Type::PAUSED:
SetupPauseWidgets();
break;
default:
break;
}
@@ -358,38 +378,24 @@ void MacroConditionMacroEdit::SetupWidgets()
void MacroConditionMacroEdit::SetupStateWidgets()
{
SetWidgetVisibility();
ClearLayouts();
std::unordered_map<std::string, QWidget *> widgetPlaceholders = {
{"{{macros}}", _macros},
};
PlaceWidgets(
obs_module_text("AdvSceneSwitcher.condition.macro.state.entry"),
_settingsLine1, widgetPlaceholders);
_settingsLine1, {{"{{macros}}", _macros}});
}
void MacroConditionMacroEdit::SetupMultiStateWidgets()
{
SetWidgetVisibility();
ClearLayouts();
std::unordered_map<std::string, QWidget *> widgetPlaceholders = {
{"{{multiStateConditions}}", _multiStateConditions},
{"{{multiStateCount}}", _multiStateCount},
};
PlaceWidgets(
obs_module_text(
"AdvSceneSwitcher.condition.macro.multistate.entry"),
_settingsLine1, widgetPlaceholders);
_settingsLine1,
{{"{{multiStateConditions}}", _multiStateConditions},
{"{{multiStateCount}}", _multiStateCount}});
}
void MacroConditionMacroEdit::SetupCountWidgets()
{
SetWidgetVisibility();
ClearLayouts();
std::unordered_map<std::string, QWidget *> widgetPlaceholders = {
const std::unordered_map<std::string, QWidget *> widgetPlaceholders = {
{"{{macros}}", _macros},
{"{{conditions}}", _counterConditions},
{"{{count}}", _count},
@@ -408,9 +414,6 @@ void MacroConditionMacroEdit::SetupCountWidgets()
void MacroConditionMacroEdit::SetupActionStateWidgets(bool enable)
{
SetWidgetVisibility();
ClearLayouts();
PlaceWidgets(
obs_module_text(
enable ? "AdvSceneSwitcher.condition.macro.actionState.enabled.entry"
@@ -419,6 +422,13 @@ void MacroConditionMacroEdit::SetupActionStateWidgets(bool enable)
{{"{{macros}}", _macros}, {"{{actionIndex}}", _actionIndex}});
}
void MacroConditionMacroEdit::SetupPauseWidgets()
{
PlaceWidgets(obs_module_text(
"AdvSceneSwitcher.condition.macro.paused.entry"),
_settingsLine1, {{"{{macros}}", _macros}});
}
void MacroConditionMacroEdit::SetWidgetVisibility()
{
_macros->setVisible(
@@ -426,7 +436,9 @@ void MacroConditionMacroEdit::SetWidgetVisibility()
_entryData->_type == MacroConditionMacro::Type::STATE ||
_entryData->_type ==
MacroConditionMacro::Type::ACTION_DISABLED ||
_entryData->_type == MacroConditionMacro::Type::ACTION_ENABLED);
_entryData->_type ==
MacroConditionMacro::Type::ACTION_ENABLED ||
_entryData->_type == MacroConditionMacro::Type::PAUSED);
_counterConditions->setVisible(_entryData->_type ==
MacroConditionMacro::Type::COUNT);
_count->setVisible(_entryData->_type ==
@@ -447,7 +459,8 @@ void MacroConditionMacroEdit::SetWidgetVisibility()
_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::ACTION_ENABLED ||
_entryData->_type == MacroConditionMacro::Type::PAUSED) {
_pausedWarning->hide();
}

View File

@@ -39,6 +39,7 @@ public:
MULTI_STATE,
ACTION_DISABLED,
ACTION_ENABLED,
PAUSED,
};
Type _type = Type::STATE;
@@ -64,6 +65,7 @@ private:
bool CheckStateCondition();
bool CheckMultiStateCondition();
bool CheckActionStateCondition();
bool CheckPauseState();
static bool _registered;
static const std::string id;
@@ -128,6 +130,7 @@ private:
void SetupMultiStateWidgets();
void SetupCountWidgets();
void SetupActionStateWidgets(bool enable);
void SetupPauseWidgets();
void SetWidgetVisibility();
bool _loading = true;
};