From ab0b8650663bd572d034a13c14b446f4d5cec590 Mon Sep 17 00:00:00 2001 From: Filip Leonarski Date: Fri, 13 Jun 2025 11:42:01 +0200 Subject: [PATCH] GUI/DAQ: Refactor beam center and beam mark handling, update screening UI --- gui/src/aaregui/main_window.py | 5 +++-- gui/src/aaregui/panels/beam_center_panel.py | 3 +++ .../aaregui/panels/rotation_data_collection.py | 16 ++++++++-------- gui/src/aaregui/threads/daq_worker.py | 12 ++++++++---- 4 files changed, 22 insertions(+), 14 deletions(-) diff --git a/gui/src/aaregui/main_window.py b/gui/src/aaregui/main_window.py index 47fdae4f..5f8b320c 100644 --- a/gui/src/aaregui/main_window.py +++ b/gui/src/aaregui/main_window.py @@ -154,8 +154,9 @@ class MainWindow(QMainWindow): self.beamline.abr_tweak.abr_tweak.connect(self.daq.abr_tweak) self.beamline.abr_tweak.abr_save.connect(self.daq.abr_save) - self.beamline.beam_mark.beam_mark_clear.connect(self.daq.beam_center_clear) - self.camera_image.update_beam_center.connect(self.daq.beam_center_mark) + self.beamline.beam_mark.beam_mark_clear.connect(self.daq.beam_mark_clear) + self.camera_image.update_beam_center.connect(self.daq.beam_mark_add) + self.beamline.beam_center.beam_center.connect(self.daq.beam_center) if zmq_addr is not None: self.camera_thread = SampleCameraThread(zmq_url=zmq_addr) diff --git a/gui/src/aaregui/panels/beam_center_panel.py b/gui/src/aaregui/panels/beam_center_panel.py index 843d61b7..43cab0e5 100644 --- a/gui/src/aaregui/panels/beam_center_panel.py +++ b/gui/src/aaregui/panels/beam_center_panel.py @@ -17,7 +17,10 @@ class BeamCenterWidget(QWidget): grid_layout.addWidget(TitleLabel("Beam center", self), 0, 0, 1, 5) self.x = NumberLineEdit(-4000, 4000, 0, parent=self) + self.x.newValue.connect(self.beam_center_edited) + self.y = NumberLineEdit(-4000, 4000, 0, parent=self) + self.y.newValue.connect(self.beam_center_edited) grid_layout.addWidget(QLabel("x:"), 1, 0) grid_layout.addWidget(self.x, 1, 1) diff --git a/gui/src/aaregui/panels/rotation_data_collection.py b/gui/src/aaregui/panels/rotation_data_collection.py index bf6c8343..5c712bc0 100644 --- a/gui/src/aaregui/panels/rotation_data_collection.py +++ b/gui/src/aaregui/panels/rotation_data_collection.py @@ -28,17 +28,17 @@ class RotationDataCollectionPanel(ScanSettingsPanel): self._layout.addWidget(QLabel("
Screening
", parent=self), 4, 0, 1,5) - self._layout.addWidget(QLabel("Image time", parent=self), 5, 0) + self._layout.addWidget(QLabel("Image angle", parent=self), 5, 0) + self.screening_image_angle = NumberLineEdit(0, 10.0, 0.5, decimals=3, parent=self) + self._layout.addWidget(self.screening_image_angle, 5, 1, 1, 3) + self._layout.addWidget(QLabel("°", parent=self), 5, 4) + + self._layout.addWidget(QLabel("Image time", parent=self), 6, 0) self.screening_image_time_enter = NumberLineEdit( 0.0005, 10.0, 0.005, decimals=4, parent=self ) - self._layout.addWidget(self.screening_image_time_enter, 5, 1, 1, 3) - self._layout.addWidget(QLabel("s", parent=self), 5, 4) - - self._layout.addWidget(QLabel("Image angle", parent=self), 6, 0) - self.screening_image_angle = NumberLineEdit(0, 10.0, 0.5, decimals=3, parent=self) - self._layout.addWidget(self.screening_image_angle, 6, 1, 1, 3) - self._layout.addWidget(QLabel("°", parent=self), 6, 4) + self._layout.addWidget(self.screening_image_time_enter, 6, 1, 1, 3) + self._layout.addWidget(QLabel("s", parent=self), 6, 4) self.screening_type = QComboBox(parent=self) self.screening_type.addItem("1 image", {"steps": 1, "omega_step_deg": 0}) diff --git a/gui/src/aaregui/threads/daq_worker.py b/gui/src/aaregui/threads/daq_worker.py index 5629bfaa..89005760 100644 --- a/gui/src/aaregui/threads/daq_worker.py +++ b/gui/src/aaregui/threads/daq_worker.py @@ -239,12 +239,16 @@ class DAQWorker(QObject): self.generic_post("beamline/save_abr_meas_pos") @Slot(float, float) - def beam_center_mark(self, x: float, y: float): - self.generic_post(f"beam_center/mark?x={x}&y={y}") + def beam_mark_add(self, x: float, y: float): + self.generic_post(f"beam_mark/add?x={x}&y={y}") @Slot() - def beam_center_clear(self): - self.generic_post(f"beam_center/clear") + def beam_mark_clear(self): + self.generic_post(f"beam_mark/clear") + + @Slot(float, float) + def beam_center(self, x: float, y: float): + self.generic_post(f"beamline/beam_center?x={x}&y={y}") @Slot() def unmount(self):