diff options
| author | Ted Gould <ted@gould.cx> | 2008-04-04 04:55:24 +0000 |
|---|---|---|
| committer | gouldtj <gouldtj@users.sourceforge.net> | 2008-04-04 04:55:24 +0000 |
| commit | 8a2ba4f29d0304fef7631e0efec8b10a2dc99121 (patch) | |
| tree | 0eb2b0987084a55191da506c6c7e870bbe2d903d /src/extension/param/parameter.h | |
| parent | * packaging/macosx/ScriptExec/main.c: Add a comment to clarify what looks (diff) | |
| download | inkscape-8a2ba4f29d0304fef7631e0efec8b10a2dc99121.tar.gz inkscape-8a2ba4f29d0304fef7631e0efec8b10a2dc99121.zip | |
r18381@shi: ted | 2008-03-07 20:11:34 -0800
New work branch
r18391@shi: ted | 2008-03-08 21:36:03 -0800
Moving the parameters around to clean up the directories.
r18392@shi: ted | 2008-03-08 21:57:14 -0800
Moving the 'get' function to cpp
r18870@shi: ted | 2008-04-03 21:10:20 -0700
Adding in to the parameter prototype the ability to have a gui-tip and a gui-hidden parameter
r18871@shi: ted | 2008-04-03 21:17:39 -0700
Using the _gui-hidden parameter to block the creation of the widget if set.
r18890@shi: ted | 2008-04-03 21:53:55 -0700
Merge from r18024 which got lost in the shuffle.
(bzr r5322)
Diffstat (limited to 'src/extension/param/parameter.h')
| -rw-r--r-- | src/extension/param/parameter.h | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/src/extension/param/parameter.h b/src/extension/param/parameter.h new file mode 100644 index 000000000..ca3a2a0d4 --- /dev/null +++ b/src/extension/param/parameter.h @@ -0,0 +1,131 @@ +#ifndef __INK_EXTENSION_PARAM_H__ +#define __INK_EXTENSION_PARAM_H__ + +/** \file + * Parameters for extensions. + */ + +/* + * Authors: + * Ted Gould <ted@gould.cx> + * + * Copyright (C) 2005-2006 Authors + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +/** \brief The root directory in the preferences database for extension-related parameters. */ +#define PREF_DIR "extensions" + +#include <gtkmm/widget.h> + +#include "xml/document.h" +#include "xml/node.h" +#include "document.h" +#include <extension/extension-forward.h> +#include "prefs-utils.h" + +#include <glibmm/i18n.h> + +#include <color.h> + +namespace Inkscape { +namespace Extension { + +/** \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. +*/ +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. */ + 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. */ + _scope_t _scope; + /** \brief Text for the GUI selection of this. */ + gchar * _text; + /** \brief Whether the GUI is visible */ + bool _gui_hidden; + /** \brief A tip for the GUI if there is one */ + gchar * _gui_tip; + + + /* **** funcs **** */ + gchar * pref_name (void); + 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) { + 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, + 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); + + 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); + 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; } + + virtual void string (std::list <std::string> &list); + virtual void string (std::string &string); +}; + +} /* namespace Extension */ +} /* namespace Inkscape */ + +#endif /* __INK_EXTENSION_PARAM_H__ */ + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : |
