diff options
| -rw-r--r-- | ui/windows/channels_window.py | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/ui/windows/channels_window.py b/ui/windows/channels_window.py index d2a9813..a90cff6 100644 --- a/ui/windows/channels_window.py +++ b/ui/windows/channels_window.py @@ -28,7 +28,7 @@ from PyQt6.QtWidgets import ( QToolButton, QSplitter, ) from PyQt6.QtCore import Qt, pyqtSignal -from PyQt6.QtGui import QCloseEvent +from PyQt6.QtGui import QCloseEvent, QFont, QFontMetrics from devices.device_registry import DeviceRegistry from core.signal_processor import ( @@ -612,9 +612,12 @@ class DerivedBlock(QFrame): self._src_cont = QWidget(); self._src_vlay = QVBoxLayout(self._src_cont) self._src_vlay.setContentsMargins(0,0,0,0); self._src_vlay.setSpacing(3) _is_deriv = self.dc.kind in ("derivative", "second_derivative") - src_init = [self.dc.sources[0]] if (_is_deriv and self.dc.sources) else self.dc.sources - for s in src_init: - self._add_src(s) + if _is_deriv: + # Always show exactly one y-source row + self._add_src(self.dc.sources[0] if self.dc.sources else None) + else: + for s in self.dc.sources: + self._add_src(s) self._add_src_btn = QPushButton("+ Add Source"); self._add_src_btn.setObjectName("addTraceBtn") self._add_src_btn.clicked.connect(lambda: self._add_src()) src_lay.addWidget(self._src_cont); src_lay.addWidget(self._add_src_btn) @@ -651,6 +654,9 @@ class DerivedBlock(QFrame): code_lay = QVBoxLayout(self._code_grp); code_lay.setContentsMargins(6,4,6,4) self._code = QTextEdit(); self._code.setObjectName("codeEditor") self._code.setMinimumHeight(90); self._code.setMaximumHeight(180) + _mono = QFont("IBM Plex Mono, Consolas, Monospace"); _mono.setStyleHint(QFont.StyleHint.Monospace) + self._code.setFont(_mono) + self._code.setTabStopDistance(QFontMetrics(_mono).horizontalAdvance(" ") * 4) txt = self.dc.expression if self.dc.kind=="expression" else self.dc.script self._code.setPlainText(txt) code_lay.addWidget(self._code) @@ -695,6 +701,8 @@ class DerivedBlock(QFrame): k = _ALL_KINDS[idx] self.dc.kind = k self._help.setText(_KIND_HELP.get(k,"")) + if k in ("derivative", "second_derivative") and not self._src_combos: + self._add_src() self._update_visibility() def _on_wrt_changed(self, idx: int): |
