Feature
Support multiple independent panadapters stacked vertically, matching SmartSDR's layout. Each panadapter has its own FFT + waterfall, VFO overlays, overlay menu, display settings, and can be on a different band/antenna.
Dual-SCU radios (FLEX-8600, 6600, 6700, AU-520) support up to 4 panadapters. Single-SCU radios support 2.
Implementation Plan
See plan file for detailed 8-phase approach:
Phase 1: PanadapterModel extraction — new class for per-pan state
Phase 2: PanadapterStream multi-routing — stream ID in signals
Phase 3: PanadapterStack layout — vertical QSplitter container
Phase 4: Signal rewiring — wirePanadapter() helper method
Phase 5: Slice-to-panadapter assignment — route overlays to correct pan
Phase 6: Multi-pan protocol — create/remove panadapters
Phase 7: Active pan coordination — applet panel context switching
Phase 8: Per-pan settings persistence — indexed AppSettings keys
New files
src/models/PanadapterModel.h/.cpp
src/gui/PanadapterStack.h/.cpp
Key modified files
src/models/RadioModel.h/.cpp — single-pan state → PanadapterModel map
src/core/PanadapterStream.h/.cpp — per-stream frame assembly, stream ID signals
src/gui/MainWindow.h/.cpp — PanadapterStack, per-pan wiring
src/models/SliceModel.h/.cpp — parse pan key, panId tracking
Feature
Support multiple independent panadapters stacked vertically, matching SmartSDR's layout. Each panadapter has its own FFT + waterfall, VFO overlays, overlay menu, display settings, and can be on a different band/antenna.
Dual-SCU radios (FLEX-8600, 6600, 6700, AU-520) support up to 4 panadapters. Single-SCU radios support 2.
Implementation Plan
See plan file for detailed 8-phase approach:
Phase 1: PanadapterModel extraction — new class for per-pan state
Phase 2: PanadapterStream multi-routing — stream ID in signals
Phase 3: PanadapterStack layout — vertical QSplitter container
Phase 4: Signal rewiring — wirePanadapter() helper method
Phase 5: Slice-to-panadapter assignment — route overlays to correct pan
Phase 6: Multi-pan protocol — create/remove panadapters
Phase 7: Active pan coordination — applet panel context switching
Phase 8: Per-pan settings persistence — indexed AppSettings keys
New files
src/models/PanadapterModel.h/.cppsrc/gui/PanadapterStack.h/.cppKey modified files
src/models/RadioModel.h/.cpp— single-pan state → PanadapterModel mapsrc/core/PanadapterStream.h/.cpp— per-stream frame assembly, stream ID signalssrc/gui/MainWindow.h/.cpp— PanadapterStack, per-pan wiringsrc/models/SliceModel.h/.cpp— parse pan key, panId tracking