--- a/controls/CustomTable.py Mon Aug 21 20:17:19 2017 +0000
+++ b/controls/CustomTable.py Mon Aug 21 23:22:58 2017 +0300
@@ -30,8 +30,9 @@
else:
ROW_HEIGHT = 28
+
class CustomTable(wx.grid.PyGridTableBase):
-
+
"""
A custom wx.grid.Grid Table using user supplied data
"""
@@ -47,10 +48,10 @@
# see if the table has changed size
self._rows = self.GetNumberRows()
self._cols = self.GetNumberCols()
-
+
def GetNumberCols(self):
return len(self.colnames)
-
+
def GetNumberRows(self):
return len(self.data)
@@ -66,11 +67,11 @@
def GetValue(self, row, col):
if row < self.GetNumberRows():
return self.data[row].get(self.GetColLabelValue(col, False), "")
-
+
def SetValue(self, row, col, value):
if col < len(self.colnames):
self.data[row][self.GetColLabelValue(col, False)] = value
-
+
def GetValueByName(self, row, colname):
if row < self.GetNumberRows():
return self.data[row].get(colname)
@@ -91,10 +92,10 @@
(self._cols, self.GetNumberCols(), wx.grid.GRIDTABLE_NOTIFY_COLS_DELETED, wx.grid.GRIDTABLE_NOTIFY_COLS_APPENDED),
]:
if new < current:
- msg = wx.grid.GridTableMessage(self,delmsg,new,current-new)
+ msg = wx.grid.GridTableMessage(self, delmsg, new, current-new)
grid.ProcessTableMessage(msg)
elif new > current:
- msg = wx.grid.GridTableMessage(self,addmsg,new-current)
+ msg = wx.grid.GridTableMessage(self, addmsg, new-current)
grid.ProcessTableMessage(msg)
self.UpdateValues(grid)
grid.EndBatch()
@@ -125,33 +126,33 @@
row_highlights = self.Highlights.get(row, {})
for col in range(self.GetNumberCols()):
colname = self.GetColLabelValue(col, False)
-
+
grid.SetReadOnly(row, col, True)
grid.SetCellEditor(row, col, None)
grid.SetCellRenderer(row, col, None)
-
+
highlight_colours = row_highlights.get(colname.lower(), [(wx.WHITE, wx.BLACK)])[-1]
grid.SetCellBackgroundColour(row, col, highlight_colours[0])
grid.SetCellTextColour(row, col, highlight_colours[1])
self.ResizeRow(grid, row)
-
+
def ResizeRow(self, grid, row):
if grid.GetRowSize(row) < ROW_HEIGHT:
grid.SetRowMinimalHeight(row, ROW_HEIGHT)
grid.AutoSizeRow(row, False)
-
+
def SetData(self, data):
self.data = data
-
+
def GetData(self):
return self.data
-
+
def GetCurrentIndex(self):
return self.CurrentIndex
-
+
def SetCurrentIndex(self, index):
self.CurrentIndex = index
-
+
def AppendRow(self, row_content):
self.data.append(row_content)