diff options
| author | Nicolas Dufour <nicoduf@yahoo.fr> | 2010-12-03 18:56:12 +0000 |
|---|---|---|
| committer | JazzyNico <nicoduf@yahoo.fr> | 2010-12-03 18:56:12 +0000 |
| commit | 09d244908a254452273c730c93f406e1c7d8a198 (patch) | |
| tree | 882d843df1a3a73036c493c89722a1d897d2e631 /src/extension/param | |
| parent | C++ cleanup on patch. (diff) | |
| download | inkscape-09d244908a254452273c730c93f406e1c7d8a198.tar.gz inkscape-09d244908a254452273c730c93f406e1c7d8a198.zip | |
Extensions. Notebooks now work with internal extensions.
(bzr r9933)
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 | 9 | ||||
| -rw-r--r-- | src/extension/param/parameter.h | 3 |
4 files changed, 51 insertions, 3 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..94260cc56 100644 --- a/src/extension/param/parameter.cpp +++ b/src/extension/param/parameter.cpp @@ -155,8 +155,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) @@ -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 */ |
