from wxPython.wx import *
from wxPython.grid import *
+from wxPython.lib.mixins.grid import wxGridAutoEditMixin
#---------------------------------------------------------------------------
-class SimpleGrid(wxGrid):
+class SimpleGrid(wxGrid): ##, wxGridAutoEditMixin):
def __init__(self, parent, log):
wxGrid.__init__(self, parent, -1)
+ ##wxGridAutoEditMixin.__init__(self)
self.log = log
self.moveTo = None
EVT_IDLE(self, self.OnIdle)
self.CreateGrid(25, 25)
+ ##self.EnableEditing(false)
# simple cell formatting
self.SetColSize(3, 200)
self.SetCellBackgroundColour(2, 2, wxCYAN)
self.SetReadOnly(3, 3, true)
+ self.SetCellEditor(5, 0, wxGridCellNumberEditor())
+ self.SetCellValue(5, 0, "123")
+ self.SetCellEditor(6, 0, wxGridCellFloatEditor())
+ self.SetCellValue(6, 0, "123.34")
+
+ self.SetCellValue(6, 3, "You can veto editing this cell")
+
# attribute objects let you keep a set of formatting values
# in one spot, and reuse them if needed
EVT_GRID_EDITOR_SHOWN(self, self.OnEditorShown)
EVT_GRID_EDITOR_HIDDEN(self, self.OnEditorHidden)
+ EVT_GRID_EDITOR_CREATED(self, self.OnEditorCreated)
+
def OnCellLeftClick(self, evt):
if value == 'no good':
self.moveTo = evt.GetRow(), evt.GetCol()
+
def OnIdle(self, evt):
if self.moveTo != None:
self.SetGridCursor(self.moveTo[0], self.moveTo[1])
self.moveTo = None
-
+ evt.Skip()
def OnSelectCell(self, evt):
value = self.GetCellValue(row, col)
if value == 'no good 2':
return # cancels the cell selection
- else:
- evt.Skip()
-
+ evt.Skip()
def OnEditorShown(self, evt):
+ if evt.GetRow() == 6 and evt.GetCol() == 3 and \
+ wxMessageBox("Are you sure you wish to edit this cell?",
+ "Checking", wxYES_NO) == wxNO:
+ evt.Veto()
+ return
+
self.log.write("OnEditorShown: (%d,%d) %s\n" %
(evt.GetRow(), evt.GetCol(), evt.GetPosition()))
evt.Skip()
+
def OnEditorHidden(self, evt):
+ if evt.GetRow() == 6 and evt.GetCol() == 3 and \
+ wxMessageBox("Are you sure you wish to finish editing this cell?",
+ "Checking", wxYES_NO) == wxNO:
+ evt.Veto()
+ return
+
self.log.write("OnEditorHidden: (%d,%d) %s\n" %
(evt.GetRow(), evt.GetCol(), evt.GetPosition()))
evt.Skip()
+ def OnEditorCreated(self, evt):
+ self.log.write("OnEditorCreated: (%d, %d) %s\n" %
+ (evt.GetRow(), evt.GetCol(), evt.GetControl()))
+
+
+
#---------------------------------------------------------------------------
class TestFrame(wxFrame):