About ===== .. figure:: ../../../screenshot.png :width: 800 px :align: center :figclass: align-center `nodeworks` provides a graphical programing interface where users can add, delete, and copy `Nodes`. The user can then connect the various output and input `Terminals` of the `Nodes` with `Connections`. The network can be solved by walking the `Nodes`, based on a `topological sort`_, and calling the `process` function associated with each `Node`. Nodal components include: - a `Node` which contains high level functionality including the `process` method - a `NodeGraphic` which handles the drawing and mouse interactions with `Nodes` - the `Terminals` which provide input and output as well as user interaction through widgets - the `Connections` used to link `Nodes` at the `Terminals` .. figure:: ./images/schematic.png :width: 800 px :align: center :figclass: align-center The `Nodes` have been designed to be extremely flexible, allowing for: - Arbitrary number of inputs/outputs - Arbitrary widgets for input on each `Terminal` - Single or multiple `Terminal` connections - Delegates for editing `Node` names - Style framework for formatting the `Nodes`, `Terminals`, and `Connections` .. _topological sort: https://en.wikipedia.org/wiki/Topological_sorting