diff options
| author | Christian Kolset <christian.kolset@gmail.com> | 2026-06-03 12:43:19 -0600 |
|---|---|---|
| committer | Christian Kolset <christian.kolset@gmail.com> | 2026-06-03 12:43:19 -0600 |
| commit | 6fb559b64682d6f564d134b8937a688df59ed8e5 (patch) | |
| tree | 6d8acd281ab7a16e900e21b6978fa34deadf3649 /ui | |
| parent | 0355099aa21918e8f6f7fcd61aba8e3014bf8171 (diff) | |
Fix derivative sources visibility; code editor monospace + 4-space tabs
- Always insert one source row for derivative/second_derivative on build
- Guard in _on_kind: add row when switching to derivative with no sources
- Code editor: monospace font (IBM Plex Mono/Consolas fallback)
- Code editor: tab stop = 4 character widths
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'ui')
| -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): |
