index 553b05583c5579c2b4e88834bff6d2c8fc471b77..52d5f5148b540e3915a1bf1f5354ca2764dad108 100644 (file)
#include "db.h"
#include "dependency.h"
#include "timer.h"
-#include "parameter.h"
+#include "param/parameter.h"
namespace Inkscape {
namespace Extension {
/* 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")) {
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)
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<void> * 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<Parameter *>(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;
};
void
Extension::paramListString (std::list <std::string> &retlist)
{
- //std::list <std::string> retarray;
-
for (GSList * list = parameters; list != NULL; list = g_slist_next(list)) {
Parameter * param = reinterpret_cast<Parameter *>(list->data);
-
- 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);
+ param->string(retlist);
}
- //g_message("paramstring=%s", param_string->c_str());
return;
}
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();
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<Parameter *>(list->data);
+ if (!param->get_gui_hidden()) _visible_count++;
+ }
+ return _visible_count;
+}
+
} /* namespace Extension */
} /* namespace Inkscape */