--- a/Viewer.py Tue Oct 02 18:00:13 2007 +0200
+++ b/Viewer.py Tue Oct 02 18:07:59 2007 +0200
@@ -25,6 +25,7 @@
import wx
from plcopen.structures import *
+from PLCControler import ITEM_POU
from Dialogs import *
@@ -41,8 +42,8 @@
ID_FBDVIEWERCONTEXTUALMENUITEMS2, ID_FBDVIEWERCONTEXTUALMENUITEMS3,
ID_FBDVIEWERCONTEXTUALMENUITEMS5, ID_FBDVIEWERCONTEXTUALMENUITEMS6,
ID_FBDVIEWERCONTEXTUALMENUITEMS8, ID_FBDVIEWERCONTEXTUALMENUITEMS9,
- ID_FBDVIEWERCONTEXTUALMENUITEMS11,
-] = [wx.NewId() for _init_coll_ContextualMenu_Items in range(9)]
+ ID_FBDVIEWERCONTEXTUALMENUITEMS11, ID_FBDVIEWERCONTEXTUALMENUITEMS12,
+] = [wx.NewId() for _init_coll_ContextualMenu_Items in range(10)]
class ViewerDropTarget(wx.TextDropTarget):
@@ -80,6 +81,7 @@
self.ParentWindow.AddBlock(block)
self.ParentWindow.Controler.AddCurrentElementEditingBlock(id, values[0], values[2])
self.ParentWindow.RefreshBlockModel(block)
+ self.ParentWindow.RefreshBuffer()
self.ParentWindow.RefreshScrollBars()
self.ParentWindow.Refresh()
elif values[1] != "location":
@@ -97,6 +99,7 @@
self.ParentWindow.AddBlock(variable)
self.ParentWindow.Controler.AddCurrentElementEditingVariable(id, var_type)
self.ParentWindow.RefreshVariableModel(variable)
+ self.ParentWindow.RefreshBuffer()
self.ParentWindow.RefreshScrollBars()
self.ParentWindow.Refresh()
@@ -131,6 +134,8 @@
kind=wx.ITEM_NORMAL, text=u'Delete Divergence Branch')
parent.AppendSeparator()
parent.Append(help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS11,
+ kind=wx.ITEM_NORMAL, text=u'Edit Block')
+ parent.Append(help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS12,
kind=wx.ITEM_NORMAL, text=u'Delete')
# Link menu event to corresponding called functions
self.Bind(wx.EVT_MENU, self.OnNoModifierMenu,
@@ -149,8 +154,10 @@
id=ID_FBDVIEWERCONTEXTUALMENUITEMS8)
self.Bind(wx.EVT_MENU, self.OnDeleteBranchMenu,
id=ID_FBDVIEWERCONTEXTUALMENUITEMS9)
+ self.Bind(wx.EVT_MENU, self.OnEditBlockMenu,
+ id=ID_FBDVIEWERCONTEXTUALMENUITEMS11)
self.Bind(wx.EVT_MENU, self.OnDeleteMenu,
- id=ID_FBDVIEWERCONTEXTUALMENUITEMS11)
+ id=ID_FBDVIEWERCONTEXTUALMENUITEMS12)
# Create and initialize Contextual Menu
def _init_menus(self):
@@ -664,15 +671,22 @@
#-------------------------------------------------------------------------------
def PopupBlockMenu(self, connector = None):
- type = self.Controler.GetCurrentElementEditingType()
- self.ContextualMenu.FindItemByPosition(0).Enable(connector != None)
- self.ContextualMenu.FindItemByPosition(1).Enable(connector != None)
- self.ContextualMenu.FindItemByPosition(2).Enable(connector != None and type != "function")
- self.ContextualMenu.FindItemByPosition(3).Enable(connector != None and type != "function")
+ if connector is not None and connector.IsCompatible("BOOL"):
+ type = self.Controler.GetCurrentElementEditingType()
+ self.ContextualMenu.FindItemByPosition(0).Enable(True)
+ self.ContextualMenu.FindItemByPosition(1).Enable(True)
+ self.ContextualMenu.FindItemByPosition(2).Enable(type != "function")
+ self.ContextualMenu.FindItemByPosition(3).Enable(type != "function")
+ else:
+ self.ContextualMenu.FindItemByPosition(0).Enable(False)
+ self.ContextualMenu.FindItemByPosition(1).Enable(False)
+ self.ContextualMenu.FindItemByPosition(2).Enable(False)
+ self.ContextualMenu.FindItemByPosition(3).Enable(False)
self.ContextualMenu.FindItemByPosition(5).Enable(False)
self.ContextualMenu.FindItemByPosition(6).Enable(False)
self.ContextualMenu.FindItemByPosition(8).Enable(False)
self.ContextualMenu.FindItemByPosition(9).Enable(False)
+ self.ContextualMenu.FindItemByPosition(11).Enable(self.SelectedElement.GetType() in self.Controler.GetProjectPouNames())
if connector:
if connector.IsNegated():
self.ContextualMenu.FindItemByPosition(1).Check(True)
@@ -684,22 +698,6 @@
self.ContextualMenu.FindItemByPosition(0).Check(True)
self.PopupMenu(self.ContextualMenu)
- def PopupVariableMenu(self, connector = None):
- self.ContextualMenu.FindItemByPosition(0).Enable(connector != None)
- self.ContextualMenu.FindItemByPosition(1).Enable(connector != None)
- self.ContextualMenu.FindItemByPosition(2).Enable(False)
- self.ContextualMenu.FindItemByPosition(3).Enable(False)
- self.ContextualMenu.FindItemByPosition(5).Enable(False)
- self.ContextualMenu.FindItemByPosition(6).Enable(False)
- self.ContextualMenu.FindItemByPosition(8).Enable(False)
- self.ContextualMenu.FindItemByPosition(9).Enable(False)
- if connector:
- if connector.IsNegated():
- self.ContextualMenu.FindItemByPosition(1).Check(True)
- else:
- self.ContextualMenu.FindItemByPosition(0).Check(True)
- self.PopupMenu(self.ContextualMenu)
-
def PopupWireMenu(self):
self.ContextualMenu.FindItemByPosition(0).Enable(False)
self.ContextualMenu.FindItemByPosition(1).Enable(False)
@@ -709,6 +707,7 @@
self.ContextualMenu.FindItemByPosition(6).Enable(True)
self.ContextualMenu.FindItemByPosition(8).Enable(False)
self.ContextualMenu.FindItemByPosition(9).Enable(False)
+ self.ContextualMenu.FindItemByPosition(11).Enable(False)
self.PopupMenu(self.ContextualMenu)
def PopupDivergenceMenu(self, connector):
@@ -720,6 +719,7 @@
self.ContextualMenu.FindItemByPosition(6).Enable(False)
self.ContextualMenu.FindItemByPosition(8).Enable(True)
self.ContextualMenu.FindItemByPosition(9).Enable(connector)
+ self.ContextualMenu.FindItemByPosition(11).Enable(False)
self.PopupMenu(self.ContextualMenu)
def PopupDefaultMenu(self):
@@ -731,6 +731,7 @@
self.ContextualMenu.FindItemByPosition(6).Enable(False)
self.ContextualMenu.FindItemByPosition(8).Enable(False)
self.ContextualMenu.FindItemByPosition(9).Enable(False)
+ self.ContextualMenu.FindItemByPosition(11).Enable(False)
self.PopupMenu(self.ContextualMenu)
#-------------------------------------------------------------------------------
@@ -783,6 +784,11 @@
self.RefreshBuffer()
event.Skip()
+ def OnEditBlockMenu(self, event):
+ if self.SelectedElement:
+ self.ParentWindow.EditProjectElement(ITEM_POU, self.SelectedElement.GetType())
+ event.Skip()
+
def OnDeleteMenu(self, event):
if self.SelectedElement:
self.SelectedElement.Delete()
@@ -935,8 +941,11 @@
def OnViewerLeftDClick(self, event):
if self.Mode == MODE_SELECTION and self.SelectedElement:
- self.SelectedElement.OnLeftDClick(event, self.GetLogicalDC(), self.Scaling)
- self.Refresh(False)
+ if event.ControlDown() and self.IsBlock(self.SelectedElement) and self.SelectedElement.GetType() in self.Controler.GetProjectPouNames():
+ self.ParentWindow.EditProjectElement(ITEM_POU, self.SelectedElement.GetType())
+ else:
+ self.SelectedElement.OnLeftDClick(event, self.GetLogicalDC(), self.Scaling)
+ self.Refresh(False)
event.Skip()
def OnViewerMotion(self, event):