gui/graph_displayer_canvas-event.cc
changeset 1651 e40c41eae31f
parent 1648 dd8672338691
child 1652 6eb2f0f3bab9
equal deleted inserted replaced
24:725495fb4ca0 25:e73ededfe3ff
   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 		}