Files
2026-10-06 14:16:14 +03:00

83 lines
3.3 KiB
Python

"""Builder for switch timing and combo-selection settings section."""
from PyQt6.QtWidgets import (
QButtonGroup,
QComboBox,
QFormLayout,
QGroupBox,
QHBoxLayout,
QLabel,
QLineEdit,
QPushButton,
QVBoxLayout,
)
from python_app.gui.controllers.sections.views import SwitchView, SectionView
from python_app.models.gui_profile_schema import GuiStateModel
from python_app.models.run_config_schema import RunConfigModel
def build_switch_group(config: RunConfigModel, gui: GuiStateModel) -> SwitchView:
"""Create switch timing field and two explicit combo-selection modes."""
view = SectionView(QGroupBox("Switches"))
group = view.group
layout = QVBoxLayout(group)
layout.setSpacing(8)
switch_defaults = gui.switches
global_form = QFormLayout()
global_form.setFieldGrowthPolicy(QFormLayout.FieldGrowthPolicy.AllNonFixedFieldsGrow)
settling_ms = view.add("_settling_ms", QLineEdit(str(config.runtime.settling_ms)))
global_form.addRow("Settling (ms)", settling_ms)
layout.addLayout(global_form)
combos_text = view.add("_combos_text", QLineEdit(str(switch_defaults.combos_text)))
combos_text.setPlaceholderText("empty = full matrix, or input:output,input:output")
run_combos_select_button = QPushButton("Select")
run_combos_select_button.setCheckable(True)
combos_row = QHBoxLayout()
combos_row.setSpacing(8)
combos_row.addWidget(QLabel("Run combos"))
combos_row.addWidget(combos_text, stretch=1)
combos_row.addWidget(run_combos_select_button)
layout.addLayout(combos_row)
single_combo_output = view.add("_single_combo_output", QLineEdit(str(switch_defaults.single_output)))
single_combo_output.setPlaceholderText("0")
single_combo_input = view.add("_single_combo_input", QLineEdit(str(switch_defaults.single_input)))
single_combo_input.setPlaceholderText("0")
single_combo_select_button = QPushButton("Select")
single_combo_select_button.setCheckable(True)
single_row = QHBoxLayout()
single_row.setSpacing(8)
single_row.addWidget(QLabel("Single combo"))
single_row.addWidget(QLabel("Input"))
single_row.addWidget(single_combo_input)
single_row.addWidget(QLabel("Output"))
single_row.addWidget(single_combo_output)
single_row.addWidget(single_combo_select_button)
layout.addLayout(single_row)
combo_select_group = QButtonGroup(group)
combo_select_group.setExclusive(True)
combo_select_group.addButton(run_combos_select_button)
combo_select_group.addButton(single_combo_select_button)
display_row = QHBoxLayout()
display_row.addWidget(QLabel("B-scan pair"))
display_combo = view.add("_display_combo", QComboBox())
display_combo.setEnabled(False)
display_row.addWidget(display_combo, stretch=1)
next_combo_button = QPushButton("Next Combination")
next_combo_button.setEnabled(False)
display_row.addWidget(next_combo_button)
layout.addLayout(display_row)
return SwitchView(group=group, fields=view.fields, select_text=run_combos_select_button,
select_single=single_combo_select_button, combos=combos_text,
single_input=single_combo_input, single_output=single_combo_output,
display_combo=display_combo, next_combo=next_combo_button)