97 //we mark the location of the event to be able to calculate parameters of dragging |
97 //we mark the location of the event to be able to calculate parameters of dragging |
98 window_to_world (e->button.x, e->button.y, clicked_x, clicked_y); |
98 window_to_world (e->button.x, e->button.y, clicked_x, clicked_y); |
99 |
99 |
100 active_item=(get_item_at(clicked_x, clicked_y)); |
100 active_item=(get_item_at(clicked_x, clicked_y)); |
101 active_node=INVALID; |
101 active_node=INVALID; |
102 for (NodeIt i(g); i!=INVALID; ++i) |
102 for (NodeIt i(mapstorage.graph); i!=INVALID; ++i) |
103 { |
103 { |
104 if(nodesmap[i]==active_item) |
104 if(nodesmap[i]==active_item) |
105 { |
105 { |
106 active_node=i; |
106 active_node=i; |
107 } |
107 } |
123 break; |
123 break; |
124 case GDK_MOTION_NOTIFY: |
124 case GDK_MOTION_NOTIFY: |
125 //we only have to do sg. if the mouse button is pressed AND the click was on a node that was found in the set of nodes |
125 //we only have to do sg. if the mouse button is pressed AND the click was on a node that was found in the set of nodes |
126 if(active_node!=INVALID) |
126 if(active_node!=INVALID) |
127 { |
127 { |
|
128 mapstorage.modified = true; |
|
129 mapstorage.coords.set(active_node, xy<double>(clicked_x, clicked_y)); |
128 //new coordinates will be the old values, |
130 //new coordinates will be the old values, |
129 //because the item will be moved to the |
131 //because the item will be moved to the |
130 //new coordinate therefore the new movement |
132 //new coordinate therefore the new movement |
131 //has to be calculated from here |
133 //has to be calculated from here |
132 |
134 |
145 clicked_y=new_y; |
147 clicked_y=new_y; |
146 |
148 |
147 //all the edges connected to the moved point has to be redrawn |
149 //all the edges connected to the moved point has to be redrawn |
148 EdgeIt ei; |
150 EdgeIt ei; |
149 |
151 |
150 g.firstOut(ei,active_node); |
152 mapstorage.graph.firstOut(ei,active_node); |
151 |
153 |
152 for(;ei!=INVALID;g.nextOut(ei)) |
154 for(;ei!=INVALID;mapstorage.graph.nextOut(ei)) |
153 { |
155 { |
154 Gnome::Canvas::Points coos; |
156 Gnome::Canvas::Points coos; |
155 double x1, x2, y1, y2; |
157 double x1, x2, y1, y2; |
156 |
158 |
157 nodesmap[g.source(ei)]->get_bounds(x1, y1, x2, y2); |
159 nodesmap[mapstorage.graph.source(ei)]->get_bounds(x1, y1, x2, y2); |
158 coos.push_back(Gnome::Art::Point((x1+x2)/2,(y1+y2)/2)); |
160 coos.push_back(Gnome::Art::Point((x1+x2)/2,(y1+y2)/2)); |
159 |
161 |
160 nodesmap[g.target(ei)]->get_bounds(x1, y1, x2, y2); |
162 nodesmap[mapstorage.graph.target(ei)]->get_bounds(x1, y1, x2, y2); |
161 coos.push_back(Gnome::Art::Point((x1+x2)/2,(y1+y2)/2)); |
163 coos.push_back(Gnome::Art::Point((x1+x2)/2,(y1+y2)/2)); |
162 |
164 |
163 if(isbutton==3) |
165 if(isbutton==3) |
164 { |
166 { |
165 edgesmap[ei]->setPoints(coos); |
167 edgesmap[ei]->setPoints(coos); |
174 text_pos+=(xy<double>(10,10)); |
176 text_pos+=(xy<double>(10,10)); |
175 edgetextmap[ei]->property_x().set_value(text_pos.x); |
177 edgetextmap[ei]->property_x().set_value(text_pos.x); |
176 edgetextmap[ei]->property_y().set_value(text_pos.y); |
178 edgetextmap[ei]->property_y().set_value(text_pos.y); |
177 } |
179 } |
178 |
180 |
179 g.firstIn(ei,active_node); |
181 mapstorage.graph.firstIn(ei,active_node); |
180 for(;ei!=INVALID;g.nextIn(ei)) |
182 for(;ei!=INVALID;mapstorage.graph.nextIn(ei)) |
181 { |
183 { |
182 Gnome::Canvas::Points coos; |
184 Gnome::Canvas::Points coos; |
183 double x1, x2, y1, y2; |
185 double x1, x2, y1, y2; |
184 |
186 |
185 nodesmap[g.source(ei)]->get_bounds(x1, y1, x2, y2); |
187 nodesmap[mapstorage.graph.source(ei)]->get_bounds(x1, y1, x2, y2); |
186 coos.push_back(Gnome::Art::Point((x1+x2)/2,(y1+y2)/2)); |
188 coos.push_back(Gnome::Art::Point((x1+x2)/2,(y1+y2)/2)); |
187 |
189 |
188 nodesmap[g.target(ei)]->get_bounds(x1, y1, x2, y2); |
190 nodesmap[mapstorage.graph.target(ei)]->get_bounds(x1, y1, x2, y2); |
189 coos.push_back(Gnome::Art::Point((x1+x2)/2,(y1+y2)/2)); |
191 coos.push_back(Gnome::Art::Point((x1+x2)/2,(y1+y2)/2)); |
190 |
192 |
191 if(isbutton==3) |
193 if(isbutton==3) |
192 { |
194 { |
193 edgesmap[ei]->setPoints(coos); |
195 edgesmap[ei]->setPoints(coos); |
217 //draw the new node in red at the clicked place |
219 //draw the new node in red at the clicked place |
218 case GDK_2BUTTON_PRESS: |
220 case GDK_2BUTTON_PRESS: |
219 //std::cout << "double click" << std::endl; |
221 //std::cout << "double click" << std::endl; |
220 break; |
222 break; |
221 case GDK_BUTTON_PRESS: |
223 case GDK_BUTTON_PRESS: |
|
224 mapstorage.modified = true; |
|
225 |
222 isbutton=1; |
226 isbutton=1; |
223 |
227 |
224 active_node=NodeIt(g,g.addNode()); |
228 active_node=NodeIt(mapstorage.graph,mapstorage.graph.addNode()); |
225 |
229 |
226 //initiating values corresponding to new node in maps |
230 //initiating values corresponding to new node in maps |
227 |
231 |
228 window_to_world (e->button.x, e->button.y, clicked_x, clicked_y); |
232 window_to_world (e->button.x, e->button.y, clicked_x, clicked_y); |
229 |
233 |
230 nodesmap[active_node]=new Gnome::Canvas::Ellipse(displayed_graph, clicked_x-20, clicked_y-20, clicked_x+20, clicked_y+20); |
234 mapstorage.coords.set(active_node, xy<double>(clicked_x, clicked_y)); |
|
235 (*mapstorage.nodemap_storage["id"])[active_node] = |
|
236 mapstorage.graph.id(active_node); |
|
237 |
|
238 nodesmap[active_node]=new Gnome::Canvas::Ellipse(displayed_graph, |
|
239 clicked_x-20, clicked_y-20, clicked_x+20, clicked_y+20); |
231 active_item=(Gnome::Canvas::Item *)(nodesmap[active_node]); |
240 active_item=(Gnome::Canvas::Item *)(nodesmap[active_node]); |
232 *(nodesmap[active_node]) << Gnome::Canvas::Properties::fill_color("red"); |
241 *(nodesmap[active_node]) << Gnome::Canvas::Properties::fill_color("red"); |
233 *(nodesmap[active_node]) << Gnome::Canvas::Properties::outline_color("black"); |
242 *(nodesmap[active_node]) << Gnome::Canvas::Properties::outline_color("black"); |
234 (nodesmap[active_node])->show(); |
243 (nodesmap[active_node])->show(); |
235 |
244 |
236 nodetextmap[active_node]=new Gnome::Canvas::Text(displayed_graph, clicked_x+node_property_defaults[N_RADIUS]+5, clicked_y+node_property_defaults[N_RADIUS]+5, ""); |
245 nodetextmap[active_node]=new Gnome::Canvas::Text(displayed_graph, |
|
246 clicked_x+node_property_defaults[N_RADIUS]+5, |
|
247 clicked_y+node_property_defaults[N_RADIUS]+5, ""); |
237 nodetextmap[active_node]->property_fill_color().set_value("darkblue"); |
248 nodetextmap[active_node]->property_fill_color().set_value("darkblue"); |
238 |
249 |
239 mapwin->updateNode(active_node); |
250 mapwin.updateNode(active_node); |
240 |
251 |
241 break; |
252 break; |
242 |
253 |
243 //move the new node |
254 //move the new node |
244 case GDK_MOTION_NOTIFY: |
255 case GDK_MOTION_NOTIFY: |
298 |
309 |
299 window_to_world (e->button.x, e->button.y, clicked_x, clicked_y); |
310 window_to_world (e->button.x, e->button.y, clicked_x, clicked_y); |
300 |
311 |
301 active_item=(get_item_at(clicked_x, clicked_y)); |
312 active_item=(get_item_at(clicked_x, clicked_y)); |
302 active_node=INVALID; |
313 active_node=INVALID; |
303 for (NodeIt i(g); i!=INVALID; ++i) |
314 for (NodeIt i(mapstorage.graph); i!=INVALID; ++i) |
304 { |
315 { |
305 if(nodesmap[i]==active_item) |
316 if(nodesmap[i]==active_item) |
306 { |
317 { |
307 active_node=i; |
318 active_node=i; |
308 } |
319 } |
327 else |
338 else |
328 { |
339 { |
329 window_to_world (e->button.x, e->button.y, clicked_x, clicked_y); |
340 window_to_world (e->button.x, e->button.y, clicked_x, clicked_y); |
330 target_item=(get_item_at(clicked_x, clicked_y)); |
341 target_item=(get_item_at(clicked_x, clicked_y)); |
331 Graph::NodeIt target_node=INVALID; |
342 Graph::NodeIt target_node=INVALID; |
332 for (NodeIt i(g); i!=INVALID; ++i) |
343 for (NodeIt i(mapstorage.graph); i!=INVALID; ++i) |
333 { |
344 { |
334 if(nodesmap[i]==target_item) |
345 if(nodesmap[i]==target_item) |
335 { |
346 { |
336 target_node=i; |
347 target_node=i; |
337 } |
348 } |
339 //the clicked item is a node, the edge can be drawn |
350 //the clicked item is a node, the edge can be drawn |
340 if(target_node!=INVALID) |
351 if(target_node!=INVALID) |
341 { |
352 { |
342 if(target_node!=active_node) |
353 if(target_node!=active_node) |
343 { |
354 { |
|
355 mapstorage.modified = true; |
|
356 |
344 *(nodesmap[target_node]) << Gnome::Canvas::Properties::fill_color("red"); |
357 *(nodesmap[target_node]) << Gnome::Canvas::Properties::fill_color("red"); |
345 |
358 |
346 //creating new edge |
359 //creating new edge |
347 active_edge=EdgeIt(g,g.addEdge(active_node, target_node)); |
360 active_edge=EdgeIt(mapstorage.graph,mapstorage.graph.addEdge(active_node, target_node)); |
348 |
361 |
349 //initiating values corresponding to new edge in maps |
362 //initiating values corresponding to new edge in maps |
350 mapstorage.initMapsForEdge(active_edge); |
363 mapstorage.initMapsForEdge(active_edge); |
|
364 (*mapstorage.edgemap_storage["id"])[active_edge] = mapstorage.graph.id(active_edge); |
351 |
365 |
352 //calculating coordinates of new edge |
366 //calculating coordinates of new edge |
353 Gnome::Canvas::Points coos; |
367 Gnome::Canvas::Points coos; |
354 double x1, x2, y1, y2; |
368 double x1, x2, y1, y2; |
355 |
369 |
374 |
388 |
375 edgetextmap[active_edge]=new Gnome::Canvas::Text(displayed_graph, text_pos.x, text_pos.y, ""); |
389 edgetextmap[active_edge]=new Gnome::Canvas::Text(displayed_graph, text_pos.x, text_pos.y, ""); |
376 edgetextmap[active_edge]->property_fill_color().set_value("darkgreen"); |
390 edgetextmap[active_edge]->property_fill_color().set_value("darkgreen"); |
377 |
391 |
378 //updating its properties |
392 //updating its properties |
379 mapwin->updateEdge(active_edge); |
393 mapwin.updateEdge(active_edge); |
380 } |
394 } |
381 else |
395 else |
382 { |
396 { |
383 target_node=INVALID; |
397 target_node=INVALID; |
384 std::cerr << "Loop edge is not yet implemented!" << std::endl; |
398 std::cerr << "Loop edge is not yet implemented!" << std::endl; |
427 //finding the clicked items |
441 //finding the clicked items |
428 window_to_world (e->button.x, e->button.y, clicked_x, clicked_y); |
442 window_to_world (e->button.x, e->button.y, clicked_x, clicked_y); |
429 active_item=(get_item_at(clicked_x, clicked_y)); |
443 active_item=(get_item_at(clicked_x, clicked_y)); |
430 active_node=INVALID; |
444 active_node=INVALID; |
431 active_edge=INVALID; |
445 active_edge=INVALID; |
432 |
|
433 //was it a node? |
446 //was it a node? |
434 for (NodeIt i(g); i!=INVALID; ++i) |
447 for (NodeIt i(mapstorage.graph); i!=INVALID; ++i) |
435 { |
448 { |
436 if(nodesmap[i]==active_item) |
449 if(nodesmap[i]==active_item) |
437 { |
450 { |
438 active_node=i; |
451 active_node=i; |
439 } |
452 } |
440 } |
453 } |
441 //or was it an edge? |
454 //or was it an edge? |
442 if(active_node==INVALID) |
455 if(active_node==INVALID) |
443 { |
456 { |
444 for (EdgeIt i(g); i!=INVALID; ++i) |
457 for (EdgeIt i(mapstorage.graph); i!=INVALID; ++i) |
445 { |
458 { |
446 if(edgesmap[i]==active_item) |
459 if(edgesmap[i]==active_item) |
447 { |
460 { |
448 active_edge=i; |
461 active_edge=i; |
449 } |
462 } |
465 if( active_item == ( get_item_at (clicked_x, clicked_y) ) ) |
478 if( active_item == ( get_item_at (clicked_x, clicked_y) ) ) |
466 { |
479 { |
467 //a node was found |
480 //a node was found |
468 if(active_node!=INVALID) |
481 if(active_node!=INVALID) |
469 { |
482 { |
|
483 mapstorage.modified = true; |
470 |
484 |
471 //collecting edges to delete |
485 //collecting edges to delete |
472 EdgeIt e; |
486 EdgeIt e; |
473 std::set<Graph::Edge> edges_to_delete; |
487 std::set<Graph::Edge> edges_to_delete; |
474 |
488 |
475 g.firstOut(e,active_node); |
489 mapstorage.graph.firstOut(e,active_node); |
476 for(;e!=INVALID;g.nextOut(e)) |
490 for(;e!=INVALID;mapstorage.graph.nextOut(e)) |
477 { |
491 { |
478 edges_to_delete.insert(e); |
492 edges_to_delete.insert(e); |
479 } |
493 } |
480 |
494 |
481 g.firstIn(e,active_node); |
495 mapstorage.graph.firstIn(e,active_node); |
482 for(;e!=INVALID;g.nextIn(e)) |
496 for(;e!=INVALID;mapstorage.graph.nextIn(e)) |
483 { |
497 { |
484 edges_to_delete.insert(e); |
498 edges_to_delete.insert(e); |
485 } |
499 } |
486 |
500 |
487 //deleting collected edges |
501 //deleting collected edges |
543 //for determine, whether it was an edge |
557 //for determine, whether it was an edge |
544 Graph::EdgeIt clicked_edge=INVALID; |
558 Graph::EdgeIt clicked_edge=INVALID; |
545 |
559 |
546 //find the activated item between texts |
560 //find the activated item between texts |
547 active_item=(get_item_at(e->button.x, e->button.y)); |
561 active_item=(get_item_at(e->button.x, e->button.y)); |
548 for (EdgeIt i(g); i!=INVALID; ++i) |
562 for (EdgeIt i(mapstorage.graph); i!=INVALID; ++i) |
549 { |
563 { |
550 if(edgetextmap[i]==active_item) |
564 if(edgetextmap[i]==active_item) |
551 { |
565 { |
552 clicked_edge=i; |
566 clicked_edge=i; |
553 } |
567 } |
557 if(clicked_edge==INVALID) |
571 if(clicked_edge==INVALID) |
558 { |
572 { |
559 window_to_world (e->button.x, e->button.y, clicked_x, clicked_y); |
573 window_to_world (e->button.x, e->button.y, clicked_x, clicked_y); |
560 active_item=(get_item_at(clicked_x, clicked_y)); |
574 active_item=(get_item_at(clicked_x, clicked_y)); |
561 |
575 |
562 for (EdgeIt i(g); i!=INVALID; ++i) |
576 for (EdgeIt i(mapstorage.graph); i!=INVALID; ++i) |
563 { |
577 { |
564 //at the same time only one can be active |
578 //at the same time only one can be active |
565 if((edgesmap[i]==active_item)||(edgetextmap[i]==active_item)) |
579 if((edgesmap[i]==active_item)||(edgetextmap[i]==active_item)) |
566 { |
580 { |
567 clicked_edge=i; |
581 clicked_edge=i; |
661 //for determine, whether it was a node |
675 //for determine, whether it was a node |
662 Graph::NodeIt clicked_node=INVALID; |
676 Graph::NodeIt clicked_node=INVALID; |
663 |
677 |
664 //find the activated item between texts |
678 //find the activated item between texts |
665 active_item=(get_item_at(e->button.x, e->button.y)); |
679 active_item=(get_item_at(e->button.x, e->button.y)); |
666 for (NodeIt i(g); i!=INVALID; ++i) |
680 for (NodeIt i(mapstorage.graph); i!=INVALID; ++i) |
667 { |
681 { |
668 //at the same time only one can be active |
682 //at the same time only one can be active |
669 if(nodetextmap[i]==active_item) |
683 if(nodetextmap[i]==active_item) |
670 { |
684 { |
671 clicked_node=i; |
685 clicked_node=i; |
676 if(clicked_node==INVALID) |
690 if(clicked_node==INVALID) |
677 { |
691 { |
678 window_to_world (e->button.x, e->button.y, clicked_x, clicked_y); |
692 window_to_world (e->button.x, e->button.y, clicked_x, clicked_y); |
679 active_item=(get_item_at(clicked_x, clicked_y)); |
693 active_item=(get_item_at(clicked_x, clicked_y)); |
680 |
694 |
681 for (NodeIt i(g); i!=INVALID; ++i) |
695 for (NodeIt i(mapstorage.graph); i!=INVALID; ++i) |
682 { |
696 { |
683 //at the same time only one can be active |
697 //at the same time only one can be active |
684 if(nodesmap[i]==active_item) |
698 if(nodesmap[i]==active_item) |
685 { |
699 { |
686 clicked_node=i; |
700 clicked_node=i; |
801 switch(actual_tool) |
815 switch(actual_tool) |
802 { |
816 { |
803 case EDGE_MAP_EDIT: |
817 case EDGE_MAP_EDIT: |
804 edgetextmap[active_edge]->property_text().set_value(ostr.str()); |
818 edgetextmap[active_edge]->property_text().set_value(ostr.str()); |
805 (*(mapstorage.edgemap_storage)[edgemap_to_edit])[active_edge]=mapvalue_d; |
819 (*(mapstorage.edgemap_storage)[edgemap_to_edit])[active_edge]=mapvalue_d; |
806 mapwin->updateEdge(active_edge); |
820 mapwin.updateEdge(active_edge); |
807 break; |
821 break; |
808 case NODE_MAP_EDIT: |
822 case NODE_MAP_EDIT: |
809 nodetextmap[active_node]->property_text().set_value(ostr.str()); |
823 nodetextmap[active_node]->property_text().set_value(ostr.str()); |
810 (*(mapstorage.nodemap_storage)[nodemap_to_edit])[active_node]=mapvalue_d; |
824 (*(mapstorage.nodemap_storage)[nodemap_to_edit])[active_node]=mapvalue_d; |
811 mapwin->updateNode(active_node); |
825 mapwin.updateNode(active_node); |
812 break; |
826 break; |
813 default: |
827 default: |
814 break; |
828 break; |
815 } |
829 } |
816 entrywidget.hide(); |
830 entrywidget.hide(); |
833 |
847 |
834 void GraphDisplayerCanvas::deleteItem(NodeIt node_to_delete) |
848 void GraphDisplayerCanvas::deleteItem(NodeIt node_to_delete) |
835 { |
849 { |
836 delete(nodetextmap[node_to_delete]); |
850 delete(nodetextmap[node_to_delete]); |
837 delete(nodesmap[node_to_delete]); |
851 delete(nodesmap[node_to_delete]); |
838 g.erase(node_to_delete); |
852 mapstorage.graph.erase(node_to_delete); |
839 } |
853 } |
840 |
854 |
841 void GraphDisplayerCanvas::deleteItem(EdgeIt edge_to_delete) |
855 void GraphDisplayerCanvas::deleteItem(EdgeIt edge_to_delete) |
842 { |
856 { |
843 delete(edgetextmap[edge_to_delete]); |
857 delete(edgetextmap[edge_to_delete]); |
844 delete(edgesmap[edge_to_delete]); |
858 delete(edgesmap[edge_to_delete]); |
845 g.erase(edge_to_delete); |
859 mapstorage.graph.erase(edge_to_delete); |
846 } |
860 } |
847 |
861 |
848 void GraphDisplayerCanvas::deleteItem(Graph::Edge edge_to_delete) |
862 void GraphDisplayerCanvas::deleteItem(Graph::Edge edge_to_delete) |
849 { |
863 { |
850 delete(edgetextmap[edge_to_delete]); |
864 delete(edgetextmap[edge_to_delete]); |
851 delete(edgesmap[edge_to_delete]); |
865 delete(edgesmap[edge_to_delete]); |
852 g.erase(edge_to_delete); |
866 mapstorage.graph.erase(edge_to_delete); |
853 } |
867 } |
854 |
868 |
855 void GraphDisplayerCanvas::textReposition(xy<double> new_place) |
869 void GraphDisplayerCanvas::textReposition(xy<double> new_place) |
856 { |
870 { |
857 new_place+=(xy<double>(10,10)); |
871 new_place+=(xy<double>(10,10)); |
893 } |
907 } |
894 |
908 |
895 int GraphDisplayerCanvas::addNewEdgeMap(double default_value, std::string mapname) |
909 int GraphDisplayerCanvas::addNewEdgeMap(double default_value, std::string mapname) |
896 { |
910 { |
897 //create the new map |
911 //create the new map |
898 Graph::EdgeMap<double> * emptr=new Graph::EdgeMap<double> (g,default_value); |
912 Graph::EdgeMap<double> * emptr=new Graph::EdgeMap<double> (mapstorage.graph, default_value); |
899 |
913 |
900 //if addition was not successful addEdgeMap returns one. |
914 //if addition was not successful addEdgeMap returns one. |
901 //cause can be that there is already a map named like the new one |
915 //cause can be that there is already a map named like the new one |
902 if(mapstorage.addEdgeMap(mapname,emptr)) |
916 if(mapstorage.addEdgeMap(mapname,emptr)) |
903 { |
917 { |
904 return 1; |
918 return 1; |
905 } |
919 } |
906 |
920 |
907 |
921 |
908 //add it to the list of the displayable maps |
922 //add it to the list of the displayable maps |
909 mapwin->registerNewEdgeMap(mapname); |
923 mapwin.registerNewEdgeMap(mapname); |
910 |
924 |
911 //display it |
925 //display it |
912 changeEdgeText(mapname); |
926 changeEdgeText(mapname); |
913 |
927 |
914 return 0; |
928 return 0; |
915 } |
929 } |
916 |
930 |
917 int GraphDisplayerCanvas::addNewNodeMap(double default_value, std::string mapname) |
931 int GraphDisplayerCanvas::addNewNodeMap(double default_value, std::string mapname) |
918 { |
932 { |
919 //create the new map |
933 //create the new map |
920 Graph::NodeMap<double> * emptr=new Graph::NodeMap<double> (g,default_value); |
934 Graph::NodeMap<double> * emptr=new Graph::NodeMap<double> (mapstorage.graph,default_value); |
921 |
935 |
922 //if addition was not successful addNodeMap returns one. |
936 //if addition was not successful addNodeMap returns one. |
923 //cause can be that there is already a map named like the new one |
937 //cause can be that there is already a map named like the new one |
924 if(mapstorage.addNodeMap(mapname,emptr)) |
938 if(mapstorage.addNodeMap(mapname,emptr)) |
925 { |
939 { |
926 return 1; |
940 return 1; |
927 } |
941 } |
928 |
942 |
929 //add it to the list of the displayable maps |
943 //add it to the list of the displayable maps |
930 mapwin->registerNewNodeMap(mapname); |
944 mapwin.registerNewNodeMap(mapname); |
931 |
945 |
932 //display it |
946 //display it |
933 changeNodeText(mapname); |
947 changeNodeText(mapname); |
934 |
948 |
935 return 0; |
949 return 0; |