summaryrefslogtreecommitdiff
path: root/ui
diff options
context:
space:
mode:
authorChristian Kolset <christian.kolset@gmail.com>2026-06-03 12:43:19 -0600
committerChristian Kolset <christian.kolset@gmail.com>2026-06-03 12:43:19 -0600
commit6fb559b64682d6f564d134b8937a688df59ed8e5 (patch)
tree6d8acd281ab7a16e900e21b6978fa34deadf3649 /ui
parent0355099aa21918e8f6f7fcd61aba8e3014bf8171 (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.py16
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):