Orange Canvas application is build around the a workflow model (scheme), which is implemented in the 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 (WidgetRegistry). WidgetDiscovery can be used (but not required) to populate the registry.

Common reusable gui elements used for building the user interface reside in the gui package.

Workflow Model

The workflow model is implemented by Scheme. It is composed by a set of node (SchemeNode) instances and links (SchemeLink) between them. Every node has a corresponding 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.

Widget Description

Workflow Execution

The runtime execution (propagation of node’s outputs to dependent node inputs) is handled by the signal manager.

Workflow Node GUI

A WidgetManager is responsible for managing GUI corresponsing to individual nodes in the workflow.

Workflow View


Joining everything together, the final application (main window, …) is implemented in orangecanvas.application.