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

refactor: BECGuiClientMixin -> BECGuiClient

- Mixin class was only used with BECDockArea, now it is a class by itself
which represents the client object connected to the GUI server ; ".main"
is the dock area of the main window
- Enhanced "wait_for_server"
- ".selected_device" is stored in Redis, to allow server-side to know
about the auto update configuration instead of keeping it on client
This commit is contained in:
2024-12-16 11:53:32 +01:00
committed by wakonig_k
parent bdb25206d9
commit 809e654087
9 changed files with 262 additions and 172 deletions

View File

@ -5,8 +5,7 @@ from contextlib import contextmanager
import pytest
from bec_lib.endpoints import MessageEndpoints
from bec_widgets.cli.client import BECDockArea
from bec_widgets.cli.client_utils import _start_plot_process
from bec_widgets.cli.client_utils import BECGuiClient, _start_plot_process
from bec_widgets.utils import BECDispatcher
from bec_widgets.widgets.containers.figure import BECFigure
@ -48,20 +47,20 @@ def rpc_server_figure(gui_id, bec_client_lib):
@pytest.fixture
def rpc_server_dock(gui_id, bec_client_lib):
dock_area = BECDockArea(gui_id=gui_id)
dock_area._auto_updates_enabled = False
gui = BECGuiClient(gui_id=gui_id)
gui._auto_updates_enabled = False
try:
dock_area.start_server(wait=True)
yield dock_area
gui.start_server(wait=True)
yield gui.main
finally:
dock_area.close()
gui.close()
@pytest.fixture
def rpc_server_dock_w_auto_updates(gui_id, bec_client_lib):
dock_area = BECDockArea(gui_id=gui_id)
gui = BECGuiClient(gui_id=gui_id)
try:
dock_area.start_server(wait=True)
yield dock_area
gui.start_server(wait=True)
yield gui, gui.main
finally:
dock_area.close()
gui.close()

View File

@ -239,14 +239,15 @@ def test_auto_update(bec_client_lib, rpc_server_dock_w_auto_updates, qtbot):
dev = client.device_manager.devices
scans = client.scans
queue = client.queue
dock = rpc_server_dock_w_auto_updates
gui, dock = rpc_server_dock_w_auto_updates
auto_updates = gui.auto_updates
def get_default_figure():
return dock.auto_updates.get_default_figure()
return auto_updates.get_default_figure()
plt = get_default_figure()
dock.selected_device = "bpm4i"
gui.selected_device = "bpm4i"
status = scans.line_scan(dev.samx, -5, 5, steps=10, exp_time=0.05, relative=False)
status.wait()
@ -274,7 +275,7 @@ def test_auto_update(bec_client_lib, rpc_server_dock_w_auto_updates, qtbot):
)
status.wait()
plt = dock.auto_updates.get_default_figure()
plt = auto_updates.get_default_figure()
widgets = plt.widget_list
qtbot.waitUntil(lambda: len(plt.widget_list) > 0, timeout=5000)
plt_data = widgets[0].get_all_data()