summaryrefslogtreecommitdiffstats
path: root/src/ui/widget
diff options
context:
space:
mode:
authorNicholas Bishop <nicholasbishop@gmail.com>2007-07-31 06:21:42 +0000
committernicholasbishop <nicholasbishop@users.sourceforge.net>2007-07-31 06:21:42 +0000
commit9c438b3147f4c72a710bb11258be03dcab0ddb17 (patch)
tree07e6908c1672d91b5469f7a99f793c316a4ae06a /src/ui/widget
parentForgot to advance text position when skipping the first space (diff)
downloadinkscape-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.cpp35
-rw-r--r--src/ui/widget/spin-slider.h5
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