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 768d540..463b8ed 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 @@ -10,7 +10,7 @@ from bec_widgets import BECWidget, SafeSlot, SafeProperty from bec_widgets.widgets.control.device_control.positioner_box import PositionerBox2D from bec_widgets.widgets.plots.image.image import Image from bec_widgets.widgets.plots.image.setting_widgets.image_roi_tree import ROIPropertyTree -from bec_widgets.widgets.plots.roi.image_roi import BaseROI +from bec_widgets.widgets.plots.roi.image_roi import BaseROI, RectangularROI, CircularROI, EllipticalROI from bec_widgets.widgets.utility.toggle.toggle import ToggleSwitch from bec_lib.endpoints import MessageEndpoints @@ -20,6 +20,7 @@ logger = bec_logger.logger DEVICE_HORIZONTAL = "samx" DEVICE_VERTICAL = "samy" CAMERA = ("cam_flomni_overview","preview") +PIXEL_CALIBRATION = 0.1 / 113 # .2 with binning #TODO needed here or not? class XRayEye(BECWidget, QWidget): USER_ACCESS = ["active_roi","enable_live_view", "enable_live_view.setter", "user_message", "user_message.setter","sample_name", "sample_name.setter", "enable_move_buttons", "enable_move_buttons.setter"] @@ -91,7 +92,7 @@ class XRayEye(BECWidget, QWidget): self.step_size_vertical.setSingleStep(0.1) self.step_size_vertical.setValue(1.0) # Submit button - self.submit_button = QPushButton("Get ROI Coordinates", parent=self) + self.submit_button = QPushButton("Submit", parent=self) self.submit_button.setStyleSheet("""background-color: #4CAF50; color: white; padding: 5px 10px; border: none; border-radius: 4px;""") # Add to layout form step_size_form.addWidget(QLabel("Horizontal", parent=self),0,0) @@ -136,7 +137,7 @@ class XRayEye(BECWidget, QWidget): self.live_preview_toggle.enabled.connect(self.on_live_view_enabled) self.step_size_horizontal.valueChanged.connect(lambda x: self.motor_control_2d.setProperty("step_size_hor",x)) self.step_size_vertical.valueChanged.connect(lambda x: self.motor_control_2d.setProperty("step_size_ver",x)) - self.submit_button.clicked.connect(self.get_roi_coordinates) + self.submit_button.clicked.connect(self.submit) def _create_separator(self): sep = QFrame(parent=self) @@ -219,6 +220,10 @@ class XRayEye(BECWidget, QWidget): self.motor_control_2d.enable_controls_hor = x_enable self.motor_control_2d.enable_controls_ver = y_enable + @SafeSlot(str) + def set_message(self, msg: str): + self.message_line_edit.setText(msg) + @SafeSlot(bool,bool) def on_tomo_angle_readback(self,data:dict,meta:dict): print(f"data: {data}") @@ -235,10 +240,40 @@ class XRayEye(BECWidget, QWidget): self.on_motors_enable(bool(enable_x_motor),bool(enable_y_motor)) + #TODO check if all data are passed correctly + # send message + send_message = signals.get("omny_xray_gui_send_message").get('value') + self.set_message(send_message) + + # enable frame acquisition + update_frame_acq = signals.get("omny_xray_gui_update_frame_acq").get('value') + self.on_live_view_enabled(bool(update_frame_acq)) + print(f"signals: {signals}") print(f"data: {data}") print(f"meta: {meta}") + @SafeSlot() + def submit(self): + """Execute submit action by submit button.""" + 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_diameter = roi_coordinates['diameter'] + roi_radius = roi_coordinates['radius'] + elif isinstance(self.roi_manager.single_active_roi,EllipticalROI): + roi_major = roi_coordinates['major'] + roi_minor = roi_coordinates['minor'] + else: + logger.warning("Unsupported ROI type for submit action.") + return + #TODO submit angles somewhere + if __name__ == "__main__":