1.. _Overview:
2
3Overview
4########
5
6.. currentmodule:: orangecanvas
7
8Orange Canvas application is build around the a workflow model (scheme),
9which is implemented in the :mod:`~orangecanvas.scheme` package. Briefly
10speaking a workflow is a simple graph structure(a Directed Acyclic
11Graph - DAG). The nodes in this graph represent some action/task to be
12computed. A node in this graph has a set of inputs and outputs on which it
13receives and sends objects.
14
15The set of available node types for a workflow are kept in a
16(:class:`~orangecanvas.registry.WidgetRegistry`).
17:class:`~orangecanvas.registry.WidgetDiscovery` can be used (but not
18required) to populate the registry.
19
20
21Common reusable gui elements used for building the user interface
22reside in the :mod:`~orangecanvas.gui` package.
23
24
25Workflow Model
26**************
27
28The workflow model is implemented by :class:`~scheme.scheme.Scheme`.
29It is composed by a set of node (:class:`~scheme.node.SchemeNode`)
30instances and links (:class:`~scheme.link.SchemeLink`) between them.
31Every node has a corresponding :class:`~registry.WidgetDescription`
32defining its inputs and outputs (restricting the node's connectivity).
33
34In addition, it can also contain workflow annotations. These are only
35used when displaying the workflow in a GUI.
36
37
38Widget Description
39------------------
40
41* :class:`~registry.WidgetDescription`
42* :class:`~registry.CategoryDescription`
43
44
45Workflow Execution
46------------------
47
48The runtime execution (propagation of node's outputs to dependent
49node inputs) is handled by the signal manager.
50
51* :class:`~scheme.signalmanager.SignalManager`
52
53
54Workflow Node GUI
55-----------------
56
57A WidgetManager is responsible for managing GUI corresponsing to individual
58nodes in the workflow.
59
60* :class:`~scheme.widgetmanager.WidgetManager`
61
62Workflow View
63*************
64
65* The workflow view (:class:`~canvas.scene.CanvasScene`)
66* The workflow editor (:class:`~document.schemeedit.SchemeEditWidget`)
67
68
69Application
70***********
71
72Joining everything together, the final application (main window, ...)
73is implemented in :mod:`orangecanvas.application`.
74