samcam GUI: added screenshot butotn and controls
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user