From 1915b735086bbaa89b6bf3061d24b0daea45fe30 Mon Sep 17 00:00:00 2001 From: Filip Leonarski Date: Thu, 12 Jun 2025 21:45:08 +0200 Subject: [PATCH] GUI: Screening data collection tab - work in progress --- gui/src/aaregui/main_window.py | 13 ++++- .../panels/data_collection_settings.py | 6 +- .../panels/screening_data_collection.py | 57 +++++++++---------- 3 files changed, 42 insertions(+), 34 deletions(-) diff --git a/gui/src/aaregui/main_window.py b/gui/src/aaregui/main_window.py index 7313a472..ba8ba34f 100644 --- a/gui/src/aaregui/main_window.py +++ b/gui/src/aaregui/main_window.py @@ -68,11 +68,22 @@ class MainWindow(QMainWindow): ) self.raster = RasterGridManager(geom=geom) + + collection_controls_scroll = NoWheelScrollArea(top_widget) + self.data_collection = DataCollectionSettings(s=geom, parent=top_widget, raster_mgr=self.raster, diffraction=diffraction) - top_widget_layout.addWidget(self.data_collection) + + + top_widget_layout.addWidget(collection_controls_scroll) + collection_controls_scroll.setWidget(self.data_collection) + collection_controls_scroll.setHorizontalScrollBarPolicy( + Qt.ScrollBarPolicy.ScrollBarAlwaysOff + ) + collection_controls_scroll.setFixedWidth(self.data_collection.set_width + 10) + self.camera_image = SampleCameraImageLabel(geom=geom, raster=self.raster, parent=top_widget, default_image=default_image) diff --git a/gui/src/aaregui/panels/data_collection_settings.py b/gui/src/aaregui/panels/data_collection_settings.py index d88acb70..56e8e1a4 100644 --- a/gui/src/aaregui/panels/data_collection_settings.py +++ b/gui/src/aaregui/panels/data_collection_settings.py @@ -24,6 +24,7 @@ from aaregui.widgets.title_label import TitleLabel class DataCollectionSettings(QFrame): standard_data_collection = Signal(RotationScanRequest) + set_width = 400 def __init__(self, s: SampleGeometryModel, @@ -31,7 +32,7 @@ class DataCollectionSettings(QFrame): diffraction: DiffractionGeometry, parent=None): super().__init__(parent) - self.setFixedWidth(400) + self.setFixedWidth(self.set_width) self.setFrameShape(QFrame.Shape.StyledPanel) self.setFrameShadow(QFrame.Shadow.Raised) @@ -51,7 +52,8 @@ class DataCollectionSettings(QFrame): diffraction=diffraction) self.tab_widget.addTab(self.raster, "Raster") - self.screening = ScreeningDataCollectionPanel(parent=self.tab_widget) + self.screening = ScreeningDataCollectionPanel(parent=self.tab_widget, + diffraction=diffraction,) self.tab_widget.addTab(self.screening, "Screening") self.standard = StandardDataCollectionPanel(parent=self.tab_widget) diff --git a/gui/src/aaregui/panels/screening_data_collection.py b/gui/src/aaregui/panels/screening_data_collection.py index a0a02fb1..d33a8dd9 100644 --- a/gui/src/aaregui/panels/screening_data_collection.py +++ b/gui/src/aaregui/panels/screening_data_collection.py @@ -7,42 +7,34 @@ from PySide6.QtWidgets import ( 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(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) +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) - grid_layout.addWidget(self.start_angle, 3, 1) - grid_layout.addWidget(QLabel("°", parent=self), 3, 2) + self._layout.addWidget(self.start_angle, 3, 1, 1, 3) + self._layout.addWidget(QLabel("°", parent=self), 3, 4) - grid_layout.addWidget(QLabel("Image time", parent=self), 4, 0) - self.image_time_enter = NumberLineEdit( + 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 ) - grid_layout.addWidget(self.image_time_enter, 4, 1) - grid_layout.addWidget(QLabel("s", parent=self), 4, 2) + 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}) @@ -52,9 +44,12 @@ class ScreeningDataCollectionPanel(QWidget): 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}) - grid_layout.addWidget(self.screening_type, 5, 0, 1, 3) + 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 ) - grid_layout.addItem(horizontal_spacer, 6, 0, 1, 3) + self._layout.addItem(horizontal_spacer, 9, 0, 1, 5)