diff options
| author | Patrick Storz <eduard.braun2@gmx.de> | 2019-09-25 21:14:22 +0000 |
|---|---|---|
| committer | Patrick Storz <eduard.braun2@gmx.de> | 2019-09-25 21:14:22 +0000 |
| commit | faf45cfec5d2161aa7ccafad41f6d5f4f54a18bf (patch) | |
| tree | f8cc65dbaa8fe6b778bffe6f20f8c040aeec04eb /src/extension/prefdialog/parameter-optiongroup.cpp | |
| parent | Updated it.po to current inkscape.pot. (diff) | |
| download | inkscape-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.cpp | 18 |
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()); |
