3 from __future__ import with_statement
4 from __future__ import division
9 sys.path.insert(0,"./src")
10 from util import qt_compat
11 from util import qore_utils
14 class QThread44(qt_compat.QtCore.QThread):
16 This is to imitate QThread in Qt 4.4+ for when running on older version
17 See http://labs.trolltech.com/blogs/2010/06/17/youre-doing-it-wrong
18 (On Lucid I have Qt 4.7 and this is still an issue)
21 def __init__(self, parent = None):
22 qt_compat.QtCore.QThread.__init__(self, parent)
28 class Producer(qt_compat.QtCore.QObject):
30 data = qt_compat.Signal(int)
31 done = qt_compat.Signal()
34 qt_compat.QtCore.QObject.__init__(self)
38 print "Starting producer"
45 class Consumer(qt_compat.QtCore.QObject):
48 qt_compat.QtCore.QObject.__init__(self)
52 print "Starting consumer"
59 def print_data(self, i):
63 def run_producer_consumer():
64 app = qt_compat.QtCore.QCoreApplication([])
66 producerThread = qore_utils.QThread44()
68 producer.moveToThread(producerThread)
69 producerThread.started.connect(producer.process)
71 consumerThread = qore_utils.QThread44()
73 consumer.moveToThread(consumerThread)
74 consumerThread.started.connect(consumer.process)
76 producer.data.connect(consumer.print_data)
77 producer.done.connect(consumer.print_done)
85 producer.done.connect(producer_done)
97 producerThread.finished.connect(thread_done)
98 consumerThread.finished.connect(thread_done)
100 producerThread.start()
101 consumerThread.start()
102 print "Status %s" % app.exec_()
106 app = qt_compat.QtCore.QCoreApplication([])
108 bright = qore_utils.FutureThread()
109 def on_failure(*args):
110 print "Failure", args
112 def on_success(*args):
113 print "Success", args
118 timer = qt_compat.QtCore.QTimer()
124 bright.add_task(task, (timeouts[0], ), {}, on_success, on_failure)
129 timer.timeout.connect(on_timeout)
133 print "Status %s" % app.exec_()
136 if __name__ == "__main__":
137 #run_producer_consumer()