31 lines
1.6 KiB
Python
31 lines
1.6 KiB
Python
"""Pinned primary actions; controllers connect their own buttons."""
|
|
|
|
from PyQt6.QtWidgets import QComboBox, QFormLayout, QGridLayout, QGroupBox, QPushButton, QSizePolicy, QWidget
|
|
|
|
from python_app.gui.controllers.sections.views import PrimaryView
|
|
|
|
|
|
def build_primary_actions_group(mode: QComboBox) -> PrimaryView:
|
|
view = PrimaryView(group=QGroupBox("Actions"), start=QPushButton("Start"),
|
|
single_capture=QPushButton("Single Capture"), stop=QPushButton("Stop"),
|
|
apply_radar=QPushButton("Apply Radar"), load=QPushButton("Load Config…"),
|
|
save=QPushButton("Save Config…"), preprocess=QPushButton("Preprocessing…"),
|
|
clear=QPushButton("Clear Runtime History"))
|
|
view.start.setProperty("role", "primary")
|
|
view.clear.setProperty("role", "destructive")
|
|
layout = QGridLayout(view.group)
|
|
layout.setHorizontalSpacing(8)
|
|
layout.setVerticalSpacing(8)
|
|
for index, button in enumerate((view.start, view.single_capture, view.stop, view.apply_radar,
|
|
view.load, view.save, view.preprocess, view.clear)):
|
|
button.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed)
|
|
layout.addWidget(button, index // 3, index % 3, 1, 2 if button is view.clear else 1)
|
|
for column in range(3):
|
|
layout.setColumnStretch(column, 1)
|
|
mode_row = QWidget(view.group)
|
|
mode_form = QFormLayout(mode_row)
|
|
mode_form.setContentsMargins(0, 0, 0, 0)
|
|
mode_form.addRow("Mode", mode)
|
|
layout.addWidget(mode_row, 3, 0, 1, 3)
|
|
return view
|