import sys

from qt import QApplication, QPixmap
from qttable import QTable, QTableItem

          
class MyCell( object ):

    def __init__( self, row ):
        self.val = row
        self.txt = 'item %d' % row
        
    def __str__( self ):
        return self.txt
        
    def __repr__( self ):
        return str( self.val )
        
    def __lt__( self, other ):
        return self.val < other.val
        
    def __gt__( self, other ):
        return self.val > other.val
        
    def __eq__( self, other ):
        return self.val == other.val
        
    def row( self ):
        return self.val


class MyTable( QTable ):

    def __init__( self, rows, cols ):
        QTable.__init__( self, rows, cols )
        self.cells = []
        for i in xrange( rows ):
            self.cells.append( MyCell( i ) )
            
        self.pixmap     = QPixmap( 'folder.png' )
        self.table_item = QTableItem( self, QTableItem.Never )
        self.table_item.setPixmap( self.pixmap )
        self.setSelectionMode( QTable.SingleRow )
        self.setSorting( True )
        self.setShowGrid( False )
        self.setLeftMargin( 0 )
        self.setFocusStyle( QTable.FollowStyle )
        self.setColumnMovingEnabled( True )
        self.verticalHeader().hide()
        
    def resizeData( self, len ):
        print 'resizeData'
        
    def item( self, row, col ):
        text = str( self.cells[row] ) + ', %d' % col
        self.table_item.setText( text )
        return self.table_item
        
    def setItem( self, row, col, item ):
        print 'setItem'
        
    def sortColumn( self, col, asc, whole_row ):
        self.cells.sort()
        if asc:
            self.cells.reverse()
        self.updateContents()
        
    def clearCell( self, row, col ):
        print 'clearCell'
        
    def takeItem( self, item ):
        print 'takeItem'
        
    def insertWidget( self, row, col, widget ):
        print 'insertWidget'
        
    def cellWidget( self, row, col ):
        return None
        
    def clearCellWidget( self, row, col ):
        print 'clearCellWidget %d, %d' % (row, col)
        
    def swapCells( self, r1, c1, r2, c2 ):
        print 'swapCells'
        
    def swapColumns( self, c1, c2, header = False ):
        print 'swapColumns'



if __name__ == '__main__':
    app = QApplication( sys.argv )
    win = MyTable( 10, 5 )
    app.setMainWidget( win )
    win.show()
    
    app.exec_loop()
    
