1 #include <msp/gltk/button.h>
2 #include <msp/gltk/label.h>
3 #include "libr2c2/track.h"
4 #include "libr2c2/tracktype.h"
6 #include "trackproperties.h"
12 TrackProperties::TrackProperties(const Selection &s):
19 add(*(lbl = new GLtk::Label("Track properties")));
20 lbl->set_geometry(GLtk::Geometry(10, geom.h-30, geom.w-20, 20));
22 add(*(lbl = new GLtk::Label("Turnout ID")));
23 lbl->set_geometry(GLtk::Geometry(10, geom.h-65, 70, 20));
25 add(*(ent_turnout_id = new GLtk::Entry));
26 ent_turnout_id->set_geometry(GLtk::Geometry(80, geom.h-65, 50, 20));
28 add(*(lbl = new GLtk::Label("Sensor ID")));
29 lbl->set_geometry(GLtk::Geometry(150, geom.h-65, 70, 20));
31 add(*(ent_sensor_id = new GLtk::Entry));
32 ent_sensor_id->set_geometry(GLtk::Geometry(220, geom.h-65, 50, 20));
36 add_button(*(btn = new GLtk::Button("Cncl")), 0);
37 btn->set_geometry(GLtk::Geometry(geom.w-90, 10, 40, 24));
38 btn->set_style("red");
40 add_button(*(btn = new GLtk::Button("OK")), 1);
41 btn->set_geometry(GLtk::Geometry(geom.w-50, 10, 40, 24));
42 btn->set_style("green");
44 if(selection.size()==1)
46 if(unsigned tid = selection.get_object<Track>()->get_turnout_id())
47 ent_turnout_id->set_text(lexical_cast<string>(tid));
50 const set<Track *> &tracks = selection.get_objects<Track>();
52 for(set<Track *>::const_iterator i=tracks.begin(); i!=tracks.end(); ++i)
54 if(static_cast<int>((*i)->get_sensor_id())!=sensor_id)
57 sensor_id = (*i)->get_sensor_id();
64 ent_sensor_id->set_text(lexical_cast<string>(sensor_id));
67 void TrackProperties::on_response(int code)
71 if(selection.size()==1)
73 Track *track = selection.get_object<Track>();
74 if(track->get_type().is_turnout())
75 track->set_turnout_id(lexical_cast<unsigned>(ent_turnout_id->get_text()));
78 string sensor_id_text = ent_sensor_id->get_text();
79 if(!sensor_id_text.empty())
81 unsigned sensor_id = lexical_cast<unsigned>(sensor_id_text);
82 const set<Track *> &tracks = selection.get_objects<Track>();
83 for(set<Track *>::const_iterator i=tracks.begin(); i!=tracks.end(); ++i)
84 if(!(*i)->get_type().is_turnout())
85 (*i)->set_sensor_id(sensor_id);