GUI Milestone 8c
This commit is contained in:
parent
befe57530a
commit
fa67dd3708
9 changed files with 458 additions and 22 deletions
42
GUI_PLAN.md
42
GUI_PLAN.md
|
|
@ -210,27 +210,27 @@ A Qt6-based node editor GUI for warppipe using the QtNodes (nodeeditor) library.
|
|||
- [x] Restore ghosts from layout on load (before live sync)
|
||||
- [x] Add middle-click center: `eventFilter` on viewport catches `MiddleButton` → `m_view->centerOn(mapToScene(pos))`
|
||||
- [x] Add tests for view state save/load round-trip and ghost persistence
|
||||
- [ ] Milestone 8c - Sidebar and Preset System
|
||||
- [ ] Add `QSplitter` between graph view and sidebar panel
|
||||
- [ ] Graph view (stretch factor 1) on left, sidebar (stretch factor 0) on right
|
||||
- [ ] Persist splitter sizes in layout JSON, restore on load
|
||||
- [ ] Default sizes: graph 1200, sidebar 320
|
||||
- [ ] Add `QTabWidget` sidebar with styled tabs (dark theme)
|
||||
- [ ] Tab styling: dark background, selected tab has accent underline
|
||||
- [ ] Initially one tab: "PRESETS" (meters/mixer tabs added in M8d/M8e)
|
||||
- [ ] Implement `PresetManager` class:
|
||||
- [ ] `savePreset(path)` → serialize to JSON:
|
||||
- [ ] Virtual devices: name, description, media_class, channels, rate
|
||||
- [ ] Routing: links by stable_id:port_name pairs
|
||||
- [ ] UI layout: node positions, view state
|
||||
- [ ] `loadPreset(path)` → apply from JSON:
|
||||
- [ ] Create missing virtual devices
|
||||
- [ ] Re-create links from routing entries
|
||||
- [ ] Apply layout positions
|
||||
- [ ] Save on quit via `QCoreApplication::aboutToQuit` signal
|
||||
- [ ] Add "Save Preset..." context menu action → `QFileDialog::getSaveFileName()`
|
||||
- [ ] Add "Load Preset..." context menu action → `QFileDialog::getOpenFileName()`
|
||||
- [ ] Add tests for preset save/load round-trip
|
||||
- [x] Milestone 8c - Sidebar and Preset System
|
||||
- [x] Add `QSplitter` between graph view and sidebar panel
|
||||
- [x] Graph view (stretch factor 1) on left, sidebar (stretch factor 0) on right
|
||||
- [x] Persist splitter sizes in layout JSON, restore on load
|
||||
- [x] Default sizes: graph 1200, sidebar 320
|
||||
- [x] Add `QTabWidget` sidebar with styled tabs (dark theme)
|
||||
- [x] Tab styling: dark background, selected tab has accent underline
|
||||
- [x] Initially one tab: "PRESETS" (meters/mixer tabs added in M8d/M8e)
|
||||
- [x] Implement `PresetManager` class:
|
||||
- [x] `savePreset(path)` → serialize to JSON:
|
||||
- [x] Virtual devices: name, description, media_class, channels, rate
|
||||
- [x] Routing: links by stable_id:port_name pairs
|
||||
- [x] UI layout: node positions, view state
|
||||
- [x] `loadPreset(path)` → apply from JSON:
|
||||
- [x] Create missing virtual devices
|
||||
- [x] Re-create links from routing entries
|
||||
- [x] Apply layout positions
|
||||
- [x] Save on quit via `QCoreApplication::aboutToQuit` signal
|
||||
- [x] Add "Save Preset..." context menu action → `QFileDialog::getSaveFileName()`
|
||||
- [x] Add "Load Preset..." context menu action → `QFileDialog::getOpenFileName()`
|
||||
- [x] Add tests for preset save/load round-trip
|
||||
- [ ] Milestone 8d - Volume/Mute Controls (requires core API: `SetNodeVolume()`)
|
||||
- [ ] Add `NodeVolumeState` struct: `{ float volume; bool mute; }`
|
||||
- [ ] Add `ClickSlider : QSlider` — click jumps to position instead of page-stepping
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue