Mapselector widget reached its first release, but there are still work to do on it, I know...
1 #include "mapselector.h"
3 MapSelector::MapSelector(GraphDisplayerCanvas & grdispc, MapStorage & mapst, MapWin & mapw, int identifier, bool edge):gdc(grdispc),ms(mapst),mw(mapw),id(identifier),itisedge(edge),default_state(true),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), &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, &MapSelector::reset)
35 newbut=new Gtk::Button(Gtk::Stock::NEW);
45 void MapSelector::update_list()
50 std::map< std::string,Graph::EdgeMap<double> * >::iterator emsi=ms.beginOfEdgeMaps();
51 for(;emsi!=ms.endOfEdgeMaps();emsi++)
53 cbt.append_text(emsi->first);
58 std::map< std::string,Graph::NodeMap<double> * >::iterator emsi=ms.beginOfNodeMaps();
59 for(;emsi!=ms.endOfNodeMaps();emsi++)
61 cbt.append_text(emsi->first);
64 cbt.prepend_text("Default values");
67 void MapSelector::comboChanged()
69 if(cbt.get_active_row_number()!=0)
72 Glib::ustring mapname = cbt.get_active_text();
73 if(!(mapname.empty())) //We seem to get 2 signals, one when the text is empty.
77 if( ( (ms.edgemap_storage).find(mapname) != (ms.edgemap_storage).end() ) )
79 Edge edge=edge_to_update;
83 gdc.changeEdgeWidth(mapname, edge);
86 gdc.changeEdgeColor(mapname, edge);
89 gdc.changeEdgeText(mapname, edge);
98 if( ( (ms.nodemap_storage).find(mapname) != (ms.nodemap_storage).end() ) )
100 Node node=node_to_update;
104 gdc.changeNodeRadius(mapname, node);
107 gdc.changeNodeColor(mapname, node);
110 gdc.changeNodeText(mapname, node);
113 std::cerr<<"Error\n";
119 else if((!default_state)&&(cbt.get_active_row_number()==0))
125 void MapSelector::reset()
132 Edge edge=edge_to_update;
136 gdc.resetEdgeWidth(edge);
139 gdc.resetEdgeColor(edge);
142 gdc.resetEdgeText(edge);
145 std::cerr<<"Error\n";
150 Node node=node_to_update;
154 gdc.resetNodeRadius(node);
157 gdc.resetNodeColor(node);
160 gdc.resetNodeText(node);
163 std::cerr<<"Error\n";
168 void MapSelector::update(Node node)
179 node_to_update=INVALID;
182 void MapSelector::update(Edge edge)
193 edge_to_update=INVALID;
196 Glib::ustring MapSelector::get_active_text()
198 return cbt.get_active_text();
201 void MapSelector::set_active_text(Glib::ustring text)
203 cbt.set_active_text(text);
206 void MapSelector::append_text(Glib::ustring text)
208 cbt.append_text(text);