controller_api.py
178 lines
| 4.3 KiB
| text/x-python
|
PythonLexer
/ schainpy / controller_api.py
|
r965 | import threading | |
from Queue import Queue | |||
from schainpy.controller import Project | |||
from schainpy.model.graphics.jroplotter import PlotManager | |||
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() | |||
def setPlotters(self): | |||
plotterList = PlotManager.plotterList | |||
for thisPUConfObj in self.procUnitConfObjDict.values(): | |||
inputId = thisPUConfObj.getInputId() | |||
if int(inputId) == 0: | |||
continue | |||
for thisOpObj in thisPUConfObj.getOperationObjList(): | |||
if thisOpObj.type == "self": | |||
continue | |||
if thisOpObj.name in plotterList: | |||
thisOpObj.type = "plotter" | |||
def setPlotterQueue(self, plotter_queue): | |||
self.plotterQueue = plotter_queue | |||
def getPlotterQueue(self): | |||
return self.plotterQueue | |||
def useExternalPlotter(self): | |||
self.plotterQueue = Queue(10) | |||
self.setPlotters() | |||
plotManagerObj = PlotManager(self.plotterQueue) | |||
plotManagerObj.setController(self) | |||
return plotManagerObj | |||
# 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) | |||
# |