PLCOpenEditor.py
changeset 497 3db9ffa8d816
parent 490 c47a09e1da3e
child 498 5f90349529c9
equal deleted inserted replaced
496:5ff24ccff2c7 497:3db9ffa8d816
  4104         self.VariablesGrid.SetLabelFont(wx.Font(10, 77, wx.NORMAL, wx.NORMAL,
  4104         self.VariablesGrid.SetLabelFont(wx.Font(10, 77, wx.NORMAL, wx.NORMAL,
  4105               False, 'Sans'))
  4105               False, 'Sans'))
  4106         self.VariablesGrid.SetSelectionBackground(wx.WHITE)
  4106         self.VariablesGrid.SetSelectionBackground(wx.WHITE)
  4107         self.VariablesGrid.SetSelectionForeground(wx.BLACK)
  4107         self.VariablesGrid.SetSelectionForeground(wx.BLACK)
  4108         self.VariablesGrid.SetDropTarget(DebugVariableDropTarget(self))
  4108         self.VariablesGrid.SetDropTarget(DebugVariableDropTarget(self))
  4109         self.VariablesGrid.Bind(wx.grid.EVT_GRID_CELL_RIGHT_CLICK, self.OnVariablesGridRightClick)
  4109         if wx.VERSION >= (2, 6, 0):
       
  4110             self.VariablesGrid.Bind(wx.grid.EVT_GRID_SELECT_CELL, self.OnVariablesGridCellSelect)
       
  4111             self.VariablesGrid.Bind(wx.grid.EVT_GRID_CELL_RIGHT_CLICK, self.OnVariablesGridCellRightClick)
       
  4112         else:
       
  4113             wx.grid.EVT_GRID_SELECT_CELL(self.VariablesGrid, self.OnVariablesGridCellSelect)
       
  4114             wx.grid.EVT_GRID_CELL_RIGHT_CLICK(self.VariablesGrid, self.OnVariablesGridCellRightClick)
  4110         
  4115         
  4111         self.UpButton = wx.Button(id=ID_DEBUGVARIABLEPANELUPBUTTON, label='^',
  4116         self.UpButton = wx.Button(id=ID_DEBUGVARIABLEPANELUPBUTTON, label='^',
  4112               name='UpButton', parent=self, pos=wx.Point(0, 0),
  4117               name='UpButton', parent=self, pos=wx.Point(0, 0),
  4113               size=wx.Size(32, 32), style=0)
  4118               size=wx.Size(32, 32), style=0)
  4114         self.Bind(wx.EVT_BUTTON, self.OnUpButton, id=ID_DEBUGVARIABLEPANELUPBUTTON)
  4119         self.Bind(wx.EVT_BUTTON, self.OnUpButton, id=ID_DEBUGVARIABLEPANELUPBUTTON)
  4139             attr.SetAlignment(wx.ALIGN_RIGHT, wx.ALIGN_CENTER)
  4144             attr.SetAlignment(wx.ALIGN_RIGHT, wx.ALIGN_CENTER)
  4140             self.VariablesGrid.SetColAttr(col, attr)
  4145             self.VariablesGrid.SetColAttr(col, attr)
  4141             self.VariablesGrid.SetColSize(col, 100)
  4146             self.VariablesGrid.SetColSize(col, 100)
  4142         
  4147         
  4143         self.Table.ResetView(self.VariablesGrid)
  4148         self.Table.ResetView(self.VariablesGrid)
       
  4149         self.RefreshButtons()
  4144     
  4150     
  4145     def RefreshNewData(self):
  4151     def RefreshNewData(self):
  4146         if self.HasNewData:
  4152         if self.HasNewData:
  4147             self.HasNewData = False
  4153             self.HasNewData = False
  4148             self.RefreshGrid()
  4154             self.RefreshGrid()
  4172     def GetReleaseVariableMenuFunction(self, iec_path):
  4178     def GetReleaseVariableMenuFunction(self, iec_path):
  4173         def ReleaseVariableFunction(event):
  4179         def ReleaseVariableFunction(event):
  4174             self.ReleaseDataValue(iec_path)
  4180             self.ReleaseDataValue(iec_path)
  4175         return ReleaseVariableFunction
  4181         return ReleaseVariableFunction
  4176     
  4182     
  4177     def OnVariablesGridRightClick(self, event):
  4183     def OnVariablesGridCellSelect(self, event):
       
  4184         wx.CallAfter(self.RefreshButtons)
       
  4185         event.Skip()
       
  4186     
       
  4187     def OnVariablesGridCellRightClick(self, event):
  4178         row, col = event.GetRow(), event.GetCol()
  4188         row, col = event.GetRow(), event.GetCol()
  4179         if self.Table.GetColLabelValue(col, False) == "Value":
  4189         if self.Table.GetColLabelValue(col, False) == "Value":
  4180             iec_path = self.Table.GetValueByName(row, "Variable").upper()
  4190             iec_path = self.Table.GetValueByName(row, "Variable").upper()
  4181 
  4191 
  4182             menu = wx.Menu(title='')
  4192             menu = wx.Menu(title='')
  4191             else:
  4201             else:
  4192                 menu.Enable(new_id, False)
  4202                 menu.Enable(new_id, False)
  4193             self.PopupMenu(menu)
  4203             self.PopupMenu(menu)
  4194         event.Skip()
  4204         event.Skip()
  4195     
  4205     
       
  4206     def RefreshButtons(self):
       
  4207         if getattr(self, "Table", None):
       
  4208             table_length = len(self.Table.data)
       
  4209             row = 0
       
  4210             if table_length > 0:
       
  4211                 row = self.VariablesGrid.GetGridCursorRow()
       
  4212             self.DeleteButton.Enable(table_length > 0)
       
  4213             self.UpButton.Enable(table_length > 0 and row > 0)
       
  4214             self.DownButton.Enable(table_length > 0 and row < table_length - 1)
       
  4215     
  4196     def OnDeleteButton(self, event):
  4216     def OnDeleteButton(self, event):
  4197         idx = self.VariablesGrid.GetGridCursorRow()
  4217         idx = self.VariablesGrid.GetGridCursorRow()
  4198         if idx >= 0:
  4218         if idx >= 0:
  4199             item = self.Table.GetItem(idx)
  4219             item = self.Table.GetItem(idx)
  4200             self.RemoveDataConsumer(item)
  4220             self.RemoveDataConsumer(item)
  4201             self.Table.RemoveItem(idx)
  4221             self.Table.RemoveItem(idx)
  4202             self.RefreshGrid()
  4222             self.RefreshGrid()
       
  4223             self.RefreshButtons()
  4203         event.Skip()
  4224         event.Skip()
  4204 
  4225 
  4205     def OnUpButton(self, event):
  4226     def OnUpButton(self, event):
  4206         self.MoveValue(self.VariablesGrid.GetGridCursorRow(), -1)
  4227         self.MoveValue(self.VariablesGrid.GetGridCursorRow(), -1)
  4207         event.Skip()
  4228         event.Skip()
  4219         item = VariableTableItem(self, iec_path, "")
  4240         item = VariableTableItem(self, iec_path, "")
  4220         result = self.AddDataConsumer(iec_path.upper(), item)
  4241         result = self.AddDataConsumer(iec_path.upper(), item)
  4221         if result is not None:
  4242         if result is not None:
  4222             self.Table.InsertItem(idx, item)
  4243             self.Table.InsertItem(idx, item)
  4223             self.RefreshGrid()
  4244             self.RefreshGrid()
       
  4245             self.RefreshButtons()
  4224 
  4246 
  4225     def MoveValue(self, idx, move):
  4247     def MoveValue(self, idx, move):
  4226         new_idx = max(0, min(idx + move, self.Table.GetNumberRows() - 1))
  4248         new_idx = max(0, min(idx + move, self.Table.GetNumberRows() - 1))
  4227         if new_idx != idx:
  4249         if new_idx != idx:
  4228             self.Table.MoveItem(idx, new_idx)
  4250             self.Table.MoveItem(idx, new_idx)
  4229             self.RefreshGrid()
  4251             self.RefreshGrid()
  4230             self.VariablesGrid.SetGridCursor(new_idx, self.VariablesGrid.GetGridCursorCol())
  4252             self.VariablesGrid.SetGridCursor(new_idx, self.VariablesGrid.GetGridCursorCol())
  4231     
  4253             self.RefreshButtons()
       
  4254             
  4232 #-------------------------------------------------------------------------------
  4255 #-------------------------------------------------------------------------------
  4233 #                               Viewer Printout
  4256 #                               Viewer Printout
  4234 #-------------------------------------------------------------------------------
  4257 #-------------------------------------------------------------------------------
  4235 
  4258 
  4236 UPPER_DIV = lambda x, y: (x / y) + {True : 0, False : 1}[(x % y) == 0]
  4259 UPPER_DIV = lambda x, y: (x / y) + {True : 0, False : 1}[(x % y) == 0]