Code

Add default value stuff for LPE parameters
[inkscape.git] / src / live_effects / parameter / parameter.cpp
1 #define INKSCAPE_LIVEPATHEFFECT_PARAMETER_CPP\r
2 \r
3 /*\r
4  * Copyright (C) Johan Engelen 2007 <j.b.c.engelen@utwente.nl>\r
5  *\r
6  * Released under GNU GPL, read the file 'COPYING' for more information\r
7  */\r
8 \r
9 #include "live_effects/parameter/parameter.h"\r
10 #include "live_effects/effect.h"\r
11 #include "svg/svg.h"\r
12 \r
13 #include <gtkmm.h>\r
14 #include "ui/widget/scalar.h"\r
15 \r
16 #include "svg/stringstream.h"\r
17 \r
18 #include "verbs.h"\r
19 \r
20 #define noLPEREALPARAM_DEBUG\r
21 \r
22 namespace Inkscape {\r
23 \r
24 namespace LivePathEffect {\r
25 \r
26 \r
27 Parameter::Parameter( const Glib::ustring& label, const Glib::ustring& tip,\r
28                       const Glib::ustring& key, Inkscape::UI::Widget::Registry* wr,\r
29                       Effect* effect )\r
30 {\r
31     param_label = label;\r
32     param_tooltip = tip;\r
33     param_key = key;\r
34     param_wr = wr;\r
35     param_effect = effect;\r
36 }\r
37 \r
38 \r
39 \r
40 /*###########################################\r
41  *   REAL PARAM\r
42  */\r
43 RealParam::RealParam( const Glib::ustring& label, const Glib::ustring& tip,\r
44                       const Glib::ustring& key, Inkscape::UI::Widget::Registry* wr,\r
45                       Effect* effect, gdouble default_value)\r
46     : Parameter(label, tip, key, wr, effect)\r
47 {\r
48     defvalue = default_value;\r
49     value = defvalue;\r
50     rsu = NULL;\r
51 }\r
52 \r
53 RealParam::~RealParam()\r
54 {\r
55     if (rsu)\r
56         delete rsu;\r
57 }\r
58 \r
59 bool\r
60 RealParam::param_readSVGValue(const gchar * strvalue)\r
61 {\r
62     double newval;\r
63     unsigned int success = sp_svg_number_read_d(strvalue, &newval);\r
64     if (success == 1) {\r
65         param_set_value(newval);\r
66         return true;\r
67     }\r
68     return false;\r
69 }\r
70 \r
71 gchar *\r
72 RealParam::param_writeSVGValue() const\r
73 {\r
74     Inkscape::SVGOStringStream os;\r
75     os << value;\r
76     gchar * str = g_strdup(os.str().c_str());\r
77     return str;\r
78 }\r
79 \r
80 void\r
81 RealParam::param_set_default() \r
82 {\r
83     param_set_value(defvalue);\r
84 }\r
85 \r
86 void\r
87 RealParam::param_set_value(gdouble val) \r
88 {\r
89     value = val;\r
90     if (rsu)\r
91         rsu->setValue(value);\r
92 }\r
93 \r
94 \r
95 Gtk::Widget *\r
96 RealParam::param_getWidget()\r
97 {\r
98     if (!rsu) {\r
99         rsu = new Inkscape::UI::Widget::RegisteredScalar();\r
100         rsu->init(param_label, param_tooltip, param_key, *param_wr, param_effect->getRepr(), param_effect->getSPDoc());\r
101         rsu->setValue(value);\r
102         rsu->set_undo_parameters(SP_VERB_DIALOG_LIVE_PATH_EFFECT, _("Change scalar parameter"));\r
103     }\r
104     return dynamic_cast<Gtk::Widget *> (rsu->getS());\r
105 }\r
106 \r
107 \r
108 } /* namespace LivePathEffect */\r
109 \r
110 } /* namespace Inkscape */\r
111 \r
112 /*\r
113   Local Variables:\r
114   mode:c++\r
115   c-file-style:"stroustrup"\r
116   c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))\r
117   indent-tabs-mode:nil\r
118   fill-column:99\r
119   End:\r
120 */\r
121 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 :\r