Skip to content

Commit c9eed5d

Browse files
committed
Add un-/pause option to macro tab context menu
1 parent bf68213 commit c9eed5d

5 files changed

Lines changed: 69 additions & 0 deletions

File tree

data/locale/en-US.ini

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,8 @@ AdvSceneSwitcher.macroTab.expandAllGroups="Expand all Groups"
206206
AdvSceneSwitcher.macroTab.collapseAllGroups="Collapse all Groups"
207207
AdvSceneSwitcher.macroTab.rename="Rename"
208208
AdvSceneSwitcher.macroTab.remove="Remove"
209+
AdvSceneSwitcher.macroTab.pause="Pause"
210+
AdvSceneSwitcher.macroTab.unpause="Unpause"
209211
AdvSceneSwitcher.macroTab.export="Export"
210212
AdvSceneSwitcher.macroTab.export.info="Paste the string below into the import dialog to import the selected macros:"
211213
AdvSceneSwitcher.macroTab.export.usePlainText="Use plain text"

lib/advanced-scene-switcher.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,8 @@ public slots:
114114
void RenameSelectedMacro();
115115
void ExportMacros() const;
116116
void ImportMacros();
117+
void PauseSelectedMacros();
118+
void UnpauseSelectedMacros();
117119
void HighlightOnChange() const;
118120
void on_macroSettings_clicked();
119121

lib/macro/macro-tab.cpp

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -745,6 +745,17 @@ void AdvSceneSwitcher::ShowMacroContextMenu(const QPoint &pos)
745745
remove->setDisabled(ui->macros->SelectionEmpty());
746746
menu.addSeparator();
747747

748+
auto pause = menu.addAction(
749+
obs_module_text("AdvSceneSwitcher.macroTab.pause"), this,
750+
&AdvSceneSwitcher::PauseSelectedMacros);
751+
pause->setDisabled(ui->macros->SelectionEmpty());
752+
753+
auto unpause = menu.addAction(
754+
obs_module_text("AdvSceneSwitcher.macroTab.unpause"), this,
755+
&AdvSceneSwitcher::UnpauseSelectedMacros);
756+
unpause->setDisabled(ui->macros->SelectionEmpty());
757+
menu.addSeparator();
758+
748759
auto group = menu.addAction(
749760
obs_module_text("AdvSceneSwitcher.macroTab.group"), ui->macros,
750761
&MacroTree::GroupSelectedItems);
@@ -805,6 +816,48 @@ void AdvSceneSwitcher::CopyMacro()
805816
MacroSignalManager::Instance()->Add(QString::fromStdString(name));
806817
}
807818

819+
void AdvSceneSwitcher::PauseSelectedMacros()
820+
{
821+
auto selectedMacros = GetSelectedMacros();
822+
if (selectedMacros.empty()) {
823+
return;
824+
}
825+
826+
auto lock = LockContext();
827+
for (const auto &macro : selectedMacros) {
828+
if (macro->IsGroup()) {
829+
for (const auto &subitem :
830+
GetGroupMacroEntries(macro.get())) {
831+
subitem->SetPaused(true);
832+
}
833+
} else {
834+
macro->SetPaused(true);
835+
}
836+
}
837+
ui->macros->UpdateRunningStates();
838+
}
839+
840+
void AdvSceneSwitcher::UnpauseSelectedMacros()
841+
{
842+
auto selectedMacros = GetSelectedMacros();
843+
if (selectedMacros.empty()) {
844+
return;
845+
}
846+
847+
auto lock = LockContext();
848+
for (const auto &macro : selectedMacros) {
849+
if (macro->IsGroup()) {
850+
for (const auto &subitem :
851+
GetGroupMacroEntries(macro.get())) {
852+
subitem->SetPaused(false);
853+
}
854+
} else {
855+
macro->SetPaused(false);
856+
}
857+
}
858+
ui->macros->UpdateRunningStates();
859+
}
860+
808861
bool MacroTabIsInFocus()
809862
{
810863
return AdvSceneSwitcher::window &&

lib/macro/macro-tree.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -981,6 +981,17 @@ void MacroTree::UpdateWidgets(bool force)
981981
}
982982
}
983983

984+
void MacroTree::UpdateRunningStates()
985+
{
986+
MacroTreeModel *mtm = GetModel();
987+
for (int i = 0; i < (int)mtm->_macros.size(); i++) {
988+
auto widget = GetItemWidget(i);
989+
if (widget) {
990+
widget->UpdateRunning();
991+
}
992+
}
993+
}
994+
984995
static inline void MoveItem(std::deque<std::shared_ptr<Macro>> &items,
985996
std::shared_ptr<Macro> &item, int to)
986997
{

lib/macro/macro-tree.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ class MacroTree : public QListView {
145145
void ExpandGroup(std::shared_ptr<Macro> item) const;
146146
void CollapseGroup(std::shared_ptr<Macro> item) const;
147147
void RefreshFilter();
148+
void UpdateRunningStates();
148149

149150
public slots:
150151
void GroupSelectedItems();

0 commit comments

Comments
 (0)