drp_route->set_selected_index(0);
const set<Route *> &routes = engineer.get_layout().get_routes();
unsigned n = 1;
- for(set<Route *>::const_iterator i=routes.begin(); i!=routes.end(); ++i, ++n)
- {
- drp_route->append((*i)->get_name());
- if(*i==train.get_route())
- drp_route->set_selected_index(n);
- }
+ for(set<Route *>::const_iterator i=routes.begin(); i!=routes.end(); ++i)
+ if(!(*i)->is_temporary())
+ {
+ drp_route->append((*i)->get_name());
+ if(*i==train.get_route())
+ drp_route->set_selected_index(n);
+ ++n;
+ }
}
void RouteSelect::on_ok_clicked()
{
const set<Route *> &routes = engineer.get_layout().get_routes();
set<Route *>::const_iterator i = routes.begin();
- advance(i, drp_route->get_selected_index()-1);
+ unsigned n = drp_route->get_selected_index()-1;
+ while(i!=routes.end())
+ {
+ if(!(*i)->is_temporary())
+ {
+ if(!n)
+ break;
+ --n;
+ }
+ ++i;
+ }
- train.set_route(*i);
+ if(!train.set_route(*i))
+ engineer.set_status("Could not set route");
}
else
train.set_route(0);