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] |