import threading from PyQt4 import QtCore from PyQt4.QtCore import SIGNAL from schainpy.controller import Project class ControllerThread(threading.Thread, Project): def __init__(self, filename): threading.Thread.__init__(self) Project.__init__(self) self.setDaemon(True) self.filename = filename self.lock = threading.Lock() self.control = {'stop':False, 'pause':False} def __del__(self): self.control['stop'] = True def stop(self): self.lock.acquire() self.control['stop'] = True self.lock.release() def pause(self): self.lock.acquire() self.control['pause'] = not(self.control['pause']) paused = self.control['pause'] self.lock.release() return paused def isPaused(self): self.lock.acquire() paused = self.control['pause'] self.lock.release() return paused def isStopped(self): self.lock.acquire() stopped = self.control['stop'] self.lock.release() return stopped def run(self): self.control['stop'] = False self.control['pause'] = False self.readXml(self.filename) self.createObjects() self.connectObjects() Project.run(self) def isRunning(self): return self.is_alive() def isFinished(self): return not self.is_alive() class ControllerQThread(QtCore.QThread, Project): def __init__(self, filename): QtCore.QThread.__init__(self) Project.__init__(self) self.filename = filename self.lock = threading.Lock() self.control = {'stop':False, 'pause':False} def __del__(self): self.control['stop'] = True self.wait() def stop(self): self.lock.acquire() self.control['stop'] = True self.lock.release() def pause(self): self.lock.acquire() self.control['pause'] = not(self.control['pause']) paused = self.control['pause'] self.lock.release() return paused def isPaused(self): self.lock.acquire() paused = self.control['pause'] self.lock.release() return paused def isStopped(self): self.lock.acquire() stopped = self.control['stop'] self.lock.release() return stopped def run(self): self.control['stop'] = False self.control['pause'] = False self.readXml(self.filename) self.createObjects() self.connectObjects() self.emit( SIGNAL( "jobStarted( PyQt_PyObject )" ), 1) Project.run(self) self.emit( SIGNAL( "jobFinished( PyQt_PyObject )" ), 1)