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.
hegyi@1876
     1
#include <kruskalbox.h>
hegyi@1876
     2
hegyi@1879
     3
enum {INPUT, OUTPUT, MAP_NUM};
hegyi@1879
     4
hegyi@1878
     5
KruskalBox::KruskalBox(std::vector<std::string> t):AlgoBox()
hegyi@1876
     6
{
hegyi@1878
     7
  init(t);
hegyi@1876
     8
}
hegyi@1876
     9
    
hegyi@1876
    10
void KruskalBox::run()
hegyi@1876
    11
{
hegyi@1879
    12
  Graph g=mapstorage->graph;
alpar@1880
    13
  Graph::EdgeMap<double> * inputmap=
alpar@1880
    14
    ((mapstorage->edgemap_storage)[(edgemapcbts[INPUT])->get_active_text()]);
hegyi@1879
    15
  Graph::EdgeMap<bool> outputmap(g);
hegyi@1879
    16
  double res=kruskal(g, *inputmap, outputmap);
hegyi@1879
    17
hegyi@1879
    18
  for (EdgeIt i(g); i!=INVALID; ++i)
hegyi@1879
    19
  {
hegyi@1879
    20
    if(outputmap[i])
hegyi@1879
    21
      {
alpar@1880
    22
	(*((mapstorage->edgemap_storage)[(edgemapcbts[OUTPUT])->
alpar@1880
    23
					 get_active_text()]))[i]=1;
hegyi@1879
    24
      }
hegyi@1879
    25
    else
hegyi@1879
    26
      {
alpar@1880
    27
	(*((mapstorage->edgemap_storage)[(edgemapcbts[OUTPUT])->
alpar@1880
    28
					 get_active_text()]))[i]=0;
hegyi@1879
    29
      }
hegyi@1879
    30
  }
hegyi@1879
    31
hegyi@1879
    32
  std::ostringstream o;
hegyi@1879
    33
  o << "Result: " << res;
hegyi@1879
    34
  resultlabel.set_text(o.str());
alpar@1880
    35
  
alpar@1880
    36
  mapstorage->changeActiveMap(true, E_COLOR,
alpar@1880
    37
			      (edgemapcbts[OUTPUT])->get_active_text());
alpar@1880
    38
  mapstorage->changeActiveMap(true, E_TEXT,
alpar@1880
    39
			      (edgemapcbts[INPUT])->get_active_text());
hegyi@1876
    40
}
hegyi@1876
    41
    
hegyi@1876
    42
void KruskalBox::build_box()
hegyi@1876
    43
{
hegyi@1879
    44
  edgemapcbts.resize(MAP_NUM);
hegyi@1879
    45
  Gtk::HBox * hbox;
hegyi@1876
    46
hegyi@1879
    47
  hbox=new Gtk::HBox();
hegyi@1879
    48
hegyi@1879
    49
  label=new Gtk::Label("Edgecosts: ");
hegyi@1876
    50
hegyi@1876
    51
  edgemapcbts[0]=new Gtk::ComboBoxText();
hegyi@1876
    52
hegyi@1876
    53
  hbox->pack_start(*label);
hegyi@1879
    54
  hbox->pack_start(*(edgemapcbts[INPUT]));
hegyi@1876
    55
  pack_start(*hbox);
hegyi@1879
    56
hegyi@1879
    57
  hbox=new Gtk::HBox();
hegyi@1879
    58
hegyi@1879
    59
  label=new Gtk::Label("Edges of tree here: ");
hegyi@1879
    60
hegyi@1879
    61
  edgemapcbts[1]=new Gtk::ComboBoxText();
hegyi@1879
    62
hegyi@1879
    63
  hbox->pack_start(*label);
hegyi@1879
    64
  hbox->pack_start(*(edgemapcbts[OUTPUT]));
hegyi@1879
    65
  pack_start(*hbox);
hegyi@1879
    66
hegyi@1879
    67
  resultlabel.set_text("Result: algorithm is not run yet.");
hegyi@1879
    68
  pack_start(resultlabel);
hegyi@1876
    69
}