#!/usr/bin/env python

import sys
from PyTQt.tqt import *
from PyTQt.tqtsql import *

from frmconnect import frmConnect
from dbpar import *

TRUE  = 1
FALSE = 0

def createConnection():
    driver = DB_DRIVER
    # all tqt examples use TQSqlDatabase::addDatabase, but
    # this never returns NULL in my experience
    drivers = list(map(str, TQSqlDatabase.drivers()))
    if driver in drivers:
        dlg = dbConnect(driver)
        #TODO: make connection parameters accessible
        return dlg.exec_loop()
    else:
        TQMessageBox.warning(None, "Database Error",
            "<%s> database driver not found!\n\n"
            "Please make sure, that this database adaptor\n"
            "is available in your TQt installation.\n" % 
            (driver), TQMessageBox.Abort | TQMessageBox.Escape)
        return FALSE

class dbConnect(frmConnect):
    def __init__(self, driver, parent = None):
        frmConnect.__init__(self, parent)
        self.hostnames = DB_HOSTNAMES
        self.hostname = DB_HOSTNAMES[0]
        self.databases = DB_DATABASES
        self.database = DB_DATABASES[0]
        self.username = DB_USERNAME
        self.password = DB_PASSWORD
        self.dbdriver = driver

        self.txtName.setText(self.username)
        self.txtPasswd.setText(self.password)
        list(map(self.cmbServer.insertItem, self.hostnames))
        list(map(self.cmbDatabase.insertItem, self.databases))
        self.connect(self.buttonHelp, TQ_SIGNAL("clicked()"),
                     self.buttonHelp_clicked)

    def accept(self):
        self.hostname = self.cmbServer.currentText()
        self.database = self.cmbDatabase.currentText()
        self.username = self.txtName.text()
        self.password = self.txtPasswd.text()
        db = TQSqlDatabase.addDatabase(self.dbdriver)
        if db:
            db.setHostName(self.hostname)
            db.setDatabaseName(self.database)
            db.setUserName(self.username)
            db.setPassword(self.password)
            if db.open():
                frmConnect.accept(self)
            else:
                TQMessageBox.warning(self, "Database Error",
                    "Cannot open %s database on %s!\n\n%s\n%s\n" %
                    (self.database, self.hostname,
                    db.lastError().driverText(),
                    db.lastError().databaseText()), " Ooops ")


    def buttonHelp_clicked(self):
        TQMessageBox.information(self, "About Connecting",
            "Here you specify userid, password, host and database\n"
            "for the PyTQt sql examples. If you encounter any problems,\n"
            "please read the README file in this folder before posting.\n\n"
            "Thanks,\nHans-Peter Jansen <hpj@urpla.net>\n")


if __name__ == "__main__":
    app = TQApplication(sys.argv)
    if createConnection():
        print("ok")
    else:
        print("cancel")
