PLCOpenEditor.py
changeset 361 62570186dad4
parent 359 363af30a8b83
child 366 764a7584022c
equal deleted inserted replaced
360:072f9f830659 361:62570186dad4
  1293         def ZoomFunction(event):
  1293         def ZoomFunction(event):
  1294             selected = self.TabsOpened.GetSelection()
  1294             selected = self.TabsOpened.GetSelection()
  1295             if selected != -1:
  1295             if selected != -1:
  1296                 window = self.TabsOpened.GetPage(selected)
  1296                 window = self.TabsOpened.GetPage(selected)
  1297                 window.SetScale(idx)
  1297                 window.SetScale(idx)
       
  1298                 window.RefreshVisibleElements()
       
  1299                 window.RefreshScrollBars()
  1298             event.Skip()
  1300             event.Skip()
  1299         return ZoomFunction
  1301         return ZoomFunction
  1300 
  1302 
  1301 
  1303 
  1302 #-------------------------------------------------------------------------------
  1304 #-------------------------------------------------------------------------------
  4532 
  4534 
  4533 #-------------------------------------------------------------------------------
  4535 #-------------------------------------------------------------------------------
  4534 #                            Variables Editor Panel
  4536 #                            Variables Editor Panel
  4535 #-------------------------------------------------------------------------------
  4537 #-------------------------------------------------------------------------------
  4536 
  4538 
  4537 class VariableTableItem:
  4539 class VariableTableItem(DebugDataConsumer):
  4538     
  4540     
  4539     def __init__(self, parent, variable, value):
  4541     def __init__(self, parent, variable, value):
       
  4542         DebugDataConsumer.__init__(self)
  4540         self.Parent = parent
  4543         self.Parent = parent
  4541         self.Variable = variable
  4544         self.Variable = variable
  4542         self.Value = value
  4545         self.Value = value
  4543     
  4546     
  4544     def __del__(self):
  4547     def __del__(self):
  4551     
  4554     
  4552     def GetVariable(self):
  4555     def GetVariable(self):
  4553         return self.Variable
  4556         return self.Variable
  4554     
  4557     
  4555     def SetValue(self, value):
  4558     def SetValue(self, value):
  4556         if self.Parent and self.Value != value:
  4559         if self.Value != value:
  4557             self.Value = value
  4560             self.Value = value
  4558             self.Parent.RefreshGrid()
  4561             self.Parent.NewDataAvailable()
  4559     
  4562     
  4560     def GetValue(self):
  4563     def GetValue(self):
  4561         return self.Value    
  4564         return self.Value
  4562 
  4565 
  4563 class DebugVariableTable(wx.grid.PyGridTableBase):
  4566 class DebugVariableTable(wx.grid.PyGridTableBase):
  4564     
  4567     
  4565     """
  4568     """
  4566     A custom wx.grid.Grid Table using user supplied data
  4569     A custom wx.grid.Grid Table using user supplied data
  4714         message.ShowModal()
  4717         message.ShowModal()
  4715         message.Destroy()
  4718         message.Destroy()
  4716 
  4719 
  4717 [ID_DEBUGVARIABLEPANEL, ID_DEBUGVARIABLEPANELVARIABLESGRID, 
  4720 [ID_DEBUGVARIABLEPANEL, ID_DEBUGVARIABLEPANELVARIABLESGRID, 
  4718  ID_DEBUGVARIABLEPANELUPBUTTON, ID_DEBUGVARIABLEPANELDOWNBUTTON, 
  4721  ID_DEBUGVARIABLEPANELUPBUTTON, ID_DEBUGVARIABLEPANELDOWNBUTTON, 
  4719  ID_DEBUGVARIABLEPANELDELETEBUTTON, 
  4722  ID_DEBUGVARIABLEPANELDELETEBUTTON,
  4720 ] = [wx.NewId() for _init_ctrls in range(5)]
  4723 ] = [wx.NewId() for _init_ctrls in range(5)]
  4721 
  4724 
  4722 class DebugVariablePanel(wx.Panel):
  4725 class DebugVariablePanel(wx.Panel, DebugViewer):
  4723     
  4726     
  4724     if wx.VERSION < (2, 6, 0):
  4727     if wx.VERSION < (2, 6, 0):
  4725         def Bind(self, event, function, id = None):
  4728         def Bind(self, event, function, id = None):
  4726             if id is not None:
  4729             if id is not None:
  4727                 event(self, id, function)
  4730                 event(self, id, function)
  4784         
  4787         
  4785         self._init_sizers()
  4788         self._init_sizers()
  4786     
  4789     
  4787     def __init__(self, parent, controler):
  4790     def __init__(self, parent, controler):
  4788         self._init_ctrls(parent)
  4791         self._init_ctrls(parent)
       
  4792         DebugViewer.__init__(self, controler, True)
  4789         self.Controler = controler
  4793         self.Controler = controler
  4790         
  4794         
  4791         self.Table = DebugVariableTable(self, [], ["Variable", "Value"])    
  4795         self.Table = DebugVariableTable(self, [], ["Variable", "Value"])
  4792         self.VariablesGrid.SetTable(self.Table)
  4796         self.VariablesGrid.SetTable(self.Table)
  4793         self.VariablesGrid.SetRowLabelSize(0)
  4797         self.VariablesGrid.SetRowLabelSize(0)
  4794         
  4798         
  4795         for col in range(self.Table.GetNumberCols()):
  4799         for col in range(self.Table.GetNumberCols()):
  4796             attr = wx.grid.GridCellAttr()
  4800             attr = wx.grid.GridCellAttr()
  4797             attr.SetAlignment(wx.ALIGN_RIGHT, wx.ALIGN_CENTER)
  4801             attr.SetAlignment(wx.ALIGN_RIGHT, wx.ALIGN_CENTER)
  4798             self.VariablesGrid.SetColAttr(col, attr)
  4802             self.VariablesGrid.SetColAttr(col, attr)
  4799             self.VariablesGrid.SetColSize(col, 100)
  4803             self.VariablesGrid.SetColSize(col, 100)
  4800     
  4804         
  4801         self.Table.ResetView(self.VariablesGrid)
  4805         self.Table.ResetView(self.VariablesGrid)
  4802     
  4806     
  4803     def __del__(self):
  4807     def RefreshNewData(self):
  4804         for item in self.Table.GetData():
  4808         self.RefreshGrid()
  4805             self.Controler.UnsubscribeDebugIECVariable(item.GetVariable().upper(), item)
       
  4806     
  4809     
  4807     def RefreshGrid(self):
  4810     def RefreshGrid(self):
       
  4811         self.Freeze()
  4808         self.Table.ResetView(self.VariablesGrid)
  4812         self.Table.ResetView(self.VariablesGrid)
       
  4813         self.Thaw()
  4809     
  4814     
  4810     def OnDeleteButton(self, event):
  4815     def OnDeleteButton(self, event):
  4811         idx = self.VariablesGrid.GetGridCursorRow()
  4816         idx = self.VariablesGrid.GetGridCursorRow()
  4812         item = self.Table.GetItem(idx)
  4817         item = self.Table.GetItem(idx)
  4813         self.Controler.UnsubscribeDebugIECVariable(item.GetVariable().upper(), item)
  4818         self.RemoveDataConsumer(item)
  4814         self.Table.RemoveItem(idx)
  4819         self.Table.RemoveItem(idx)
  4815         self.RefreshGrid()
  4820         self.RefreshGrid()
  4816         event.Skip()
  4821         event.Skip()
  4817 
  4822 
  4818     def OnUpButton(self, event):
  4823     def OnUpButton(self, event):
  4826     def InsertValue(self, idx, iec_path):
  4831     def InsertValue(self, idx, iec_path):
  4827         for item in self.Table.GetData():
  4832         for item in self.Table.GetData():
  4828             if iec_path == item.GetVariable():
  4833             if iec_path == item.GetVariable():
  4829                 return
  4834                 return
  4830         item = VariableTableItem(self, iec_path, "")
  4835         item = VariableTableItem(self, iec_path, "")
  4831         result = self.Controler.SubscribeDebugIECVariable(iec_path.upper(), item)
  4836         result = self.AddDataConsumer(iec_path.upper(), item)
  4832         if result is not None:
  4837         if result is not None:
  4833             self.Table.InsertItem(idx, item)
  4838             self.Table.InsertItem(idx, item)
  4834             self.RefreshGrid()
  4839             self.RefreshGrid()
  4835 
  4840 
  4836     def MoveValue(self, idx, move):
  4841     def MoveValue(self, idx, move):