153 if id is not None: |
160 if id is not None: |
154 event(self, id, function) |
161 event(self, id, function) |
155 else: |
162 else: |
156 event(self, function) |
163 event(self, function) |
157 |
164 |
|
165 # Create Alignment Menu items |
|
166 def _init_coll_AlignmentMenu_Items(self, parent): |
|
167 # Create menu items |
|
168 AppendMenu(parent, help='', id=ID_VIEWERALIGNMENTMENUITEMS0, |
|
169 kind=wx.ITEM_NORMAL, text=u'Left') |
|
170 AppendMenu(parent, help='', id=ID_VIEWERALIGNMENTMENUITEMS1, |
|
171 kind=wx.ITEM_NORMAL, text=u'Center') |
|
172 AppendMenu(parent, help='', id=ID_VIEWERALIGNMENTMENUITEMS2, |
|
173 kind=wx.ITEM_NORMAL, text=u'Right') |
|
174 parent.AppendSeparator() |
|
175 AppendMenu(parent, help='', id=ID_VIEWERALIGNMENTMENUITEMS4, |
|
176 kind=wx.ITEM_NORMAL, text=u'Top') |
|
177 AppendMenu(parent, help='', id=ID_VIEWERALIGNMENTMENUITEMS5, |
|
178 kind=wx.ITEM_NORMAL, text=u'Middle') |
|
179 AppendMenu(parent, help='', id=ID_VIEWERALIGNMENTMENUITEMS6, |
|
180 kind=wx.ITEM_NORMAL, text=u'Bottom') |
|
181 # Link menu event to corresponding called functions |
|
182 self.Bind(wx.EVT_MENU, self.OnAlignLeftMenu, |
|
183 id=ID_VIEWERALIGNMENTMENUITEMS0) |
|
184 self.Bind(wx.EVT_MENU, self.OnAlignCenterMenu, |
|
185 id=ID_VIEWERALIGNMENTMENUITEMS1) |
|
186 self.Bind(wx.EVT_MENU, self.OnAlignRightMenu, |
|
187 id=ID_VIEWERALIGNMENTMENUITEMS2) |
|
188 self.Bind(wx.EVT_MENU, self.OnAlignTopMenu, |
|
189 id=ID_VIEWERALIGNMENTMENUITEMS4) |
|
190 self.Bind(wx.EVT_MENU, self.OnAlignMiddleMenu, |
|
191 id=ID_VIEWERALIGNMENTMENUITEMS5) |
|
192 self.Bind(wx.EVT_MENU, self.OnAlignBottomMenu, |
|
193 id=ID_VIEWERALIGNMENTMENUITEMS6) |
|
194 |
158 # Create Contextual Menu items |
195 # Create Contextual Menu items |
159 def _init_coll_ContextualMenu_Items(self, parent): |
196 def _init_coll_ContextualMenu_Items(self, parent): |
160 # Create menu items |
197 # Create menu items |
161 AppendMenu(parent, help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS0, |
198 AppendMenu(parent, help='', id=ID_VIEWERCONTEXTUALMENUITEMS0, |
162 kind=wx.ITEM_RADIO, text=u'No Modifier') |
199 kind=wx.ITEM_RADIO, text=u'No Modifier') |
163 AppendMenu(parent, help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS1, |
200 AppendMenu(parent, help='', id=ID_VIEWERCONTEXTUALMENUITEMS1, |
164 kind=wx.ITEM_RADIO, text=u'Negated') |
201 kind=wx.ITEM_RADIO, text=u'Negated') |
165 AppendMenu(parent, help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS2, |
202 AppendMenu(parent, help='', id=ID_VIEWERCONTEXTUALMENUITEMS2, |
166 kind=wx.ITEM_RADIO, text=u'Rising Edge') |
203 kind=wx.ITEM_RADIO, text=u'Rising Edge') |
167 AppendMenu(parent, help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS3, |
204 AppendMenu(parent, help='', id=ID_VIEWERCONTEXTUALMENUITEMS3, |
168 kind=wx.ITEM_RADIO, text=u'Falling Edge') |
205 kind=wx.ITEM_RADIO, text=u'Falling Edge') |
169 parent.AppendSeparator() |
206 parent.AppendSeparator() |
170 AppendMenu(parent, help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS5, |
207 AppendMenu(parent, help='', id=ID_VIEWERCONTEXTUALMENUITEMS5, |
171 kind=wx.ITEM_NORMAL, text=u'Add Wire Segment') |
208 kind=wx.ITEM_NORMAL, text=u'Add Wire Segment') |
172 AppendMenu(parent, help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS6, |
209 AppendMenu(parent, help='', id=ID_VIEWERCONTEXTUALMENUITEMS6, |
173 kind=wx.ITEM_NORMAL, text=u'Delete Wire Segment') |
210 kind=wx.ITEM_NORMAL, text=u'Delete Wire Segment') |
174 parent.AppendSeparator() |
211 parent.AppendSeparator() |
175 AppendMenu(parent, help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS8, |
212 AppendMenu(parent, help='', id=ID_VIEWERCONTEXTUALMENUITEMS8, |
176 kind=wx.ITEM_NORMAL, text=u'Add Divergence Branch') |
213 kind=wx.ITEM_NORMAL, text=u'Add Divergence Branch') |
177 AppendMenu(parent, help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS9, |
214 AppendMenu(parent, help='', id=ID_VIEWERCONTEXTUALMENUITEMS9, |
178 kind=wx.ITEM_NORMAL, text=u'Delete Divergence Branch') |
215 kind=wx.ITEM_NORMAL, text=u'Delete Divergence Branch') |
179 parent.AppendSeparator() |
216 parent.AppendSeparator() |
180 AppendMenu(parent, help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS11, |
217 AppendMenu(parent, help='', id=ID_VIEWERCONTEXTUALMENUITEMS11, |
181 kind=wx.ITEM_NORMAL, text=u'Clear Execution Order') |
218 kind=wx.ITEM_NORMAL, text=u'Clear Execution Order') |
182 AppendMenu(parent, help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS12, |
219 AppendMenu(parent, help='', id=ID_VIEWERCONTEXTUALMENUITEMS12, |
183 kind=wx.ITEM_NORMAL, text=u'Reset Execution Order') |
220 kind=wx.ITEM_NORMAL, text=u'Reset Execution Order') |
184 parent.AppendSeparator() |
221 parent.AppendSeparator() |
185 AppendMenu(parent, help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS14, |
222 parent.AppendMenu(ID_VIEWERCONTEXTUALMENUITEMS14, "Alignment", self.AlignmentMenu) |
|
223 parent.AppendSeparator() |
|
224 AppendMenu(parent, help='', id=ID_VIEWERCONTEXTUALMENUITEMS16, |
186 kind=wx.ITEM_NORMAL, text=u'Edit Block') |
225 kind=wx.ITEM_NORMAL, text=u'Edit Block') |
187 AppendMenu(parent, help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS15, |
226 AppendMenu(parent, help='', id=ID_VIEWERCONTEXTUALMENUITEMS17, |
188 kind=wx.ITEM_NORMAL, text=u'Delete') |
227 kind=wx.ITEM_NORMAL, text=u'Delete') |
189 # Link menu event to corresponding called functions |
228 # Link menu event to corresponding called functions |
190 self.Bind(wx.EVT_MENU, self.OnNoModifierMenu, |
229 self.Bind(wx.EVT_MENU, self.OnNoModifierMenu, |
191 id=ID_FBDVIEWERCONTEXTUALMENUITEMS0) |
230 id=ID_VIEWERCONTEXTUALMENUITEMS0) |
192 self.Bind(wx.EVT_MENU, self.OnNegatedMenu, |
231 self.Bind(wx.EVT_MENU, self.OnNegatedMenu, |
193 id=ID_FBDVIEWERCONTEXTUALMENUITEMS1) |
232 id=ID_VIEWERCONTEXTUALMENUITEMS1) |
194 self.Bind(wx.EVT_MENU, self.OnRisingEdgeMenu, |
233 self.Bind(wx.EVT_MENU, self.OnRisingEdgeMenu, |
195 id=ID_FBDVIEWERCONTEXTUALMENUITEMS2) |
234 id=ID_VIEWERCONTEXTUALMENUITEMS2) |
196 self.Bind(wx.EVT_MENU, self.OnFallingEdgeMenu, |
235 self.Bind(wx.EVT_MENU, self.OnFallingEdgeMenu, |
197 id=ID_FBDVIEWERCONTEXTUALMENUITEMS3) |
236 id=ID_VIEWERCONTEXTUALMENUITEMS3) |
198 self.Bind(wx.EVT_MENU, self.OnAddSegmentMenu, |
237 self.Bind(wx.EVT_MENU, self.OnAddSegmentMenu, |
199 id=ID_FBDVIEWERCONTEXTUALMENUITEMS5) |
238 id=ID_VIEWERCONTEXTUALMENUITEMS5) |
200 self.Bind(wx.EVT_MENU, self.OnDeleteSegmentMenu, |
239 self.Bind(wx.EVT_MENU, self.OnDeleteSegmentMenu, |
201 id=ID_FBDVIEWERCONTEXTUALMENUITEMS6) |
240 id=ID_VIEWERCONTEXTUALMENUITEMS6) |
202 self.Bind(wx.EVT_MENU, self.OnAddBranchMenu, |
241 self.Bind(wx.EVT_MENU, self.OnAddBranchMenu, |
203 id=ID_FBDVIEWERCONTEXTUALMENUITEMS8) |
242 id=ID_VIEWERCONTEXTUALMENUITEMS8) |
204 self.Bind(wx.EVT_MENU, self.OnDeleteBranchMenu, |
243 self.Bind(wx.EVT_MENU, self.OnDeleteBranchMenu, |
205 id=ID_FBDVIEWERCONTEXTUALMENUITEMS9) |
244 id=ID_VIEWERCONTEXTUALMENUITEMS9) |
206 self.Bind(wx.EVT_MENU, self.OnClearExecutionOrderMenu, |
245 self.Bind(wx.EVT_MENU, self.OnClearExecutionOrderMenu, |
207 id=ID_FBDVIEWERCONTEXTUALMENUITEMS11) |
246 id=ID_VIEWERCONTEXTUALMENUITEMS11) |
208 self.Bind(wx.EVT_MENU, self.OnResetExecutionOrderMenu, |
247 self.Bind(wx.EVT_MENU, self.OnResetExecutionOrderMenu, |
209 id=ID_FBDVIEWERCONTEXTUALMENUITEMS12) |
248 id=ID_VIEWERCONTEXTUALMENUITEMS12) |
210 self.Bind(wx.EVT_MENU, self.OnEditBlockMenu, |
249 self.Bind(wx.EVT_MENU, self.OnEditBlockMenu, |
211 id=ID_FBDVIEWERCONTEXTUALMENUITEMS14) |
250 id=ID_VIEWERCONTEXTUALMENUITEMS16) |
212 self.Bind(wx.EVT_MENU, self.OnDeleteMenu, |
251 self.Bind(wx.EVT_MENU, self.OnDeleteMenu, |
213 id=ID_FBDVIEWERCONTEXTUALMENUITEMS15) |
252 id=ID_VIEWERCONTEXTUALMENUITEMS17) |
214 |
253 |
215 # Create and initialize Contextual Menu |
254 # Create and initialize Contextual Menu |
216 def _init_menus(self): |
255 def _init_menus(self): |
|
256 self.AlignmentMenu = wx.Menu(title='') |
217 self.ContextualMenu = wx.Menu(title='') |
257 self.ContextualMenu = wx.Menu(title='') |
218 |
258 |
|
259 self._init_coll_AlignmentMenu_Items(self.AlignmentMenu) |
219 self._init_coll_ContextualMenu_Items(self.ContextualMenu) |
260 self._init_coll_ContextualMenu_Items(self.ContextualMenu) |
220 |
261 |
221 # Create a new Viewer |
262 # Create a new Viewer |
222 def __init__(self, parent, tagname, window, controler): |
263 def __init__(self, parent, tagname, window, controler): |
223 wx.ScrolledWindow.__init__(self, parent, pos=wx.Point(0, 0), size=wx.Size(0, 0), |
264 wx.ScrolledWindow.__init__(self, parent, pos=wx.Point(0, 0), size=wx.Size(0, 0), |
739 #------------------------------------------------------------------------------- |
781 #------------------------------------------------------------------------------- |
740 |
782 |
741 def PopupBlockMenu(self, connector = None): |
783 def PopupBlockMenu(self, connector = None): |
742 if connector is not None and connector.IsCompatible("BOOL"): |
784 if connector is not None and connector.IsCompatible("BOOL"): |
743 type = self.Controler.GetEditedElementType(self.TagName) |
785 type = self.Controler.GetEditedElementType(self.TagName) |
744 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS0, True) |
786 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS0, True) |
745 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS1, True) |
787 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS1, True) |
746 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS2, type != "function") |
788 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS2, type != "function") |
747 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS3, type != "function") |
789 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS3, type != "function") |
748 else: |
790 else: |
749 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS0, False) |
791 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS0, False) |
750 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS1, False) |
792 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS1, False) |
751 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS2, False) |
793 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS2, False) |
752 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS3, False) |
794 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS3, False) |
753 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS5, False) |
795 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS5, False) |
754 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS6, False) |
796 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS6, False) |
755 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS8, False) |
797 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS8, False) |
756 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS9, False) |
798 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS9, False) |
757 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS14, self.SelectedElement.GetType() in self.Controler.GetProjectPouNames()) |
799 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS14, False) |
758 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS15, True) |
800 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS16, self.SelectedElement.GetType() in self.Controler.GetProjectPouNames()) |
|
801 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS17, True) |
759 if connector: |
802 if connector: |
760 if connector.IsNegated(): |
803 if connector.IsNegated(): |
761 self.ContextualMenu.Check(ID_FBDVIEWERCONTEXTUALMENUITEMS1, True) |
804 self.ContextualMenu.Check(ID_VIEWERCONTEXTUALMENUITEMS1, True) |
762 elif connector.GetEdge() == "rising": |
805 elif connector.GetEdge() == "rising": |
763 self.ContextualMenu.Check(ID_FBDVIEWERCONTEXTUALMENUITEMS2, True) |
806 self.ContextualMenu.Check(ID_VIEWERCONTEXTUALMENUITEMS2, True) |
764 elif connector.GetEdge() == "falling": |
807 elif connector.GetEdge() == "falling": |
765 self.ContextualMenu.Check(ID_FBDVIEWERCONTEXTUALMENUITEMS3, True) |
808 self.ContextualMenu.Check(ID_VIEWERCONTEXTUALMENUITEMS3, True) |
766 else: |
809 else: |
767 self.ContextualMenu.Check(ID_FBDVIEWERCONTEXTUALMENUITEMS0, True) |
810 self.ContextualMenu.Check(ID_VIEWERCONTEXTUALMENUITEMS0, True) |
768 self.PopupMenu(self.ContextualMenu) |
811 self.PopupMenu(self.ContextualMenu) |
769 |
812 |
770 def PopupWireMenu(self): |
813 def PopupWireMenu(self): |
771 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS0, False) |
814 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS0, False) |
772 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS1, False) |
815 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS1, False) |
773 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS2, False) |
816 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS2, False) |
774 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS3, False) |
817 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS3, False) |
775 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS5, True) |
818 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS5, True) |
776 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS6, True) |
819 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS6, True) |
777 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS8, False) |
820 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS8, False) |
778 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS9, False) |
821 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS9, False) |
779 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS14, False) |
822 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS14, False) |
780 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS15, True) |
823 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS16, False) |
|
824 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS17, True) |
781 self.PopupMenu(self.ContextualMenu) |
825 self.PopupMenu(self.ContextualMenu) |
782 |
826 |
783 def PopupDivergenceMenu(self, connector): |
827 def PopupDivergenceMenu(self, connector): |
784 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS0, False) |
828 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS0, False) |
785 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS1, False) |
829 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS1, False) |
786 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS2, False) |
830 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS2, False) |
787 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS3, False) |
831 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS3, False) |
788 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS5, False) |
832 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS5, False) |
789 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS6, False) |
833 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS6, False) |
790 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS8, True) |
834 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS8, True) |
791 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS9, connector) |
835 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS9, connector) |
792 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS14, False) |
836 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS14, False) |
793 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS15, True) |
837 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS16, False) |
|
838 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS17, True) |
794 self.PopupMenu(self.ContextualMenu) |
839 self.PopupMenu(self.ContextualMenu) |
795 |
840 |
|
841 def PopupGroupMenu(self): |
|
842 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS0, False) |
|
843 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS1, False) |
|
844 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS2, False) |
|
845 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS3, False) |
|
846 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS5, False) |
|
847 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS6, False) |
|
848 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS8, False) |
|
849 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS9, False) |
|
850 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS14, True) |
|
851 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS16, False) |
|
852 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS17, True) |
|
853 self.PopupMenu(self.ContextualMenu) |
|
854 |
796 def PopupDefaultMenu(self, block = True): |
855 def PopupDefaultMenu(self, block = True): |
797 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS0, False) |
856 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS0, False) |
798 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS1, False) |
857 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS1, False) |
799 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS2, False) |
858 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS2, False) |
800 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS3, False) |
859 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS3, False) |
801 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS5, False) |
860 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS5, False) |
802 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS6, False) |
861 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS6, False) |
803 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS8, False) |
862 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS8, False) |
804 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS9, False) |
863 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS9, False) |
805 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS14, False) |
864 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS14, False) |
806 self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS15, block) |
865 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS16, False) |
|
866 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS17, block) |
807 self.PopupMenu(self.ContextualMenu) |
867 self.PopupMenu(self.ContextualMenu) |
808 |
868 |
809 #------------------------------------------------------------------------------- |
869 #------------------------------------------------------------------------------- |
810 # Menu items functions |
870 # Menu items functions |
811 #------------------------------------------------------------------------------- |
871 #------------------------------------------------------------------------------- |
812 |
872 |
|
873 def OnAlignLeftMenu(self, event): |
|
874 if self.SelectedElement and isinstance(self.SelectedElement, Graphic_Group): |
|
875 self.SelectedElement.AlignElements(ALIGN_LEFT, None) |
|
876 self.RefreshBuffer() |
|
877 event.Skip() |
|
878 |
|
879 def OnAlignCenterMenu(self, event): |
|
880 if self.SelectedElement and isinstance(self.SelectedElement, Graphic_Group): |
|
881 self.SelectedElement.AlignElements(ALIGN_CENTER, None) |
|
882 self.RefreshBuffer() |
|
883 event.Skip() |
|
884 |
|
885 def OnAlignRightMenu(self, event): |
|
886 if self.SelectedElement and isinstance(self.SelectedElement, Graphic_Group): |
|
887 self.SelectedElement.AlignElements(ALIGN_RIGHT, None) |
|
888 self.RefreshBuffer() |
|
889 event.Skip() |
|
890 |
|
891 def OnAlignTopMenu(self, event): |
|
892 if self.SelectedElement and isinstance(self.SelectedElement, Graphic_Group): |
|
893 self.SelectedElement.AlignElements(None, ALIGN_TOP) |
|
894 self.RefreshBuffer() |
|
895 event.Skip() |
|
896 |
|
897 def OnAlignMiddleMenu(self, event): |
|
898 if self.SelectedElement and isinstance(self.SelectedElement, Graphic_Group): |
|
899 self.SelectedElement.AlignElements(None, ALIGN_MIDDLE) |
|
900 self.RefreshBuffer() |
|
901 event.Skip() |
|
902 |
|
903 def OnAlignBottomMenu(self, event): |
|
904 if self.SelectedElement and isinstance(self.SelectedElement, Graphic_Group): |
|
905 self.SelectedElement.AlignElements(None, ALIGN_BOTTOM) |
|
906 self.RefreshBuffer() |
|
907 event.Skip() |
|
908 |
813 def OnNoModifierMenu(self, event): |
909 def OnNoModifierMenu(self, event): |
814 if self.SelectedElement and self.IsBlock(self.SelectedElement): |
910 if self.SelectedElement and self.IsBlock(self.SelectedElement): |
815 self.SelectedElement.SetConnectorNegated(False) |
911 self.SelectedElement.SetConnectorNegated(False) |
816 self.RefreshBuffer() |
912 self.RefreshBuffer() |
817 event.Skip() |
913 event.Skip() |
903 elif len(elements) == 1: |
999 elif len(elements) == 1: |
904 self.SelectedElement = elements[0] |
1000 self.SelectedElement = elements[0] |
905 self.SelectedElement.SetSelected(True) |
1001 self.SelectedElement.SetSelected(True) |
906 else: |
1002 else: |
907 element = self.FindElement(pos) |
1003 element = self.FindElement(pos) |
908 if self.SelectedElement and self.SelectedElement != element: |
1004 connector = self.FindBlockConnector(pos) |
909 self.SelectedElement.SetSelected(False) |
1005 if self.DrawingWire: |
910 self.SelectedElement = None |
1006 self.DrawingWire = False |
|
1007 if connector: |
|
1008 event.Dragging = lambda : True |
|
1009 self.SelectedElement.OnMotion(event, self.GetLogicalDC(), self.Scaling) |
|
1010 if self.SelectedElement.EndConnected is not None: |
|
1011 self.SelectedElement.ResetPoints() |
|
1012 self.SelectedElement.GeneratePoints() |
|
1013 self.SelectedElement.RefreshModel() |
|
1014 self.SelectedElement.SetSelected(True) |
|
1015 element = self.SelectedElement |
|
1016 self.RefreshBuffer() |
|
1017 else: |
|
1018 self.SelectedElement.Delete() |
|
1019 element = None |
911 self.Refresh(False) |
1020 self.Refresh(False) |
912 if element: |
1021 elif connector: |
913 self.SelectedElement = element |
1022 self.DrawingWire = True |
914 self.SelectedElement.OnLeftDown(event, dc, self.Scaling) |
1023 pos = GetScaledEventPosition(event, self.GetLogicalDC(), self.Scaling) |
915 self.Refresh(False) |
1024 if (connector.GetDirection() == EAST): |
|
1025 wire = Wire(self, [wx.Point(pos.x, pos.y), EAST], [wx.Point(pos.x, pos.y), WEST]) |
|
1026 else: |
|
1027 wire = Wire(self, [wx.Point(pos.x, pos.y), WEST], [wx.Point(pos.x, pos.y), EAST]) |
|
1028 wire.oldPos = pos |
|
1029 wire.Handle = (HANDLE_POINT, 0) |
|
1030 wire.ProcessDragging(0, 0) |
|
1031 wire.Handle = (HANDLE_POINT, 1) |
|
1032 self.AddWire(wire) |
|
1033 if self.SelectedElement: |
|
1034 self.SelectedElement.SetSelected(False) |
|
1035 self.SelectedElement = wire |
916 else: |
1036 else: |
917 self.rubberBand.Reset() |
1037 if self.SelectedElement and self.SelectedElement != element: |
918 self.rubberBand.OnLeftDown(event, dc, self.Scaling) |
1038 self.SelectedElement.SetSelected(False) |
|
1039 self.SelectedElement = None |
|
1040 self.Refresh(False) |
|
1041 if element: |
|
1042 self.SelectedElement = element |
|
1043 self.SelectedElement.OnLeftDown(event, dc, self.Scaling) |
|
1044 self.Refresh(False) |
|
1045 else: |
|
1046 self.rubberBand.Reset() |
|
1047 self.rubberBand.OnLeftDown(event, dc, self.Scaling) |
919 elif self.Mode in [MODE_BLOCK, MODE_VARIABLE, MODE_CONNECTION, MODE_COMMENT, |
1048 elif self.Mode in [MODE_BLOCK, MODE_VARIABLE, MODE_CONNECTION, MODE_COMMENT, |
920 MODE_CONTACT, MODE_COIL, MODE_POWERRAIL, MODE_INITIALSTEP, |
1049 MODE_CONTACT, MODE_COIL, MODE_POWERRAIL, MODE_INITIALSTEP, |
921 MODE_STEP, MODE_TRANSITION, MODE_DIVERGENCE, MODE_JUMP, MODE_ACTION]: |
1050 MODE_STEP, MODE_TRANSITION, MODE_DIVERGENCE, MODE_JUMP, MODE_ACTION]: |
922 self.rubberBand.Reset() |
1051 self.rubberBand.Reset() |
923 self.rubberBand.OnLeftDown(event, self.GetLogicalDC(), self.Scaling) |
1052 self.rubberBand.OnLeftDown(event, self.GetLogicalDC(), self.Scaling) |
924 elif self.Mode == MODE_WIRE: |
|
925 pos = GetScaledEventPosition(event, self.GetLogicalDC(), self.Scaling) |
|
926 connector = self.FindBlockConnector(pos) |
|
927 if connector: |
|
928 if (connector.GetDirection() == EAST): |
|
929 wire = Wire(self, [wx.Point(pos.x, pos.y), EAST], [wx.Point(pos.x, pos.y), WEST]) |
|
930 else: |
|
931 wire = Wire(self, [wx.Point(pos.x, pos.y), WEST], [wx.Point(pos.x, pos.y), EAST]) |
|
932 wire.oldPos = pos |
|
933 wire.Handle = (HANDLE_POINT, 0) |
|
934 wire.ProcessDragging(0, 0) |
|
935 wire.Handle = (HANDLE_POINT, 1) |
|
936 self.AddWire(wire) |
|
937 if self.SelectedElement: |
|
938 self.SelectedElement.SetSelected(False) |
|
939 self.SelectedElement = wire |
|
940 elif self.SelectedElement: |
|
941 self.SelectedElement.SetSelected(False) |
|
942 self.SelectedElement = None |
|
943 self.Refresh(False) |
|
944 event.Skip() |
1053 event.Skip() |
945 |
1054 |
946 def OnViewerLeftUp(self, event): |
1055 def OnViewerLeftUp(self, event): |
947 if self.rubberBand.IsShown(): |
1056 if self.rubberBand.IsShown(): |
948 if self.Mode == MODE_SELECTION: |
1057 if self.Mode == MODE_SELECTION: |
985 elif self.Mode == MODE_JUMP: |
1094 elif self.Mode == MODE_JUMP: |
986 wx.CallAfter(self.AddNewJump, bbox) |
1095 wx.CallAfter(self.AddNewJump, bbox) |
987 elif self.Mode == MODE_ACTION: |
1096 elif self.Mode == MODE_ACTION: |
988 wx.CallAfter(self.AddNewActionBlock, bbox) |
1097 wx.CallAfter(self.AddNewActionBlock, bbox) |
989 elif self.Mode == MODE_SELECTION and self.SelectedElement: |
1098 elif self.Mode == MODE_SELECTION and self.SelectedElement: |
990 self.SelectedElement.OnLeftUp(event, self.GetLogicalDC(), self.Scaling) |
1099 dc = self.GetLogicalDC() |
991 wx.CallAfter(self.SetCursor, wx.NullCursor) |
1100 if self.DrawingWire: |
992 self.Refresh(False) |
1101 pos = event.GetLogicalPosition(dc) |
993 elif self.Mode == MODE_WIRE and self.SelectedElement: |
1102 connector = self.FindBlockConnector(pos) |
994 if self.SelectedElement.EndConnected != None: |
1103 if self.SelectedElement.EndConnected is not None: |
995 self.SelectedElement.ResetPoints() |
1104 self.DrawingWire = False |
996 self.SelectedElement.OnMotion(event, self.GetLogicalDC(), self.Scaling) |
1105 self.SelectedElement.ResetPoints() |
997 self.SelectedElement.GeneratePoints() |
1106 self.SelectedElement.OnMotion(event, dc, self.Scaling) |
998 self.SelectedElement.RefreshModel() |
1107 self.SelectedElement.GeneratePoints() |
999 self.SelectedElement.SetSelected(True) |
1108 self.SelectedElement.RefreshModel() |
1000 self.RefreshBuffer() |
1109 self.SelectedElement.SetSelected(True) |
1001 else: |
1110 self.RefreshBuffer() |
1002 self.SelectedElement.Delete() |
1111 elif connector is None: |
1003 self.SelectedElement = None |
1112 self.DrawingWire = False |
1004 self.Refresh(False) |
1113 self.SelectedElement.Delete() |
|
1114 self.SelectedElement = None |
|
1115 self.Refresh(False) |
|
1116 else: |
|
1117 self.SelectedElement.OnLeftUp(event, dc, self.Scaling) |
|
1118 wx.CallAfter(self.SetCursor, wx.NullCursor) |
|
1119 self.Refresh(False) |
1005 if self.Mode != MODE_SELECTION and not self.SavedMode: |
1120 if self.Mode != MODE_SELECTION and not self.SavedMode: |
1006 wx.CallAfter(self.ParentWindow.ResetCurrentMode) |
1121 wx.CallAfter(self.ParentWindow.ResetCurrentMode) |
1007 event.Skip() |
1122 event.Skip() |
1008 |
1123 |
1009 def OnViewerRightUp(self, event): |
1124 def OnViewerRightUp(self, event): |