summaryrefslogtreecommitdiffstats
path: root/src/extension/param/parameter.h
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2008-04-04 04:55:24 +0000
committergouldtj <gouldtj@users.sourceforge.net>2008-04-04 04:55:24 +0000
commit8a2ba4f29d0304fef7631e0efec8b10a2dc99121 (patch)
tree0eb2b0987084a55191da506c6c7e870bbe2d903d /src/extension/param/parameter.h
parent* packaging/macosx/ScriptExec/main.c: Add a comment to clarify what looks (diff)
downloadinkscape-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.h131
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 :