83 lines
3.3 KiB
Python
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)
|