layout |
---|
page |
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
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.
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
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.
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.