From 3988c345c9408d19f6bf0716519f5a72b1da5809 Mon Sep 17 00:00:00 2001 From: Filip Leonarski Date: Fri, 13 Jun 2025 11:19:29 +0200 Subject: [PATCH] GUI: Data collection running works --- gui/src/aaregui/main_window.py | 12 +- .../panels/data_collection_settings.py | 83 +++-------- gui/src/aaregui/panels/helical_scan_panel.py | 133 ------------------ .../aaregui/panels/raster_data_collection.py | 13 +- .../panels/rotation_data_collection.py | 120 ++++++++++++++++ gui/src/aaregui/panels/scan_settings_panel.py | 2 +- .../panels/screening_data_collection.py | 55 -------- .../panels/standard_data_collection.py | 54 ------- gui/src/aaregui/threads/daq_worker.py | 1 + 9 files changed, 141 insertions(+), 332 deletions(-) delete mode 100644 gui/src/aaregui/panels/helical_scan_panel.py create mode 100644 gui/src/aaregui/panels/rotation_data_collection.py delete mode 100644 gui/src/aaregui/panels/screening_data_collection.py delete mode 100644 gui/src/aaregui/panels/standard_data_collection.py diff --git a/gui/src/aaregui/main_window.py b/gui/src/aaregui/main_window.py index 833cb892..16f4aac4 100644 --- a/gui/src/aaregui/main_window.py +++ b/gui/src/aaregui/main_window.py @@ -173,16 +173,8 @@ class MainWindow(QMainWindow): # ) # - self.data_collection.standard_data_collection.connect(self.daq.standard_scan) - - self.data_collection.helical.show_helical_start.connect(self.camera_image.show_helical_start) - self.data_collection.helical.show_helical_end.connect(self.camera_image.show_helical_end) - self.camera_image.autofocus.connect(self.daq.autofocus) - self.camera_image.set_helical_start.connect(self.data_collection.helical.set_start_point) - self.camera_image.set_helical_end.connect(self.data_collection.helical.set_end_point) - self.camera_image.evaluate_grid.connect(self.raster.run_grid_scan) self.data_collection.raster.evaluate_grid.connect(self.raster.run_grid_scan) @@ -201,10 +193,8 @@ class MainWindow(QMainWindow): self.data_collection.raster.transmission_updated.connect(self.raster.update_transmission) self.data_collection.raster.dtz_updated.connect(self.raster.update_dtz) - self.data_collection.file_path_panel.set_file_prefix(self.raster.update_filename) - self.raster.update_filename(self.data_collection.file_path_panel.filename) - self.raster.grid_scan.connect(self.daq.raster_scan) + self.data_collection.screening.rotation_scan.connect(self.daq.standard_scan) self.raster.grid_scan_size_changed.connect(self.data_collection.raster.grid_scan_size_change) self.status_bar.set_pgroup.connect(self.daq.set_pgroup) diff --git a/gui/src/aaregui/panels/data_collection_settings.py b/gui/src/aaregui/panels/data_collection_settings.py index 56e8e1a4..b919f938 100644 --- a/gui/src/aaregui/panels/data_collection_settings.py +++ b/gui/src/aaregui/panels/data_collection_settings.py @@ -14,10 +14,8 @@ from aaredaqlib.rotation_scan import RotationScanRequest from aaredaqlib.sample_geometry import SampleGeometryModel from aaregui.panels.file_path_panel import FilePathPanel -from aaregui.panels.helical_scan_panel import HelicalDataCollectionPanel from aaregui.panels.raster_data_collection import RasterDataCollectionPanel -from aaregui.panels.screening_data_collection import ScreeningDataCollectionPanel -from aaregui.panels.standard_data_collection import StandardDataCollectionPanel +from aaregui.panels.rotation_data_collection import RotationDataCollectionPanel from aaregui.scan_logic.raster_grid_manager import RasterGridManager from aaregui.widgets.title_label import TitleLabel @@ -36,81 +34,32 @@ class DataCollectionSettings(QFrame): self.setFrameShape(QFrame.Shape.StyledPanel) self.setFrameShadow(QFrame.Shadow.Raised) - self.grid_layout = QGridLayout(self) + v_layout = QVBoxLayout(self) self.file_path_panel = FilePathPanel(self) - self.grid_layout.addWidget(self.file_path_panel, 0, 0, 1, 2) + v_layout.addWidget(self.file_path_panel) - widget = QWidget(self) - v_layout = QVBoxLayout(widget) - widget.setLayout(v_layout) + v_layout.addWidget(TitleLabel("Grid scan")) - v_layout.addWidget(TitleLabel("Data collection settings")) + self.raster = RasterDataCollectionPanel(parent=self, raster_mgr=raster_mgr, diffraction=diffraction) - self.tab_widget = QTabWidget(parent=widget) + v_layout.addWidget(self.raster) - self.raster = RasterDataCollectionPanel(parent=self.tab_widget, raster_mgr=raster_mgr, - diffraction=diffraction) - self.tab_widget.addTab(self.raster, "Raster") + v_layout.addWidget(TitleLabel("Data collection")) - self.screening = ScreeningDataCollectionPanel(parent=self.tab_widget, - diffraction=diffraction,) - self.tab_widget.addTab(self.screening, "Screening") + self.screening = RotationDataCollectionPanel(parent=self, diffraction=diffraction) + v_layout.addWidget(self.screening) - self.standard = StandardDataCollectionPanel(parent=self.tab_widget) - self.tab_widget.addTab(self.standard, "Standard") - - self.helical = HelicalDataCollectionPanel(s=s, parent=self.tab_widget) - self.tab_widget.addTab(self.helical, "Helical") - - v_layout.addWidget(self.tab_widget) v_layout.addStretch() - self.grid_layout.addWidget(widget, 1, 0, 1, 2) - def run_data_collection(self): - current_tab = self.tab_widget.currentWidget() + self.abort_button = QPushButton("Abort measurement", parent=self) + self.abort_button.setStyleSheet("color: rgb(164, 0, 0);") + v_layout.addWidget(self.abort_button) - if current_tab == self.screening: - data = self.screening.screening_type.itemData( - self.screening.screening_type.currentIndex() - ) - - if data is None: - print("No screening type selected.") - return - - r = RotationScanRequest( - start_omega_deg=self.screening.start_angle.value, - exp_time_s=self.screening.image_time_enter.value, - incr_omega_deg=data["omega_step_deg"], - wedge_omega_deg=0.1, - steps=data["steps"], - screening=True - ) - self.standard_data_collection.emit(r) - elif current_tab == self.standard: - total_angle = self.standard.total_angle.value - image_angle = self.standard.image_angle.value - if total_angle <= 0 or total_angle < image_angle: - print("Total angle is not valid.") - return - - image_number = round(total_angle / image_angle) - - r = RotationScanRequest( - start_omega_deg=self.standard.start_angle.value, - incr_omega_deg=self.standard.image_angle.value, - steps=image_number, - exp_time_s=self.standard.image_time_enter.value, - ) - self.standard_data_collection.emit(r) - elif current_tab == self.helical: - r = self.helical.get_request() - if r is not None: - self.standard_data_collection.emit(r) - else: - print("No matching tab found.") + raster_mgr.update_filename(self.file_path_panel.filename) + self.screening.update_filename(self.file_path_panel.filename) + self.file_path_panel.path_updated.connect(raster_mgr.update_filename) + self.file_path_panel.path_updated.connect(self.screening.update_filename) @Slot(DAQStatusModel) def update_daq_status(self, s: DAQStatusModel): self.raster.update_daq_status(s) - self.helical.update_daq_status(s) diff --git a/gui/src/aaregui/panels/helical_scan_panel.py b/gui/src/aaregui/panels/helical_scan_panel.py deleted file mode 100644 index 39191773..00000000 --- a/gui/src/aaregui/panels/helical_scan_panel.py +++ /dev/null @@ -1,133 +0,0 @@ -from PySide6.QtCore import Signal, Slot -from PySide6.QtWidgets import ( - QWidget, - QGridLayout, - QLabel, - QSizePolicy, - QSpacerItem, - QPushButton, -) -from aaredaqlib.coordinate import SmargonCoordinate -from aaredaqlib.rotation_scan import RotationScanRequest -from aaredaqlib.models import DAQStatusModel -from aaredaqlib.sample_geometry import SampleGeometryModel - -from aaregui.widgets.number_line_edit import NumberLineEdit - - -class HelicalDataCollectionPanel(QWidget): - helical_scan = Signal(RotationScanRequest) - show_helical_start = Signal(SmargonCoordinate) - show_helical_end = Signal(SmargonCoordinate) - - def __init__(self, s: SampleGeometryModel, parent=None): - super().__init__(parent) - grid_layout = QGridLayout(self) - - self.__geom = s - self.__steps = 100 - - self.__image_time = 0.005 - self.__image_angle = 0.1 - self.__total_angle = 360.0 - - self.__start = SmargonCoordinate() - self.__end = SmargonCoordinate() - - grid_layout.addWidget(QLabel("High resolution", parent=self), 0, 0) - self.high_res_enter = NumberLineEdit( - 0.5, 10, decimals=2, default=2.0, parent=self - ) - grid_layout.addWidget(self.high_res_enter, 0, 1) - grid_layout.addWidget(QLabel("Å", parent=self), 0, 2) - - grid_layout.addWidget(QLabel("Detector distance", parent=self), 1, 0) - self.dtz_enter = NumberLineEdit(60, 1000, decimals=2, default=120, parent=self) - grid_layout.addWidget(self.dtz_enter, 1, 1) - grid_layout.addWidget(QLabel("mm", parent=self), 1, 2) - - grid_layout.addWidget(QLabel("Beam transmission", parent=self), 2, 0) - self.transmission_enter = NumberLineEdit( - 0, 1.0, decimals=4, default=1.0, parent=self - ) - grid_layout.addWidget(self.transmission_enter, 2, 1) - - grid_layout.addWidget(QLabel("Start angle", parent=self), 3, 0) - self.start_angle = NumberLineEdit(-720, 719.0, 0, decimals=3, parent=self) - grid_layout.addWidget(self.start_angle, 3, 1) - grid_layout.addWidget(QLabel("°", parent=self), 3, 2) - - grid_layout.addWidget(QLabel("Total angle", parent=self), 4, 0) - self.total_angle = NumberLineEdit( - 0, 999.0, self.__total_angle, decimals=3, parent=self - ) - grid_layout.addWidget(self.total_angle, 4, 1) - grid_layout.addWidget(QLabel("°", parent=self), 4, 2) - - grid_layout.addWidget(QLabel("Image angle", parent=self), 5, 0) - self.image_angle = NumberLineEdit( - 0, 10.0, self.__image_angle, decimals=3, parent=self - ) - grid_layout.addWidget(self.image_angle, 5, 1) - grid_layout.addWidget(QLabel("°", parent=self), 5, 2) - - grid_layout.addWidget(QLabel("Image time", parent=self), 6, 0) - self.image_time_enter = NumberLineEdit( - 0.0005, 10.0, self.__image_time, decimals=4, parent=self - ) - grid_layout.addWidget(self.image_time_enter, 6, 1) - grid_layout.addWidget(QLabel("s", parent=self), 6, 2) - - start_button = QPushButton("Save start point", parent=self) - start_button.clicked.connect(self.set_start_point_curr) - grid_layout.addWidget(start_button, 7, 0, 1, 3) - - end_button = QPushButton("Save end point", parent=self) - end_button.clicked.connect(self.set_end_point_curr) - grid_layout.addWidget(end_button, 8, 0, 1, 3) - - horizontal_spacer = QSpacerItem( - 40, 20, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding - ) - grid_layout.addItem(horizontal_spacer, 9, 0, 1, 3) - - @Slot(DAQStatusModel) - def update_daq_status(self, s: DAQStatusModel): - self.__geom = s.geom - - @Slot() - def set_end_point_curr(self): - self.set_end_point(self.__geom.smargon) - - @Slot() - def set_start_point_curr(self): - self.set_start_point(self.__geom.smargon) - - @Slot(SmargonCoordinate) - def set_start_point(self, s: SmargonCoordinate): - self.__start = s - if s.sh_mm is not None: - self.start_angle.update_value(self.__geom.omega_deg) - self.show_helical_start.emit(self.__start) - - @Slot(SmargonCoordinate) - def set_end_point(self, s: SmargonCoordinate): - self.__end = s - self.show_helical_end.emit(self.__end) - - - def get_request(self) -> RotationScanRequest | None: - if self.__start.sh_mm is None or self.__end.sh_mm is None: - return - - image_number = round(self.total_angle.value / self.image_angle.value) - - h = RotationScanRequest( - start=self.__start, - end=self.__end, - start_omega_deg=self.start_angle.value, - incr_omega_deg=self.image_angle.value, - exp_time_s=self.image_time_enter.value, - steps=image_number, - ) - return h diff --git a/gui/src/aaregui/panels/raster_data_collection.py b/gui/src/aaregui/panels/raster_data_collection.py index a0d29ac4..54af6a0c 100644 --- a/gui/src/aaregui/panels/raster_data_collection.py +++ b/gui/src/aaregui/panels/raster_data_collection.py @@ -77,19 +77,10 @@ class RasterDataCollectionPanel(ScanSettingsPanel): ) self._layout.addItem(horizontal_spacer, 7, 0, 1, 4) - button_layout = QHBoxLayout() - - self.start_button = QPushButton("Start") + self.start_button = QPushButton("Evaluate grid") self.start_button.setStyleSheet("color: rgb(78, 154, 6);") - button_layout.addWidget(self.start_button) self.start_button.clicked.connect(self.evaluate_grid) - - self.abort_button = QPushButton("Abort") - self.abort_button.setStyleSheet("color: rgb(164, 0, 0);") - button_layout.addWidget(self.abort_button) - - # Add the button layout to the main layout - self._layout.addLayout(button_layout, 8, 0, 1, 5) + self._layout.addWidget(self.start_button, 8, 0, 1, 5) self.update_grid_scan_size() diff --git a/gui/src/aaregui/panels/rotation_data_collection.py b/gui/src/aaregui/panels/rotation_data_collection.py new file mode 100644 index 00000000..bf6c8343 --- /dev/null +++ b/gui/src/aaregui/panels/rotation_data_collection.py @@ -0,0 +1,120 @@ +from PySide6.QtCore import Slot, Signal +from PySide6.QtWidgets import QLabel, QComboBox, QPushButton + +from aaredaqlib.diffraction_geometry import DiffractionGeometry +from aaredaqlib.rotation_scan import RotationScanRequest +from aaregui.panels.scan_settings_panel import ScanSettingsPanel +from aaregui.widgets.number_line_edit import NumberLineEdit + + +class RotationDataCollectionPanel(ScanSettingsPanel): + rotation_scan = Signal(RotationScanRequest) + + def __init__(self, diffraction: DiffractionGeometry, + default_dtz: float = 200.0, + default_transmission: float = 1.0, + parent=None): + super().__init__(parent=parent, + diffraction=diffraction, + default_dtz=default_dtz, + default_transmission=default_transmission) + + self._filename = "" + + self._layout.addWidget(QLabel("Start angle", parent=self), 3, 0) + self.start_angle = NumberLineEdit(-720, 720.0, 0.0, decimals=3, parent=self) + self._layout.addWidget(self.start_angle, 3, 1, 1, 3) + self._layout.addWidget(QLabel("°", parent=self), 3, 4) + + self._layout.addWidget(QLabel("
Screening
", parent=self), 4, 0, 1,5) + + self._layout.addWidget(QLabel("Image time", parent=self), 5, 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.screening_type = QComboBox(parent=self) + self.screening_type.addItem("1 image", {"steps": 1, "omega_step_deg": 0}) + self.screening_type.addItem("2 images every 90°", {"steps": 2, "omega_step_deg": 90}) + self.screening_type.addItem("4 images every 90°", {"steps": 4, "omega_step_deg": 90}) + self.screening_type.addItem("3 images every 60°", {"steps": 3, "omega_step_deg": 60}) + self.screening_type.addItem("2 images every 45°", {"steps": 2, "omega_step_deg": 45}) + self.screening_type.addItem("4 images every 45°", {"steps": 4, "omega_step_deg": 45}) + + self._layout.addWidget(self.screening_type, 7, 0, 1, 5) + + self.screening_button = QPushButton("Run screening") + self.screening_button.setStyleSheet("color: rgb(78, 154, 6);") + self.screening_button.clicked.connect(self.run_screening) + self._layout.addWidget(self.screening_button, 8, 0, 1, 5) + + self._layout.addWidget(QLabel("
Rotation
", parent=self), 9, 0, 1,5) + + self._layout.addWidget(QLabel("Total angle", parent=self), 10, 0) + self.total_angle = NumberLineEdit(0, 999.0, 180.0, decimals=3, parent=self) + self._layout.addWidget(self.total_angle, 10, 1, 1, 3) + self._layout.addWidget(QLabel("°", parent=self), 10, 4) + + self._layout.addWidget(QLabel("Image angle", parent=self), 11, 0) + self.image_angle = NumberLineEdit(0, 10.0, 0.1, decimals=3, parent=self) + self._layout.addWidget(self.image_angle, 11, 1, 1, 3) + self._layout.addWidget(QLabel("°", parent=self), 11, 4) + + self._layout.addWidget(QLabel("Image time", parent=self), 12, 0) + self.image_time_enter = NumberLineEdit( + 0.0005, 10.0, 0.005, decimals=4, parent=self + ) + self._layout.addWidget(self.image_time_enter, 12, 1, 1, 3) + self._layout.addWidget(QLabel("s", parent=self), 12, 4) + + self.measurement_button = QPushButton("Run rotation") + self.measurement_button.setStyleSheet("color: rgb(78, 154, 6);") + self.measurement_button.clicked.connect(self.run_measurement) + self._layout.addWidget(self.measurement_button, 13, 0, 1, 5) + + @Slot() + def run_screening(self): + screening_settings = self.screening_type.currentData() + r = RotationScanRequest( + file_prefix=self._filename, + start_omega_deg=self.start_angle.value, + wedge_omega_deg=self.screening_image_angle.value, + incr_omega_deg=screening_settings["omega_step_deg"], + steps=screening_settings["steps"], + dtz=self._dtz, + transmission=self._transmission, + screening=True, + exp_time_s=self.screening_image_time_enter.value) + self.rotation_scan.emit(r) + + @Slot() + def run_measurement(self): + total_angle = self.total_angle.value + image_angle = self.image_angle.value + if total_angle <= 0 or total_angle < image_angle: + print("Total angle is not valid.") + return + + image_number = round(total_angle / image_angle) + + r = RotationScanRequest( + file_prefix=self._filename, + start_omega_deg=self.start_angle.value, + steps=image_number, + incr_omega_deg=self.image_angle.value, + dtz=self._dtz, + transmission=self._transmission, + screening=False, + exp_time_s=self.image_time_enter.value) + self.rotation_scan.emit(r) + + @Slot(str) + def update_filename(self, filename: str): + self._filename = filename \ No newline at end of file diff --git a/gui/src/aaregui/panels/scan_settings_panel.py b/gui/src/aaregui/panels/scan_settings_panel.py index 6a5ad851..0501b75c 100644 --- a/gui/src/aaregui/panels/scan_settings_panel.py +++ b/gui/src/aaregui/panels/scan_settings_panel.py @@ -1,5 +1,5 @@ from PySide6.QtCore import Slot, Signal -from PySide6.QtWidgets import QWidget, QGridLayout, QLabel +from PySide6.QtWidgets import QWidget, QGridLayout, QLabel, QFrame from aaredaqlib.diffraction_geometry import DiffractionGeometry from aaredaqlib.models import DAQStatusModel diff --git a/gui/src/aaregui/panels/screening_data_collection.py b/gui/src/aaregui/panels/screening_data_collection.py deleted file mode 100644 index d33a8dd9..00000000 --- a/gui/src/aaregui/panels/screening_data_collection.py +++ /dev/null @@ -1,55 +0,0 @@ -from PySide6.QtWidgets import ( - QWidget, - QGridLayout, - QLabel, - QComboBox, - QSizePolicy, - QSpacerItem, -) - -from aaredaqlib.diffraction_geometry import DiffractionGeometry -from aaregui.panels.scan_settings_panel import ScanSettingsPanel -from aaregui.widgets.number_line_edit import NumberLineEdit - - -class ScreeningDataCollectionPanel(ScanSettingsPanel): - def __init__(self, diffraction: DiffractionGeometry, - default_dtz: float = 200.0, - default_transmission: float = 1.0, - parent=None): - super().__init__(parent=parent, - diffraction=diffraction, - default_dtz=default_dtz, - default_transmission=default_transmission) - - self._layout.addWidget(QLabel("Start angle", parent=self), 3, 0) - self.start_angle = NumberLineEdit(-720, 720.0, 0.0, decimals=3, parent=self) - self._layout.addWidget(self.start_angle, 3, 1, 1, 3) - self._layout.addWidget(QLabel("°", parent=self), 3, 4) - - self._layout.addWidget(QLabel("Screening", parent=self), 4, 0, 1,5) - - self._layout.addWidget(QLabel("Image time", parent=self), 5, 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.screening_type = QComboBox(parent=self) - self.screening_type.addItem("1 image", {"steps": 1, "omega_step_deg": 0}) - self.screening_type.addItem("2 images every 90°", {"steps": 2, "omega_step_deg": 90}) - self.screening_type.addItem("4 images every 90°", {"steps": 4, "omega_step_deg": 90}) - self.screening_type.addItem("3 images every 60°", {"steps": 3, "omega_step_deg": 60}) - self.screening_type.addItem("2 images every 45°", {"steps": 2, "omega_step_deg": 45}) - self.screening_type.addItem("4 images every 45°", {"steps": 4, "omega_step_deg": 45}) - - self._layout.addWidget(self.screening_type, 6, 0, 1, 5) - - self._layout.addWidget(QLabel("Measurement", parent=self), 8, 0, 1, 5) - - - horizontal_spacer = QSpacerItem( - 40, 20, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding - ) - self._layout.addItem(horizontal_spacer, 9, 0, 1, 5) diff --git a/gui/src/aaregui/panels/standard_data_collection.py b/gui/src/aaregui/panels/standard_data_collection.py deleted file mode 100644 index 255aede7..00000000 --- a/gui/src/aaregui/panels/standard_data_collection.py +++ /dev/null @@ -1,54 +0,0 @@ -from PySide6.QtWidgets import QWidget, QGridLayout, QLabel, QSpacerItem, QSizePolicy - -from aaregui.widgets.number_line_edit import NumberLineEdit - - -class StandardDataCollectionPanel(QWidget): - def __init__(self, parent=None): - super().__init__(parent) - grid_layout = QGridLayout(self) - - grid_layout.addWidget(QLabel("High resolution", parent=self), 0, 0) - self.high_res_enter = NumberLineEdit( - 0.5, 10, decimals=2, default=2.0, parent=self - ) - grid_layout.addWidget(self.high_res_enter, 0, 1) - grid_layout.addWidget(QLabel("Å", parent=self), 0, 2) - grid_layout.addWidget(QLabel("Detector distance", parent=self), 1, 0) - self.dtz_enter = NumberLineEdit(60, 1000, decimals=2, default=120, parent=self) - grid_layout.addWidget(self.dtz_enter, 1, 1) - grid_layout.addWidget(QLabel("mm", parent=self), 1, 2) - - grid_layout.addWidget(QLabel("Beam transmission", parent=self), 2, 0) - self.transmission_enter = NumberLineEdit( - 0, 1.0, decimals=4, default=1.0, parent=self - ) - grid_layout.addWidget(self.transmission_enter, 2, 1) - - grid_layout.addWidget(QLabel("Start angle", parent=self), 3, 0) - self.start_angle = NumberLineEdit(-720, 720.0, 0.0, decimals=3, parent=self) - grid_layout.addWidget(self.start_angle, 3, 1) - grid_layout.addWidget(QLabel("°", parent=self), 3, 2) - - grid_layout.addWidget(QLabel("Total angle", parent=self), 4, 0) - self.total_angle = NumberLineEdit(0, 999.0, 180.0, decimals=3, parent=self) - grid_layout.addWidget(self.total_angle, 4, 1) - grid_layout.addWidget(QLabel("°", parent=self), 4, 2) - - grid_layout.addWidget(QLabel("Image angle", parent=self), 5, 0) - self.image_angle = NumberLineEdit(0, 10.0, 0.1, decimals=3, parent=self) - grid_layout.addWidget(self.image_angle, 5, 1) - grid_layout.addWidget(QLabel("°", parent=self), 5, 2) - - grid_layout.addWidget(QLabel("Image time", parent=self), 6, 0) - self.image_time_enter = NumberLineEdit( - 0.0005, 10.0, 0.005, decimals=4, parent=self - ) - grid_layout.addWidget(self.image_time_enter, 6, 1) - grid_layout.addWidget(QLabel("s", parent=self), 6, 2) - - - horizontal_spacer = QSpacerItem( - 40, 20, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding - ) - grid_layout.addItem(horizontal_spacer, 7, 0, 1, 3) diff --git a/gui/src/aaregui/threads/daq_worker.py b/gui/src/aaregui/threads/daq_worker.py index 1529e6ee..5629bfaa 100644 --- a/gui/src/aaregui/threads/daq_worker.py +++ b/gui/src/aaregui/threads/daq_worker.py @@ -183,6 +183,7 @@ class DAQWorker(QObject): @Slot(RotationScanRequest) def standard_scan(self, r: RotationScanRequest): + self.run_number_incremented.emit() self.generic_post("scan/rotation", r.model_dump_json()) @Slot(RasterGridRequest)