0
0
mirror of https://github.com/bec-project/bec_widgets.git synced 2025-07-12 18:51:50 +02:00

wip demo with preview endpoint

This commit is contained in:
2025-05-30 14:33:04 +02:00
parent e4cd4891ad
commit df52293a90

View File

@ -1053,23 +1053,43 @@ class Image(PlotBase):
type(str): The type of monitor to use. Options are "1d", "2d", or "auto".
"""
monitor_to_connect = self.dev[monitor]
signal = monitor_to_connect._info["signals"]["preview"]
ndim = monitor_to_connect._info["signals"]["preview"]["describe"]["signal_metadata"]["ndim"]
rot = monitor_to_connect._info["signals"]["preview"]["describe"]["signal_metadata"][
"num_rot90"
]
self._main_image.num_rotation_90 = rot
if ndim == 1:
self.bec_dispatcher.connect_slot(
self.on_image_update_1d, MessageEndpoints.device_preview(monitor, "preview")
)
self._main_image.config.source = "device_monitor_1d"
self._main_image.config.monitor_type = "1d"
elif ndim == 2:
self.bec_dispatcher.connect_slot(
self.on_image_update_2d, MessageEndpoints.device_preview(monitor, "preview")
)
self._main_image.config.source = "device_monitor_2d"
self._main_image.config.monitor_type = "2d"
# TODO consider moving connecting and disconnecting logic to Image itself if multiple images
if type == "1d":
self.bec_dispatcher.connect_slot(
self.on_image_update_1d, MessageEndpoints.device_monitor_1d(monitor)
)
elif type == "2d":
self.bec_dispatcher.connect_slot(
self.on_image_update_2d, MessageEndpoints.device_monitor_2d(monitor)
)
elif type == "auto":
self.bec_dispatcher.connect_slot(
self.on_image_update_1d, MessageEndpoints.device_monitor_1d(monitor)
)
self.bec_dispatcher.connect_slot(
self.on_image_update_2d, MessageEndpoints.device_monitor_2d(monitor)
)
print(f"Connected to {monitor} with type {type}")
# if type == "1d":
# self.bec_dispatcher.connect_slot(
# self.on_image_update_1d, MessageEndpoints.device_monitor_1d(monitor)
# )
# elif type == "2d":
# self.bec_dispatcher.connect_slot(
# self.on_image_update_2d, MessageEndpoints.device_monitor_2d(monitor)
# )
# elif type == "auto":
# self.bec_dispatcher.connect_slot(
# self.on_image_update_1d, MessageEndpoints.device_monitor_1d(monitor)
# )
# self.bec_dispatcher.connect_slot(
# self.on_image_update_2d, MessageEndpoints.device_monitor_2d(monitor)
# )
# print(f"Connected to {monitor} with type {type}")
self._main_image.config.monitor = monitor
def disconnect_monitor(self, monitor: str):
@ -1242,10 +1262,11 @@ if __name__ == "__main__": # pragma: no cover
ml = QHBoxLayout(win)
image_popup = Image(popups=True)
image_side_panel = Image(popups=False)
image_popup.image("eiger")
# image_side_panel = Image(popups=False)
ml.addWidget(image_popup)
ml.addWidget(image_side_panel)
# ml.addWidget(image_side_panel)
win.resize(1500, 800)
win.show()