mirror of
https://github.com/WarmUpTill/SceneSwitcher.git
synced 2026-03-21 17:34:57 -05:00
Add tempvar support to filter condition
This commit is contained in:
parent
687fb4623e
commit
45967a090f
|
|
@ -1763,6 +1763,9 @@ AdvSceneSwitcher.tempVar.source.height="Source height"
|
|||
AdvSceneSwitcher.tempVar.source.setting="Setting value"
|
||||
AdvSceneSwitcher.tempVar.source.settings="Settings string"
|
||||
|
||||
AdvSceneSwitcher.tempVar.filter.setting="Setting value"
|
||||
AdvSceneSwitcher.tempVar.filter.settings="Settings string"
|
||||
|
||||
AdvSceneSwitcher.selectScene="--select scene--"
|
||||
AdvSceneSwitcher.selectPreviousScene="Previous Scene"
|
||||
AdvSceneSwitcher.selectCurrentScene="Current Scene"
|
||||
|
|
|
|||
|
|
@ -47,17 +47,19 @@ bool MacroConditionFilter::CheckConditionHelper(const OBSWeakSource &filter)
|
|||
case Condition::DISABLED:
|
||||
ret = !obs_source_enabled(filterSource);
|
||||
break;
|
||||
case Condition::SETTINGS_MATCH:
|
||||
case Condition::SETTINGS_MATCH: {
|
||||
ret = CompareSourceSettings(filter, _settings, _regex);
|
||||
if (IsReferencedInVars()) {
|
||||
SetVariableValue(GetSourceSettings(filter));
|
||||
}
|
||||
const auto settings = GetSourceSettings(filter);
|
||||
SetVariableValue(settings);
|
||||
SetTempVarValue("settings", settings);
|
||||
break;
|
||||
}
|
||||
case Condition::SETTINGS_CHANGED: {
|
||||
std::string settings = GetSourceSettings(filter);
|
||||
const auto settings = GetSourceSettings(filter);
|
||||
ret = !_currentSettings.empty() && settings != _currentSettings;
|
||||
_currentSettings = settings;
|
||||
SetVariableValue(settings);
|
||||
SetTempVarValue("settings", settings);
|
||||
break;
|
||||
}
|
||||
case Condition::INDIVIDUAL_SETTING_MATCH: {
|
||||
|
|
@ -68,6 +70,7 @@ bool MacroConditionFilter::CheckConditionHelper(const OBSWeakSource &filter)
|
|||
ret = _regex.Enabled() ? _regex.Matches(*value, _settings)
|
||||
: value == std::string(_settings);
|
||||
SetVariableValue(*value);
|
||||
SetTempVarValue("setting", *value);
|
||||
break;
|
||||
}
|
||||
case Condition::INDIVIDUAL_SETTING_CHANGED: {
|
||||
|
|
@ -78,6 +81,7 @@ bool MacroConditionFilter::CheckConditionHelper(const OBSWeakSource &filter)
|
|||
ret = _currentSettingsValue != value;
|
||||
_currentSettingsValue = *value;
|
||||
SetVariableValue(*value);
|
||||
SetTempVarValue("setting", *value);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
|
@ -122,7 +126,8 @@ bool MacroConditionFilter::Load(obs_data_t *obj)
|
|||
MacroCondition::Load(obj);
|
||||
_source.Load(obj);
|
||||
_filter.Load(obj, _source, "filter");
|
||||
_condition = static_cast<Condition>(obs_data_get_int(obj, "condition"));
|
||||
SetCondition(
|
||||
static_cast<Condition>(obs_data_get_int(obj, "condition")));
|
||||
_settings.Load(obj, "settings");
|
||||
_regex.Load(obj);
|
||||
// TOOD: remove in future version
|
||||
|
|
@ -142,6 +147,37 @@ std::string MacroConditionFilter::GetShortDesc() const
|
|||
return "";
|
||||
}
|
||||
|
||||
void MacroConditionFilter::SetCondition(Condition cond)
|
||||
{
|
||||
_condition = cond;
|
||||
SetupTempVars();
|
||||
}
|
||||
|
||||
void MacroConditionFilter::SetupTempVars()
|
||||
{
|
||||
MacroCondition::SetupTempVars();
|
||||
switch (_condition) {
|
||||
case Condition::ENABLED:
|
||||
break;
|
||||
case Condition::DISABLED:
|
||||
break;
|
||||
case Condition::SETTINGS_MATCH:
|
||||
case Condition::SETTINGS_CHANGED:
|
||||
AddTempvar("settings",
|
||||
obs_module_text(
|
||||
"AdvSceneSwitcher.tempVar.filter.settings"));
|
||||
break;
|
||||
case Condition::INDIVIDUAL_SETTING_MATCH:
|
||||
case Condition::INDIVIDUAL_SETTING_CHANGED:
|
||||
AddTempvar("setting",
|
||||
obs_module_text(
|
||||
"AdvSceneSwitcher.tempVar.filter.setting"));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static inline void populateConditionSelection(QComboBox *list)
|
||||
{
|
||||
for (const auto &[_, name] : filterConditionTypes) {
|
||||
|
|
@ -263,8 +299,8 @@ void MacroConditionFilterEdit::ConditionChanged(int index)
|
|||
}
|
||||
|
||||
auto lock = LockContext();
|
||||
_entryData->_condition =
|
||||
static_cast<MacroConditionFilter::Condition>(index);
|
||||
_entryData->SetCondition(
|
||||
static_cast<MacroConditionFilter::Condition>(index));
|
||||
SetWidgetVisibility();
|
||||
}
|
||||
|
||||
|
|
@ -283,7 +319,7 @@ void MacroConditionFilterEdit::GetSettingsClicked()
|
|||
}
|
||||
|
||||
QString value;
|
||||
if (_entryData->_condition ==
|
||||
if (_entryData->GetCondition() ==
|
||||
MacroConditionFilter::Condition::SETTINGS_MATCH) {
|
||||
value = FormatJsonString(GetSourceSettings(filters.at(0)));
|
||||
} else {
|
||||
|
|
@ -346,21 +382,22 @@ void MacroConditionFilterEdit::RefreshVariableSourceSelectionValue()
|
|||
void MacroConditionFilterEdit::SetWidgetVisibility()
|
||||
{
|
||||
const bool showSettingsControls =
|
||||
_entryData->_condition ==
|
||||
_entryData->GetCondition() ==
|
||||
MacroConditionFilter::Condition::SETTINGS_MATCH ||
|
||||
_entryData->_condition ==
|
||||
_entryData->GetCondition() ==
|
||||
MacroConditionFilter::Condition::INDIVIDUAL_SETTING_MATCH;
|
||||
_settings->setVisible(showSettingsControls);
|
||||
_getSettings->setVisible(showSettingsControls);
|
||||
_regex->setVisible(showSettingsControls);
|
||||
_settingSelection->setVisible(
|
||||
_entryData->_condition == MacroConditionFilter::Condition::
|
||||
INDIVIDUAL_SETTING_MATCH ||
|
||||
_entryData->_condition == MacroConditionFilter::Condition::
|
||||
INDIVIDUAL_SETTING_CHANGED);
|
||||
_entryData->GetCondition() ==
|
||||
MacroConditionFilter::Condition::INDIVIDUAL_SETTING_MATCH ||
|
||||
_entryData->GetCondition() ==
|
||||
MacroConditionFilter::Condition::
|
||||
INDIVIDUAL_SETTING_CHANGED);
|
||||
_refreshSettingSelection->setVisible(
|
||||
_entryData->_condition == MacroConditionFilter::Condition::
|
||||
INDIVIDUAL_SETTING_MATCH &&
|
||||
_entryData->GetCondition() ==
|
||||
MacroConditionFilter::Condition::INDIVIDUAL_SETTING_MATCH &&
|
||||
(_entryData->_source.GetType() ==
|
||||
SourceSelection::Type::VARIABLE ||
|
||||
_entryData->_filter.GetType() ==
|
||||
|
|
@ -377,7 +414,8 @@ void MacroConditionFilterEdit::UpdateEntryData()
|
|||
|
||||
_sources->SetSource(_entryData->_source);
|
||||
_filters->SetFilter(_entryData->_source, _entryData->_filter);
|
||||
_conditions->setCurrentIndex(static_cast<int>(_entryData->_condition));
|
||||
_conditions->setCurrentIndex(
|
||||
static_cast<int>(_entryData->GetCondition()));
|
||||
_settings->setPlainText(_entryData->_settings);
|
||||
_regex->SetRegexConfig(_entryData->_regex);
|
||||
const auto filters =
|
||||
|
|
|
|||
|
|
@ -33,17 +33,20 @@ public:
|
|||
INDIVIDUAL_SETTING_MATCH,
|
||||
INDIVIDUAL_SETTING_CHANGED,
|
||||
};
|
||||
void SetCondition(Condition);
|
||||
Condition GetCondition() const { return _condition; }
|
||||
|
||||
SourceSelection _source;
|
||||
FilterSelection _filter;
|
||||
Condition _condition = Condition::ENABLED;
|
||||
StringVariable _settings = "";
|
||||
RegexConfig _regex;
|
||||
SourceSetting _setting;
|
||||
|
||||
private:
|
||||
void SetupTempVars();
|
||||
bool CheckConditionHelper(const OBSWeakSource &);
|
||||
|
||||
Condition _condition = Condition::ENABLED;
|
||||
std::string _currentSettings;
|
||||
std::string _currentSettingsValue;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user