nodeworks provides a graphical programming 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


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