##// END OF EJS Templates
Update plot codes, add meta attribute to dataOut to send metadata to plots
Update plot codes, add meta attribute to dataOut to send metadata to plots

File last commit:

r1014:c5cbd628ce0f merge
r1139:ade57c0ecace
Show More
controller_api.py
179 lines | 3.7 KiB | text/x-python | PythonLexer
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 = "other"
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)
#