summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohan B. C. Engelen <jbc.engelen@swissonline.ch>2011-11-09 20:13:18 +0000
committerJohan Engelen <goejendaagh@zonnet.nl>2011-11-09 20:13:18 +0000
commit519fdb8d3f3338f26db41292b2f0fb8f2efd14db (patch)
tree6b7ce775dfeadc3187555dc2606c7af064786861
parentadd const just because it can :) (diff)
downloadinkscape-519fdb8d3f3338f26db41292b2f0fb8f2efd14db.tar.gz
inkscape-519fdb8d3f3338f26db41292b2f0fb8f2efd14db.zip
lpe: add slider to scalar param optionally (does not work very well yet)
(bzr r10735)
-rw-r--r--src/live_effects/lpe-powerstroke.cpp3
-rw-r--r--src/live_effects/parameter/parameter.cpp6
-rw-r--r--src/live_effects/parameter/parameter.h3
-rw-r--r--src/ui/widget/scalar.cpp11
-rw-r--r--src/ui/widget/scalar.h5
5 files changed, 25 insertions, 3 deletions
diff --git a/src/live_effects/lpe-powerstroke.cpp b/src/live_effects/lpe-powerstroke.cpp
index fc6026d31..25cb72b42 100644
--- a/src/live_effects/lpe-powerstroke.cpp
+++ b/src/live_effects/lpe-powerstroke.cpp
@@ -77,6 +77,9 @@ LPEPowerStroke::LPEPowerStroke(LivePathEffectObject *lpeobject) :
/// @todo offset_points are initialized with empty path, is that bug-save?
+ interpolator_beta.addSlider(true);
+ interpolator_beta.param_set_range(0.,1.);
+
registerParameter( dynamic_cast<Parameter *>(&offset_points) );
registerParameter( dynamic_cast<Parameter *>(&sort_points) );
registerParameter( dynamic_cast<Parameter *>(&interpolator_type) );
diff --git a/src/live_effects/parameter/parameter.cpp b/src/live_effects/parameter/parameter.cpp
index 5454a5408..cc8982860 100644
--- a/src/live_effects/parameter/parameter.cpp
+++ b/src/live_effects/parameter/parameter.cpp
@@ -58,7 +58,8 @@ ScalarParam::ScalarParam( const Glib::ustring& label, const Glib::ustring& tip,
defvalue(default_value),
digits(2),
inc_step(0.1),
- inc_page(1)
+ inc_page(1),
+ add_slider(false)
{
}
@@ -134,6 +135,9 @@ ScalarParam::param_newWidget(Gtk::Tooltips * /*tooltips*/)
rsu->setIncrements(inc_step, inc_page);
rsu->setRange(min, max);
rsu->setProgrammatically = false;
+ if (add_slider) {
+ rsu->addSlider();
+ }
rsu->set_undo_parameters(SP_VERB_DIALOG_LIVE_PATH_EFFECT, _("Change scalar parameter"));
diff --git a/src/live_effects/parameter/parameter.h b/src/live_effects/parameter/parameter.h
index cee10bc70..fe93e8dca 100644
--- a/src/live_effects/parameter/parameter.h
+++ b/src/live_effects/parameter/parameter.h
@@ -109,6 +109,8 @@ public:
void param_set_digits(unsigned digits);
void param_set_increments(double step, double page);
+ void addSlider(bool add_slider_widget) { add_slider = add_slider_widget; };
+
virtual Gtk::Widget * param_newWidget(Gtk::Tooltips * tooltips);
inline operator gdouble()
@@ -123,6 +125,7 @@ protected:
unsigned digits;
double inc_step;
double inc_page;
+ bool add_slider;
private:
ScalarParam(const ScalarParam&);
diff --git a/src/ui/widget/scalar.cpp b/src/ui/widget/scalar.cpp
index 220498561..cc051599c 100644
--- a/src/ui/widget/scalar.cpp
+++ b/src/ui/widget/scalar.cpp
@@ -3,8 +3,9 @@
* Carl Hetherington <inkscape@carlh.net>
* Derek P. Moore <derekm@hackunix.org>
* Bryce Harrington <bryce@bryceharrington.org>
+ * Johan Engelen <j.b.c.engelen@alumnus.utwente.nl>
*
- * Copyright (C) 2004 Carl Hetherington
+ * Copyright (C) 2004-2011 authors
*
* Released under GNU GPL. Read the file 'COPYING' for more information.
*/
@@ -16,6 +17,7 @@
#include "scalar.h"
#include "spinbutton.h"
+#include <gtkmm/scale.h>
namespace Inkscape {
namespace UI {
@@ -133,7 +135,12 @@ void Scalar::update()
static_cast<SpinButton*>(_widget)->update();
}
-
+void Scalar::addSlider()
+{
+ Gtk::HScale *scale = new Gtk::HScale( * static_cast<SpinButton*>(_widget)->get_adjustment() );
+ scale->set_draw_value(false);
+ add (*manage (scale));
+}
Glib::SignalProxy0<void> Scalar::signal_value_changed()
{
diff --git a/src/ui/widget/scalar.h b/src/ui/widget/scalar.h
index c73bcc62a..19ccb7ae0 100644
--- a/src/ui/widget/scalar.h
+++ b/src/ui/widget/scalar.h
@@ -143,6 +143,11 @@ public:
void update();
/**
+ * Adds a slider (HScale) to the left of the spinbox.
+ */
+ void addSlider();
+
+ /**
* Signal raised when the spin button's value changes.
*/
Glib::SignalProxy0<void> signal_value_changed();