controls/PouInstanceVariablesPanel.py
changeset 1730 64d8f52bc8c8
parent 1669 54da2cfe0180
child 1736 7e61baa047f0
--- a/controls/PouInstanceVariablesPanel.py	Fri Aug 11 15:18:19 2017 +0300
+++ b/controls/PouInstanceVariablesPanel.py	Mon Aug 14 19:13:01 2017 +0300
@@ -59,14 +59,14 @@
             w, h = self.GetClientSize()
             total_h = self.GetLineHeight(item)
             r_image_w, r_image_h = self._imageListRight.GetSize(rightimages[0])
-            
+
             bbox_width = (r_image_w + 4) * len(rightimages) + 4
             bbox_height = r_image_h + 8
             bbox_x = w - bbox_width
             bbox_y = item.GetY() + ((total_h > r_image_h) and [(total_h-r_image_h)/2] or [0])[0]
-            
+
             return wx.Rect(bbox_x, bbox_y, bbox_width, bbox_height)
-        
+
         return None
 
     def IsOverItemRightImage(self, item, point):
@@ -75,30 +75,30 @@
             point = self.CalcUnscrolledPosition(point)
             r_image_w, r_image_h = self._imageListRight.GetSize(rightimages[0])
             images_bbx = self.GetItemRightImagesBBox(item)
-            
+
             rect = wx.Rect(images_bbx.x + 4, images_bbx.y + 4,
                            r_image_w, r_image_h)
             for r_image in rightimages:
                 if rect.Inside(point):
                     return r_image
                 rect.x += r_image_w + 4
-            
+
             return None
-                
+
     def PaintItem(self, item, dc, level, align):
         CT.CustomTreeCtrl.PaintItem(self, item, dc, level, align)
-        
+
         rightimages = item.GetRightImages()
         if len(rightimages) > 0:
             images_bbx = self.GetItemRightImagesBBox(item)
             r_image_w, r_image_h = self._imageListRight.GetSize(rightimages[0])
-            
+
             dc.SetBrush(wx.TRANSPARENT_BRUSH)
             dc.SetPen(wx.TRANSPARENT_PEN)
-            
+
             bg_width = (r_image_w + 4) * len(rightimages) + 4
             bg_height = r_image_h + 8
-            dc.DrawRectangle(images_bbx.x, images_bbx.y, 
+            dc.DrawRectangle(images_bbx.x, images_bbx.y,
                              images_bbx.width, images_bbx.height)
             x_pos = images_bbx.x + 4
             for r_image in rightimages:
@@ -106,7 +106,7 @@
                     r_image, dc, x_pos, images_bbx.y + 4,
                     wx.IMAGELIST_DRAW_TRANSPARENT)
                 x_pos += r_image_w + 4
-    
+
 _ButtonCallbacks = namedtuple("ButtonCallbacks", ["leftdown", "dclick"])
 
 from PLCControler import ITEMS_VARIABLE, ITEM_CONFIGURATION, ITEM_RESOURCE, ITEM_POU, ITEM_TRANSITION, ITEM_ACTION
@@ -115,26 +115,26 @@
 class PouInstanceVariablesPanel(wx.Panel):
 
     def __init__(self, parent, window, controller, debug):
-        wx.Panel.__init__(self, name='PouInstanceTreePanel', 
-                parent=parent, pos=wx.Point(0, 0), 
+        wx.Panel.__init__(self, name='PouInstanceTreePanel',
+                parent=parent, pos=wx.Point(0, 0),
                 size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
-        
+
         self.ParentButton = wx.lib.buttons.GenBitmapButton(self,
               bitmap=GetBitmap("top"), size=wx.Size(28, 28), style=wx.NO_BORDER)
         self.ParentButton.SetToolTipString(_("Parent instance"))
-        self.Bind(wx.EVT_BUTTON, self.OnParentButtonClick, 
+        self.Bind(wx.EVT_BUTTON, self.OnParentButtonClick,
                 self.ParentButton)
-        
+
         self.InstanceChoice = wx.ComboBox(self, size=wx.Size(0, 0), style=wx.CB_READONLY)
         self.Bind(wx.EVT_COMBOBOX, self.OnInstanceChoiceChanged,
                 self.InstanceChoice)
-        
-        self.DebugButton = wx.lib.buttons.GenBitmapButton(self, 
+
+        self.DebugButton = wx.lib.buttons.GenBitmapButton(self,
               bitmap=GetBitmap("debug_instance"), size=wx.Size(28, 28), style=wx.NO_BORDER)
         self.DebugButton.SetToolTipString(_("Debug instance"))
-        self.Bind(wx.EVT_BUTTON, self.OnDebugButtonClick, 
+        self.Bind(wx.EVT_BUTTON, self.OnDebugButtonClick,
                 self.DebugButton)
-        
+
         self.VariablesList = CustomTreeCtrlWithRightImage(self,
               style=wx.SUNKEN_BORDER,
               agwStyle=CT.TR_NO_BUTTONS|
@@ -150,54 +150,54 @@
                 self.OnVariablesListItemActivated)
         self.VariablesList.Bind(wx.EVT_LEFT_DOWN, self.OnVariablesListLeftDown)
         self.VariablesList.Bind(wx.EVT_KEY_DOWN, self.OnVariablesListKeyDown)
-        
+
         self.TreeRightImageList = wx.ImageList(24, 24)
         self.EditImage = self.TreeRightImageList.Add(GetBitmap("edit"))
         self.DebugInstanceImage = self.TreeRightImageList.Add(GetBitmap("debug_instance"))
         self.VariablesList.SetRightImageList(self.TreeRightImageList)
-        
+
         self.ButtonCallBacks = {
             self.EditImage: _ButtonCallbacks(
                 self.EditButtonCallback, None),
             self.DebugInstanceImage: _ButtonCallbacks(
                 self.DebugButtonCallback, self.DebugButtonDClickCallback)}
-        
+
         buttons_sizer = wx.FlexGridSizer(cols=3, hgap=0, rows=1, vgap=0)
         buttons_sizer.AddWindow(self.ParentButton)
         buttons_sizer.AddWindow(self.InstanceChoice, flag=wx.GROW)
         buttons_sizer.AddWindow(self.DebugButton)
         buttons_sizer.AddGrowableCol(1)
         buttons_sizer.AddGrowableRow(0)
-        
+
         main_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0)
         main_sizer.AddSizer(buttons_sizer, flag=wx.GROW)
         main_sizer.AddWindow(self.VariablesList, flag=wx.GROW)
         main_sizer.AddGrowableCol(0)
         main_sizer.AddGrowableRow(1)
-        
+
         self.SetSizer(main_sizer)
-        
+
         self.ParentWindow = window
         self.Controller = controller
         self.Debug = debug
         if not self.Debug:
             self.DebugButton.Hide()
-        
+
         self.PouTagName = None
         self.PouInfos = None
         self.PouInstance = None
-        
+
     def __del__(self):
         self.Controller = None
-    
+
     def SetTreeImageList(self, tree_image_list):
         self.VariablesList.SetImageList(tree_image_list)
-    
+
     def SetController(self, controller):
         self.Controller = controller
-    
+
         self.RefreshView()
-    
+
     def SetPouType(self, tagname, pou_instance=None):
         if self.Controller is not None:
             if tagname == "Project":
@@ -206,7 +206,7 @@
                     tagname = self.Controller.ComputeConfigurationName(config_name)
             if pou_instance is not None:
                 self.PouInstance = pou_instance
-            
+
             if self.PouTagName != tagname:
                 self.PouTagName = tagname
                 self.RefreshView()
@@ -214,20 +214,20 @@
                 self.RefreshInstanceChoice()
         else:
             self.RefreshView()
-    
+
     def ResetView(self):
         self.Controller = None
-        
+
         self.PouTagName = None
         self.PouInfos = None
         self.PouInstance = None
-        
+
         self.RefreshView()
-    
+
     def RefreshView(self):
         self.Freeze()
         self.VariablesList.DeleteAllItems()
-        
+
         if self.Controller is not None and self.PouTagName is not None:
             if self.PouTagName.split('::')[0] in ['A', 'T']:
                 self.PouInfos = self.Controller.GetPouVariables('P::%s' % self.PouTagName.split('::')[1], self.Debug)
@@ -244,24 +244,24 @@
                     text = "%s (%s)" % (var_infos.name, var_infos.type)
                 else:
                     text = var_infos.name
-                
+
                 right_images = []
                 if var_infos.edit:
                     right_images.append(self.EditImage)
-                
+
                 if var_infos.debug and self.Debug:
                     right_images.append(self.DebugInstanceImage)
-                
+
                 item = self.VariablesList.AppendItem(root, text)
                 item.SetRightImages(right_images)
                 self.VariablesList.SetItemImage(item, self.ParentWindow.GetTreeImage(var_infos.var_class))
                 self.VariablesList.SetPyData(item, var_infos)
-            
+
         self.RefreshInstanceChoice()
         self.RefreshButtons()
-        
+
         self.Thaw()
-    
+
     def RefreshInstanceChoice(self):
         self.InstanceChoice.Clear()
         self.InstanceChoice.SetValue("")
@@ -279,12 +279,12 @@
             else:
                 self.PouInstance = None
                 self.InstanceChoice.SetValue(_("Select an instance"))
-    
+
     def RefreshButtons(self):
         enabled = self.InstanceChoice.GetSelection() != -1
         self.ParentButton.Enable(enabled and self.PouInfos.var_class != ITEM_CONFIGURATION)
         self.DebugButton.Enable(enabled and self.PouInfos.debug and self.Debug)
-        
+
         root = self.VariablesList.GetRootItem()
         if root is not None and root.IsOk():
             item, item_cookie = self.VariablesList.GetFirstChild(root)
@@ -295,12 +295,12 @@
                         if child.GetName() != "edit":
                             child.Enable(enabled)
                 item, item_cookie = self.VariablesList.GetNextChild(root, item_cookie)
-    
+
     def EditButtonCallback(self, infos):
         var_class = infos.var_class
         if var_class == ITEM_RESOURCE:
             tagname = self.Controller.ComputeConfigurationResourceName(
-                self.InstanceChoice.GetStringSelection(), 
+                self.InstanceChoice.GetStringSelection(),
                 infos.name)
         elif var_class == ITEM_TRANSITION:
             tagname = self.Controller.ComputePouTransitionName(
@@ -314,7 +314,7 @@
             var_class = ITEM_POU
             tagname = self.Controller.ComputePouName(infos.type)
         self.ParentWindow.EditProjectElement(var_class, tagname)
-    
+
     def DebugButtonCallback(self, infos):
         if self.InstanceChoice.GetSelection() != -1:
             var_class = infos.var_class
@@ -344,16 +344,16 @@
                     var_class,
                     var_path,
                     self.Controller.ComputePouName(infos.type))
-    
+
     def DebugButtonDClickCallback(self, infos):
         if self.InstanceChoice.GetSelection() != -1:
             if infos.var_class in ITEMS_VARIABLE:
                 self.ParentWindow.AddDebugVariable(
-                    "%s.%s" % (self.InstanceChoice.GetStringSelection(), 
-                               infos.name), 
+                    "%s.%s" % (self.InstanceChoice.GetStringSelection(),
+                               infos.name),
                     force=True,
                     graph=True)
-    
+
     def ShowInstanceChoicePopup(self):
         self.InstanceChoice.SetFocusFromKbd()
         size = self.InstanceChoice.GetSize()
@@ -364,7 +364,7 @@
         #event = wx.KeyEvent(wx.EVT_KEY_DOWN._getEvtType())
         #event.m_keyCode = wx.WXK_SPACE
         self.InstanceChoice.GetEventHandler().ProcessEvent(event)
-    
+
     def OnParentButtonClick(self, event):
         if self.InstanceChoice.GetSelection() != -1:
             parent_path = self.InstanceChoice.GetStringSelection().rsplit(".", 1)[0]
@@ -373,11 +373,11 @@
                 wx.CallAfter(self.SetPouType, tagname, parent_path)
                 wx.CallAfter(self.ParentWindow.SelectProjectTreeItem, tagname)
         event.Skip()
-        
+
     def OnInstanceChoiceChanged(self, event):
         self.RefreshButtons()
         event.Skip()
-        
+
     def OnDebugButtonClick(self, event):
         if self.InstanceChoice.GetSelection() != -1:
             self.ParentWindow.OpenDebugViewer(
@@ -385,26 +385,26 @@
                 self.InstanceChoice.GetStringSelection(),
                 self.PouTagName)
         event.Skip()
-    
+
     def OnVariablesListItemActivated(self, event):
         selected_item = event.GetItem()
         if selected_item is not None and selected_item.IsOk():
             item_infos = self.VariablesList.GetPyData(selected_item)
             if item_infos is not None:
-                
+
                 item_button = self.VariablesList.IsOverItemRightImage(
                     selected_item, event.GetPoint())
                 if item_button is not None:
                     callback = self.ButtonCallBacks[item_button].dclick
                     if callback is not None:
                         callback(item_infos)
-                
+
                 elif item_infos.var_class not in ITEMS_VARIABLE:
                     instance_path = self.InstanceChoice.GetStringSelection()
                     if item_infos.var_class == ITEM_RESOURCE:
                         if instance_path != "":
                             tagname = self.Controller.ComputeConfigurationResourceName(
-                                           instance_path, 
+                                           instance_path,
                                            item_infos.name)
                         else:
                             tagname = None
@@ -424,7 +424,7 @@
                         self.SetPouType(tagname, item_path)
                         self.ParentWindow.SelectProjectTreeItem(tagname)
         event.Skip()
-    
+
     def OnVariablesListLeftDown(self, event):
         if self.InstanceChoice.GetSelection() == -1:
             wx.CallAfter(self.ShowInstanceChoicePopup)
@@ -434,15 +434,15 @@
             if item is not None:
                 item_infos = self.VariablesList.GetPyData(item)
                 if item_infos is not None:
-                    
+
                     item_button = self.VariablesList.IsOverItemRightImage(
                         item, event.GetPosition())
                     if item_button is not None:
                         callback = self.ButtonCallBacks[item_button].leftdown
                         if callback is not None:
                             callback(item_infos)
-                
-                    elif (flags & CT.TREE_HITTEST_ONITEMLABEL and 
+
+                    elif (flags & CT.TREE_HITTEST_ONITEMLABEL and
                           item_infos.var_class in ITEMS_VARIABLE):
                         self.ParentWindow.EnsureTabVisible(
                             self.ParentWindow.DebugVariablePanel)
@@ -457,4 +457,3 @@
         keycode = event.GetKeyCode()
         if keycode != wx.WXK_LEFT:
             event.Skip()
-