1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/gui/map_win.cc Mon May 23 04:48:14 2005 +0000
1.3 @@ -0,0 +1,116 @@
1.4 +#include <map_win.h>
1.5 +#include <set>
1.6 +
1.7 +MapWin::MapWin(const std::string& title, MapStorage & mapst, GraphDisplayerCanvas & grdispc):gdc(grdispc),ms(mapst)
1.8 +{
1.9 + set_title(title);
1.10 + set_default_size(400, 200);
1.11 +
1.12 + rb_array=new Gtk::RadioButton * [PROPERTY_NUM];
1.13 + vbox_r1=new Gtk::VBox[PROPERTY_NUM];
1.14 + vbox_r2=new Gtk::VBox[PROPERTY_NUM];
1.15 + radios=new Gtk::HBox[PROPERTY_NUM];
1.16 + for(int i=0;i<PROPERTY_NUM;i++)
1.17 + {
1.18 + rb_array[i]=new Gtk::RadioButton[ms.numOfEdgeMaps()+1];
1.19 +
1.20 + Gtk::RadioButton::Group group;
1.21 +
1.22 + std::map< std::string,Graph::EdgeMap<double> * >::iterator emsi=ms.beginOfEdgeMaps();
1.23 + std::set<int> props;
1.24 +
1.25 + int actprop;
1.26 + for(int j=0;j<ms.numOfEdgeMaps();j++)
1.27 + {
1.28 +
1.29 + if(emsi->second==&(ms.default_edgemaps[i]))
1.30 + {
1.31 + actprop=j;
1.32 + }
1.33 + for(int k=0;k<PROPERTY_NUM;k++)
1.34 + {
1.35 + if(emsi->second==&(ms.default_edgemaps[k]))
1.36 + {
1.37 + props.insert(j);
1.38 + }
1.39 + }
1.40 + emsi++;
1.41 + }
1.42 +
1.43 + rb_array[i][0].set_group(group);
1.44 + rb_array[i][0].set_label("Default");
1.45 + rb_array[i][0].signal_clicked().connect( sigc::bind( sigc::bind( sigc::mem_fun(*this, &MapWin::radio_click), 0), i) );
1.46 + vbox_r1[i].pack_start(rb_array[i][0]);
1.47 +
1.48 +
1.49 + emsi=ms.beginOfEdgeMaps();
1.50 + int actpos=1;
1.51 + for(int j=0;j<ms.numOfEdgeMaps();j++)
1.52 + {
1.53 + if( ( props.find(j) )==( props.end() ) )
1.54 + {
1.55 + rb_array[i][actpos].set_group(group);
1.56 + rb_array[i][actpos].set_label(emsi->first);
1.57 + rb_array[i][actpos].signal_clicked().connect
1.58 + (
1.59 + sigc::bind(
1.60 + sigc::bind(
1.61 + sigc::mem_fun(*this, &MapWin::radio_click),
1.62 + actpos
1.63 + ),
1.64 + i
1.65 + )
1.66 + );
1.67 +
1.68 + if(actpos<(ms.numOfEdgeMaps()-PROPERTY_NUM+1)/2)
1.69 + {
1.70 + vbox_r1[i].pack_start(rb_array[i][actpos]);
1.71 + }
1.72 + else
1.73 + {
1.74 + vbox_r2[i].pack_start(rb_array[i][actpos]);
1.75 + }
1.76 + actpos++;
1.77 + }
1.78 + emsi++;
1.79 + }
1.80 + radios[i].pack_start(vbox_r1[i]);
1.81 + radios[i].pack_start(vbox_r2[i]);
1.82 + notebook.append_page(radios[i], property_strings[i]);
1.83 + }
1.84 +
1.85 + add(vbox_b);
1.86 + vbox_b.pack_start(notebook);
1.87 +
1.88 + show_all_children();
1.89 +
1.90 +}
1.91 +
1.92 +void MapWin::radio_click(int prop, int actpos)
1.93 +{
1.94 + if(rb_array[prop][actpos].get_active())
1.95 + {
1.96 +
1.97 + std::string mapname=rb_array[prop][actpos].get_label();
1.98 +
1.99 + if(mapname=="Default")
1.100 + {
1.101 + mapname=property_strings[prop];
1.102 + }
1.103 +
1.104 + switch(prop)
1.105 + {
1.106 + case WIDTH:
1.107 + gdc.changeLineWidth(mapname);
1.108 + break;
1.109 + case COLOR:
1.110 + gdc.changeColor(mapname);
1.111 + break;
1.112 + case TEXT:
1.113 + gdc.changeText(mapname);
1.114 + break;
1.115 + default:
1.116 + std::cout<<"Error\n";
1.117 + }
1.118 + }
1.119 +};