+import wx
+import wx.grid
+
+#----------------------------------------------------------------------------
+
+
+class GridAutoEditMixin:
+ """A mix-in class that automatically enables the grid edit control when
+ a cell is selected.
+
+ If your class hooks EVT_GRID_SELECT_CELL be sure to call event.Skip so
+ this handler will be called too.
+ """
+
+ def __init__(self):
+ self.__enableEdit = 0
+ self.Bind(wx.EVT_IDLE, self.__OnIdle)
+ self.Bind(wx.grid.EVT_GRID_SELECT_CELL, self.__OnSelectCell)
+
+
+ def __OnIdle(self, evt):
+ if self.__enableEdit:
+ if self.CanEnableCellControl():
+ self.EnableCellEditControl()
+ self.__enableEdit = 0
+ evt.Skip()
+
+
+ def __OnSelectCell(self, evt):
+ self.__enableEdit = 1
+ evt.Skip()