NodeBox 3 Todo

These are features that still need to be completed for NodeBox 3.


Every parameter can have an expression value instead of a numeric or text value.

  • Decide on and implement an expression language.
  • Integrate the expression engine in the interface (how do you switch from a regular number to an expression number?)
  • Create the expression editor interface

Scripting nodes

Build a scripting node: a node that contains a script that is executed when the node is processed.

  • Build a scripting editor (done)
  • Integrate a scripting language
  • Decide on and build the interface
  • Decide on how meta-data is represented (the script in the node vs. its parameters are on a different meta-level). The script will probably have a "setup" method that builds the interface, and a "cook" method that processes the node.

Network inlets

Networks work as filters: they take input, process it, and render output. To connect the innards of the network to the outside world, we use inlets: small ports that connect to inputs on the network's nodes.

  • Visually design inlets and their functionality
  • Create back-end code (the Inlet class)
  • Integrate them as an InletView

Node packaging

Build a system for packaging up nodes. This means that collections of nodes are loosely coupled with NodeBox as versioned resources. Platonos seems like a nice plugin system. Read the discussion by the creator.

  • Decide on a plugin system and file structure.
  • Decide on the metadata for each node (version, category, etc.)
  • Build a loading infrastructure for these plugins
  • Update the backend so it accounts for versioned nodes, node classes that cannot be found or have the wrong version, etc.
  • Update the XML backend for saving/loading this additional data.

On-screen editors

Build an infrastructure to support visual, on-screen editors for nodes. This means that each node can have a corresponding editor that takes of the GrobView when the node is selected, responding to mouseclicks and changing the parameters.

  • Decide on a registry system so a class can register itself as editor for a specified type of node.
  • Integrate GrobView with an abstract OnScreenEditor interface so that the GrobView can pass on events .


Matplotlib has some interesting backends, most notably Anti-Grain Geometry.