bfc9fd35206fbac4b5bed31d2ed56390a5336707
1 #ifndef INKSCAPE_LIVEPATHEFFECT_PARAMETER_ENUM_H\r
2 #define INKSCAPE_LIVEPATHEFFECT_PARAMETER_ENUM_H\r
3 \r
4 /*\r
5 * Inkscape::LivePathEffectParameters\r
6 *\r
7 * Copyright (C) Johan Engelen 2007 <j.b.c.engelen@utwente.nl>\r
8 *\r
9 * Released under GNU GPL, read the file 'COPYING' for more information\r
10 */\r
11 \r
12 #include <glib/gtypes.h>\r
13 \r
14 #include "ui/widget/registry.h"\r
15 #include "ui/widget/registered-enums.h"\r
16 #include <gtkmm/tooltips.h>\r
17 \r
18 #include "live_effects/parameter/parameter.h"\r
19 #include "verbs.h"\r
20 \r
21 namespace Inkscape {\r
22 \r
23 namespace LivePathEffect {\r
24 \r
25 template<typename E> class EnumParam : public Parameter {\r
26 public:\r
27 EnumParam( const Glib::ustring& label,\r
28 const Glib::ustring& tip,\r
29 const Glib::ustring& key,\r
30 const Util::EnumDataConverter<E>& c,\r
31 Inkscape::UI::Widget::Registry* wr,\r
32 Effect* effect,\r
33 E defvalue)\r
34 : Parameter(label, tip, key, wr, effect)\r
35 {\r
36 regenum = NULL;\r
37 enumdataconv = &c;\r
38 value = defvalue;\r
39 };\r
40 ~EnumParam() {\r
41 if (regenum)\r
42 delete regenum;\r
43 };\r
44 \r
45 Gtk::Widget * param_getWidget() {\r
46 if (!regenum) {\r
47 regenum = new Inkscape::UI::Widget::RegisteredEnum<E>();\r
48 regenum->init(param_label, param_tooltip, param_key, *enumdataconv, *param_wr, param_effect->getRepr(), param_effect->getSPDoc());\r
49 regenum->set_undo_parameters(SP_VERB_DIALOG_LIVE_PATH_EFFECT, _("Change enum parameter"));\r
50 regenum->combobox()->set_active_by_id(value);\r
51 }\r
52 return dynamic_cast<Gtk::Widget *> (regenum->labelled);\r
53 };\r
54 \r
55 bool param_readSVGValue(const gchar * strvalue) {\r
56 if (!strvalue) return false;\r
57 \r
58 value = enumdataconv->get_id_from_key(Glib::ustring(strvalue));\r
59 \r
60 if (regenum)\r
61 regenum->combobox()->set_active_by_id(value);\r
62 \r
63 return true;\r
64 };\r
65 gchar * param_writeSVGValue() const {\r
66 gchar * str = g_strdup( enumdataconv->get_key(value).c_str() );\r
67 return str;\r
68 };\r
69 \r
70 E get_value() const {\r
71 return value;\r
72 }\r
73 \r
74 private:\r
75 EnumParam(const EnumParam&);\r
76 EnumParam& operator=(const EnumParam&);\r
77 \r
78 UI::Widget::RegisteredEnum<E> * regenum;\r
79 E value;\r
80 \r
81 const Util::EnumDataConverter<E> * enumdataconv;\r
82 };\r
83 \r
84 \r
85 }; //namespace LivePathEffect\r
86 \r
87 }; //namespace Inkscape\r
88 \r
89 #endif\r