GUI: Show grid size for raster scan

This commit is contained in:
2025-06-12 13:41:32 +02:00
parent c86cb10ee1
commit c234ac5cd3
3 changed files with 58 additions and 8 deletions
+1
View File
@@ -168,6 +168,7 @@ class MainWindow(QMainWindow):
self.tell_samples.unmount.connect(self.daq.unmount)
self.data_collection.raster.grid_size_updated.connect(self.raster.update_grid_size)
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)
self.status_bar.end_session.connect(self.daq.end_session)
self.status_bar.force_session.connect(self.daq.force_session)
@@ -1,4 +1,4 @@
from PySide6.QtCore import Signal, Slot
from PySide6.QtCore import Signal, Slot, Qt
from PySide6.QtWidgets import QWidget, QGridLayout, QLabel, QSizePolicy, QSpacerItem
from aaregui.widgets.number_line_edit import NumberLineEdit
@@ -9,6 +9,11 @@ class RasterDataCollectionPanel(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.__n_x = 0
self.__n_y = 0
self.__size_x = 20
self.__size_y = 20
grid_layout = QGridLayout(self)
grid_layout.addWidget(QLabel("High resolution", parent=self), 0, 0)
@@ -28,15 +33,15 @@ class RasterDataCollectionPanel(QWidget):
)
grid_layout.addWidget(self.transmission_enter, 2, 1,1,3)
grid_layout.addWidget(QLabel("Grid size", parent=self), 3, 0)
grid_layout.addWidget(QLabel("Grid element size", parent=self), 3, 0)
self.width_enter = NumberLineEdit(5, 100, decimals=0, default=20, parent=self)
self.width_enter = NumberLineEdit(5, 100, decimals=0, default=self.__size_x, parent=self)
self.width_enter.newValue.connect(self.grid_size)
grid_layout.addWidget(self.width_enter, 3, 1)
grid_layout.addWidget(QLabel(" x ", parent=self), 3, 2)
self.height_enter = NumberLineEdit(5, 100, decimals=0, default=20, parent=self)
self.height_enter = NumberLineEdit(5, 100, decimals=0, default=self.__size_y, parent=self)
self.height_enter.newValue.connect(self.grid_size)
grid_layout.addWidget(self.height_enter, 3, 3)
@@ -49,13 +54,52 @@ class RasterDataCollectionPanel(QWidget):
grid_layout.addWidget(self.image_time_enter, 4, 1, 1, 3)
grid_layout.addWidget(QLabel("s", parent=self), 4, 4)
grid_layout.addWidget(QLabel("Grid elements", parent=self), 5, 0)
self.n_x_label = QLabel("-", parent=self)
self.n_x_label.setAlignment(Qt.AlignmentFlag.AlignRight)
grid_layout.addWidget(self.n_x_label, 5, 1)
grid_layout.addWidget(QLabel(" x ", parent=self), 5, 2)
self.n_y_label = QLabel("-", parent=self)
self.n_y_label.setAlignment(Qt.AlignmentFlag.AlignRight)
grid_layout.addWidget(self.n_y_label, 5, 3)
grid_layout.addWidget(QLabel("Grid size", parent=self), 6, 0)
self.size_x_label = QLabel("-", parent=self)
self.size_x_label.setAlignment(Qt.AlignmentFlag.AlignRight)
grid_layout.addWidget(self.size_x_label, 6, 1)
grid_layout.addWidget(QLabel(" x ", parent=self), 6, 2)
self.size_y_label = QLabel("-", parent=self)
self.size_y_label.setAlignment(Qt.AlignmentFlag.AlignRight)
grid_layout.addWidget(self.size_y_label, 6, 3)
grid_layout.addWidget(QLabel("μm", parent=self), 6, 4)
horizontal_spacer = QSpacerItem(
40, 20, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding
)
grid_layout.addItem(horizontal_spacer, 5, 0, 1, 4)
grid_layout.addItem(horizontal_spacer, 7, 0, 1, 4)
self.update_grid_scan_size()
@Slot(float)
def grid_size(self, _: float):
width = self.width_enter.value / 1000.0
height = self.height_enter.value / 1000.0
self.grid_size_updated.emit(width, height)
self.__size_x = self.width_enter.value
self.__size_y = self.height_enter.value
self.grid_size_updated.emit(self.__size_x / 1000.0,
self.__size_y / 1000.0)
self.update_grid_scan_size()
@Slot(int, int)
def grid_scan_size_change(self, n_x: int, n_y: int):
self.__n_x = n_x
self.__n_y = n_y
self.update_grid_scan_size()
def update_grid_scan_size(self):
self.n_x_label.setText(str(self.__n_x))
self.size_x_label.setText(f"{self.__size_x * self.__n_x:.1f}")
self.n_y_label.setText(str(self.__n_y))
self.size_y_label.setText(f"{self.__size_y * self.__n_y:.1f}")
@@ -59,6 +59,7 @@ def normalize_angle(angle_deg: float) -> float:
class RasterGridManager(QObject):
grid_updated = Signal()
grid_scan = Signal(RasterGridRequest)
grid_scan_size_changed = Signal(int, int)
def __init__(self, geom):
super().__init__()
@@ -120,6 +121,7 @@ class RasterGridManager(QObject):
)
self.__active_grid.omega_deg = self.__geom.omega_deg
self.grid_scan_size_changed.emit(self.__active_grid.n_x, self.__active_grid.n_y)
def move_active_grid(self, delta: QPointF):
if not self._is_grid_visible(self.__active_grid):
@@ -138,6 +140,7 @@ class RasterGridManager(QObject):
def clear_active_grid(self):
self.__active_grid.n_x = 0
self.__active_grid.n_y = 0
self.grid_scan_size_changed.emit(self.__active_grid.n_x, self.__active_grid.n_y)
def is_part_of_active_grid(self, point: QPointF) -> bool:
if not self._is_grid_visible(self.__active_grid):
@@ -163,6 +166,8 @@ class RasterGridManager(QObject):
self.__active_grid.grid_size_mm = Coordinate(x=grid_size_mm_x, y=grid_size_mm_y)
self.grid_scan_size_changed.emit(self.__active_grid.n_x, self.__active_grid.n_y)
@Slot()
def run_grid_scan(self):
self.grid_scan.emit(self.__active_grid)