From: johanengelen Date: Wed, 27 Feb 2008 09:21:24 +0000 (+0000) Subject: Fix passing of notebook extension parameters. X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=ff20ae64b6f76bc64725c72cbf7744eb2c25eb33;p=inkscape.git Fix passing of notebook extension parameters. --- diff --git a/src/extension/extension.cpp b/src/extension/extension.cpp index 825a935ad..84f09aedb 100644 --- a/src/extension/extension.cpp +++ b/src/extension/extension.cpp @@ -706,8 +706,10 @@ Extension::paramListString (std::list &retlist) delete out; retlist.insert(retlist.end(), param_string); + + // insert parameters subparameters if any (for example notebook parameter has subparams) + param->insert_subparam_strings(retlist); } - //g_message("paramstring=%s", param_string->c_str()); return; } diff --git a/src/extension/parameter.h b/src/extension/parameter.h index 19cd75ecd..308b0b88e 100644 --- a/src/extension/parameter.h +++ b/src/extension/parameter.h @@ -103,6 +103,7 @@ public: static Parameter * make (Inkscape::XML::Node * in_repr, Inkscape::Extension::Extension * in_ext); virtual Gtk::Widget * get_widget (SPDocument * doc, Inkscape::XML::Node * node, sigc::signal * changeSignal); virtual Glib::ustring * string (void); + virtual void insert_subparam_strings(std::list &retlist) {}; gchar const * get_tooltip (void) { return _desc; } }; diff --git a/src/extension/paramnotebook.cpp b/src/extension/paramnotebook.cpp index 80a17b95b..288186c8f 100644 --- a/src/extension/paramnotebook.cpp +++ b/src/extension/paramnotebook.cpp @@ -55,7 +55,7 @@ public: ParamNotebookPage(const gchar * name, const gchar * guitext, const gchar * desc, const Parameter::_scope_t scope, Inkscape::Extension::Extension * ext, Inkscape::XML::Node * xml); ~ParamNotebookPage(void); Gtk::Widget * get_widget(SPDocument * doc, Inkscape::XML::Node * node, sigc::signal * changeSignal); - Glib::ustring * paramString (void); + void insert_subparam_strings (std::list &retlist); gchar * get_guitext (void) {return _text;}; }; /* class ParamNotebookPage */ @@ -96,27 +96,32 @@ ParamNotebookPage::~ParamNotebookPage (void) g_slist_free(parameters); } -/** \brief Return the value as a string */ -Glib::ustring * -ParamNotebookPage::paramString (void) +/** + \brief A function to get the subparameters in a string form + \return An array with all the subparameters in it. + + Look how this closely resembles Extension::paramListString +*/ +void +ParamNotebookPage::insert_subparam_strings (std::list &retlist) { - Glib::ustring * param_string = new Glib::ustring(""); - for (GSList * list = parameters; list != NULL; list = g_slist_next(list)) { Parameter * param = reinterpret_cast(list->data); - *param_string += " --"; - *param_string += param->name(); - *param_string += "="; - Glib::ustring * paramstr = param->string(); - *param_string += *paramstr; - delete paramstr; + std::string param_string; + param_string += "--"; + param_string += param->name(); + param_string += "="; + Glib::ustring * out = param->string(); + param_string += *out; + delete out; + + retlist.insert(retlist.end(), param_string); } - return param_string; + return; } - /** \return None \brief This function creates a page that can be used later. This @@ -310,16 +315,8 @@ ParamNotebook::set (const int in, SPDocument * doc, Inkscape::XML::Node * node) /** - \brief A function to get the currentpage and the parameters in a string form - \return A string with the 'value' and all the parameters on all pages as command line arguments - - This is really a hack. The function is called by Extension::paramString() to build - the commandline string like: '--param1name=\"param1value\" --param2name=\"param2value\" ...' - Extension::paramString expects this function to return '\"param1value\"'; but instead, - this function returns: '\"param1value\" --page1param1name=\"page1param1value\" ...' - - \TODO Do this better. For example, make Parameter::paramString() that returns '--name=\"value\"' - instead of just returning '\"value\"'. + \brief A function to get the currentpage in a string form + \return A string with the 'value' */ Glib::ustring * ParamNotebook::string (void) @@ -330,15 +327,23 @@ ParamNotebook::string (void) *param_string += _value; // the name of the current page *param_string += "\""; + return param_string; +} + +/** + \brief A function to get the subparameters in a string form + \return An array with all the subparameters in it. +*/ +void +ParamNotebook::insert_subparam_strings (std::list &retlist) +{ for (GSList * list = pages; list != NULL; list = g_slist_next(list)) { ParamNotebookPage * page = reinterpret_cast(list->data); - Glib::ustring * pageparamstr = page->paramString(); - *param_string += *pageparamstr; - delete pageparamstr; + page->insert_subparam_strings(retlist); } - return param_string; + return; } /** \brief A special category of Gtk::Notebook to handle notebook parameters */ diff --git a/src/extension/paramnotebook.h b/src/extension/paramnotebook.h index 7aebfd97f..78d56777c 100644 --- a/src/extension/paramnotebook.h +++ b/src/extension/paramnotebook.h @@ -42,6 +42,7 @@ public: virtual ~ParamNotebook(void); Gtk::Widget * get_widget(SPDocument * doc, Inkscape::XML::Node * node, sigc::signal * changeSignal); Glib::ustring * string (void); + virtual void insert_subparam_strings(std::list &retlist); const gchar * get (const SPDocument * doc, const Inkscape::XML::Node * node) { return _value; } const gchar * set (const int in, SPDocument * doc, Inkscape::XML::Node * node);