summaryrefslogtreecommitdiffstats
path: root/src/extension/extension.cpp
diff options
context:
space:
mode:
authorPatrick Storz <eduard.braun2@gmx.de>2019-08-07 00:28:50 +0000
committerPatrick Storz <eduard.braun2@gmx.de>2019-08-31 14:50:39 +0000
commitc0317efc1e86f75ee72d6f65b978bfe634bd3b2c (patch)
treee4f82b94e7b47f62815f889e902a42de03102356 /src/extension/extension.cpp
parentInherit destructor and recursively delete all widgets (diff)
downloadinkscape-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.cpp93
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 *