summaryrefslogtreecommitdiffstats
path: root/src/extension/param
diff options
context:
space:
mode:
authorNicolas Dufour <nicoduf@yahoo.fr>2010-12-03 18:56:12 +0000
committerJazzyNico <nicoduf@yahoo.fr>2010-12-03 18:56:12 +0000
commit09d244908a254452273c730c93f406e1c7d8a198 (patch)
tree882d843df1a3a73036c493c89722a1d897d2e631 /src/extension/param
parentC++ cleanup on patch. (diff)
downloadinkscape-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.cpp40
-rw-r--r--src/extension/param/notebook.h2
-rw-r--r--src/extension/param/parameter.cpp9
-rw-r--r--src/extension/param/parameter.h3
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 */