GUI: Screening data collection tab - work in progress
Build and Publish / build (push) Successful in 22s

This commit is contained in:
2025-06-12 21:48:31 +02:00
parent 3225c63da0
commit 1915b73508
3 changed files with 42 additions and 34 deletions
+12 -1
View File
@@ -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)
@@ -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)
@@ -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("<B>Screening</B>", 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("<B>Measurement</B>", 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)