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