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.
4 bool MapWin::closeIfEscapeIsPressed(GdkEventKey* e)
6 if(e->keyval==GDK_Escape)
13 MapWin::MapWin(const std::string& title, MapStorage & mapst, GraphDisplayerCanvas & grdispc):gdc(grdispc),ms(mapst)
16 set_default_size(200, 50);
18 signal_key_press_event().connect(sigc::mem_fun(*this, &MapWin::closeIfEscapeIsPressed));
20 e_combo_array=new MapSelector * [EDGE_PROPERTY_NUM];
22 table=new Gtk::Table(EDGE_PROPERTY_NUM, 1, false);
24 for(int i=0;i<EDGE_PROPERTY_NUM;i++)
26 e_combo_array[i]=new MapSelector(gdc, ms, i, true);
28 (*table).attach((*(e_combo_array[i])),0,1,i,i+1,Gtk::SHRINK,Gtk::SHRINK,10,3);
31 vbox.pack_start(*(new Gtk::Label("Edge properties")));
33 vbox.pack_start(*table);
35 vbox.pack_start(*(new Gtk::HSeparator));
37 n_combo_array=new MapSelector * [NODE_PROPERTY_NUM];
39 table=new Gtk::Table(NODE_PROPERTY_NUM, 1, false);
41 for(int i=0;i<NODE_PROPERTY_NUM;i++)
43 n_combo_array[i]=new MapSelector(gdc, ms, i, false);
45 (*table).attach((*(n_combo_array[i])),0,1,i,i+1,Gtk::SHRINK,Gtk::SHRINK,10,3);
50 vbox.pack_start(*(new Gtk::Label("Node properties")));
52 vbox.pack_start(*table);
60 for(int i=0;i<EDGE_PROPERTY_NUM;i++)
62 e_combo_array[i]->update_list();
65 for(int i=0;i<NODE_PROPERTY_NUM;i++)
67 n_combo_array[i]->update_list();
72 void MapWin::updateNode(Node node)
74 for(int i=0;i<NODE_PROPERTY_NUM;i++)
76 n_combo_array[i]->update(node);
80 void MapWin::updateEdge(Edge edge)
82 for(int i=0;i<EDGE_PROPERTY_NUM;i++)
84 e_combo_array[i]->update(edge);
88 void MapWin::registerNewEdgeMap(std::string newmapname)
90 for(int i=0;i<EDGE_PROPERTY_NUM;i++)
92 //filling in combo box with choices
93 e_combo_array[i]->append_text((Glib::ustring)newmapname);
97 void MapWin::registerNewNodeMap(std::string newmapname)
99 for(int i=0;i<NODE_PROPERTY_NUM;i++)
101 //filling in combo box with choices
102 n_combo_array[i]->append_text((Glib::ustring)newmapname);