Ilya ae3f752b6f feat(ui): panels, canvas view, animation, and main window
Add left node-library dock (grouped, searchable, drag-and-drop vector
symbols), right property dock with type-aware grouped editors (incl.
geometry, catalogue single/multi, color, value list), zoom/pan/fit canvas
view accepting node drops, flow animator, configuration dialog, and the
MainWindow wiring menus/toolbar, undo/redo, delete/duplicate, calculate
flow, save/open (JSON), and PNG/SVG export. Includes a demo sample network,
entry points, and panel + app integration tests.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 23:25:14 +02:00

30 lines
1.0 KiB
Python

"""Builds a small demonstration network through the controller."""
from __future__ import annotations
def build_sample(controller):
"""Create a source -> pump -> junction -> consumers water network."""
add = controller.add_node
connect = controller.connect
source = add("source", 0, 200)
pump = add("pump", 220, 200)
tank = add("tank", 420, 60)
junction = add("junction", 460, 220)
valve = add("valve", 640, 220)
c1 = add("consumer", 820, 120)
c2 = add("consumer", 820, 320)
connect(source.node_id, "out", pump.node_id, "in")
connect(pump.node_id, "out", junction.node_id, "w")
connect(junction.node_id, "n", tank.node_id, "in")
connect(junction.node_id, "e", valve.node_id, "in")
connect(valve.node_id, "out", c1.node_id, "in")
connect(junction.node_id, "s", c2.node_id, "in")
# give consumers some demand for the flow solver
for cons, demand in ((c1, 50), (c2, 45)):
cons.properties.set_value("demand", demand)
return [source, pump, tank, junction, valve, c1, c2]