gui/kruskalbox.cc
changeset 2104 8e27998e9b1d
parent 1884 9c061834b33b
equal deleted inserted replaced
6:9b2fd2f16d7c -1:000000000000
     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 }