+ set_size(250, 305);
+
+ GLtk::Label *label;
+ add(*(label = new GLtk::Label("Train properties")));
+ label->set_geometry(GLtk::Geometry(10, geom.h-25, geom.w-20, 20));
+
+ add(*(ent_addr = new GLtk::Entry));
+ ent_addr->set_geometry(GLtk::Geometry(10, geom.h-50, 40, 20));
+
+ add(*(drp_protocol = new GLtk::Dropdown));
+ drp_protocol->set_geometry(GLtk::Geometry(60, geom.h-50, 60, 20));
+ for(unsigned i=0;; ++i)
+ {
+ if(const char *proto = engineer.get_layout().get_driver().enumerate_protocols(i))
+ drp_protocol->append(proto);
+ else
+ break;
+ }
+ drp_protocol->set_selected_index(0);
+
+ add(*(drp_type = new GLtk::Dropdown));
+ drp_type->set_geometry(GLtk::Geometry(130, geom.h-50, geom.w-140, 20));
+
+ const Catalogue::VehicleMap &vehs = engineer.get_catalogue().get_vehicles();
+ unsigned n = 0;
+ for(Catalogue::VehicleMap::const_iterator i=vehs.begin(); i!=vehs.end(); ++i)
+ {
+ if(!i->second->is_locomotive())
+ continue;
+
+ drp_type->append(format("%d %s", i->second->get_article_number(), i->second->get_name()));
+ if(train && i->second==&train->get_locomotive_type())
+ drp_type->set_selected_index(n);