summaryrefslogtreecommitdiffstats
path: root/python/pyqt/examples3/tablestatistics.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/pyqt/examples3/tablestatistics.py')
-rwxr-xr-xpython/pyqt/examples3/tablestatistics.py168
1 files changed, 0 insertions, 168 deletions
diff --git a/python/pyqt/examples3/tablestatistics.py b/python/pyqt/examples3/tablestatistics.py
deleted file mode 100755
index 59c71117..00000000
--- a/python/pyqt/examples3/tablestatistics.py
+++ /dev/null
@@ -1,168 +0,0 @@
-#!/usr/bin/env python
-
-#****************************************************************************
-#** $Id$
-#**
-#** Copyright (C) 1992-1998 Troll Tech AS. All rights reserved.
-#**
-#** This file is part of an example program for PyQt. This example
-#** program may be used, distributed and modified without limitation.
-#**
-#*****************************************************************************/
-
-import sys
-import os
-from qt import *
-from qttable import *
-
-TRUE = 1
-FALSE = 0
-
-# column constants
-TB_FILE = 0
-TB_SIZE = 1
-TB_FLAG = 2
-TB_COLS = 3
-
-dirs = (
- "kernel",
- "tools",
- "widgets",
- "dialogs",
- "xml",
- "table",
- "network",
- "opengl",
- "canvas",
-)
-
-class Table(QTable):
- def __init__(self):
- QTable.__init__(self, 0, TB_COLS)
- self.setSorting(TRUE)
- self.horizontalHeader().setLabel(TB_FILE, self.tr("File"))
- self.horizontalHeader().setLabel(TB_SIZE, self.tr("Size (bytes)"))
- self.horizontalHeader().setLabel(TB_FLAG, self.tr("Use in Sum"))
- self.initTable()
- self.adjustColumn(TB_FILE)
-
- # if the user edited something we might need to recalculate the sum
- self.connect(self, SIGNAL("valueChanged(int, int)"), self.recalcSum)
-
- def initTable(self):
- # read all the Qt source and header files into a list
- all = []
- qtdir = os.getenv("QTDIR")
- for i in dirs:
- dir = QDir(os.path.join(qtdir, "src", i))
- lst = QStringList(dir.entryList("*.cpp; *.h"))
- for f in lst:
- if f.contains("moc"):
- continue
- all.append(os.path.join(i, str(f)))
-
- # set the number of rows we'll need for the table
- self.setNumRows(len(all) + 1)
-
- i = 0
- sum = 0L
- # insert the data into the table
- for it in all:
- self.setText(i, TB_FILE, it)
- f = QFile(os.path.join(qtdir, "src", str(it)))
- self.setText(i, TB_SIZE, str(f.size()))
- ci = ComboItem(self, QTableItem.WhenCurrent)
- self.setItem(i, TB_FLAG, ci)
- i = i + 1
- sum += f.size()
- self.displaySum(sum)
-
- def recalcSum(self, dummy, col):
- # only recalc if a value in the second or third column changed
- if col < TB_SIZE or col > TB_FLAG:
- return
-
- sum = 0L
- for i in range(self.numRows()-1):
- if str(self.text(i, TB_FLAG)) == "No":
- continue
- sum += long(str(self.text(i, TB_SIZE)))
- self.displaySum(sum)
-
- def displaySum(self, sum):
- # insert calculated data
- i1 = TableItem(self, QTableItem.Never, self.tr("Sum"))
- self.setItem(self.numRows()-1, TB_FILE, i1)
- i2 = TableItem(self, QTableItem.Never, str(sum))
- self.setItem(self.numRows()-1, TB_SIZE, i2)
-
- def sortColumn(self, col, ascending, wholeRows):
- # sum row should not be sorted, so get rid of it for now
- self.clearCell(self.numRows()-1, TB_FILE)
- self.clearCell(self.numRows()-1, TB_SIZE)
- # do sort
- QTable.sortColumn(self, col, ascending, TRUE)
- # re-insert sum row
- self.recalcSum(0, TB_SIZE)
-
-
-class TableItem(QTableItem):
- def __init__(self, *args):
- apply(QTableItem.__init__, (self,) + args)
-
- def paint(self, p, cg, cr, selected):
- g = QColorGroup(cg)
- # last row is the sum row - we want to make it more visible by
- # using a red background
- if self.row() == self.table().numRows()-1:
- g.setColor(QColorGroup.Base, QColor("red"))
- QTableItem.paint(self, p, g, cr, selected)
-
-
-class ComboItem(QTableItem):
- def __init__(self, t, et):
- QTableItem.__init__(self, t, et, "Yes")
- self.cb = None
- # we do not want this item to be replaced
- self.setReplaceable(FALSE)
-
- def createEditor(self):
- # create an editor - a combobox in our case
- self.cb = QComboBox(self.table().viewport())
- QObject.connect(self.cb, SIGNAL("activated(int)"),
- self.table(), SLOT("doValueChanged()"))
- self.cb.insertItem("Yes")
- self.cb.insertItem("No")
- # and initialize it
- if str(self.text()) == "No":
- self.cb.setCurrentItem(1)
- else:
- self.cb.setCurrentItem(0)
- return self.cb
-
- def setContentFromEditor(self, w):
- # the user changed the value of the combobox, so synchronize the
- # value of the item (its text), with the value of the combobox
- if w.inherits("QComboBox"):
- self.setText(w.currentText())
- else:
- QTableItem.setContentFromEditor(self, w)
-
- def setText(self, s):
- # initialize the combobox from the text
- if self.cb:
- if str(s) == "No":
- self.cb.setCurrentItem(1)
- else:
- self.cb.setCurrentItem(0)
- QTableItem.setText(self, s)
-
-
-if __name__ == '__main__':
- app = QApplication(sys.argv)
-
- t = Table()
- t.setCaption("Statistics")
- t.show()
- app.setMainWidget(t)
- app.exec_loop()