import threading from schainpy.controller import Project class ControllerThread(threading.Thread, Project): def __init__(self, plotter_queue=None): threading.Thread.__init__(self) Project.__init__(self, plotter_queue) self.setDaemon(True) 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.writeXml() self.createObjects() self.connectObjects() Project.run(self) def isRunning(self): return self.is_alive() def isFinished(self): return not self.is_alive() # from PyQt4 import QtCore # from PyQt4.QtCore import SIGNAL # # 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) #