GUI: "safety" added to parameters panels so they cannot be updated unless you re in control of teh GUI
This commit is contained in:
@@ -3,6 +3,7 @@ from PySide6.QtWidgets import QWidget, QGridLayout, QLabel, QSizePolicy, QSpacer
|
||||
QComboBox, QSlider
|
||||
|
||||
from aaredaqlib.diffraction_geometry import DiffractionGeometry
|
||||
from aaredaqlib.models import DAQStatusModel
|
||||
from aaregui.panels.scan_settings_panel import ScanSettingsPanel
|
||||
from aaregui.scan_logic.raster_grid_manager import RasterGridManager, RasterGridMetric
|
||||
from aaregui.widgets.number_line_edit import NumberLineEdit
|
||||
@@ -141,6 +142,15 @@ class RasterDataCollectionPanel(ScanSettingsPanel):
|
||||
self.__n_y = n_y
|
||||
self.update_grid_scan_size()
|
||||
|
||||
@Slot(DAQStatusModel)
|
||||
def update_daq_status(self, s: DAQStatusModel):
|
||||
super().update_daq_status(s)
|
||||
can_edit = getattr(self, "_can_edit_params", False)
|
||||
for w in (self.width_enter, self.height_enter, self.image_time_enter):
|
||||
w.setReadOnly(not can_edit)
|
||||
w.setStyleSheet(
|
||||
"background-color: rgb(255, 255, 255);" if can_edit else "background-color: rgb(240, 240, 240);")
|
||||
|
||||
def update_grid_scan_size(self):
|
||||
self.width_enter.update_value(self.__size_x)
|
||||
self.height_enter.update_value(self.__size_y)
|
||||
|
||||
@@ -4,11 +4,13 @@ from PySide6.QtCore import Slot, Signal, Qt
|
||||
from PySide6.QtWidgets import QLabel, QComboBox, QPushButton
|
||||
|
||||
from aaredaqlib.diffraction_geometry import DiffractionGeometry
|
||||
from aaredaqlib.logger_config import setup_logger
|
||||
from aaredaqlib.models import DAQStatusModel
|
||||
from aaredaqlib.rotation_scan import RotationScanRequest
|
||||
from aaregui.panels.scan_settings_panel import ScanSettingsPanel
|
||||
from aaregui.widgets.number_line_edit import NumberLineEdit
|
||||
|
||||
logger = setup_logger("aareGUI")
|
||||
|
||||
def add_screening_to_path(path):
|
||||
p = Path(path)
|
||||
@@ -159,6 +161,31 @@ class RotationDataCollectionPanel(ScanSettingsPanel):
|
||||
def update_daq_status(self, s: DAQStatusModel):
|
||||
super().update_daq_status(s)
|
||||
self.__omega = s.geom.omega_deg
|
||||
|
||||
can_edit = getattr(self, "_can_edit_params", False)
|
||||
for w in (self.start_angle, self.screening_image_angle, self.screening_image_time_enter,
|
||||
self.total_angle, self.image_angle, self.image_time_enter):
|
||||
w.setReadOnly(not can_edit)
|
||||
w.setStyleSheet("background-color: rgb(255, 255, 255);" if can_edit else "background-color: rgb(240, 240, 240);")
|
||||
|
||||
|
||||
if s.sample is None:
|
||||
# Reset rotation-specific widgets to their defaults
|
||||
for w in (self.start_angle, self.screening_image_angle, self.screening_image_time_enter,
|
||||
self.total_angle, self.image_angle, self.image_time_enter):
|
||||
try:
|
||||
if hasattr(w, "saved_value"):
|
||||
w.saved_value = float("nan")
|
||||
# NumberLineEdit keeps its default in .default
|
||||
w.update_value(w.default if hasattr(w, "default") else 0.0)
|
||||
except Exception:
|
||||
logger.error(f"Failed to reset {w} to default.", exc_info=True)
|
||||
pass
|
||||
# Reset dose label
|
||||
self.__dose_mgy = 0
|
||||
self.dose.setText("0.0")
|
||||
return
|
||||
|
||||
lambda_a = s.diffraction.wavelength_angstrom
|
||||
kdose = 2000 / (lambda_a * lambda_a)
|
||||
beam_area = s.geom.beam_size_mm.x * s.geom.beam_size_mm.y * 1e6
|
||||
|
||||
Reference in New Issue
Block a user