From 8cc7b6543641df19bd6f374c2961b3db0820302e Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Sat, 7 May 2022 16:02:36 +0200 Subject: [PATCH] Do not allow duplicates in condtion and action type selection --- src/macro-action-edit.cpp | 14 ++++++++++---- src/macro-condition-edit.cpp | 19 +++++++++++++------ 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/src/macro-action-edit.cpp b/src/macro-action-edit.cpp index 7356b294..2660cf9a 100644 --- a/src/macro-action-edit.cpp +++ b/src/macro-action-edit.cpp @@ -54,8 +54,15 @@ std::string MacroActionFactory::GetIdByName(const QString &name) static inline void populateActionSelection(QComboBox *list) { - for (auto entry : MacroActionFactory::GetActionTypes()) { - list->addItem(obs_module_text(entry.second._name.c_str())); + for (auto &[_, action] : MacroActionFactory::GetActionTypes()) { + QString entry(obs_module_text(action._name.c_str())); + if (list->findText(entry) == -1) { + list->addItem(entry); + } else { + blog(LOG_WARNING, + "did not insert duplicate action entry with name \"%s\"", + entry.toStdString().c_str()); + } } list->model()->sort(0); } @@ -64,10 +71,9 @@ MacroActionEdit::MacroActionEdit(QWidget *parent, std::shared_ptr *entryData, const std::string &id) : MacroSegmentEdit(switcher->macroProperties._highlightActions, parent), + _actionSelection(new QComboBox()), _entryData(entryData) { - _actionSelection = new QComboBox(); - QWidget::connect(_actionSelection, SIGNAL(currentTextChanged(const QString &)), this, SLOT(ActionSelectionChanged(const QString &))); diff --git a/src/macro-condition-edit.cpp b/src/macro-condition-edit.cpp index e48ce675..be64522f 100644 --- a/src/macro-condition-edit.cpp +++ b/src/macro-condition-edit.cpp @@ -83,8 +83,16 @@ static inline void populateLogicSelection(QComboBox *list, bool root = false) static inline void populateConditionSelection(QComboBox *list) { - for (auto entry : MacroConditionFactory::GetConditionTypes()) { - list->addItem(obs_module_text(entry.second._name.c_str())); + for (auto &[_, condition] : + MacroConditionFactory::GetConditionTypes()) { + QString entry(obs_module_text(condition._name.c_str())); + if (list->findText(entry) == -1) { + list->addItem(entry); + } else { + blog(LOG_WARNING, + "did not insert duplicate condition entry with name \"%s\"", + entry.toStdString().c_str()); + } } list->model()->sort(0); } @@ -94,13 +102,12 @@ MacroConditionEdit::MacroConditionEdit( const std::string &id, bool root) : MacroSegmentEdit(switcher->macroProperties._highlightConditions, parent), + _logicSelection(new QComboBox()), + _conditionSelection(new QComboBox()), + _dur(new DurationConstraintEdit()), _entryData(entryData), _isRoot(root) { - _logicSelection = new QComboBox(); - _conditionSelection = new QComboBox(); - _dur = new DurationConstraintEdit(); - QWidget::connect(_logicSelection, SIGNAL(currentIndexChanged(int)), this, SLOT(LogicSelectionChanged(int))); QWidget::connect(_conditionSelection,