98 lines
3.8 KiB
Python
98 lines
3.8 KiB
Python
"""Builder for snapshot and storage actions section."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from PyQt6.QtWidgets import (
|
|
QGridLayout,
|
|
QGroupBox,
|
|
QHBoxLayout,
|
|
QLabel,
|
|
QLineEdit,
|
|
QPushButton,
|
|
QSizePolicy,
|
|
QSpinBox,
|
|
QVBoxLayout,
|
|
)
|
|
|
|
|
|
def build_data_actions_group(owner) -> QGroupBox:
|
|
"""Create snapshot save controls section."""
|
|
group = QGroupBox("Data Actions")
|
|
layout = QVBoxLayout(group)
|
|
layout.setSpacing(8)
|
|
data_defaults = owner._gui_defaults.data_actions
|
|
|
|
save_button = QPushButton("Save Dataset")
|
|
save_button.clicked.connect(owner._save_snapshot)
|
|
save_button.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed)
|
|
save_vna_json_button = QPushButton("Save S21 JSON")
|
|
save_vna_json_button.setToolTip(
|
|
"Export one S21 VNA-history JSON per combo from the preprocessed stage (S11 is not included)."
|
|
)
|
|
save_vna_json_button.clicked.connect(owner._save_vna_history_json)
|
|
save_vna_json_button.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed)
|
|
remove_last_button = QPushButton("Remove Last Measurement")
|
|
remove_last_button.clicked.connect(owner._remove_last_runtime_history)
|
|
remove_last_button.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed)
|
|
capture_tmp_reference_button = QPushButton("Capture Tmp Reference")
|
|
capture_tmp_reference_button.clicked.connect(owner._capture_tmp_reference)
|
|
capture_tmp_reference_button.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed)
|
|
record_button = QPushButton("Start + Record to Disk")
|
|
record_button.setToolTip(
|
|
"Start the run (if stopped) and save the next N measurements to the path/name below."
|
|
)
|
|
record_button.clicked.connect(owner._start_run_with_recording)
|
|
record_button.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed)
|
|
owner._save_count = QSpinBox()
|
|
owner._save_count.setMinimum(1)
|
|
owner._save_count.setMaximum(10_000)
|
|
owner._save_count.setValue(int(data_defaults.save_count))
|
|
owner._record_count = QSpinBox()
|
|
owner._record_count.setMinimum(1)
|
|
owner._record_count.setMaximum(1_000_000)
|
|
owner._record_count.setValue(int(data_defaults.record_count))
|
|
|
|
button_grid = QGridLayout()
|
|
button_grid.setHorizontalSpacing(8)
|
|
button_grid.setVerticalSpacing(8)
|
|
button_grid.addWidget(save_button, 0, 0)
|
|
button_grid.addWidget(save_vna_json_button, 0, 1)
|
|
button_grid.addWidget(remove_last_button, 1, 0)
|
|
button_grid.addWidget(capture_tmp_reference_button, 1, 1)
|
|
button_grid.addWidget(record_button, 2, 0, 1, 2)
|
|
button_grid.setColumnStretch(0, 1)
|
|
button_grid.setColumnStretch(1, 1)
|
|
layout.addLayout(button_grid)
|
|
|
|
count_row = QHBoxLayout()
|
|
count_row.setSpacing(8)
|
|
count_row.addWidget(QLabel("Number of Measurements to Save"))
|
|
count_row.addWidget(owner._save_count)
|
|
count_row.addStretch(1)
|
|
layout.addLayout(count_row)
|
|
|
|
record_count_row = QHBoxLayout()
|
|
record_count_row.setSpacing(8)
|
|
record_count_row.addWidget(QLabel("Number of Sweeps to Record"))
|
|
record_count_row.addWidget(owner._record_count)
|
|
record_count_row.addStretch(1)
|
|
layout.addLayout(record_count_row)
|
|
|
|
path_row = QHBoxLayout()
|
|
path_row.setSpacing(8)
|
|
owner._save_path_input = QLineEdit(str(data_defaults.save_path))
|
|
browse_button = QPushButton("Browse")
|
|
browse_button.clicked.connect(owner._browse_save_path)
|
|
path_row.addWidget(QLabel("Path"))
|
|
path_row.addWidget(owner._save_path_input, stretch=1)
|
|
path_row.addWidget(browse_button)
|
|
layout.addLayout(path_row)
|
|
|
|
name_row = QHBoxLayout()
|
|
name_row.setSpacing(8)
|
|
owner._save_name_input = QLineEdit(str(data_defaults.save_name))
|
|
name_row.addWidget(QLabel("Name"))
|
|
name_row.addWidget(owner._save_name_input, stretch=1)
|
|
layout.addLayout(name_row)
|
|
return group
|