P2: true multi-axis overlay + gauge view
gui/widgets.py: - MultiAxisPlot -- overlay with one Y axis PER UNIT (psi/V/rpm/C/%), linked ViewBoxes on X, so mixed-scale signals are readable at true values (base left axis + up to 4 right axes). - SinglePlot -- one shared axis for the Normalize (% of range) mode. - ArcGauge -- 270deg arc gauge with peak tick + numeric readout, own dark bg. - GaugeGrid -- scrollable grid of gauges. gui/main.py: - Graph page is now a multi-axis/single-axis sub-stack; Normalize toggles between true multi-axis (raw) and single-axis (%). curves map key->color; plot ops route to the active graph widget. - Gauge View menu enabled (3rd center page); gauges update on tick with peak. - Theme applies to both plot widgets; profile switch clears graphs/gauges. Fix: ArcGauge QPen built via setCapStyle (the QPen(...cap=...) kwarg segfaults PySide6). Validated headless: driving preset -> 6 unit groups across 5 axes, gauge view renders, normalize round-trips, profile-switch clears cleanly. obdcore + diagnostics tests still pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016yT89n4zR4qbrySoSiEyZs
This commit is contained in:
@@ -73,21 +73,31 @@ python obd_reader.py COM5 --crank --dash-log crank.csv # + record a CSV
|
||||
under the line), that's the high-pressure oil bleed-off — STC fitting / oil-rail
|
||||
O-rings. On exit it prints the peak and a verdict. `q` quits, `r` resets.
|
||||
|
||||
## Graphical app (preview — P1)
|
||||
## Graphical app (preview)
|
||||
|
||||
A cross-platform desktop GUI (PySide6 + pyqtgraph) is in progress. P1 = PID
|
||||
browser + live overlay plot; see [ARCHITECTURE.md](ARCHITECTURE.md) for the
|
||||
roadmap (cranking/driving/diagnostics perspectives, record/playback, etc.).
|
||||
A cross-platform desktop GUI (PySide6 + pyqtgraph). Vehicle-agnostic — all PIDs,
|
||||
scaling, DTCs, and presets come from the JSON profiles in `profiles/`.
|
||||
|
||||
```
|
||||
pip install -r requirements-gui.txt
|
||||
python run_gui.py # tick "Mock" + Connect to explore with no adapter
|
||||
```
|
||||
|
||||

|
||||
Features so far:
|
||||
- **PID browser** (left) grouped by system, live values, confidence badges
|
||||
- **Graph view** with **true multi-axis** overlay — one Y scale per unit (psi/V/rpm/…),
|
||||
or a Normalize (% of range) mode
|
||||
- **Gauge view** — arc gauges with peak-hold, one per signal
|
||||
- **Table view** — value + min/max + confidence
|
||||
- **Diagnostics** — read/clear DTCs (guarded), no-start codes flagged
|
||||
- **Profile menu** — switch/import/edit vehicles; **File menu** — record/replay/export captures
|
||||
|
||||
The whole app runs against simulated data (`MockLink`) so it can be developed
|
||||
on any machine and only needs the truck for real captures.
|
||||

|
||||

|
||||
|
||||
The whole app runs against simulated data (`MockLink`), so it can be developed
|
||||
on any machine and only needs the vehicle for real captures. See
|
||||
[ARCHITECTURE.md](ARCHITECTURE.md) for the roadmap.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user