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 2cf42a4..9758b3f 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 @@ -13,11 +13,13 @@ from bec_widgets.widgets.plots.image.setting_widgets.image_roi_tree import ROIPr from bec_widgets.widgets.plots.roi.image_roi import BaseROI from bec_widgets.widgets.utility.toggle.toggle import ToggleSwitch +from bec_lib.endpoints import MessageEndpoints + logger = bec_logger.logger #TODO replace with actual device names, these are just placeholders from simulation framework DEVICE_HORIZONTAL = "samx" DEVICE_VERTICAL = "samy" -CAMERA = "eiger" +CAMERA = ("cam_flomni_overview","preview") 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"] @@ -29,6 +31,8 @@ class XRayEye(BECWidget, QWidget): self._init_ui() self._make_connections() + self.bec_dispatcher.connect_slot(self.device_updates,MessageEndpoints.device_readback("omny_xray_gui")) + self.bec_dispatcher.connect_slot(self.on_tomo_angle_readback,MessageEndpoints.device_readback("fsamroy")) def _init_ui(self): self.core_layout = QHBoxLayout(self) @@ -51,6 +55,7 @@ class XRayEye(BECWidget, QWidget): header_row.addStretch() self.live_preview_label = QLabel("Live Preview", parent=self) self.live_preview_toggle = ToggleSwitch(parent=self) + self.live_preview_toggle.checked = False header_row.addWidget(self.live_preview_label, 0, Qt.AlignVCenter) header_row.addWidget(self.live_preview_toggle, 0, Qt.AlignVCenter) self.control_panel_layout.addLayout(header_row) @@ -198,11 +203,39 @@ class XRayEye(BECWidget, QWidget): @SafeSlot(bool) def on_live_view_enabled(self, enabled: bool): logger.info(f"Live view is enabled: {enabled}") + self.live_preview_toggle.blockSignals(True) if enabled: + self.live_preview_toggle.checked = enabled self.image.image(CAMERA) + self.live_preview_toggle.blockSignals(False) return self.image.disconnect_monitor(CAMERA) + self.live_preview_toggle.checked = enabled + self.live_preview_toggle.blockSignals(False) + @SafeSlot(bool,bool) + def on_motors_enable(self,x_enable:bool,y_enable:bool): + print(f"x enable: {x_enable}") + print(f"y enable: {y_enable}") + @SafeSlot(bool,bool) + def on_tomo_angle_readback(self,data:dict,meta:dict): + print(f"data: {data}") + print(f"meta: {meta}") + + @SafeSlot(dict,dict) + def device_updates(self,data:dict,meta:dict): + + signals = data.get('signals') + enable_live_preview = signals.get("omny_xray_gui_update_frame_acq").get('value') + enable_x_motor = signals.get("omny_xray_gui_enable_mv_x").get('value') + enable_y_motor = signals.get("omny_xray_gui_enable_mv_y").get('value') + self.on_live_view_enabled(bool(enable_live_preview)) + self.on_motors_enable(bool(enable_x_motor),bool(enable_y_motor)) + + + print(f"signals: {signals}") + print(f"data: {data}") + print(f"meta: {meta}") if __name__ == "__main__":