1 #include "enter_datum_window.hpp"
2 #include "widgets/spin_button_dim.hpp"
3 #include "imp/imp_interface.hpp"
4 #include "util/gtk_util.hpp"
5
6 namespace horizon {
7
8
EnterDatumWindow(Gtk::Window * parent,class ImpInterface * intf,const std::string & label,int64_t def)9 EnterDatumWindow::EnterDatumWindow(Gtk::Window *parent, class ImpInterface *intf, const std::string &label, int64_t def)
10 : ToolWindow(parent, intf)
11 {
12 set_title("Enter datum");
13
14 auto box = Gtk::manage(new Gtk::Box(Gtk::ORIENTATION_VERTICAL, 4));
15 box->property_margin() = 6;
16 auto la = Gtk::manage(new Gtk::Label(label));
17 la->set_halign(Gtk::ALIGN_START);
18 box->pack_start(*la, false, false, 0);
19
20 sp = Gtk::manage(new SpinButtonDim());
21 sp->set_margin_start(8);
22 sp->set_range(0, 1e9);
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<ToolDataEnterDatumWindow>();
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
set_range(int64_t lo,int64_t hi)36 void EnterDatumWindow::set_range(int64_t lo, int64_t hi)
37 {
38 sp->set_range(lo, hi);
39 }
40
set_step_size(uint64_t sz)41 void EnterDatumWindow::set_step_size(uint64_t sz)
42 {
43 sp->set_increments(sz, sz);
44 }
45
get_value()46 int64_t EnterDatumWindow::get_value()
47 {
48 return sp->get_value_as_int();
49 }
50
51 } // namespace horizon
52