summaryrefslogtreecommitdiffstats
path: root/python/pyqt/examples3/SQL/sqlcustom1.py
blob: 46ca5801909a5ae191062717af354d38935e50bf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!/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
from qt import *
from qtsql import *

from dbconnect import createConnection

TRUE  = 1
FALSE = 0

class CustomEdit(QLineEdit):
    def __init__(self, parent = None, name = None):
        QLineEdit.__init__(self, parent, name)
        QObject.connect(self, SIGNAL("textChanged(const QString &)"),
                        self.changed)

    def changed(self, line):
        self.setUpperLine(line)

    def setUpperLine(self, line):
        self.upperLineText = line.upper()
        self.setText(self.upperLineText)


class FormDialog(QDialog):
    def __init__(self):
        QDialog.__init__(self)
        forenameLabel = QLabel("Forename:", self)
        forenameEdit = CustomEdit(self)
        surnameLabel = QLabel("Surname:", self)
        surnameEdit = CustomEdit(self)
        salaryLabel = QLabel("Salary:", self)
        salaryEdit = QLineEdit(self)
        salaryEdit.setAlignment(Qt.AlignRight)
        saveButton = QPushButton("&Save", self)
        self.connect(saveButton, SIGNAL("clicked()"), self.save)

        grid = QGridLayout(self)
        grid.addWidget(forenameLabel, 0, 0)
        grid.addWidget(forenameEdit, 0, 1)
        grid.addWidget(surnameLabel, 1, 0)
        grid.addWidget(surnameEdit, 1, 1)
        grid.addWidget(salaryLabel, 2, 0)
        grid.addWidget(salaryEdit, 2, 1)
        grid.addWidget(saveButton, 3, 0)
        grid.activate()

        self.staffCursor = QSqlCursor("staff")
        self.staffCursor.setTrimmed("forename", TRUE)
        self.staffCursor.setTrimmed("surname", TRUE)
        self.idIndex = self.staffCursor.index("id")
        self.staffCursor.select(self.idIndex)
        self.staffCursor.first()

        self.propMap = QSqlPropertyMap()
        self.propMap.insert(forenameEdit.className(), "upperLine")

        self.sqlForm = QSqlForm()
        self.sqlForm.setRecord(self.staffCursor.primeUpdate())
        self.sqlForm.installPropertyMap(self.propMap)
        self.sqlForm.insert(forenameEdit, "forename")
        self.sqlForm.insert(surnameEdit, "surname")
        self.sqlForm.insert(salaryEdit, "salary")
        self.sqlForm.readFields()

    def save(self):
        self.sqlForm.writeFields()
        self.staffCursor.update()
        self.staffCursor.select(self.idIndex)
        self.staffCursor.first()


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

    if createConnection():
        formDialog = FormDialog()
        formDialog.show()

        app.setMainWidget(formDialog)
        app.exec_loop()