582 break; |
587 break; |
583 } |
588 } |
584 return false; |
589 return false; |
585 } |
590 } |
586 |
591 |
|
592 bool GraphDisplayerCanvas::eraser_event_handler(GdkEvent* e) |
|
593 { |
|
594 switch(e->type) |
|
595 { |
|
596 case GDK_BUTTON_PRESS: |
|
597 active_item=(get_item_at(e->button.x, e->button.y)); |
|
598 active_node=INVALID; |
|
599 active_edge=INVALID; |
|
600 for (NodeIt i(g); i!=INVALID; ++i) |
|
601 { |
|
602 if(nodesmap[i]==active_item) |
|
603 { |
|
604 active_node=i; |
|
605 } |
|
606 } |
|
607 if(active_node==INVALID) |
|
608 { |
|
609 for (EdgeIt i(g); i!=INVALID; ++i) |
|
610 { |
|
611 if(edgesmap[i]==active_item) |
|
612 { |
|
613 active_edge=i; |
|
614 } |
|
615 } |
|
616 } |
|
617 *active_item << Gnome::Canvas::Properties::fill_color("red"); |
|
618 break; |
|
619 |
|
620 case GDK_BUTTON_RELEASE: |
|
621 if(active_item==(get_item_at(e->button.x, e->button.y))) |
|
622 { |
|
623 if(active_node!=INVALID) |
|
624 { |
|
625 EdgeIt e; |
|
626 g.firstOut(e,active_node); |
|
627 for(;e!=INVALID;g.nextOut(e)) |
|
628 { |
|
629 delete_item(edgesmap[e]); |
|
630 //edgesmap[e]->property_points().set_value(coos); |
|
631 //edgetextmap[e]->property_y().set_value((y1+y2)/2); |
|
632 } |
|
633 |
|
634 g.firstIn(e,active_node); |
|
635 for(;e!=INVALID;g.nextIn(e)) |
|
636 { |
|
637 delete_item(edgesmap[e]); |
|
638 //edgesmap[e]->get_bounds(x1, y1, x2, y2); |
|
639 //edgetextmap[e]->property_y().set_value((y1+y2)/2); |
|
640 } |
|
641 } |
|
642 delete_item(active_item); |
|
643 |
|
644 } |
|
645 else |
|
646 { |
|
647 if(active_node!=INVALID) |
|
648 { |
|
649 *active_item << Gnome::Canvas::Properties::fill_color("blue"); |
|
650 } |
|
651 else |
|
652 { |
|
653 *active_item << Gnome::Canvas::Properties::fill_color("green"); |
|
654 } |
|
655 } |
|
656 active_item=NULL; |
|
657 active_edge=INVALID; |
|
658 active_node=INVALID; |
|
659 break; |
|
660 |
|
661 case GDK_MOTION_NOTIFY: |
|
662 break; |
|
663 |
|
664 default: |
|
665 break; |
|
666 } |
|
667 return true; |
|
668 } |
|
669 |
|
670 void GraphDisplayerCanvas::delete_item(Gnome::Canvas::Item * item_to_delete) |
|
671 { |
|
672 //item_to_delete->hide(); |
|
673 delete(item_to_delete); |
|
674 } |
|
675 |