summaryrefslogtreecommitdiffstats
path: root/src/extension/prefdialog/parameter-optiongroup.cpp
diff options
context:
space:
mode:
authorPatrick Storz <eduard.braun2@gmx.de>2019-09-25 21:14:22 +0000
committerPatrick Storz <eduard.braun2@gmx.de>2019-09-25 21:14:22 +0000
commitfaf45cfec5d2161aa7ccafad41f6d5f4f54a18bf (patch)
treef8cc65dbaa8fe6b778bffe6f20f8c040aeec04eb /src/extension/prefdialog/parameter-optiongroup.cpp
parentUpdated it.po to current inkscape.pot. (diff)
downloadinkscape-faf45cfec5d2161aa7ccafad41f6d5f4f54a18bf.tar.gz
inkscape-faf45cfec5d2161aa7ccafad41f6d5f4f54a18bf.zip
Extensions: Warn for duplicate page names and option names/values
This is easy to miss and causes confusing behavior (e.g. wrong page/option selected)
Diffstat (limited to 'src/extension/prefdialog/parameter-optiongroup.cpp')
-rw-r--r--src/extension/prefdialog/parameter-optiongroup.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/extension/prefdialog/parameter-optiongroup.cpp b/src/extension/prefdialog/parameter-optiongroup.cpp
index 232c35315..954627e78 100644
--- a/src/extension/prefdialog/parameter-optiongroup.cpp
+++ b/src/extension/prefdialog/parameter-optiongroup.cpp
@@ -17,6 +17,8 @@
#include "parameter-optiongroup.h"
+#include <unordered_set>
+
#include <gtkmm/box.h>
#include <gtkmm/comboboxtext.h>
#include <gtkmm/radiobutton.h>
@@ -62,6 +64,22 @@ ParamOptionGroup::ParamOptionGroup(Inkscape::XML::Node *xml, Inkscape::Extension
g_warning("No (valid) choices for parameter '%s' in extension '%s'", _name, _extension->get_id());
}
+ // check for duplicate option texts and values
+ std::unordered_set<std::string> texts;
+ std::unordered_set<std::string> values;
+ for (auto choice : choices) {
+ auto ret1 = texts.emplace(choice->_text);
+ if (!ret1.second) {
+ g_warning("Duplicate option text ('%s') for parameter '%s' in extension '%s'.",
+ choice->_text.c_str(), _name, _extension->get_id());
+ }
+ auto ret2 = values.emplace(choice->_value);
+ if (!ret2.second) {
+ g_warning("Duplicate option value ('%s') for parameter '%s' in extension '%s'.",
+ choice->_value.c_str(), _name, _extension->get_id());
+ }
+ }
+
// get value (initialize with value of first choice if pref is empty)
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
_value = prefs->getString(pref_name());