1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/algowin.cc Wed Jan 04 18:05:55 2006 +0000
1.3 @@ -0,0 +1,88 @@
1.4 +#include <algowin.h>
1.5 +#include <kruskalbox.h>
1.6 +
1.7 +sigc::signal<void, AlgoWin *> AlgoWin::signal_closing()
1.8 +{
1.9 + return signal_closed;
1.10 +}
1.11 +
1.12 +sigc::signal<void, AlgoWin *, std::string> AlgoWin::signal_maplist_needed()
1.13 +{
1.14 + return signal_maplist_need;
1.15 +}
1.16 +
1.17 +bool AlgoWin::closeIfEscapeIsPressed(GdkEventKey* e)
1.18 +{
1.19 + if(e->keyval==GDK_Escape)
1.20 + {
1.21 + on_hide();
1.22 + }
1.23 + return true;
1.24 +}
1.25 +
1.26 +AlgoWin::AlgoWin(int algoid, std::vector<std::string> tabnames, std::vector<std::string> nodemapnames,std::vector<std::string> edgemapnames)
1.27 +{
1.28 + signal_key_press_event().connect(sigc::mem_fun(*this, &AlgoWin::closeIfEscapeIsPressed));
1.29 +
1.30 + Gtk::VBox * vbox=new Gtk::VBox();
1.31 + vbox->set_spacing(5);
1.32 +
1.33 + Gtk::Label * label=new Gtk::Label("Select graph:");
1.34 +
1.35 + switch(algoid)
1.36 + {
1.37 + case 0:
1.38 + ab=new AlgoBox(tabnames, nodemapnames, edgemapnames);
1.39 + set_title("Algo Win Demo");
1.40 + break;
1.41 + case 1:
1.42 + ab=new KruskalBox(tabnames, nodemapnames, edgemapnames);
1.43 + set_title("Kruskal Algorithm");
1.44 + break;
1.45 + default:
1.46 + break;
1.47 + }
1.48 + ab->signal_maplist_needed().connect(sigc::mem_fun(*this, &AlgoWin::emit_tab_change));
1.49 +
1.50 + runbutton=new Gtk::Button("Run");
1.51 + runbutton->signal_released().connect(sigc::mem_fun(*ab,&AlgoBox::run));
1.52 + runbutton->signal_activate().connect(sigc::mem_fun(*ab,&AlgoBox::run));
1.53 +
1.54 + closebutton=new Gtk::Button("Close");
1.55 + closebutton->signal_released().connect(sigc::mem_fun(*this,&AlgoWin::on_hide));
1.56 + closebutton->signal_activate().connect(sigc::mem_fun(*this,&AlgoWin::on_hide));
1.57 +
1.58 + Gtk::HBox * hbox=new Gtk::HBox();
1.59 +
1.60 + hbox->pack_start(*runbutton);
1.61 + hbox->pack_start(*closebutton);
1.62 +
1.63 + vbox->pack_start(*label);
1.64 + vbox->pack_start(*ab);
1.65 + vbox->pack_start(*hbox);
1.66 +
1.67 + add(*vbox);
1.68 +
1.69 + show_all_children();
1.70 +};
1.71 +
1.72 +void AlgoWin::update_tablist(std::vector<std::string> tabnames)
1.73 +{
1.74 + ab->update_tablist(tabnames);
1.75 +}
1.76 +
1.77 +void AlgoWin::update_maplist(std::vector<std::string> nodemapnames, std::vector<std::string> edgemapnames)
1.78 +{
1.79 + ab->update_maplist(nodemapnames, edgemapnames);
1.80 +}
1.81 +
1.82 +void AlgoWin::on_hide()
1.83 +{
1.84 + signal_closed.emit(this);
1.85 + Gtk::Window::on_hide();
1.86 +}
1.87 +
1.88 +void AlgoWin::emit_tab_change(std::string newtab)
1.89 +{
1.90 + signal_maplist_need.emit(this, newtab);
1.91 +}