39 # ID Constants for menu items |
40 # ID Constants for menu items |
40 [ID_FBDVIEWERCONTEXTUALMENUITEMS0, ID_FBDVIEWERCONTEXTUALMENUITEMS1, |
41 [ID_FBDVIEWERCONTEXTUALMENUITEMS0, ID_FBDVIEWERCONTEXTUALMENUITEMS1, |
41 ID_FBDVIEWERCONTEXTUALMENUITEMS2, ID_FBDVIEWERCONTEXTUALMENUITEMS3, |
42 ID_FBDVIEWERCONTEXTUALMENUITEMS2, ID_FBDVIEWERCONTEXTUALMENUITEMS3, |
42 ID_FBDVIEWERCONTEXTUALMENUITEMS5, ID_FBDVIEWERCONTEXTUALMENUITEMS6, |
43 ID_FBDVIEWERCONTEXTUALMENUITEMS5, ID_FBDVIEWERCONTEXTUALMENUITEMS6, |
43 ID_FBDVIEWERCONTEXTUALMENUITEMS8, ID_FBDVIEWERCONTEXTUALMENUITEMS9, |
44 ID_FBDVIEWERCONTEXTUALMENUITEMS8, ID_FBDVIEWERCONTEXTUALMENUITEMS9, |
44 ID_FBDVIEWERCONTEXTUALMENUITEMS11, |
45 ID_FBDVIEWERCONTEXTUALMENUITEMS11, ID_FBDVIEWERCONTEXTUALMENUITEMS12, |
45 ] = [wx.NewId() for _init_coll_ContextualMenu_Items in range(9)] |
46 ] = [wx.NewId() for _init_coll_ContextualMenu_Items in range(10)] |
46 |
47 |
47 |
48 |
48 class ViewerDropTarget(wx.TextDropTarget): |
49 class ViewerDropTarget(wx.TextDropTarget): |
49 |
50 |
50 def __init__(self, parent): |
51 def __init__(self, parent): |
78 width, height = block.GetMinSize() |
79 width, height = block.GetMinSize() |
79 block.SetSize(width, height) |
80 block.SetSize(width, height) |
80 self.ParentWindow.AddBlock(block) |
81 self.ParentWindow.AddBlock(block) |
81 self.ParentWindow.Controler.AddCurrentElementEditingBlock(id, values[0], values[2]) |
82 self.ParentWindow.Controler.AddCurrentElementEditingBlock(id, values[0], values[2]) |
82 self.ParentWindow.RefreshBlockModel(block) |
83 self.ParentWindow.RefreshBlockModel(block) |
|
84 self.ParentWindow.RefreshBuffer() |
83 self.ParentWindow.RefreshScrollBars() |
85 self.ParentWindow.RefreshScrollBars() |
84 self.ParentWindow.Refresh() |
86 self.ParentWindow.Refresh() |
85 elif values[1] != "location": |
87 elif values[1] != "location": |
86 id = self.ParentWindow.GetNewId() |
88 id = self.ParentWindow.GetNewId() |
87 if values[1] == "Output": |
89 if values[1] == "Output": |
95 width, height = variable.GetMinSize() |
97 width, height = variable.GetMinSize() |
96 variable.SetSize(width, height) |
98 variable.SetSize(width, height) |
97 self.ParentWindow.AddBlock(variable) |
99 self.ParentWindow.AddBlock(variable) |
98 self.ParentWindow.Controler.AddCurrentElementEditingVariable(id, var_type) |
100 self.ParentWindow.Controler.AddCurrentElementEditingVariable(id, var_type) |
99 self.ParentWindow.RefreshVariableModel(variable) |
101 self.ParentWindow.RefreshVariableModel(variable) |
|
102 self.ParentWindow.RefreshBuffer() |
100 self.ParentWindow.RefreshScrollBars() |
103 self.ParentWindow.RefreshScrollBars() |
101 self.ParentWindow.Refresh() |
104 self.ParentWindow.Refresh() |
102 |
105 |
103 |
106 |
104 """ |
107 """ |
129 kind=wx.ITEM_NORMAL, text=u'Add Divergence Branch') |
132 kind=wx.ITEM_NORMAL, text=u'Add Divergence Branch') |
130 parent.Append(help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS9, |
133 parent.Append(help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS9, |
131 kind=wx.ITEM_NORMAL, text=u'Delete Divergence Branch') |
134 kind=wx.ITEM_NORMAL, text=u'Delete Divergence Branch') |
132 parent.AppendSeparator() |
135 parent.AppendSeparator() |
133 parent.Append(help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS11, |
136 parent.Append(help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS11, |
|
137 kind=wx.ITEM_NORMAL, text=u'Edit Block') |
|
138 parent.Append(help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS12, |
134 kind=wx.ITEM_NORMAL, text=u'Delete') |
139 kind=wx.ITEM_NORMAL, text=u'Delete') |
135 # Link menu event to corresponding called functions |
140 # Link menu event to corresponding called functions |
136 self.Bind(wx.EVT_MENU, self.OnNoModifierMenu, |
141 self.Bind(wx.EVT_MENU, self.OnNoModifierMenu, |
137 id=ID_FBDVIEWERCONTEXTUALMENUITEMS0) |
142 id=ID_FBDVIEWERCONTEXTUALMENUITEMS0) |
138 self.Bind(wx.EVT_MENU, self.OnNegatedMenu, |
143 self.Bind(wx.EVT_MENU, self.OnNegatedMenu, |
147 id=ID_FBDVIEWERCONTEXTUALMENUITEMS6) |
152 id=ID_FBDVIEWERCONTEXTUALMENUITEMS6) |
148 self.Bind(wx.EVT_MENU, self.OnAddBranchMenu, |
153 self.Bind(wx.EVT_MENU, self.OnAddBranchMenu, |
149 id=ID_FBDVIEWERCONTEXTUALMENUITEMS8) |
154 id=ID_FBDVIEWERCONTEXTUALMENUITEMS8) |
150 self.Bind(wx.EVT_MENU, self.OnDeleteBranchMenu, |
155 self.Bind(wx.EVT_MENU, self.OnDeleteBranchMenu, |
151 id=ID_FBDVIEWERCONTEXTUALMENUITEMS9) |
156 id=ID_FBDVIEWERCONTEXTUALMENUITEMS9) |
|
157 self.Bind(wx.EVT_MENU, self.OnEditBlockMenu, |
|
158 id=ID_FBDVIEWERCONTEXTUALMENUITEMS11) |
152 self.Bind(wx.EVT_MENU, self.OnDeleteMenu, |
159 self.Bind(wx.EVT_MENU, self.OnDeleteMenu, |
153 id=ID_FBDVIEWERCONTEXTUALMENUITEMS11) |
160 id=ID_FBDVIEWERCONTEXTUALMENUITEMS12) |
154 |
161 |
155 # Create and initialize Contextual Menu |
162 # Create and initialize Contextual Menu |
156 def _init_menus(self): |
163 def _init_menus(self): |
157 self.ContextualMenu = wx.Menu(title='') |
164 self.ContextualMenu = wx.Menu(title='') |
158 |
165 |
662 #------------------------------------------------------------------------------- |
669 #------------------------------------------------------------------------------- |
663 # Popup menu functions |
670 # Popup menu functions |
664 #------------------------------------------------------------------------------- |
671 #------------------------------------------------------------------------------- |
665 |
672 |
666 def PopupBlockMenu(self, connector = None): |
673 def PopupBlockMenu(self, connector = None): |
667 type = self.Controler.GetCurrentElementEditingType() |
674 if connector is not None and connector.IsCompatible("BOOL"): |
668 self.ContextualMenu.FindItemByPosition(0).Enable(connector != None) |
675 type = self.Controler.GetCurrentElementEditingType() |
669 self.ContextualMenu.FindItemByPosition(1).Enable(connector != None) |
676 self.ContextualMenu.FindItemByPosition(0).Enable(True) |
670 self.ContextualMenu.FindItemByPosition(2).Enable(connector != None and type != "function") |
677 self.ContextualMenu.FindItemByPosition(1).Enable(True) |
671 self.ContextualMenu.FindItemByPosition(3).Enable(connector != None and type != "function") |
678 self.ContextualMenu.FindItemByPosition(2).Enable(type != "function") |
|
679 self.ContextualMenu.FindItemByPosition(3).Enable(type != "function") |
|
680 else: |
|
681 self.ContextualMenu.FindItemByPosition(0).Enable(False) |
|
682 self.ContextualMenu.FindItemByPosition(1).Enable(False) |
|
683 self.ContextualMenu.FindItemByPosition(2).Enable(False) |
|
684 self.ContextualMenu.FindItemByPosition(3).Enable(False) |
672 self.ContextualMenu.FindItemByPosition(5).Enable(False) |
685 self.ContextualMenu.FindItemByPosition(5).Enable(False) |
673 self.ContextualMenu.FindItemByPosition(6).Enable(False) |
686 self.ContextualMenu.FindItemByPosition(6).Enable(False) |
674 self.ContextualMenu.FindItemByPosition(8).Enable(False) |
687 self.ContextualMenu.FindItemByPosition(8).Enable(False) |
675 self.ContextualMenu.FindItemByPosition(9).Enable(False) |
688 self.ContextualMenu.FindItemByPosition(9).Enable(False) |
|
689 self.ContextualMenu.FindItemByPosition(11).Enable(self.SelectedElement.GetType() in self.Controler.GetProjectPouNames()) |
676 if connector: |
690 if connector: |
677 if connector.IsNegated(): |
691 if connector.IsNegated(): |
678 self.ContextualMenu.FindItemByPosition(1).Check(True) |
692 self.ContextualMenu.FindItemByPosition(1).Check(True) |
679 elif connector.GetEdge() == "rising": |
693 elif connector.GetEdge() == "rising": |
680 self.ContextualMenu.FindItemByPosition(2).Check(True) |
694 self.ContextualMenu.FindItemByPosition(2).Check(True) |
682 self.ContextualMenu.FindItemByPosition(3).Check(True) |
696 self.ContextualMenu.FindItemByPosition(3).Check(True) |
683 else: |
697 else: |
684 self.ContextualMenu.FindItemByPosition(0).Check(True) |
698 self.ContextualMenu.FindItemByPosition(0).Check(True) |
685 self.PopupMenu(self.ContextualMenu) |
699 self.PopupMenu(self.ContextualMenu) |
686 |
700 |
687 def PopupVariableMenu(self, connector = None): |
|
688 self.ContextualMenu.FindItemByPosition(0).Enable(connector != None) |
|
689 self.ContextualMenu.FindItemByPosition(1).Enable(connector != None) |
|
690 self.ContextualMenu.FindItemByPosition(2).Enable(False) |
|
691 self.ContextualMenu.FindItemByPosition(3).Enable(False) |
|
692 self.ContextualMenu.FindItemByPosition(5).Enable(False) |
|
693 self.ContextualMenu.FindItemByPosition(6).Enable(False) |
|
694 self.ContextualMenu.FindItemByPosition(8).Enable(False) |
|
695 self.ContextualMenu.FindItemByPosition(9).Enable(False) |
|
696 if connector: |
|
697 if connector.IsNegated(): |
|
698 self.ContextualMenu.FindItemByPosition(1).Check(True) |
|
699 else: |
|
700 self.ContextualMenu.FindItemByPosition(0).Check(True) |
|
701 self.PopupMenu(self.ContextualMenu) |
|
702 |
|
703 def PopupWireMenu(self): |
701 def PopupWireMenu(self): |
704 self.ContextualMenu.FindItemByPosition(0).Enable(False) |
702 self.ContextualMenu.FindItemByPosition(0).Enable(False) |
705 self.ContextualMenu.FindItemByPosition(1).Enable(False) |
703 self.ContextualMenu.FindItemByPosition(1).Enable(False) |
706 self.ContextualMenu.FindItemByPosition(2).Enable(False) |
704 self.ContextualMenu.FindItemByPosition(2).Enable(False) |
707 self.ContextualMenu.FindItemByPosition(3).Enable(False) |
705 self.ContextualMenu.FindItemByPosition(3).Enable(False) |
708 self.ContextualMenu.FindItemByPosition(5).Enable(True) |
706 self.ContextualMenu.FindItemByPosition(5).Enable(True) |
709 self.ContextualMenu.FindItemByPosition(6).Enable(True) |
707 self.ContextualMenu.FindItemByPosition(6).Enable(True) |
710 self.ContextualMenu.FindItemByPosition(8).Enable(False) |
708 self.ContextualMenu.FindItemByPosition(8).Enable(False) |
711 self.ContextualMenu.FindItemByPosition(9).Enable(False) |
709 self.ContextualMenu.FindItemByPosition(9).Enable(False) |
|
710 self.ContextualMenu.FindItemByPosition(11).Enable(False) |
712 self.PopupMenu(self.ContextualMenu) |
711 self.PopupMenu(self.ContextualMenu) |
713 |
712 |
714 def PopupDivergenceMenu(self, connector): |
713 def PopupDivergenceMenu(self, connector): |
715 self.ContextualMenu.FindItemByPosition(0).Enable(False) |
714 self.ContextualMenu.FindItemByPosition(0).Enable(False) |
716 self.ContextualMenu.FindItemByPosition(1).Enable(False) |
715 self.ContextualMenu.FindItemByPosition(1).Enable(False) |
718 self.ContextualMenu.FindItemByPosition(3).Enable(False) |
717 self.ContextualMenu.FindItemByPosition(3).Enable(False) |
719 self.ContextualMenu.FindItemByPosition(5).Enable(False) |
718 self.ContextualMenu.FindItemByPosition(5).Enable(False) |
720 self.ContextualMenu.FindItemByPosition(6).Enable(False) |
719 self.ContextualMenu.FindItemByPosition(6).Enable(False) |
721 self.ContextualMenu.FindItemByPosition(8).Enable(True) |
720 self.ContextualMenu.FindItemByPosition(8).Enable(True) |
722 self.ContextualMenu.FindItemByPosition(9).Enable(connector) |
721 self.ContextualMenu.FindItemByPosition(9).Enable(connector) |
|
722 self.ContextualMenu.FindItemByPosition(11).Enable(False) |
723 self.PopupMenu(self.ContextualMenu) |
723 self.PopupMenu(self.ContextualMenu) |
724 |
724 |
725 def PopupDefaultMenu(self): |
725 def PopupDefaultMenu(self): |
726 self.ContextualMenu.FindItemByPosition(0).Enable(False) |
726 self.ContextualMenu.FindItemByPosition(0).Enable(False) |
727 self.ContextualMenu.FindItemByPosition(1).Enable(False) |
727 self.ContextualMenu.FindItemByPosition(1).Enable(False) |
729 self.ContextualMenu.FindItemByPosition(3).Enable(False) |
729 self.ContextualMenu.FindItemByPosition(3).Enable(False) |
730 self.ContextualMenu.FindItemByPosition(5).Enable(False) |
730 self.ContextualMenu.FindItemByPosition(5).Enable(False) |
731 self.ContextualMenu.FindItemByPosition(6).Enable(False) |
731 self.ContextualMenu.FindItemByPosition(6).Enable(False) |
732 self.ContextualMenu.FindItemByPosition(8).Enable(False) |
732 self.ContextualMenu.FindItemByPosition(8).Enable(False) |
733 self.ContextualMenu.FindItemByPosition(9).Enable(False) |
733 self.ContextualMenu.FindItemByPosition(9).Enable(False) |
|
734 self.ContextualMenu.FindItemByPosition(11).Enable(False) |
734 self.PopupMenu(self.ContextualMenu) |
735 self.PopupMenu(self.ContextualMenu) |
735 |
736 |
736 #------------------------------------------------------------------------------- |
737 #------------------------------------------------------------------------------- |
737 # Menu items functions |
738 # Menu items functions |
738 #------------------------------------------------------------------------------- |
739 #------------------------------------------------------------------------------- |
779 |
780 |
780 def OnDeleteBranchMenu(self, event): |
781 def OnDeleteBranchMenu(self, event): |
781 if self.SelectedElement and self.IsBlock(self.SelectedElement): |
782 if self.SelectedElement and self.IsBlock(self.SelectedElement): |
782 self.RemoveDivergenceBranch(self.SelectedElement) |
783 self.RemoveDivergenceBranch(self.SelectedElement) |
783 self.RefreshBuffer() |
784 self.RefreshBuffer() |
|
785 event.Skip() |
|
786 |
|
787 def OnEditBlockMenu(self, event): |
|
788 if self.SelectedElement: |
|
789 self.ParentWindow.EditProjectElement(ITEM_POU, self.SelectedElement.GetType()) |
784 event.Skip() |
790 event.Skip() |
785 |
791 |
786 def OnDeleteMenu(self, event): |
792 def OnDeleteMenu(self, event): |
787 if self.SelectedElement: |
793 if self.SelectedElement: |
788 self.SelectedElement.Delete() |
794 self.SelectedElement.Delete() |
933 self.Refresh(False) |
939 self.Refresh(False) |
934 event.Skip() |
940 event.Skip() |
935 |
941 |
936 def OnViewerLeftDClick(self, event): |
942 def OnViewerLeftDClick(self, event): |
937 if self.Mode == MODE_SELECTION and self.SelectedElement: |
943 if self.Mode == MODE_SELECTION and self.SelectedElement: |
938 self.SelectedElement.OnLeftDClick(event, self.GetLogicalDC(), self.Scaling) |
944 if event.ControlDown() and self.IsBlock(self.SelectedElement) and self.SelectedElement.GetType() in self.Controler.GetProjectPouNames(): |
939 self.Refresh(False) |
945 self.ParentWindow.EditProjectElement(ITEM_POU, self.SelectedElement.GetType()) |
|
946 else: |
|
947 self.SelectedElement.OnLeftDClick(event, self.GetLogicalDC(), self.Scaling) |
|
948 self.Refresh(False) |
940 event.Skip() |
949 event.Skip() |
941 |
950 |
942 def OnViewerMotion(self, event): |
951 def OnViewerMotion(self, event): |
943 if self.rubberBand.IsShown(): |
952 if self.rubberBand.IsShown(): |
944 self.rubberBand.OnMotion(event, self.GetLogicalDC(), self.Scaling) |
953 self.rubberBand.OnMotion(event, self.GetLogicalDC(), self.Scaling) |