summaryrefslogtreecommitdiffstats
path: root/src/extension/param/parameter.h
diff options
context:
space:
mode:
authorJon A. Cruz <jon@joncruz.org>2011-12-19 06:54:08 +0000
committerJon A. Cruz <jon@joncruz.org>2011-12-19 06:54:08 +0000
commitaf07ce24271fc904e432cdf77714f49b8cbc8db8 (patch)
tree7744dbace5c21eb373a5225e03757c8d403ab5ae /src/extension/param/parameter.h
parentRemove more deprecated GTK macros (diff)
downloadinkscape-af07ce24271fc904e432cdf77714f49b8cbc8db8.tar.gz
inkscape-af07ce24271fc904e432cdf77714f49b8cbc8db8.zip
Const correctness fixes that also correct bug #893146.
Fixed bugs: - https://launchpad.net/bugs/893146 (bzr r10783)
Diffstat (limited to 'src/extension/param/parameter.h')
-rw-r--r--src/extension/param/parameter.h212
1 files changed, 137 insertions, 75 deletions
diff --git a/src/extension/param/parameter.h b/src/extension/param/parameter.h
index ad07f5306..8d80e6c40 100644
--- a/src/extension/param/parameter.h
+++ b/src/extension/param/parameter.h
@@ -1,8 +1,9 @@
/** @file
- * @brief Parameters for extensions.
+ * Parameters for extensions.
*/
/* Authors:
* Ted Gould <ted@gould.cx>
+ * Jon A. Cruz <jon@joncruz.org>
*
* Copyright (C) 2005-2006 Authors
*
@@ -27,108 +28,169 @@ class Extension;
/**
- * @brief The root directory in the preferences database for extension-related parameters
+ * The root directory in the preferences database for extension-related parameters.
*
* The directory path has both a leading and a trailing slash, so that extension_pref_root + pref_name works
* without having to append a separator.
*/
extern Glib::ustring const extension_pref_root;
-/** \brief A class to represent the parameter of an extension
-
- This is really a super class that allows them to abstract all
- the different types of parameters into some that can be passed
- around. There is also a few functions that are used by all the
- different parameters.
-*/
+/**
+ * A class to represent the parameter of an extension.
+ *
+ * This is really a super class that allows them to abstract all
+ * the different types of parameters into some that can be passed
+ * around. There is also a few functions that are used by all the
+ * different parameters.
+ */
class Parameter {
-private:
- /** \brief Which extension is this parameter attached to? */
- Inkscape::Extension::Extension * extension;
- /** \brief The name of this parameter. */
- gchar * _name;
protected:
- /** \brief Description of the parameter. */
- gchar * _desc;
- /** \brief List of possible scopes. */
+ /** List of possible scopes. */
typedef enum {
SCOPE_USER, /**< Parameter value is saved in the user's configuration file. (default) */
SCOPE_DOCUMENT, /**< Parameter value is saved in the document. */
SCOPE_NODE /**< Parameter value is attached to the node. */
} _scope_t;
- /** \brief Scope of the parameter. */
+
+public:
+ Parameter(gchar const *name,
+ gchar const *guitext,
+ gchar const *desc,
+ const Parameter::_scope_t scope,
+ bool gui_hidden,
+ gchar const *gui_tip,
+ Inkscape::Extension::Extension * ext);
+
+ Parameter(gchar const *name,
+ gchar const *guitext,
+ Inkscape::Extension::Extension * ext);
+
+ virtual ~Parameter(void);
+
+ /** Wrapper to cast to the object and use its function. */
+ bool get_bool(SPDocument const *doc, Inkscape::XML::Node const *node) const;
+
+ /** Wrapper to cast to the object and use it's function. */
+ int get_int(SPDocument const *doc, Inkscape::XML::Node const *node) const;
+
+ /** Wrapper to cast to the object and use it's function. */
+ float get_float(SPDocument const *doc, Inkscape::XML::Node const *node) const;
+
+ /** Wrapper to cast to the object and use it's function. */
+ gchar const *get_string(SPDocument const *doc, Inkscape::XML::Node const *node) const;
+
+ guint32 get_color(SPDocument const *doc, Inkscape::XML::Node const *node) const;
+
+ /** Wrapper to cast to the object and use it's function. */
+ gchar const *get_enum(SPDocument const *doc, Inkscape::XML::Node const *node) const;
+
+ /** Wrapper to cast to the object and use it's function. */
+ gchar const *get_optiongroup(SPDocument const * doc, Inkscape::XML::Node const *node) const;
+
+
+ /** Wrapper to cast to the object and use it's function. */
+ bool set_bool(bool in, SPDocument * doc, Inkscape::XML::Node * node);
+
+ /** Wrapper to cast to the object and use it's function. */
+ int set_int(int in, SPDocument * doc, Inkscape::XML::Node * node);
+
+ float set_float(float in, SPDocument * doc, Inkscape::XML::Node * node);
+
+ gchar const *set_optiongroup(gchar const *in, SPDocument * doc, Inkscape::XML::Node *node);
+
+ gchar const *set_string(gchar const * in, SPDocument * doc, Inkscape::XML::Node * node);
+
+ guint32 set_color(guint32 in, SPDocument * doc, Inkscape::XML::Node * node);
+
+ gchar const * name(void) const {return _name;}
+
+ /**
+ * This function creates a parameter that can be used later. This
+ * is typically done in the creation of the extension and defined
+ * in the XML file describing the extension (it's private so people
+ * have to use the system) :)
+ *
+ * This function first grabs all of the data out of the Repr and puts
+ * it into local variables. Actually, these are just pointers, and the
+ * data is not duplicated so we need to be careful with it. If there
+ * isn't a name or a type in the XML, then no parameter is created as
+ * the function just returns.
+ *
+ * From this point on, we're pretty committed as we've allocated an
+ * object and we're starting to fill it. The name is set first, and
+ * is created with a strdup to actually allocate memory for it. Then
+ * there is a case statement (roughly because strcmp requires 'ifs')
+ * based on what type of parameter this is. Depending which type it
+ * is, the value is interpreted differently, but they are relatively
+ * straight forward. In all cases the value is set to the default
+ * value from the XML and the type is set to the interpreted type.
+ *
+ * @param in_repr The XML describing the parameter.
+ * @return a pointer to a new Parameter if applicable, null otherwise..
+ */
+ static Parameter *make(Inkscape::XML::Node * in_repr, Inkscape::Extension::Extension * in_ext);
+
+ virtual Gtk::Widget * get_widget(SPDocument * doc, Inkscape::XML::Node * node, sigc::signal<void> * changeSignal);
+
+ gchar const * get_tooltip(void) const { return _desc; }
+
+ /** Indicates if the GUI for this parameter is hidden or not */
+ bool get_gui_hidden() const { return _gui_hidden; }
+
+ virtual void string(std::list <std::string> &list) const;
+
+ /**
+ * Gets the current value of the parameter in a string form.
+ * @return A string with the 'value'.
+ */
+ virtual void string(std::string &string) const;
+
+ /** All the code in Notebook::get_param to get the notebook content. */
+ virtual Parameter *get_param(gchar const *name);
+
+protected:
+ /** Description of the parameter. */
+ gchar * _desc;
+
+ /** Scope of the parameter. */
_scope_t _scope;
- /** \brief Text for the GUI selection of this. */
+
+ /** Text for the GUI selection of this. */
gchar * _text;
- /** \brief Whether the GUI is visible */
+
+ /** Whether the GUI is visible. */
bool _gui_hidden;
- /** \brief A tip for the GUI if there is one */
+
+ /** A tip for the GUI if there is one. */
gchar * _gui_tip;
/* **** funcs **** */
- gchar * pref_name (void);
+
+ /**
+ * Build the name to write the parameter from the extension's ID and the name of this parameter.
+ */
+ gchar *pref_name(void) const;
+
Inkscape::XML::Node * find_child (Inkscape::XML::Node * adult);
+
Inkscape::XML::Node * document_param_node (SPDocument * doc);
+
Inkscape::XML::Node * new_child (Inkscape::XML::Node * parent);
-public:
- Parameter (const gchar * name,
- const gchar * guitext,
- const gchar * desc,
- const Parameter::_scope_t scope,
- bool gui_hidden,
- const gchar * gui_tip,
- Inkscape::Extension::Extension * ext);
- Parameter (const gchar * name,
- const gchar * guitext,
- Inkscape::Extension::Extension * ext);
- virtual ~Parameter (void);
-
- bool get_bool (const SPDocument * doc,
- const Inkscape::XML::Node * node);
- int get_int (const SPDocument * doc,
- const Inkscape::XML::Node * node);
- float get_float (const SPDocument * doc,
- const Inkscape::XML::Node * node);
- const gchar * get_string (const SPDocument * doc,
- const Inkscape::XML::Node * node);
- guint32 get_color (const SPDocument * doc,
- const Inkscape::XML::Node * node);
- const gchar * get_enum (const SPDocument * doc,
- const Inkscape::XML::Node * node);
-
- gchar const * get_optiongroup( SPDocument const * doc,
- Inkscape::XML::Node const * node);
-
- bool set_bool (bool in, SPDocument * doc, Inkscape::XML::Node * node);
- int set_int (int in, SPDocument * doc, Inkscape::XML::Node * node);
- float set_float (float in, SPDocument * doc, Inkscape::XML::Node * node);
- gchar const * set_optiongroup(gchar const *in, SPDocument * doc, Inkscape::XML::Node *node);
- const gchar * set_string (const gchar * in, SPDocument * doc, Inkscape::XML::Node * node);
- guint32 set_color (guint32 in, SPDocument * doc, Inkscape::XML::Node * node);
-
- const gchar * name (void) {return _name;}
-
- static Parameter * make (Inkscape::XML::Node * in_repr, Inkscape::Extension::Extension * in_ext);
- virtual Gtk::Widget * get_widget (SPDocument * doc, Inkscape::XML::Node * node, sigc::signal<void> * changeSignal);
-
- gchar const * get_tooltip (void) { return _desc; }
-
- /** \brief Indicates if the GUI for this parameter is hidden or not */
- bool get_gui_hidden () { return _gui_hidden; }
-
- virtual void string (std::list <std::string> &list);
- virtual void string (std::string &string);
-
- virtual Parameter * get_param (const gchar * name);
+private:
+ /** Which extension is this parameter attached to. */
+ Inkscape::Extension::Extension *extension;
+
+ /** The name of this parameter. */
+ gchar *_name;
};
-} /* namespace Extension */
-} /* namespace Inkscape */
+} // namespace Extension
+} // namespace Inkscape
-#endif /* __INK_EXTENSION_PARAM_H__ */
+#endif // SEEN_INK_EXTENSION_PARAM_H__
/*
Local Variables: