mirror of
https://github.com/WarmUpTill/SceneSwitcher.git
synced 2026-08-24 18:25:50 -05:00
Improve setting selection handling
Will now try to keep the current selection if possible. This can be useful when switching between source of the same time.
This commit is contained in:
@@ -307,8 +307,7 @@ void MacroActionFilterEdit::UpdateEntryData()
|
||||
const auto filters =
|
||||
_entryData->_filter.GetFilters(_entryData->_source);
|
||||
OBSWeakSource firstFilter = filters.empty() ? nullptr : filters.at(0);
|
||||
_filterSettings->SetSource(firstFilter);
|
||||
_filterSettings->SetSetting(_entryData->_setting);
|
||||
_filterSettings->SetSelection(firstFilter, _entryData->_setting);
|
||||
_settingsInputMethods->setCurrentIndex(_settingsInputMethods->findData(
|
||||
static_cast<int>(_entryData->_settingsInputMethod)));
|
||||
_tempVars->SetVariable(_entryData->_tempVar);
|
||||
|
||||
@@ -384,8 +384,7 @@ void MacroActionSourceEdit::UpdateEntryData()
|
||||
_settingsButtons->SetSelection(weakSource, _entryData->_button);
|
||||
_actions->setCurrentIndex(static_cast<int>(_entryData->_action));
|
||||
_sources->SetSource(_entryData->_source);
|
||||
_sourceSettings->SetSource(weakSource);
|
||||
_sourceSettings->SetSetting(_entryData->_setting);
|
||||
_sourceSettings->SetSelection(weakSource, _entryData->_setting);
|
||||
_settingsString->setPlainText(_entryData->_settingsString);
|
||||
_deinterlaceMode->setCurrentIndex(_deinterlaceMode->findData(
|
||||
static_cast<int>(_entryData->_deinterlaceMode)));
|
||||
|
||||
@@ -420,8 +420,9 @@ void MacroConditionFilterEdit::UpdateEntryData()
|
||||
_regex->SetRegexConfig(_entryData->_regex);
|
||||
const auto filters =
|
||||
_entryData->_filter.GetFilters(_entryData->_source);
|
||||
_settingSelection->SetSource(filters.empty() ? nullptr : filters.at(0));
|
||||
_settingSelection->SetSetting(_entryData->_setting);
|
||||
_settingSelection->SetSelection(filters.empty() ? nullptr
|
||||
: filters.at(0),
|
||||
_entryData->_setting);
|
||||
SetWidgetVisibility();
|
||||
|
||||
adjustSize();
|
||||
|
||||
@@ -483,8 +483,8 @@ void MacroConditionSourceEdit::UpdateEntryData()
|
||||
static_cast<int>(_entryData->GetCondition()));
|
||||
_settings->setPlainText(_entryData->_settings);
|
||||
_regex->SetRegexConfig(_entryData->_regex);
|
||||
_settingSelection->SetSource(_entryData->_source.GetSource());
|
||||
_settingSelection->SetSetting(_entryData->_setting);
|
||||
_settingSelection->SetSelection(_entryData->_source.GetSource(),
|
||||
_entryData->_setting);
|
||||
_size->SetValue(_entryData->_size);
|
||||
_sizeCompareMethods->setCurrentIndex(
|
||||
static_cast<int>(_entryData->_comparision));
|
||||
|
||||
@@ -249,14 +249,21 @@ SourceSettingSelection::SourceSettingSelection(QWidget *parent)
|
||||
setLayout(layout);
|
||||
}
|
||||
|
||||
void SourceSettingSelection::SetSource(const OBSWeakSource &source)
|
||||
void SourceSettingSelection::SetSource(const OBSWeakSource &source,
|
||||
bool restorePreviousSelection)
|
||||
{
|
||||
_settings->clear();
|
||||
const auto previousSelection = _settings->currentData();
|
||||
Populate(source);
|
||||
if (restorePreviousSelection) {
|
||||
_settings->setCurrentIndex(
|
||||
_settings->findData(previousSelection));
|
||||
}
|
||||
}
|
||||
|
||||
void SourceSettingSelection::SetSetting(const SourceSetting &setting)
|
||||
void SourceSettingSelection::SetSelection(const OBSWeakSource &source,
|
||||
const SourceSetting &setting)
|
||||
{
|
||||
SetSource(source, false);
|
||||
QVariant variant;
|
||||
variant.setValue(setting);
|
||||
_settings->setCurrentIndex(_settings->findData(variant));
|
||||
@@ -281,6 +288,7 @@ void SourceSettingSelection::SelectionIdxChanged(int idx)
|
||||
|
||||
void SourceSettingSelection::Populate(const OBSWeakSource &source)
|
||||
{
|
||||
_settings->clear();
|
||||
OBSSourceAutoRelease s = obs_weak_source_get_source(source);
|
||||
auto settings = GetSoruceSettings(s);
|
||||
for (const auto &setting : settings) {
|
||||
|
||||
@@ -40,8 +40,9 @@ class SourceSettingSelection : public QWidget {
|
||||
|
||||
public:
|
||||
SourceSettingSelection(QWidget *parent = nullptr);
|
||||
void SetSource(const OBSWeakSource &);
|
||||
void SetSetting(const SourceSetting &);
|
||||
void SetSource(const OBSWeakSource &,
|
||||
bool restorePreviousSelection = true);
|
||||
void SetSelection(const OBSWeakSource &source, const SourceSetting &);
|
||||
|
||||
private slots:
|
||||
void SelectionIdxChanged(int);
|
||||
|
||||
Reference in New Issue
Block a user