diff -r 3f2024f30553 -r 9dbb79722fbc PLCOpenEditor.py --- a/PLCOpenEditor.py Wed Oct 12 23:47:48 2011 +0200 +++ b/PLCOpenEditor.py Fri Oct 14 19:26:29 2011 +0200 @@ -115,6 +115,7 @@ from PLCControler import * from VariablePanel import VariablePanel from SearchResultPanel import SearchResultPanel +from controls import CustomGrid # Define PLCOpenEditor controls id [ID_PLCOPENEDITOR, ID_PLCOPENEDITORLEFTNOTEBOOK, @@ -181,10 +182,10 @@ (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONNECTION, "OnConnectionTool", "add_connection.png", _("Create a new connection"))], - "LD" : [((True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, + "LD" : [(True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARMOTION, "OnMotionTool", "move.png", _("Move the view")), - True, FREEDRAWING_MODE, + (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCOMMENT, "OnCommentTool", "add_comment.png", _("Create a new comment")), (True, FREEDRAWING_MODE, @@ -4192,7 +4193,7 @@ name='DebugVariablePanel', parent=prnt, pos=wx.Point(0, 0), size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL) - self.VariablesGrid = wx.grid.Grid(id=ID_DEBUGVARIABLEPANELVARIABLESGRID, + self.VariablesGrid = CustomGrid(id=ID_DEBUGVARIABLEPANELVARIABLESGRID, name='VariablesGrid', parent=self, pos=wx.Point(0, 0), size=wx.Size(0, 150), style=wx.VSCROLL) self.VariablesGrid.SetFont(wx.Font(12, 77, wx.NORMAL, wx.NORMAL, False, @@ -4203,26 +4204,21 @@ self.VariablesGrid.SetSelectionForeground(wx.BLACK) self.VariablesGrid.SetDropTarget(DebugVariableDropTarget(self)) if wx.VERSION >= (2, 6, 0): - self.VariablesGrid.Bind(wx.grid.EVT_GRID_SELECT_CELL, self.OnVariablesGridCellSelect) self.VariablesGrid.Bind(wx.grid.EVT_GRID_CELL_RIGHT_CLICK, self.OnVariablesGridCellRightClick) else: - wx.grid.EVT_GRID_SELECT_CELL(self.VariablesGrid, self.OnVariablesGridCellSelect) wx.grid.EVT_GRID_CELL_RIGHT_CLICK(self.VariablesGrid, self.OnVariablesGridCellRightClick) self.UpButton = wx.Button(id=ID_DEBUGVARIABLEPANELUPBUTTON, label='^', name='UpButton', parent=self, pos=wx.Point(0, 0), size=wx.Size(32, 32), style=0) - self.Bind(wx.EVT_BUTTON, self.OnUpButton, id=ID_DEBUGVARIABLEPANELUPBUTTON) self.DownButton = wx.Button(id=ID_DEBUGVARIABLEPANELDOWNBUTTON, label='v', name='DownButton', parent=self, pos=wx.Point(0, 0), size=wx.Size(32, 32), style=0) - self.Bind(wx.EVT_BUTTON, self.OnDownButton, id=ID_DEBUGVARIABLEPANELDOWNBUTTON) self.DeleteButton = wx.Button(id=ID_DEBUGVARIABLEPANELDELETEBUTTON, label=_('Delete'), name='DeleteButton', parent=self, pos=wx.Point(0, 0), size=wx.DefaultSize, style=0) - self.Bind(wx.EVT_BUTTON, self.OnDeleteButton, id=ID_DEBUGVARIABLEPANELDELETEBUTTON) self._init_sizers() @@ -4233,6 +4229,29 @@ self.Table = DebugVariableTable(self, [], GetDebugVariablesTableColnames()) self.VariablesGrid.SetTable(self.Table) + self.VariablesGrid.SetButtons({"Delete": self.DeleteButton, + "Up": self.UpButton, + "Down": self.DownButton}) + + def _AddVariable(new_row): + return self.VariablesGrid.GetGridCursorRow() + setattr(self.VariablesGrid, "_AddRow", _AddVariable) + + def _DeleteVariable(row): + item = self.Table.GetItem(row) + self.RemoveDataConsumer(item) + self.Table.RemoveItem(row) + self.RefreshGrid() + setattr(self.VariablesGrid, "_DeleteRow", _DeleteVariable) + + def _MoveVariable(row, move): + new_row = max(0, min(row + move, self.Table.GetNumberRows() - 1)) + if new_row != row: + self.Table.MoveItem(row, new_row) + self.RefreshGrid() + return new_row + setattr(self.VariablesGrid, "_MoveRow", _MoveVariable) + self.VariablesGrid.SetRowLabelSize(0) for col in range(self.Table.GetNumberCols()): @@ -4242,7 +4261,7 @@ self.VariablesGrid.SetColSize(col, 100) self.Table.ResetView(self.VariablesGrid) - self.RefreshButtons() + self.VariablesGrid.RefreshButtons() def RefreshNewData(self): if self.HasNewData: @@ -4253,6 +4272,7 @@ def RefreshGrid(self): self.Freeze() self.Table.ResetView(self.VariablesGrid) + self.VariablesGrid.RefreshButtons() self.Thaw() def ResetGrid(self): @@ -4260,6 +4280,7 @@ self.Table.Empty() self.Freeze() self.Table.ResetView(self.VariablesGrid) + self.VariablesGrid.RefreshButtons() self.Thaw() def GetForceVariableMenuFunction(self, iec_path, item): @@ -4276,10 +4297,6 @@ self.ReleaseDataValue(iec_path) return ReleaseVariableFunction - def OnVariablesGridCellSelect(self, event): - wx.CallAfter(self.RefreshButtons) - event.Skip() - def OnVariablesGridCellRightClick(self, event): row, col = event.GetRow(), event.GetCol() if self.Table.GetColLabelValue(col, False) == "Value": @@ -4299,34 +4316,6 @@ self.PopupMenu(menu) event.Skip() - def RefreshButtons(self): - if getattr(self, "Table", None): - table_length = len(self.Table.data) - row = 0 - if table_length > 0: - row = self.VariablesGrid.GetGridCursorRow() - self.DeleteButton.Enable(table_length > 0) - self.UpButton.Enable(table_length > 0 and row > 0) - self.DownButton.Enable(table_length > 0 and row < table_length - 1) - - def OnDeleteButton(self, event): - idx = self.VariablesGrid.GetGridCursorRow() - if idx >= 0: - item = self.Table.GetItem(idx) - self.RemoveDataConsumer(item) - self.Table.RemoveItem(idx) - self.RefreshGrid() - self.RefreshButtons() - event.Skip() - - def OnUpButton(self, event): - self.MoveValue(self.VariablesGrid.GetGridCursorRow(), -1) - event.Skip() - - def OnDownButton(self, event): - self.MoveValue(self.VariablesGrid.GetGridCursorRow(), 1) - event.Skip() - def InsertValue(self, iec_path, idx = None): if idx is None: idx = self.Table.GetNumberRows() @@ -4338,16 +4327,8 @@ if result is not None: self.Table.InsertItem(idx, item) self.RefreshGrid() - self.RefreshButtons() - - def MoveValue(self, idx, move): - new_idx = max(0, min(idx + move, self.Table.GetNumberRows() - 1)) - if new_idx != idx: - self.Table.MoveItem(idx, new_idx) - self.RefreshGrid() - self.VariablesGrid.SetGridCursor(new_idx, self.VariablesGrid.GetGridCursorCol()) - self.RefreshButtons() - + + #------------------------------------------------------------------------------- # Viewer Printout #-------------------------------------------------------------------------------