kruskalbox.cc
author hegyi
Fri, 13 Oct 2006 13:53:44 +0000
changeset 163 443bc769b344
parent 116 2bd795bb9984
child 174 95872af46fc4
permissions -rw-r--r--
Dijkstra in GUI - and the body...
     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       const 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 }