Add option to disable saving when switching macros

This commit is contained in:
WarmUpTill
2024-09-13 19:55:52 +02:00
committed by WarmUpTill
parent faa65facfe
commit f5eadfa39c
4 changed files with 30 additions and 2 deletions

View File

@@ -198,6 +198,8 @@ AdvSceneSwitcher.macroTab.highlightTrueConditions="Highlight conditions of curre
AdvSceneSwitcher.macroTab.highlightPerformedActions="Highlight recently performed actions of currently selected macro"
AdvSceneSwitcher.macroTab.newMacroRegisterHotkey="Register hotkeys to control the pause state of new macros"
AdvSceneSwitcher.macroTab.newMacroUseShortCircuitEvaluation="Enable short circuit evaluation of macro conditions for new macros"
AdvSceneSwitcher.macroTab.saveSettingsOnMacroChange="Save settings when selecting a new macro"
AdvSceneSwitcher.macroTab.saveSettingsOnMacroChange.tooltip="Saving the settings can be an expensive operation if you are working with a very large scene collection.\nIn this case, it might make sense to disable this option."
AdvSceneSwitcher.macroTab.currentRegisterHotkeys="Register hotkeys to control the pause state of selected macro"
AdvSceneSwitcher.macroTab.currentUseShortCircuitEvaluation="Enable short circuit evaluation of macro conditions for currently selected macro"
AdvSceneSwitcher.macroTab.shortCircuit.tooltip="Enabling short circuit evaluation might improve the performance, as some condition checks are skipped, if the overall macro cannot be evaluated to \"true\" anymore.\nHowever, please note that condition checks, which are skipped over, will also not update their duration modifier checks."

View File

@@ -23,6 +23,8 @@ void GlobalMacroSettings::Save(obs_data_t *obj) const
_newMacroRegisterHotkeys);
obs_data_set_bool(data, "newMacroUseShortCircuitEvaluation",
_newMacroUseShortCircuitEvaluation);
obs_data_set_bool(data, "saveSettingsOnMacroChange",
_saveSettingsOnMacroChange);
obs_data_set_obj(obj, "macroSettings", data);
obs_data_release(data);
}
@@ -43,6 +45,10 @@ void GlobalMacroSettings::Load(obs_data_t *obj)
obs_data_get_bool(data, "newMacroRegisterHotkey");
_newMacroUseShortCircuitEvaluation =
obs_data_get_bool(data, "newMacroUseShortCircuitEvaluation");
_saveSettingsOnMacroChange =
obs_data_has_user_value(data, "saveSettingsOnMacroChange")
? obs_data_get_bool(data, "saveSettingsOnMacroChange")
: true;
obs_data_release(data);
}
@@ -60,6 +66,8 @@ MacroSettingsDialog::MacroSettingsDialog(QWidget *parent,
"AdvSceneSwitcher.macroTab.newMacroRegisterHotkey"))),
_newMacroUseShortCircuitEvaluation(new QCheckBox(obs_module_text(
"AdvSceneSwitcher.macroTab.newMacroUseShortCircuitEvaluation"))),
_saveSettingsOnMacroChange(new QCheckBox(obs_module_text(
"AdvSceneSwitcher.macroTab.saveSettingsOnMacroChange"))),
_currentMacroRegisterHotkeys(new QCheckBox(obs_module_text(
"AdvSceneSwitcher.macroTab.currentRegisterHotkeys"))),
_currentUseShortCircuitEvaluation(new QCheckBox(obs_module_text(
@@ -100,6 +108,8 @@ MacroSettingsDialog::MacroSettingsDialog(QWidget *parent,
_newMacroUseShortCircuitEvaluation->setToolTip(obs_module_text(
"AdvSceneSwitcher.macroTab.shortCircuit.tooltip"));
_saveSettingsOnMacroChange->setToolTip(obs_module_text(
"AdvSceneSwitcher.macroTab.saveSettingsOnMacroChange.tooltip"));
_currentUseShortCircuitEvaluation->setToolTip(obs_module_text(
"AdvSceneSwitcher.macroTab.shortCircuit.tooltip"));
@@ -121,6 +131,7 @@ MacroSettingsDialog::MacroSettingsDialog(QWidget *parent,
auto generalOptions = new QGroupBox(
obs_module_text("AdvSceneSwitcher.macroTab.generalSettings"));
auto generalLayout = new QVBoxLayout;
generalLayout->addWidget(_saveSettingsOnMacroChange);
generalLayout->addWidget(_currentSkipOnStartup);
generalLayout->addWidget(_currentStopActionsIfNotDone);
generalLayout->addWidget(_currentUseShortCircuitEvaluation);
@@ -244,10 +255,18 @@ MacroSettingsDialog::MacroSettingsDialog(QWidget *parent,
_newMacroRegisterHotkeys->setChecked(settings._newMacroRegisterHotkeys);
_newMacroUseShortCircuitEvaluation->setChecked(
settings._newMacroUseShortCircuitEvaluation);
_saveSettingsOnMacroChange->setChecked(
settings._saveSettingsOnMacroChange);
if (!macro || macro->IsGroup()) {
hotkeyOptions->hide();
generalOptions->hide();
// General group
_currentSkipOnStartup->hide();
_currentStopActionsIfNotDone->hide();
_currentUseShortCircuitEvaluation->hide();
SetLayoutVisible(customConditionIntervalLayout, false);
inputOptions->hide();
_dockOptions->hide();
return;
@@ -391,6 +410,8 @@ bool MacroSettingsDialog::AskForSettings(QWidget *parent,
dialog._newMacroRegisterHotkeys->isChecked();
userInput._newMacroUseShortCircuitEvaluation =
dialog._newMacroUseShortCircuitEvaluation->isChecked();
userInput._saveSettingsOnMacroChange =
dialog._saveSettingsOnMacroChange->isChecked();
if (!macro) {
return true;
}

View File

@@ -25,6 +25,7 @@ public:
bool _highlightActions = false;
bool _newMacroRegisterHotkeys = true;
bool _newMacroUseShortCircuitEvaluation = false;
bool _saveSettingsOnMacroChange = true;
};
// Dialog for configuring global and individual macro specific settings
@@ -53,6 +54,7 @@ private:
QCheckBox *_highlightActions;
QCheckBox *_newMacroRegisterHotkeys;
QCheckBox *_newMacroUseShortCircuitEvaluation;
QCheckBox *_saveSettingsOnMacroChange;
// Current macro specific settings
QCheckBox *_currentMacroRegisterHotkeys;
QCheckBox *_currentUseShortCircuitEvaluation;

View File

@@ -742,7 +742,10 @@ void AdvSceneSwitcher::MacroSelectionChanged()
return;
}
SetEditMacro(*macro);
obs_frontend_save();
if (GetGlobalMacroSettings()._saveSettingsOnMacroChange) {
obs_frontend_save();
}
}
void AdvSceneSwitcher::HighlightOnChange()