| 1 | #include <kruskalbox.h> | 
|---|
| 2 |  | 
|---|
| 3 | enum {INPUT, OUTPUT, MAP_NUM}; | 
|---|
| 4 |  | 
|---|
| 5 | KruskalBox::KruskalBox(std::vector<std::string> t):AlgoBox() | 
|---|
| 6 | { | 
|---|
| 7 |   init(t); | 
|---|
| 8 | } | 
|---|
| 9 |      | 
|---|
| 10 | void KruskalBox::run() | 
|---|
| 11 | { | 
|---|
| 12 |   if( | 
|---|
| 13 |      tabcbt.get_active_text()!="" && | 
|---|
| 14 |      (edgemapcbts[INPUT])->get_active_text()!="" && | 
|---|
| 15 |      (edgemapcbts[OUTPUT])->get_active_text()!="" | 
|---|
| 16 |      ) | 
|---|
| 17 |     { | 
|---|
| 18 |  | 
|---|
| 19 |       Graph g=mapstorage->graph; | 
|---|
| 20 |       Graph::EdgeMap<double> * inputmap= | 
|---|
| 21 |         ((mapstorage->edgemap_storage)[(edgemapcbts[INPUT])->get_active_text()]); | 
|---|
| 22 |       Graph::EdgeMap<bool> outputmap(g); | 
|---|
| 23 |       double res=kruskal(g, *inputmap, outputmap); | 
|---|
| 24 |  | 
|---|
| 25 |       for (EdgeIt i(g); i!=INVALID; ++i) | 
|---|
| 26 |         { | 
|---|
| 27 |           if(outputmap[i]) | 
|---|
| 28 |             { | 
|---|
| 29 |               (*((mapstorage->edgemap_storage)[(edgemapcbts[OUTPUT])-> | 
|---|
| 30 |                                                get_active_text()]))[i]=1; | 
|---|
| 31 |             } | 
|---|
| 32 |           else | 
|---|
| 33 |             { | 
|---|
| 34 |               (*((mapstorage->edgemap_storage)[(edgemapcbts[OUTPUT])-> | 
|---|
| 35 |                                                get_active_text()]))[i]=0; | 
|---|
| 36 |             } | 
|---|
| 37 |         } | 
|---|
| 38 |  | 
|---|
| 39 |       std::ostringstream o; | 
|---|
| 40 |       o << "Result: " << res; | 
|---|
| 41 |       resultlabel.set_text(o.str()); | 
|---|
| 42 |  | 
|---|
| 43 |       mapstorage->mapChanged(true, (edgemapcbts[OUTPUT])->get_active_text()); | 
|---|
| 44 |       //   mapstorage->changeActiveMap(true, E_COLOR, | 
|---|
| 45 |       //                              (edgemapcbts[OUTPUT])->get_active_text()); | 
|---|
| 46 |       //   mapstorage->changeActiveMap(true, E_TEXT, | 
|---|
| 47 |       //                              (edgemapcbts[INPUT])->get_active_text()); | 
|---|
| 48 |    | 
|---|
| 49 |     } | 
|---|
| 50 | } | 
|---|
| 51 |      | 
|---|
| 52 | void KruskalBox::build_box() | 
|---|
| 53 | { | 
|---|
| 54 |   std::vector<std::string> empty_vector; | 
|---|
| 55 |  | 
|---|
| 56 |   addMapSelector("Edgecosts: ", true); | 
|---|
| 57 |   addMapSelector("Edges of tree here: ", true); | 
|---|
| 58 |  | 
|---|
| 59 |   resultlabel.set_text("Result: algorithm is not run yet."); | 
|---|
| 60 |   pack_start(resultlabel); | 
|---|
| 61 | } | 
|---|