From 445403fdc61f4e65736dc65a959f119fc096f4c0 Mon Sep 17 00:00:00 2001 From: Christian Kolset Date: Wed, 22 Apr 2026 13:05:05 -0600 Subject: Removed calibration feature in signal processing > pipeline. --- ui/control_editor.py | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) (limited to 'ui/control_editor.py') diff --git a/ui/control_editor.py b/ui/control_editor.py index 901d6f8..c582e6b 100644 --- a/ui/control_editor.py +++ b/ui/control_editor.py @@ -17,10 +17,20 @@ from PyQt6.QtWidgets import ( QDialog, QVBoxLayout, QHBoxLayout, QFormLayout, QLabel, QLineEdit, QComboBox, QDoubleSpinBox, QSpinBox, QPushButton, QGroupBox, QWidget, - QStackedWidget, QFrame, QCheckBox, + QStackedWidget, QFrame, QCheckBox, QSizePolicy, ) from PyQt6.QtCore import Qt + +class _DynStack(QStackedWidget): + """QStackedWidget that sizes to current page only.""" + def sizeHint(self): + w = self.currentWidget() + return w.sizeHint() if w else super().sizeHint() + def minimumSizeHint(self): + w = self.currentWidget() + return w.minimumSizeHint() if w else super().minimumSizeHint() + from devices.device_registry import DeviceRegistry @@ -219,10 +229,14 @@ class ControlEditorDialog(QDialog): # ── Type-specific params ──────────────────────────────────────── self._params_grp = QGroupBox("Parameters") + self._params_grp.setSizePolicy( + QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Minimum) params_lay = QVBoxLayout(self._params_grp) params_lay.setContentsMargins(10, 16, 10, 10) - self._stack = QStackedWidget() + self._stack = _DynStack() + self._stack.setSizePolicy( + QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Minimum) self._param_panels: Dict[str, QWidget] = {} for name, cls in _PARAM_PANELS.items(): panel = cls() @@ -230,6 +244,7 @@ class ControlEditorDialog(QDialog): self._stack.addWidget(panel) params_lay.addWidget(self._stack) root.addWidget(self._params_grp) + root.addStretch() # ── Buttons ──────────────────────────────────────────────────── div = QFrame(); div.setFrameShape(QFrame.Shape.HLine) @@ -258,7 +273,14 @@ class ControlEditorDialog(QDialog): # Channel (populated after device selection) self._on_dev_changed() - self._ch_cb.setCurrentText(self.spec.channel_id) + found = False + for i in range(self._ch_cb.count()): + if self._ch_cb.itemData(i) == self.spec.channel_id: + self._ch_cb.setCurrentIndex(i) + found = True + break + if not found: + self._ch_cb.setCurrentText(self.spec.channel_id) self._active_low_chk.setChecked(bool(self.spec.active_low)) # Params @@ -268,6 +290,8 @@ class ControlEditorDialog(QDialog): def _on_type_changed(self, type_name: str): idx = list(_PARAM_PANELS.keys()).index(type_name) self._stack.setCurrentIndex(idx) + self._stack.updateGeometry() + self._params_grp.updateGeometry() self._active_low_chk.setEnabled(type_name == "On/Off Switch") # Auto-set title if still default if not self._title_edit.text() or \ -- cgit v1.2.3