#include enum {INPUT, OUTPUT, MAP_NUM}; KruskalBox::KruskalBox(std::vector t):AlgoBox() { init(t); } void KruskalBox::run() { if( tabcbt.get_active_text()!="" && (edgemapcbts[INPUT])->get_active_text()!="" && (edgemapcbts[OUTPUT])->get_active_text()!="" ) { Graph g=mapstorage->graph; Graph::EdgeMap * inputmap= ((mapstorage->edgemap_storage)[(edgemapcbts[INPUT])->get_active_text()]); Graph::EdgeMap outputmap(g); double res=kruskal(g, *inputmap, outputmap); for (EdgeIt i(g); i!=INVALID; ++i) { if(outputmap[i]) { (*((mapstorage->edgemap_storage)[(edgemapcbts[OUTPUT])-> get_active_text()]))[i]=1; } else { (*((mapstorage->edgemap_storage)[(edgemapcbts[OUTPUT])-> get_active_text()]))[i]=0; } } std::ostringstream o; o << "Result: " << res; resultlabel.set_text(o.str()); mapstorage->mapChanged(true, (edgemapcbts[OUTPUT])->get_active_text()); // mapstorage->changeActiveMap(true, E_COLOR, // (edgemapcbts[OUTPUT])->get_active_text()); // mapstorage->changeActiveMap(true, E_TEXT, // (edgemapcbts[INPUT])->get_active_text()); } } void KruskalBox::build_box() { std::vector empty_vector; edgemapcbts.resize(MAP_NUM); edgemapcbts[0]=new MapSelector(empty_vector,"","Edgecosts: ",true, false); edgemapcbts[0]->signal_newmapwin_needed().connect(sigc::mem_fun(*this, &AlgoBox::emit_new_map_signal)); pack_start(*(edgemapcbts[INPUT])); edgemapcbts[1]=new MapSelector(empty_vector,"","Edges of tree here: ",true, false); edgemapcbts[1]->signal_newmapwin_needed().connect(sigc::mem_fun(*this, &AlgoBox::emit_new_map_signal)); pack_start(*(edgemapcbts[OUTPUT])); resultlabel.set_text("Result: algorithm is not run yet."); pack_start(resultlabel); }