summaryrefslogtreecommitdiffstats
path: root/examples/SQL/sqlsubclass5.py
diff options
context:
space:
mode:
authoraneejit1 <aneejit1@gmail.com>2022-07-28 15:46:19 +0000
committeraneejit1 <aneejit1@gmail.com>2022-07-30 17:54:15 +0000
commite602246539fd7435aaeb440fcb7f852c92c8426b (patch)
tree35e09f5d93c67158e6c1160d6d9b27ae8a0bf966 /examples/SQL/sqlsubclass5.py
parentb34531364d5c0d3be7056d87011afd8bd538a0e7 (diff)
downloadpytqt-e602246539fd7435aaeb440fcb7f852c92c8426b.tar.gz
pytqt-e602246539fd7435aaeb440fcb7f852c92c8426b.zip
Remove Qt V2 support and example files
Build files for pyuic2 have been removed along with the examples for version 2 of Qt and the build/configure scripts have been amended accordingly. The "examples3" directory has been renamed to just "examples". Signed-off-by: aneejit1 <aneejit1@gmail.com>
Diffstat (limited to 'examples/SQL/sqlsubclass5.py')
-rwxr-xr-xexamples/SQL/sqlsubclass5.py151
1 files changed, 151 insertions, 0 deletions
diff --git a/examples/SQL/sqlsubclass5.py b/examples/SQL/sqlsubclass5.py
new file mode 100755
index 0000000..0fdc78c
--- /dev/null
+++ b/examples/SQL/sqlsubclass5.py
@@ -0,0 +1,151 @@
+#!/usr/bin/env python
+
+#****************************************************************************
+#** $Id: sqlsubclass5.py,v 1.3 2002/07/06 13:35:41 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
+from python_tqt.qt import *
+from python_tqt.qtsql import *
+
+from dbconnect import createConnection
+
+TRUE = 1
+FALSE = 0
+
+class CustomTable(TQDataTable):
+ def __init__(self, cursor, autoPopulate = FALSE, parent = None, name = None):
+ TQDataTable.__init__(self, cursor, autoPopulate, parent, name)
+
+ def paintField(self, p, field, cr, b):
+ if not field:
+ return
+ fn = str(field.name())
+ if fn == "pricesid":
+ query = TQSqlQuery("SELECT name FROM prices WHERE id=%s" %
+ field.value().toString())
+ value = ""
+ if next(query):
+ value = query.value(0).toString()
+ p.drawText(2, 2, cr.width()-4, cr.height()-4,
+ self.fieldAlignment(field), value)
+ elif fn == "quantity":
+ p.drawText(2, 2, cr.width()-6, cr.height()-4,
+ TQt.AlignRight|TQt.AlignVCenter, field.value().toString())
+ elif fn in ("price", "cost"):
+ v = field.value().toDouble()
+ if v < 0:
+ p.setPen(TQColor("red"))
+ value = TQString("%.2f \u20ac" % v)
+ p.drawText(2, 2, cr.width()-6, cr.height()-4,
+ TQt.AlignRight|TQt.AlignVCenter, value)
+ elif fn == "paiddate":
+ if field.value().toDate().isNull():
+ v = TQString("not yet")
+ p.setPen(TQColor("red"))
+ else:
+ v = field.value().toDate().toString(TQt.LocalDate)
+ p.drawText(2, 2, cr.width()-4, cr.height()-4,
+ TQt.AlignHCenter|TQt.AlignVCenter, v)
+ else:
+ TQDataTable.paintField(self, p, field, cr, b)
+
+
+class InvoiceItemCursor(TQSqlCursor):
+ def __init__(self):
+ TQSqlCursor.__init__(self, "invoiceitem")
+
+ productPrice = TQSqlFieldInfo("price", TQVariant.Double)
+ self.append(productPrice)
+ self.setCalculated(productPrice.name(), TRUE)
+
+ productCost = TQSqlFieldInfo("cost", TQVariant.Double)
+ self.append(productCost)
+ self.setCalculated(productCost.name(), TRUE)
+
+ def calculateField(self, name):
+ fn = str(name)
+ if fn == "productname":
+ query = TQSqlQuery("SELECT name FROM prices WHERE id=%d;" %
+ (self.field("pricesid").value().toInt()))
+ if next(query):
+ return query.value(0)
+ elif fn == "price":
+ query = TQSqlQuery("SELECT price FROM prices WHERE id=%d;" %
+ (self.field("pricesid").value().toInt()))
+ if next(query):
+ return query.value(0)
+ elif fn == "cost":
+ query = TQSqlQuery("SELECT price FROM prices WHERE id=%d;" %
+ (self.field("pricesid").value().toInt()))
+ if next(query):
+ return TQVariant(query.value(0).toDouble() *
+ self.value("quantity").toDouble())
+ return TQVariant(TQString.null)
+
+ def primeInsert(self):
+ buffer = self.editBuffer()
+ buffer.setValue("id", TQVariant(0))
+ buffer.setValue("paiddate", TQVariant(TQDate.currentDate()))
+ buffer.setValue("quantity", TQVariant(1))
+ return buffer
+
+
+class ProductPicker(TQComboBox):
+ def __init__(self, parent = None, name = None):
+ TQComboBox.__init__(self, parent, name)
+ cur = TQSqlCursor("prices")
+ cur.select(cur.index("id"))
+ while next(cur):
+ self.insertItem(cur.value("name").toString(), cur.value("id").toInt())
+
+
+class CustomSqlEditorFactory(TQSqlEditorFactory):
+ def __init__(self):
+ TQSqlEditorFactory.__init__(self)
+
+ def createEditor(self, parent, field):
+ try:
+ if str(field.name()) == "pricesid":
+ return ProductPicker(parent)
+ except AttributeError:
+ pass
+ return TQSqlEditorFactory.createEditor(self, parent, field)
+
+class Table(CustomTable):
+ def __init__(self):
+ self.invoiceItemCursor = InvoiceItemCursor()
+ TQDataTable.__init__(self, self.invoiceItemCursor)
+ self.propMap = TQSqlPropertyMap()
+ self.editorFactory = CustomSqlEditorFactory()
+ self.propMap.insert("ProductPicker", "pricesid")
+ self.installPropertyMap(self.propMap)
+ self.installEditorFactory(self.editorFactory)
+
+ for cn, ch in (("pricesid", "Product"),
+ ("quantity", "Quantity"),
+ ("price", "Price" ),
+ ("cost", "Cost"),
+ ("paiddate", "Paid")):
+ self.addColumn(cn, ch)
+ self.setColumnWidth(0 , 150)
+ self.setColumnWidth(1, 70)
+ self.resize(600, 250)
+ self.refresh()
+
+
+if __name__=='__main__':
+ app = TQApplication(sys.argv)
+ if createConnection():
+ t = Table()
+ app.setMainWidget(t)
+ t.show()
+ app.exec_loop()
+
+