"""Builder for snapshot and storage actions section.""" from __future__ import annotations from PyQt6.QtWidgets import QGroupBox, QHBoxLayout, QLabel, QLineEdit, QPushButton, QSpinBox, QVBoxLayout def build_data_actions_group(owner) -> QGroupBox: """Create snapshot save controls section.""" group = QGroupBox("Data Actions") layout = QVBoxLayout(group) layout.setSpacing(8) save_row = QHBoxLayout() save_row.setSpacing(8) save_button = QPushButton("Save Numpy Snapshot") save_button.clicked.connect(owner._save_snapshot) owner._save_count = QSpinBox() owner._save_count.setMinimum(1) owner._save_count.setMaximum(10_000) owner._save_count.setValue(10) save_row.addWidget(save_button) save_row.addWidget(QLabel("Last N")) save_row.addWidget(owner._save_count) save_row.addStretch(1) layout.addLayout(save_row) path_row = QHBoxLayout() path_row.setSpacing(8) owner._save_path_input = QLineEdit(str(owner._project_root / "python_app/data/snapshots")) 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("snapshot_manual") name_row.addWidget(QLabel("Name")) name_row.addWidget(owner._save_name_input, stretch=1) layout.addLayout(name_row) return group