hegyi@1876: #include hegyi@1876: #include hegyi@1876: hegyi@1876: sigc::signal AlgoWin::signal_closing() hegyi@1876: { hegyi@1876: return signal_closed; hegyi@1876: } hegyi@1876: hegyi@1876: sigc::signal AlgoWin::signal_maplist_needed() hegyi@1876: { hegyi@1876: return signal_maplist_need; hegyi@1876: } hegyi@1876: hegyi@1876: bool AlgoWin::closeIfEscapeIsPressed(GdkEventKey* e) hegyi@1876: { hegyi@1876: if(e->keyval==GDK_Escape) hegyi@1876: { hegyi@1876: on_hide(); hegyi@1876: } hegyi@1876: return true; hegyi@1876: } hegyi@1876: hegyi@1878: AlgoWin::AlgoWin(int algoid, std::vector tabnames) hegyi@1876: { hegyi@1876: signal_key_press_event().connect(sigc::mem_fun(*this, &AlgoWin::closeIfEscapeIsPressed)); hegyi@1876: hegyi@1876: Gtk::VBox * vbox=new Gtk::VBox(); hegyi@1876: vbox->set_spacing(5); hegyi@1876: hegyi@1876: Gtk::Label * label=new Gtk::Label("Select graph:"); hegyi@1876: hegyi@1876: switch(algoid) hegyi@1876: { hegyi@1876: case 0: hegyi@1878: ab=new AlgoBox(tabnames); hegyi@1876: set_title("Algo Win Demo"); hegyi@1876: break; hegyi@1876: case 1: hegyi@1878: ab=new KruskalBox(tabnames); hegyi@1876: set_title("Kruskal Algorithm"); hegyi@1876: break; hegyi@1876: default: hegyi@1876: break; hegyi@1876: } hegyi@1876: ab->signal_maplist_needed().connect(sigc::mem_fun(*this, &AlgoWin::emit_tab_change)); hegyi@1876: hegyi@1876: runbutton=new Gtk::Button("Run"); hegyi@1876: runbutton->signal_released().connect(sigc::mem_fun(*ab,&AlgoBox::run)); hegyi@1876: runbutton->signal_activate().connect(sigc::mem_fun(*ab,&AlgoBox::run)); hegyi@1876: hegyi@1876: closebutton=new Gtk::Button("Close"); hegyi@1876: closebutton->signal_released().connect(sigc::mem_fun(*this,&AlgoWin::on_hide)); hegyi@1876: closebutton->signal_activate().connect(sigc::mem_fun(*this,&AlgoWin::on_hide)); hegyi@1876: hegyi@1876: Gtk::HBox * hbox=new Gtk::HBox(); hegyi@1876: hegyi@1876: hbox->pack_start(*runbutton); hegyi@1876: hbox->pack_start(*closebutton); hegyi@1876: hegyi@1876: vbox->pack_start(*label); hegyi@1876: vbox->pack_start(*ab); hegyi@1876: vbox->pack_start(*hbox); hegyi@1876: hegyi@1876: add(*vbox); hegyi@1876: hegyi@1876: show_all_children(); hegyi@1876: }; hegyi@1876: hegyi@1876: void AlgoWin::update_tablist(std::vector tabnames) hegyi@1876: { hegyi@1876: ab->update_tablist(tabnames); hegyi@1876: } hegyi@1876: hegyi@1878: void AlgoWin::update_maplist(void * mapstorage) hegyi@1876: { hegyi@1878: ab->update_maplist(mapstorage); hegyi@1876: } hegyi@1876: hegyi@1876: void AlgoWin::on_hide() hegyi@1876: { hegyi@1876: signal_closed.emit(this); hegyi@1876: Gtk::Window::on_hide(); hegyi@1876: } hegyi@1876: hegyi@1876: void AlgoWin::emit_tab_change(std::string newtab) hegyi@1876: { hegyi@1876: signal_maplist_need.emit(this, newtab); hegyi@1876: }