#!/usr/bin/python
# -*- coding: iso-8859-1 -*-
#
# Leaks with Python 2.6.6 PyQT 3.18.1
#

import sys
from qt import * 

class Main(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.list = QListView(self, 'list')
        self.list.addColumn("Col1")
        self.list.addColumn("Col2")
        self.resize(QSize(150,300).expandedTo(self.minimumSizeHint()))
        self.list.resize(QSize(150,300).expandedTo(self.minimumSizeHint()))

        self.refresh_count = 0

        QTimer.singleShot(1, self.refresh)
        
    def refresh(self):
        # This must delete all the QListViewItems, but they seems to leak
        self.list.clear()
        
        self.refresh_count += 1
        if not (self.refresh_count % 1000):
            for l in open('/proc/self/status','r').readlines():
                if l.startswith('VmRSS:'):
                    print "VmRss: %d Kb" % int(l.split()[1]),
                    break
            print "list.childcount():", self.list.childCount()

        # Create the leaky item
        QListViewItem(self.list, "1", "2")
            
        QTimer.singleShot(1, self.refresh)
    
print "Python Version:", sys.version
print "PyQt Version:", PYQT_VERSION_STR
app = QApplication(sys.argv)
w = Main()
app.setMainWidget(w)
w.show()
app.exec_loop()
