--- a/Viewer.py Mon Dec 10 15:52:49 2007 +0100
+++ b/Viewer.py Wed Dec 26 16:38:09 2007 +0100
@@ -43,14 +43,21 @@
# Graphic elements Viewer base class
#-------------------------------------------------------------------------------
-# ID Constants for menu items
-[ID_FBDVIEWERCONTEXTUALMENUITEMS0, ID_FBDVIEWERCONTEXTUALMENUITEMS1,
- ID_FBDVIEWERCONTEXTUALMENUITEMS2, ID_FBDVIEWERCONTEXTUALMENUITEMS3,
- ID_FBDVIEWERCONTEXTUALMENUITEMS5, ID_FBDVIEWERCONTEXTUALMENUITEMS6,
- ID_FBDVIEWERCONTEXTUALMENUITEMS8, ID_FBDVIEWERCONTEXTUALMENUITEMS9,
- ID_FBDVIEWERCONTEXTUALMENUITEMS11, ID_FBDVIEWERCONTEXTUALMENUITEMS12,
- ID_FBDVIEWERCONTEXTUALMENUITEMS14, ID_FBDVIEWERCONTEXTUALMENUITEMS15,
-] = [wx.NewId() for _init_coll_ContextualMenu_Items in range(12)]
+# ID Constants for alignment menu items
+[ID_VIEWERALIGNMENTMENUITEMS0, ID_VIEWERALIGNMENTMENUITEMS1,
+ ID_VIEWERALIGNMENTMENUITEMS2, ID_VIEWERALIGNMENTMENUITEMS4,
+ ID_VIEWERALIGNMENTMENUITEMS5, ID_VIEWERALIGNMENTMENUITEMS6,
+] = [wx.NewId() for _init_coll_AlignmentMenu_Items in range(6)]
+
+# ID Constants for contextual menu items
+[ID_VIEWERCONTEXTUALMENUITEMS0, ID_VIEWERCONTEXTUALMENUITEMS1,
+ ID_VIEWERCONTEXTUALMENUITEMS2, ID_VIEWERCONTEXTUALMENUITEMS3,
+ ID_VIEWERCONTEXTUALMENUITEMS5, ID_VIEWERCONTEXTUALMENUITEMS6,
+ ID_VIEWERCONTEXTUALMENUITEMS8, ID_VIEWERCONTEXTUALMENUITEMS9,
+ ID_VIEWERCONTEXTUALMENUITEMS11, ID_VIEWERCONTEXTUALMENUITEMS12,
+ ID_VIEWERCONTEXTUALMENUITEMS14, ID_VIEWERCONTEXTUALMENUITEMS16,
+ ID_VIEWERCONTEXTUALMENUITEMS17,
+] = [wx.NewId() for _init_coll_ContextualMenu_Items in range(13)]
class ViewerDropTarget(wx.TextDropTarget):
@@ -155,67 +162,101 @@
else:
event(self, function)
+ # Create Alignment Menu items
+ def _init_coll_AlignmentMenu_Items(self, parent):
+ # Create menu items
+ AppendMenu(parent, help='', id=ID_VIEWERALIGNMENTMENUITEMS0,
+ kind=wx.ITEM_NORMAL, text=u'Left')
+ AppendMenu(parent, help='', id=ID_VIEWERALIGNMENTMENUITEMS1,
+ kind=wx.ITEM_NORMAL, text=u'Center')
+ AppendMenu(parent, help='', id=ID_VIEWERALIGNMENTMENUITEMS2,
+ kind=wx.ITEM_NORMAL, text=u'Right')
+ parent.AppendSeparator()
+ AppendMenu(parent, help='', id=ID_VIEWERALIGNMENTMENUITEMS4,
+ kind=wx.ITEM_NORMAL, text=u'Top')
+ AppendMenu(parent, help='', id=ID_VIEWERALIGNMENTMENUITEMS5,
+ kind=wx.ITEM_NORMAL, text=u'Middle')
+ AppendMenu(parent, help='', id=ID_VIEWERALIGNMENTMENUITEMS6,
+ kind=wx.ITEM_NORMAL, text=u'Bottom')
+ # Link menu event to corresponding called functions
+ self.Bind(wx.EVT_MENU, self.OnAlignLeftMenu,
+ id=ID_VIEWERALIGNMENTMENUITEMS0)
+ self.Bind(wx.EVT_MENU, self.OnAlignCenterMenu,
+ id=ID_VIEWERALIGNMENTMENUITEMS1)
+ self.Bind(wx.EVT_MENU, self.OnAlignRightMenu,
+ id=ID_VIEWERALIGNMENTMENUITEMS2)
+ self.Bind(wx.EVT_MENU, self.OnAlignTopMenu,
+ id=ID_VIEWERALIGNMENTMENUITEMS4)
+ self.Bind(wx.EVT_MENU, self.OnAlignMiddleMenu,
+ id=ID_VIEWERALIGNMENTMENUITEMS5)
+ self.Bind(wx.EVT_MENU, self.OnAlignBottomMenu,
+ id=ID_VIEWERALIGNMENTMENUITEMS6)
+
# Create Contextual Menu items
def _init_coll_ContextualMenu_Items(self, parent):
# Create menu items
- AppendMenu(parent, help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS0,
+ AppendMenu(parent, help='', id=ID_VIEWERCONTEXTUALMENUITEMS0,
kind=wx.ITEM_RADIO, text=u'No Modifier')
- AppendMenu(parent, help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS1,
+ AppendMenu(parent, help='', id=ID_VIEWERCONTEXTUALMENUITEMS1,
kind=wx.ITEM_RADIO, text=u'Negated')
- AppendMenu(parent, help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS2,
+ AppendMenu(parent, help='', id=ID_VIEWERCONTEXTUALMENUITEMS2,
kind=wx.ITEM_RADIO, text=u'Rising Edge')
- AppendMenu(parent, help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS3,
+ AppendMenu(parent, help='', id=ID_VIEWERCONTEXTUALMENUITEMS3,
kind=wx.ITEM_RADIO, text=u'Falling Edge')
parent.AppendSeparator()
- AppendMenu(parent, help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS5,
+ AppendMenu(parent, help='', id=ID_VIEWERCONTEXTUALMENUITEMS5,
kind=wx.ITEM_NORMAL, text=u'Add Wire Segment')
- AppendMenu(parent, help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS6,
+ AppendMenu(parent, help='', id=ID_VIEWERCONTEXTUALMENUITEMS6,
kind=wx.ITEM_NORMAL, text=u'Delete Wire Segment')
parent.AppendSeparator()
- AppendMenu(parent, help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS8,
+ AppendMenu(parent, help='', id=ID_VIEWERCONTEXTUALMENUITEMS8,
kind=wx.ITEM_NORMAL, text=u'Add Divergence Branch')
- AppendMenu(parent, help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS9,
+ AppendMenu(parent, help='', id=ID_VIEWERCONTEXTUALMENUITEMS9,
kind=wx.ITEM_NORMAL, text=u'Delete Divergence Branch')
parent.AppendSeparator()
- AppendMenu(parent, help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS11,
+ AppendMenu(parent, help='', id=ID_VIEWERCONTEXTUALMENUITEMS11,
kind=wx.ITEM_NORMAL, text=u'Clear Execution Order')
- AppendMenu(parent, help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS12,
+ AppendMenu(parent, help='', id=ID_VIEWERCONTEXTUALMENUITEMS12,
kind=wx.ITEM_NORMAL, text=u'Reset Execution Order')
parent.AppendSeparator()
- AppendMenu(parent, help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS14,
+ parent.AppendMenu(ID_VIEWERCONTEXTUALMENUITEMS14, "Alignment", self.AlignmentMenu)
+ parent.AppendSeparator()
+ AppendMenu(parent, help='', id=ID_VIEWERCONTEXTUALMENUITEMS16,
kind=wx.ITEM_NORMAL, text=u'Edit Block')
- AppendMenu(parent, help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS15,
+ AppendMenu(parent, help='', id=ID_VIEWERCONTEXTUALMENUITEMS17,
kind=wx.ITEM_NORMAL, text=u'Delete')
# Link menu event to corresponding called functions
self.Bind(wx.EVT_MENU, self.OnNoModifierMenu,
- id=ID_FBDVIEWERCONTEXTUALMENUITEMS0)
+ id=ID_VIEWERCONTEXTUALMENUITEMS0)
self.Bind(wx.EVT_MENU, self.OnNegatedMenu,
- id=ID_FBDVIEWERCONTEXTUALMENUITEMS1)
+ id=ID_VIEWERCONTEXTUALMENUITEMS1)
self.Bind(wx.EVT_MENU, self.OnRisingEdgeMenu,
- id=ID_FBDVIEWERCONTEXTUALMENUITEMS2)
+ id=ID_VIEWERCONTEXTUALMENUITEMS2)
self.Bind(wx.EVT_MENU, self.OnFallingEdgeMenu,
- id=ID_FBDVIEWERCONTEXTUALMENUITEMS3)
+ id=ID_VIEWERCONTEXTUALMENUITEMS3)
self.Bind(wx.EVT_MENU, self.OnAddSegmentMenu,
- id=ID_FBDVIEWERCONTEXTUALMENUITEMS5)
+ id=ID_VIEWERCONTEXTUALMENUITEMS5)
self.Bind(wx.EVT_MENU, self.OnDeleteSegmentMenu,
- id=ID_FBDVIEWERCONTEXTUALMENUITEMS6)
+ id=ID_VIEWERCONTEXTUALMENUITEMS6)
self.Bind(wx.EVT_MENU, self.OnAddBranchMenu,
- id=ID_FBDVIEWERCONTEXTUALMENUITEMS8)
+ id=ID_VIEWERCONTEXTUALMENUITEMS8)
self.Bind(wx.EVT_MENU, self.OnDeleteBranchMenu,
- id=ID_FBDVIEWERCONTEXTUALMENUITEMS9)
+ id=ID_VIEWERCONTEXTUALMENUITEMS9)
self.Bind(wx.EVT_MENU, self.OnClearExecutionOrderMenu,
- id=ID_FBDVIEWERCONTEXTUALMENUITEMS11)
+ id=ID_VIEWERCONTEXTUALMENUITEMS11)
self.Bind(wx.EVT_MENU, self.OnResetExecutionOrderMenu,
- id=ID_FBDVIEWERCONTEXTUALMENUITEMS12)
+ id=ID_VIEWERCONTEXTUALMENUITEMS12)
self.Bind(wx.EVT_MENU, self.OnEditBlockMenu,
- id=ID_FBDVIEWERCONTEXTUALMENUITEMS14)
+ id=ID_VIEWERCONTEXTUALMENUITEMS16)
self.Bind(wx.EVT_MENU, self.OnDeleteMenu,
- id=ID_FBDVIEWERCONTEXTUALMENUITEMS15)
+ id=ID_VIEWERCONTEXTUALMENUITEMS17)
# Create and initialize Contextual Menu
def _init_menus(self):
+ self.AlignmentMenu = wx.Menu(title='')
self.ContextualMenu = wx.Menu(title='')
+ self._init_coll_AlignmentMenu_Items(self.AlignmentMenu)
self._init_coll_ContextualMenu_Items(self.ContextualMenu)
# Create a new Viewer
@@ -230,6 +271,7 @@
self.Scaling = None
#self.Scaling = (8, 8)
self.DrawGrid = True
+ self.DrawingWire = False
self.current_id = 0
self.TagName = tagname
@@ -741,75 +783,129 @@
def PopupBlockMenu(self, connector = None):
if connector is not None and connector.IsCompatible("BOOL"):
type = self.Controler.GetEditedElementType(self.TagName)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS0, True)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS1, True)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS2, type != "function")
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS3, type != "function")
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS0, True)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS1, True)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS2, type != "function")
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS3, type != "function")
else:
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS0, False)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS1, False)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS2, False)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS3, False)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS5, False)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS6, False)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS8, False)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS9, False)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS14, self.SelectedElement.GetType() in self.Controler.GetProjectPouNames())
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS15, True)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS0, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS1, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS2, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS3, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS5, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS6, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS8, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS9, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS14, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS16, self.SelectedElement.GetType() in self.Controler.GetProjectPouNames())
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS17, True)
if connector:
if connector.IsNegated():
- self.ContextualMenu.Check(ID_FBDVIEWERCONTEXTUALMENUITEMS1, True)
+ self.ContextualMenu.Check(ID_VIEWERCONTEXTUALMENUITEMS1, True)
elif connector.GetEdge() == "rising":
- self.ContextualMenu.Check(ID_FBDVIEWERCONTEXTUALMENUITEMS2, True)
+ self.ContextualMenu.Check(ID_VIEWERCONTEXTUALMENUITEMS2, True)
elif connector.GetEdge() == "falling":
- self.ContextualMenu.Check(ID_FBDVIEWERCONTEXTUALMENUITEMS3, True)
- else:
- self.ContextualMenu.Check(ID_FBDVIEWERCONTEXTUALMENUITEMS0, True)
+ self.ContextualMenu.Check(ID_VIEWERCONTEXTUALMENUITEMS3, True)
+ else:
+ self.ContextualMenu.Check(ID_VIEWERCONTEXTUALMENUITEMS0, True)
self.PopupMenu(self.ContextualMenu)
def PopupWireMenu(self):
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS0, False)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS1, False)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS2, False)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS3, False)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS5, True)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS6, True)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS8, False)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS9, False)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS14, False)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS15, True)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS0, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS1, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS2, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS3, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS5, True)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS6, True)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS8, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS9, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS14, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS16, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS17, True)
self.PopupMenu(self.ContextualMenu)
def PopupDivergenceMenu(self, connector):
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS0, False)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS1, False)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS2, False)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS3, False)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS5, False)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS6, False)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS8, True)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS9, connector)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS14, False)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS15, True)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS0, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS1, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS2, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS3, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS5, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS6, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS8, True)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS9, connector)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS14, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS16, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS17, True)
self.PopupMenu(self.ContextualMenu)
+ def PopupGroupMenu(self):
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS0, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS1, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS2, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS3, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS5, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS6, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS8, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS9, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS14, True)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS16, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS17, True)
+ self.PopupMenu(self.ContextualMenu)
+
def PopupDefaultMenu(self, block = True):
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS0, False)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS1, False)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS2, False)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS3, False)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS5, False)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS6, False)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS8, False)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS9, False)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS14, False)
- self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS15, block)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS0, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS1, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS2, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS3, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS5, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS6, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS8, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS9, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS14, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS16, False)
+ self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS17, block)
self.PopupMenu(self.ContextualMenu)
#-------------------------------------------------------------------------------
# Menu items functions
#-------------------------------------------------------------------------------
+ def OnAlignLeftMenu(self, event):
+ if self.SelectedElement and isinstance(self.SelectedElement, Graphic_Group):
+ self.SelectedElement.AlignElements(ALIGN_LEFT, None)
+ self.RefreshBuffer()
+ event.Skip()
+
+ def OnAlignCenterMenu(self, event):
+ if self.SelectedElement and isinstance(self.SelectedElement, Graphic_Group):
+ self.SelectedElement.AlignElements(ALIGN_CENTER, None)
+ self.RefreshBuffer()
+ event.Skip()
+
+ def OnAlignRightMenu(self, event):
+ if self.SelectedElement and isinstance(self.SelectedElement, Graphic_Group):
+ self.SelectedElement.AlignElements(ALIGN_RIGHT, None)
+ self.RefreshBuffer()
+ event.Skip()
+
+ def OnAlignTopMenu(self, event):
+ if self.SelectedElement and isinstance(self.SelectedElement, Graphic_Group):
+ self.SelectedElement.AlignElements(None, ALIGN_TOP)
+ self.RefreshBuffer()
+ event.Skip()
+
+ def OnAlignMiddleMenu(self, event):
+ if self.SelectedElement and isinstance(self.SelectedElement, Graphic_Group):
+ self.SelectedElement.AlignElements(None, ALIGN_MIDDLE)
+ self.RefreshBuffer()
+ event.Skip()
+
+ def OnAlignBottomMenu(self, event):
+ if self.SelectedElement and isinstance(self.SelectedElement, Graphic_Group):
+ self.SelectedElement.AlignElements(None, ALIGN_BOTTOM)
+ self.RefreshBuffer()
+ event.Skip()
+
def OnNoModifierMenu(self, event):
if self.SelectedElement and self.IsBlock(self.SelectedElement):
self.SelectedElement.SetConnectorNegated(False)
@@ -858,7 +954,7 @@
def OnEditBlockMenu(self, event):
if self.SelectedElement:
- self.ParentWindow.EditProjectElement(ITEM_POU, self.SelectedElement.GetType())
+ self.ParentWindow.EditProjectElement(ITEM_POU, "P::%s"%self.SelectedElement.GetType())
event.Skip()
def OnDeleteMenu(self, event):
@@ -905,42 +1001,55 @@
self.SelectedElement.SetSelected(True)
else:
element = self.FindElement(pos)
- if self.SelectedElement and self.SelectedElement != element:
- self.SelectedElement.SetSelected(False)
- self.SelectedElement = None
+ connector = self.FindBlockConnector(pos)
+ if self.DrawingWire:
+ self.DrawingWire = False
+ if connector:
+ event.Dragging = lambda : True
+ self.SelectedElement.OnMotion(event, self.GetLogicalDC(), self.Scaling)
+ if self.SelectedElement.EndConnected is not None:
+ self.SelectedElement.ResetPoints()
+ self.SelectedElement.GeneratePoints()
+ self.SelectedElement.RefreshModel()
+ self.SelectedElement.SetSelected(True)
+ element = self.SelectedElement
+ self.RefreshBuffer()
+ else:
+ self.SelectedElement.Delete()
+ element = None
self.Refresh(False)
- if element:
- self.SelectedElement = element
- self.SelectedElement.OnLeftDown(event, dc, self.Scaling)
- self.Refresh(False)
+ elif connector:
+ self.DrawingWire = True
+ pos = GetScaledEventPosition(event, self.GetLogicalDC(), self.Scaling)
+ if (connector.GetDirection() == EAST):
+ wire = Wire(self, [wx.Point(pos.x, pos.y), EAST], [wx.Point(pos.x, pos.y), WEST])
+ else:
+ wire = Wire(self, [wx.Point(pos.x, pos.y), WEST], [wx.Point(pos.x, pos.y), EAST])
+ wire.oldPos = pos
+ wire.Handle = (HANDLE_POINT, 0)
+ wire.ProcessDragging(0, 0)
+ wire.Handle = (HANDLE_POINT, 1)
+ self.AddWire(wire)
+ if self.SelectedElement:
+ self.SelectedElement.SetSelected(False)
+ self.SelectedElement = wire
else:
- self.rubberBand.Reset()
- self.rubberBand.OnLeftDown(event, dc, self.Scaling)
+ if self.SelectedElement and self.SelectedElement != element:
+ self.SelectedElement.SetSelected(False)
+ self.SelectedElement = None
+ self.Refresh(False)
+ if element:
+ self.SelectedElement = element
+ self.SelectedElement.OnLeftDown(event, dc, self.Scaling)
+ self.Refresh(False)
+ else:
+ self.rubberBand.Reset()
+ self.rubberBand.OnLeftDown(event, dc, self.Scaling)
elif self.Mode in [MODE_BLOCK, MODE_VARIABLE, MODE_CONNECTION, MODE_COMMENT,
MODE_CONTACT, MODE_COIL, MODE_POWERRAIL, MODE_INITIALSTEP,
MODE_STEP, MODE_TRANSITION, MODE_DIVERGENCE, MODE_JUMP, MODE_ACTION]:
self.rubberBand.Reset()
self.rubberBand.OnLeftDown(event, self.GetLogicalDC(), self.Scaling)
- elif self.Mode == MODE_WIRE:
- pos = GetScaledEventPosition(event, self.GetLogicalDC(), self.Scaling)
- connector = self.FindBlockConnector(pos)
- if connector:
- if (connector.GetDirection() == EAST):
- wire = Wire(self, [wx.Point(pos.x, pos.y), EAST], [wx.Point(pos.x, pos.y), WEST])
- else:
- wire = Wire(self, [wx.Point(pos.x, pos.y), WEST], [wx.Point(pos.x, pos.y), EAST])
- wire.oldPos = pos
- wire.Handle = (HANDLE_POINT, 0)
- wire.ProcessDragging(0, 0)
- wire.Handle = (HANDLE_POINT, 1)
- self.AddWire(wire)
- if self.SelectedElement:
- self.SelectedElement.SetSelected(False)
- self.SelectedElement = wire
- elif self.SelectedElement:
- self.SelectedElement.SetSelected(False)
- self.SelectedElement = None
- self.Refresh(False)
event.Skip()
def OnViewerLeftUp(self, event):
@@ -987,21 +1096,27 @@
elif self.Mode == MODE_ACTION:
wx.CallAfter(self.AddNewActionBlock, bbox)
elif self.Mode == MODE_SELECTION and self.SelectedElement:
- self.SelectedElement.OnLeftUp(event, self.GetLogicalDC(), self.Scaling)
- wx.CallAfter(self.SetCursor, wx.NullCursor)
- self.Refresh(False)
- elif self.Mode == MODE_WIRE and self.SelectedElement:
- if self.SelectedElement.EndConnected != None:
- self.SelectedElement.ResetPoints()
- self.SelectedElement.OnMotion(event, self.GetLogicalDC(), self.Scaling)
- self.SelectedElement.GeneratePoints()
- self.SelectedElement.RefreshModel()
- self.SelectedElement.SetSelected(True)
- self.RefreshBuffer()
- else:
- self.SelectedElement.Delete()
- self.SelectedElement = None
- self.Refresh(False)
+ dc = self.GetLogicalDC()
+ if self.DrawingWire:
+ pos = event.GetLogicalPosition(dc)
+ connector = self.FindBlockConnector(pos)
+ if self.SelectedElement.EndConnected is not None:
+ self.DrawingWire = False
+ self.SelectedElement.ResetPoints()
+ self.SelectedElement.OnMotion(event, dc, self.Scaling)
+ self.SelectedElement.GeneratePoints()
+ self.SelectedElement.RefreshModel()
+ self.SelectedElement.SetSelected(True)
+ self.RefreshBuffer()
+ elif connector is None:
+ self.DrawingWire = False
+ self.SelectedElement.Delete()
+ self.SelectedElement = None
+ self.Refresh(False)
+ else:
+ self.SelectedElement.OnLeftUp(event, dc, self.Scaling)
+ wx.CallAfter(self.SetCursor, wx.NullCursor)
+ self.Refresh(False)
if self.Mode != MODE_SELECTION and not self.SavedMode:
wx.CallAfter(self.ParentWindow.ResetCurrentMode)
event.Skip()
@@ -1035,16 +1150,16 @@
if self.rubberBand.IsShown():
self.rubberBand.OnMotion(event, self.GetLogicalDC(), self.Scaling)
elif self.Mode == MODE_SELECTION and self.SelectedElement:
- if self.SelectedElement.OnMotion(event, self.GetLogicalDC(), self.Scaling):
- self.Refresh(False)
- elif self.Mode == MODE_WIRE and self.SelectedElement:
- dc = self.GetLogicalDC()
- pos = GetScaledEventPosition(event, dc, self.Scaling)
- connector = self.FindBlockConnector(pos, False)
- if not connector or self.SelectedElement.EndConnected == None:
- self.SelectedElement.ResetPoints()
- self.SelectedElement.OnMotion(event, dc, self.Scaling)
- self.SelectedElement.GeneratePoints()
+ if self.DrawingWire:
+ dc = self.GetLogicalDC()
+ pos = GetScaledEventPosition(event, dc, self.Scaling)
+ connector = self.FindBlockConnector(pos, False)
+ if not connector or self.SelectedElement.EndConnected == None:
+ self.SelectedElement.ResetPoints()
+ self.SelectedElement.OnMotion(event, dc, self.Scaling)
+ self.SelectedElement.GeneratePoints()
+ self.Refresh(False)
+ elif self.SelectedElement.OnMotion(event, self.GetLogicalDC(), self.Scaling):
self.Refresh(False)
self.UpdateScrollPos(event)
event.Skip()
@@ -1086,7 +1201,10 @@
self.SelectedElement = None
self.RefreshBuffer()
self.RefreshScrollBars()
- self.Refresh(False)
+ self.SetCursor(wx.NullCursor)
+ self.Refresh(False)
+ elif keycode == wx.WXK_RETURN and self.SelectedElement:
+ self.SelectedElement.OnLeftDClick(event, self.GetLogicalDC(), self.Scaling)
elif keycode == wx.WXK_LEFT:
if event.ControlDown() and event.ShiftDown():
self.Scroll(0, ypos)