diff --git a/src/aare/gui/panels/samcam_panel.py b/src/aare/gui/panels/samcam_panel.py index 174f911d..d08a1df1 100644 --- a/src/aare/gui/panels/samcam_panel.py +++ b/src/aare/gui/panels/samcam_panel.py @@ -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: