#!/usr/bin/env python

#****************************************************************************
#** $Id: bigtable.py,v 1.1 2002/06/19 07:56:07 phil Exp $
#**
#** Copyright (C) 1992-1998 Troll Tech AS.  All rights reserved.
#**
#** This file is part of an example program for PyTQt.  This example
#** program may be used, distributed and modified without limitation.
#**
#*****************************************************************************/

import sys
import os
from python_tqt.qt import *
from python_tqt.qttable import *

TRUE  = 1
FALSE = 0

numRows = 1000000
numCols = 1000000

class MyTable(TQTable):
    def __init__(self, r, c):
        TQTable.__init__(self, r, c)
        self.items = {}
        self.widgets = {}
        self.setCaption("This is a big table with 1.000.000x1.000.000 cells...")
        self.setLeftMargin(self.fontMetrics().width("W999999W"))

    def resizeData(self, v):
        return

    def item(self, r, c):
        try:
            return self.items[self.indexOf(r, c)]
        except KeyError:
            return None

    def setItem(self, r, c, i):
        self.items[self.indexOf(r, c)] = i

    def clearCell(self, r, c):
        try:
            del self.items[self.indexOf(r, c)]
        except KeyError:
            pass

    def insertWidget(self, r, c, w):
        self.widgets[self.indexOf(r, c)] = w

    def cellWidget(self, r, c):
        try:
            return self.widgets[self.indexOf(r, c)]
        except KeyError:
            return None

    def clearCellWidget(self, r, c):
        try:
            del self.widgets[self.indexOf(r, c)]
        except KeyError:
            pass


if __name__ == '__main__':
    app = TQApplication(sys.argv)

    table = MyTable(numRows, numCols)
    app.setMainWidget(table)
    table.show()
    app.exec_loop()
