diff options
Diffstat (limited to 'src/extension/param')
| -rw-r--r-- | src/extension/param/notebook.cpp | 40 | ||||
| -rw-r--r-- | src/extension/param/notebook.h | 2 | ||||
| -rw-r--r-- | src/extension/param/parameter.cpp | 15 | ||||
| -rw-r--r-- | src/extension/param/parameter.h | 3 |
4 files changed, 54 insertions, 6 deletions
diff --git a/src/extension/param/notebook.cpp b/src/extension/param/notebook.cpp index 86e3cefe6..e1ab1de6d 100644 --- a/src/extension/param/notebook.cpp +++ b/src/extension/param/notebook.cpp @@ -57,7 +57,7 @@ public: Gtk::Widget * get_widget(SPDocument * doc, Inkscape::XML::Node * node, sigc::signal<void> * changeSignal); void paramString (std::list <std::string> &list); gchar * get_guitext (void) {return _text;}; - + Parameter * get_param (const gchar * name); }; /* class ParamNotebookPage */ @@ -381,7 +381,45 @@ ParamNotebookWdg::changed_page(GtkNotebookPage */*page*/, return; } +/** \brief Search the parameter's name in the notebook content */ +Parameter * +ParamNotebook::get_param(const gchar * name) +{ + if (name == NULL) { + throw Extension::param_not_exist(); + } + for (GSList * pglist = pages; pglist != NULL; pglist = g_slist_next(pglist)) { + ParamNotebookPage * page = reinterpret_cast<ParamNotebookPage *>(pglist->data); + Parameter * subparam = page->get_param(name); + if (subparam) { + return subparam; + } + } + + return NULL; +} +/** \brief Search the parameter's name in the page content */ +Parameter * +ParamNotebookPage::get_param(const gchar * name) +{ + if (name == NULL) { + throw Extension::param_not_exist(); + } + if (this->parameters == NULL) { + // the list of parameters is empty + throw Extension::param_not_exist(); + } + + for (GSList * list = this->parameters; list != NULL; list = g_slist_next(list)) { + Parameter * param = static_cast<Parameter*>(list->data); + if (!strcmp(param->name(), name)) { + return param; + } + } + + return NULL; +} /** \brief Creates a Notebook widget for a notebook parameter diff --git a/src/extension/param/notebook.h b/src/extension/param/notebook.h index 24d4ebfc1..fb21c9b63 100644 --- a/src/extension/param/notebook.h +++ b/src/extension/param/notebook.h @@ -43,6 +43,8 @@ public: Gtk::Widget * get_widget(SPDocument * doc, Inkscape::XML::Node * node, sigc::signal<void> * changeSignal); void string (std::list <std::string> &list); + Parameter * get_param (const gchar * name); + 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); }; /* class ParamNotebook */ diff --git a/src/extension/param/parameter.cpp b/src/extension/param/parameter.cpp index 1347653a2..ac7c8b8dd 100644 --- a/src/extension/param/parameter.cpp +++ b/src/extension/param/parameter.cpp @@ -4,6 +4,7 @@ /* Author: * Ted Gould <ted@gould.cx> * Johan Engelen <johan@shouraizou.nl> + * Jon A. Cruz <jon@joncruz.org> * * Copyright (C) 2005-2007 Authors * @@ -155,8 +156,6 @@ Parameter::make (Inkscape::XML::Node * in_repr, Inkscape::Extension::Extension * return param; } - - /** \brief Wrapper to cast to the object and use it's function. */ bool Parameter::get_bool (const SPDocument * doc, const Inkscape::XML::Node * node) @@ -347,10 +346,9 @@ Parameter::new_child (Inkscape::XML::Node * parent) return retval; } -Inkscape::XML::Node * -Parameter::document_param_node (SPDocument * doc) +Inkscape::XML::Node *Parameter::document_param_node(SPDocument * doc) { - Inkscape::XML::Document *xml_doc = sp_document_repr_doc(doc); + Inkscape::XML::Document *xml_doc = doc->getReprDoc(); Inkscape::XML::Node * defs = SP_OBJECT_REPR(SP_DOCUMENT_DEFS(doc)); Inkscape::XML::Node * params = NULL; @@ -409,6 +407,13 @@ Parameter::string (std::list <std::string> &list) return; } +/** \brief All the code in Notebook::get_param to get the notebook content */ +Parameter * +Parameter::get_param(const gchar * name) +{ + return NULL; +} + Glib::ustring const extension_pref_root = "/extensions/"; } /* namespace Extension */ diff --git a/src/extension/param/parameter.h b/src/extension/param/parameter.h index beddf5936..d8ed68439 100644 --- a/src/extension/param/parameter.h +++ b/src/extension/param/parameter.h @@ -85,6 +85,7 @@ public: Parameter(name, guitext, NULL, Parameter::SCOPE_USER, false, NULL, ext); }; virtual ~Parameter (void); + bool get_bool (const SPDocument * doc, const Inkscape::XML::Node * node); int get_int (const SPDocument * doc, @@ -120,6 +121,8 @@ public: virtual void string (std::list <std::string> &list); virtual void string (std::string &string); + + virtual Parameter * get_param (const gchar * name); }; } /* namespace Extension */ |
