From 95409dfa2676b76eb13640a65dcf6d32f01a9b7a Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Sun, 18 Jul 2021 03:08:31 +0200 Subject: [PATCH] Add option to expand or collapse all macro actions or conditions --- data/locale/en-US.ini | 2 + src/headers/advanced-scene-switcher.hpp | 10 ++- src/macro-tab.cpp | 92 +++++++++++++++++++++++-- 3 files changed, 97 insertions(+), 7 deletions(-) diff --git a/data/locale/en-US.ini b/data/locale/en-US.ini index 6b5aa6c5..341d9ba7 100644 --- a/data/locale/en-US.ini +++ b/data/locale/en-US.ini @@ -68,6 +68,8 @@ AdvSceneSwitcher.macroTab.name="Name:" AdvSceneSwitcher.macroTab.defaultname="Macro %1" AdvSceneSwitcher.macroTab.exists="Macro name exists already" AdvSceneSwitcher.macroTab.copy="Create copy" +AdvSceneSwitcher.macroTab.expandAll="Expand all" +AdvSceneSwitcher.macroTab.collapseAll="Collapse all" ; Macro Logic AdvSceneSwitcher.logic.none="Ignore entry" diff --git a/src/headers/advanced-scene-switcher.hpp b/src/headers/advanced-scene-switcher.hpp index 167d4be9..e1f1ca22 100644 --- a/src/headers/advanced-scene-switcher.hpp +++ b/src/headers/advanced-scene-switcher.hpp @@ -115,8 +115,14 @@ public slots: void on_conditionRemove_clicked(); void on_actionAdd_clicked(); void on_actionRemove_clicked(); - void showMacroContextMenu(const QPoint &); - void copyMacro(); + void ShowMacroContextMenu(const QPoint &); + void ShowMacroActionsContextMenu(const QPoint &); + void ShowMacroConditionsContextMenu(const QPoint &); + void CopyMacro(); + void ExpandAllActions(); + void ExpandAllConditions(); + void CollapseAllActions(); + void CollapseAllConditions(); void AddMacroAction(int idx); void RemoveMacroAction(int idx); void MoveMacroActionUp(int idx); diff --git a/src/macro-tab.cpp b/src/macro-tab.cpp index fc350926..6da51ee3 100644 --- a/src/macro-tab.cpp +++ b/src/macro-tab.cpp @@ -300,22 +300,52 @@ void AdvSceneSwitcher::setupMacroTab() } ui->macros->setContextMenuPolicy(Qt::CustomContextMenu); - connect(ui->macros, SIGNAL(customContextMenuRequested(QPoint)), this, - SLOT(showMacroContextMenu(QPoint))); + connect(ui->macros, &QWidget::customContextMenuRequested, this, + &AdvSceneSwitcher::ShowMacroContextMenu); + ui->macroActions->setContextMenuPolicy(Qt::CustomContextMenu); + connect(ui->macroActions, &QWidget::customContextMenuRequested, this, + &AdvSceneSwitcher::ShowMacroActionsContextMenu); + ui->macroConditions->setContextMenuPolicy(Qt::CustomContextMenu); + connect(ui->macroConditions, &QWidget::customContextMenuRequested, this, + &AdvSceneSwitcher::ShowMacroConditionsContextMenu); ui->macroEdit->setDisabled(true); } -void AdvSceneSwitcher::showMacroContextMenu(const QPoint &pos) +void AdvSceneSwitcher::ShowMacroContextMenu(const QPoint &pos) { QPoint globalPos = ui->macros->mapToGlobal(pos); QMenu myMenu; myMenu.addAction(obs_module_text("AdvSceneSwitcher.macroTab.copy"), - this, SLOT(copyMacro())); + this, &AdvSceneSwitcher::CopyMacro); myMenu.exec(globalPos); } -void AdvSceneSwitcher::copyMacro() +void AdvSceneSwitcher::ShowMacroActionsContextMenu(const QPoint &pos) +{ + QPoint globalPos = ui->macroActions->mapToGlobal(pos); + QMenu myMenu; + myMenu.addAction(obs_module_text("AdvSceneSwitcher.macroTab.expandAll"), + this, &AdvSceneSwitcher::ExpandAllActions); + myMenu.addAction( + obs_module_text("AdvSceneSwitcher.macroTab.collapseAll"), this, + &AdvSceneSwitcher::CollapseAllActions); + myMenu.exec(globalPos); +} + +void AdvSceneSwitcher::ShowMacroConditionsContextMenu(const QPoint &pos) +{ + QPoint globalPos = ui->macroConditions->mapToGlobal(pos); + QMenu myMenu; + myMenu.addAction(obs_module_text("AdvSceneSwitcher.macroTab.expandAll"), + this, &AdvSceneSwitcher::ExpandAllConditions); + myMenu.addAction( + obs_module_text("AdvSceneSwitcher.macroTab.collapseAll"), this, + &AdvSceneSwitcher::CollapseAllConditions); + myMenu.exec(globalPos); +} + +void AdvSceneSwitcher::CopyMacro() { obs_data_t *data = obs_data_create(); getSelectedMacro()->Save(data); @@ -337,3 +367,55 @@ void AdvSceneSwitcher::copyMacro() item->setCheckState(Qt::Checked); ui->macros->setCurrentItem(item); } + +void AdvSceneSwitcher::ExpandAllActions() +{ + auto m = getSelectedMacro(); + if (!m) { + return; + } + + for (auto &a : m->Actions()) { + a->SetCollapsed(false); + } + SetEditMacro(*m); +} + +void AdvSceneSwitcher::ExpandAllConditions() +{ + auto m = getSelectedMacro(); + if (!m) { + return; + } + + for (auto &c : m->Conditions()) { + c->SetCollapsed(false); + } + SetEditMacro(*m); +} + +void AdvSceneSwitcher::CollapseAllActions() +{ + auto m = getSelectedMacro(); + if (!m) { + return; + } + + for (auto &a : m->Actions()) { + a->SetCollapsed(true); + } + SetEditMacro(*m); +} + +void AdvSceneSwitcher::CollapseAllConditions() +{ + auto m = getSelectedMacro(); + if (!m) { + return; + } + + for (auto &c : m->Conditions()) { + c->SetCollapsed(true); + } + SetEditMacro(*m); +}