GUI Milestone 1
This commit is contained in:
parent
4fc36822ba
commit
f46f9542b4
7 changed files with 593 additions and 19 deletions
38
GUI_PLAN.md
38
GUI_PLAN.md
|
|
@ -15,25 +15,25 @@ A Qt6-based node editor GUI for warppipe using the QtNodes (nodeeditor) library.
|
|||
- [x] Create minimal main.cpp with QApplication + QMainWindow
|
||||
- [x] Verify GUI launches and shows empty window
|
||||
|
||||
- [ ] Milestone 1 - Core Model Integration
|
||||
- [ ] Create `WarpGraphModel : public QtNodes::AbstractGraphModel`
|
||||
- [ ] Implement AbstractGraphModel interface (newNodeId, allNodeIds, nodeData, portData, etc.)
|
||||
- [ ] Add `warppipe::Client*` member, connect to PipeWire on construction
|
||||
- [ ] Map `warppipe::NodeInfo` to QtNodes NodeId via internal maps (m_nodes, m_pwToNode)
|
||||
- [ ] Implement node refresh: call Client::ListNodes() and sync graph
|
||||
- [ ] Create `GraphEditorWidget : public QWidget`
|
||||
- [ ] Instantiate WarpGraphModel, QtNodes::BasicGraphicsScene, QtNodes::GraphicsView
|
||||
- [ ] Lay out view in widget
|
||||
- [ ] Connect model signals to refresh handlers
|
||||
- [ ] Synthesize display title from NodeInfo:
|
||||
- [ ] If `application_name` is non-empty and differs from `name`, use `application_name` as title
|
||||
- [ ] Otherwise use `name` field
|
||||
- [ ] Store synthesized title in `nodeData(NodeRole::Caption)`
|
||||
- [ ] Map warppipe ports to QtNodes ports:
|
||||
- [ ] Input ports (is_input=true) appear on LEFT side of node (QtNodes PortType::In)
|
||||
- [ ] Output ports (is_input=false) appear on RIGHT side of node (QtNodes PortType::Out)
|
||||
- [ ] Use port name from PortInfo as port label
|
||||
- [ ] Verify nodes appear in graph view with correct titles and ports
|
||||
- [x] Milestone 1 - Core Model Integration
|
||||
- [x] Create `WarpGraphModel : public QtNodes::AbstractGraphModel`
|
||||
- [x] Implement AbstractGraphModel interface (newNodeId, allNodeIds, nodeData, portData, etc.)
|
||||
- [x] Add `warppipe::Client*` member, connect to PipeWire on construction
|
||||
- [x] Map `warppipe::NodeInfo` to QtNodes NodeId via internal maps (m_nodes, m_pwToNode)
|
||||
- [x] Implement node refresh: call Client::ListNodes() and sync graph
|
||||
- [x] Create `GraphEditorWidget : public QWidget`
|
||||
- [x] Instantiate WarpGraphModel, QtNodes::BasicGraphicsScene, QtNodes::GraphicsView
|
||||
- [x] Lay out view in widget
|
||||
- [x] Connect model signals to refresh handlers
|
||||
- [x] Synthesize display title from NodeInfo:
|
||||
- [x] If `application_name` is non-empty and differs from `name`, use `application_name` as title
|
||||
- [x] Otherwise use `name` field
|
||||
- [x] Store synthesized title in `nodeData(NodeRole::Caption)`
|
||||
- [x] Map warppipe ports to QtNodes ports:
|
||||
- [x] Input ports (is_input=true) appear on LEFT side of node (QtNodes PortType::In)
|
||||
- [x] Output ports (is_input=false) appear on RIGHT side of node (QtNodes PortType::Out)
|
||||
- [x] Use port name from PortInfo as port label
|
||||
- [x] Verify nodes appear in graph view with correct titles and ports
|
||||
|
||||
- [ ] Milestone 2 - Visual Styling and Node Types
|
||||
- [ ] Define node type classification based on `media_class`:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue