From 5d5bcaed8639a162fda85c8cd0d340c296a054b8 Mon Sep 17 00:00:00 2001 From: Christian Kolset Date: Mon, 10 Aug 2026 16:12:05 -0600 Subject: Unify Signals/Channels around auto-naming, plot-by-channel, and shared vars Devices: auto-name from OS-reported port description (Device Manager / udev string) instead of a generic label; default Serial #Channels 1; consistent simulate-mode checkbox across backends; inline device rename. Channels: calibration/filters move out of Signals into a Channel "Operation" (adds Scale/Offset alongside the existing math kinds); single-physical-source Channels get an embedded Filters block; new Channels auto-name/auto-ID from their source and reject duplicate names/IDs on apply; "Create Channel" button on each Signal row; renamed "Sources" -> "Signals" in the Channels UI; Signals' READ/WRITE dir badge (was silently-broken IN/OUT) now reflects the real writable flag. Plot: default layout is one pane per Channel (not per device, not raw Signals) titled by channel name; "+ Add Channel" is a checkbox dialog instead of an inline dropdown; traces get up/down reorder; live unit changes (e.g. a Mark-10 gauge switching lb/kgF/N/ozF) propagate to an open pane's axis label without clobbering a manually-typed one. Control Panel: hardware assignment now picks from the same writable- Signals list instead of a separate device/channel combo with a hardcoded Arduino pin list; stale visual indicator when a control's target device/channel disconnects or disappears; documented the `vars` bridge (Control Panel On Action Script <-> Channel scripts) in both directions' help text and script templates. Co-Authored-By: Claude Sonnet 5 --- ui/style_dark.qss | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'ui/style_dark.qss') diff --git a/ui/style_dark.qss b/ui/style_dark.qss index cfb127d..06c70d9 100644 --- a/ui/style_dark.qss +++ b/ui/style_dark.qss @@ -125,6 +125,12 @@ QFrame#deviceCard:hover { border-color: #3b82f6; background-color: #1c2540; } QLabel#deviceIcon { font-size: 18px; } QLabel#deviceName { font-size: 13px; font-weight: 600; color: #e2e8f0; } +QLineEdit#deviceName { + font-size: 13px; font-weight: 600; color: #e2e8f0; + background: transparent; border: 1px solid transparent; border-radius: 3px; padding: 0 2px; +} +QLineEdit#deviceName:hover { border-color: #2a3558; } +QLineEdit#deviceName:focus { border-color: #3b82f6; background-color: #161d2e; } QLabel#deviceSub { font-family: "IBM Plex Mono", monospace; font-size: 11px; color: #8b9dc3; } QLabel#deviceChannelCount { font-size: 11px; color: #3b82f6; } @@ -222,6 +228,10 @@ QTableWidget#channelTable { color: #e2e8f0; font-size: 12px; } +QTableWidget#channelTable::item:selected { + background-color: #3b82f6; + color: #0b0e13; +} QHeaderView::section { background-color: #161d2e; color: #8b9dc3; @@ -404,10 +414,13 @@ QPushButton#applyButton:hover { background-color: #1d4ed8; color: #eff6ff; } /* ── Control widgets ─────────────────────────────────────────────── */ QFrame#controlWidget { background-color: #161d2e; border: 1px solid #2a3558; border-radius: 6px; } +QFrame#controlWidget[stale="true"] { border: 1px solid #f59e0b; } QWidget#controlWidgetHeader { background-color: #0f1521; border-radius: 5px 5px 0 0; border-bottom: 1px solid #2a3558; } QLabel#controlWidgetIcon { font-size: 14px; color: #3b82f6; padding-right: 4px; } QLabel#controlWidgetTitle { font-family: "IBM Plex Mono", monospace; font-size: 11px; font-weight: 700; letter-spacing: 1.5px; color: #8b9dc3; } +QLabel#controlWidgetStale { color: #f59e0b; font-size: 12px; padding: 0 2px; } QWidget#controlWidgetBody { background-color: #161d2e; border-radius: 0 0 5px 5px; } +QFrame#controlWidget[stale="true"] QWidget#controlWidgetBody { background-color: #1c1710; } QLabel#motorSpeedLbl { font-family: "IBM Plex Mono", monospace; font-size: 28px; font-weight: 700; color: #00d4ff; } QLabel#motorUnitLbl { font-family: "IBM Plex Mono", monospace; font-size: 12px; color: #64748b; padding-top: 12px; } -- cgit v1.2.3