X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fengineer%2Frouteselect.cpp;h=0e191499a0541d89478de35c94b44e7522329163;hb=9b05c573a38639827697fe393d55b7c76f5bde45;hp=c285f35f7031f7610551511d05bb12c4fb9432f8;hpb=e39a3bb041867d6b469bb26278ea0b05ebea0277;p=r2c2.git diff --git a/source/engineer/routeselect.cpp b/source/engineer/routeselect.cpp index c285f35..0e19149 100644 --- a/source/engineer/routeselect.cpp +++ b/source/engineer/routeselect.cpp @@ -14,29 +14,27 @@ using namespace std; using namespace Msp; using namespace Marklin; -RouteSelect::RouteSelect(Engineer &e, const GLtk::Resources &r, Train &t): - GLtk::Widget(r), - Dialog(r), +RouteSelect::RouteSelect(Engineer &e, Train &t): engineer(e), train(t) { set_size(200, 95); GLtk::Label *label; - add(*(label = new GLtk::Label(res, "Select route"))); + add(*(label = new GLtk::Label("Select route"))); label->set_geometry(GLtk::Geometry(10, geom.h-25, geom.w-20, 20)); - add(*(drp_route = new GLtk::Dropdown(res))); + add(*(drp_route = new GLtk::Dropdown)); drp_route->set_geometry(GLtk::Geometry(10, geom.h-50, geom.w-20, 20)); drp_route->append("(none)"); drp_route->set_selected_index(0); - const map &routes = engineer.get_layout().get_routes(); + const set &routes = engineer.get_layout().get_routes(); unsigned n = 1; - for(map::const_iterator i=routes.begin(); i!=routes.end(); ++i) - if(!i->second->is_temporary()) + for(set::const_iterator i=routes.begin(); i!=routes.end(); ++i) + if(!(*i)->is_temporary()) { - drp_route->append(i->second->get_name()); - if(i->second==train.get_route()) + drp_route->append((*i)->get_name()); + if(*i==train.get_route()) drp_route->set_selected_index(n); ++n; } @@ -46,12 +44,12 @@ void RouteSelect::on_ok_clicked() { if(drp_route->get_selected_index()>0) { - const map &routes = engineer.get_layout().get_routes(); - map::const_iterator i = routes.begin(); + const set &routes = engineer.get_layout().get_routes(); + set::const_iterator i = routes.begin(); unsigned n = drp_route->get_selected_index()-1; while(i!=routes.end()) { - if(!i->second->is_temporary()) + if(!(*i)->is_temporary()) { if(!n) break; @@ -60,7 +58,8 @@ void RouteSelect::on_ok_clicked() ++i; } - train.set_route(i->second); + if(!train.set_route(*i)) + engineer.set_status("Could not set route"); } else train.set_route(0);