mirror of
https://github.com/WarmUpTill/SceneSwitcher.git
synced 2026-03-21 17:34:57 -05:00
Add default settings support
This commit is contained in:
parent
be809dbfab
commit
c6155c9fea
|
|
@ -518,6 +518,7 @@ AdvSceneSwitcher.condition.source.sizeCompare.equal="Equals"
|
|||
AdvSceneSwitcher.condition.source.sizeCompare.more="Bigger than"
|
||||
AdvSceneSwitcher.condition.source.refresh="Refresh"
|
||||
AdvSceneSwitcher.condition.source.refresh.tooltip="Repopulate the source settings selection with the settings of the source which's name matches the variable value."
|
||||
AdvSceneSwitcher.condition.source.includeDefaults="Include default settings values"
|
||||
AdvSceneSwitcher.condition.source.sceneVisibilityHint="Scene specific visibility can be checked using the \"Scene item visibility\" condition"
|
||||
AdvSceneSwitcher.condition.source.getSettings="Get current settings"
|
||||
AdvSceneSwitcher.condition.source.entry.line1="{{sources}}{{conditions}}{{settingSelection}}{{refresh}}{{sizeCompareMethods}}{{size}}"
|
||||
|
|
@ -537,6 +538,7 @@ AdvSceneSwitcher.condition.filter.type.individualSettingListSelectionMatches="Se
|
|||
AdvSceneSwitcher.condition.filter.type.individualSettingChanged="Settings value changed"
|
||||
AdvSceneSwitcher.condition.filter.refresh="Refresh"
|
||||
AdvSceneSwitcher.condition.filter.refresh.tooltip="Repopulate the filter settings selection with the settings of the filter which's name matches the variable value."
|
||||
AdvSceneSwitcher.condition.filter.includeDefaults="Include default settings values"
|
||||
AdvSceneSwitcher.condition.filter.getSettings="Get current settings"
|
||||
AdvSceneSwitcher.condition.filter.entry.line1="On{{sources}}{{filters}}{{conditions}}{{settingSelection}}{{refresh}}"
|
||||
AdvSceneSwitcher.condition.filter.entry.line2="{{settings}}"
|
||||
|
|
|
|||
|
|
@ -396,9 +396,10 @@ void MacroActionFilterEdit::GetSettingsClicked()
|
|||
case MacroActionFilter::SettingsInputMethod::JSON_STRING: {
|
||||
const auto filters =
|
||||
_entryData->_filter.GetFilters(_entryData->_source);
|
||||
const auto settings = GetSourceSettings(
|
||||
filters.empty() ? nullptr : filters.at(0), true);
|
||||
_settingsString->setPlainText(
|
||||
FormatJsonString(GetSourceSettings(
|
||||
filters.empty() ? nullptr : filters.at(0))));
|
||||
FormatJsonString(settings ? *settings : ""));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -461,8 +461,10 @@ void MacroActionSourceEdit::GetSettingsClicked()
|
|||
case MacroActionSource::SettingsInputMethod::INDIVIDUAL_TEMPVAR:
|
||||
break;
|
||||
case MacroActionSource::SettingsInputMethod::JSON_STRING:
|
||||
_settingsString->setPlainText(FormatJsonString(
|
||||
GetSourceSettings(_entryData->_source.GetSource())));
|
||||
const auto settings = GetSourceSettings(
|
||||
_entryData->_source.GetSource(), true);
|
||||
_settingsString->setPlainText(
|
||||
FormatJsonString(settings ? *settings : ""));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,18 +52,28 @@ bool MacroConditionFilter::CheckConditionHelper(const OBSWeakSource &filter)
|
|||
ret = !obs_source_enabled(filterSource);
|
||||
break;
|
||||
case Condition::SETTINGS_MATCH: {
|
||||
ret = CompareSourceSettings(filter, _settings, _regex);
|
||||
const auto settings = GetSourceSettings(filter);
|
||||
SetVariableValue(settings);
|
||||
SetTempVarValue("settings", settings);
|
||||
const auto settings =
|
||||
GetSourceSettings(filter, _includeDefaults);
|
||||
if (!settings) {
|
||||
break;
|
||||
}
|
||||
|
||||
ret = CompareSourceSettings(*settings, _settings, _regex);
|
||||
SetVariableValue(*settings);
|
||||
SetTempVarValue("settings", *settings);
|
||||
break;
|
||||
}
|
||||
case Condition::SETTINGS_CHANGED: {
|
||||
const auto settings = GetSourceSettings(filter);
|
||||
ret = !_currentSettings.empty() && settings != _currentSettings;
|
||||
const auto settings =
|
||||
GetSourceSettings(filter, _includeDefaults);
|
||||
ret = _currentSettings.has_value() &&
|
||||
settings != _currentSettings;
|
||||
_currentSettings = settings;
|
||||
SetVariableValue(settings);
|
||||
SetTempVarValue("settings", settings);
|
||||
if (!settings) {
|
||||
break;
|
||||
}
|
||||
SetVariableValue(*settings);
|
||||
SetTempVarValue("settings", *settings);
|
||||
break;
|
||||
}
|
||||
case Condition::INDIVIDUAL_SETTING_MATCH: {
|
||||
|
|
@ -134,6 +144,7 @@ bool MacroConditionFilter::Save(obs_data_t *obj) const
|
|||
_settings.Save(obj, "settings");
|
||||
_regex.Save(obj);
|
||||
_setting.Save(obj);
|
||||
obs_data_set_bool(obj, "includeDefaults", _includeDefaults);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -152,6 +163,7 @@ bool MacroConditionFilter::Load(obs_data_t *obj)
|
|||
obs_data_get_bool(obj, "regex"));
|
||||
}
|
||||
_setting.Load(obj);
|
||||
_includeDefaults = obs_data_get_bool(obj, "includeDefaults");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -221,8 +233,12 @@ MacroConditionFilterEdit::MacroConditionFilterEdit(
|
|||
_settings(new VariableTextEdit(this)),
|
||||
_regex(new RegexConfigWidget(parent)),
|
||||
_settingSelection(new SourceSettingSelection()),
|
||||
_refreshSettingSelection(new QPushButton(
|
||||
obs_module_text("AdvSceneSwitcher.condition.filter.refresh")))
|
||||
_refreshSettingSelection(new QPushButton(obs_module_text(
|
||||
"AdvSceneSwitcher.condition.filter.refresh"))),
|
||||
_includeDefaults(new QCheckBox(
|
||||
obs_module_text(
|
||||
"AdvSceneSwitcher.condition.filter.includeDefaults"),
|
||||
this))
|
||||
{
|
||||
populateConditionSelection(_conditions);
|
||||
|
||||
|
|
@ -249,6 +265,8 @@ MacroConditionFilterEdit::MacroConditionFilterEdit(
|
|||
SLOT(SettingSelectionChanged(const SourceSetting &)));
|
||||
QWidget::connect(_refreshSettingSelection, SIGNAL(clicked()), this,
|
||||
SLOT(RefreshVariableSourceSelectionValue()));
|
||||
QWidget::connect(_includeDefaults, SIGNAL(stateChanged(int)), this,
|
||||
SLOT(IncludeDefaultsChanged(int)));
|
||||
|
||||
const std::unordered_map<std::string, QWidget *> widgetPlaceholders = {
|
||||
{"{{sources}}", _sources},
|
||||
|
|
@ -280,6 +298,7 @@ MacroConditionFilterEdit::MacroConditionFilterEdit(
|
|||
mainLayout->addLayout(line1Layout);
|
||||
mainLayout->addLayout(line2Layout);
|
||||
mainLayout->addLayout(line3Layout);
|
||||
mainLayout->addWidget(_includeDefaults);
|
||||
setLayout(mainLayout);
|
||||
|
||||
_entryData = entryData;
|
||||
|
|
@ -332,7 +351,11 @@ void MacroConditionFilterEdit::GetSettingsClicked()
|
|||
QString value;
|
||||
if (_entryData->GetCondition() ==
|
||||
MacroConditionFilter::Condition::SETTINGS_MATCH) {
|
||||
value = FormatJsonString(GetSourceSettings(filters.at(0)));
|
||||
const auto settings = GetSourceSettings(
|
||||
filters.at(0), _entryData->_includeDefaults);
|
||||
if (settings) {
|
||||
value = FormatJsonString(*settings);
|
||||
}
|
||||
} else if (_entryData->GetCondition() ==
|
||||
MacroConditionFilter::Condition::
|
||||
INDIVIDUAL_SETTING_LIST_ENTRY_MATCH) {
|
||||
|
|
@ -387,6 +410,12 @@ void MacroConditionFilterEdit::RefreshVariableSourceSelectionValue()
|
|||
_settingSelection->SetSource(filters.empty() ? nullptr : filters.at(0));
|
||||
}
|
||||
|
||||
void MacroConditionFilterEdit::IncludeDefaultsChanged(int state)
|
||||
{
|
||||
GUARD_LOADING_AND_LOCK();
|
||||
_entryData->_includeDefaults = state;
|
||||
}
|
||||
|
||||
static QString GetIndividualListEntryName()
|
||||
{
|
||||
static const auto matchesInput =
|
||||
|
|
@ -440,6 +469,10 @@ void MacroConditionFilterEdit::SetWidgetVisibility()
|
|||
SetRowVisibleByValue(_conditions, GetIndividualListEntryName(),
|
||||
_entryData->_setting.IsList());
|
||||
|
||||
_includeDefaults->setVisible(
|
||||
_entryData->GetCondition() ==
|
||||
MacroConditionFilter::Condition::SETTINGS_MATCH);
|
||||
|
||||
adjustSize();
|
||||
updateGeometry();
|
||||
}
|
||||
|
|
@ -461,6 +494,7 @@ void MacroConditionFilterEdit::UpdateEntryData()
|
|||
_settingSelection->SetSelection(filters.empty() ? nullptr
|
||||
: filters.at(0),
|
||||
_entryData->_setting);
|
||||
_includeDefaults->setChecked(_entryData->_includeDefaults);
|
||||
SetWidgetVisibility();
|
||||
|
||||
adjustSize();
|
||||
|
|
|
|||
|
|
@ -42,13 +42,14 @@ public:
|
|||
StringVariable _settings = "";
|
||||
RegexConfig _regex;
|
||||
SourceSetting _setting;
|
||||
bool _includeDefaults = false;
|
||||
|
||||
private:
|
||||
void SetupTempVars();
|
||||
bool CheckConditionHelper(const OBSWeakSource &);
|
||||
|
||||
Condition _condition = Condition::ENABLED;
|
||||
std::string _currentSettings;
|
||||
std::optional<std::string> _currentSettings;
|
||||
std::string _currentSettingsValue;
|
||||
|
||||
static bool _registered;
|
||||
|
|
@ -80,6 +81,7 @@ private slots:
|
|||
void RegexChanged(const RegexConfig &);
|
||||
void SettingSelectionChanged(const SourceSetting &);
|
||||
void RefreshVariableSourceSelectionValue();
|
||||
void IncludeDefaultsChanged(int);
|
||||
signals:
|
||||
void HeaderInfoChanged(const QString &);
|
||||
|
||||
|
|
@ -94,6 +96,7 @@ private:
|
|||
RegexConfigWidget *_regex;
|
||||
SourceSettingSelection *_settingSelection;
|
||||
QPushButton *_refreshSettingSelection;
|
||||
QCheckBox *_includeDefaults;
|
||||
|
||||
std::shared_ptr<MacroConditionFilter> _entryData;
|
||||
bool _loading = true;
|
||||
|
|
|
|||
|
|
@ -82,19 +82,28 @@ bool MacroConditionSource::CheckCondition()
|
|||
ret = obs_source_showing(s);
|
||||
break;
|
||||
case Condition::ALL_SETTINGS_MATCH: {
|
||||
ret = CompareSourceSettings(_source.GetSource(), _settings,
|
||||
_regex);
|
||||
const auto settings = GetSourceSettings(_source.GetSource());
|
||||
SetVariableValue(settings);
|
||||
SetTempVarValue("settings", settings);
|
||||
const auto settings = GetSourceSettings(_source.GetSource(),
|
||||
_includeDefaults);
|
||||
if (!settings) {
|
||||
break;
|
||||
}
|
||||
|
||||
ret = CompareSourceSettings(*settings, _settings, _regex);
|
||||
SetVariableValue(*settings);
|
||||
SetTempVarValue("settings", *settings);
|
||||
break;
|
||||
}
|
||||
case Condition::SETTINGS_CHANGED: {
|
||||
const auto settings = GetSourceSettings(_source.GetSource());
|
||||
ret = !_currentSettings.empty() && settings != _currentSettings;
|
||||
const auto settings = GetSourceSettings(_source.GetSource(),
|
||||
_includeDefaults);
|
||||
ret = _currentSettings.has_value() &&
|
||||
settings != _currentSettings;
|
||||
_currentSettings = settings;
|
||||
SetVariableValue(settings);
|
||||
SetTempVarValue("settings", settings);
|
||||
if (!settings) {
|
||||
break;
|
||||
}
|
||||
SetVariableValue(*settings);
|
||||
SetTempVarValue("settings", *settings);
|
||||
break;
|
||||
}
|
||||
case Condition::INDIVIDUAL_SETTING_MATCH: {
|
||||
|
|
@ -135,13 +144,13 @@ bool MacroConditionSource::CheckCondition()
|
|||
}
|
||||
case Condition::HEIGHT: {
|
||||
const auto height = obs_source_get_height(s);
|
||||
ret = compareSourceSize(_comparision, height, _size);
|
||||
ret = compareSourceSize(_comparison, height, _size);
|
||||
SetTempVarValue("height", std::to_string(height));
|
||||
break;
|
||||
}
|
||||
case Condition::WIDTH: {
|
||||
const auto width = obs_source_get_width(s);
|
||||
ret = compareSourceSize(_comparision, width, _size);
|
||||
ret = compareSourceSize(_comparison, width, _size);
|
||||
SetTempVarValue("width", std::to_string(width));
|
||||
break;
|
||||
}
|
||||
|
|
@ -165,8 +174,9 @@ bool MacroConditionSource::Save(obs_data_t *obj) const
|
|||
_regex.Save(obj);
|
||||
_setting.Save(obj);
|
||||
_size.Save(obj, "size");
|
||||
obs_data_set_int(obj, "sizeComparisionMethod",
|
||||
static_cast<int>(_comparision));
|
||||
obs_data_set_int(obj, "sizeComparisonMethod",
|
||||
static_cast<int>(_comparison));
|
||||
obs_data_set_bool(obj, "includeDefaults", _includeDefaults);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -185,8 +195,11 @@ bool MacroConditionSource::Load(obs_data_t *obj)
|
|||
}
|
||||
_setting.Load(obj);
|
||||
_size.Load(obj, "size");
|
||||
_comparision = static_cast<SizeComparision>(
|
||||
obs_data_get_int(obj, "sizeComparisionMethod"));
|
||||
_comparison = static_cast<SizeComparision>(obs_data_get_int(
|
||||
obj, obs_data_has_user_value(obj, "sizeComparisionMethod")
|
||||
? "sizeComparisionMethod"
|
||||
: "sizeComparisonMethod"));
|
||||
_includeDefaults = obs_data_get_bool(obj, "includeDefaults");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -268,7 +281,11 @@ MacroConditionSourceEdit::MacroConditionSourceEdit(
|
|||
_refreshSettingSelection(new QPushButton(obs_module_text(
|
||||
"AdvSceneSwitcher.condition.source.refresh"))),
|
||||
_size(new VariableSpinBox(this)),
|
||||
_sizeCompareMethods(new QComboBox())
|
||||
_sizeCompareMethods(new QComboBox()),
|
||||
_includeDefaults(new QCheckBox(
|
||||
obs_module_text(
|
||||
"AdvSceneSwitcher.condition.source.includeDefaults"),
|
||||
this))
|
||||
{
|
||||
populateSelection(_conditions, sourceConditionTypes);
|
||||
populateSelection(_sizeCompareMethods, compareMethods);
|
||||
|
|
@ -300,6 +317,8 @@ MacroConditionSourceEdit::MacroConditionSourceEdit(
|
|||
this, SLOT(SizeChanged(const NumberVariable<int> &)));
|
||||
QWidget::connect(_sizeCompareMethods, SIGNAL(currentIndexChanged(int)),
|
||||
this, SLOT(CompareMethodChanged(int)));
|
||||
QWidget::connect(_includeDefaults, SIGNAL(stateChanged(int)), this,
|
||||
SLOT(IncludeDefaultsChanged(int)));
|
||||
|
||||
auto line1Layout = new QHBoxLayout;
|
||||
line1Layout->setContentsMargins(0, 0, 0, 0);
|
||||
|
|
@ -328,6 +347,7 @@ MacroConditionSourceEdit::MacroConditionSourceEdit(
|
|||
mainLayout->addLayout(line1Layout);
|
||||
mainLayout->addLayout(line2Layout);
|
||||
mainLayout->addLayout(line3Layout);
|
||||
mainLayout->addWidget(_includeDefaults);
|
||||
setLayout(mainLayout);
|
||||
|
||||
_entryData = entryData;
|
||||
|
|
@ -364,8 +384,12 @@ void MacroConditionSourceEdit::GetSettingsClicked()
|
|||
QString value;
|
||||
if (_entryData->GetCondition() ==
|
||||
MacroConditionSource::Condition::ALL_SETTINGS_MATCH) {
|
||||
value = FormatJsonString(
|
||||
GetSourceSettings(_entryData->_source.GetSource()));
|
||||
const auto settings =
|
||||
GetSourceSettings(_entryData->_source.GetSource(),
|
||||
_entryData->_includeDefaults);
|
||||
if (settings) {
|
||||
value = FormatJsonString(*settings);
|
||||
}
|
||||
} else if (_entryData->GetCondition() ==
|
||||
MacroConditionSource::Condition::
|
||||
INDIVIDUAL_SETTING_LIST_ENTRY_MATCH) {
|
||||
|
|
@ -427,10 +451,16 @@ void MacroConditionSourceEdit::SizeChanged(const NumberVariable<int> &value)
|
|||
void MacroConditionSourceEdit::CompareMethodChanged(int index)
|
||||
{
|
||||
GUARD_LOADING_AND_LOCK();
|
||||
_entryData->_comparision =
|
||||
_entryData->_comparison =
|
||||
static_cast<MacroConditionSource::SizeComparision>(index);
|
||||
}
|
||||
|
||||
void MacroConditionSourceEdit::IncludeDefaultsChanged(int state)
|
||||
{
|
||||
GUARD_LOADING_AND_LOCK();
|
||||
_entryData->_includeDefaults = state;
|
||||
}
|
||||
|
||||
static QString GetIndividualListEntryName()
|
||||
{
|
||||
static const auto matchesInput =
|
||||
|
|
@ -500,6 +530,10 @@ void MacroConditionSourceEdit::SetWidgetVisibility()
|
|||
SetRowVisibleByValue(_conditions, GetIndividualListEntryName(),
|
||||
_entryData->_setting.IsList());
|
||||
|
||||
_includeDefaults->setVisible(
|
||||
_entryData->GetCondition() ==
|
||||
MacroConditionSource::Condition::ALL_SETTINGS_MATCH);
|
||||
|
||||
adjustSize();
|
||||
updateGeometry();
|
||||
}
|
||||
|
|
@ -519,7 +553,8 @@ void MacroConditionSourceEdit::UpdateEntryData()
|
|||
_entryData->_setting);
|
||||
_size->SetValue(_entryData->_size);
|
||||
_sizeCompareMethods->setCurrentIndex(
|
||||
static_cast<int>(_entryData->_comparision));
|
||||
static_cast<int>(_entryData->_comparison));
|
||||
_includeDefaults->setChecked(_entryData->_includeDefaults);
|
||||
SetWidgetVisibility();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -45,13 +45,14 @@ public:
|
|||
SourceSetting _setting;
|
||||
RegexConfig _regex;
|
||||
IntVariable _size;
|
||||
SizeComparision _comparision = SizeComparision::EQUAL;
|
||||
SizeComparision _comparison = SizeComparision::EQUAL;
|
||||
bool _includeDefaults = false;
|
||||
|
||||
private:
|
||||
void SetupTempVars();
|
||||
|
||||
Condition _condition = Condition::ACTIVE;
|
||||
std::string _currentSettings;
|
||||
std::optional<std::string> _currentSettings;
|
||||
std::string _currentSettingsValue;
|
||||
|
||||
static bool _registered;
|
||||
|
|
@ -84,6 +85,7 @@ private slots:
|
|||
void RefreshVariableSourceSelectionValue();
|
||||
void SizeChanged(const NumberVariable<int> &value);
|
||||
void CompareMethodChanged(int);
|
||||
void IncludeDefaultsChanged(int);
|
||||
signals:
|
||||
void HeaderInfoChanged(const QString &);
|
||||
|
||||
|
|
@ -97,6 +99,7 @@ protected:
|
|||
QPushButton *_refreshSettingSelection;
|
||||
VariableSpinBox *_size;
|
||||
QComboBox *_sizeCompareMethods;
|
||||
QCheckBox *_includeDefaults;
|
||||
|
||||
std::shared_ptr<MacroConditionSource> _entryData;
|
||||
|
||||
|
|
|
|||
|
|
@ -133,20 +133,6 @@ static void addSettingsHelper(obs_property_t *property,
|
|||
} while (obs_property_next(&property));
|
||||
}
|
||||
|
||||
std::vector<SourceSetting> GetSoruceSettings(obs_source_t *source)
|
||||
{
|
||||
properties_t properties(obs_source_properties(source),
|
||||
obs_properties_destroy);
|
||||
if (!properties) {
|
||||
return {};
|
||||
}
|
||||
std::vector<SourceSetting> settings;
|
||||
|
||||
auto it = obs_properties_first(properties.get());
|
||||
addSettingsHelper(it, settings);
|
||||
return settings;
|
||||
}
|
||||
|
||||
static std::optional<std::string>
|
||||
getDataJsonWithDefaults(const OBSWeakSource &ws)
|
||||
{
|
||||
|
|
@ -495,11 +481,25 @@ void SourceSettingSelection::SelectionIdxChanged(int idx)
|
|||
emit SelectionChanged(setting);
|
||||
}
|
||||
|
||||
static std::vector<SourceSetting> getSourceSettings(obs_source_t *source)
|
||||
{
|
||||
properties_t properties(obs_source_properties(source),
|
||||
obs_properties_destroy);
|
||||
if (!properties) {
|
||||
return {};
|
||||
}
|
||||
std::vector<SourceSetting> settings;
|
||||
|
||||
auto it = obs_properties_first(properties.get());
|
||||
addSettingsHelper(it, settings);
|
||||
return settings;
|
||||
}
|
||||
|
||||
void SourceSettingSelection::Populate(const OBSWeakSource &source)
|
||||
{
|
||||
_settings->clear();
|
||||
OBSSourceAutoRelease s = obs_weak_source_get_source(source);
|
||||
auto settings = GetSoruceSettings(s);
|
||||
const auto settings = getSourceSettings(s);
|
||||
for (const auto &setting : settings) {
|
||||
QVariant variant;
|
||||
variant.setValue(setting);
|
||||
|
|
|
|||
|
|
@ -32,7 +32,6 @@ private:
|
|||
friend class SourceSettingSelection;
|
||||
};
|
||||
|
||||
std::vector<SourceSetting> GetSoruceSettings(obs_source_t *source);
|
||||
std::optional<std::string> GetSourceSettingValue(const OBSWeakSource &source,
|
||||
const SourceSetting &setting);
|
||||
std::optional<std::string>
|
||||
|
|
|
|||
|
|
@ -4,23 +4,30 @@
|
|||
|
||||
namespace advss {
|
||||
|
||||
std::string GetSourceSettings(OBSWeakSource ws)
|
||||
std::optional<std::string> GetSourceSettings(OBSWeakSource ws,
|
||||
bool includeDefaults)
|
||||
{
|
||||
if (!ws) {
|
||||
return "";
|
||||
return {};
|
||||
}
|
||||
|
||||
std::string settings;
|
||||
auto s = obs_weak_source_get_source(ws);
|
||||
obs_data_t *data = obs_source_get_settings(s);
|
||||
OBSSourceAutoRelease source = obs_weak_source_get_source(ws);
|
||||
OBSDataAutoRelease dataWithoutDefaults =
|
||||
obs_source_get_settings(source);
|
||||
if (!dataWithoutDefaults) {
|
||||
return {};
|
||||
}
|
||||
|
||||
OBSDataAutoRelease dataWithDefaults =
|
||||
obs_data_get_defaults(dataWithoutDefaults);
|
||||
obs_data_apply(dataWithDefaults, dataWithoutDefaults);
|
||||
|
||||
auto &data = includeDefaults ? dataWithDefaults : dataWithoutDefaults;
|
||||
auto json = obs_data_get_json(data);
|
||||
if (json) {
|
||||
settings = json;
|
||||
if (!json) {
|
||||
return {};
|
||||
}
|
||||
obs_data_release(data);
|
||||
obs_source_release(s);
|
||||
|
||||
return settings;
|
||||
return json;
|
||||
}
|
||||
|
||||
void SetSourceSettings(obs_source_t *s, const std::string &settings)
|
||||
|
|
@ -39,12 +46,11 @@ void SetSourceSettings(obs_source_t *s, const std::string &settings)
|
|||
obs_data_release(data);
|
||||
}
|
||||
|
||||
bool CompareSourceSettings(const OBSWeakSource &source,
|
||||
bool CompareSourceSettings(const std::string &sourceSettings,
|
||||
const std::string &settings,
|
||||
const RegexConfig ®ex)
|
||||
{
|
||||
std::string currentSettings = GetSourceSettings(source);
|
||||
return MatchJson(currentSettings, settings, regex);
|
||||
return MatchJson(sourceSettings, settings, regex);
|
||||
}
|
||||
|
||||
} // namespace advss
|
||||
|
|
|
|||
|
|
@ -1,13 +1,17 @@
|
|||
#pragma once
|
||||
#include <obs.hpp>
|
||||
#include <string>
|
||||
#include <regex-config.hpp>
|
||||
|
||||
#include <obs.hpp>
|
||||
|
||||
#include <optional>
|
||||
#include <string>
|
||||
|
||||
namespace advss {
|
||||
|
||||
std::string GetSourceSettings(OBSWeakSource ws);
|
||||
std::optional<std::string> GetSourceSettings(OBSWeakSource ws,
|
||||
bool includeDefaults);
|
||||
void SetSourceSettings(obs_source_t *s, const std::string &settings);
|
||||
bool CompareSourceSettings(const OBSWeakSource &source,
|
||||
bool CompareSourceSettings(const std::string &sourceSettings,
|
||||
const std::string &settings,
|
||||
const RegexConfig ®ex);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user