X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fextension%2Fextension.cpp;h=52d5f5148b540e3915a1bf1f5354ca2764dad108;hb=e0c38bd294fd720cebbabeda1a0d87259f68bf7f;hp=8ab5c1d9ace9cc2a960633fbdefae77479131385;hpb=6c2fb7487bf5d5f2c05946d3e2b5d2fe1f293eec;p=inkscape.git diff --git a/src/extension/extension.cpp b/src/extension/extension.cpp index 8ab5c1d9a..52d5f5148 100644 --- a/src/extension/extension.cpp +++ b/src/extension/extension.cpp @@ -34,7 +34,7 @@ #include "db.h" #include "dependency.h" #include "timer.h" -#include "parameter.h" +#include "param/parameter.h" namespace Inkscape { namespace Extension { @@ -79,6 +79,9 @@ Extension::Extension (Inkscape::XML::Node * in_repr, Implementation::Implementat /* TODO: Handle what happens if we don't have these two */ while (child_repr != NULL) { char const * chname = child_repr->name(); + if (!strncmp(chname, INKSCAPE_EXTENSION_NS_NC, strlen(INKSCAPE_EXTENSION_NS_NC))) { + chname += strlen(INKSCAPE_EXTENSION_NS); + } if (chname[0] == '_') /* Allow _ for translation of tags */ chname++; if (!strcmp(chname, "id")) { @@ -288,10 +291,10 @@ Extension::check (void) void Extension::printFailure (Glib::ustring reason) { - error_file << _("Extension \"") << name << _("\" failed to load because "); - error_file << reason.raw(); - error_file << std::endl; - return; + error_file << _("Extension \"") << name << _("\" failed to load because "); + error_file << reason.raw(); + error_file << std::endl; + return; } /** @@ -428,6 +431,13 @@ Extension::get_param_string (const gchar * name, const SPDocument * doc, const I return param->get_string(doc, node); } +const gchar * +Extension::get_param_enum (const gchar * name, const SPDocument * doc, const Inkscape::XML::Node * node) +{ + Parameter* param = param_shared(name, parameters); + return param->get_enum(doc, node); +} + /** \return The value of the parameter identified by the name \brief Gets a parameter identified by name with the bool placed @@ -487,6 +497,24 @@ Extension::get_param_float (const gchar * name, const SPDocument * doc, const In return param->get_float(doc, node); } +/** + \return The string value for the parameter specified + \brief Gets a parameter identified by name with the float placed + in value. + \param name The name of the parameter to get + \param doc The document to look in for document specific parameters + \param node The node to look in for a specific parameter + + Look up in the parameters list, then execute the function on that + found parameter. +*/ +guint32 +Extension::get_param_color (const gchar * name, const SPDocument * doc, const Inkscape::XML::Node * node) +{ + Parameter* param = param_shared(name, parameters); + return param->get_color(doc, node); +} + /** \return The passed in value \brief Sets a parameter identified by name with the boolean @@ -567,6 +595,25 @@ Extension::set_param_string (const gchar * name, const gchar * value, SPDocument return param->set_string(value, doc, node); } +/** + \return The passed in value + \brief Sets a parameter identified by name with the string + in the parameter value. + \param name The name of the parameter to set + \param value The value to set the parameter to + \param doc The document to look in for document specific parameters + \param node The node to look in for a specific parameter + + Look up in the parameters list, then execute the function on that + found parameter. +*/ +guint32 +Extension::set_param_color (const gchar * name, guint32 color, SPDocument * doc, Inkscape::XML::Node * node) +{ + Parameter* param = param_shared(name, parameters); + return param->set_color(color, doc, node); +} + /** \brief A function to open the error log file. */ void Extension::error_file_open (void) @@ -620,52 +667,43 @@ public: function to get each widget. Then, each of those is placed into a Gtk::VBox, which is then returned to the calling function. - If there are no parameters, this function just returns NULL. + If there are no visible parameters, this function just returns NULL. + If all parameters are gui_visible = false NULL is returned as well. */ Gtk::Widget * -Extension::autogui (SPDocument * doc, Inkscape::XML::Node * node) +Extension::autogui (SPDocument * doc, Inkscape::XML::Node * node, sigc::signal * changeSignal) { - if (g_slist_length(parameters) == 0) return NULL; + if (param_visible_count() == 0) return NULL; AutoGUI * agui = Gtk::manage(new AutoGUI()); + //go through the list of parameters to see if there are any non-hidden ones for (GSList * list = parameters; list != NULL; list = g_slist_next(list)) { Parameter * param = reinterpret_cast(list->data); - Gtk::Widget * widg = param->get_widget(doc, node); + if (param->get_gui_hidden()) continue; //Ignore hidden parameters + Gtk::Widget * widg = param->get_widget(doc, node, changeSignal); gchar const * tip = param->get_tooltip(); agui->addWidget(widg, tip); - } - + } + agui->show(); return agui; }; /** \brief A function to get the parameters in a string form - \return A string with all the parameters as command line arguements - - I don't really like this function, but it works for now. + \return An array with all the parameters in it. - \todo Do this better. */ -Glib::ustring * -Extension::paramString (void) +void +Extension::paramListString (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; + param->string(retlist); } - //g_message("paramstring=%s", param_string->c_str()); - return param_string; + return; } /* Extension editor dialog stuff */ @@ -715,7 +753,7 @@ Extension::get_help_widget(void) Gtk::VBox * retval = Gtk::manage(new Gtk::VBox()); if (_help == NULL) { - Gtk::Label * content = Gtk::manage(new Gtk::Label("Currently there is no help available for this Extension. Please look on the Inkscape website or ask on the mailing lists if you have questions regarding this extension.")); + Gtk::Label * content = Gtk::manage(new Gtk::Label(_("Currently there is no help available for this Extension. Please look on the Inkscape website or ask on the mailing lists if you have questions regarding this extension."))); retval->pack_start(*content, true, true, 5); content->set_line_wrap(true); content->show(); @@ -740,6 +778,16 @@ Extension::get_params_widget(void) return retval; } +unsigned int Extension::param_visible_count ( ) +{ + unsigned int _visible_count = 0; + for (GSList * list = parameters; list != NULL; list = g_slist_next(list)) { + Parameter * param = reinterpret_cast(list->data); + if (!param->get_gui_hidden()) _visible_count++; + } + return _visible_count; +} + } /* namespace Extension */ } /* namespace Inkscape */