--- a/controls/CustomGrid.py Fri Dec 09 10:22:26 2011 +0100
+++ b/controls/CustomGrid.py Fri Dec 09 11:26:10 2011 +0100
@@ -37,6 +37,8 @@
def __init__(self, *args, **kwargs):
wx.grid.Grid.__init__(self, *args, **kwargs)
+ self.Editable = True
+
if wx.VERSION >= (2, 6, 0):
self.Bind(wx.grid.EVT_GRID_SELECT_CELL, self.OnSelectCell)
else:
@@ -46,6 +48,10 @@
def SetDefaultValue(self, default_value):
self.DefaultValue = default_value
+ def SetEditable(self, editable=True):
+ self.Editable = editable
+ self.RefreshButtons()
+
def SetButtons(self, buttons):
for name in ["Add", "Delete", "Up", "Down"]:
button = buttons.get(name, None)
@@ -56,12 +62,14 @@
def RefreshButtons(self):
rows = self.Table.GetNumberRows()
row = self.GetGridCursorRow()
+ if self.AddButton is not None:
+ self.AddButton.Enable(self.Editable)
if self.DeleteButton is not None:
- self.DeleteButton.Enable(rows > 0)
+ self.DeleteButton.Enable(self.Editable and rows > 0)
if self.UpButton is not None:
- self.UpButton.Enable(row > 0)
+ self.UpButton.Enable(self.Editable and row > 0)
if self.DownButton is not None:
- self.DownButton.Enable(0 <= row < rows - 1)
+ self.DownButton.Enable(self.Editable and 0 <= row < rows - 1)
def CloseEditControl(self):
self.SetGridCursor(self.GetGridCursorRow(), self.GetGridCursorCol())
@@ -145,16 +153,16 @@
elif row < 0 or col == self.Table.GetNumberCols() - 1:
self.Navigate(wx.NavigationKeyEvent.IsForward)
key_handled = True
- elif keycode in (wx.WXK_ADD, wx.WXK_NUMPAD_ADD):
+ elif keycode in (wx.WXK_ADD, wx.WXK_NUMPAD_ADD) and self.Editable:
self.AddRow()
key_handled = True
- elif keycode in (wx.WXK_DELETE, wx.WXK_NUMPAD_DELETE):
+ elif keycode in (wx.WXK_DELETE, wx.WXK_NUMPAD_DELETE) and self.Editable:
self.DeleteRow()
key_handled = True
- elif keycode == wx.WXK_UP and event.ShiftDown():
+ elif keycode == wx.WXK_UP and event.ShiftDown() and self.Editable:
self.MoveRow(self.GetGridCursorRow(), -1)
key_handled = True
- elif keycode == wx.WXK_DOWN and event.ShiftDown():
+ elif keycode == wx.WXK_DOWN and event.ShiftDown() and self.Editable:
self.MoveRow(self.GetGridCursorRow(), 1)
key_handled = True
if not key_handled: