From 2bdffba8f4da0fe64d4a5b85096d057d389abef8 Mon Sep 17 00:00:00 2001 From: Patrick Storz Date: Tue, 6 Aug 2019 22:30:54 +0200 Subject: Make parameter string generation a job of Inkscape::Extension For this take a first step towards properly tracking children of each parameter and provide functions to look up all widgets. --- src/extension/extension.cpp | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) (limited to 'src/extension/extension.cpp') diff --git a/src/extension/extension.cpp b/src/extension/extension.cpp index c713a83ee..1da909594 100644 --- a/src/extension/extension.cpp +++ b/src/extension/extension.cpp @@ -766,10 +766,27 @@ Extension::autogui (SPDocument *doc, Inkscape::XML::Node *node, sigc::signal &retlist) { + // first collect all widgets in the current extension + std::vector widget_list; for (auto widget : _widgets) { - InxParameter *parameter = dynamic_cast(widget); // filter InxParameters from InxWidgets + 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(widget); // filter InxParameters from InxWidgets if (parameter) { - parameter->build_param_string_list(retlist); + 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); + } } } -- cgit v1.2.3