aboutsummaryrefslogtreecommitdiff
path: root/test/toxy/default.wid
diff options
context:
space:
mode:
Diffstat (limited to 'test/toxy/default.wid')
-rw-r--r--test/toxy/default.wid108
1 files changed, 108 insertions, 0 deletions
diff --git a/test/toxy/default.wid b/test/toxy/default.wid
new file mode 100644
index 0000000..e9a20a1
--- /dev/null
+++ b/test/toxy/default.wid
@@ -0,0 +1,108 @@
+# first the setup stuff (is this the right place for it?)
+
+# LATER ask for adding something of the sort to pd.tk:
+bind Canvas <1> {+focus %W}
+
+proc ::toxy::popup {path target remote entries args} {
+ eval {menu $path.pop} $args
+ set i 1
+ foreach e $entries {
+ $path.pop add command -label [lindex $e 0] \
+ -command [concat ::toxy::callback $target \
+ -text [lindex $e [expr {[llength $e] > 1}]] \; \
+ ::toxy::callback $remote $i]
+ incr i
+ }
+}
+
+proc ::toxy::kb {path target remote noctaves size} {
+ set lft [expr {round(5 * $size)}]
+ set top [expr {5 * $size}]
+ set bot [expr {100 * $size}]
+ set dx [expr {round(17 * $size)}]
+ set wid [expr {$dx - $size * .5}]
+ set blbot [expr {$bot * .65}]
+
+ $path config -height [expr {$bot + $top}] \
+ -width [expr {$dx * ($noctaves * 7 + 1) + $lft * 2 - 1}]
+
+ for {set octave 0} {$octave <= $noctaves} {incr octave} {
+ set prevkey 0
+ foreach key {0 2 4 5 7 9 11} {
+ set ndx [expr $octave * 12 + $key]
+ set id [$path create rect $lft $top \
+ [expr {$lft + $wid}] $bot -fill white -tags $path.$ndx]
+ $path bind $id <1> [concat ::toxy::kbset \
+ $path $target $remote $ndx]
+ if {$key - $prevkey > 1} {
+ incr ndx -1
+ set x [expr {$lft - $wid * .22}]
+ set id [$path create rect $x $top [expr {$x + $wid * .44}] \
+ $blbot -fill black -tags $path.$ndx]
+ $path bind $id <1> [concat ::toxy::kbset \
+ $path $target $remote $ndx]
+ }
+ set prevkey $key
+ incr lft $dx
+ if {$octave == $noctaves && $key == 0} break
+ }
+ }
+ set ::toxy::kbval($target) 0
+ set ::toxy::kbcol($target) white
+ $path itemconfig $path.0 -fill grey
+}
+
+proc ::toxy::kbout {path target remote} {
+ ::toxy::callback $target _cb $::toxy::kbval($target)
+ if {$remote != "."} {::toxy::callback $remote $::toxy::kbval($target)}
+}
+
+proc ::toxy::kbset {path target remote value} {
+ $path itemconfig $path.$::toxy::kbval($target) \
+ -fill $::toxy::kbcol($target)
+ set ::toxy::kbval($target) $value
+ set ::toxy::kbcol($target) [lindex [$path itemconfig $path.$value -fill] 4]
+ $path itemconfig $path.$value -fill grey
+ ::toxy::kbout $path $target $remote
+}
+
+# the default initializer
+#> default
+
+# pdtk_canvas_mouseup is a hack, which we must call anyway
+bind .- <ButtonRelease> {
+ eval .<|_inout 1.>
+ pdtk_canvas_mouseup .^.c [expr %x + [winfo x %W]] [expr %y + [winfo y %W]] %b
+}
+
+bind .- <1> .<|_click %x %y %b 0.>
+bind .- <3> .<|_click %x %y %b 8.>
+bind .- <Motion> .<|_motion %x %y.>
+bind .- <Enter> .<|_inout 1.>
+bind .- <Leave> .<|_inout 0.>
+
+#> bang button
+#. -image ::toxy::img::empty -command .<.>
+#. -bg pink -activebackground red -width 50 -height 50
+#. @bang .- flash .: .- invoke
+
+#> float scale
+#. -command .<.> -bg pink -activebackground red -length 200
+#. @float .- set .#1
+
+#> symbol entry
+#. -bg pink -font .(helvetica 24.) -width 16
+#. @symbol .- delete 0 end .: .- insert 0 .#1
+
+bind .- <Return> {eval .<[.- get].>; focus .^.c}
+
+#> kb canvas
+#. -bg yellow -cursor hand1
+#. #oct 4 #size .75
+#. @bang ::toxy::kbout .- .| .
+#. @float ::toxy::kbset .- .| . .#1
+
+::toxy::kb .- .| . .#oct .#size
+
+# undo the "bind Canvas <1> {+focus %W}" in the setup part above
+bind .- <FocusIn> {focus .^.c}