1.1 --- a/mw-mapselector.cc Wed Nov 23 16:24:59 2005 +0000
1.2 +++ b/mw-mapselector.cc Tue Nov 29 19:31:58 2005 +0000
1.3 @@ -1,8 +1,8 @@
1.4 #include "map_win.h"
1.5
1.6 -MapWin::MapSelector::MapSelector(GraphDisplayerCanvas & grdispc, MapStorage & mapst, int identifier, bool edge):gdc(grdispc),ms(mapst),id(identifier),itisedge(edge),default_state(true),set_new_map(false),node_to_update(INVALID),edge_to_update(INVALID)
1.7 +MapWin::MapSelector::MapSelector(std::vector<std::string> ml, int identifier, bool edge):id(identifier),itisedge(edge),default_state(true),set_new_map(false)
1.8 {
1.9 - update_list();
1.10 + update_list(ml);
1.11
1.12 cbt.set_active(0);
1.13
1.14 @@ -50,27 +50,16 @@
1.15 void MapWin::MapSelector::new_but_pressed()
1.16 {
1.17 set_new_map=true;
1.18 - (new NewMapWin("NewMapWin", gdc, itisedge, false))->run();
1.19 + signal_newmapwin.emit(itisedge);
1.20 }
1.21
1.22 -void MapWin::MapSelector::update_list()
1.23 +void MapWin::MapSelector::update_list( std::vector< std::string > ml )
1.24 {
1.25 cbt.clear();
1.26 - if(itisedge)
1.27 + std::vector< std::string >::iterator emsi=ml.begin();
1.28 + for(;emsi!=ml.end();emsi++)
1.29 {
1.30 - std::map< std::string,Graph::EdgeMap<double> * >::iterator emsi=ms.beginOfEdgeMaps();
1.31 - for(;emsi!=ms.endOfEdgeMaps();emsi++)
1.32 - {
1.33 - cbt.append_text(emsi->first);
1.34 - }
1.35 - }
1.36 - else
1.37 - {
1.38 - std::map< std::string,Graph::NodeMap<double> * >::iterator emsi=ms.beginOfNodeMaps();
1.39 - for(;emsi!=ms.endOfNodeMaps();emsi++)
1.40 - {
1.41 - cbt.append_text(emsi->first);
1.42 - }
1.43 + cbt.append_text(*emsi);
1.44 }
1.45 cbt.prepend_text("Default values");
1.46 }
1.47 @@ -83,52 +72,12 @@
1.48 Glib::ustring mapname = cbt.get_active_text();
1.49 if(!(mapname.empty())) //We seem to get 2 signals, one when the text is empty.
1.50 {
1.51 - if(itisedge)
1.52 - {
1.53 - if( ( (ms.edgemap_storage).find(mapname) != (ms.edgemap_storage).end() ) )
1.54 - {
1.55 - Edge edge=edge_to_update;
1.56 - switch(id)
1.57 - {
1.58 - case E_WIDTH:
1.59 - gdc.changeEdgeWidth(mapname, edge);
1.60 - break;
1.61 - case E_COLOR:
1.62 - gdc.changeEdgeColor(mapname, edge);
1.63 - break;
1.64 - case E_TEXT:
1.65 - gdc.changeEdgeText(mapname, edge);
1.66 - break;
1.67 - default:
1.68 - std::cerr<<"Error\n";
1.69 - }
1.70 - }
1.71 - }
1.72 - else
1.73 - {
1.74 - if( ( (ms.nodemap_storage).find(mapname) != (ms.nodemap_storage).end() ) )
1.75 - {
1.76 - Node node=node_to_update;
1.77 - switch(id)
1.78 - {
1.79 - case N_RADIUS:
1.80 - gdc.changeNodeRadius(mapname, node);
1.81 - break;
1.82 - case N_COLOR:
1.83 - gdc.changeNodeColor(mapname, node);
1.84 - break;
1.85 - case N_TEXT:
1.86 - gdc.changeNodeText(mapname, node);
1.87 - break;
1.88 - default:
1.89 - std::cerr<<"Error\n";
1.90 - }
1.91 - }
1.92 - }
1.93 + signal_cbt.emit(mapname);
1.94 }
1.95 }
1.96 else if((!default_state)&&(cbt.get_active_row_number()==0))
1.97 {
1.98 + signal_cbt.emit("");
1.99 reset();
1.100 }
1.101 }
1.102 @@ -138,71 +87,9 @@
1.103 default_state=true;
1.104 cbt.set_active(0);
1.105
1.106 - if(itisedge)
1.107 - {
1.108 - Edge edge=edge_to_update;
1.109 - switch(id)
1.110 - {
1.111 - case E_WIDTH:
1.112 - gdc.resetEdgeWidth(edge);
1.113 - break;
1.114 - case E_COLOR:
1.115 - gdc.resetEdgeColor(edge);
1.116 - break;
1.117 - case E_TEXT:
1.118 - gdc.resetEdgeText(edge);
1.119 - break;
1.120 - default:
1.121 - std::cerr<<"Error\n";
1.122 - }
1.123 - }
1.124 - else
1.125 - {
1.126 - Node node=node_to_update;
1.127 - switch(id)
1.128 - {
1.129 - case N_RADIUS:
1.130 - gdc.resetNodeRadius(node);
1.131 - break;
1.132 - case N_COLOR:
1.133 - gdc.resetNodeColor(node);
1.134 - break;
1.135 - case N_TEXT:
1.136 - gdc.resetNodeText(node);
1.137 - break;
1.138 - default:
1.139 - std::cerr<<"Error\n";
1.140 - }
1.141 - }
1.142 + signal_cbt.emit("");
1.143 }
1.144
1.145 -void MapWin::MapSelector::update(Node node)
1.146 -{
1.147 - node_to_update=node;
1.148 - if(default_state)
1.149 - {
1.150 - reset();
1.151 - }
1.152 - else
1.153 - {
1.154 - comboChanged();
1.155 - }
1.156 - node_to_update=INVALID;
1.157 -}
1.158 -
1.159 -void MapWin::MapSelector::update(Edge edge)
1.160 -{
1.161 - edge_to_update=edge;
1.162 - if(default_state)
1.163 - {
1.164 - reset();
1.165 - }
1.166 - else
1.167 - {
1.168 - comboChanged();
1.169 - }
1.170 - edge_to_update=INVALID;
1.171 -}
1.172
1.173 Glib::ustring MapWin::MapSelector::get_active_text()
1.174 {
1.175 @@ -223,3 +110,13 @@
1.176 set_new_map=false;
1.177 }
1.178 }
1.179 +
1.180 +sigc::signal<void, std::string> MapWin::MapSelector::signal_cbt_ch()
1.181 +{
1.182 + return signal_cbt;
1.183 +}
1.184 +
1.185 +sigc::signal<void, bool> MapWin::MapSelector::signal_newmapwin_needed()
1.186 +{
1.187 + return signal_newmapwin;
1.188 +}