Clean up variable signal handling

This commit is contained in:
WarmUpTill 2024-01-27 22:55:05 +01:00 committed by WarmUpTill
parent 8f77b6cbd7
commit e36e4f61da
7 changed files with 74 additions and 54 deletions

View File

@ -193,9 +193,6 @@ signals:
void ConnectionAdded(const QString &);
void ConnectionRenamed(const QString &oldName, const QString &newName);
void ConnectionRemoved(const QString &);
void VariableAdded(const QString &);
void VariableRenamed(const QString &oldName, const QString &newName);
void VariableRemoved(const QString &);
private:
enum class MacroSection { CONDITIONS, ACTIONS, ELSE_ACTIONS };

View File

@ -318,14 +318,15 @@ SceneSelectionWidget::SceneSelectionWidget(QWidget *parent, bool variables,
this, SLOT(ItemRename(const QString &, const QString &)));
// Variables
QWidget::connect(window(), SIGNAL(VariableAdded(const QString &)), this,
QWidget::connect(VariableSignalManager::Instance(),
SIGNAL(Add(const QString &)), this,
SLOT(ItemAdd(const QString &)));
QWidget::connect(window(), SIGNAL(VariableRemoved(const QString &)),
this, SLOT(ItemRemove(const QString &)));
QWidget::connect(
window(),
SIGNAL(VariableRenamed(const QString &, const QString &)), this,
SLOT(ItemRename(const QString &, const QString &)));
QWidget::connect(VariableSignalManager::Instance(),
SIGNAL(Remove(const QString &)), this,
SLOT(ItemRemove(const QString &)));
QWidget::connect(VariableSignalManager::Instance(),
SIGNAL(Rename(const QString &, const QString &)), this,
SLOT(ItemRename(const QString &, const QString &)));
}
void SceneSelectionWidget::SetScene(const SceneSelection &s)

View File

@ -182,14 +182,15 @@ SourceSelectionWidget::SourceSelectionWidget(QWidget *parent,
SLOT(SelectionChanged(int)));
// Variables
QWidget::connect(window(), SIGNAL(VariableAdded(const QString &)), this,
QWidget::connect(VariableSignalManager::Instance(),
SIGNAL(Add(const QString &)), this,
SLOT(ItemAdd(const QString &)));
QWidget::connect(window(), SIGNAL(VariableRemoved(const QString &)),
this, SLOT(ItemRemove(const QString &)));
QWidget::connect(
window(),
SIGNAL(VariableRenamed(const QString &, const QString &)), this,
SLOT(ItemRename(const QString &, const QString &)));
QWidget::connect(VariableSignalManager::Instance(),
SIGNAL(Remove(const QString &)), this,
SLOT(ItemRemove(const QString &)));
QWidget::connect(VariableSignalManager::Instance(),
SIGNAL(Rename(const QString &, const QString &)), this,
SLOT(ItemRename(const QString &, const QString &)));
}
void SourceSelectionWidget::SetSource(const SourceSelection &s)

View File

@ -27,21 +27,16 @@ GenericVaraiableSpinbox::GenericVaraiableSpinbox(QWidget *parent,
QWidget::connect(_variable, SIGNAL(SelectionChanged(const QString &)),
this, SLOT(VariableChanged(const QString &)));
// Forward signals for variable selection
if (window() != this) {
QWidget::connect(window(),
SIGNAL(VariableRenamed(const QString &,
const QString &)),
this,
SIGNAL(VariableRenamed(const QString &,
const QString &)));
QWidget::connect(window(),
SIGNAL(VariableAdded(const QString &)), this,
SIGNAL(VariableAdded(const QString &)));
QWidget::connect(window(),
SIGNAL(VariableRemoved(const QString &)), this,
SIGNAL(VariableRemoved(const QString &)));
}
QWidget::connect(
VariableSignalManager::Instance(),
SIGNAL(Rename(const QString &, const QString &)), this,
SIGNAL(VariableRenamed(const QString &, const QString &)));
QWidget::connect(VariableSignalManager::Instance(),
SIGNAL(Add(const QString &)), this,
SIGNAL(VariableAdded(const QString &)));
QWidget::connect(VariableSignalManager::Instance(),
SIGNAL(Remove(const QString &)), this,
SIGNAL(VariableRemoved(const QString &)));
auto layout = new QHBoxLayout();
layout->setContentsMargins(0, 0, 0, 0);

View File

@ -260,24 +260,27 @@ VariableSelection::VariableSelection(QWidget *parent)
"AdvSceneSwitcher.variable.configure", parent)
{
// Connect to slots
QWidget::connect(
window(),
SIGNAL(VariableRenamed(const QString &, const QString &)), this,
SLOT(RenameItem(const QString &, const QString &)));
QWidget::connect(window(), SIGNAL(VariableAdded(const QString &)), this,
QWidget::connect(VariableSignalManager::Instance(),
SIGNAL(Rename(const QString &, const QString &)), this,
SLOT(RenameItem(const QString &, const QString &)));
QWidget::connect(VariableSignalManager::Instance(),
SIGNAL(Add(const QString &)), this,
SLOT(AddItem(const QString &)));
QWidget::connect(window(), SIGNAL(VariableRemoved(const QString &)),
this, SLOT(RemoveItem(const QString &)));
QWidget::connect(VariableSignalManager::Instance(),
SIGNAL(Remove(const QString &)), this,
SLOT(RemoveItem(const QString &)));
// Forward signals
QWidget::connect(
this, SIGNAL(ItemRenamed(const QString &, const QString &)),
window(),
SIGNAL(VariableRenamed(const QString &, const QString &)));
QWidget::connect(this, SIGNAL(ItemAdded(const QString &)), window(),
SIGNAL(VariableAdded(const QString &)));
QWidget::connect(this, SIGNAL(ItemRemoved(const QString &)), window(),
SIGNAL(VariableRemoved(const QString &)));
QWidget::connect(this,
SIGNAL(ItemRenamed(const QString &, const QString &)),
VariableSignalManager::Instance(),
SIGNAL(Rename(const QString &, const QString &)));
QWidget::connect(this, SIGNAL(ItemAdded(const QString &)),
VariableSignalManager::Instance(),
SIGNAL(Add(const QString &)));
QWidget::connect(this, SIGNAL(ItemRemoved(const QString &)),
VariableSignalManager::Instance(),
SIGNAL(Remove(const QString &)));
}
void VariableSelection::SetVariable(const std::string &variable)
@ -301,4 +304,14 @@ void VariableSelection::SetVariable(const std::weak_ptr<Variable> &variable_)
}
}
VariableSignalManager::VariableSignalManager(QObject *parent) : QObject(parent)
{
}
VariableSignalManager *VariableSignalManager::Instance()
{
static VariableSignalManager manager;
return &manager;
}
} // namespace advss

View File

@ -69,6 +69,18 @@ public:
void SetVariable(const std::weak_ptr<Variable> &);
};
class ADVSS_EXPORT VariableSignalManager : public QObject {
Q_OBJECT
public:
VariableSignalManager(QObject *parent = nullptr);
static VariableSignalManager *Instance();
signals:
void Rename(const QString &, const QString &);
void Add(const QString &);
void Remove(const QString &);
};
void SaveVariables(obs_data_t *obj);
void LoadVariables(obs_data_t *obj);

View File

@ -225,14 +225,15 @@ FilterSelectionWidget::FilterSelectionWidget(QWidget *parent,
SLOT(SourceChanged(const SourceSelection &)));
// Variables
QWidget::connect(window(), SIGNAL(VariableAdded(const QString &)), this,
QWidget::connect(VariableSignalManager::Instance(),
SIGNAL(Add(const QString &)), this,
SLOT(ItemAdd(const QString &)));
QWidget::connect(window(), SIGNAL(VariableRemoved(const QString &)),
this, SLOT(ItemRemove(const QString &)));
QWidget::connect(
window(),
SIGNAL(VariableRenamed(const QString &, const QString &)), this,
SLOT(ItemRename(const QString &, const QString &)));
QWidget::connect(VariableSignalManager::Instance(),
SIGNAL(Remove(const QString &)), this,
SLOT(ItemRemove(const QString &)));
QWidget::connect(VariableSignalManager::Instance(),
SIGNAL(Rename(const QString &, const QString &)), this,
SLOT(ItemRename(const QString &, const QString &)));
}
void FilterSelectionWidget::SetFilter(const SourceSelection &source,