COIN-OR::LEMON - Graph Library

source: lemon-0.x/gui/map_win.cc @ 1445:4635352e5524

Last change on this file since 1445:4635352e5524 was 1442:1e3c69aa035b, checked in by Akos Ladanyi, 15 years ago

dos2unix

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