diff -r 9e78d14fd0ba -r 853dd852abc7 algowin.cc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/algowin.cc Wed Jan 04 18:05:55 2006 +0000 @@ -0,0 +1,88 @@ +#include +#include + +sigc::signal AlgoWin::signal_closing() +{ + return signal_closed; +} + +sigc::signal AlgoWin::signal_maplist_needed() +{ + return signal_maplist_need; +} + +bool AlgoWin::closeIfEscapeIsPressed(GdkEventKey* e) +{ + if(e->keyval==GDK_Escape) + { + on_hide(); + } + return true; +} + +AlgoWin::AlgoWin(int algoid, std::vector tabnames, std::vector nodemapnames,std::vector edgemapnames) +{ + signal_key_press_event().connect(sigc::mem_fun(*this, &AlgoWin::closeIfEscapeIsPressed)); + + Gtk::VBox * vbox=new Gtk::VBox(); + vbox->set_spacing(5); + + Gtk::Label * label=new Gtk::Label("Select graph:"); + + switch(algoid) + { + case 0: + ab=new AlgoBox(tabnames, nodemapnames, edgemapnames); + set_title("Algo Win Demo"); + break; + case 1: + ab=new KruskalBox(tabnames, nodemapnames, edgemapnames); + set_title("Kruskal Algorithm"); + break; + default: + break; + } + ab->signal_maplist_needed().connect(sigc::mem_fun(*this, &AlgoWin::emit_tab_change)); + + runbutton=new Gtk::Button("Run"); + runbutton->signal_released().connect(sigc::mem_fun(*ab,&AlgoBox::run)); + runbutton->signal_activate().connect(sigc::mem_fun(*ab,&AlgoBox::run)); + + closebutton=new Gtk::Button("Close"); + closebutton->signal_released().connect(sigc::mem_fun(*this,&AlgoWin::on_hide)); + closebutton->signal_activate().connect(sigc::mem_fun(*this,&AlgoWin::on_hide)); + + Gtk::HBox * hbox=new Gtk::HBox(); + + hbox->pack_start(*runbutton); + hbox->pack_start(*closebutton); + + vbox->pack_start(*label); + vbox->pack_start(*ab); + vbox->pack_start(*hbox); + + add(*vbox); + + show_all_children(); +}; + +void AlgoWin::update_tablist(std::vector tabnames) +{ + ab->update_tablist(tabnames); +} + +void AlgoWin::update_maplist(std::vector nodemapnames, std::vector edgemapnames) +{ + ab->update_maplist(nodemapnames, edgemapnames); +} + +void AlgoWin::on_hide() +{ + signal_closed.emit(this); + Gtk::Window::on_hide(); +} + +void AlgoWin::emit_tab_change(std::string newtab) +{ + signal_maplist_need.emit(this, newtab); +}