#include #include bool EditWin::closeIfEscapeIsPressed(GdkEventKey* e) { if(e->keyval==GDK_Escape) { hide(); } return true; } EditWin::EditWin(const std::string& title, GraphDisplayerCanvas & grdispc):gdc(grdispc),table(2, 2, true) { set_title(title); set_default_size(200, 50); set_keep_above(true); signal_key_press_event().connect(sigc::mem_fun(*this, &EditWin::closeIfEscapeIsPressed)); //buttons array buttons=new Gtk::RadioButton * [TOOL_NUM]; for(int i=0;iget_group(); //New node button buttons[CREATE_NODE]=new Gtk::RadioButton("New Node"); buttons[CREATE_NODE]->set_mode(false); buttons[CREATE_NODE]->set_group(group); buttons[CREATE_NODE]->signal_clicked().connect ( sigc::bind ( sigc::mem_fun(*this, &EditWin::makeEditorialToolChanged), 1 ) ); table.attach(*buttons[CREATE_NODE],0,1,0,1); //New edge button buttons[CREATE_EDGE]=new Gtk::RadioButton("New Edge"); buttons[CREATE_EDGE]->set_mode(false); buttons[CREATE_EDGE]->set_group(group); buttons[CREATE_EDGE]->signal_clicked().connect ( sigc::bind ( sigc::mem_fun(*this, &EditWin::makeEditorialToolChanged), 2 ) ); table.attach(*buttons[CREATE_EDGE],1,2,0,1); //Move button buttons[MOVE]=new Gtk::RadioButton("Move"); buttons[MOVE]->set_mode(false); buttons[MOVE]->set_group(group); buttons[MOVE]->signal_clicked().connect ( sigc::bind ( sigc::mem_fun(*this, &EditWin::makeEditorialToolChanged), 0 ) ); table.attach(*buttons[MOVE],0,1,1,2); //New edge button buttons[ERASER]=new Gtk::RadioButton("Erase Item"); buttons[ERASER]->set_mode(false); buttons[ERASER]->set_group(group); buttons[ERASER]->signal_clicked().connect ( sigc::bind ( sigc::mem_fun(*this, &EditWin::makeEditorialToolChanged), 3 ) ); table.attach(*buttons[ERASER],1,2,1,2); add(table); show_all_children(); } void EditWin::makeEditorialToolChanged(int newtool) { gdc.changeEditorialTool(newtool); }