Code

RegisteredTransformedPoint: fix methods to use const&.
[inkscape.git] / src / live_effects / parameter / random.cpp
index 9ce4e41a935a3d4baf7b4ae4b29efc5ce8d3aba5..a5aa014a2759ecd41ae01fb121cb923f8d553a50 100644 (file)
@@ -10,7 +10,7 @@
 #include "live_effects/effect.h"
 #include "svg/svg.h"
 #include "libnr/nr-values.h"
-
+#include "ui/widget/registered-widget.h"
 #include <gtkmm.h>
 #include "ui/widget/random.h"
 
@@ -35,7 +35,6 @@ RandomParam::RandomParam( const Glib::ustring& label, const Glib::ustring& tip,
     min = -NR_HUGE;
     max = NR_HUGE;
     integer = false;
-    regrandom = NULL;
 
     defseed = default_seed;
     startseed = defseed;
@@ -44,8 +43,6 @@ RandomParam::RandomParam( const Glib::ustring& label, const Glib::ustring& tip,
 
 RandomParam::~RandomParam()
 {
-    if (regrandom)
-        delete regrandom;
 }
 
 bool
@@ -57,7 +54,7 @@ RandomParam::param_readSVGValue(const gchar * strvalue)
     if (success == 1) {
         success += sp_svg_number_read_d(stringarray[1], &newstartseed);
         if (success == 2) {
-            param_set_value(newval, newstartseed);
+            param_set_value(newval, static_cast<long>(newstartseed));
         } else {
             param_set_value(newval, defseed);
         }
@@ -78,13 +75,13 @@ RandomParam::param_writeSVGValue() const
 }
 
 void
-RandomParam::param_set_default() 
+RandomParam::param_set_default()
 {
     param_set_value(defvalue, defseed);
 }
 
 void
-RandomParam::param_set_value(gdouble val, long newseed) 
+RandomParam::param_set_value(gdouble val, long newseed)
 {
     value = val;
     if (integer)
@@ -96,30 +93,19 @@ RandomParam::param_set_value(gdouble val, long newseed)
 
     startseed = setup_seed(newseed);
     seed = startseed;
-
-    if (regrandom)
-        regrandom->setValue(value, startseed);
 }
 
 void
-RandomParam::param_set_range(gdouble min, gdouble max) 
+RandomParam::param_set_range(gdouble min, gdouble max)
 {
     this->min = min;
     this->max = max;
-    if (regrandom)
-        regrandom->getR()->setRange(min, max);
-
-    param_set_value(value, startseed); // reset value, to check whether it is in range
 }
 
 void
 RandomParam::param_make_integer(bool yes)
 {
     integer = yes;
-    if (regrandom) {
-        regrandom->getR()->setDigits(0);
-        regrandom->getR()->setIncrements(1, 10);
-    }
 }
 
 void
@@ -130,21 +116,27 @@ RandomParam::resetRandomizer()
 
 
 Gtk::Widget *
-RandomParam::param_newWidget(Gtk::Tooltips * tooltips)
+RandomParam::param_newWidget(Gtk::Tooltips * /*tooltips*/)
 {
-    // WIDGET TODO: This implementation is incorrect, it should create a *new* widget for the caller, not just return an already created widget
-    g_warning("RandomParam::param_newWidget still needs recoding to work with multiple document views");
-    // TODO: add  a button to set a different startseed
-    if (!regrandom) {
-        regrandom = new Inkscape::UI::Widget::RegisteredRandom();
-        regrandom->init(param_label, param_tooltip, param_key, *param_wr, param_effect->getRepr(), param_effect->getSPDoc());
-        regrandom->setValue(value, startseed);
-        if (integer)
-            param_make_integer();
-
-        regrandom->set_undo_parameters(SP_VERB_DIALOG_LIVE_PATH_EFFECT, _("Change random parameter"));
+    Inkscape::UI::Widget::RegisteredRandom* regrandom = Gtk::manage(
+        new Inkscape::UI::Widget::RegisteredRandom( param_label,
+                                                    param_tooltip,
+                                                    param_key,
+                                                    *param_wr,
+                                                    param_effect->getRepr(),
+                                                    param_effect->getSPDoc() )  );
+
+    regrandom->setValue(value, startseed);
+    if (integer) {
+        regrandom->setDigits(0);
+        regrandom->setIncrements(1, 10);
     }
-    return dynamic_cast<Gtk::Widget *> (regrandom->getR());
+    regrandom->setRange(min, max);
+    regrandom->setProgrammatically = false;
+
+    regrandom->set_undo_parameters(SP_VERB_DIALOG_LIVE_PATH_EFFECT, _("Change random parameter"));
+
+    return dynamic_cast<Gtk::Widget *> (regrandom);
 }
 
 RandomParam::operator gdouble()