map_win.cc
author hegyi
Fri, 27 May 2005 10:34:20 +0000
branchgui
changeset 4 e099638ff236
parent 1 c69fedfbb9b3
child 6 603b85626bc0
permissions -rw-r--r--
Small documentation is added to GUI
ladanyi@1
     1
#include <map_win.h>
ladanyi@1
     2
#include <set>
ladanyi@1
     3
ladanyi@1
     4
MapWin::MapWin(const std::string& title, MapStorage & mapst, GraphDisplayerCanvas & grdispc):gdc(grdispc),ms(mapst)
ladanyi@1
     5
{
hegyi@4
     6
hegyi@4
     7
  //most nem kommentezem fel, mert ugyis valtozik
hegyi@4
     8
ladanyi@1
     9
  set_title(title);
ladanyi@1
    10
  set_default_size(400, 200);
ladanyi@1
    11
ladanyi@1
    12
  rb_array=new Gtk::RadioButton * [PROPERTY_NUM];
ladanyi@1
    13
  vbox_r1=new Gtk::VBox[PROPERTY_NUM];
ladanyi@1
    14
  vbox_r2=new Gtk::VBox[PROPERTY_NUM];
ladanyi@1
    15
  radios=new Gtk::HBox[PROPERTY_NUM];
ladanyi@1
    16
  for(int i=0;i<PROPERTY_NUM;i++)
ladanyi@1
    17
  {
ladanyi@1
    18
    rb_array[i]=new Gtk::RadioButton[ms.numOfEdgeMaps()+1];
ladanyi@1
    19
ladanyi@1
    20
    Gtk::RadioButton::Group group;
ladanyi@1
    21
ladanyi@1
    22
    std::map< std::string,Graph::EdgeMap<double> * >::iterator emsi=ms.beginOfEdgeMaps();
ladanyi@1
    23
    std::set<int> props;
ladanyi@1
    24
ladanyi@1
    25
    int actprop;
ladanyi@1
    26
    for(int j=0;j<ms.numOfEdgeMaps();j++)
ladanyi@1
    27
    {
ladanyi@1
    28
ladanyi@1
    29
      if(emsi->second==&(ms.default_edgemaps[i]))
ladanyi@1
    30
      {
ladanyi@1
    31
	actprop=j;
ladanyi@1
    32
      }
ladanyi@1
    33
      for(int k=0;k<PROPERTY_NUM;k++)
ladanyi@1
    34
      {
ladanyi@1
    35
	if(emsi->second==&(ms.default_edgemaps[k]))
ladanyi@1
    36
	{
ladanyi@1
    37
	  props.insert(j);
ladanyi@1
    38
	}
ladanyi@1
    39
      }
ladanyi@1
    40
      emsi++;
ladanyi@1
    41
    }
ladanyi@1
    42
ladanyi@1
    43
    rb_array[i][0].set_group(group);
ladanyi@1
    44
    rb_array[i][0].set_label("Default");
ladanyi@1
    45
    rb_array[i][0].signal_clicked().connect( sigc::bind( sigc::bind( sigc::mem_fun(*this, &MapWin::radio_click), 0), i) );
ladanyi@1
    46
    vbox_r1[i].pack_start(rb_array[i][0]);
ladanyi@1
    47
ladanyi@1
    48
ladanyi@1
    49
    emsi=ms.beginOfEdgeMaps();
ladanyi@1
    50
    int actpos=1;
ladanyi@1
    51
    for(int j=0;j<ms.numOfEdgeMaps();j++)
ladanyi@1
    52
    {
ladanyi@1
    53
      if( ( props.find(j) )==( props.end() ) )
ladanyi@1
    54
      {
ladanyi@1
    55
	rb_array[i][actpos].set_group(group);
ladanyi@1
    56
	rb_array[i][actpos].set_label(emsi->first);
ladanyi@1
    57
	rb_array[i][actpos].signal_clicked().connect
ladanyi@1
    58
	  (
ladanyi@1
    59
	   sigc::bind( 
ladanyi@1
    60
	    sigc::bind(
ladanyi@1
    61
	     sigc::mem_fun(*this, &MapWin::radio_click),
ladanyi@1
    62
	     actpos
ladanyi@1
    63
	    ),
ladanyi@1
    64
	    i
ladanyi@1
    65
	   ) 
ladanyi@1
    66
	  );
ladanyi@1
    67
ladanyi@1
    68
    	if(actpos<(ms.numOfEdgeMaps()-PROPERTY_NUM+1)/2)
ladanyi@1
    69
        {
ladanyi@1
    70
          vbox_r1[i].pack_start(rb_array[i][actpos]);
ladanyi@1
    71
	}
ladanyi@1
    72
	else
ladanyi@1
    73
        {
ladanyi@1
    74
	  vbox_r2[i].pack_start(rb_array[i][actpos]);
ladanyi@1
    75
	}
ladanyi@1
    76
	actpos++;
ladanyi@1
    77
      }
ladanyi@1
    78
      emsi++;
ladanyi@1
    79
    }
ladanyi@1
    80
    radios[i].pack_start(vbox_r1[i]);
ladanyi@1
    81
    radios[i].pack_start(vbox_r2[i]);
ladanyi@1
    82
    notebook.append_page(radios[i], property_strings[i]);
ladanyi@1
    83
  }
ladanyi@1
    84
ladanyi@1
    85
  add(vbox_b);
ladanyi@1
    86
  vbox_b.pack_start(notebook);
ladanyi@1
    87
ladanyi@1
    88
  show_all_children();
ladanyi@1
    89
ladanyi@1
    90
}
ladanyi@1
    91
ladanyi@1
    92
void MapWin::radio_click(int prop, int actpos)
ladanyi@1
    93
{
hegyi@4
    94
hegyi@4
    95
  //most nem kommentezem fel, mert ugyis valtozik
hegyi@4
    96
ladanyi@1
    97
  if(rb_array[prop][actpos].get_active())
ladanyi@1
    98
  {
ladanyi@1
    99
ladanyi@1
   100
    std::string mapname=rb_array[prop][actpos].get_label();
ladanyi@1
   101
ladanyi@1
   102
    if(mapname=="Default")
ladanyi@1
   103
    {
ladanyi@1
   104
      mapname=property_strings[prop];
ladanyi@1
   105
    }
ladanyi@1
   106
ladanyi@1
   107
    switch(prop)
ladanyi@1
   108
    {
ladanyi@1
   109
      case WIDTH:
ladanyi@1
   110
        gdc.changeLineWidth(mapname);
ladanyi@1
   111
        break;
ladanyi@1
   112
      case COLOR:
ladanyi@1
   113
        gdc.changeColor(mapname);
ladanyi@1
   114
        break;
ladanyi@1
   115
      case TEXT:
ladanyi@1
   116
        gdc.changeText(mapname);
ladanyi@1
   117
        break;
ladanyi@1
   118
      default:
ladanyi@1
   119
        std::cout<<"Error\n";
ladanyi@1
   120
    }
ladanyi@1
   121
  }
ladanyi@1
   122
};