31 } |
31 } |
32 |
32 |
33 void KruskalBox::run() |
33 void KruskalBox::run() |
34 { |
34 { |
35 if( |
35 if( |
36 tabcbt.get_active_text()!="" && |
36 tabcbt.get_active_text()!="" && |
37 (edgemapcbts[INPUT])->get_active_text()!="" && |
37 (edgemapcbts[INPUT])->get_active_text()!="" && |
38 (edgemapcbts[OUTPUT])->get_active_text()!="" |
38 (edgemapcbts[OUTPUT])->get_active_text()!="" |
39 ) |
39 ) |
|
40 { |
|
41 |
|
42 const Graph &g=mapstorage->getGraph(); |
|
43 std::string input_map_name = edgemapcbts[INPUT]->get_active_text(); |
|
44 Graph::EdgeMap<bool> outputmap(g); |
|
45 const MapStorage::NumericEdgeMap& inputmap= |
|
46 mapstorage->getNumericEdgeMap(input_map_name); |
|
47 double res=kruskal(g, inputmap, outputmap); |
|
48 |
|
49 for (EdgeIt i(g); i!=INVALID; ++i) |
40 { |
50 { |
|
51 if(outputmap[i]) |
|
52 { |
|
53 mapstorage->set(edgemapcbts[OUTPUT]->get_active_text(), i, 1.0); |
|
54 } |
|
55 else |
|
56 { |
|
57 mapstorage->set(edgemapcbts[OUTPUT]->get_active_text(), i, 0.0); |
|
58 } |
|
59 } |
41 |
60 |
42 const Graph &g=mapstorage->graph; |
61 std::ostringstream o; |
43 Graph::EdgeMap<double> * inputmap= |
62 o << "Result: " << res; |
44 ((mapstorage->edgemap_storage)[(edgemapcbts[INPUT])->get_active_text()]); |
63 resultlabel.set_text(o.str()); |
45 Graph::EdgeMap<bool> outputmap(g); |
|
46 double res=kruskal(g, *inputmap, outputmap); |
|
47 |
64 |
48 for (EdgeIt i(g); i!=INVALID; ++i) |
65 mapstorage->mapChanged(true, (edgemapcbts[OUTPUT])->get_active_text()); |
49 { |
66 // mapstorage->changeActiveMap(true, E_COLOR, |
50 if(outputmap[i]) |
67 // (edgemapcbts[OUTPUT])->get_active_text()); |
51 { |
68 // mapstorage->changeActiveMap(true, E_TEXT, |
52 (*((mapstorage->edgemap_storage)[(edgemapcbts[OUTPUT])-> |
69 // (edgemapcbts[INPUT])->get_active_text()); |
53 get_active_text()]))[i]=1; |
|
54 } |
|
55 else |
|
56 { |
|
57 (*((mapstorage->edgemap_storage)[(edgemapcbts[OUTPUT])-> |
|
58 get_active_text()]))[i]=0; |
|
59 } |
|
60 } |
|
61 |
70 |
62 std::ostringstream o; |
71 } |
63 o << "Result: " << res; |
|
64 resultlabel.set_text(o.str()); |
|
65 |
|
66 mapstorage->mapChanged(true, (edgemapcbts[OUTPUT])->get_active_text()); |
|
67 // mapstorage->changeActiveMap(true, E_COLOR, |
|
68 // (edgemapcbts[OUTPUT])->get_active_text()); |
|
69 // mapstorage->changeActiveMap(true, E_TEXT, |
|
70 // (edgemapcbts[INPUT])->get_active_text()); |
|
71 |
|
72 } |
|
73 } |
72 } |
74 |
73 |
75 void KruskalBox::build_box() |
74 void KruskalBox::build_box() |
76 { |
75 { |
77 std::vector<std::string> empty_vector; |
76 std::vector<std::string> empty_vector; |
78 |
77 |
79 addMapSelector("Edgecosts: ", true); |
78 addMapSelector("Edgecosts: ", true, NUM); |
80 addMapSelector("Edges of tree here: ", true); |
79 addMapSelector("Edges of tree here: ", true, NUM); |
81 |
80 |
82 resultlabel.set_text("Result: algorithm is not run yet."); |
81 resultlabel.set_text("Result: algorithm is not run yet."); |
83 pack_start(resultlabel); |
82 pack_start(resultlabel); |
84 } |
83 } |