drp_route->set_selected_index(0);
const map<string, Route *> &routes = engineer.get_layout().get_routes();
unsigned n = 1;
- for(map<string, Route *>::const_iterator i=routes.begin(); i!=routes.end(); ++i, ++n)
- {
- drp_route->append(i->second->get_name());
- if(i->second==train.get_route())
- drp_route->set_selected_index(n);
- }
+ for(map<string, Route *>::const_iterator i=routes.begin(); i!=routes.end(); ++i)
+ if(!i->second->is_temporary())
+ {
+ drp_route->append(i->second->get_name());
+ if(i->second==train.get_route())
+ drp_route->set_selected_index(n);
+ ++n;
+ }
}
void RouteSelect::on_ok_clicked()
{
const map<string, Route *> &routes = engineer.get_layout().get_routes();
map<string, 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->second->is_temporary())
+ {
+ if(!n)
+ break;
+ --n;
+ }
+ ++i;
+ }
train.set_route(i->second);
}