1 #include <msp/gltk/button.h>
2 #include <msp/strings/formatter.h>
3 #include "libmarklin/locomotive.h"
4 #include "trainpanel.h"
7 using namespace Marklin;
9 TrainPanel::TrainPanel(Engineer &e, const GLtk::Resources &r, Train &t):
16 add(*(lbl_name=new GLtk::Label(res, train.get_name())));
17 lbl_name->set_style("digital");
18 lbl_name->set_geometry(GLtk::Geometry(10, geom.h-34, 140, 24));
19 train.signal_name_changed.connect(sigc::mem_fun(lbl_name, &GLtk::Label::set_text));
23 add(*(btn=new GLtk::Button(res, "Name")));
24 btn->set_geometry(GLtk::Geometry(150, geom.h-34, 40, 24));
26 add(*(sld_speed=new GLtk::HSlider(res)));
27 sld_speed->set_geometry(GLtk::Geometry(10, geom.h-49, 180, 10));
28 sld_speed->set_range(0, 14);
29 sld_speed->set_step(1);
30 sld_speed->signal_value_changed.connect(sigc::mem_fun(this, &TrainPanel::speed_slider_changed));
32 add(*(lbl_speed=new GLtk::Label(res, " 0")));
33 lbl_speed->set_style("digital");
34 lbl_speed->set_geometry(GLtk::Geometry(10, geom.h-75, 36, 24));
35 train.get_locomotive().signal_speed_changed.connect(sigc::mem_fun(this, &TrainPanel::loco_speed_changed));
38 void TrainPanel::speed_slider_changed(double v)
40 train.set_speed(static_cast<unsigned>(v));
43 void TrainPanel::loco_speed_changed(unsigned speed)
45 lbl_speed->set_text(format("%2d", speed));