+ keyboard.signal_button_press.connect(sigc::bind_return(sigc::mem_fun(this, &Designer::key_press), false));
+ mouse.signal_button_press.connect(sigc::bind_return(sigc::mem_fun(this, &Designer::button_press), false));
+ mouse.signal_axis_motion.connect(sigc::bind_return(sigc::mem_fun(this, &Designer::axis_motion), false));
+ root.signal_tooltip.connect(sigc::mem_fun(this, &Designer::tooltip));
+ root_layout = new GLtk::Layout;
+ root_layout->set_margin(0);
+ root.set_layout(root_layout);
+
+ toolbars.push_back(new Layoutbar(*this));
+ toolbars.push_back(new Trackbar(*this));
+ toolbars.push_back(new Routebar(*this));
+ toolbars.push_back(new Zonebar(*this));
+ Toolbar *prev = 0;
+ for(vector<Toolbar *>::iterator i=toolbars.begin(); i!=toolbars.end(); ++i)
+ {
+ root.add(**i);
+ if(i!=toolbars.begin())
+ (*i)->expand(false);
+ (*i)->signal_expanded.connect(sigc::hide(sigc::mem_fun(root_layout, &GLtk::Layout::update)));
+ if(prev)
+ {
+ root_layout->add_constraint(**i, GLtk::Layout::RIGHT_OF, *prev, 0);
+ root_layout->add_constraint(**i, GLtk::Layout::COPY_HEIGHT, *prev);
+ }
+ prev = *i;
+ }
+
+ GLtk::Panel *statusbar = new GLtk::Panel;
+ root.add(*statusbar);
+ statusbar->set_focusable(false);
+ root_layout->set_gravity(*statusbar, -1, -1);
+ root_layout->set_expand(*statusbar, true, false);