gui/kruskalbox.cc
author alpar
Fri, 06 Jan 2006 10:42:58 +0000
changeset 1880 0d6da6e6a775
parent 1879 01d41844ef46
child 1881 f40cdc2057c2
permissions -rw-r--r--
Reformatting: too long code lines.
     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->changeActiveMap(true, E_COLOR,
    37 			      (edgemapcbts[OUTPUT])->get_active_text());
    38   mapstorage->changeActiveMap(true, E_TEXT,
    39 			      (edgemapcbts[INPUT])->get_active_text());
    40 }
    41     
    42 void KruskalBox::build_box()
    43 {
    44   edgemapcbts.resize(MAP_NUM);
    45   Gtk::HBox * hbox;
    46 
    47   hbox=new Gtk::HBox();
    48 
    49   label=new Gtk::Label("Edgecosts: ");
    50 
    51   edgemapcbts[0]=new Gtk::ComboBoxText();
    52 
    53   hbox->pack_start(*label);
    54   hbox->pack_start(*(edgemapcbts[INPUT]));
    55   pack_start(*hbox);
    56 
    57   hbox=new Gtk::HBox();
    58 
    59   label=new Gtk::Label("Edges of tree here: ");
    60 
    61   edgemapcbts[1]=new Gtk::ComboBoxText();
    62 
    63   hbox->pack_start(*label);
    64   hbox->pack_start(*(edgemapcbts[OUTPUT]));
    65   pack_start(*hbox);
    66 
    67   resultlabel.set_text("Result: algorithm is not run yet.");
    68   pack_start(resultlabel);
    69 }