[FF] - 2009-02-18 - This widget is a [canvas] specialized for dataflow [http://en.wikipedia.org/wiki/Dataflow] software. It features high level operations, as adding, moving, editing, removing, connecting and track objects. Other relevant features include: [OO]-design (by using the new [TclOO], completion, gui objects, (minimal) internal dataflow capability. The class loading mechanism is defined in DataflowCanvas::enumClasses. By default it looks for subclasses of DataflowClass, so it is possible to add classes which specify how many inlet/outlets object instances will have, and manage their initialization parameters. [http://dev.gentoo.org/~mescalinum/tclwiki-img/DataflowCanvas01.png] ---- Example: we are going to create a `+` class, which performs the `f(x, y) = x + y` function, so it has two inlets (inbound connections), and one outlet (outgoing conn.). ====== oo::class create + { superclass DataflowClass method setup {args} { my variable state set state {0 0} return {inlets 2 outlets 1} } method inlet {n args} { my variable state lset state $n $args if {$n == 0} { my outlet 0 [expr [join $state +]] } } } ====== The resulting patch: [http://dev.gentoo.org/~mescalinum/tclwiki-img/DataflowCanvas02.png] `entry` and `scale` classes (found in source distribution) have been used to interact with the object ---- [Drawing Diagrams] may be related to this package ---- [AMG]: Interesting. I am working on a project that has a dataflow model. Perhaps I can find some inspiration in your work, and maybe I can even use it as a graphical front-end. Will you post a link to the sources soon? ---- !!!!!! %| enter categories here |% !!!!!!