diff options
| author | Patrick Storz <eduard.braun2@gmx.de> | 2019-08-07 00:28:50 +0000 |
|---|---|---|
| committer | Patrick Storz <eduard.braun2@gmx.de> | 2019-08-31 14:50:39 +0000 |
| commit | c0317efc1e86f75ee72d6f65b978bfe634bd3b2c (patch) | |
| tree | e4f82b94e7b47f62815f889e902a42de03102356 /src/extension/extension.cpp | |
| parent | Inherit destructor and recursively delete all widgets (diff) | |
| download | inkscape-c0317efc1e86f75ee72d6f65b978bfe634bd3b2c.tar.gz inkscape-c0317efc1e86f75ee72d6f65b978bfe634bd3b2c.zip | |
Re-implement get_param() locally using get_widgets()
Diffstat (limited to 'src/extension/extension.cpp')
| -rw-r--r-- | src/extension/extension.cpp | 93 |
1 files changed, 45 insertions, 48 deletions
diff --git a/src/extension/extension.cpp b/src/extension/extension.cpp index 1da909594..256f1d99a 100644 --- a/src/extension/extension.cpp +++ b/src/extension/extension.cpp @@ -410,26 +410,58 @@ const char *Extension::get_translation(const char *msgid, const char *msgctxt) { } } +/** + \brief A function to get the parameters in a string form + \return An array with all the parameters in it. + +*/ +void +Extension::paramListString (std::list <std::string> &retlist) +{ + // first collect all widgets in the current extension + std::vector<InxWidget *> widget_list; + for (auto widget : _widgets) { + widget->get_widgets(widget_list); + } + + // then build a list of parameter strings from parameter names and values, as '--name=value' + for (auto widget : widget_list) { + InxParameter *parameter = dynamic_cast<InxParameter *>(widget); // filter InxParameters from InxWidgets + if (parameter) { + const char *name = parameter->name(); + std::string value = parameter->value_to_string(); + + if (name && !value.empty()) { // TODO: Shouldn't empty string values be allowed? + std::string parameter_string; + parameter_string += "--"; + parameter_string += name; + parameter_string += "="; + parameter_string += value; + retlist.push_back(parameter_string); + } + } + } + + return; +} + InxParameter *Extension::get_param(const gchar *name) { - if (name == nullptr) { + if (!name || _widgets.empty()) { throw Extension::param_not_exist(); } - if (this->_widgets.empty()) { - throw Extension::param_not_exist(); + + // first collect all widgets in the current extension + std::vector<InxWidget *> widget_list; + for (auto widget : _widgets) { + widget->get_widgets(widget_list); } - for(auto widget : _widgets) { + // then search for a parameter with a matching name + for (auto widget : widget_list) { InxParameter *parameter = dynamic_cast<InxParameter *>(widget); // filter InxParameters from InxWidgets - if (parameter) { - if (!strcmp(parameter->name(), name)) { - return parameter; - } else { - InxParameter *subparam = parameter->get_param(name); - if (subparam) { - return subparam; - } - } + if (parameter && !strcmp(parameter->name(), name)) { + return parameter; } } @@ -758,41 +790,6 @@ Extension::autogui (SPDocument *doc, Inkscape::XML::Node *node, sigc::signal<voi return agui; }; -/** - \brief A function to get the parameters in a string form - \return An array with all the parameters in it. - -*/ -void -Extension::paramListString (std::list <std::string> &retlist) -{ - // first collect all widgets in the current extension - std::vector<const InxWidget *> widget_list; - for (auto widget : _widgets) { - widget->get_widgets(widget_list); - } - - // then build a list of parameter strings from parameter names and values, as '--name=value' - for (auto widget : widget_list) { - const InxParameter *parameter = dynamic_cast<const InxParameter *>(widget); // filter InxParameters from InxWidgets - if (parameter) { - const char *name = parameter->name(); - std::string value = parameter->value_to_string(); - - if (name && !value.empty()) { // TODO: Shouldn't empty string values be allowed? - std::string parameter_string; - parameter_string += "--"; - parameter_string += name; - parameter_string += "="; - parameter_string += value; - retlist.push_back(parameter_string); - } - } - } - - return; -} - /* Extension editor dialog stuff */ Gtk::VBox * |
