Refactor macro signal handling
Some checks failed
debian-build / build (push) Has been cancelled
Check locale / ubuntu64 (push) Has been cancelled
Push to master / Check Formatting 🔍 (push) Has been cancelled
Push to master / Build Project 🧱 (push) Has been cancelled
Push to master / Create Release 🛫 (push) Has been cancelled

Also drop support for scene group signals in macro, which hopefully
aren't used much anymore
This commit is contained in:
WarmUpTill 2025-10-19 13:27:30 +02:00 committed by WarmUpTill
parent a82662c8f4
commit 5d6a693f36
18 changed files with 101 additions and 92 deletions

View File

@ -154,6 +154,8 @@ target_sources(
lib/macro/macro-selection.hpp
lib/macro/macro-settings.cpp
lib/macro/macro-settings.hpp
lib/macro/macro-signals.cpp
lib/macro/macro-signals.hpp
lib/macro/macro-tab.cpp
lib/macro/macro-tree.cpp
lib/macro/macro-tree.hpp

View File

@ -118,17 +118,6 @@ public slots:
void HighlightOnChange() const;
void on_macroSettings_clicked();
signals:
void MacroAdded(const QString &name);
void MacroRemoved(const QString &name);
void MacroRenamed(const QString &oldName, const QString &newName);
void MacroSegmentOrderChanged();
void HighlightMacrosChanged(bool value);
void ConnectionAdded(const QString &);
void ConnectionRenamed(const QString &oldName, const QString &newName);
void ConnectionRemoved(const QString &);
private:
bool ResolveMacroImportNameConflict(std::shared_ptr<Macro> &);

View File

@ -1,9 +1,9 @@
#include "macro-action-variable.hpp"
#include "advanced-scene-switcher.hpp"
#include "json-helpers.hpp"
#include "layout-helpers.hpp"
#include "math-helpers.hpp"
#include "macro-condition-edit.hpp"
#include "macro-signals.hpp"
#include "math-helpers.hpp"
#include "macro.hpp"
#include "non-modal-dialog.hpp"
#include "source-helpers.hpp"
@ -884,8 +884,8 @@ MacroActionVariableEdit::MacroActionVariableEdit(
QWidget::connect(_segmentIdx,
SIGNAL(SelectionChanged(const IntVariable &)), this,
SLOT(SegmentIndexChanged(const IntVariable &)));
QWidget::connect(GetSettingsWindow(),
SIGNAL(MacroSegmentOrderChanged()), this,
QWidget::connect(MacroSignalManager::Instance(),
SIGNAL(SegmentOrderChanged()), this,
SLOT(MacroSegmentOrderChanged()));
QWidget::connect(
_subStringStart,

View File

@ -1,6 +1,7 @@
#include "macro-condition-macro.hpp"
#include "layout-helpers.hpp"
#include "macro-action-edit.hpp"
#include "macro-signals.hpp"
#include "macro.hpp"
namespace advss {
@ -321,7 +322,8 @@ MacroConditionMacroEdit::MacroConditionMacroEdit(
QWidget::connect(_macros, SIGNAL(currentTextChanged(const QString &)),
this, SLOT(MacroChanged(const QString &)));
QWidget::connect(parent, SIGNAL(MacroRemoved(const QString &)), this,
QWidget::connect(MacroSignalManager::Instance(),
SIGNAL(Remove(const QString &)), this,
SLOT(MacroRemove(const QString &)));
QWidget::connect(_types, SIGNAL(currentIndexChanged(int)), this,
SLOT(TypeChanged(int)));

View File

@ -7,6 +7,7 @@
#include "macro-segment-copy-paste.hpp"
#include "macro-segment-list.hpp"
#include "macro-settings.hpp"
#include "macro-signals.hpp"
#include "math-helpers.hpp"
#include "name-dialog.hpp"
#include "path-helpers.hpp"
@ -108,6 +109,16 @@ MacroEdit::MacroEdit(QWidget *parent, QStringList helpMsg)
connect(ui->conditionsList, &QWidget::customContextMenuRequested, this,
&MacroEdit::ShowMacroConditionsContextMenu);
connect(this, &MacroEdit::MacroAdded, MacroSignalManager::Instance(),
&MacroSignalManager::Add);
connect(this, &MacroEdit::MacroRemoved, MacroSignalManager::Instance(),
&MacroSignalManager::Remove);
connect(this, &MacroEdit::MacroRenamed, MacroSignalManager::Instance(),
&MacroSignalManager::Rename);
connect(this, &MacroEdit::MacroSegmentOrderChanged,
MacroSignalManager::Instance(),
&MacroSignalManager::SegmentOrderChanged);
// Set action and condition toolbars
const std::string pathPrefix =
GetDataFilePath("res/images/" + GetThemeTypeName());

View File

@ -1,6 +1,7 @@
#include "macro-list.hpp"
#include "macro-helpers.hpp"
#include "macro-selection.hpp"
#include "macro-signals.hpp"
#include "obs-module-helper.hpp"
#include "ui-helpers.hpp"
@ -10,12 +11,11 @@ MacroList::MacroList(QWidget *parent, bool allowDuplicates, bool reorder)
: ListEditor(parent, reorder),
_allowDuplicates(allowDuplicates)
{
QWidget::connect(GetSettingsWindow(),
SIGNAL(MacroRenamed(const QString &, const QString &)),
this,
QWidget::connect(MacroSignalManager::Instance(),
SIGNAL(Rename(const QString &, const QString &)), this,
SLOT(MacroRename(const QString &, const QString &)));
QWidget::connect(GetSettingsWindow(),
SIGNAL(MacroRemoved(const QString &)), this,
QWidget::connect(MacroSignalManager::Instance(),
SIGNAL(Remove(const QString &)), this,
SLOT(MacroRemove(const QString &)));
UpdateListSize();
}

View File

@ -4,6 +4,7 @@
#include "macro-condition-factory.hpp"
#include "macro-helpers.hpp"
#include "macro-segment.hpp"
#include "macro-signals.hpp"
#include "obs-module-helper.hpp"
#include "plugin-state-helpers.hpp"
#include "ui-helpers.hpp"
@ -31,8 +32,8 @@ MacroSegmentSelection::MacroSegmentSelection(QWidget *parent, Type type,
_index,
SIGNAL(NumberVariableChanged(const NumberVariable<int> &)),
this, SLOT(IndexChanged(const NumberVariable<int> &)));
QWidget::connect(GetSettingsWindow(),
SIGNAL(MacroSegmentOrderChanged()), this,
QWidget::connect(MacroSignalManager::Instance(),
SIGNAL(SegmentOrderChanged()), this,
SLOT(MacroSegmentOrderChanged()));
auto layout = new QHBoxLayout;

View File

@ -256,28 +256,6 @@ MacroSegmentEdit::MacroSegmentEdit(QWidget *parent)
QWidget::connect(_section, &Section::Collapsed, this,
&MacroSegmentEdit::Collapsed);
// Macro signals
QWidget::connect(GetSettingsWindow(),
SIGNAL(MacroAdded(const QString &)), this,
SIGNAL(MacroAdded(const QString &)));
QWidget::connect(GetSettingsWindow(),
SIGNAL(MacroRemoved(const QString &)), this,
SIGNAL(MacroRemoved(const QString &)));
QWidget::connect(
GetSettingsWindow(),
SIGNAL(MacroRenamed(const QString &, const QString &)), this,
SIGNAL(MacroRenamed(const QString &, const QString &)));
// Scene group signals
QWidget::connect(GetSettingsWindow(),
SIGNAL(SceneGroupAdded(const QString &)), this,
SIGNAL(SceneGroupAdded(const QString &)));
QWidget::connect(GetSettingsWindow(),
SIGNAL(SceneGroupRemoved(const QString &)), this,
SIGNAL(SceneGroupRemoved(const QString &)));
QWidget::connect(
GetSettingsWindow(),
SIGNAL(SceneGroupRenamed(const QString &, const QString)), this,
SIGNAL(SceneGroupRenamed(const QString &, const QString)));
auto frameLayout = new QGridLayout;
frameLayout->setContentsMargins(0, 0, 0, 0);

View File

@ -113,13 +113,6 @@ public slots:
protected slots:
void Collapsed(bool) const;
signals:
void MacroAdded(const QString &name);
void MacroRemoved(const QString &name);
void MacroRenamed(const QString &oldName, const QString &newName);
void SceneGroupAdded(const QString &name);
void SceneGroupRemoved(const QString &name);
void SceneGroupRenamed(const QString &oldName, const QString newName);
protected:
void SetDisableEffect(bool);

View File

@ -2,6 +2,7 @@
#include "advanced-scene-switcher.hpp"
#include "layout-helpers.hpp"
#include "macro.hpp"
#include "macro-signals.hpp"
#include "ui-helpers.hpp"
#include <QDialogButtonBox>
@ -20,15 +21,14 @@ MacroSelection::MacroSelection(QWidget *parent)
addItem(QString::fromStdString(m->Name()));
}
QWidget::connect(GetSettingsWindow(),
SIGNAL(MacroAdded(const QString &)), this,
QWidget::connect(MacroSignalManager::Instance(),
SIGNAL(Add(const QString &)), this,
SLOT(MacroAdd(const QString &)));
QWidget::connect(GetSettingsWindow(),
SIGNAL(MacroRemoved(const QString &)), this,
QWidget::connect(MacroSignalManager::Instance(),
SIGNAL(Remove(const QString &)), this,
SLOT(MacroRemove(const QString &)));
QWidget::connect(GetSettingsWindow(),
SIGNAL(MacroRenamed(const QString &, const QString &)),
this,
QWidget::connect(MacroSignalManager::Instance(),
SIGNAL(Rename(const QString &, const QString &)), this,
SLOT(MacroRename(const QString &, const QString &)));
}

View File

@ -0,0 +1,13 @@
#include "macro-signals.hpp"
namespace advss {
MacroSignalManager::MacroSignalManager(QObject *parent) : QObject(parent) {}
MacroSignalManager *MacroSignalManager::Instance()
{
static MacroSignalManager manager;
return &manager;
}
} // namespace advss

View File

@ -0,0 +1,26 @@
#pragma once
#include "export-symbol-helper.hpp"
#include <QObject>
#include <QString>
namespace advss {
class ADVSS_EXPORT MacroSignalManager : public QObject {
Q_OBJECT
public:
static MacroSignalManager *Instance();
signals:
void Rename(const QString &, const QString &);
void Add(const QString &);
void Remove(const QString &);
void SegmentOrderChanged();
void HighlightChanged(bool value);
private:
MacroSignalManager(QObject *parent = nullptr);
};
} // namespace advss

View File

@ -4,6 +4,7 @@
#include "macro-condition-edit.hpp"
#include "macro-export-import-dialog.hpp"
#include "macro-settings.hpp"
#include "macro-signals.hpp"
#include "macro-tree.hpp"
#include "macro.hpp"
#include "math-helpers.hpp"
@ -115,7 +116,8 @@ void AdvSceneSwitcher::on_macroAdd_clicked()
auto selectedMacro = GetSelectedMacro();
if (!selectedMacro) {
ui->macros->Add(newMacro);
emit MacroAdded(QString::fromStdString(name));
MacroSignalManager::Instance()->Add(
QString::fromStdString(name));
return;
}
@ -123,20 +125,22 @@ void AdvSceneSwitcher::on_macroAdd_clicked()
ui->macros->ExpandGroup(selectedMacro);
Macro::PrepareMoveToGroup(selectedMacro, newMacro);
ui->macros->AddToGroup(newMacro, selectedMacro);
emit MacroAdded(QString::fromStdString(name));
MacroSignalManager::Instance()->Add(
QString::fromStdString(name));
return;
}
auto selectedMacroGroup = selectedMacro->Parent();
if (!selectedMacroGroup) {
ui->macros->Add(newMacro, selectedMacro);
emit MacroAdded(QString::fromStdString(name));
MacroSignalManager::Instance()->Add(
QString::fromStdString(name));
return;
}
Macro::PrepareMoveToGroup(selectedMacroGroup, newMacro);
ui->macros->Add(newMacro, selectedMacro);
emit MacroAdded(QString::fromStdString(name));
MacroSignalManager::Instance()->Add(QString::fromStdString(name));
}
static void addGroupSubitems(std::vector<std::shared_ptr<Macro>> &macros,
@ -205,7 +209,7 @@ void AdvSceneSwitcher::RemoveMacro(std::shared_ptr<Macro> &macro)
ui->macros->Remove(macro);
MacroSegmentList::SetCachingEnabled(!switcher->disableMacroWidgetCache);
emit MacroRemoved(name);
MacroSignalManager::Instance()->Remove(name);
}
void AdvSceneSwitcher::RemoveSelectedMacros()
@ -251,7 +255,8 @@ void AdvSceneSwitcher::RenameMacro(std::shared_ptr<Macro> &macro,
auto lock = LockContext();
macro->SetName(name.toStdString());
}
emit MacroRenamed(oldName, name);
MacroSignalManager::Instance()->Rename(oldName, name);
}
void AdvSceneSwitcher::on_macroRemove_clicked()
@ -568,7 +573,8 @@ void AdvSceneSwitcher::on_macroSettings_clicked()
}
GetGlobalMacroSettings() = prop;
emit HighlightMacrosChanged(prop._highlightExecuted);
MacroSignalManager::Instance()->HighlightChanged(
prop._highlightExecuted);
// Reset highlights to avoid all macro segments being highlighted, which
// would have been highlighted at least once since the moment the
@ -751,7 +757,7 @@ void AdvSceneSwitcher::CopyMacro()
ui->macros->Add(newMacro, macro);
disableAddButtonHighlight();
emit MacroAdded(QString::fromStdString(name));
MacroSignalManager::Instance()->Add(QString::fromStdString(name));
}
bool MacroTabIsInFocus()

View File

@ -1,5 +1,6 @@
#include "macro-tree.hpp"
#include "macro.hpp"
#include "macro-signals.hpp"
#include "path-helpers.hpp"
#include "sync-helpers.hpp"
#include "ui-helpers.hpp"
@ -79,10 +80,10 @@ MacroTreeItem::MacroTreeItem(MacroTree *tree, std::shared_ptr<Macro> macroItem,
_macro->SetPaused(!val);
};
connect(_running, &QAbstractButton::clicked, setRunning);
connect(_tree->window(), SIGNAL(HighlightMacrosChanged(bool)), this,
SLOT(EnableHighlight(bool)));
connect(_tree->window(),
SIGNAL(MacroRenamed(const QString &, const QString &)), this,
connect(MacroSignalManager::Instance(), SIGNAL(HighlightChanged(bool)),
this, SLOT(EnableHighlight(bool)));
connect(MacroSignalManager::Instance(),
SIGNAL(Rename(const QString &, const QString &)), this,
SLOT(MacroRenamed(const QString &, const QString &)));
connect(&_timer, SIGNAL(timeout()), this, SLOT(HighlightIfExecuted()));
connect(&_timer, SIGNAL(timeout()), this, SLOT(UpdatePaused()));

View File

@ -1,6 +1,6 @@
#include "plugin-state-helpers.hpp"
#include "advanced-scene-switcher.hpp"
#include "macro-settings.hpp"
#include "macro-signals.hpp"
#include "switcher-data.hpp"
namespace advss {
@ -294,7 +294,7 @@ void SetMacroHighlightingEnabled(bool enable)
if (!SettingsWindowIsOpened()) {
return;
}
AdvSceneSwitcher::window->HighlightMacrosChanged(
MacroSignalManager::Instance()->HighlightChanged(
GetGlobalMacroSettings()._highlightExecuted);
},
nullptr, false);

View File

@ -399,22 +399,6 @@ SceneSelectionWidget::SceneSelectionWidget(QWidget *parent, bool variables,
QWidget::connect(_canvas, SIGNAL(CanvasChanged(const OBSWeakCanvas &)),
this, SIGNAL(CanvasChanged(const OBSWeakCanvas &)));
auto settingsWindow = GetSettingsWindow();
if (settingsWindow) {
QWidget::connect(settingsWindow,
SIGNAL(SceneGroupAdded(const QString &)), this,
SLOT(ItemAdd(const QString &)));
QWidget::connect(settingsWindow,
SIGNAL(SceneGroupRemoved(const QString &)),
this, SLOT(ItemRemove(const QString &)));
QWidget::connect(
settingsWindow,
SIGNAL(SceneGroupRenamed(const QString &,
const QString &)),
this,
SLOT(ItemRename(const QString &, const QString &)));
}
// Variables
QWidget::connect(VariableSignalManager::Instance(),
SIGNAL(Add(const QString &)), this,

View File

@ -1,6 +1,7 @@
#include "macro-action-random.hpp"
#include "layout-helpers.hpp"
#include "macro-helpers.hpp"
#include "macro-signals.hpp"
#include "ui-helpers.hpp"
#include <cstdlib>
@ -106,8 +107,8 @@ MacroActionRandomEdit::MacroActionRandomEdit(
QWidget::connect(_list, SIGNAL(Removed(int)), this, SLOT(Remove(int)));
QWidget::connect(_list, SIGNAL(Replaced(int, const std::string &)),
this, SLOT(Replace(int, const std::string &)));
QWidget::connect(GetSettingsWindow(),
SIGNAL(MacroRemoved(const QString &)), this,
QWidget::connect(MacroSignalManager::Instance(),
SIGNAL(Remove(const QString &)), this,
SLOT(MacroRemove(const QString &)));
QWidget::connect(_allowRepeat, SIGNAL(stateChanged(int)), this,
SLOT(AllowRepeatChanged(int)));

View File

@ -1,6 +1,7 @@
#include "macro-action-sequence.hpp"
#include "layout-helpers.hpp"
#include "macro-helpers.hpp"
#include "macro-signals.hpp"
namespace advss {
@ -212,7 +213,8 @@ MacroActionSequenceEdit::MacroActionSequenceEdit(
SLOT(ContinueFromClicked()));
QWidget::connect(_restart, SIGNAL(stateChanged(int)), this,
SLOT(RestartChanged(int)));
QWidget::connect(this, SIGNAL(MacroRemoved(const QString &)), this,
QWidget::connect(MacroSignalManager::Instance(),
SIGNAL(Remove(const QString &)), this,
SLOT(MacroRemove(const QString &)));
QWidget::connect(_actions, SIGNAL(currentIndexChanged(int)), this,
SLOT(ActionChanged(int)));