1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
#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; }
/** \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);
};
} /* 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 :
|