index 4628111c10f9512e4a59aa6b0363ba8e0cf391ac..d89d4cf5c858299a47f1bcfe7afa7985060ae00a 100644 (file)
void
ToleranceSlider::init (const Glib::ustring& label1, const Glib::ustring& label2, const Glib::ustring& tip1, const Glib::ustring& tip2, const Glib::ustring& key, Registry& wr)
{
void
ToleranceSlider::init (const Glib::ustring& label1, const Glib::ustring& label2, const Glib::ustring& tip1, const Glib::ustring& tip2, const Glib::ustring& key, Registry& wr)
{
+ // hbox = label + slider
+ //
+ // e.g.
+ //
+ // snap distance |-------X---| 37
+
+ // vbox = checkbutton
+ // +
+ // hbox
+
_vbox = new Gtk::VBox;
_hbox = manage (new Gtk::HBox);
_vbox = new Gtk::VBox;
_hbox = manage (new Gtk::HBox);
+
Gtk::Label *theLabel1 = manage (new Gtk::Label (label1));
theLabel1->set_use_underline();
Gtk::Label *theLabel1 = manage (new Gtk::Label (label1));
theLabel1->set_use_underline();
- _hbox->add (*theLabel1);
- _hscale = manage (new Gtk::HScale (0.4, 50.1, 0.1));
+ theLabel1->set_alignment(0, 0.5);
+ // align the label with the checkbox text above by indenting 22 px.
+ _hbox->pack_start(*theLabel1, Gtk::PACK_EXPAND_WIDGET, 22);
+ _hscale = manage (new Gtk::HScale (1.0, 51, 1.0));
theLabel1->set_mnemonic_widget (*_hscale);
_hscale->set_draw_value (true);
_hscale->set_value_pos (Gtk::POS_RIGHT);
_hscale->set_size_request (100, -1);
theLabel1->set_mnemonic_widget (*_hscale);
_hscale->set_draw_value (true);
_hscale->set_value_pos (Gtk::POS_RIGHT);
_hscale->set_size_request (100, -1);
+ _old_val = 10;
+ _hscale->set_value (_old_val);
_tt.set_tip (*_hscale, tip1);
_tt.set_tip (*_hscale, tip1);
- _hbox->add (*_hscale);
- _vbox->add (*_hbox);
+ _hbox->add (*_hscale);
+
+
Gtk::Label *theLabel2 = manage (new Gtk::Label (label2));
theLabel2->set_use_underline();
_button = manage (new Gtk::CheckButton);
_tt.set_tip (*_button, tip2);
_button->add (*theLabel2);
_button->set_alignment (0.0, 0.5);
Gtk::Label *theLabel2 = manage (new Gtk::Label (label2));
theLabel2->set_use_underline();
_button = manage (new Gtk::CheckButton);
_tt.set_tip (*_button, tip2);
_button->add (*theLabel2);
_button->set_alignment (0.0, 0.5);
+
_vbox->add (*_button);
_vbox->add (*_button);
+ // Here we need some extra pixels to get the vertical spacing right. Why?
+ _vbox->pack_end(*_hbox, true, true, 3); // add 3 px.
_key = key;
_scale_changed_connection = _hscale->signal_value_changed().connect (sigc::mem_fun (*this, &ToleranceSlider::on_scale_changed));
_btn_toggled_connection = _button->signal_toggled().connect (sigc::mem_fun (*this, &ToleranceSlider::on_toggled));
_key = key;
_scale_changed_connection = _hscale->signal_value_changed().connect (sigc::mem_fun (*this, &ToleranceSlider::on_scale_changed));
_btn_toggled_connection = _button->signal_toggled().connect (sigc::mem_fun (*this, &ToleranceSlider::on_toggled));
@@ -84,21 +103,13 @@ ToleranceSlider::init (const Glib::ustring& label1, const Glib::ustring& label2,
}
void
}
void
-ToleranceSlider::setValue (double val, bool is_absolute)
+ToleranceSlider::setValue (double val)
{
Gtk::Adjustment *adj = _hscale->get_adjustment();
{
Gtk::Adjustment *adj = _hscale->get_adjustment();
- if (is_absolute)
- {
- adj->set_lower (1.0);
- adj->set_upper (51.0);
- adj->set_step_increment (1.0);
- }
- else
- {
- adj->set_lower (0.4);
- adj->set_upper (50.1);
- adj->set_step_increment (0.1);
- }
+
+ adj->set_lower (1.0);
+ adj->set_upper (51.0);
+ adj->set_step_increment (1.0);
if (val > 9999.9) // magic value 10000.0
{
if (val > 9999.9) // magic value 10000.0
{
{
if (_button->get_active())
{
{
if (_button->get_active())
{
+ _old_val = _hscale->get_value();
_hbox->set_sensitive (false);
_hbox->show_all();
setValue (10000.0);
_hbox->set_sensitive (false);
_hbox->show_all();
setValue (10000.0);
{
_hbox->set_sensitive (true);
_hbox->show_all();
{
_hbox->set_sensitive (true);
_hbox->show_all();
- setValue (50.0);
- update (50.0);
+ setValue (_old_val);
+ update (_old_val);
}
}
}
}
repr->setAttribute(_key.c_str(), os.str().c_str());
doc->rroot->setAttribute("sodipodi:modified", "true");
sp_document_set_undo_sensitive (doc, saved);
repr->setAttribute(_key.c_str(), os.str().c_str());
doc->rroot->setAttribute("sodipodi:modified", "true");
sp_document_set_undo_sensitive (doc, saved);
- sp_document_done (doc, SP_VERB_NONE,
- /* TODO: annotate */ "tolerance-slider.cpp:173");
_wr->setUpdating (false);
}
_wr->setUpdating (false);
}