From 9c438b3147f4c72a710bb11258be03dcab0ddb17 Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Tue, 31 Jul 2007 06:21:42 +0000 Subject: Filter effects dialog: * Added a "Link" toggle to the DualSpinSlider widget, when active the two values will be set equal to eachother. * Added DualSpinButtons (for attributes that have an optional number, similar to DualSpinSlider but without the gtkscale) * Added MultiSpinButtons (for showing multiple spinbuttons together but with different attributes) (bzr r3352) --- src/ui/widget/spin-slider.cpp | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) (limited to 'src/ui/widget/spin-slider.cpp') diff --git a/src/ui/widget/spin-slider.cpp b/src/ui/widget/spin-slider.cpp index c0b597ed2..8e2cbc026 100644 --- a/src/ui/widget/spin-slider.cpp +++ b/src/ui/widget/spin-slider.cpp @@ -10,6 +10,7 @@ */ #include "glib/gstrfuncs.h" +#include "glibmm/i18n.h" #include "spin-slider.h" @@ -103,18 +104,34 @@ void SpinSlider::remove_scale() 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) + : AttrWidget(a), + _s1(value, lower, upper, step_inc, climb_rate, digits), + _s2(value, lower, upper, step_inc, climb_rate, digits), + _link(_("Link")) { signal_value_changed().connect(signal_attr_changed().make_slot()); _s1.get_adjustment().signal_value_changed().connect(_signal_value_changed.make_slot()); _s2.get_adjustment().signal_value_changed().connect(_signal_value_changed.make_slot()); + _s1.get_adjustment().signal_value_changed().connect(sigc::mem_fun(*this, &DualSpinSlider::update_linked)); + _link.signal_toggled().connect(sigc::mem_fun(*this, &DualSpinSlider::link_toggled)); + + Gtk::VBox* vb = Gtk::manage(new Gtk::VBox); + vb->add(_s1); + vb->add(_s2); + pack_start(*vb); + pack_start(_link, false, false); + _link.set_active(true); + + show_all(); } Glib::ustring DualSpinSlider::get_as_attribute() const { - return _s1.get_as_attribute() + " " + _s2.get_as_attribute(); + if(_link.get_active()) + return _s1.get_as_attribute(); + else + return _s1.get_as_attribute() + " " + _s2.get_as_attribute(); } void DualSpinSlider::set_from_attribute(SPObject* o) @@ -176,6 +193,18 @@ void DualSpinSlider::remove_scale() _s2.remove_scale(); } +void DualSpinSlider::link_toggled() +{ + _s2.set_sensitive(!_link.get_active()); + update_linked(); +} + +void DualSpinSlider::update_linked() +{ + if(_link.get_active()) + _s2.set_value(_s1.get_value()); +} + } // namespace Widget } // namespace UI } // namespace Inkscape -- cgit v1.2.3