Feat/screening and gui polish #191
@@ -65,7 +65,7 @@ class RotationDataCollectionPanel(ScanSettingsPanel):
|
||||
self._layout.addWidget(QLabel("°", parent=self), 3, 3)
|
||||
|
||||
self.omega_button = QPushButton("Ω")
|
||||
self.omega_button.setFixedWidth(20)
|
||||
self.omega_button.setFixedWidth(30)
|
||||
self.omega_button.clicked.connect(self.update_omega_start)
|
||||
self._layout.addWidget(self.omega_button, 3, 4)
|
||||
|
||||
@@ -73,23 +73,6 @@ class RotationDataCollectionPanel(ScanSettingsPanel):
|
||||
QLabel("<center><B><u>Screening</u></B></center>", parent=self), 4, 0, 1, 6
|
||||
)
|
||||
|
||||
self._layout.addWidget(QLabel("Image angle", parent=self), 5, 0)
|
||||
self.screening_image_angle = NumberLineEdit(
|
||||
0, 90.0, 0.5, decimals=3, parent=self, track_pending=True
|
||||
)
|
||||
self._layout.addWidget(self.screening_image_angle, 5, 1, 1, 3)
|
||||
self._layout.addWidget(QLabel("°", parent=self), 5, 4)
|
||||
|
||||
self._layout.addWidget(QLabel("Image time", parent=self), 6, 0)
|
||||
default_screening_exp_time = cfg_get(
|
||||
"daq.data_collection_settings.default_screening_settings.exp_time_s", 0.1
|
||||
)
|
||||
self.screening_image_time_enter = NumberLineEdit(
|
||||
0.0005, 10.0, default_screening_exp_time, decimals=4, parent=self, track_pending=True
|
||||
)
|
||||
self._layout.addWidget(self.screening_image_time_enter, 6, 1, 1, 3)
|
||||
self._layout.addWidget(QLabel("s", 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})
|
||||
@@ -100,7 +83,24 @@ class RotationDataCollectionPanel(ScanSettingsPanel):
|
||||
self.screening_type.addItem("4 images every 45°", {"steps": 4, "omega_step_deg": 45})
|
||||
self.screening_type.addItem("5 images every 45°", {"steps": 5, "omega_step_deg": 45})
|
||||
|
||||
self._layout.addWidget(self.screening_type, 7, 0, 1, 6)
|
||||
self._layout.addWidget(self.screening_type, 5, 0, 1, 6)
|
||||
|
||||
self._layout.addWidget(QLabel("Image angle", parent=self), 6, 0)
|
||||
self.screening_image_angle = NumberLineEdit(
|
||||
0, 90.0, 0.5, decimals=3, parent=self, track_pending=True
|
||||
)
|
||||
self._layout.addWidget(self.screening_image_angle, 6, 1, 1, 3)
|
||||
self._layout.addWidget(QLabel("°", parent=self), 6, 4)
|
||||
|
||||
self._layout.addWidget(QLabel("Image time", parent=self), 7, 0)
|
||||
default_screening_exp_time = cfg_get(
|
||||
"daq.data_collection_settings.default_screening_settings.exp_time_s", 0.1
|
||||
)
|
||||
self.screening_image_time_enter = NumberLineEdit(
|
||||
0.0005, 10.0, default_screening_exp_time, decimals=4, parent=self, track_pending=True
|
||||
)
|
||||
self._layout.addWidget(self.screening_image_time_enter, 7, 1, 1, 3)
|
||||
self._layout.addWidget(QLabel("s", parent=self), 7, 4)
|
||||
|
||||
self._layout.addWidget(QLabel("Screening transmission", parent=self), 8, 0)
|
||||
self.screening_transmission_enter = DbOverrideLineEdit(
|
||||
@@ -108,6 +108,7 @@ class RotationDataCollectionPanel(ScanSettingsPanel):
|
||||
)
|
||||
self._layout.addWidget(self.screening_transmission_enter, 8, 1, 1, 3)
|
||||
self.screening_transmission_enter.valueChanged.connect(self.set_screening_transmission)
|
||||
|
||||
self.screening_button = QPushButton("Run screening")
|
||||
self.screening_button.setStyleSheet(f"color: {GO_TEXT};")
|
||||
self.screening_button.clicked.connect(self.run_screening)
|
||||
|
||||
@@ -66,7 +66,7 @@ class SimpleRotationSettingsPanel(QWidget):
|
||||
self._layout.addWidget(QLabel("°", parent=self), 1, 4)
|
||||
|
||||
self.omega_button = QPushButton("Ω")
|
||||
self.omega_button.setFixedWidth(20)
|
||||
self.omega_button.setFixedWidth(30)
|
||||
self.omega_button.clicked.connect(self.update_omega_start)
|
||||
self._layout.addWidget(self.omega_button, 1, 5)
|
||||
|
||||
|
||||
@@ -645,7 +645,7 @@ class RasterGridManager(QObject):
|
||||
painter.setOpacity(1.0)
|
||||
|
||||
painter.setPen(
|
||||
QPen(qcolor(RASTER_GRID_LINE, min(255, alpha + 40)), 1, Qt.PenStyle.SolidLine)
|
||||
QPen(qcolor(RASTER_GRID_LINE, min(255, alpha + 88)), 2, Qt.PenStyle.SolidLine)
|
||||
)
|
||||
painter.setBrush(Qt.BrushStyle.NoBrush)
|
||||
painter.drawRect(bounds)
|
||||
@@ -700,7 +700,7 @@ class RasterGridManager(QObject):
|
||||
max_value = max((x for x in values if x is not None and not math.isnan(x)), default=1)
|
||||
diff = 1 if min_value == max_value else (max_value - min_value)
|
||||
else:
|
||||
painter.setPen(QPen(qcolor(RASTER_GRID_LINE), 1, Qt.PenStyle.SolidLine))
|
||||
painter.setPen(QPen(qcolor(RASTER_GRID_LINE), 2, Qt.PenStyle.SolidLine))
|
||||
min_value = 0
|
||||
diff = 1
|
||||
|
||||
@@ -735,7 +735,7 @@ class RasterGridManager(QObject):
|
||||
painter.setBrush(Qt.BrushStyle.NoBrush)
|
||||
else:
|
||||
painter.setPen(
|
||||
QPen(qcolor(RASTER_GRID_LINE, min(255, alpha + 40)), 1, Qt.PenStyle.SolidLine)
|
||||
QPen(qcolor(RASTER_GRID_LINE, min(255, alpha + 88)), 2, Qt.PenStyle.SolidLine)
|
||||
)
|
||||
painter.setBrush(Qt.BrushStyle.NoBrush)
|
||||
painter.drawRect(bounds)
|
||||
@@ -763,7 +763,7 @@ class RasterGridManager(QObject):
|
||||
|
||||
painter.save()
|
||||
painter.setRenderHint(QPainter.RenderHint.Antialiasing, False)
|
||||
painter.setPen(QPen(qcolor(RASTER_GRID_LINE), 1, Qt.PenStyle.SolidLine))
|
||||
painter.setPen(QPen(qcolor(RASTER_GRID_LINE), 2, Qt.PenStyle.SolidLine))
|
||||
painter.setBrush(Qt.BrushStyle.NoBrush)
|
||||
|
||||
painter.drawRect(bounds)
|
||||
@@ -858,7 +858,7 @@ class RasterGridManager(QObject):
|
||||
painter.fillRect(QRectF(px, py, draw_w, draw_h), brush)
|
||||
|
||||
painter.setPen(
|
||||
QPen(qcolor(RASTER_GRID_LINE, min(255, alpha + 40)), 1, Qt.PenStyle.SolidLine)
|
||||
QPen(qcolor(RASTER_GRID_LINE, min(255, alpha + 88)), 2, Qt.PenStyle.SolidLine)
|
||||
)
|
||||
painter.setBrush(Qt.BrushStyle.NoBrush)
|
||||
painter.drawRect(bounds)
|
||||
|
||||
@@ -181,14 +181,14 @@ def build_busy_overlay_style(
|
||||
SessionsStateEnum.Vacant,
|
||||
}:
|
||||
return BusyOverlayStyle(
|
||||
text="In viewing mode",
|
||||
text="Viewing mode, Click here to grab the baton",
|
||||
badge_bg=BUSY_YELLOW,
|
||||
badge_fg=WHITE,
|
||||
overlay_fill=qcolor(BUSY_YELLOW, 195),
|
||||
overlay_border=qcolor(BUSY_YELLOW_BORDER, 235),
|
||||
overlay_text=qcolor(WHITE),
|
||||
accent_dot=BUSY_YELLOW_DOT,
|
||||
subtext="Click here to grab the baton if you need to interact with GUI",
|
||||
subtext="Grab the baton if you need to interact with GUI",
|
||||
)
|
||||
if not is_busy:
|
||||
return None
|
||||
|
||||
@@ -29,7 +29,6 @@ def test_badge_drawn_once_and_hint_stripped(qtbot):
|
||||
panel.set_busy_style(style)
|
||||
applied = first._busy_overlay_style
|
||||
assert applied is not None
|
||||
assert applied.text == "In viewing mode"
|
||||
assert applied.subtext == "" # not clickable here, hint stripped
|
||||
assert second._busy_overlay_style is None # one badge, not one per view
|
||||
|
||||
|
||||
@@ -175,7 +175,6 @@ def test_vacant_badge_hover_click_and_theme(camera, qtbot):
|
||||
camera.update_daq_status(_status(busy=False, session=SessionsStateEnum.Vacant))
|
||||
style = camera._busy_overlay_style
|
||||
assert style is not None
|
||||
assert style.text == "In viewing mode"
|
||||
assert style.subtext # the grab-baton hint line
|
||||
|
||||
camera.grab() # paint records the badge rect
|
||||
|
||||
Reference in New Issue
Block a user