diff --git a/gui/src/aaregui/panels/LogPanel.py b/gui/src/aaregui/panels/LogPanel.py new file mode 100644 index 00000000..1a93ae77 --- /dev/null +++ b/gui/src/aaregui/panels/LogPanel.py @@ -0,0 +1,32 @@ +# Python + +from PySide6.QtCore import Qt, Signal, QObject +from PySide6.QtWidgets import QDockWidget, QPlainTextEdit + +from aaredaqlib.logger_config import QtLogEmitter, QtLogHandler, find_existing_formatter, attach_to_logger + + +class LogDock(QDockWidget): + def __init__(self, title="Log", parent=None): + super().__init__(title, parent) + self.setAllowedAreas(Qt.BottomDockWidgetArea | Qt.TopDockWidgetArea) + self.view = QPlainTextEdit(self) + self.view.setReadOnly(True) + self.setWidget(self.view) + + # connect emitter to append text safely from any thread + self.emitter = QtLogEmitter() + self.emitter.message.connect(self._append_line) + + # logging handler + self.handler = QtLogHandler(self.emitter) + self.handler.setFormatter(find_existing_formatter()) + + def attach_logger(self, logger_name: str = "aareGUI"): + attach_to_logger(logger_name, self.handler) + + def _append_line(self, text: str): + self.view.appendPlainText(text) + + def clear(self): + self.view.clear() \ No newline at end of file