From f2a69e5c52553079e9b8d453cee28b54028cc9a1 Mon Sep 17 00:00:00 2001 From: appel_c Date: Wed, 19 Feb 2025 14:25:43 +0100 Subject: [PATCH] refactor: remove WidgetDesc and move _gui_is_alive to private --- bec_widgets/cli/client_utils.py | 22 +++++++--------------- tests/end-2-end/test_bec_dock_rpc_e2e.py | 5 ++--- 2 files changed, 9 insertions(+), 18 deletions(-) diff --git a/bec_widgets/cli/client_utils.py b/bec_widgets/cli/client_utils.py index 65203233..5f6af358 100644 --- a/bec_widgets/cli/client_utils.py +++ b/bec_widgets/cli/client_utils.py @@ -147,7 +147,7 @@ def wait_for_server(client): ### is created, and client module is patched. class BECDockArea(client.BECDockArea): def delete(self): - if self is BECGuiClient._top_level["main"].widget: + if self is BECGuiClient._top_level["main"]: raise RuntimeError("Cannot delete main window") super().delete() try: @@ -161,12 +161,6 @@ client.BECDockArea = BECDockArea ### ---------------------------- -@dataclass -class WidgetDesc: - title: str - widget: BECDockArea - - class BECGuiClient(RPCBase): _top_level = {} @@ -200,7 +194,7 @@ class BECGuiClient(RPCBase): # if the module is not found, we skip it if spec is None: continue - return ep.load()(gui=self._top_level["main"].widget) + return ep.load()(gui=self._top_level["main"]) except Exception as e: logger.error(f"Error loading auto update script from plugin: {str(e)}") return None @@ -247,16 +241,14 @@ class BECGuiClient(RPCBase): return self.auto_updates.do_update(msg) def _gui_post_startup(self): - self._top_level["main"] = WidgetDesc( - title="BEC Widgets", widget=BECDockArea(gui_id=self._gui_id) - ) + self._top_level["main"] = BECDockArea(gui_id=self._gui_id) if self._auto_updates_enabled: if self._auto_updates is None: auto_updates = self._get_update_script() if auto_updates is None: AutoUpdates.create_default_dock = True AutoUpdates.enabled = True - auto_updates = AutoUpdates(self._top_level["main"].widget) + auto_updates = AutoUpdates(self._top_level["main"]) if auto_updates.create_default_dock: auto_updates.start_default_dock() self._start_update_script() @@ -302,7 +294,7 @@ class BECGuiClient(RPCBase): rpc_client = RPCBase(gui_id=f"{self._gui_id}:window", parent=self) rpc_client._run_rpc("show") for window in self._top_level.values(): - window.widget.show() + window.show() def show_all(self): with wait_for_server(self): @@ -313,7 +305,7 @@ class BECGuiClient(RPCBase): rpc_client = RPCBase(gui_id=f"{self._gui_id}:window", parent=self) rpc_client._run_rpc("hide") for window in self._top_level.values(): - window.widget.hide() + window.hide() def show(self): if self._process is not None: @@ -328,7 +320,7 @@ class BECGuiClient(RPCBase): def main(self): """Return client to main dock area (in main window)""" with wait_for_server(self): - return self._top_level["main"].widget + return self._top_level["main"] def new(self, title: str = None) -> BECDockArea: """Ask main window to create a new top-level dock area""" diff --git a/tests/end-2-end/test_bec_dock_rpc_e2e.py b/tests/end-2-end/test_bec_dock_rpc_e2e.py index 5f19d2ff..dbba20d7 100644 --- a/tests/end-2-end/test_bec_dock_rpc_e2e.py +++ b/tests/end-2-end/test_bec_dock_rpc_e2e.py @@ -315,8 +315,7 @@ def test_rpc_gui_obj(connected_client_gui_obj, qtbot): assert gui.selected_device is None assert len(gui.windows) == 1 - assert gui.windows["main"].widget is gui.main - assert gui.windows["main"].title == "BEC Widgets" + assert gui.windows["main"] is gui.main mw = gui.main assert mw.__class__.__name__ == "BECDockArea" @@ -350,7 +349,7 @@ def test_rpc_gui_obj(connected_client_gui_obj, qtbot): gui.start() # gui.windows should have main, and main dock area should have same gui_id as before assert len(gui.windows) == 1 - assert gui.windows["main"].widget._gui_id == mw._gui_id + assert gui.windows["main"]._gui_id == mw._gui_id # communication should work, main dock area should have same id and be visible gui_info = gui._dump() assert gui_info[mw._gui_id]["visible"]