diff options
| author | Jon A. Cruz <jon@joncruz.org> | 2011-12-19 06:54:08 +0000 |
|---|---|---|
| committer | Jon A. Cruz <jon@joncruz.org> | 2011-12-19 06:54:08 +0000 |
| commit | af07ce24271fc904e432cdf77714f49b8cbc8db8 (patch) | |
| tree | 7744dbace5c21eb373a5225e03757c8d403ab5ae /src/extension/param/parameter.h | |
| parent | Remove more deprecated GTK macros (diff) | |
| download | inkscape-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.h | 212 |
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: |
