from wxPython.wx import *
from wxPython.grid import *
-import string
-
#---------------------------------------------------------------------------
class CustomDataTable(wxPyGridTableBase):
self.log = log
self.colLabels = ['ID', 'Description', 'Severity', 'Priority', 'Platform',
- 'Opened?', 'Fixed?', 'Tested?']
+ 'Opened?', 'Fixed?', 'Tested?', 'TestFloat']
self.dataTypes = [wxGRID_VALUE_NUMBER,
wxGRID_VALUE_STRING,
wxGRID_VALUE_CHOICE + ':all,MSW,GTK,other',
wxGRID_VALUE_BOOL,
wxGRID_VALUE_BOOL,
- wxGRID_VALUE_BOOL]
+ wxGRID_VALUE_BOOL,
+ wxGRID_VALUE_FLOAT + ':6,2',
+ ]
self.data = [
- [1010, "The foo doesn't bar", "major", 1, 'MSW', 1, 1, 1],
- [1011, "I've got a wicket in my wocket", "wish list", 2, 'other', 0, 0, 0],
- [1012, "Rectangle() returns a triangle", "critical", 5, 'all', 0, 0, 0]
+ [1010, "The foo doesn't bar", "major", 1, 'MSW', 1, 1, 1, 1.12],
+ [1011, "I've got a wicket in my wocket", "wish list", 2, 'other', 0, 0, 0, 1.50],
+ [1012, "Rectangle() returns a triangle", "critical", 5, 'all', 0, 0, 0, 1.56]
]
return len(self.data[0])
def IsEmptyCell(self, row, col):
- return not self.data[row][col]
+ try:
+ return not self.data[row][col]
+ except IndexError:
+ return true
# Get/Set values in the table. The Python version of these
# methods can handle any data-type, (as long as the Editor and
# editor and renderer. This allows you to enforce some type-safety
# in the grid.
def CanGetValueAs(self, row, col, typeName):
- colType = string.split(self.dataTypes[col], ':')[0]
+ colType = self.dataTypes[col].split(':')[0]
if typeName == colType:
return true
else:
- return false
+ return False
def CanSetValueAs(self, row, col, typeName):
return self.CanGetValueAs(row, col, typeName)
self.SetRowLabelSize(0)
self.SetMargins(0,0)
- self.AutoSizeColumns(false)
+ self.AutoSizeColumns(False)
EVT_GRID_CELL_LEFT_DCLICK(self, self.OnLeftDClick)
class TestFrame(wxFrame):
def __init__(self, parent, log):
wxFrame.__init__(self, parent, -1, "Custom Table, data driven Grid Demo", size=(640,480))
- grid = CustTableGrid(self, log)
-
+ p = wxPanel(self, -1, style=0)
+ grid = CustTableGrid(p, log)
+ b = wxButton(p, -1, "Another Control...")
+ b.SetDefault()
+ EVT_BUTTON(self, b.GetId(), self.OnButton)
+ EVT_SET_FOCUS(b, self.OnButtonFocus)
+ bs = wxBoxSizer(wxVERTICAL)
+ bs.Add(grid, 1, wxGROW|wxALL, 5)
+ bs.Add(b)
+ p.SetSizer(bs)
+
+ def OnButton(self, evt):
+ print "button selected"
+
+ def OnButtonFocus(self, evt):
+ print "button focus"
#---------------------------------------------------------------------------