#!/usr/bin/env python

#****************************************************************************
#** $Id: sqlcustom1.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 PyTQt.tqt import *
from PyTQt.tqtsql import *

from dbconnect import createConnection

TRUE  = 1
FALSE = 0

class CustomEdit(TQLineEdit):
    def __init__(self, parent = None, name = None):
        TQLineEdit.__init__(self, parent, name)
        TQObject.connect(self, TQ_SIGNAL("textChanged(const TQString &)"),
                        self.changed)

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

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


class FormDialog(TQDialog):
    def __init__(self):
        TQDialog.__init__(self)
        forenameLabel = TQLabel("Forename:", self)
        forenameEdit = CustomEdit(self)
        surnameLabel = TQLabel("Surname:", self)
        surnameEdit = CustomEdit(self)
        salaryLabel = TQLabel("Salary:", self)
        salaryEdit = TQLineEdit(self)
        salaryEdit.setAlignment(TQt.AlignRight)
        saveButton = TQPushButton("&Save", self)
        self.connect(saveButton, TQ_SIGNAL("clicked()"), self.save)

        grid = TQGridLayout(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 = TQSqlCursor("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 = TQSqlPropertyMap()
        self.propMap.insert(forenameEdit.className(), "upperLine")

        self.sqlForm = TQSqlForm()
        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 = TQApplication( sys.argv )

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

        app.setMainWidget(formDialog)
        app.exec_loop()


