From 09d244908a254452273c730c93f406e1c7d8a198 Mon Sep 17 00:00:00 2001 From: Nicolas Dufour Date: Fri, 3 Dec 2010 19:56:12 +0100 Subject: Extensions. Notebooks now work with internal extensions. (bzr r9933) --- src/extension/param/notebook.cpp | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) (limited to 'src/extension/param/notebook.cpp') 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 * changeSignal); void paramString (std::list &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(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(list->data); + if (!strcmp(param->name(), name)) { + return param; + } + } + + return NULL; +} /** \brief Creates a Notebook widget for a notebook parameter -- cgit v1.2.3