diff options
| author | Nicholas Bishop <nicholasbishop@gmail.com> | 2007-07-26 07:06:41 +0000 |
|---|---|---|
| committer | nicholasbishop <nicholasbishop@users.sourceforge.net> | 2007-07-26 07:06:41 +0000 |
| commit | 2e5d7938651e9cc94825333f9056defcb44e7525 (patch) | |
| tree | b3cae5431cad506abb6eb4b89aab7d65457cda32 /src/ui/widget/spin-slider.cpp | |
| parent | add 3d tool (diff) | |
| download | inkscape-2e5d7938651e9cc94825333f9056defcb44e7525.tar.gz inkscape-2e5d7938651e9cc94825333f9056defcb44e7525.zip | |
Filter effects dialog:
This is a large commit that greatly simplifies the creation and use of all the filter settings in the dialog.
* Added AttrWidget class to provide an interface for the settings widgets. Allows the widget to read and write to an attribute.
* Modified the ComboBoxEnum, SpinSlider, and ConvolveMatrix widgets to use AttrWidget, more to follow.
* Removed lots of specific filter settings code in favor of the more generic system.
(bzr r3304)
Diffstat (limited to 'src/ui/widget/spin-slider.cpp')
| -rw-r--r-- | src/ui/widget/spin-slider.cpp | 91 |
1 files changed, 88 insertions, 3 deletions
diff --git a/src/ui/widget/spin-slider.cpp b/src/ui/widget/spin-slider.cpp index 678b8e372..a76f1db49 100644 --- a/src/ui/widget/spin-slider.cpp +++ b/src/ui/widget/spin-slider.cpp @@ -9,16 +9,17 @@ * Released under GNU GPL. Read the file 'COPYING' for more information. */ +#include "glib/gstrfuncs.h" + #include "spin-slider.h" namespace Inkscape { namespace UI { namespace Widget { - SpinSlider::SpinSlider(double value, double lower, double upper, double step_inc, - double climb_rate, int digits) - : _adjustment(value, lower, upper, step_inc), + double climb_rate, int digits, const SPAttributeEnum a) + : AttrWidget(a), _adjustment(value, lower, upper, step_inc), _scale(_adjustment), _spin(_adjustment, climb_rate, digits) { pack_start(_scale); @@ -29,6 +30,18 @@ SpinSlider::SpinSlider(double value, double lower, double upper, double step_inc show_all_children(); } +Glib::ustring SpinSlider::get_as_attribute() const +{ + return Glib::Ascii::dtostr((int)_adjustment.get_value()); +} + +void SpinSlider::set_from_attribute(SPObject* o) +{ + const gchar* val = attribute_value(o); + if(val) + _adjustment.set_value(Glib::Ascii::strtod(val)); +} + Glib::SignalProxy0<void> SpinSlider::signal_value_changed() { return _adjustment.signal_value_changed(); @@ -71,6 +84,78 @@ Gtk::SpinButton& SpinSlider::get_spin_button() return _spin; } +void SpinSlider::set_update_policy(const Gtk::UpdateType u) +{ + _scale.set_update_policy(u); +} + +DualSpinSlider::DualSpinSlider(double value, double lower, double upper, double step_inc, + double climb_rate, int digits, const SPAttributeEnum a) + : AttrWidget(a), _s1(value, lower, upper, step_inc, climb_rate, digits), + _s2(value, lower, upper, step_inc, climb_rate, digits) +{ + _s1.get_adjustment().signal_value_changed().connect(_signal_value_changed.make_slot()); + _s2.get_adjustment().signal_value_changed().connect(_signal_value_changed.make_slot()); +} + +Glib::ustring DualSpinSlider::get_as_attribute() const +{ + return _s1.get_as_attribute() + " " + _s2.get_as_attribute(); +} + +void DualSpinSlider::set_from_attribute(SPObject* o) +{ + const gchar* val = attribute_value(o); + if(val) { + // Split val into parts + gchar** toks = g_strsplit(val, " ", 2); + + if(toks) { + double v1, v2; + if(toks[0]) + v1 = v2 = Glib::Ascii::strtod(toks[0]); + if(toks[1]) + v2 = Glib::Ascii::strtod(toks[1]); + + _s1.get_adjustment().set_value(v1); + _s2.get_adjustment().set_value(v2); + + g_strfreev(toks); + } + } +} + +sigc::signal<void>& DualSpinSlider::signal_value_changed() +{ + return _signal_value_changed; +} + +const SpinSlider& DualSpinSlider::get_spinslider1() const +{ + return _s1; +} + +SpinSlider& DualSpinSlider::get_spinslider1() +{ + return _s1; +} + +const SpinSlider& DualSpinSlider::get_spinslider2() const +{ + return _s2; +} + +SpinSlider& DualSpinSlider::get_spinslider2() +{ + return _s2; +} + +void DualSpinSlider::set_update_policy(const Gtk::UpdateType u) +{ + _s1.set_update_policy(u); + _s2.set_update_policy(u); +} + } // namespace Widget } // namespace UI } // namespace Inkscape |
