X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sface%2Fsfiprocess.py;h=92c420bcdf6cd0a63f29836ce2ef2ee2210b66a0;hb=eba29cd265f907a7e8ef2d23c2a6c47269c4ff15;hp=655fcb6beece995493c8d39ebf139afb340a9e90;hpb=fe5c9420a6778d5e1d069ab12db4de3a96ab010d;p=sface.git diff --git a/sface/sfiprocess.py b/sface/sfiprocess.py index 655fcb6..92c420b 100644 --- a/sface/sfiprocess.py +++ b/sface/sfiprocess.py @@ -1,5 +1,6 @@ import os +import sys import time from PyQt4.QtCore import * @@ -19,6 +20,15 @@ class SfiProcess(QObject): def __init__(self, parent=None): QObject.__init__(self, parent) + self.process = QProcess() + self.connect(self.process, SIGNAL("finished(int, QProcess::ExitStatus)"), + self.processFinished) + + self.connect(self.process, SIGNAL("readyReadStandardOutput()"), + self.processStandardOutput) + self.connect(self.process, SIGNAL("readyReadStandardError()"), + self.processStandardError) + def __init_command(self, args): self.args = QStringList() for arg in args: @@ -28,10 +38,18 @@ class SfiProcess(QObject): if not self.exe: print "FATAL.. Could not locate binary sfi.py - not much we can do without that" - self.process = QProcess() + def isRunning(self): + return self.process.state() != QProcess.NotRunning - self.connect(self.process, SIGNAL("finished(int, QProcess::ExitStatus)"), - self.processFinished) + def processStandardOutput(self): + # NOTE: The signal readyReadStandardOutput is emitted when + # the process has made new data available through its standard output channel. + # But the process is not necessarily finished. + if config.debug: + print self.process.readAllStandardOutput() + + def processStandardError(self): + print self.process.readAllStandardError() def processFinished(self): if self.process.exitStatus() == QProcess.CrashExit: @@ -109,3 +127,4 @@ class SfiProcess(QObject): if config.verbose: command = "%s %s" % (self.exe, self.args.join(" ")) print time.strftime('%M:%S'),"[%.3f s]"%(time.time()-self._trace),command,'Done' +