X-Git-Url: http://git.onelab.eu/?p=sface.git;a=blobdiff_plain;f=sface%2Flogwindow.py;h=fd252ef6905c721844bb8439a54660ffb8dd1d8d;hp=64d4e9fe0f6ff0b56eed112afec3c3e66e6afcad;hb=cb344122665ea5c0867dd25014aa22ca98e5ef4d;hpb=4c1046ce18cb25a8a045ca588d975723af36ea1a diff --git a/sface/logwindow.py b/sface/logwindow.py index 64d4e9f..fd252ef 100644 --- a/sface/logwindow.py +++ b/sface/logwindow.py @@ -1,20 +1,53 @@ +import sys +from cStringIO import StringIO + from PyQt4.QtCore import * from PyQt4.QtGui import * from sface.config import config +import time + +class LogIO(QObject): + def __init__(self, parent, old_stdout): + QObject.__init__(self, parent) + self.io = StringIO() + self.old_stdout = old_stdout + + def write(self, txt): + self.io.write(txt) + self.parent().update() + + def getText(self): + val = self.io.getvalue() + # looks like there is no other way + # to empty the StringIO + del self.io + self.io = StringIO() + return val class LogWindow(QDialog): def __init__(self, parent=None): QWidget.__init__(self, parent) self.setWindowTitle("SFI Log") self.text = QTextBrowser(self) - + self.text.ensureCursorVisible() + layout = QVBoxLayout() layout.addWidget(self.text) self.setLayout(layout) - def setText(self, txt): - self.text.setText(txt) - - + self.logio = LogIO(self, sys.stdout) + + def redirectOutput(self): + print "\n\nRedirecting all output to Log Window. Please open the log window to see the output\n" + self.old_stdout = sys.stdout + self.old_stderr = sys.stderr + sys.stdout = self.logio + sys.stderr = self.logio + + def update(self): + self.text.insertPlainText(self.logio.getText()) + c = self.text.textCursor() + c.movePosition(QTextCursor.End) + self.text.setTextCursor(c)