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