139 nodetextmap[active_node]->move(dx, dy); |
139 nodetextmap[active_node]->move(dx, dy); |
140 |
140 |
141 clicked_x=new_x; |
141 clicked_x=new_x; |
142 clicked_y=new_y; |
142 clicked_y=new_y; |
143 |
143 |
144 //all the edges connected to the moved point has to be redrawn |
144 |
145 EdgeIt ei; |
145 for(OutEdgeIt ei(mapstorage.graph,active_node);ei!=INVALID;++ei) |
146 |
|
147 mapstorage.graph.firstOut(ei,active_node); |
|
148 |
|
149 for(;ei!=INVALID;mapstorage.graph.nextOut(ei)) |
|
150 { |
146 { |
151 Gnome::Canvas::Points coos; |
147 Gnome::Canvas::Points coos; |
152 double x1, x2, y1, y2; |
148 double x1, x2, y1, y2; |
153 |
149 |
154 nodesmap[mapstorage.graph.source(ei)]->get_bounds(x1, y1, x2, y2); |
150 nodesmap[mapstorage.graph.source(ei)]->get_bounds(x1, y1, x2, y2); |
171 text_pos+=(xy<double>(10,10)); |
167 text_pos+=(xy<double>(10,10)); |
172 edgetextmap[ei]->property_x().set_value(text_pos.x); |
168 edgetextmap[ei]->property_x().set_value(text_pos.x); |
173 edgetextmap[ei]->property_y().set_value(text_pos.y); |
169 edgetextmap[ei]->property_y().set_value(text_pos.y); |
174 } |
170 } |
175 |
171 |
176 mapstorage.graph.firstIn(ei,active_node); |
172 for(InEdgeIt ei(mapstorage.graph,active_node);ei!=INVALID;++ei) |
177 for(;ei!=INVALID;mapstorage.graph.nextIn(ei)) |
|
178 { |
173 { |
179 Gnome::Canvas::Points coos; |
174 Gnome::Canvas::Points coos; |
180 double x1, x2, y1, y2; |
175 double x1, x2, y1, y2; |
181 |
176 |
182 nodesmap[mapstorage.graph.source(ei)]->get_bounds(x1, y1, x2, y2); |
177 nodesmap[mapstorage.graph.source(ei)]->get_bounds(x1, y1, x2, y2); |
481 //a node was found |
476 //a node was found |
482 if(active_node!=INVALID) |
477 if(active_node!=INVALID) |
483 { |
478 { |
484 mapstorage.modified = true; |
479 mapstorage.modified = true; |
485 |
480 |
486 //collecting edges to delete |
|
487 EdgeIt e; |
|
488 std::set<Graph::Edge> edges_to_delete; |
481 std::set<Graph::Edge> edges_to_delete; |
489 |
482 |
490 mapstorage.graph.firstOut(e,active_node); |
483 for(OutEdgeIt e(mapstorage.graph,active_node);e!=INVALID;++e) |
491 for(;e!=INVALID;mapstorage.graph.nextOut(e)) |
|
492 { |
484 { |
493 edges_to_delete.insert(e); |
485 edges_to_delete.insert(e); |
494 } |
486 } |
495 |
487 |
496 mapstorage.graph.firstIn(e,active_node); |
488 for(InEdgeIt e(mapstorage.graph,active_node);e!=INVALID;++e) |
497 for(;e!=INVALID;mapstorage.graph.nextIn(e)) |
|
498 { |
489 { |
499 edges_to_delete.insert(e); |
490 edges_to_delete.insert(e); |
500 } |
491 } |
501 |
492 |
502 //deleting collected edges |
493 //deleting collected edges |
503 for(std::set<Graph::Edge>::iterator edge_set_it=edges_to_delete.begin();edge_set_it!=edges_to_delete.end();edge_set_it++) |
494 for(std::set<Graph::Edge>::iterator |
|
495 edge_set_it=edges_to_delete.begin(); |
|
496 edge_set_it!=edges_to_delete.end(); |
|
497 ++edge_set_it) |
504 { |
498 { |
505 deleteItem(*edge_set_it); |
499 deleteItem(*edge_set_it); |
506 } |
500 } |
507 deleteItem(active_node); |
501 deleteItem(active_node); |
508 } |
502 } |