3 from __future__ import with_statement
4 from __future__ import division
9 sys.path.insert(0,"./src")
10 from util import qt_compat
13 class QThread44(qt_compat.QtCore.QThread):
15 This is to imitate QThread in Qt 4.4+ for when running on older version
16 See http://labs.trolltech.com/blogs/2010/06/17/youre-doing-it-wrong
17 (On Lucid I have Qt 4.7 and this is still an issue)
20 def __init__(self, parent = None):
21 qt_compat.QtCore.QThread.__init__(self, parent)
27 class Producer(qt_compat.QtCore.QObject):
29 data = qt_compat.Signal(int)
30 done = qt_compat.Signal()
33 qt_compat.QtCore.QObject.__init__(self)
37 print "Starting producer"
44 class Consumer(qt_compat.QtCore.QObject):
47 qt_compat.QtCore.QObject.__init__(self)
51 print "Starting consumer"
58 def print_data(self, i):
62 if __name__ == "__main__":
63 app = qt_compat.QtCore.QCoreApplication([])
65 producerThread = QThread44()
67 producer.moveToThread(producerThread)
68 producerThread.started.connect(producer.process)
70 consumerThread = QThread44()
72 consumer.moveToThread(consumerThread)
73 consumerThread.started.connect(consumer.process)
75 producer.data.connect(consumer.print_data)
76 producer.done.connect(consumer.print_done)
84 producer.done.connect(producer_done)
96 producerThread.finished.connect(thread_done)
97 consumerThread.finished.connect(thread_done)
99 producerThread.start()
100 consumerThread.start()
101 print "Status", app.exec_()