samcam GUI: added screenshot butotn and controls

This commit is contained in:
2026-03-09 17:12:23 +01:00
parent 053bae75ba
commit 095347cb9d
+31 -1
View File
@@ -1,4 +1,5 @@
from PySide6.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QLabel, QDoubleSpinBox, QCheckBox
from PySide6.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QLabel, QDoubleSpinBox, QCheckBox, QLineEdit, \
QPushButton
from PySide6.QtCore import Signal, Slot
from aare.common.models import SampleCameraSettings, DAQStatusModel
@@ -9,6 +10,7 @@ class SamcamPanel(QWidget):
# Signals for when exposure or gain values change
changed = Signal(SampleCameraSettings)
show_detections_changed = Signal(bool)
screenshot_requested = Signal(str, str)
old_settings = SampleCameraSettings(gain=100, exposure=0.001)
def __init__(self, parent=None):
@@ -44,6 +46,25 @@ class SamcamPanel(QWidget):
gain_layout.addWidget(gain_label)
gain_layout.addWidget(self.gain_spinbox)
screenshot_filename_layout = QHBoxLayout()
screenshot_filename_label = QLabel("Filename:")
self.screenshot_filename_edit = QLineEdit()
self.screenshot_filename_edit.setPlaceholderText("optional")
self.screenshot_filename_edit.setStyleSheet("QLineEdit { background-color: white; }")
screenshot_filename_layout.addWidget(screenshot_filename_label)
screenshot_filename_layout.addWidget(self.screenshot_filename_edit)
screenshot_message_layout = QHBoxLayout()
screenshot_message_label = QLabel("Message:")
self.screenshot_message_edit = QLineEdit()
self.screenshot_message_edit.setPlaceholderText("optional")
self.screenshot_message_edit.setStyleSheet("QLineEdit { background-color: white; }")
screenshot_message_layout.addWidget(screenshot_message_label)
screenshot_message_layout.addWidget(self.screenshot_message_edit)
self.screenshot_button = QPushButton("Take screenshot")
self.screenshot_button.clicked.connect(self.__request_screenshot)
# Show detections checkbox
detections_layout = QHBoxLayout()
self.show_detections_checkbox = QCheckBox("Show ML detections")
@@ -54,6 +75,9 @@ class SamcamPanel(QWidget):
# Add controls to main layout
layout.addLayout(exposure_layout)
layout.addLayout(gain_layout)
layout.addLayout(screenshot_filename_layout)
layout.addLayout(screenshot_message_layout)
layout.addWidget(self.screenshot_button)
layout.addLayout(detections_layout)
self.setLayout(layout)
@@ -61,6 +85,12 @@ class SamcamPanel(QWidget):
self.changed.emit(SampleCameraSettings(gain=self.gain_spinbox.value(),
exposure=self.exposure_spinbox.value()))
def __request_screenshot(self):
self.screenshot_requested.emit(
self.screenshot_filename_edit.text(),
self.screenshot_message_edit.text(),
)
@Slot(DAQStatusModel)
def update_daq_status(self, s: DAQStatusModel):
if self.old_settings != s.bl.sample_camera: