From 31eb00bd973ca0a361a3f3bdc83d73eff0000c25 Mon Sep 17 00:00:00 2001 From: wyzula-jan Date: Thu, 12 Mar 2026 22:59:51 +0100 Subject: [PATCH 1/3] fix(gui): wrong api calls --- csaxs_bec/bec_widgets/widgets/xray_eye/x_ray_eye.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/csaxs_bec/bec_widgets/widgets/xray_eye/x_ray_eye.py b/csaxs_bec/bec_widgets/widgets/xray_eye/x_ray_eye.py index 0033aa5..63898f3 100644 --- a/csaxs_bec/bec_widgets/widgets/xray_eye/x_ray_eye.py +++ b/csaxs_bec/bec_widgets/widgets/xray_eye/x_ray_eye.py @@ -25,7 +25,6 @@ from qtpy.QtWidgets import ( QTextEdit, QTabWidget, ) -import time logger = bec_logger.logger CAMERA = ("cam_xeye", "image") @@ -363,7 +362,7 @@ class XRayEye(BECWidget, QWidget): ################################################################################ @SafeProperty(str) def user_message(self): - return self.message_line_edit.text() + return self.message_line_edit.toPlainText() @user_message.setter def user_message(self, message: str): @@ -555,9 +554,6 @@ class XRayEye(BECWidget, QWidget): def cleanup(self): """Cleanup connections on widget close -> disconnect slots and stop live mode of camera.""" - self.bec_dispatcher.disconnect_slot( - self.device_updates, MessageEndpoints.device_readback("omny_xray_gui") - ) getattr(self.dev, CAMERA[0]).stop_live_mode() super().cleanup() -- 2.52.0 From 138b2668b36ba7504c344e0f2277d41ed1164aa5 Mon Sep 17 00:00:00 2001 From: wyzula-jan Date: Thu, 12 Mar 2026 23:05:27 +0100 Subject: [PATCH 2/3] fix(gui): cleanup adjusted --- .../bec_widgets/widgets/xray_eye/x_ray_eye.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/csaxs_bec/bec_widgets/widgets/xray_eye/x_ray_eye.py b/csaxs_bec/bec_widgets/widgets/xray_eye/x_ray_eye.py index 63898f3..da71896 100644 --- a/csaxs_bec/bec_widgets/widgets/xray_eye/x_ray_eye.py +++ b/csaxs_bec/bec_widgets/widgets/xray_eye/x_ray_eye.py @@ -145,6 +145,7 @@ class XRayEye(BECWidget, QWidget): def __init__(self, parent=None, **kwargs): super().__init__(parent=parent, **kwargs) + self._connected_motor = None self.get_bec_shortcuts() self._init_ui() @@ -356,6 +357,7 @@ class XRayEye(BECWidget, QWidget): self.on_tomo_angle_readback, MessageEndpoints.device_readback(motor) ) logger.info(f"Successfully connected to {motor}") + self._connected_motor = motor ################################################################################ # Properties ported from the original OmnyAlignment, can be adjusted as needed @@ -554,6 +556,18 @@ class XRayEye(BECWidget, QWidget): def cleanup(self): """Cleanup connections on widget close -> disconnect slots and stop live mode of camera.""" + if self._connected_motor is not None: + self.bec_dispatcher.disconnect_slot( + self.on_tomo_angle_readback, MessageEndpoints.device_readback(self._connected_motor) + ) + + self.bec_dispatcher.disconnect_slot( + self.getting_shutter_status, MessageEndpoints.device_readback("omnyfsh") + ) + self.bec_dispatcher.disconnect_slot( + self.getting_camera_status, MessageEndpoints.device_read_configuration(CAMERA[0]) + ) + getattr(self.dev, CAMERA[0]).stop_live_mode() super().cleanup() -- 2.52.0 From 00c45b2bcfe45c4fb556a6a8a9098d509fb8c524 Mon Sep 17 00:00:00 2001 From: wyzula-jan Date: Thu, 12 Mar 2026 23:08:44 +0100 Subject: [PATCH 3/3] fix(gui): submit button do not block if fails --- .../bec_widgets/widgets/xray_eye/x_ray_eye.py | 55 +++++++++---------- 1 file changed, 26 insertions(+), 29 deletions(-) diff --git a/csaxs_bec/bec_widgets/widgets/xray_eye/x_ray_eye.py b/csaxs_bec/bec_widgets/widgets/xray_eye/x_ray_eye.py index da71896..342e206 100644 --- a/csaxs_bec/bec_widgets/widgets/xray_eye/x_ray_eye.py +++ b/csaxs_bec/bec_widgets/widgets/xray_eye/x_ray_eye.py @@ -521,38 +521,35 @@ class XRayEye(BECWidget, QWidget): @SafeSlot() def submit(self): """Execute submit action by submit button.""" - print("submit pushed") self.submit_button.blockSignals(True) - if self.roi_manager.single_active_roi is None: - logger.warning("No active ROI") - return - roi_coordinates = self.roi_manager.single_active_roi.get_coordinates() - roi_center_x = roi_coordinates["center_x"] - roi_center_y = roi_coordinates["center_y"] - # Case of rectangular ROI - if isinstance(self.roi_manager.single_active_roi, RectangularROI): - roi_width = roi_coordinates["width"] - roi_height = roi_coordinates["height"] - elif isinstance(self.roi_manager.single_active_roi, CircularROI): - roi_width = roi_coordinates["diameter"] - roi_height = roi_coordinates["radius"] - else: - logger.warning("Unsupported ROI type for submit action.") - return + try: + if self.roi_manager.single_active_roi is None: + logger.warning("No active ROI") + return + roi_coordinates = self.roi_manager.single_active_roi.get_coordinates() + roi_center_x = roi_coordinates["center_x"] + roi_center_y = roi_coordinates["center_y"] + # Case of rectangular ROI + if isinstance(self.roi_manager.single_active_roi, RectangularROI): + roi_width = roi_coordinates["width"] + roi_height = roi_coordinates["height"] + elif isinstance(self.roi_manager.single_active_roi, CircularROI): + roi_width = roi_coordinates["diameter"] + roi_height = roi_coordinates["radius"] + else: + logger.warning("Unsupported ROI type for submit action.") + return - print( - f"current roi: x:{roi_center_x}, y:{roi_center_y}, w:{roi_width},h:{roi_height}" - ) # TODO remove when will be not needed for debugging - # submit roi coordinates - step = int(self.dev.omny_xray_gui.step.read().get("omny_xray_gui_step").get("value")) + # submit roi coordinates + step = int(self.dev.omny_xray_gui.step.read().get("omny_xray_gui_step").get("value")) - xval_x = getattr(self.dev.omny_xray_gui, f"xval_x_{step}").set(roi_center_x) - xval_y = getattr(self.dev.omny_xray_gui, f"yval_y_{step}").set(roi_center_y) - width_x = getattr(self.dev.omny_xray_gui, f"width_x_{step}").set(roi_width) - width_y = getattr(self.dev.omny_xray_gui, f"width_y_{step}").set(roi_height) - self.dev.omny_xray_gui.submit.set(1) - print("submit done") - self.submit_button.blockSignals(False) + getattr(self.dev.omny_xray_gui, f"xval_x_{step}").set(roi_center_x) + getattr(self.dev.omny_xray_gui, f"yval_y_{step}").set(roi_center_y) + getattr(self.dev.omny_xray_gui, f"width_x_{step}").set(roi_width) + getattr(self.dev.omny_xray_gui, f"width_y_{step}").set(roi_height) + self.dev.omny_xray_gui.submit.set(1) + finally: + self.submit_button.blockSignals(False) def cleanup(self): """Cleanup connections on widget close -> disconnect slots and stop live mode of camera.""" -- 2.52.0