mirror of
https://github.com/bec-project/bec_widgets.git
synced 2025-07-14 11:41:49 +02:00
refactor: cleanup, fix tests and _top_level dict/windows
This commit is contained in:
@ -280,13 +280,11 @@ class BECGuiClient(RPCBase):
|
|||||||
widget = rpc_client._run_rpc(
|
widget = rpc_client._run_rpc(
|
||||||
"new_dock_area", name, geometry
|
"new_dock_area", name, geometry
|
||||||
) # pylint: disable=protected-access
|
) # pylint: disable=protected-access
|
||||||
self._top_level[widget.widget_name] = widget
|
|
||||||
return widget
|
return widget
|
||||||
rpc_client = RPCBase(gui_id=f"{self._gui_id}:window", parent=self)
|
rpc_client = RPCBase(gui_id=f"{self._gui_id}:window", parent=self)
|
||||||
widget = rpc_client._run_rpc(
|
widget = rpc_client._run_rpc(
|
||||||
"new_dock_area", name, geometry
|
"new_dock_area", name, geometry
|
||||||
) # pylint: disable=protected-access
|
) # pylint: disable=protected-access
|
||||||
self._top_level[widget.widget_name] = widget
|
|
||||||
return widget
|
return widget
|
||||||
|
|
||||||
def delete(self, name: str) -> None:
|
def delete(self, name: str) -> None:
|
||||||
@ -399,10 +397,6 @@ class BECGuiClient(RPCBase):
|
|||||||
|
|
||||||
def _start(self, wait: bool = False) -> None:
|
def _start(self, wait: bool = False) -> None:
|
||||||
self._killed = False
|
self._killed = False
|
||||||
# Clear the registry state
|
|
||||||
self._registry_state.clear()
|
|
||||||
# Clear top level
|
|
||||||
self._top_level.clear()
|
|
||||||
self._client.connector.register(
|
self._client.connector.register(
|
||||||
MessageEndpoints.gui_registry_state(self._gui_id), cb=self._handle_registry_update
|
MessageEndpoints.gui_registry_state(self._gui_id), cb=self._handle_registry_update
|
||||||
)
|
)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
from bec_lib.logger import bec_logger
|
from bec_lib.logger import bec_logger
|
||||||
from qtpy.QtWidgets import QApplication, QMainWindow
|
from qtpy.QtWidgets import QApplication, QMainWindow
|
||||||
|
|
||||||
from bec_widgets.cli.rpc.rpc_register import RPCRegister
|
from bec_widgets.cli.rpc.rpc_register import RPCRegister, rpc_register_broadcast
|
||||||
from bec_widgets.utils.bec_widget import BECWidget
|
from bec_widgets.utils.bec_widget import BECWidget
|
||||||
from bec_widgets.utils.container_utils import WidgetContainerUtils
|
from bec_widgets.utils.container_utils import WidgetContainerUtils
|
||||||
from bec_widgets.widgets.containers.dock.dock_area import BECDockArea
|
from bec_widgets.widgets.containers.dock.dock_area import BECDockArea
|
||||||
@ -50,25 +50,26 @@ class BECMainWindow(BECWidget, QMainWindow):
|
|||||||
BECDockArea: The newly created dock area.
|
BECDockArea: The newly created dock area.
|
||||||
"""
|
"""
|
||||||
rpc_register = RPCRegister()
|
rpc_register = RPCRegister()
|
||||||
existing_dock_areas = rpc_register.get_names_of_rpc_by_class_type(BECDockArea)
|
with rpc_register_broadcast(rpc_register):
|
||||||
if name is not None:
|
existing_dock_areas = rpc_register.get_names_of_rpc_by_class_type(BECDockArea)
|
||||||
if name in existing_dock_areas:
|
if name is not None:
|
||||||
raise ValueError(
|
if name in existing_dock_areas:
|
||||||
f"Name {name} must be unique for dock areas, but already exists: {existing_dock_areas}."
|
raise ValueError(
|
||||||
)
|
f"Name {name} must be unique for dock areas, but already exists: {existing_dock_areas}."
|
||||||
else:
|
)
|
||||||
name = "dock_area"
|
else:
|
||||||
name = WidgetContainerUtils.generate_unique_name(name, existing_dock_areas)
|
name = "dock_area"
|
||||||
dock_area = BECDockArea(name=name)
|
name = WidgetContainerUtils.generate_unique_name(name, existing_dock_areas)
|
||||||
dock_area.resize(dock_area.minimumSizeHint())
|
dock_area = BECDockArea(name=name)
|
||||||
# TODO Should we simply use the specified name as title here?
|
dock_area.resize(dock_area.minimumSizeHint())
|
||||||
dock_area.window().setWindowTitle(f"BEC - {name}")
|
# TODO Should we simply use the specified name as title here?
|
||||||
logger.info(f"Created new dock area: {name}")
|
dock_area.window().setWindowTitle(f"BEC - {name}")
|
||||||
logger.info(f"Existing dock areas: {geometry}")
|
logger.info(f"Created new dock area: {name}")
|
||||||
if geometry is not None:
|
logger.info(f"Existing dock areas: {geometry}")
|
||||||
dock_area.setGeometry(*geometry)
|
if geometry is not None:
|
||||||
dock_area.show()
|
dock_area.setGeometry(*geometry)
|
||||||
return dock_area
|
dock_area.show()
|
||||||
|
return dock_area
|
||||||
|
|
||||||
def cleanup(self):
|
def cleanup(self):
|
||||||
super().close()
|
super().close()
|
||||||
|
@ -177,13 +177,18 @@ def test_rpc_gui_obj(connected_client_gui_obj, qtbot):
|
|||||||
assert all(windows["visible"] for windows in gui_info.values())
|
assert all(windows["visible"] for windows in gui_info.values())
|
||||||
|
|
||||||
assert gui._gui_is_alive()
|
assert gui._gui_is_alive()
|
||||||
gui.close()
|
gui.kill_server()
|
||||||
assert not gui._gui_is_alive()
|
assert not gui._gui_is_alive()
|
||||||
gui._start(wait=True)
|
gui.start(wait=True)
|
||||||
assert gui._gui_is_alive()
|
assert gui._gui_is_alive()
|
||||||
# calling start multiple times should not change anything
|
# calling start multiple times should not change anything
|
||||||
gui.start(wait=True)
|
gui.start(wait=True)
|
||||||
gui.start(wait=True)
|
gui.start(wait=True)
|
||||||
|
|
||||||
|
def wait_for_gui_started():
|
||||||
|
return "bec" in gui.windows
|
||||||
|
|
||||||
|
qtbot.waitUntil(wait_for_gui_started, timeout=3000)
|
||||||
# gui.windows should have bec with gui_id 'bec'
|
# gui.windows should have bec with gui_id 'bec'
|
||||||
assert len(gui.windows) == 1
|
assert len(gui.windows) == 1
|
||||||
assert gui.windows["bec"]._gui_id == mw._gui_id
|
assert gui.windows["bec"]._gui_id == mw._gui_id
|
||||||
|
@ -53,14 +53,14 @@ def test_device_input_base_init_with_config(mocked_client):
|
|||||||
}
|
}
|
||||||
widget = DeviceInputWidget(client=mocked_client, config=config)
|
widget = DeviceInputWidget(client=mocked_client, config=config)
|
||||||
assert widget.config.gui_id == "test_gui_id"
|
assert widget.config.gui_id == "test_gui_id"
|
||||||
assert widget.config.device_filter == [BECDeviceFilter.POSITIONER]
|
assert widget.config.device_filter == ["Positioner"]
|
||||||
assert widget.config.default == "samx"
|
assert widget.config.default == "samx"
|
||||||
|
|
||||||
|
|
||||||
def test_device_input_base_set_device_filter(device_input_base):
|
def test_device_input_base_set_device_filter(device_input_base):
|
||||||
"""Test device filter setter."""
|
"""Test device filter setter."""
|
||||||
device_input_base.set_device_filter(BECDeviceFilter.POSITIONER)
|
device_input_base.set_device_filter(BECDeviceFilter.POSITIONER)
|
||||||
assert device_input_base.config.device_filter == [BECDeviceFilter.POSITIONER]
|
assert device_input_base.config.device_filter == ["Positioner"]
|
||||||
|
|
||||||
|
|
||||||
def test_device_input_base_set_device_filter_error(device_input_base):
|
def test_device_input_base_set_device_filter_error(device_input_base):
|
||||||
|
@ -60,7 +60,7 @@ def test_device_input_combobox_init(device_input_combobox):
|
|||||||
|
|
||||||
def test_device_input_combobox_init_with_kwargs(device_input_combobox_with_kwargs):
|
def test_device_input_combobox_init_with_kwargs(device_input_combobox_with_kwargs):
|
||||||
assert device_input_combobox_with_kwargs.config.gui_id == "test_gui_id"
|
assert device_input_combobox_with_kwargs.config.gui_id == "test_gui_id"
|
||||||
assert device_input_combobox_with_kwargs.config.device_filter == [BECDeviceFilter.POSITIONER]
|
assert device_input_combobox_with_kwargs.config.device_filter == ["Positioner"]
|
||||||
assert device_input_combobox_with_kwargs.config.default == "samx"
|
assert device_input_combobox_with_kwargs.config.default == "samx"
|
||||||
assert device_input_combobox_with_kwargs.config.arg_name == "test_arg_name"
|
assert device_input_combobox_with_kwargs.config.arg_name == "test_arg_name"
|
||||||
|
|
||||||
@ -132,7 +132,7 @@ def test_device_input_line_edit_init(device_input_line_edit):
|
|||||||
|
|
||||||
def test_device_input_line_edit_init_with_kwargs(device_input_line_edit_with_kwargs):
|
def test_device_input_line_edit_init_with_kwargs(device_input_line_edit_with_kwargs):
|
||||||
assert device_input_line_edit_with_kwargs.config.gui_id == "test_gui_id"
|
assert device_input_line_edit_with_kwargs.config.gui_id == "test_gui_id"
|
||||||
assert device_input_line_edit_with_kwargs.config.device_filter == [BECDeviceFilter.POSITIONER]
|
assert device_input_line_edit_with_kwargs.config.device_filter == ["Positioner"]
|
||||||
assert device_input_line_edit_with_kwargs.config.default == "samx"
|
assert device_input_line_edit_with_kwargs.config.default == "samx"
|
||||||
assert device_input_line_edit_with_kwargs.config.arg_name == "test_arg_name"
|
assert device_input_line_edit_with_kwargs.config.arg_name == "test_arg_name"
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user