/*! \fn Toolbox::add_state(const Smach::state_base *state) * \brief Add and connect a toogle button to the toolbox defined by a state * \param state a const pointer to Smach::state_base */ void Toolbox::add_state(const Smach::state_base *state) { Gtk::Image *icon; assert(state); String name=state->get_name(); Gtk::StockItem stock_item; Gtk::Stock::lookup(Gtk::StockID("synfig-"+name),stock_item); Gtk::ToggleButton* button; button=manage(new class Gtk::ToggleButton()); Gtk::AccelKey key; //Have a look to global fonction init_ui_manager() from app.cpp for "accel_path" definition Gtk::AccelMap::lookup_entry ("<Actions>/action_group_state_manager/state-"+name, key); //Gets the accelerator representation for labels Glib::ustring accel_path = key.get_abbrev (); icon=manage(new Gtk::Image(stock_item.get_stock_id(),Gtk::IconSize(4))); button->add(*icon); button->set_tooltip_text(stock_item.get_label()+" "+accel_path); icon->show(); button->show(); int row=state_button_map.size()/5; int col=state_button_map.size()%5; tool_table->attach(*button,col,col+1,row,row+1, Gtk::EXPAND, Gtk::EXPAND, 0, 0); state_button_map[name]=button; button->signal_clicked().connect( sigc::bind( sigc::mem_fun(*this,&studio::Toolbox::change_state_), state ) ); refresh(); }
void setToggleButtonCallback(string b, sigc::slot<void> sig ) { Gtk::ToggleButton* bu; VRGuiBuilder()->get_widget(b, bu); bu->signal_clicked().connect(sig); }