0
0
mirror of https://github.com/bec-project/bec_widgets.git synced 2025-07-13 19:21:50 +02:00

fix(log_panel): removed lambda callback method

This commit is contained in:
2025-05-30 14:11:59 +02:00
committed by Jan Wyzula
parent 7322cd194f
commit 91126168b6

View File

@ -15,8 +15,7 @@ from bec_lib.endpoints import MessageEndpoints
from bec_lib.logger import LogLevel, bec_logger from bec_lib.logger import LogLevel, bec_logger
from bec_lib.messages import LogMessage, StatusMessage from bec_lib.messages import LogMessage, StatusMessage
from pyqtgraph import SignalProxy from pyqtgraph import SignalProxy
from PySide6.QtCore import QObject from qtpy.QtCore import QDateTime, QObject, Qt, Signal
from qtpy.QtCore import QDateTime, Qt, Signal
from qtpy.QtGui import QFont from qtpy.QtGui import QFont
from qtpy.QtWidgets import ( from qtpy.QtWidgets import (
QApplication, QApplication,
@ -94,12 +93,13 @@ class BecLogsQueue(BECConnector, QObject):
self._selected_services: set[str] | None = None self._selected_services: set[str] | None = None
self._set_formatter_and_update_filter(line_formatter) self._set_formatter_and_update_filter(line_formatter)
# instance attribute still accessible after c++ object is deleted, so the callback can be unregistered # instance attribute still accessible after c++ object is deleted, so the callback can be unregistered
self._callback = lambda *args: self._process_incoming_log_msg(*args) self.bec_dispatcher.connect_slot(self._process_incoming_log_msg, MessageEndpoints.log())
self.bec_dispatcher.connect_slot(self._callback, MessageEndpoints.log())
def cleanup(self, *_): def cleanup(self, *_):
"""Stop listening to the Redis log stream""" """Stop listening to the Redis log stream"""
self.bec_dispatcher.disconnect_slot(self._callback, [MessageEndpoints.log()]) self.bec_dispatcher.disconnect_slot(
self._process_incoming_log_msg, [MessageEndpoints.log()]
)
@SafeSlot(verify_sender=True) @SafeSlot(verify_sender=True)
def _process_incoming_log_msg(self, msg: dict, _metadata: dict): def _process_incoming_log_msg(self, msg: dict, _metadata: dict):
@ -111,7 +111,6 @@ class BecLogsQueue(BECConnector, QObject):
self.new_message.emit() self.new_message.emit()
except Exception as e: except Exception as e:
if "Internal C++ object (BecLogsQueue) already deleted." in e.args: if "Internal C++ object (BecLogsQueue) already deleted." in e.args:
self.bec_dispatcher.disconnect_slot(self._callback, [MessageEndpoints.log()])
return return
logger.warning(f"Error in LogPanel incoming message callback: {e}") logger.warning(f"Error in LogPanel incoming message callback: {e}")