kruskalbox.cc
author hegyi
Fri, 06 Jan 2006 13:58:49 +0000
branchgui
changeset 111 ab3107255754
parent 110 99935b512b1c
child 114 0ace7edbb06f
permissions -rw-r--r--
Result of KruskalGUIAlgo is refreshed if displayed, but no more setin a forced way.
     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   Graph g=mapstorage->graph;
    13   Graph::EdgeMap<double> * inputmap=
    14     ((mapstorage->edgemap_storage)[(edgemapcbts[INPUT])->get_active_text()]);
    15   Graph::EdgeMap<bool> outputmap(g);
    16   double res=kruskal(g, *inputmap, outputmap);
    17 
    18   for (EdgeIt i(g); i!=INVALID; ++i)
    19   {
    20     if(outputmap[i])
    21       {
    22 	(*((mapstorage->edgemap_storage)[(edgemapcbts[OUTPUT])->
    23 					 get_active_text()]))[i]=1;
    24       }
    25     else
    26       {
    27 	(*((mapstorage->edgemap_storage)[(edgemapcbts[OUTPUT])->
    28 					 get_active_text()]))[i]=0;
    29       }
    30   }
    31 
    32   std::ostringstream o;
    33   o << "Result: " << res;
    34   resultlabel.set_text(o.str());
    35 
    36   mapstorage->mapChanged(true, (edgemapcbts[OUTPUT])->get_active_text());
    37   //   mapstorage->changeActiveMap(true, E_COLOR,
    38   // 			      (edgemapcbts[OUTPUT])->get_active_text());
    39   //   mapstorage->changeActiveMap(true, E_TEXT,
    40   // 			      (edgemapcbts[INPUT])->get_active_text());
    41   
    42 }
    43     
    44 void KruskalBox::build_box()
    45 {
    46   edgemapcbts.resize(MAP_NUM);
    47   Gtk::HBox * hbox;
    48 
    49   hbox=new Gtk::HBox();
    50 
    51   label=new Gtk::Label("Edgecosts: ");
    52 
    53   edgemapcbts[0]=new Gtk::ComboBoxText();
    54 
    55   hbox->pack_start(*label);
    56   hbox->pack_start(*(edgemapcbts[INPUT]));
    57   pack_start(*hbox);
    58 
    59   hbox=new Gtk::HBox();
    60 
    61   label=new Gtk::Label("Edges of tree here: ");
    62 
    63   edgemapcbts[1]=new Gtk::ComboBoxText();
    64 
    65   hbox->pack_start(*label);
    66   hbox->pack_start(*(edgemapcbts[OUTPUT]));
    67   pack_start(*hbox);
    68 
    69   resultlabel.set_text("Result: algorithm is not run yet.");
    70   pack_start(resultlabel);
    71 }