orangecanvas
Orange Canvas application is build around the a workflow model (scheme), which is implemented in the ~orangecanvas.scheme
package. Briefly speaking a workflow is a simple graph structure(a Directed Acyclic Graph - DAG). The nodes in this graph represent some action/task to be computed. A node in this graph has a set of inputs and outputs on which it receives and sends objects.
The set of available node types for a workflow are kept in a (~orangecanvas.registry.WidgetRegistry
). ~orangecanvas.registry.WidgetDiscovery
can be used (but not required) to populate the registry.
Common reusable gui elements used for building the user interface reside in the ~orangecanvas.gui
package.
The workflow model is implemented by ~scheme.scheme.Scheme
. It is composed by a set of node (~scheme.node.SchemeNode
) instances and links (~scheme.link.SchemeLink
) between them. Every node has a corresponding ~registry.WidgetDescription
defining its inputs and outputs (restricting the node's connectivity).
In addition, it can also contain workflow annotations. These are only used when displaying the workflow in a GUI.
~registry.WidgetDescription
~registry.CategoryDescription
The runtime execution (propagation of node's outputs to dependent node inputs) is handled by the signal manager.
~scheme.signalmanager.SignalManager
A WidgetManager is responsible for managing GUI corresponsing to individual nodes in the workflow.
~scheme.widgetmanager.WidgetManager
- The workflow view (
~canvas.scene.CanvasScene
) - The workflow editor (
~document.schemeedit.SchemeEditWidget
)
Joining everything together, the final application (main window, ...) is implemented in orangecanvas.application
.