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