Add option to remove Run or Pause button from macro dock

This commit is contained in:
WarmUpTill 2023-03-25 00:04:44 +01:00 committed by WarmUpTill
parent e194fc5ee4
commit f3416c5b1d
7 changed files with 78 additions and 6 deletions

View File

@ -102,6 +102,8 @@ AdvSceneSwitcher.macroTab.highlightPerformedActions="Highlight recently performe
AdvSceneSwitcher.macroTab.newMacroRegisterHotkey="Register hotkeys to control the pause state of new macros"
AdvSceneSwitcher.macroTab.currentDisableHotkeys="Register hotkeys to control the pause state of selected macro"
AdvSceneSwitcher.macroTab.currentRegisterDock="Register dock widget to control the pause state of selected macro or run it manually"
AdvSceneSwitcher.macroTab.currentDockAddRunButton="Add button to run the macro"
AdvSceneSwitcher.macroTab.currentDockAddPauseButton="Add button to pause or unpause the macro"
AdvSceneSwitcher.macroDock.pause="Pause"
AdvSceneSwitcher.macroDock.unpause="Unpause"

View File

@ -14,6 +14,8 @@ MacroDock::MacroDock(Macro *m, QWidget *parent)
{
if (_macro) {
setWindowTitle(QString::fromStdString(_macro->Name()));
_run->setVisible(_macro->DockHasRunButton());
_pauseToggle->setVisible(_macro->DockHasPauseButton());
} else {
setWindowTitle("<deleted macro>");
}
@ -49,6 +51,16 @@ void MacroDock::SetName(const QString &name)
setWindowTitle(name);
}
void MacroDock::ShowRunButton(bool value)
{
_run->setVisible(value);
}
void MacroDock::ShowPauseButton(bool value)
{
_pauseToggle->setVisible(value);
}
void MacroDock::RunClicked()
{
if (!_macro) {

View File

@ -13,6 +13,8 @@ class MacroDock : public OBSDock {
public:
MacroDock(Macro *, QWidget *parent);
void SetName(const QString &);
void ShowRunButton(bool);
void ShowPauseButton(bool);
private slots:
void RunClicked();

View File

@ -43,7 +43,11 @@ MacroPropertiesDialog::MacroPropertiesDialog(QWidget *parent,
_currentMacroRegisterHotkeys(new QCheckBox(obs_module_text(
"AdvSceneSwitcher.macroTab.currentDisableHotkeys"))),
_currentMacroRegisterDock(new QCheckBox(obs_module_text(
"AdvSceneSwitcher.macroTab.currentRegisterDock")))
"AdvSceneSwitcher.macroTab.currentRegisterDock"))),
_currentMacroDockAddRunButton(new QCheckBox(obs_module_text(
"AdvSceneSwitcher.macroTab.currentDockAddRunButton"))),
_currentMacroDockAddPauseButton(new QCheckBox(obs_module_text(
"AdvSceneSwitcher.macroTab.currentDockAddPauseButton")))
{
setModal(true);
setWindowModality(Qt::WindowModality::WindowModal);
@ -70,6 +74,8 @@ MacroPropertiesDialog::MacroPropertiesDialog(QWidget *parent,
obs_module_text("AdvSceneSwitcher.macroTab.dockSettings"));
QVBoxLayout *dockLayout = new QVBoxLayout;
dockLayout->addWidget(_currentMacroRegisterDock);
dockLayout->addWidget(_currentMacroDockAddRunButton);
dockLayout->addWidget(_currentMacroDockAddPauseButton);
dockOptions->setLayout(dockLayout);
QDialogButtonBox *buttonbox = new QDialogButtonBox(
@ -78,6 +84,9 @@ MacroPropertiesDialog::MacroPropertiesDialog(QWidget *parent,
connect(buttonbox, &QDialogButtonBox::accepted, this, &QDialog::accept);
connect(buttonbox, &QDialogButtonBox::rejected, this, &QDialog::reject);
connect(_currentMacroRegisterDock, &QCheckBox::stateChanged, this,
&MacroPropertiesDialog::DockEnableChanged);
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(highlightOptions);
layout->addWidget(hotkeyOptions);
@ -89,14 +98,25 @@ MacroPropertiesDialog::MacroPropertiesDialog(QWidget *parent,
_conditions->setChecked(prop._highlightConditions);
_actions->setChecked(prop._highlightActions);
_newMacroRegisterHotkeys->setChecked(prop._newMacroRegisterHotkeys);
if (macro && !macro->IsGroup()) {
_currentMacroRegisterHotkeys->setChecked(
macro->PauseHotkeysEnabled());
_currentMacroRegisterDock->setChecked(macro->DockEnabled());
} else {
if (!macro || macro->IsGroup()) {
hotkeyOptions->hide();
dockOptions->hide();
return;
}
_currentMacroRegisterHotkeys->setChecked(macro->PauseHotkeysEnabled());
const bool dockEnabled = macro->DockEnabled();
_currentMacroRegisterDock->setChecked(dockEnabled);
_currentMacroDockAddRunButton->setChecked(macro->DockHasRunButton());
_currentMacroDockAddPauseButton->setChecked(
macro->DockHasPauseButton());
_currentMacroDockAddRunButton->setVisible(dockEnabled);
_currentMacroDockAddPauseButton->setVisible(dockEnabled);
}
void MacroPropertiesDialog::DockEnableChanged(int enabled)
{
_currentMacroDockAddRunButton->setVisible(enabled);
_currentMacroDockAddPauseButton->setVisible(enabled);
}
bool MacroPropertiesDialog::AskForSettings(QWidget *parent,
@ -120,5 +140,9 @@ bool MacroPropertiesDialog::AskForSettings(QWidget *parent,
macro->EnablePauseHotkeys(
dialog._currentMacroRegisterHotkeys->isChecked());
macro->EnableDock(dialog._currentMacroRegisterDock->isChecked());
macro->SetDockHasRunButton(
dialog._currentMacroDockAddRunButton->isChecked());
macro->SetDockHasPauseButton(
dialog._currentMacroDockAddPauseButton->isChecked());
return true;
}

View File

@ -26,6 +26,8 @@ public:
Macro *macro);
static bool AskForSettings(QWidget *parent, MacroProperties &userInput,
Macro *macro);
private slots:
void DockEnableChanged(int);
private:
QCheckBox *_executed;
@ -35,4 +37,6 @@ private:
// Current macro specific settings
QCheckBox *_currentMacroRegisterHotkeys;
QCheckBox *_currentMacroRegisterDock;
QCheckBox *_currentMacroDockAddRunButton;
QCheckBox *_currentMacroDockAddPauseButton;
};

View File

@ -346,6 +346,8 @@ bool Macro::Save(obs_data_t *obj) const
if (_registerDock) {
SetDockWidgetName();
}
obs_data_set_bool(obj, "dockHasRunButton", _dockHasRunButton);
obs_data_set_bool(obj, "dockHasPauseButton", _dockHasPauseButton);
obs_data_set_bool(obj, "registerHotkeys", _registerHotkeys);
obs_data_array_t *pauseHotkey = obs_hotkey_save(_pauseHotkey);
@ -436,6 +438,8 @@ bool Macro::Load(obs_data_t *obj)
return true;
}
_dockHasRunButton = obs_data_get_bool(obj, "dockHasRunButton");
_dockHasPauseButton = obs_data_get_bool(obj, "dockHasPauseButton");
EnableDock(obs_data_get_bool(obj, "registerDock"));
obs_data_set_default_bool(obj, "registerHotkeys", true);
@ -598,6 +602,24 @@ void Macro::EnableDock(bool value)
_registerDock = value;
}
void Macro::SetDockHasRunButton(bool value)
{
_dockHasRunButton = value;
if (!_dock) {
return;
}
_dock->ShowRunButton(value);
}
void Macro::SetDockHasPauseButton(bool value)
{
_dockHasPauseButton = value;
if (!_dock) {
return;
}
_dock->ShowPauseButton(value);
}
void Macro::RemoveDock()
{
if (_dock) {

View File

@ -82,6 +82,10 @@ public:
void EnableDock(bool);
bool DockEnabled() { return _registerDock; }
void SetDockHasRunButton(bool value);
bool DockHasRunButton() { return _dockHasRunButton; }
void SetDockHasPauseButton(bool value);
bool DockHasPauseButton() { return _dockHasPauseButton; }
void ResetTimers();
@ -119,6 +123,8 @@ private:
bool _wasExecutedRecently = false;
bool _onChangeTriggered = false;
bool _registerDock = false;
bool _dockHasRunButton = true;
bool _dockHasPauseButton = true;
MacroDock *_dock = nullptr;
QAction *_dockAction = nullptr;