diff options
| author | Nicholas Bishop <nicholasbishop@gmail.com> | 2007-07-31 06:21:42 +0000 |
|---|---|---|
| committer | nicholasbishop <nicholasbishop@users.sourceforge.net> | 2007-07-31 06:21:42 +0000 |
| commit | 9c438b3147f4c72a710bb11258be03dcab0ddb17 (patch) | |
| tree | 07e6908c1672d91b5469f7a99f793c316a4ae06a /src/ui/widget | |
| parent | Forgot to advance text position when skipping the first space (diff) | |
| download | inkscape-9c438b3147f4c72a710bb11258be03dcab0ddb17.tar.gz inkscape-9c438b3147f4c72a710bb11258be03dcab0ddb17.zip | |
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)
Diffstat (limited to 'src/ui/widget')
| -rw-r--r-- | src/ui/widget/spin-slider.cpp | 35 | ||||
| -rw-r--r-- | src/ui/widget/spin-slider.h | 5 |
2 files changed, 36 insertions, 4 deletions
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 diff --git a/src/ui/widget/spin-slider.h b/src/ui/widget/spin-slider.h index 5c0272d2a..2779be029 100644 --- a/src/ui/widget/spin-slider.h +++ b/src/ui/widget/spin-slider.h @@ -56,7 +56,7 @@ private: }; // Contains two SpinSliders for controlling number-opt-number attributes -class DualSpinSlider : public AttrWidget +class DualSpinSlider : public Gtk::HBox, public AttrWidget { public: DualSpinSlider(double value, double lower, double upper, double step_inc, @@ -77,8 +77,11 @@ public: void remove_scale(); private: + void link_toggled(); + void update_linked(); sigc::signal<void> _signal_value_changed; SpinSlider _s1, _s2; + Gtk::ToggleButton _link; }; } // namespace Widget |
