kruskalbox.cc
changeset 201 879e47e5b731
parent 194 6b2b718420eb
equal deleted inserted replaced
9:cbaf3fe20586 10:b890c6bc56fc
    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 }