Viewer.py
changeset 102 85875dcb7754
parent 98 ec5d7af033d8
child 106 3fc63036de16
--- 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):