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 2ba48e7..54d99c4 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 @@ -21,6 +21,7 @@ from qtpy.QtWidgets import ( QToolButton, QVBoxLayout, QWidget, + QTextEdit ) logger = bec_logger.logger @@ -137,6 +138,7 @@ class XRayEye(BECWidget, QWidget): # Connection to redis endpoints self.bec_dispatcher.connect_slot(self.device_updates, MessageEndpoints.device_readback("omny_xray_gui")) + # self.bec_dispatcher.connect_slot(self.camera_running,MessageEndpoints.device_preview(CAMERA[0],CAMERA[1])) #TODO put better way how to sync property of device self.connect_motors() self.resize(800, 600) QTimer.singleShot(0, self._init_gui_trigger) @@ -147,6 +149,7 @@ class XRayEye(BECWidget, QWidget): self.image = Image(parent=self) self.image.enable_toolbar = False # Disable default toolbar to not allow to user set anything self.image.inner_axes = False # Disable inner axes to maximize image area + self.image.enable_full_colorbar = True self.image.plot_item.vb.invertY(True) # #TODO Invert y axis to match logic of LabView GUI # Control panel on the right: vertical layout inside a fixed-width widget @@ -170,6 +173,24 @@ class XRayEye(BECWidget, QWidget): header_row.addWidget(self.live_preview_toggle, 0, Qt.AlignVCenter) self.control_panel_layout.addLayout(header_row) + switch_row = QHBoxLayout() + switch_row.setContentsMargins(0, 0, 0, 0) + switch_row.setSpacing(8) + switch_row.addStretch() + self.camera_running_label = QLabel("Camera running", parent=self) + self.camera_running_toggle = ToggleSwitch(parent=self) + self.camera_running_toggle.checked = False + self.camera_running_toggle.enabled.connect(self.camera_running_enabled) + self.shutter_label = QLabel("Shutter open", parent=self) + self.shutter_toggle = ToggleSwitch(parent=self) + self.shutter_toggle.checked = False + switch_row.addWidget(self.shutter_label, 0, Qt.AlignVCenter) + switch_row.addWidget(self.shutter_toggle, 0, Qt.AlignVCenter) + switch_row.addWidget(self.camera_running_label, 0, Qt.AlignVCenter) + switch_row.addWidget(self.camera_running_toggle, 0, Qt.AlignVCenter) + self.control_panel_layout.addLayout(switch_row) + + # separator self.control_panel_layout.addWidget(self._create_separator()) @@ -207,7 +228,8 @@ class XRayEye(BECWidget, QWidget): self.sample_name_line_edit.setReadOnly(True) form.addWidget(QLabel("Sample", parent=self), 0, 0) form.addWidget(self.sample_name_line_edit, 0, 1) - self.message_line_edit = QLineEdit(parent=self) + self.message_line_edit = QTextEdit(parent=self) + self.message_line_edit.setFixedHeight(60) self.message_line_edit.setReadOnly(True) form.addWidget(QLabel("Message", parent=self), 1, 0) form.addWidget(self.message_line_edit, 1, 1) @@ -315,6 +337,18 @@ class XRayEye(BECWidget, QWidget): self.live_preview_toggle.checked = enabled self.live_preview_toggle.blockSignals(False) + @SafeSlot(bool) + def camera_running_enabled(self, enabled: bool): + logger.info(f"Camera running: {enabled}") + self.camera_running_toggle.blockSignals(True) + self.dev.get(CAMERA[0]).live_mode = enabled + self.camera_running_toggle.checked = enabled + self.camera_running_toggle.blockSignals(False) + + @SafeSlot(dict,dict) + def camera_running(self,data,meta): + ... + @SafeSlot(bool, bool) def on_motors_enable(self, x_enable: bool, y_enable: bool): """