-
-import wx
-import wx.grid as gridlib
-
-#---------------------------------------------------------------------------
-
-class HugeTable(gridlib.PyGridTableBase):
-
- def __init__(self, log):
- gridlib.PyGridTableBase.__init__(self)
- self.log = log
-
- self.odd=gridlib.GridCellAttr()
- self.odd.SetBackgroundColour("sky blue")
- self.even=gridlib.GridCellAttr()
- self.even.SetBackgroundColour("sea green")
-
- def GetAttr(self, row, col, kind):
- attr = [self.even, self.odd][row % 2]
- attr.IncRef()
- return attr
-
-
-
- # This is all it takes to make a custom data table to plug into a
- # wxGrid. There are many more methods that can be overridden, but
- # the ones shown below are the required ones. This table simply
- # provides strings containing the row and column values.
-
- def GetNumberRows(self):
- return 10000
-
- def GetNumberCols(self):
- return 10000
-
- def IsEmptyCell(self, row, col):
- return False
-
- def GetValue(self, row, col):
- return str( (row, col) )
-
- def SetValue(self, row, col, value):
- self.log.write('SetValue(%d, %d, "%s") ignored.\n' % (row, col, value))
-
-
-#---------------------------------------------------------------------------
-
-
-
-class HugeTableGrid(gridlib.Grid):
- def __init__(self, parent, log):
- gridlib.Grid.__init__(self, parent, -1)
-
- table = HugeTable(log)
-
- # The second parameter means that the grid is to take ownership of the
- # table and will destroy it when done. Otherwise you would need to keep
- # a reference to it and call it's Destroy method later.
- self.SetTable(table, True)
-
- self.Bind(gridlib.EVT_GRID_CELL_RIGHT_CLICK, self.OnRightDown)
-
- def OnRightDown(self, event):
- print "hello"
- print self.GetSelectedRows()
-
-
-#---------------------------------------------------------------------------
-
-class TestFrame(wx.Frame):
- def __init__(self, parent, log):
- wx.Frame.__init__(self, parent, -1, "Huge (virtual) Table Demo", size=(640,480))
- grid = HugeTableGrid(self, log)
-
- grid.SetReadOnly(5,5, True)
-
-#---------------------------------------------------------------------------
-
-if __name__ == '__main__':
- import sys
- app = wx.PySimpleApp()
- frame = TestFrame(None, sys.stdout)
- frame.Show(True)
- app.MainLoop()
-
-
-#---------------------------------------------------------------------------