1 #include <msp/gltk/button.h>
2 #include <msp/gltk/label.h>
3 #include "libr2c2/tracktype.h"
5 #include "trackproperties.h"
11 TrackProperties::TrackProperties(const Selection &s):
18 add(*(lbl = new GLtk::Label("Track properties")));
19 lbl->set_geometry(GLtk::Geometry(10, geom.h-30, geom.w-20, 20));
21 add(*(lbl = new GLtk::Label("Turnout ID")));
22 lbl->set_geometry(GLtk::Geometry(10, geom.h-65, 70, 20));
24 add(*(ent_turnout_id = new GLtk::Entry));
25 ent_turnout_id->set_geometry(GLtk::Geometry(80, geom.h-65, 50, 20));
27 add(*(lbl = new GLtk::Label("Sensor ID")));
28 lbl->set_geometry(GLtk::Geometry(150, geom.h-65, 70, 20));
30 add(*(ent_sensor_id = new GLtk::Entry));
31 ent_sensor_id->set_geometry(GLtk::Geometry(220, geom.h-65, 50, 20));
35 add_button(*(btn = new GLtk::Button("Cncl")), 0);
36 btn->set_geometry(GLtk::Geometry(geom.w-90, 10, 40, 24));
37 btn->set_style("red");
39 add_button(*(btn = new GLtk::Button("OK")), 1);
40 btn->set_geometry(GLtk::Geometry(geom.w-50, 10, 40, 24));
41 btn->set_style("green");
43 if(selection.size()==1)
45 if(unsigned tid = selection.get_track()->get_turnout_id())
46 ent_turnout_id->set_text(lexical_cast(tid));
49 const set<Track *> &tracks = selection.get_tracks();
51 for(set<Track *>::const_iterator i=tracks.begin(); i!=tracks.end(); ++i)
53 if(static_cast<int>((*i)->get_sensor_id())!=sensor_id)
56 sensor_id = (*i)->get_sensor_id();
63 ent_sensor_id->set_text(lexical_cast(sensor_id));
66 void TrackProperties::on_response(int code)
70 if(selection.size()==1)
72 Track *track = selection.get_track();
73 if(track->get_type().is_turnout())
74 track->set_turnout_id(lexical_cast<unsigned>(ent_turnout_id->get_text()));
77 string sensor_id_text = ent_sensor_id->get_text();
78 if(!sensor_id_text.empty())
80 unsigned sensor_id = lexical_cast<unsigned>(sensor_id_text);
81 const set<Track *> &tracks = selection.get_tracks();
82 for(set<Track *>::const_iterator i=tracks.begin(); i!=tracks.end(); ++i)
83 if(!(*i)->get_type().is_turnout())
84 (*i)->set_sensor_id(sensor_id);