11 Commits

Author SHA1 Message Date
Ilya Ashikhmin
3129440e60 feat(scene): add canvas and element context menus
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 23:39:31 +02:00
Ilya Ashikhmin
730d0fa7a7 feat(app): add --simulate flag for headless demo captures
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 23:38:07 +02:00
Ilya Ashikhmin
4f6fe37b4d test(app): add end-to-end scenarios against the real main window
Bundled registry/sample loading, edge selection populating the grouped
property panel, undoable title edit, solver + animation clock, and a
headless render smoke check.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 23:37:18 +02:00
Ilya Ashikhmin
18289b33e1 feat(app): add main window with palette, property panel and settings
- Grouped node palette with SVG icons, drag-and-drop onto the canvas
- Property panel: grouped typed editors (string, int, float, enum,
  catalogue single/multi pickers, color with auto-reset, value list),
  read-only solver results, undo-aware edits
- Settings dialog persisted via QSettings: grid step, snapping,
  intersection arcs, color scheme
- File new/open/save with dirty-check, bundled sample document, zoom and
  simulation controls, status bar with cursor position and zoom
- --screenshot flag for headless smoke checks

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 23:36:13 +02:00
Ilya Ashikhmin
a52f7bffbf feat(assets): add SVG node set, node-type config and sample document
Water supply group (source, tank, pump, valve, junction, consumer) and
power group (generator, transformer, switch, load) with port configs,
physics property specs, pipe/cable/insulation catalogues and a demo
waterworks document.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 23:27:05 +02:00
Ilya Ashikhmin
b257c1a7cf feat(scene): add interactive graphics scene with grid, ports and styled edges
- SVG node items with snap-to-grid dragging; ports appear on focus/hover
  and highlight compatible targets during a connection drag
- Orthogonally routed edge items with line styles, head/tail decorations
  (arrow, circle, diamond, bar), selection halo and title labels; later
  edges jump crossings with arcs when enabled
- Grid background view with cursor-anchored zoom, middle-button pan,
  rubber-band selection and palette drag-and-drop
- Undoable commands: add/move/delete/connect/property/paste with
  clipboard fragments; light/dark/high-contrast themes
- Flow overlay: animated dashes, direction and density follow flow rate

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 23:25:06 +02:00
Ilya Ashikhmin
81f2a9ff8b feat(core): add JSON document save/load
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 23:14:11 +02:00
Ilya Ashikhmin
c2501ff04e feat(core): add mock flow solver with conservation-based distribution
Treats each relation network as a conductance network (diameter^4 / length),
solves nodal balance per connected component, so flow is conserved at every
junction and wider pipes carry proportionally more flow.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 23:14:11 +02:00
Ilya Ashikhmin
18d614ec67 feat(core): add orthogonal grid router with intersection jump-over arcs
Manhattan routing snapped to the rectangular grid with port-side-aware exit
stubs, right-angle crossing detection between routed polylines, and painter
paths bridging crossings with semicircular arcs (configurable radius).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 23:14:11 +02:00
Ilya Ashikhmin
26905a4ba0 feat(core): add network model with typed ports, relations and grouped properties
Data-driven node types (SVG + port config) loaded from JSON, relation-based
connection validation, and a property system supporting string, int, float,
enum, catalogue item(s), color and value-list types grouped by category.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 23:14:11 +02:00
Ilya Ashikhmin
36dbbebe76 docs: add implementation plan for pipeline diagram editor
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 23:04:46 +02:00