controller_api.py
140 lines
| 3.1 KiB
| text/x-python
|
PythonLexer
/ schainpy / controller_api.py
|
r636 | 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 | |||
|
r672 | ||
self.lock = threading.Lock() | |||
|
r636 | self.control = {'stop':False, 'pause':False} | |
def __del__(self): | |||
self.control['stop'] = True | |||
def stop(self): | |||
|
r672 | ||
self.lock.acquire() | |||
|
r636 | self.control['stop'] = True | |
|
r672 | self.lock.release() | |
|
r636 | def pause(self): | |
|
r672 | ||
self.lock.acquire() | |||
|
r636 | self.control['pause'] = not(self.control['pause']) | |
|
r672 | paused = self.control['pause'] | |
self.lock.release() | |||
|
r668 | ||
|
r672 | return paused | |
|
r668 | ||
|
r672 | def isPaused(self): | |
|
r636 | ||
|
r672 | self.lock.acquire() | |
paused = self.control['pause'] | |||
self.lock.release() | |||
|
r636 | ||
|
r672 | return paused | |
def isStopped(self): | |||
|
r636 | ||
|
r672 | self.lock.acquire() | |
stopped = self.control['stop'] | |||
self.lock.release() | |||
return stopped | |||
|
r636 | 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 | |||
|
r672 | ||
self.lock = threading.Lock() | |||
|
r636 | self.control = {'stop':False, 'pause':False} | |
def __del__(self): | |||
self.control['stop'] = True | |||
self.wait() | |||
def stop(self): | |||
|
r672 | ||
self.lock.acquire() | |||
|
r636 | self.control['stop'] = True | |
|
r672 | self.lock.release() | |
|
r636 | def pause(self): | |
|
r672 | ||
self.lock.acquire() | |||
|
r636 | self.control['pause'] = not(self.control['pause']) | |
|
r672 | 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 | |||
|
r636 | def run(self): | |
|
r672 | ||
|
r636 | 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) | |||
|
r672 | self.emit( SIGNAL( "jobFinished( PyQt_PyObject )" ), 1) | |