Page by [Theo Verelst] [Bwise] centers around a [canvas], which is supposed to support it's main graphica interface, which is block-wise programming. The normally scrollable canvas, easily made by even early versions of Tk, contains graphical items which in the Bwise program would often represent program pieces, connected up by wires to form a network, which can be activated or 'run' with various connected block function invokation regimes. It's far from a finished product, so it's current version is fixed at 0.3x, but it works, and because it is even pretty retarded, well, early, tcl/tk, I think overall. I ran it on windows 3.1 when I would have nothing else on a found pentium 75 MHz and it ran fine, even with images on the canvas. The idea of this page is to call forward essential graphics and interaction programming, which is not a trivial job, although there are general guidelines which make it overseeable easily enough. Bwise (Download recent version here http://195.241.128.75/Diary/ldiary5.html#bwise ) should start easily enough on all tcl/tk platforms, if you don't want to get 'paper.gif' image errors (which should be in current dir), just find that name in the single source file, and make the button have a text instead. I assume a console to type in to be available, cut and past from this page in it. In windows, the console comes up by itself (I think in that version) other wise you may have to get the console code from [console on unix], which must load immedeately after wish starts. Comment out the procs_window at the end to not need defaultprocs, or run the singly loaded procedure set_procvanilla in a further empty but equal wish in the startup directory. I'll look into a single source file and but upgraded bwise version. After having started bwise, make sure you have a console (possibly using the paper image button to get a small one on the canvas, and type 'console show' in it, or source unixconsole.tcl, I youhave / need that one): bind $mc {global markercount; set t "[$mc find overlapping [expr %x-1] [expr %y-1] %x %y]"; if {$t == {}} {$mc create oval [expr %x-3] [expr %y-3] [expr %x+3] [expr %y+3] -fill red -outline navy -width 1 -tags "mark[incr markercount] markers"}} $mc create poly 0 0 5 5 10 3 3 93 -tag markerpoly -fill green $mc bind markers {set t {}; foreach i [$mc find withtag markers] {append t "[lrange [$mc coords [lindex [$mc itemcget $i -tags] 0] ] 0 1] "} ; eval $mc coords markerpoly $t ; $mc raise markers } ... [http://195.241.128.75:/Wiki/poly1.png]