NewMapWin has become Dialog instead of Window. Therefore it is created dynamically, when there is need for it, instead of keeping one instance in memory. This solution is slower, but more correct than before.
3 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)
9 //binding signal to the actual entry
10 cbt.signal_changed().connect
12 sigc::mem_fun((*this), &MapWin::MapSelector::comboChanged),
18 label=new Gtk::Label(edge_property_strings[id]);
22 label=new Gtk::Label(node_property_strings[id]);
25 label->set_width_chars(longest_property_string_length);
27 defbut=new Gtk::Button();
28 defbut->set_label("Reset");
30 defbut->signal_pressed().connect
32 sigc::mem_fun(*this, &MapWin::MapSelector::reset)
35 newbut=new Gtk::Button(Gtk::Stock::NEW);
37 newbut->signal_pressed().connect
39 sigc::mem_fun(*this, &MapWin::MapSelector::new_but_pressed)
50 void MapWin::MapSelector::new_but_pressed()
53 (new NewMapWin("NewMapWin", gdc, itisedge, false))->run();
56 void MapWin::MapSelector::update_list()
61 std::map< std::string,Graph::EdgeMap<double> * >::iterator emsi=ms.beginOfEdgeMaps();
62 for(;emsi!=ms.endOfEdgeMaps();emsi++)
64 cbt.append_text(emsi->first);
69 std::map< std::string,Graph::NodeMap<double> * >::iterator emsi=ms.beginOfNodeMaps();
70 for(;emsi!=ms.endOfNodeMaps();emsi++)
72 cbt.append_text(emsi->first);
75 cbt.prepend_text("Default values");
78 void MapWin::MapSelector::comboChanged()
80 if(cbt.get_active_row_number()!=0)
83 Glib::ustring mapname = cbt.get_active_text();
84 if(!(mapname.empty())) //We seem to get 2 signals, one when the text is empty.
88 if( ( (ms.edgemap_storage).find(mapname) != (ms.edgemap_storage).end() ) )
90 Edge edge=edge_to_update;
94 gdc.changeEdgeWidth(mapname, edge);
97 gdc.changeEdgeColor(mapname, edge);
100 gdc.changeEdgeText(mapname, edge);
103 std::cerr<<"Error\n";
109 if( ( (ms.nodemap_storage).find(mapname) != (ms.nodemap_storage).end() ) )
111 Node node=node_to_update;
115 gdc.changeNodeRadius(mapname, node);
118 gdc.changeNodeColor(mapname, node);
121 gdc.changeNodeText(mapname, node);
124 std::cerr<<"Error\n";
130 else if((!default_state)&&(cbt.get_active_row_number()==0))
136 void MapWin::MapSelector::reset()
143 Edge edge=edge_to_update;
147 gdc.resetEdgeWidth(edge);
150 gdc.resetEdgeColor(edge);
153 gdc.resetEdgeText(edge);
156 std::cerr<<"Error\n";
161 Node node=node_to_update;
165 gdc.resetNodeRadius(node);
168 gdc.resetNodeColor(node);
171 gdc.resetNodeText(node);
174 std::cerr<<"Error\n";
179 void MapWin::MapSelector::update(Node node)
190 node_to_update=INVALID;
193 void MapWin::MapSelector::update(Edge edge)
204 edge_to_update=INVALID;
207 Glib::ustring MapWin::MapSelector::get_active_text()
209 return cbt.get_active_text();
212 void MapWin::MapSelector::set_active_text(Glib::ustring text)
214 cbt.set_active_text(text);
217 void MapWin::MapSelector::append_text(Glib::ustring text)
219 cbt.append_text(text);
222 set_active_text(text);