Files
frappy/frappy/gui/logwindow.py
Georg Brandl a9257b2a0c gui: isort
Change-Id: Ic1c1d54a9577c1774024aefd5464b6e4b8e1fe07
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/30570
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
2023-03-03 15:43:05 +01:00

46 lines
1.3 KiB
Python

from logging import DEBUG, NOTSET, Handler
from frappy.gui.qt import QMainWindow, QObject, pyqtSignal
from frappy.gui.util import loadUi
class LogWindowHandler(Handler, QObject):
logmessage = pyqtSignal(str, int)
def __init__(self, level=NOTSET):
QObject.__init__(self)
Handler.__init__(self, level)
def emit(self, record):
self.logmessage.emit(record.getMessage(), record.levelno)
class LogWindow(QMainWindow):
levels = {'Debug':10, 'Info':20, 'Warning':30, 'Error':40}
def __init__(self, logger, parent=None):
super().__init__(parent)
loadUi(self, 'logwindow.ui')
self.log = []
self.level = self.levels['Info']
handler = LogWindowHandler(DEBUG)
handler.logmessage.connect(self.newEntry)
logger.addHandler(handler)
def newEntry(self, msg, lvl):
self.log.append((lvl, msg))
if lvl >= self.level:
self.logBrowser.append(msg)
def on_logLevel_currentTextChanged(self, level):
self.level = self.levels[level]
self.logBrowser.clear()
self.logBrowser.setPlainText('\n'.join(msg for (lvl, msg) in self.log if lvl >= self.level))
def on_clear_pressed(self):
self.logBrowser.clear()
self.log.clear()
def onClose(self):
pass