Code

prepare PathParam for linking to other object
[inkscape.git] / src / live_effects / parameter / enum.h
index 1c5384f57dda03e2ff6c363e6738840f43ca50af..daba43784401d85e36cd0dc59feb57156a22b842 100644 (file)
@@ -11,7 +11,6 @@
 
 #include <glib/gtypes.h>
 
-#include "ui/widget/registry.h"
 #include "ui/widget/registered-enums.h"
 #include <gtkmm/tooltips.h>
 
@@ -33,24 +32,23 @@ public:
                 E default_value)
         : Parameter(label, tip, key, wr, effect)
     {
-        regenum = NULL;
         enumdataconv = &c;
         defvalue = default_value;
         value = defvalue;
     };
-    virtual ~EnumParam() {
-        if (regenum)
-            delete regenum;
-    };
 
-    Gtk::Widget * param_getWidget() {
-        if (!regenum) {
-            regenum = new Inkscape::UI::Widget::RegisteredEnum<E>();
-            regenum->init(param_label, param_tooltip, param_key, *enumdataconv, *param_wr, param_effect->getRepr(), param_effect->getSPDoc());
-            regenum->combobox()->set_active_by_id(value);
-            regenum->set_undo_parameters(SP_VERB_DIALOG_LIVE_PATH_EFFECT, _("Change enum parameter"));
-        }
-        return dynamic_cast<Gtk::Widget *> (regenum->labelled);
+    virtual ~EnumParam() { };
+
+    virtual Gtk::Widget * param_newWidget(Gtk::Tooltips * /*tooltips*/) {
+        Inkscape::UI::Widget::RegisteredEnum<E> *regenum = Gtk::manage ( 
+            new Inkscape::UI::Widget::RegisteredEnum<E>( param_label, param_tooltip,
+                       param_key, *enumdataconv, *param_wr, param_effect->getRepr(), param_effect->getSPDoc() ) );
+
+        regenum->set_active_by_id(value);
+        regenum->combobox()->setProgrammatically = false;
+        regenum->set_undo_parameters(SP_VERB_DIALOG_LIVE_PATH_EFFECT, _("Change enumeration parameter"));
+
+        return dynamic_cast<Gtk::Widget *> (regenum);
     };
 
     bool param_readSVGValue(const gchar * strvalue) {
@@ -78,15 +76,12 @@ public:
 
     void param_set_value(E val) {
         value = val;
-        if (regenum)
-            regenum->combobox()->set_active_by_id(value);
     }
 
 private:
     EnumParam(const EnumParam&);
     EnumParam& operator=(const EnumParam&);
 
-    UI::Widget::RegisteredEnum<E> * regenum;
     E value;
     E defvalue;