from PyQt4 import QtCore, QtSql
from PyQt4.QtCore import Qt


class TilesModel(QtSql.QSqlRelationalTableModel):
    status = property(lambda self: self.__status)
    
    def __init__ (self, parent, db):
        QtSql.QSqlTableModel.__init__(self, parent, db)
        self.setTable('tiles');
        self.setEditStrategy(QtSql.QSqlTableModel.OnManualSubmit)
        self.__status = self.select()
        if not self.__status:
            print 'failed to select data'
            error = self.lastError()
            print error.databaseText()
            print error.driverText()
            
        self.setHeaderData(0, Qt.Horizontal, self.tr('Id'))
        self.setHeaderData(1, Qt.Horizontal, self.tr('Name'))
        self.setHeaderData(2, Qt.Horizontal, self.tr('Price'))
        self.setHeaderData(3, Qt.Horizontal, self.tr('Width'))
        self.setHeaderData(4, Qt.Horizontal, self.tr('Height'))
        self.setHeaderData(5, Qt.Horizontal, self.tr('Unit'))
        
        self.setRelation(5, QtSql.QSqlRelation('units', 'value', 'display'))
        return
        
    def removeRow(self,  row):
        self.beforeDelete.emit(row)
        status = self.removeRows(row, 1)
        return status
        
    def emitChanges(self,  index):
        self.dataChanged.emit(index, index)
        print index
        return
  
  
if __name__ == '__main__':
    import os
    import sys
    dbpath = os.path.join('/home/pembo13/Development/tiles', 'tilegallery.sqlite')
    db = QtSql.QSqlDatabase.addDatabase('QSQLITE')
    db.setDatabaseName(dbpath)
    if not db.open():
        print 'failed to open database'
        sys.exit(1)
    model = TilesModel(parent=None,  db=db)
    print 'worked'
    
