diff --git a/bec_widgets/utils/bec_connector.py b/bec_widgets/utils/bec_connector.py index 00d7c96b..01a669f6 100644 --- a/bec_widgets/utils/bec_connector.py +++ b/bec_widgets/utils/bec_connector.py @@ -93,7 +93,8 @@ class BECConnector: object_name = object_name or kwargs.pop("objectName", None) # Ensure the parent is always the first argument for QObject parent = kwargs.pop("parent", None) - # This initializes the QObject or any qt related class + # This initializes the QObject or any qt related class BECConnector has to be used from this line down with QObject, otherwise hierarchy logic will not work + # TODO do a proper check if the class is a QObject -> issue #475 super().__init__(parent=parent, **kwargs) # BEC related connections self.bec_dispatcher = BECDispatcher(client=client) @@ -187,7 +188,7 @@ class BECConnector: # Collect used names among siblings used_names = {sib.objectName() for sib in siblings if sib is not self} - base_name = self.objectName() + base_name = self.object_name if base_name not in used_names: # Name is already unique among siblings return @@ -380,7 +381,7 @@ class BECConnector: def remove(self): """Cleanup the BECConnector""" # If the widget is attached to a dock, remove it from the dock. - # TODO this should be handled by dock and dock are not by BECConnector + # TODO this should be handled by dock and dock are not by BECConnector -> issue created #473 if self._parent_dock is not None: self._parent_dock.delete(self.object_name) # If the widget is from Qt, trigger its close method. diff --git a/tests/unit_tests/test_bec_connector.py b/tests/unit_tests/test_bec_connector.py index ab60fce2..05db97df 100644 --- a/tests/unit_tests/test_bec_connector.py +++ b/tests/unit_tests/test_bec_connector.py @@ -2,6 +2,7 @@ import time import pytest +from qtpy.QtCore import QObject from qtpy.QtWidgets import QApplication from bec_widgets.utils import BECConnector @@ -10,9 +11,12 @@ from bec_widgets.utils.error_popups import SafeSlot as Slot from .client_mocks import mocked_client +class BECConnectorQObject(BECConnector, QObject): ... + + @pytest.fixture def bec_connector(mocked_client): - connector = BECConnector(client=mocked_client) + connector = BECConnectorQObject(client=mocked_client) return connector @@ -20,11 +24,11 @@ def test_bec_connector_init(bec_connector): assert bec_connector is not None assert bec_connector.client is not None assert isinstance(bec_connector, BECConnector) - assert bec_connector.config.widget_class == "BECConnector" + assert bec_connector.config.widget_class == "BECConnectorQObject" def test_bec_connector_init_with_gui_id(mocked_client): - bc = BECConnector(client=mocked_client, gui_id="test_gui_id") + bc = BECConnectorQObject(client=mocked_client, gui_id="test_gui_id") assert bc.config.gui_id == "test_gui_id" assert bc.gui_id == "test_gui_id"