diff -r c7ae8642a8d8 -r 879e47e5b731 kruskalbox.cc --- a/kruskalbox.cc Wed May 02 20:33:58 2007 +0000 +++ b/kruskalbox.cc Wed Jan 02 21:03:09 2008 +0000 @@ -33,51 +33,50 @@ void KruskalBox::run() { if( - tabcbt.get_active_text()!="" && - (edgemapcbts[INPUT])->get_active_text()!="" && - (edgemapcbts[OUTPUT])->get_active_text()!="" - ) + tabcbt.get_active_text()!="" && + (edgemapcbts[INPUT])->get_active_text()!="" && + (edgemapcbts[OUTPUT])->get_active_text()!="" + ) + { + + const Graph &g=mapstorage->getGraph(); + std::string input_map_name = edgemapcbts[INPUT]->get_active_text(); + Graph::EdgeMap outputmap(g); + const MapStorage::NumericEdgeMap& inputmap= + mapstorage->getNumericEdgeMap(input_map_name); + double res=kruskal(g, inputmap, outputmap); + + for (EdgeIt i(g); i!=INVALID; ++i) { + if(outputmap[i]) + { + mapstorage->set(edgemapcbts[OUTPUT]->get_active_text(), i, 1.0); + } + else + { + mapstorage->set(edgemapcbts[OUTPUT]->get_active_text(), i, 0.0); + } + } - const 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); + std::ostringstream o; + o << "Result: " << res; + resultlabel.set_text(o.str()); - 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; - } - } + 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()); - 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; - addMapSelector("Edgecosts: ", true); - addMapSelector("Edges of tree here: ", true); + addMapSelector("Edgecosts: ", true, NUM); + addMapSelector("Edges of tree here: ", true, NUM); resultlabel.set_text("Result: algorithm is not run yet."); pack_start(resultlabel);