71 lines
2.8 KiB
Python
71 lines
2.8 KiB
Python
"""Builder for switch timing and combo-selection settings section."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from PyQt6.QtWidgets import (
|
|
QButtonGroup,
|
|
QFormLayout,
|
|
QGroupBox,
|
|
QHBoxLayout,
|
|
QLabel,
|
|
QLineEdit,
|
|
QPushButton,
|
|
QVBoxLayout,
|
|
)
|
|
|
|
def build_switch_group(owner) -> QGroupBox:
|
|
"""Create switch timing field and two explicit combo-selection modes."""
|
|
group = QGroupBox("Switches")
|
|
layout = QVBoxLayout(group)
|
|
layout.setSpacing(8)
|
|
|
|
switch_defaults = owner._gui_defaults.switches
|
|
|
|
global_form = QFormLayout()
|
|
global_form.setFieldGrowthPolicy(QFormLayout.FieldGrowthPolicy.AllNonFixedFieldsGrow)
|
|
owner._settling_ms = QLineEdit(str(owner._defaults_config.runtime.settling_ms))
|
|
global_form.addRow("Settling ms", owner._settling_ms)
|
|
layout.addLayout(global_form)
|
|
|
|
owner._combos_text = QLineEdit(str(switch_defaults.combos_text))
|
|
owner._combos_text.setPlaceholderText("empty = full matrix, or input:output,input:output")
|
|
owner._run_combos_select_button = QPushButton("Select")
|
|
owner._run_combos_select_button.setCheckable(True)
|
|
|
|
combos_row = QHBoxLayout()
|
|
combos_row.setSpacing(8)
|
|
combos_row.addWidget(QLabel("Run combos"))
|
|
combos_row.addWidget(owner._combos_text, stretch=1)
|
|
combos_row.addWidget(owner._run_combos_select_button)
|
|
layout.addLayout(combos_row)
|
|
|
|
owner._single_combo_output = QLineEdit(str(switch_defaults.single_output))
|
|
owner._single_combo_output.setPlaceholderText("0")
|
|
owner._single_combo_input = QLineEdit(str(switch_defaults.single_input))
|
|
owner._single_combo_input.setPlaceholderText("0")
|
|
owner._single_combo_select_button = QPushButton("Select")
|
|
owner._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(owner._single_combo_input)
|
|
single_row.addWidget(QLabel("Output"))
|
|
single_row.addWidget(owner._single_combo_output)
|
|
single_row.addWidget(owner._single_combo_select_button)
|
|
layout.addLayout(single_row)
|
|
|
|
owner._combo_select_group = QButtonGroup(group)
|
|
owner._combo_select_group.setExclusive(True)
|
|
owner._combo_select_group.addButton(owner._run_combos_select_button)
|
|
owner._combo_select_group.addButton(owner._single_combo_select_button)
|
|
|
|
owner._run_combos_select_button.clicked.connect(lambda: owner._set_combo_selection_mode("text"))
|
|
owner._single_combo_select_button.clicked.connect(lambda: owner._set_combo_selection_mode("single"))
|
|
owner._single_combo_output.editingFinished.connect(owner._on_processing_live_settings_changed)
|
|
owner._single_combo_input.editingFinished.connect(owner._on_processing_live_settings_changed)
|
|
owner._set_combo_selection_mode(str(switch_defaults.combo_mode))
|
|
|
|
return group
|