diff -r 3f06a178b960 -r 85875dcb7754 Viewer.py --- 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):