1 #include "enter_datum_scale_window.hpp"
2 #include "imp/imp_interface.hpp"
3 #include "util/gtk_util.hpp"
4 
5 namespace horizon {
6 
EnterDatumScaleWindow(Gtk::Window * parent,class ImpInterface * intf,const std::string & label,double def)7 EnterDatumScaleWindow::EnterDatumScaleWindow(Gtk::Window *parent, class ImpInterface *intf, const std::string &label,
8                                              double def)
9     : ToolWindow(parent, intf)
10 {
11     set_title("Enter scale");
12 
13     auto box = Gtk::manage(new Gtk::Box(Gtk::ORIENTATION_VERTICAL, 4));
14     box->property_margin() = 6;
15     auto la = Gtk::manage(new Gtk::Label(label));
16     la->set_halign(Gtk::ALIGN_START);
17     box->pack_start(*la, false, false, 0);
18 
19     sp = Gtk::manage(new Gtk::SpinButton());
20     sp->set_range(.1, 10);
21     sp->set_increments(.1, .1);
22     sp->set_digits(3);
23     sp->set_value(def);
24     spinbutton_connect_activate(sp, [this] { emit_event(ToolDataWindow::Event::OK); });
25     sp->signal_value_changed().connect([this] {
26         auto data = std::make_unique<ToolDataEnterDatumScaleWindow>();
27         data->event = ToolDataWindow::Event::UPDATE;
28         data->value = get_value();
29         interface->tool_update_data(std::move(data));
30     });
31     box->pack_start(*sp, false, false, 0);
32     box->show_all();
33     add(*box);
34 }
35 
get_value()36 double EnterDatumScaleWindow::get_value()
37 {
38     return sp->get_value();
39 }
40 
41 } // namespace horizon
42