using namespace Marklin;
Toolbar::Toolbar(Designer &d):
+ GLtk::Widget(d.get_ui_resources()),
GLtk::Panel(d.get_ui_resources()),
designer(d)
{
{
if(index==drp_routes->get_n_items()-1)
{
- Route *route = new Route(format("Route %d", designer.get_layout()->get_routes().size()+1));
+ Layout &layout = *designer.get_layout();
+ Route *route = new Route(layout, format("Route %d", layout.get_routes().size()+1));
designer.get_layout()->add_route(*route);
designer.edit_route(*route);
- const set<Route *> &routes = designer.get_layout()->get_routes();
+ const map<string, Route *> &routes = designer.get_layout()->get_routes();
int selected = -1;
unsigned n = 0;
- for(set<Route *>::const_iterator i=routes.begin(); (selected<0 && i!=routes.end()); ++i, ++n)
- if(*i==route)
+ for(map<string, Route *>::const_iterator i=routes.begin(); (selected<0 && i!=routes.end()); ++i, ++n)
+ if(i->second==route)
selected = n;
drp_routes->set_selected_index(selected);
}
else
{
- const set<Route *> &routes = designer.get_layout()->get_routes();
- set<Route *>::const_iterator i = routes.begin();
+ const map<string, Route *> &routes = designer.get_layout()->get_routes();
+ map<string, Route *>::const_iterator i = routes.begin();
advance(i, index);
- designer.edit_route(**i);
+ designer.edit_route(*i->second);
}
}
void Toolbar::update_routes()
{
drp_routes->clear();
- const set<Route *> &routes = designer.get_layout()->get_routes();
+ const map<string, Route *> &routes = designer.get_layout()->get_routes();
int selected = -1;
unsigned n = 0;
- for(set<Route *>::const_iterator i=routes.begin(); i!=routes.end(); ++i, ++n)
+ for(map<string, Route *>::const_iterator i=routes.begin(); i!=routes.end(); ++i, ++n)
{
- drp_routes->append((*i)->get_name());
- if(*i==designer.get_current_route())
+ drp_routes->append(i->second->get_name());
+ if(i->second==designer.get_current_route())
selected = n;
}
drp_routes->append("(new route)");