summaryrefslogtreecommitdiff
path: root/ui/windows/channels_window.py
AgeCommit message (Collapse)Author
2026-06-09Scripting: named signal vars, shared vars dict, control scripts, code templatesChristian Kolset
- Named variables in expressions: source channel IDs injected as Python identifiers alongside x[] (e.g. write `A0 * 2` instead of `x[0] * 2`) - Shared `vars` dict on SignalProcessor accessible from all expressions, functions, and control scripts; persisted in .labdaq profiles - Per-derived-channel `state` dict for persistent computation state in custom scripts - Control widgets gain optional on_action_script (Python snippet with value, vars, channels, math in scope); syntax-checked in editor dialog - Built-in derived kinds (derivative, rms, power, etc.) now show their Python implementation as read-only code previews; "Edit as Custom Script" converts to custom_script kind with template pre-filled Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-09Channels/Signals UX: rename labels, calibration section, splitter, sig# IDsChristian Kolset
Naming conventions: - Devices window: "Channel ID" column → "Signal ID" - Serial device auto-gen IDs: CH# → sig# (generic, SCPI, Modbus fallbacks) - Channels window physical section: "Physical Channels" → "Signals" - Channels window virtual section: "Virtual Channels" → "Channels" - "Add Virtual" button → "Add Channel" - New derived channel default name: "Virtual Channel #" → "Channel #" Signals panel (ChannelPipelineBlock): - Remove Calibrate header button; add inline Calibration section in body - Remove Math section (Derivative/Integral) entirely - scale_offset excluded from filter dropdown; routed to Calibration section - Existing pipelines: scale_offset loads into Calibration, math filters dropped - _FILTER_KEYS excludes derivative, integral, scale_offset Splitter default position: - Left (Signals) pane initialised to minimum content width via QTimer.singleShot - setStretchFactor(0,0) / (1,1): left stays narrow, right grows on resize Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-03Changed dialog text window from channels to signals for clarityChristian Kolset
2026-06-03Make Devices, Channels, Plot windows maximizableChristian Kolset
Remove Qt.WindowType.Tool flag — it suppresses the maximize button. Window now has standard chrome with minimize/maximize/close. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-03Redesign Channels window: side-by-side layout, picker dialog, collapsible ↵Christian Kolset
virtual blocks Physical channels panel: horizontal splitter (left/right), channel picker dialog replaces dropdown, Filters and Math sections per block, Calibrate button, pipeline-enabled checkbox removed. Virtual channels: collapsible blocks, enable checkbox removed, kind dropdown removed (defaults to expression). Window resized to 1400×820. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-03Fix derivative sources visibility; code editor monospace + 4-space tabsChristian Kolset
- 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>
2026-06-03Rename signals_window.py → channels_window.py; update docstringChristian Kolset
Reflects current design: split Physical/Virtual Channels layout, no tabs, no legacy Signals list as primary UI. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>