Skip to content

Commit 373acb2

Browse files
committed
Add un-/pause option to macro tab context menu
1 parent 7be2a4f commit 373acb2

5 files changed

Lines changed: 68 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: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -743,6 +743,18 @@ void AdvSceneSwitcher::ShowMacroContextMenu(const QPoint &pos)
743743
obs_module_text("AdvSceneSwitcher.macroTab.remove"), this,
744744
&AdvSceneSwitcher::on_macroRemove_clicked);
745745
remove->setDisabled(ui->macros->SelectionEmpty());
746+
747+
menu.addSeparator();
748+
749+
auto pause = menu.addAction(
750+
obs_module_text("AdvSceneSwitcher.macroTab.pause"), this,
751+
&AdvSceneSwitcher::PauseSelectedMacros);
752+
pause->setDisabled(ui->macros->SelectionEmpty());
753+
754+
auto unpause = menu.addAction(
755+
obs_module_text("AdvSceneSwitcher.macroTab.unpause"), this,
756+
&AdvSceneSwitcher::UnpauseSelectedMacros);
757+
unpause->setDisabled(ui->macros->SelectionEmpty());
746758
menu.addSeparator();
747759

748760
auto group = menu.addAction(
@@ -805,6 +817,46 @@ void AdvSceneSwitcher::CopyMacro()
805817
MacroSignalManager::Instance()->Add(QString::fromStdString(name));
806818
}
807819

820+
void AdvSceneSwitcher::PauseSelectedMacros()
821+
{
822+
auto selectedMacros = GetSelectedMacros();
823+
if (selectedMacros.empty()) {
824+
return;
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+
auto lock = LockContext();
847+
for (const auto &macro : selectedMacros) {
848+
if (macro->IsGroup()) {
849+
for (const auto &subitem :
850+
GetGroupMacroEntries(macro.get())) {
851+
subitem->SetPaused(false);
852+
}
853+
} else {
854+
macro->SetPaused(false);
855+
}
856+
}
857+
ui->macros->UpdateRunningStates();
858+
}
859+
808860
bool MacroTabIsInFocus()
809861
{
810862
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)