Changeset 149:930e838ad5b6 in glemon-0.x for graph_displayer_canvas-event.cc
- Timestamp:
- 09/19/06 09:43:55 (18 years ago)
- Branch:
- default
- Phase:
- public
- Convert:
- svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/glemon/trunk@2950
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
graph_displayer_canvas-event.cc
r148 r149 28 28 break; 29 29 } 30 case EDGE_MAP_EDIT: 31 //has to do the same thing as in the case of NODE_MAP_EDIT 32 case NODE_MAP_EDIT: 30 case MAP_EDIT: 33 31 { 34 32 break; … … 64 62 break; 65 63 66 case EDGE_MAP_EDIT:64 case MAP_EDIT: 67 65 grab_focus(); 68 actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::edgeMapEditEventHandler), false); 69 break; 70 71 case NODE_MAP_EDIT: 72 actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::nodeMapEditEventHandler), false); 66 actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::mapEditEventHandler), false); 73 67 break; 74 68 … … 623 617 } 624 618 625 bool GraphDisplayerCanvas::edgeMapEditEventHandler(GdkEvent* e) 626 { 627 if(actual_tool==EDGE_MAP_EDIT) 628 { 629 switch(e->type) 619 bool GraphDisplayerCanvas::mapEditEventHandler(GdkEvent* e) 620 { 621 if(actual_tool==MAP_EDIT) 630 622 { 631 case GDK_BUTTON_PRESS: 632 { 633 //for determine, whether it was an edge 634 Edge clicked_edge=INVALID; 635 636 window_to_world (e->button.x, e->button.y, clicked_x, clicked_y); 637 active_item=(get_item_at(clicked_x, clicked_y)); 638 639 //find the activated item between texts 640 for (EdgeIt i((mytab.mapstorage).graph); i!=INVALID; ++i) 641 { 642 //at the same time only one can be active 643 if(edgetextmap[i]==active_item) 644 { 645 clicked_edge=i; 646 } 647 } 648 649 //if it was not between texts, search for it between edges 650 if(clicked_edge==INVALID) 651 { 652 for (EdgeIt i((mytab.mapstorage).graph); i!=INVALID; ++i) 653 { 654 //at the same time only one can be active 655 if((edgesmap[i]==active_item)||(edgetextmap[i]==active_item)) 656 { 657 clicked_edge=i; 658 } 659 } 660 } 661 662 //if it was really an edge... 663 if(clicked_edge!=INVALID) 664 { 665 // the id map is not editable 666 if (edgemap_to_edit == "label") return 0; 667 668 //and there is activated map 669 if(edgetextmap[clicked_edge]->property_text().get_value()!="") 670 { 671 //activate the general variable for it 672 active_edge=clicked_edge; 673 674 //create a dialog 675 Gtk::Dialog dialog("Edit value", true); 676 dialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); 677 dialog.add_button(Gtk::Stock::OK, Gtk::RESPONSE_ACCEPT); 678 Gtk::VBox* vbox = dialog.get_vbox(); 679 Gtk::SpinButton spin(0.0, 4); 680 spin.set_increments(1.0, 10.0); 681 spin.set_range(-1000000.0, 1000000.0); 682 spin.set_numeric(true); 683 vbox->add(spin); 684 spin.show(); 685 switch (dialog.run()) 686 { 687 case Gtk::RESPONSE_NONE: 688 case Gtk::RESPONSE_CANCEL: 689 break; 690 case Gtk::RESPONSE_ACCEPT: 691 double new_value = spin.get_value(); 692 (*(mytab.mapstorage).edgemap_storage[edgemap_to_edit])[active_edge] = 693 new_value; 694 std::ostringstream ostr; 695 ostr << new_value; 696 edgetextmap[active_edge]->property_text().set_value( 697 ostr.str()); 698 //mapwin.updateEdge(active_edge); 699 // mapwin.updateEdge(Edge(INVALID)); 700 propertyUpdate(Edge(INVALID)); 701 } 702 } 703 } 704 break; 705 } 706 default: 707 break; 623 switch(e->type) 624 { 625 case GDK_BUTTON_PRESS: 626 { 627 //for determine, whether it was an edge 628 Edge clicked_edge=INVALID; 629 //for determine, whether it was a node 630 Node clicked_node=INVALID; 631 632 window_to_world (e->button.x, e->button.y, clicked_x, clicked_y); 633 active_item=(get_item_at(clicked_x, clicked_y)); 634 635 //find the activated item between text of nodes 636 for (NodeIt i((mytab.mapstorage).graph); i!=INVALID; ++i) 637 { 638 //at the same time only one can be active 639 if(nodetextmap[i]==active_item) 640 { 641 clicked_node=i; 642 } 643 } 644 645 //if there was not, search for it between nodes 646 if(clicked_node==INVALID) 647 { 648 for (NodeIt i((mytab.mapstorage).graph); i!=INVALID; ++i) 649 { 650 //at the same time only one can be active 651 if(nodesmap[i]==active_item) 652 { 653 clicked_node=i; 654 } 655 } 656 } 657 658 if(clicked_node==INVALID) 659 { 660 //find the activated item between texts 661 for (EdgeIt i((mytab.mapstorage).graph); i!=INVALID; ++i) 662 { 663 //at the same time only one can be active 664 if(edgetextmap[i]==active_item) 665 { 666 clicked_edge=i; 667 } 668 } 669 670 //if it was not between texts, search for it between edges 671 if(clicked_edge==INVALID) 672 { 673 for (EdgeIt i((mytab.mapstorage).graph); i!=INVALID; ++i) 674 { 675 //at the same time only one can be active 676 if((edgesmap[i]->getLine())==active_item) 677 { 678 clicked_edge=i; 679 } 680 } 681 } 682 } 683 684 //if it was really a node... 685 if(clicked_node!=INVALID) 686 { 687 // the id map is not editable 688 if (nodemap_to_edit == "label") return 0; 689 690 //and there is activated map 691 if(nodetextmap[clicked_node]->property_text().get_value()!="") 692 { 693 //activate the general variable for it 694 active_node=clicked_node; 695 696 //create a dialog 697 Gtk::Dialog dialog("Edit value", true); 698 dialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); 699 dialog.add_button(Gtk::Stock::OK, Gtk::RESPONSE_ACCEPT); 700 Gtk::VBox* vbox = dialog.get_vbox(); 701 Gtk::SpinButton spin(0.0, 4); 702 spin.set_increments(1.0, 10.0); 703 spin.set_range(-1000000.0, 1000000.0); 704 spin.set_numeric(true); 705 spin.set_value(atof(nodetextmap[active_node]->property_text().get_value().c_str())); 706 vbox->add(spin); 707 spin.show(); 708 switch (dialog.run()) 709 { 710 case Gtk::RESPONSE_NONE: 711 case Gtk::RESPONSE_CANCEL: 712 break; 713 case Gtk::RESPONSE_ACCEPT: 714 double new_value = spin.get_value(); 715 (*(mytab.mapstorage).nodemap_storage[nodemap_to_edit])[active_node] = 716 new_value; 717 std::ostringstream ostr; 718 ostr << new_value; 719 nodetextmap[active_node]->property_text().set_value(ostr.str()); 720 //mapwin.updateNode(active_node); 721 //mapwin.updateNode(Node(INVALID)); 722 propertyUpdate(Node(INVALID)); 723 } 724 } 725 } 726 else 727 //if it was really an edge... 728 if(clicked_edge!=INVALID) 729 { 730 // the id map is not editable 731 if (edgemap_to_edit == "label") return 0; 732 733 //and there is activated map 734 if(edgetextmap[clicked_edge]->property_text().get_value()!="") 735 { 736 //activate the general variable for it 737 active_edge=clicked_edge; 738 739 //create a dialog 740 Gtk::Dialog dialog("Edit value", true); 741 dialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); 742 dialog.add_button(Gtk::Stock::OK, Gtk::RESPONSE_ACCEPT); 743 Gtk::VBox* vbox = dialog.get_vbox(); 744 Gtk::SpinButton spin(0.0, 4); 745 spin.set_increments(1.0, 10.0); 746 spin.set_range(-1000000.0, 1000000.0); 747 spin.set_numeric(true); 748 spin.set_value(atof(edgetextmap[active_edge]->property_text().get_value().c_str())); 749 vbox->add(spin); 750 spin.show(); 751 switch (dialog.run()) 752 { 753 case Gtk::RESPONSE_NONE: 754 case Gtk::RESPONSE_CANCEL: 755 break; 756 case Gtk::RESPONSE_ACCEPT: 757 double new_value = spin.get_value(); 758 (*(mytab.mapstorage).edgemap_storage[edgemap_to_edit])[active_edge] = 759 new_value; 760 std::ostringstream ostr; 761 ostr << new_value; 762 edgetextmap[active_edge]->property_text().set_value( 763 ostr.str()); 764 //mapwin.updateEdge(active_edge); 765 // mapwin.updateEdge(Edge(INVALID)); 766 propertyUpdate(Edge(INVALID)); 767 } 768 } 769 } 770 break; 771 } 772 default: 773 break; 774 } 708 775 } 709 }710 return false;711 }712 713 bool GraphDisplayerCanvas::nodeMapEditEventHandler(GdkEvent* e)714 {715 if(actual_tool==NODE_MAP_EDIT)716 {717 switch(e->type)718 {719 case GDK_BUTTON_PRESS:720 {721 //for determine, whether it was a node722 Node clicked_node=INVALID;723 724 window_to_world (e->button.x, e->button.y, clicked_x, clicked_y);725 active_item=(get_item_at(clicked_x, clicked_y));726 727 //find the activated item between texts728 for (NodeIt i((mytab.mapstorage).graph); i!=INVALID; ++i)729 {730 //at the same time only one can be active731 if(nodetextmap[i]==active_item)732 {733 clicked_node=i;734 }735 }736 737 //if there was not, search for it between nodes738 if(clicked_node==INVALID)739 {740 for (NodeIt i((mytab.mapstorage).graph); i!=INVALID; ++i)741 {742 //at the same time only one can be active743 if(nodesmap[i]==active_item)744 {745 clicked_node=i;746 }747 }748 }749 750 //if it was really a node...751 if(clicked_node!=INVALID)752 {753 // the id map is not editable754 if (nodemap_to_edit == "label") return 0;755 756 //and there is activated map757 if(nodetextmap[clicked_node]->property_text().get_value()!="")758 {759 //activate the general variable for it760 active_node=clicked_node;761 762 //create a dialog763 Gtk::Dialog dialog("Edit value", true);764 dialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);765 dialog.add_button(Gtk::Stock::OK, Gtk::RESPONSE_ACCEPT);766 Gtk::VBox* vbox = dialog.get_vbox();767 Gtk::SpinButton spin(0.0, 4);768 spin.set_increments(1.0, 10.0);769 spin.set_range(-1000000.0, 1000000.0);770 spin.set_numeric(true);771 vbox->add(spin);772 spin.show();773 switch (dialog.run())774 {775 case Gtk::RESPONSE_NONE:776 case Gtk::RESPONSE_CANCEL:777 break;778 case Gtk::RESPONSE_ACCEPT:779 double new_value = spin.get_value();780 (*(mytab.mapstorage).nodemap_storage[nodemap_to_edit])[active_node] =781 new_value;782 std::ostringstream ostr;783 ostr << new_value;784 nodetextmap[active_node]->property_text().set_value(785 ostr.str());786 //mapwin.updateNode(active_node);787 // mapwin.updateNode(Node(INVALID));788 propertyUpdate(Node(INVALID));789 }790 }791 }792 break;793 }794 default:795 break;796 }797 }798 776 return false; 799 777 }
Note: See TracChangeset
for help on using the changeset viewer.