From 5689251b4df7456f43a0d3b357672bbd9fc3a40c Mon Sep 17 00:00:00 2001 From: carmen rocco Date: Tue, 19 Sep 2006 23:21:31 +0000 Subject: *** empty log message *** svn path=/trunk/; revision=5973 --- extensions/gui/ix/dd-demo.pd | 33 -- extensions/gui/ix/dd.wid | 32 -- extensions/gui/ix/dm-demo.pd | 32 -- extensions/gui/ix/dm.wid | 84 ---- extensions/gui/ix/filter-demo.pd | 72 ---- extensions/gui/ix/filter.wid | 286 ------------- extensions/gui/ix/grid-demo.pd | 69 ---- extensions/gui/ix/grid.wid | 46 --- extensions/gui/ix/img-demo.pd | 60 --- extensions/gui/ix/img.wid | 41 -- extensions/gui/ix/kbd-demo.pd | 61 --- extensions/gui/ix/kbd.wid | 48 --- extensions/gui/ix/knob-demo.pd | 43 -- extensions/gui/ix/knob.wid | 102 ----- extensions/gui/ix/lg-demo.pd | 68 ---- extensions/gui/ix/lg.wid | 237 ----------- extensions/gui/ix/mat-demo.pd | 53 --- extensions/gui/ix/mat.wid | 688 -------------------------------- extensions/gui/ix/ngrid-demo.pd | 310 -------------- extensions/gui/ix/ngrid.wid | 150 ------- extensions/gui/ix/nob-demo.pd | 74 ---- extensions/gui/ix/nob.wid | 105 ----- extensions/gui/ix/q-demo.pd | 90 ----- extensions/gui/ix/q.wid | 84 ---- extensions/gui/ix/sp-demo.pd | 325 --------------- extensions/gui/ix/sp.wid | 36 -- extensions/gui/ix/spectrum-demo.pd | 171 -------- extensions/gui/ix/spectrum.wid | 42 -- extensions/gui/ix/tile-demo.pd | 74 ---- extensions/gui/ix/tile.wid | 87 ---- extensions/gui/ix/toxy/dd-demo.pd | 33 ++ extensions/gui/ix/toxy/dd.wid | 32 ++ extensions/gui/ix/toxy/dm-demo.pd | 32 ++ extensions/gui/ix/toxy/dm.wid | 84 ++++ extensions/gui/ix/toxy/filter-demo.pd | 72 ++++ extensions/gui/ix/toxy/filter.wid | 286 +++++++++++++ extensions/gui/ix/toxy/grid-demo.pd | 69 ++++ extensions/gui/ix/toxy/grid.wid | 46 +++ extensions/gui/ix/toxy/img-demo.pd | 60 +++ extensions/gui/ix/toxy/img.wid | 41 ++ extensions/gui/ix/toxy/kbd-demo.pd | 61 +++ extensions/gui/ix/toxy/kbd.wid | 48 +++ extensions/gui/ix/toxy/knob-demo.pd | 43 ++ extensions/gui/ix/toxy/knob.wid | 102 +++++ extensions/gui/ix/toxy/lg-demo.pd | 68 ++++ extensions/gui/ix/toxy/lg.wid | 237 +++++++++++ extensions/gui/ix/toxy/mat-demo.pd | 53 +++ extensions/gui/ix/toxy/mat.wid | 688 ++++++++++++++++++++++++++++++++ extensions/gui/ix/toxy/ngrid-demo.pd | 310 ++++++++++++++ extensions/gui/ix/toxy/ngrid.wid | 150 +++++++ extensions/gui/ix/toxy/nob-demo.pd | 74 ++++ extensions/gui/ix/toxy/nob.wid | 105 +++++ extensions/gui/ix/toxy/q-demo.pd | 90 +++++ extensions/gui/ix/toxy/q.wid | 84 ++++ extensions/gui/ix/toxy/sp-demo.pd | 325 +++++++++++++++ extensions/gui/ix/toxy/sp.wid | 36 ++ extensions/gui/ix/toxy/spectrum-demo.pd | 171 ++++++++ extensions/gui/ix/toxy/spectrum.wid | 42 ++ extensions/gui/ix/toxy/tile-demo.pd | 74 ++++ extensions/gui/ix/toxy/tile.wid | 87 ++++ extensions/gui/ix/toxy/tree-demo.pd | 184 +++++++++ extensions/gui/ix/toxy/tree.wid | 184 +++++++++ extensions/gui/ix/tree-demo.pd | 184 --------- extensions/gui/ix/tree.wid | 184 --------- 64 files changed, 3971 insertions(+), 3971 deletions(-) delete mode 100755 extensions/gui/ix/dd-demo.pd delete mode 100755 extensions/gui/ix/dd.wid delete mode 100755 extensions/gui/ix/dm-demo.pd delete mode 100755 extensions/gui/ix/dm.wid delete mode 100755 extensions/gui/ix/filter-demo.pd delete mode 100755 extensions/gui/ix/filter.wid delete mode 100755 extensions/gui/ix/grid-demo.pd delete mode 100755 extensions/gui/ix/grid.wid delete mode 100755 extensions/gui/ix/img-demo.pd delete mode 100755 extensions/gui/ix/img.wid delete mode 100755 extensions/gui/ix/kbd-demo.pd delete mode 100755 extensions/gui/ix/kbd.wid delete mode 100755 extensions/gui/ix/knob-demo.pd delete mode 100755 extensions/gui/ix/knob.wid delete mode 100755 extensions/gui/ix/lg-demo.pd delete mode 100755 extensions/gui/ix/lg.wid delete mode 100755 extensions/gui/ix/mat-demo.pd delete mode 100755 extensions/gui/ix/mat.wid delete mode 100644 extensions/gui/ix/ngrid-demo.pd delete mode 100755 extensions/gui/ix/ngrid.wid delete mode 100755 extensions/gui/ix/nob-demo.pd delete mode 100755 extensions/gui/ix/nob.wid delete mode 100755 extensions/gui/ix/q-demo.pd delete mode 100755 extensions/gui/ix/q.wid delete mode 100755 extensions/gui/ix/sp-demo.pd delete mode 100755 extensions/gui/ix/sp.wid delete mode 100755 extensions/gui/ix/spectrum-demo.pd delete mode 100755 extensions/gui/ix/spectrum.wid delete mode 100755 extensions/gui/ix/tile-demo.pd delete mode 100755 extensions/gui/ix/tile.wid create mode 100755 extensions/gui/ix/toxy/dd-demo.pd create mode 100755 extensions/gui/ix/toxy/dd.wid create mode 100755 extensions/gui/ix/toxy/dm-demo.pd create mode 100755 extensions/gui/ix/toxy/dm.wid create mode 100755 extensions/gui/ix/toxy/filter-demo.pd create mode 100755 extensions/gui/ix/toxy/filter.wid create mode 100755 extensions/gui/ix/toxy/grid-demo.pd create mode 100755 extensions/gui/ix/toxy/grid.wid create mode 100755 extensions/gui/ix/toxy/img-demo.pd create mode 100755 extensions/gui/ix/toxy/img.wid create mode 100755 extensions/gui/ix/toxy/kbd-demo.pd create mode 100755 extensions/gui/ix/toxy/kbd.wid create mode 100755 extensions/gui/ix/toxy/knob-demo.pd create mode 100755 extensions/gui/ix/toxy/knob.wid create mode 100755 extensions/gui/ix/toxy/lg-demo.pd create mode 100755 extensions/gui/ix/toxy/lg.wid create mode 100755 extensions/gui/ix/toxy/mat-demo.pd create mode 100755 extensions/gui/ix/toxy/mat.wid create mode 100644 extensions/gui/ix/toxy/ngrid-demo.pd create mode 100755 extensions/gui/ix/toxy/ngrid.wid create mode 100755 extensions/gui/ix/toxy/nob-demo.pd create mode 100755 extensions/gui/ix/toxy/nob.wid create mode 100755 extensions/gui/ix/toxy/q-demo.pd create mode 100755 extensions/gui/ix/toxy/q.wid create mode 100755 extensions/gui/ix/toxy/sp-demo.pd create mode 100755 extensions/gui/ix/toxy/sp.wid create mode 100755 extensions/gui/ix/toxy/spectrum-demo.pd create mode 100755 extensions/gui/ix/toxy/spectrum.wid create mode 100755 extensions/gui/ix/toxy/tile-demo.pd create mode 100755 extensions/gui/ix/toxy/tile.wid create mode 100755 extensions/gui/ix/toxy/tree-demo.pd create mode 100755 extensions/gui/ix/toxy/tree.wid delete mode 100755 extensions/gui/ix/tree-demo.pd delete mode 100755 extensions/gui/ix/tree.wid (limited to 'extensions') diff --git a/extensions/gui/ix/dd-demo.pd b/extensions/gui/ix/dd-demo.pd deleted file mode 100755 index fb59154f..00000000 --- a/extensions/gui/ix/dd-demo.pd +++ /dev/null @@ -1,33 +0,0 @@ -#N canvas 170 459 559 300 12; -#X obj 11 9 widget dd dt -bg black -width 38 -fg orange; -#X obj 9 99 dac~; -#X obj 10 77 *~ 0.3; -#X obj 52 77 *~ 0.3; -#X msg 11 33 open \$1 \, 1; -#X obj 11 55 readsf~ 2; -#X obj 290 33 widget dd df -bg purple -fg white -width 11; -#X obj 99 65 widget dd dl2 -bg green -fg purple -width 22; -#X symbolatom 93 96 30 0 0 0 - - -; -#X obj 114 110 print; -#X text 98 50 drop some files here..; -#X obj 3 184 widget dd d12; -#X msg 4 162 list la la la la; -#X floatatom 326 82 5 0 0 0 - - -; -#X msg 372 88 -width \$1; -#X obj 344 114 tow . dd df; -#X text 329 10 < drag amongst widgets; -#X msg 273 96 clear; -#X obj 169 137 widget q q -width 64 -height 12 -bg gray90 -fg blue -; -#X connect 0 0 4 0; -#X connect 2 0 1 0; -#X connect 3 0 1 1; -#X connect 4 0 5 0; -#X connect 5 0 2 0; -#X connect 5 1 3 0; -#X connect 7 0 8 0; -#X connect 7 0 9 0; -#X connect 7 0 18 0; -#X connect 12 0 11 0; -#X connect 13 0 14 0; -#X connect 14 0 15 0; diff --git a/extensions/gui/ix/dd.wid b/extensions/gui/ix/dd.wid deleted file mode 100755 index b82252ac..00000000 --- a/extensions/gui/ix/dd.wid +++ /dev/null @@ -1,32 +0,0 @@ -namespace eval ::ix { -proc dd {path target symbol args} { - set sym [join [lrange $args 0 end] " "] - $path delete 0 end - $path insert 0 $sym - ddp $target $symbol $sym -} -proc ddp {target symbol stuff} { - if {$symbol == 1} { - pd "$target.rp _cb symbol [pdtk_enquote $stuff];" - } else { - pd "$target.rp _cb $stuff;" - } -} -} -#> dd entry -#. -selectforeground black -selectbackground green -#. -bg blue -font .(helvetica 10.) -width 24 -borderwidth 0 -#. #symbol 1 -#. @bang ::ix::ddp .| .#symbol [.- get] -#. @list ::ix::dd .- .| 0 .#args -#. @symbol ::ix::dd .- .| 1 .#1 -#. @clear .- delete 0 end -package require tkdnd -puts "dd .- .|" -bind .- {focus .-} -dnd bindtarget .- text/uri-list {foreach i %D {::ix::dd .- .| .#symbol [regsub -- "^file://" $i ""]}} -dnd bindtarget .- text/plain {::ix::dd .- .| .#symbol %D} -dnd bindsource .- text/plain {return [.- get]} -dnd bindsource .- text/uri-list {return "\{[.- get]\}"} -bind .- {dnd drag %W} -bind .- {::ix::ddp .| .#symbol [.- get]} diff --git a/extensions/gui/ix/dm-demo.pd b/extensions/gui/ix/dm-demo.pd deleted file mode 100755 index b128e211..00000000 --- a/extensions/gui/ix/dm-demo.pd +++ /dev/null @@ -1,32 +0,0 @@ -#N canvas 45 442 370 233 10; -#X msg 190 127 clear; -#X symbolatom 187 203 10 0 0 0 - - -; -#X obj 187 155 widget dm dm1 #items .( zero one two three four five -six seven eight nine ten eleven twelve thirteen i14 i15 i16 i17 i18 -i19 i20 i21 i22 i23 i24 i25 i26 i27 i28 i29 i30.) #arrows 0; -#X obj 140 17 widget dm dm1 #items .(0 1 2 3 4 5 6 7 8 9 10 11 12.) --bg gray; -#X obj 187 185 l2s; -#X obj 56 119 l2s; -#X msg 56 76 zero one two three four five six seven eight nine ten -eleven twelve thirteen i14 i15 i16 i17 i18 i19 i20 i21 i22 i23 i24 -i25 i26 i27 i28 i29 i30; -#X msg 4 60 list ichi ni san chi; -#X msg 56 136 #items .( \$1.); -#X msg 92 25 5; -#X msg 89 8 12; -#X msg 259 138 #arrows \$1; -#X obj 258 122 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 -1; -#X connect 0 0 2 0; -#X connect 2 0 4 0; -#X connect 3 0 2 0; -#X connect 4 0 1 0; -#X connect 5 0 8 0; -#X connect 6 0 5 0; -#X connect 7 0 2 0; -#X connect 8 0 2 0; -#X connect 9 0 3 0; -#X connect 10 0 3 0; -#X connect 11 0 2 0; -#X connect 12 0 11 0; diff --git a/extensions/gui/ix/dm.wid b/extensions/gui/ix/dm.wid deleted file mode 100755 index 389e31bb..00000000 --- a/extensions/gui/ix/dm.wid +++ /dev/null @@ -1,84 +0,0 @@ -#console show -namespace eval ::ix { - variable _ - proc spin_resize {w} { -# update - $w config -height [winfo height $w] -width [winfo width $w] - } - proc spin {c w t bg fg font items arrows} { - if {[winfo exists $w.m] != 1} { - variable _ - set _($t:p) 0 - array set arrow "up \u25b2 dn \u25bc"; array set anchor "up n dn s" - menubutton $w.m -menu $w.m.m -textvariable _($t:t) -relief raised \ - -bg $bg -fg $fg -font $font -padx 0 -pady 0 - menu $w.m.m -bd 0 -bg $bg -fg $fg; pack $w.m -side left -fill y - if {$arrows == 1} { - foreach i {up dn} { - button $w.$i -padx 0 -pady 0 -text $arrow($i) \ - -command "::ix::spinclick $w $t $i" \ - -bd 0 -bg $bg -fg $fg -font {Times 6} - pack $w.$i -anchor $anchor($i) - } - } - spin_resize $w - foreach item $items {spinitem $w $t $item} - $w.m.m activate 0; $w.m.m invoke 0 - } - } - proc spinitem {w t item} { - variable _ - set len [$w.m.m index end]; - if {$len ne "none"} {set n [expr $len + 1]} else {set n 0} - $w.m.m add radiobutton -selectcolor green -font {Tahoma 8} -label $item -variable _($t:t) -command "::ix::spinout $w $t $n" - set wider [string length $item]; set wide [$w.m cget -width] - if {$wide < $wider && $wider <= 31 } { - $w.m configure -width $wider - spin_resize $w - } - $w.m.m activate $n - } - proc spinout {w t i} { - set sym [$w.m.m entrycget $i -label] - pd [concat $t.rp _cb $sym \;] - $w.m.m activate $i - } - proc spinclick {w t d} { - variable _ - array set shift "up -1 dn 1" - set len [$w.m.m index end]; - set pos $_($t:p) - if {$pos != "none"} { - incr pos $shift($d) - if {$pos > $len} {set pos 0} - if {$pos < 0} {set pos $len} - $w.m.m activate $pos - $w.m.m invoke $pos - } - set _($t:p) $pos - } - proc spinclear {w} { - $w.m.m delete 0 end - $w.m configure -width 0 - } -} -#> dm frame -#. -bg green -padx 4 -pady 4 -height 40 -width 86 #arrows 1 -#. #bg black #fg "#8888ff" #items {} #font {Tahoma 10} -#. @list foreach x [list .#args] {::ix::spinitem .- .| $x} -#. @symbol ::ix::spinitem .- .| {.#1} -#. @float .-.m.m invoke .#1 .: set ::ix::_(.|:p) .#1 -#. @clear ::ix::spinclear .- -puts "dm .- .|" -::ix::spin .^ .- .| .#bg .#fg .#font .#items .#arrows -bind .- {focus .-} -bind .- {focus .^.c} -bind .- <> {::ix::spinclick .- .| dn} -bind .- <> {::ix::spinclick .- .| up} -event add <> -event add <> -foreach el {.- .-.m} { - bind $el {if {%D > 0} {::ix::spinclick .- .| up} else {::ix::spinclick .- .| dn}} - bind $el {::ix::spinclick .- .| up} - bind $el {::ix::spinclick .- .| dn} -} diff --git a/extensions/gui/ix/filter-demo.pd b/extensions/gui/ix/filter-demo.pd deleted file mode 100755 index c98ec407..00000000 --- a/extensions/gui/ix/filter-demo.pd +++ /dev/null @@ -1,72 +0,0 @@ -#N canvas 218 245 450 232 10; -#X obj 51 67 widget filter f1 #div 8 #log 6.53061 #rate 44100 #n 5 -; -#X msg 11 42 redefine; -#X obj 185 259 biquad~; -#X obj 223 259 biquad~; -#X obj 261 259 biquad~; -#X obj 298 259 biquad~; -#X obj 336 259 biquad~; -#X obj 52 276 multiplex~ 0 99 23 44 88 22; -#X msg 35 18 #log \$1; -#X obj 23 7 hsl 50 10 5 10 0 0 empty empty empty -2 -6 0 8 -262144 --1 -1 0 1; -#X msg 41 -10 10; -#X msg 20 -10 0; -#X floatatom 80 29 3 1 5 0 - - -; -#X obj 189 278 biquad~; -#X obj 225 278 biquad~; -#X obj 263 278 biquad~; -#X obj 300 278 biquad~; -#X obj 337 278 biquad~; -#X obj 52 293 multiplex~ 0 99 23 44 88 22; -#X obj 51 225 route n params; -#X msg 80 43 #n \$1; -#X obj 206 242 route 1 2 3 4 5; -#X obj 184 242 adc~; -#X obj 52 310 dac~; -#X connect 0 0 19 0; -#X connect 1 0 0 0; -#X connect 2 0 3 0; -#X connect 2 0 7 1; -#X connect 3 0 4 0; -#X connect 3 0 7 2; -#X connect 4 0 5 0; -#X connect 4 0 7 3; -#X connect 5 0 6 0; -#X connect 5 0 7 4; -#X connect 6 0 7 5; -#X connect 7 0 23 0; -#X connect 8 0 0 0; -#X connect 9 0 8 0; -#X connect 10 0 9 0; -#X connect 11 0 8 0; -#X connect 12 0 20 0; -#X connect 13 0 14 0; -#X connect 13 0 18 1; -#X connect 14 0 15 0; -#X connect 14 0 18 2; -#X connect 15 0 16 0; -#X connect 15 0 18 3; -#X connect 16 0 17 0; -#X connect 16 0 18 4; -#X connect 17 0 18 5; -#X connect 18 0 23 1; -#X connect 19 0 7 0; -#X connect 19 0 18 0; -#X connect 19 1 21 0; -#X connect 20 0 0 0; -#X connect 21 0 2 0; -#X connect 21 0 13 0; -#X connect 21 1 3 0; -#X connect 21 1 14 0; -#X connect 21 2 4 0; -#X connect 21 2 15 0; -#X connect 21 3 5 0; -#X connect 21 3 16 0; -#X connect 21 4 6 0; -#X connect 21 4 17 0; -#X connect 22 0 7 0; -#X connect 22 0 2 0; -#X connect 22 1 18 0; -#X connect 22 1 13 0; diff --git a/extensions/gui/ix/filter.wid b/extensions/gui/ix/filter.wid deleted file mode 100755 index b05c938a..00000000 --- a/extensions/gui/ix/filter.wid +++ /dev/null @@ -1,286 +0,0 @@ -namespace eval ::ix { - proc random_int {} { - return [expr "int(floor(rand()*16))"] - } - proc random_clr {} { - return [format "\#%1X%1X%1X%1X%1X%1X" [random_int] [random_int] [random_int] [random_int] [random_int] [random_int]] - } - variable _ - proc filter_update {path target n} { - set type [$path.filter itemcget type_$n -text] - set q [$path.filter itemcget q_$n -text] - set loc [$path.filter coords sqr_$n] - set x [expr 5 + [lindex $loc 0]] - set y [expr 5 + [lindex $loc 1]] - set inv [filter_invtr $path $target $x $y] - set freq [lindex $inv 0] - set mag [lindex $inv 1] - filter_bqp $path $target $n $type $freq $mag $q - } - proc filter_bqp {path target n type f0 dBgain Q} { - variable _ - set A [expr pow(10,($dBgain/40.0))] - set Fs $_($target:rate) - set pi [expr {atan(1) * 4}] - set w0 [expr 2 * $pi * $f0 / $Fs] - set alpha [expr sin($w0) / (2 * $Q)] - switch $type { - notch { - set b0 1 - set b1 [expr -2 * cos($w0)] - set b2 1 - set a0 [expr 1 + $alpha] - set a1 $b1 - set a2 [expr 1 - $alpha] - } - lowpass { - set b0 [expr (1 - cos($w0))/2] - set b1 [expr 1 - cos($w0)] - set b2 $b0 - set a0 [expr 1 + $alpha] - set a1 [expr -2 * cos($w0)] - set a2 [expr 1 - $alpha] - } - highpass { - set b0 [expr (1 + cos($w0))/2] - set b1 [expr -(1 + cos($w0))] - set b2 $b0 - set a0 [expr 1 + $alpha] - set a1 [expr -2 * cos($w0)] - set a2 [expr 1 - $alpha] - } - qbandpass { - set b0 [expr sin($w0)/2] - set b1 0 - set b2 [expr -$b0] - set a0 [expr 1 + $alpha] - set a1 [expr -2 * cos($w0)] - set a2 [expr 1 - $alpha] - } - bandpass { - set b0 $alpha - set b1 0 - set b2 [expr -$alpha] - set a0 [expr 1 + $alpha] - set a1 [expr -2 * cos($w0)] - set a2 [expr 1 - $alpha] - } - allpass { - set b0 [expr 1 - $alpha] - set b1 [expr -2 * cos($w0)] - set b2 [expr 1 + $alpha] - set a0 $b2 - set a1 $b1 - set a2 $b0 - } - peakingEQ { - set b0 [expr 1 + $alpha * $A] - set b1 [expr -2 * cos($w0)] - set b2 [expr 1 - $alpha * $A] - set a0 [expr 1 + $alpha / $A] - set a1 $b1 - set a2 [expr 1 - $alpha / $A] - } - lowShelf { - set b0 [expr $A*(($A+1)-($A-1)*cos($w0)+2*sqrt($A)*$alpha)] - set b1 [expr 2*$A*(($A-1)-($A+1)*cos($w0))] - set b2 [expr $A*(($A+1)-($A-1)*cos($w0)-2*sqrt($A)*$alpha)] - set a0 [expr ($A+1)+($A-1)*cos($w0)+2*sqrt($A)*$alpha] - set a1 [expr -2*(($A-1)+($A+1)*cos($w0))] - set a2 [expr ($A+1)+($A-1)*cos($w0) - 2*sqrt($A)*$alpha ] - } - highShelf { - set b0 [expr $A*(($A+1)+($A-1)*cos($w0)+2*sqrt($A)*$alpha)] - set b1 [expr -2*$A*(($A-1)+($A+1)*cos($w0))] - set b2 [expr $A*(($A+1)+($A-1)*cos($w0)-2*sqrt($A)*$alpha)] - set a0 [expr ($A+1)-($A-1)*cos($w0)+2*sqrt($A)*$alpha] - set a1 [expr 2*(($A-1)-($A+1)*cos($w0))] - set a2 [expr ($A+1)-($A-1)*cos($w0) - 2*sqrt($A)*$alpha ] - } - } - set f 0 - set fr {} - set _($target:fmag_$n) {1} - set h [winfo height $path.filter] - set h2 [expr $h / 2] - while {$f < [winfo width $path.filter]} { - incr f - set w [expr $pi * [filter_invtr_x $path $target $f] / $_($target:nyquist)] - set mag [expr sqrt(pow(($b0+$b1*cos($w)+$b2*cos(2*$w)),2)+pow(($b1*sin($w)+$b2*sin(2*$w)),2))/sqrt(pow(($a0+$a1*cos($w)+$a2*cos(2*$w)),2)+pow(($a1*sin($w)+$a2*sin(2*$w)),2))] - lappend fr $f [expr $h - $h2 * $mag] - lappend _($target:fmag_$n) $mag - } - $path.filter coords resp_$n $fr - pd [concat $target.rp _cb params $n [expr -1 * $a1 / $a0] [expr -1 * $a2 / $a0] [expr $b0 / $a0] [expr $b1 / $a0] [expr $b2 / $a0] \;] - filter_resp $path $target - } - proc filter_resp {path target} { - variable _ - if {$_($target:init) == 1} { - set f 0 - set fr {} - set h [winfo height $path.filter] - set h2 [expr $h / 2] - while {$f < [winfo width $path.filter]} { - incr f - set cx 0 - set ci 1 - while {$cx < $_($target:n)} { - incr cx - set ci [expr $ci * [lindex $_($target:fmag_$cx) $f]] - } - lappend fr $f [expr $h - $h2 * $ci] - } - $path.filter coords resp $fr - } - } - proc filter_motion {path target x y} { - set v [filter_invtr $path $target $x $y] - $path itemconfigure freq -text "[expr int([lindex $v 0])] hz" -# $path itemconfigure dB -text "[expr int([lindex $v 1])] dB" - } - proc filter_invtr {path target x y} { - return [list [filter_invtr_x $path $target $x] [filter_invtr_y $path $target $y]] - } - proc filter_invtr_x {path target x} { - variable _ - set gw [winfo width $path] - if {$_($target:log) > 0} { - return [expr $_($target:scale) * exp($_($target:log) * $x / $gw.0)] - } else { - return freq [expr $_($target:nyquist) * $x / $gw.0] - } - } - proc filter_invtr_y {path target y} { - set gh [winfo height $path] - return [expr (12 * ($y / $gh.0 - 0.5) * - 1.0)] - } - proc filter_new {path target w h bg div log rate n} { - variable _ - set _($target:init) 0 - set _($target:n) $n - set _($target:log) $log - set _($target:rate) $rate - set _($target:nyquist) [expr $rate / 2] - set _($target:scale) [expr $_($target:nyquist) / exp($_($target:log))] - if {[winfo exists $path.filter] != 1} { - canvas $path.filter -bg $bg -width $w -height $h - pack $path.filter -side left - bind $path.filter "::ix::filter_motion %W $target %x %y" -# bind $path.filter "::ix::filter_resp $path $target" - bind $path.filter { - %W itemconfigure freq -text "" - %W itemconfigure dB -text "" - } - bind $path.filter <1> "::ix::filter_click $path $target %x %y" - bind $path.filter [bind $path.filter <1>] - filter_gridlines $path $target $div - filter_filters $path $target $n - $path.filter create text 2 1 -tags freq -text "" -anchor nw -justify left -font {{Bitstream Vera Sans} 9} -# $path.filter create text 96 1 -tags dB -text "" -anchor ne -justify right -font {{Bitstream Vera Sans} 9} - $path.filter create line 0 0 0 0 -tags resp -fill grey44 -width 1.6 - set fn 0 - while {$fn < $n} { - incr fn - foreach a [list sqr_$fn type_$fn q_$fn] {$path.filter raise $a} - } - set bd [expr {[$path cget -bd] * 2}] - $path configure -bg $bg -width [expr [winfo width $path.filter] + $bd] -height [expr [winfo height $path.filter] + $bd] - } - pd "$target.rp _cb n $n;" - set _($target:init) 1 - } - proc filter_filters {path target n} { - set gh [winfo height $path.filter] - set gw [winfo width $path.filter] - set fn 0 - while {$fn < $n} { - incr fn - set px [expr $gw.0 * $fn.0 / $n.0] - set py [expr $gh.0 / 2.0] - set fill [random_clr] - $path.filter create rectangle 0 0 0 0 -tags sqr_$fn -fill $fill - $path.filter create line 0 0 0 0 -tags resp_$fn -fill $fill - $path.filter create text 0 0 -tags type_$fn -fill grey33 -font {{Bitstream Vera Sans} 8} -text "peakingEQ" -anchor e -justify right - $path.filter create text 0 0 -tags q_$fn -fill white -font {{Bitstream Vera Sans} 8} -text "1.0" -anchor w -justify left - set b1 "::ix::filter_move $path $target $fn %x %y" - set b2 "::ix::filter_menu $path $target $fn %X %Y" - set b3 "::ix::filter_move_q $path $target $fn %x %y" - set b4 "::ix::filter_locus $path $target $fn %x %y" - foreach a [list sqr_$fn type_$fn q_$fn] { - $path.filter bind $a <1> $b1 - $path.filter bind $a <2> $b2 - $path.filter bind $a <3> $b4 - $path.filter bind $a $b3 - $path.filter bind $a $b1 - } - filter_move $path $target $fn $px $py - } - } - proc filter_menu {path target n x y} { - if {[winfo exists $path.ft] == 1} { destroy $path.ft} - set m [menu $path.ft -tearoff no] - foreach ft {lowpass highpass qbandpass bandpass notch allpass peakingEQ lowShelf highShelf} { - $m add command -label $ft -command "::ix::filter_type $path $target $n $ft" - } - tk_popup $path.ft $x $y - } - proc filter_type {path target n type} { - $path.filter itemconfigure type_$n -text "$type" - filter_update $path $target $n - } - proc filter_click {path target x y} { - variable _ - filter_move $path $target $_($target:recent) $x $y - } - proc filter_move {path target n px py} { - variable _ - $path.filter coords sqr_$n [expr $px - 5] [expr $py - 5] [expr $px + 5] [expr $py + 5] - $path.filter coords type_$n [expr $px - 9] [expr $py] - $path.filter coords q_$n [expr $px + 9] [expr $py] - filter_motion $path.filter $target $px $py - set _($target:recent) $n - filter_update $path $target $n - } - proc filter_locus {path target n px py} { - variable _ - set _($target:lx) $px - } - proc filter_move_q {path target n px py} { - variable _ - set delta [expr ($px.0 - $_($target:lx).0) / 25] - set move [expr [$path.filter itemcget q_$n -text] + $delta] - if {$move > 0} { - $path.filter itemconfigure q_$n -text $move - } - filter_update $path $target $n - set _($target:lx) $px - } - proc filter_gridlines {path target lines} { - variable _ - puts "gridlines" - set color white - set w $path.filter - $w delete gridlines - set gh [winfo height $w] - set gw [winfo width $w] - for {set x 1} {$x <= $lines} {incr x} { - if {$lines < 16 && $lines > 0} { - set oh [expr $gh.0 * $x.0 / $lines.0] - set ow [expr $gw.0 * $x.0 / $lines.0] - $w create line $ow 0 $ow $gh -fill $color -tags gridlines - $w create line 0 $oh $gw $oh -fill $color -tags gridlines - set fontsize [expr int(80.0/$lines.0)] - $w create text $ow [expr $gh - $fontsize] -font [list {Bitstream Vera Sans} $fontsize] -tags gridlines -text [expr int([filter_invtr_x $path $target $ow])] - } - } - $w raise ${target}sqr - } -} -#> filter frame -#. -bd 3 #w 384 #h 144 #bg gray90 #div 6 #n 3 -#. #log 1 #rate 44100 -#. @div ::ix::filter_gridlines .- .| .#1 -#. @params ::ix::filter_lp .- .| .#args -puts "filter .- .|" -::ix::filter_new .- .| .#w .#h .#bg .#div .#log .#rate .#n diff --git a/extensions/gui/ix/grid-demo.pd b/extensions/gui/ix/grid-demo.pd deleted file mode 100755 index 24a2dc66..00000000 --- a/extensions/gui/ix/grid-demo.pd +++ /dev/null @@ -1,69 +0,0 @@ -#N canvas 361 266 709 441 12; -#X obj 88 210 pack 0 0; -#X floatatom 151 352 7 0 0 0 - - -; -#X floatatom 200 351 7 0 0 0 - - -; -#X obj 151 331 unpack; -#X obj 151 228 widget grid g5a #bg white #fg purple #div 5 #shape rectangle -#w 95 #h 95 #ln pink #x 0.889764 #size 56 -width 55 -height 55; -#X obj 270 184 widget grid g3; -#X obj 402 154 widget grid g4 #fg orange #bg black #w 264 #h 159 #div -0; -#X obj 269 53 widget grid gg #shape oval #bg orange #fg pink #ln white -#div 2 #size 67; -#X obj 136 53 widget grid bllldie #bg red #fg white #ln gray #shape -arc #size 44 #div 22; -#X floatatom 131 12 5 0 0 0 - - -; -#X msg 131 30 #div \$1; -#X msg 269 31 #size \$1; -#X floatatom 269 13 5 0 0 0 - - -; -#X floatatom 403 110 5 0 0 0 - - -; -#X msg 403 129 #w \$1; -#X floatatom 442 110 5 0 0 0 - - -; -#X msg 442 129 #h \$1; -#X obj 66 174 random 100; -#X obj 43 133 t b b; -#X obj 29 157 random 100; -#X obj 44 198 * 0.01; -#X obj 43 97 bng 33 250 50 0 empty empty empty 0 -6 0 8 -225271 -1 --1; -#X obj 135 186 / 100; -#X text 426 25 #w #h #bg #fg #ln #div #shape #size; -#X obj 530 81 tot .; -#X msg 529 57 tot console show; -#X obj 199 370 * 200; -#X obj 339 315 widget grid g3902 #bg green #fg gray #ln yellow #div -3 #w 97 #h 97; -#X obj 456 376 widget grid #bg #fg gray #w 32 #h 32; -#X obj 149 395 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 --262144 -1 -1 0.66 256; -#X obj 35 71 metro 333; -#X obj 40 46 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 -; -#X connect 0 0 4 0; -#X connect 2 0 26 0; -#X connect 3 0 1 0; -#X connect 3 0 29 0; -#X connect 3 1 2 0; -#X connect 4 0 3 0; -#X connect 5 0 8 0; -#X connect 6 0 5 0; -#X connect 7 0 5 0; -#X connect 9 0 10 0; -#X connect 10 0 8 0; -#X connect 11 0 7 0; -#X connect 12 0 11 0; -#X connect 13 0 14 0; -#X connect 14 0 6 0; -#X connect 15 0 16 0; -#X connect 16 0 6 0; -#X connect 17 0 22 0; -#X connect 18 0 19 0; -#X connect 18 1 17 0; -#X connect 19 0 20 0; -#X connect 20 0 0 0; -#X connect 21 0 18 0; -#X connect 22 0 0 1; -#X connect 25 0 24 0; -#X connect 30 0 21 0; -#X connect 31 0 30 0; -#X coords 0 0 1 1 200 140 1; diff --git a/extensions/gui/ix/grid.wid b/extensions/gui/ix/grid.wid deleted file mode 100755 index 1d177ad8..00000000 --- a/extensions/gui/ix/grid.wid +++ /dev/null @@ -1,46 +0,0 @@ -namespace eval ::ix { - proc grid_click {w target r hy hx hh ww size} { - switch $r { - 0 { set y [expr $hy / $hh.0] - set x [expr $hx / $ww.0]} - 1 { set x $hx - set y $hy - set hx [expr $ww * $hx] - set hy [expr $hh * $hy]}} - set rs [expr $size / 2] - $w coords ${target}sqr [expr $hx - $rs] [expr $hy - $rs] [expr $hx + $rs] [expr $hy + $rs] - pd "$target.rp _cb $x $y;" - } - proc grid_new {path target w h bg fg ln div shape size} { - if {[winfo exists $path.grid] != 1} { - canvas $path.grid -bg $bg - $path configure -width $w -height $h - place $path.grid -anchor nw -relwidth 1 -relheight 1 - $path.grid create $shape 0 0 0 0 -fill $fg -tags ${target}sqr - grid_click $path.grid $target 1 0.5 0.5 $h $w $size - grid_lines $path.grid $target $div $w $h $ln - bind $path.grid <1> "::ix::grid_click %W $target 0 %y %x $h $w $size" - bind $path.grid "::ix::grid_click %W $target 0 %y %x $h $w $size" - } - } - proc grid_lines {w target lines ww hw color} { - $w delete gridlines - for {set x 1} {$x <= $lines} {incr x} { - if {$lines < 64} { - set oh [expr $hw.0 * $x.0 / $lines.0] - set ow [expr $ww.0 * $x.0 / $lines.0] - $w create line $ow 0 $ow $hw -fill $color -tags gridlines - $w create line 0 $oh $ww $oh -fill $color -tags gridlines - } - } - $w raise ${target}sqr - } -} -#> grid frame -#. -bd 3 -#. #w 128 #h 128 #x 0.5 #y 0.5 -#. #fg red #bg blue #ln yellow -#. #shape rectangle #size 12 #div 5 -#. @list ::ix::grid_click .-.grid .| 1 .#2 .#1 .#h .#w .#size - -::ix::grid_new .- .| .#w .#h .#bg .#fg .#ln .#div .#shape .#size diff --git a/extensions/gui/ix/img-demo.pd b/extensions/gui/ix/img-demo.pd deleted file mode 100755 index 195d86a8..00000000 --- a/extensions/gui/ix/img-demo.pd +++ /dev/null @@ -1,60 +0,0 @@ -#N canvas 0 0 818 675 12; -#X obj 134 121 widget img i1; -#X obj 328 135 widget img img__guns #src /var/www/_/_i/p/_guns.gif -; -#X obj 328 167 widget img img__lunch #src /var/www/_/_i/p/_lunch.gif -; -#X obj 308 205 widget img img__roast #src /var/www/_/_i/p/_roast.gif -; -#X obj 328 231 widget img img__door #src /var/www/_/_i/p/_door.gif -; -#X obj 328 263 widget img img__fruit #src /var/www/_/_i/p/_fruit.gif -; -#X obj 328 295 widget img img__crop #src /var/www/_/_i/p/_crop.gif -; -#X obj 328 327 widget img img__twogirls #src /var/www/_/_i/p/_twogirls.gif -#mouseover 1; -#X obj 328 359 widget img img__345 #src /var/www/_/_i/p/_345.gif; -#X obj 328 391 widget img img__machinery #src /var/www/_/_i/p/_machinery.gif -; -#X obj 175 252 route _roast _guns; -#X obj 175 280 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 224 275 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 170 222 a2l; -#X obj 172 174 print wtf; -#X obj 189 131 a2l; -#X obj 381 -297 widget img img_guns #src /var/www/_/_i/p/guns.jpg; -#X obj 96 132 widget img img__pissers #src /var/www/_/_i/p/_pissers.gif -; -#X obj 96 164 widget img img__w3 #src /var/www/_/_i/p/_w3.gif; -#X obj 96 196 widget img img__w1 #src /var/www/_/_i/p/_w1.gif; -#X obj 96 228 widget img img__db #src /var/www/_/_i/p/_db.gif; -#X obj 96 260 widget img img__w4 #src /var/www/_/_i/p/_w4.gif; -#X obj 96 292 widget img img__scream #src /var/www/_/_i/p/_scream.gif -; -#X obj 96 324 widget img img__chair #src /var/www/_/_i/p/_chair.gif -; -#X obj 96 356 widget img img__dog #src /var/www/_/_i/p/_dog.gif; -#X obj 96 388 widget img img__w2 #src /var/www/_/_i/p/_w2.gif; -#X obj 96 420 widget img img__h #src /var/www/_/_i/p/_h.gif; -#X obj 96 452 widget img img__shitters #src /var/www/_/_i/p/_shitters.gif -; -#X obj 96 484 widget img img__violation #src /var/www/_/_i/p/_violation.gif -; -#X obj 96 516 widget img img__melt #src /var/www/_/_i/p/_melt.gif; -#X msg 206 326 #mouseover \$1; -#X obj 209 303 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 -1; -#X connect 1 0 13 0; -#X connect 3 0 13 0; -#X connect 3 0 15 0; -#X connect 7 0 14 0; -#X connect 10 0 11 0; -#X connect 10 1 12 0; -#X connect 13 0 10 0; -#X connect 15 0 14 0; -#X connect 16 0 14 0; -#X connect 30 0 7 0; -#X connect 31 0 30 0; diff --git a/extensions/gui/ix/img.wid b/extensions/gui/ix/img.wid deleted file mode 100755 index 34c82dfe..00000000 --- a/extensions/gui/ix/img.wid +++ /dev/null @@ -1,41 +0,0 @@ -#console show -package require Img -package require tkdnd -namespace eval ::ix { - variable _ - proc drop_pics {name files x y} { - set c 0 - for {set n 0} {$n < [llength $files]} {incr n} { - if {[regexp {.*/(.+)\.[a-zA-Z0-9]+$} [lindex $files $n] file obj] == 1} { - pd [concat $name obj $x [expr $y + ($c * 32)] widget img [pdtk_enquote [string tolower "img_${obj}"]] #src [pdtk_enquote [regsub -- "^file:" [lindex $files $n] ""]] \;] - incr c - } - } - } - proc pic {c p t src mouseover} { - variable _ - image create photo $t - $p configure -image $t - if {$src ne "none" && [file exists $src]} { - $t configure -file $src - set cb "pd \"$t _cb [lindex [regexp -inline {.*/(.+)\.[a-zA-Z0-9]+$} $src] 1] \;\"" - bind $p "$t configure -gamma 2" - if {$mouseover != 0} { - bind $p +$cb - } - bind $p "$t configure -gamma 1" - bind $p "+$t configure -gamma 0.5; $cb" - bind $p "+$t configure -gamma 1" - } else { - $t configure -format gif -data {R0lGODdhDgAQAKIAAICAgP///8DAwAAAAP8AAP///////////ywAAAAADgAQAAADWQi63Bi6HIIDGLocggMYuhyCAxi6HIIDEUFIEUSBIQMRGEFEhKEyoBoQUUQEykBEYBARBUbIQGAEUQQSRcggYOhyCA5g6HIIDmDocggOYOhyCA6g6LLi6HInADs=} - dnd bindtarget $c.c text/uri-list "::ix::drop_pics $c %D %x %y" - } - set _($t:loc) 0 - } -} -#> img label -#. -borderwidth 0 -#. #src none #mouseover 1 -#. @bang puts "bang" -::ix::pic .^ .- .| {.#src} .#mouseover -puts "pic .- .|" diff --git a/extensions/gui/ix/kbd-demo.pd b/extensions/gui/ix/kbd-demo.pd deleted file mode 100755 index a9baf395..00000000 --- a/extensions/gui/ix/kbd-demo.pd +++ /dev/null @@ -1,61 +0,0 @@ -#N canvas 360 12 574 324 12; -#X obj 56 57 widget kbd k1 #octaves 7 -width 444.094 -height 63.4421 -; -#X obj 56 134 unpack; -#X floatatom 56 155 5 0 0 0 - - -; -#X floatatom 90 155 5 0 0 0 - - -; -#X floatatom 98 135 5 0 0 0 - - -; -#X obj 56 29 pack 0 1; -#X floatatom 56 13 5 0 0 0 - - -; -#X obj 99 14 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 -; -#X floatatom 21 32 5 0 0 0 - - -; -#X obj 56 217 osc~ 440; -#X obj 56 196 mtof; -#X obj 110 217 line~; -#X msg 110 195 \$1 100; -#X obj 80 265 dac~ 1 2; -#X obj 81 242 *~; -#X obj 92 173 * 0.4; -#X floatatom 149 21 5 0 12 0 - - -; -#X msg 148 38 #octaves \$1; -#X obj 143 134 widget kbd k2 #octaves 3 #bg hotpink #fg orange -height -32; -#X obj 56 174 + 36; -#X obj 345 134 widget kbd k2 #octaves 3 #bg blue #fg cyan -height 32 -; -#X obj 207 232 * 127; -#X obj 171 230 + 36; -#X obj 171 265 noteout; -#X obj 170 203 unpack 0 0 0; -#X obj 160 172 Append 1; -#X obj 232 173 Append 2; -#X connect 0 0 1 0; -#X connect 0 0 4 0; -#X connect 1 0 2 0; -#X connect 1 1 3 0; -#X connect 2 0 19 0; -#X connect 3 0 15 0; -#X connect 5 0 0 0; -#X connect 6 0 5 0; -#X connect 7 0 5 1; -#X connect 8 0 0 0; -#X connect 9 0 14 0; -#X connect 10 0 9 0; -#X connect 11 0 14 1; -#X connect 12 0 11 0; -#X connect 14 0 13 0; -#X connect 14 0 13 1; -#X connect 15 0 12 0; -#X connect 16 0 17 0; -#X connect 17 0 0 0; -#X connect 18 0 25 0; -#X connect 19 0 10 0; -#X connect 20 0 26 0; -#X connect 21 0 23 1; -#X connect 22 0 23 0; -#X connect 24 0 22 0; -#X connect 24 1 21 0; -#X connect 24 2 23 2; -#X connect 25 0 24 0; -#X connect 26 0 24 0; diff --git a/extensions/gui/ix/kbd.wid b/extensions/gui/ix/kbd.wid deleted file mode 100755 index 06c1d7e7..00000000 --- a/extensions/gui/ix/kbd.wid +++ /dev/null @@ -1,48 +0,0 @@ -namespace eval ::ix { - proc kbd_list {p t args} { - variable _ - set w $p.f[expr [lindex $args 0] / 12].[lindex $args 0] - if {[llength $args] == 1} {set v 1;if {$_($t:lp) != -1 && $_($t:lp) ne $w} {kbd_action $_($t:lp) $t 0}} {set v [lindex $args 1]} - kbd_action $w $t $v - set _($t:lp) $w} - - proc kbd_play {t m b x y} { - variable _ - foreach a {{rs {0 sunken 1 raised}} {v {0 0 1 {($y - [winfo rooty $w]) / ([winfo height $w] + 0.0)}}}} {array set [lindex $a 0] [lindex $a 1]} - set w [winfo containing $x $y] - if {$m != 1 && $_($t:lp) != -1 && $_($t:lp) ne $w} {kbd_action $_($t:lp) $t 0} - if {[$w cget -relief] eq $rs($b)} {kbd_action $w $t [eval expr $v($b)]} - set _($t:lp) $w} - - proc kbd_action {w t v} { - if {$v == 0} {set relief raised} {set relief sunken} - $w config -relief $relief - pd [concat $t.rp _cb [winfo name $w] $v \;]} - - proc kbd_off {p t octaves} { - for {set o 0} {$o < $octaves} {incr o} { - for {set on 0} {$on < 12} {incr on} { - set w $p.f$o.[expr $o * 12 + $on] - if {[$w cget -relief] eq "sunken"} {kbd_action $w $t 0}}}} - - proc kbd {path t octaves b f} { - $path config -width [expr $octaves * 66] - if {![winfo exists $path.f0]} { - variable _ - set _($t:lp) -1 - set bw {0 1 0 1 0 0 1 0 1 0 1 0} ; set npl {0 1 1 2 2 3 4 4 5 5 6 6} - foreach a {{bg "0 $b 1 $f"} {fg "1 $b 0 $f"} {an {0 ";lower $wk" 1 "-anchor n"}} {rw {0 {[expr 1 / 7.]} 1 {[expr 1 / 10.]}}} {rh {0 {[expr 1.]} 1 {[expr 6 / 10.]}}}} {array set [lindex $a 0] [lindex $a 1]} - for {set o 0} {$o < $octaves} {incr o} { - set w $path.f$o ; frame $w -bd 0 -height 66 -width 66 - for {set on 0} {$on < 12} {incr on} { - set wk $w.[expr $o * 12 + $on] ; set n [lindex $bw $on] - eval "label $wk -bg $bg($n) -fg $fg($n) -bd 1 -relief raised;place $wk -relx [expr [lindex $npl $on] / 7.] -y 0 -relwidth $rw($n) -relheight $rh($n) $an($n)" - bind $wk <1> "::ix::kbd_play $t 0 1 %X %Y"; bind $wk [bind $wk <1>];bind $wk "::ix::kbd_play $t 0 0 %X %Y"; bind $wk "::ix::kbd_play $t 1 0 %X %Y"; bind $wk <3> "::ix::kbd_play $t 1 1 %X %Y"; bind $wk [bind $wk <3>]; bind $wk <2> "::ix::kbd_off $path $t $octaves"} - place $w -y 0 -relheight 1.0 -relx [expr $o / $octaves.0] -relwidth [expr 1 / $octaves.0]}}}} - -#> kbd frame -#. -height 100 -width 60 -#. #octaves 6 #bg black #fg white -#. @list ::ix::kbd_list .- .| .#args -#. @float ::ix::kbd_list .- .| .#args -::ix::kbd .- .| .#octaves .#bg .#fg diff --git a/extensions/gui/ix/knob-demo.pd b/extensions/gui/ix/knob-demo.pd deleted file mode 100755 index 3d1035af..00000000 --- a/extensions/gui/ix/knob-demo.pd +++ /dev/null @@ -1,43 +0,0 @@ -#N canvas 403 277 313 218 12; -#X floatatom 157 24 5 16 1024 0 - - -; -#X msg 157 42 #w \$1 \, #h \$1; -#X floatatom 194 7 5 3 22 0 - - -; -#X obj 13 148 nbx 8 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 --262144 -1 -1 -0.0116279 256; -#X obj 13 39 widget knob n1 #w 88 #h 88 #th 3 #cc purple #cb black -#ca red #trans 81 #bg green #range 1 #cn navy #ny 79 #nx 43 #max 0 -#min 0 #an white -bd 1; -#X msg 135 109 #range \$1; -#X msg 157 144 1; -#X msg 184 144 10000; -#X floatatom 203 94 5 0 0 0 - - -; -#X msg 203 109 #ny \$1; -#X floatatom 203 61 5 0 0 0 - - -; -#X msg 203 76 #nx \$1; -#X msg 157 170 #max 1; -#X msg 202 170 #max 32 \, #min 16; -#X msg 157 190 #min 0 \, #max 0; -#X msg 103 107 1; -#X msg 103 85 100; -#X msg 104 63 1000; -#X msg 104 41 0.1; -#X msg 194 23 #th \$1; -#X connect 0 0 1 0; -#X connect 1 0 4 0; -#X connect 2 0 19 0; -#X connect 4 0 3 0; -#X connect 5 0 4 0; -#X connect 6 0 4 0; -#X connect 7 0 4 0; -#X connect 8 0 9 0; -#X connect 9 0 4 0; -#X connect 10 0 11 0; -#X connect 11 0 4 0; -#X connect 12 0 4 0; -#X connect 13 0 4 0; -#X connect 14 0 4 0; -#X connect 15 0 5 0; -#X connect 16 0 5 0; -#X connect 17 0 5 0; -#X connect 18 0 5 0; -#X connect 19 0 4 0; diff --git a/extensions/gui/ix/knob.wid b/extensions/gui/ix/knob.wid deleted file mode 100755 index 450f1baf..00000000 --- a/extensions/gui/ix/knob.wid +++ /dev/null @@ -1,102 +0,0 @@ -namespace eval ::ix { - variable _ - proc nobfloat {path t num} { - variable _ - $path itemconfigure $t:num -text $num - pd [concat $t.rp _cb $num \;] - set _($t:num) $num - } - proc nob_mover {w t f x y} { - variable _ - if {$::ix::_($t:clickd) > 0} { - set move [expr (($x - $::ix::_($t:lx)) + (-1 * ($y - $::ix::_($t:ly)))) / ([winfo width $w].0 + [winfo height $w].0) * $f] - nob_move $w $t $move - } - set ::ix::_($t:clickd) 1 - set ::ix::_($t:lx) $x - set ::ix::_($t:ly) $y - } - proc nob_move {w t move} { - variable _ - set on [$w itemcget $t:num -text] - set no [expr $on + $_($t:range) * $move * 2] - if {$_($t:min) != $_($t:max)} { - if {$no > $_($t:max)} {set no $_($t:max);set move 0} - if {$no < $_($t:min)} {set no $_($t:min);set move 0} - } - nobfloat $w $t $no - foreach e {1 10 100} { - set a [expr [$w itemcget $t:nob$e -start] + int($move * $e * 90)] - $w itemconfigure $t:nob$e -start $a - set _($t:a$e) $a - } - } - - proc nob {path t w h range bg c1 c2 c3 cn th nx ny max min} { - variable _ - set _($t:lx) 32 - set _($t:clickd) -1 - set _($t:max) $max - set _($t:min) $min - if {$_($t:min) != $_($t:max)} { - set _($t:range) [expr abs($min - $max)] - } else { - set _($t:range) $range - } - if {[winfo exists $path.nob] != 1} { - canvas $path.nob -width $w -height $h -borderwidth 1 -bg $bg - $path configure -width $w -height $h - place $path.nob -anchor nw -relwidth 1 -relheight 1 - $path.nob delete * - set i 0 - set colors [list $c1 $c2 $c3] - set ratios {1 10 0.1} - set edge 10 - $path.nob create rectangle {1 1 8 4} -fill "#555555" - $path.nob create rectangle "1 $h 8 [expr $h - 5]" -fill "#555555" - foreach e {1 10 100} { - $path.nob create arc \ - "[expr $w / $edge / ($i + 1) + ($edge / 2)] [expr $h / $edge / ($i + 1) + ($edge / 2)] [expr $w - $w / $edge / ($i + 1) - ($edge / 2)] [expr $h - $h / $edge / ($i + 1) - ($edge / 2)]" \ - -extent [expr int(300 / $e)] -start 90 \ - -outline "[lindex $colors $i]" \ - -style arc \ - -width [expr int($h / $th)] \ - -tags $t:nob$e - bind $path.nob \ - "::ix::nob_mover $path.nob $t [lindex $ratios $i] %x %y" - incr i - bind $path.nob "set ::ix::_($t:clickd) -1" - } - bind $path {::ix::nob_move %W.nob [winfo name %W] [expr %D / 2400.]} - bind $path {::ix::nob_move %W.nob [winfo name %W] [expr %D / 24000.]} - bind $path {::ix::nob_move %W.nob [winfo name %W] [expr %D / 240.]} - bind $path.nob "::ix::nob_mover $path.nob $t 10 %x %y" - bind $path.nob "::ix::nob_mover $path.nob $t 0.1 %x %y" - if {$nx == 0} { - set nx [expr $w / 2] - set ny [expr $h - 20] - } - $path.nob create text $nx $ny -text "0.0" -tags $t:num -fill "$cn" -font {{Bitstream Vera Sans} 8} - } - if {[info exists _($t:num)]} { - $path.nob itemconfigure $t:num -text $_($t:num) - foreach e {1 10 100} { - $path.nob itemconfigure $t:nob$e -start $_($t:a$e) - } - } else { - foreach e {1 10 100} {set _($t:a$e) 90} - set _($t:num) 0.0} - - } -} -#> knob frame -#. -bd 1 -bg "#cccccc" -#. -highlightbackground red -#. #max 0 #min 0 -#. #w 128 #h 128 #th 5 #range 100 #nx 0 #ny 0 -#. #bg purple #ca blue #cb yellow #cc green #cn orange -#. @float ::ix::nobfloat .-.nob .| .#1 -#. @cmd eval ".-.nob .#args" -bind .- {focus .-} -bind .- {focus .^.c} -::ix::nob .- .| .#w .#h .#range .#bg .#ca .#cb .#cc .#cn .#th .#nx .#ny .#max .#min diff --git a/extensions/gui/ix/lg-demo.pd b/extensions/gui/ix/lg-demo.pd deleted file mode 100755 index a7c95bf4..00000000 --- a/extensions/gui/ix/lg-demo.pd +++ /dev/null @@ -1,68 +0,0 @@ -#N canvas 138 75 1019 727 12; -#X obj 5 87 widget lg lga -width 940 -height 440 -bg green; -#X obj 92 -48 bng 28 250 50 0 empty empty view 0 -6 0 8 -62784 -1 -1 -; -#X msg 58 34 clear; -#X obj 142 34 getall lga; -#X obj 366 62 srec lga; -#X msg -2 52 cmd axis configure y -logscale \$1; -#X obj -3 38 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 -; -#X msg 421 -36 190 lolp 0 \, 140 lolp 4; -#X msg 398 -18 1 kgoga 2 3 6 \, 190 kgoga 0 4 3; -#X obj 70 216; -#X msg 75 211; -#X msg 335 -28 delete lolp; -#X msg 322 -46 delete kgoga; -#X msg 25 34 dump; -#X msg 395 1 1 juba 2 3 4 5 \, 200 juba 5 6 7 8; -#X obj 9 607 pool lga; -#X obj 74 546 + 1; -#X obj 47 546 i; -#X obj 9 563 prepend; -#X obj 5 528 t a b; -#X obj 8 585 prepend set; -#X msg 106 11 reset; -#X obj 83 -12 t b b; -#X msg 118 -9 0; -#X obj 123 -49 bng 32 250 50 0 empty empty write-+ 0 -6 0 8 -24198 --1 -1; -#X obj 144 6 t b b; -#X obj 426 27 tow . lg lga; -#X msg 217 20 redefine; -#X msg 227 61 -width \$1; -#X msg 286 61 -height \$1; -#X floatatom 227 43 5 0 0 0 - - -; -#X floatatom 286 43 5 0 0 0 - - -; -#X connect 0 0 19 0; -#X connect 1 0 25 0; -#X connect 2 0 0 0; -#X connect 3 0 0 0; -#X connect 5 0 0 0; -#X connect 6 0 5 0; -#X connect 7 0 26 0; -#X connect 8 0 26 0; -#X connect 11 0 26 0; -#X connect 12 0 26 0; -#X connect 13 0 0 0; -#X connect 14 0 26 0; -#X connect 16 0 17 1; -#X connect 17 0 16 0; -#X connect 17 0 18 1; -#X connect 18 0 20 0; -#X connect 19 0 18 0; -#X connect 19 1 17 0; -#X connect 20 0 15 0; -#X connect 21 0 15 0; -#X connect 22 0 13 0; -#X connect 22 1 21 0; -#X connect 22 1 23 0; -#X connect 23 0 17 1; -#X connect 24 0 22 0; -#X connect 25 0 3 0; -#X connect 25 1 2 0; -#X connect 27 0 0 0; -#X connect 28 0 0 0; -#X connect 29 0 0 0; -#X connect 30 0 28 0; -#X connect 31 0 29 0; diff --git a/extensions/gui/ix/lg.wid b/extensions/gui/ix/lg.wid deleted file mode 100755 index c43b8012..00000000 --- a/extensions/gui/ix/lg.wid +++ /dev/null @@ -1,237 +0,0 @@ -package require BLT -namespace import blt:: -namespace eval ::ix { - variable _ - proc random_int {} { - return [expr "int(floor(rand()*16))"] - } - proc random_clr {} { - return [format "\#%1X%1X%1X%1X%1X%1X" [random_int] [random_int] [random_int] [random_int] [random_int] [random_int]] - } - proc lg_add {path tg args} { - variable _ - set e [lindex $args 1] - set l [llength $args] - for {set n 2} {$n < $l} {incr n} { - if {$l > 3} {set nm $e:[expr $n - 1]} else {set nm $e} - set _($path:$nm:e) [expr $n - 1] - set _($path:$nm:p) $e - set _($path:$e:n) [expr $l - 2] - lg_list $path $tg $nm [lindex $args 0] [lindex $args $n] - } - } - proc lg_dumper {path tg args} { - variable _ - foreach e [$path element names] { - if {$_($path:$e:e) == 1} { - lg_dump $path $tg $e - } - } - } - proc lg_dump {path tg e} { - variable _ - set p $_($path:$e:p) - set el $_($path:$e:e) - set n $_($path:$p:n) - for {set i 0} {$i < [$tg:x$e length]} {incr i} { - set out {} - lappend out [$tg:x$e index $i] - lappend out $p - if {$n > 1} { - for {set x 1} {$x <= $n} {incr x} { - lappend out [$tg:y$p:$x index $i] - } - } else { - lappend out [$tg:y$e index $i] - } - set out [join $out " "] -# puts $out - pd "$tg.rp _cb $out;" - } - } - proc lg_list {path tg e i1 i2} { - if {[$path element exists $e] != 1} {lg_nv $path $tg $e} - $tg:y$e append $i2 - $tg:x$e append $i1 - } - proc lg_zoom {path tg d x y} { - puts "$path $tg $d" - if {$d eq "in"} {set dn 4} {set dn 1} - set lx [$path axis limits x] - set dx [expr ([lindex $lx 1] - [lindex $lx 0]) / $dn] - set cx [$path axis invtransform x $x] - set cy [$path axis invtransform y $y] - set ly [$path axis limits y] - set dy [expr ([lindex $ly 1] - [lindex $ly 0]) / $dn] - $path axis configure x -min [expr $cx - $dx] -max [expr $cx + $dx] - $path axis configure y -min [expr $cy - $dy] -max [expr $cy + $dy] - } - proc lg_dr {path tg e x y} { - variable _ - if {[$path element closest $x $y cl -halo 666 -interpolate 1 -along x $e] == 1} { - set new [$path axis invtransform y $y] - set n $tg:y$cl(name) - set io $_($path:clickd) - set ic $cl(index) - $n index $ic $new - if {$io != -1 && [expr abs($io - $ic)] > 1} {lg_smooth $io $ic $n} - set _($path:clickd) $ic - } - } - proc lg_smooth {io ic n} { -# puts "smoothing $n from $io to $ic" - set vo [$n index $io] - set vc [$n index $ic] - if {$ic > $io} {set is $io; set vs $vo} else {set is $ic; set vs $vc} - set ne [expr [$n length] - 1] - if {$ic != $ne && $io != $ne} { - for {set i 1} {$i < [expr abs($io - $ic)]} {incr i} { - set nv [expr $vs + (($vc - $vo) * $i / ($ic - $io))] - set ni [expr $is + $i] - $n index $ni $nv - } - } - } - proc lg_sl {path tg e x y} { - variable _ - set t [$path invtransform $x $y] - if {$_($path:clickd) != -1} { - set dx [expr [lindex $t 0] - [lindex $_($path:clcord) 0]] - set dy [expr [lindex $t 1] - [lindex $_($path:clcord) 1]] - - set p $_($path:$e:p) - set el $_($path:$e:e) - set n $_($path:$p:n) - - if {$n > 1} { - for {set i 1} {$i <= $n} {incr i} { - set tx $tg:x$p:$i - set ty $tg:y$p:$i - $tx expr "$tx + $dx" - if {$el == $i} {$ty expr "$ty + $dy"} - } - } else { - $tg:x$e expr "$tg:x$e + $dx" - $tg:y$e expr "$tg:y$e + $dy" - } - } - set _($path:clcord) $t - set _($path:clickd) 1 - } - proc lg_draw {path tg e x y} { - variable _ - if {[$path element closest $x $y cl -halo 666 -interpolate 1 -along x $e] == 1} { - set t [$path invtransform $x $y] - set p $_($path:$e:p) - set el $_($path:$e:e) - set n $_($path:$p:n) - set io $_($path:clickd) - set ic $cl(index) - if {$n > 1} { - for {set i 1} {$i <= $n} {incr i} { - set tx $tg:x$p:$i - set ty $tg:y$p:$i - if {$el == $i} {set ny [lindex $t 1]} else { - if {[$ty length] == $ic} {set tc [expr $ic - 1]} else {set tc $ic} - set ny [$ty index $tc] - } - set nx [lindex $t 0] - $ty append $ny - $tx append $nx - $tx sort $ty - if {$i == 1} { - if {$ic < $io} {incr io} - incr ic - } - if {$io != -1 && [expr abs($io - $ic)] > 1} {lg_smooth $io $ic $ty} - } - } else { - $tg:y$e append [lindex $t 1] - $tg:x$e append [lindex $t 0] - $tg:x$e sort $tg:y$e - if {$ic < $io} {incr io} - incr ic - if {$io != -1 && [expr abs($io - $ic)] > 1} {lg_smooth $io $ic $tg:y$e} - } - set _($path:clickd) $ic - } - } - - proc lg_trim {path tg e x y} { - variable _ - if {[$path element closest $x $y cl -halo 666 -interpolate 1 -along x $e] == 1} { -# foreach name [array names cl] {puts "$name $cl($name)"} - if {[expr abs([$path axis transform x [$tg:x$e index $cl(index)]] - $x.0)] < 32} { - set p $_($path:$cl(name):p) - set n $_($path:$p:n) - if {$n > 1} { - for {set i 1} {$i <= $n} {incr i} { - $tg:y$p:$i delete $cl(index) - $tg:x$p:$i delete $cl(index) - } - } else { - $tg:y$cl(name) delete $cl(index) - $tg:x$cl(name) delete $cl(index) - } - } - } - } - proc lg_cl {path tg} { - foreach e [$path element names] {lg_dv $path $tg $e} -# pd "$tg.rp _cb symbol clear;" - } - proc lg_de {path tg e} { - variable _ - set n $_($path:$e:n) - if {$n > 1} { - for {set i 1} {$i <= $n} {incr i} { - lg_dv $path $tg $e:$i - } - } else { - lg_dv $path $tg $e - } - } - proc lg_dv {path tg e} { - blt::vector destroy $tg:x$e - blt::vector destroy $tg:y$e - $path element delete $e -# pd "$tg.rp _cb delete $e;" - } - proc lg_nv {path tg e} { - variable _ - blt::vector create $tg:x$e -variable "" - blt::vector create $tg:y$e -variable "" - set _($path:clickd) -1 - $path element create $e -x $tg:x$e -y $tg:y$e -symbol "circle" -pixels 2 -linewidth 2 -color [random_clr] -hide 0 -# puts "creating: $path $e -x $tg:x$e -y $tg:y$e -color [random_clr] -hide 0" - $path element bind $e "::ix::lg_dr $path $tg $e %x %y" - $path element bind $e "::ix::lg_sl $path $tg $e %x %y" - $path element bind $e "::ix::lg_draw $path $tg $e %x %y" - $path element bind $e "::ix::lg_trim $path $tg $e %x %y" -# $path element bind $e <1> "::ix::lg_dr $path $tg $e %x %y" - $path element bind $e "set ::ix::_($path:clickd) -1" -# $path element bind $e "set ::ix::_($path:clickd) -1" - } - proc lg_new {path tg} { - bind $path {} - bind $path "::ix::lg_zoom $path $tg in %x %y" - bind $path "::ix::lg_zoom $path $tg out %x %y" - bind $path "$path axis configure x -min {} -max {}; $path axis configure y -min {} -max {}" - bind $path [bind $path ] - Blt_ZoomStack $path "2" "Control-2" - $path axis configure x -background [$path cget -bg] - $path axis configure y -background [$path cget -bg] - } -} -#> lg blt::graph -#. -bg yellow -halo 16 -#. @clear ::ix::lg_cl .- .| -#. @delete ::ix::lg_de .- .| .#1 -#. @list ::ix::lg_add .- .| .#args -#. @add ::ix::lg_add .- .| .#args -#. @dump ::ix::lg_dumper .- .| .#args -#. @cmd eval ".- .#args" - -::ix::lg_new .- .| - -puts "lg .- .|" \ No newline at end of file diff --git a/extensions/gui/ix/mat-demo.pd b/extensions/gui/ix/mat-demo.pd deleted file mode 100755 index eda61bc5..00000000 --- a/extensions/gui/ix/mat-demo.pd +++ /dev/null @@ -1,53 +0,0 @@ -#N canvas 80 85 910 775 12; -#X obj 15 29 widget mat n1 #w 881 #bg gray83 #divX 8 #divY 5 #h 494 -#Yb 1 #Ya 88 #qYv 2 #qYa 8 #ln white; -#X msg 1080 -13 -height 26 -width 26 -bg gray95; -#X msg 184 648 redefine; -#X obj 131 646 * 127; -#X obj 95 644 + 36; -#X obj 587 565 rr ss; -#X obj 587 546 rg; -#X obj 20 603 unpack f f f; -#X obj 47 638 * 127; -#X obj 26 668 pack f f f; -#X obj 49 692 makenote 99 250; -#X obj 102 728 noteout; -#X obj 77 559 rp ss kbd; -#X obj 158 583 rp ss kb2; -#X obj 138 537 widget kbd k1 #bg blue #fg green #ln gray50 -height -32; -#X obj 138 570 widget kbd k2 #bg orange #fg red #ln gray50 -height -32; -#X obj 108 622 unpack 0 0 0; -#X obj 108 603 Append 1; -#X obj 158 602 Append 2; -#X msg 74 575 1; -#X obj 3 533 widget dd dd1 -bg green -fg red; -#X obj 3 493 a2l; -#X obj 3 549 widget dd s2 #symbol 0; -#X connect 0 0 21 0; -#X connect 2 0 0 0; -#X connect 3 0 11 1; -#X connect 4 0 11 0; -#X connect 6 0 5 0; -#X connect 7 0 9 0; -#X connect 7 1 8 0; -#X connect 7 2 9 2; -#X connect 8 0 9 1; -#X connect 9 0 10 0; -#X connect 10 0 11 0; -#X connect 10 1 11 1; -#X connect 12 0 17 0; -#X connect 13 0 18 0; -#X connect 14 0 17 0; -#X connect 14 0 12 0; -#X connect 15 0 18 0; -#X connect 15 0 13 0; -#X connect 16 0 4 0; -#X connect 16 1 3 0; -#X connect 16 2 11 2; -#X connect 17 0 16 0; -#X connect 18 0 16 0; -#X connect 19 0 9 2; -#X connect 21 0 20 0; -#X connect 22 0 20 0; diff --git a/extensions/gui/ix/mat.wid b/extensions/gui/ix/mat.wid deleted file mode 100755 index 237bf772..00000000 --- a/extensions/gui/ix/mat.wid +++ /dev/null @@ -1,688 +0,0 @@ -foreach package {snack tkdnd tkpath} {package require $package} -namespace eval ::ix { - proc rc {} {return [format "\#%06x" [expr "int(floor(rand() * 16777216))"]]} - proc rgb {} {return [list [expr "int(floor(rand() * 256))"] [expr "int(floor(rand() * 256))"] [expr "int(floor(rand() * 256))"]]} - proc lighten {rgb r} {set l {}; foreach c $rgb {lappend l [expr {(256 - $c) * $r + $c}]}; return $l} - proc darken {rgb r} {set l {}; foreach c $rgb {lappend l [expr {$c - ($c * $r)}]}; return $l} - proc color {rgb} {return [format "\#%02x%02x%02x" [expr int([lindex $rgb 0])] [expr int([lindex $rgb 1])] [expr int([lindex $rgb 2])]]} - proc random_txt {n} { - set i 0 - set text "" - while {$i < $n} { - set int [expr "int(floor(rand()*62))"] - if {$int < 10} {incr int 48} elseif {$int < 36} {incr int 55} else {incr int 61} - set text "$text[format %c $int]" - incr i - } - return $text - } - - proc mat_sel {p t a x y} { - variable _ - set _($t:sc) [rc] - switch $a { - first { - foreach xy {x y} {set _($t:c$xy) [set $xy];set _($t:f$xy) [set $xy]} - $p.m create path [::tkpath::coords rect $_($t:cx) $_($t:cy) 0 0 -rx 12 -ry 12] \ - -tags sel -stroke $_($t:sc) -strokewidth 12 -strokeopacity 0.3} - release {$p.m delete sel} - motion { - mat_updatesel $p $t [mat_cleansel $p $t [$p.m find overlapping $_($t:fx) $_($t:fy) $x $y]] - if {$x >= $_($t:cx)} {set xa $_($t:fx);set xb $x} else {set xa $x;set xb $_($t:fx)} - if {$y >= $_($t:cy)} {set ya $_($t:fy);set yb $y} else {set ya $y;set yb $_($t:fy)} - set w [expr {abs($xb - $xa)}] - set h [expr {abs($yb - $ya)}] - $p.m coords sel [::tkpath::coords rect $xa $ya $w $h -rx 12 -ry 12] - $p.m itemconfigure sel -stroke $_($t:sc)}}} - - proc mat_item_new {p t id d} { - variable _ - if {$id eq "-"} { - if {[dict keys $_($t)] eq ""} {set id 0} else { - set id -1 - while true {if {[lsearch -integer [dict keys $_($t)] [incr id]] == -1} {break}} - } - } - set _($t:ci) $id - mat_item_ua $p $t $id abs {x 0 xx 0 y 0 yy 0 g 0 v 1} 0 - mat_item_ua $p $t $id abs $d 0 - mat_item_draw $p $t $id - } - - proc mat_item_draw {p t is} { - variable _ - if {$is eq "all"} {set is [dict keys $_($t)]} - foreach id $is { - set tags [list item i$id $id] - set color [dict get $_($t:g) $_($t:cg) color] - switch [dict get $_($t) $id type] { - note { - $p.m create path [::tkpath::coords rect 0 0 0 0 -rx 3 -ry 3] -tags [concat $tags r] -stroke [color [lighten $color 0.4]] -strokeopacity 1.0 -fill [color $color] -fillopacity 0.08 - $p.m create path [::tkpath::coords rect 0 0 0 0 -rx 3 -ry 3] -tags [concat $tags q] -fill [color $color] -strokewidth 0 -fillopacity 0.8 - } - sound { - snack:::sound s$id - set filename [dict get $_($t) $id filename] - s$id read $filename - $p.m create path [::tkpath::coords rect 0 0 0 0 -rx 3 -ry 3] -tags [concat $tags r] -strokewidth 0 -fill [color $color] -fillopacity 0.08 - $p.m create waveform 0 0 -tags [concat $tags w] -sound s$id -fill white - set length [expr [s$id length] / ($_($t:samplerate) + 0.0) * 1000] - mat_item_ua $p $t $id abs [dict create xx [expr [dict get $_($t) $id x] + $length]] 0 - $p.m create text 0 0 -tags [concat $tags tl] -font {{bitstream vera sans} 8} -fill HotPink -anchor nw -justify left -text "[string range $length 0 10] s" - $p.m create rectangle 0 0 0 0 -tags [concat $tags tlr] -fill LightGreen -width 0 - $p.m raise [$p.m find withtag "i$id && tl"] - $p.m create text 0 0 -tags [concat $tags tf] -font {{bitstream vera sans} 8} -fill NavyBlue -anchor ne -justify right -text $filename - $p.m create rectangle 0 0 0 0 -tags [concat $tags tfr] -fill gray90 -width 0 - $p.m raise [$p.m find withtag "i$id && tf"] - } - } - mat_redraw $p $t $id - } - } - - proc mat_item_delete {p t} { - variable _ - foreach item $_($t:sel) { - foreach i [$p.m find withtag i$item] { - $p.m delete $i - } - dict unset _($t) $item - set _($t:sel) {} - mat_item_info $p $t "" - pd [concat $t.rp _cb delete $item \;] - } - } - - proc mat_quant {p t y v} { - variable _ - if {$y eq "xx"} {set y x}; if {$y eq "yy"} {set y y} - if {$y eq "x" || $y eq "y"} { - set v [expr {int( ($v + $_($t:q$y) / 2.0 ) / ($_($t:q$y) + 0.0))*$_($t:q$y)}] - } - return $v - } - - proc mat_item_pos {p t item r x y xx yy} { - mat_item_ua $p $t $item $r [dict create x $x y $y xx $xx yy $yy] 1} - - proc mat_item_ua {p t item r u redraw} { - variable _ - foreach a [dict keys $u] { - switch $r {abs {dict set _($t) $item $a [dict get $u $a]} - rel {dict set _($t) $item $a [expr {[dict get $_($t) $item $a] + [dict get $u $a]}]}} - pd [concat $t.rp _cb update $item $a [pdtk_enquote [dict get $_($t) $item $a]] \;] - } - if {$redraw == 1} {mat_redraw $p $t $item} - } - - proc mat_draw {p t a x y} { - variable _ - switch $a { - motion { - if {$_($t:af) == 1} { - mat_item_pos $p $t $_($t:ci) abs [mat_tr $p $t y i $y] [mat_tr $p $t x i $x] [mat_tr $p $t y i $_($t:fy)] [mat_tr $p $t x i $x] - } else { - mat_item_pos $p $t $_($t:ci) abs [mat_tr $p $t x i $x] [mat_tr $p $t y i $y] [mat_tr $p $t x i $_($t:fx)] [mat_tr $p $t y i $y] - } - } - first {mat_item_new $p $t - [dict create type note g $_($t:cg) x 0 y 0 xx 0 yy 0 v 1]}}} - - proc mat_resize_canvas {p t a x y} {mat_viewpoint $p $t [dict create action resize x $x y $y]} - - proc mat_redraw {p t items} { - variable _ - if {$_($t:af) == 1} { - array set a {x y y x xx yy yy xx} - } else { - array set a {x x y y xx xx yy yy} - } - switch $items { - all {set items [dict keys $_($t)]} - default {}} - foreach id $items { - set x [mat_tr $p $t x t [dict get $_($t) $id $a(x)]] - set y [mat_tr $p $t y t [dict get $_($t) $id $a(y)]] - set qx [mat_tr $p $t x t [mat_quant $p $t x [dict get $_($t) $id $a(x)]]] - set qy [mat_tr $p $t y t [mat_quant $p $t y [dict get $_($t) $id $a(y)]]] - set wx [expr {[dict get $_($t) $id $a(xx)] - [dict get $_($t) $id $a(x)]}] - if {$wx == 0} {set wx 1} - set sx [expr abs([mat_tr $p $t x id $wx])] - set qsx [expr int(abs([mat_tr $p $t x id [expr {[mat_quant $p $t x [dict get $_($t) $id $a(xx)]] - [mat_quant $p $t x [dict get $_($t) $id $a(x)]]}]]))] - set wy [expr {[dict get $_($t) $id $a(yy)] - [dict get $_($t) $id $a(y)]}] - if {$wy == 0} {set wy 1} - set sy [expr abs([mat_tr $p $t y id $wy])] - set qsy [expr int(abs([mat_tr $p $t y id [expr {[mat_quant $p $t y [dict get $_($t) $id $a(yy)]] - [mat_quant $p $t y [dict get $_($t) $id $a(y)]]}]]))] - set ro [expr {int( [set s$a(y)] / 2.0 )}] - if {[lsearch -integer $_($t:sel) $id] >= 0} { - set color $_($t:sc) - } else { - set color [color [dict get $_($t:g) [dict get $_($t) $id g] color]] - } - switch [dict get $_($t) $id type] { - note { - set r [$p.m find withtag "i$id && r"] - set q [$p.m find withtag "i$id && q"] - $p.m coords $r [::tkpath::coords rect $x $y $sx $sy -rx $ro -ry $ro] - $p.m coords $q [::tkpath::coords rect $qx $qy $qsx $qsy -rx $ro -ry $ro] - $p.m itemconfigure $q -fillopacity [dict get $_($t) $id v] -fill $color - } - sound { - set waveform [$p.m find withtag "i$id && w"] - set r [$p.m find withtag "i$id && r"] -# set ro [expr int($ro / 2.)] - set ro 6 - $p.m coords $r [::tkpath::coords rect $x $y $sx $sy -rx $ro -ry $ro] - $p.m itemconfigure $r -fillopacity [dict get $_($t) $id v] -fill $color - $p.m coords $waveform $x $y - $p.m itemconfigure $waveform -width $sx -height [expr int($sy)] -# $p.m itemconfigure $waveform -width $sx - $p.m coords [$p.m find withtag "i$id && tl"] [expr $x + 4] [expr $y + 4] - $p.m coords [$p.m find withtag "i$id && tlr"] [$p.m bbox [$p.m find withtag "i$id && tl"] ] - $p.m coords [$p.m find withtag "i$id && tf"] [expr $x + $sx] [expr $y + 4] - $p.m coords [$p.m find withtag "i$id && tfr"] [$p.m bbox [$p.m find withtag "i$id && tf"] ] - } - } - } - } - - proc mat_item_v {p t a x y} { - variable _ - foreach item $_($t:sel) { - mat_item_ua $p $t $item rel [dict create v [expr {($x - $_($t:cx)) / 100.0}]] 1 - } - mat_item_info $p $t $_($t:sel) - } - - proc mat_move_canvas {p t a x y} {mat_viewpoint $p $t [dict create action move x $x y $y]} - - proc mat_move_object {p t a x y} { - variable _ - set mx [mat_tr $p $t x d [expr {$x - $_($t:cx)}]] - set my [mat_tr $p $t y d [expr {$y - $_($t:cy)}]] - if {$_($t:af) == 1} { - foreach item $_($t:sel) {mat_item_pos $p $t $item rel $my $mx $my $mx} - } else { - foreach item $_($t:sel) {mat_item_pos $p $t $item rel $mx $my $mx $my} - } - mat_item_info $p $t $_($t:sel) - } - - proc mat_resize_left {p t a x y} {mat_resize_object $p $t x $x $y} - proc mat_resize_right {p t a x y} {mat_resize_object $p $t xx $x $y} - proc mat_resize_top {p t a x y} {mat_resize_object $p $t y $x $y} - proc mat_resize_bottom {p t a x y} {mat_resize_object $p $t yy $x $y} - proc mat_resize_tl {p t a x y} {mat_resize_object $p $t x $x $y; mat_resize_object $p $t y $x $y} - proc mat_resize_tr {p t a x y} {mat_resize_object $p $t x $x $y; mat_resize_object $p $t yy $x $y} - proc mat_resize_bl {p t a x y} {mat_resize_object $p $t xx $x $y; mat_resize_object $p $t y $x $y} - proc mat_resize_br {p t a x y} {mat_resize_object $p $t xx $x $y; mat_resize_object $p $t yy $x $y} - - proc mat_resize_object {p t e x y} { - variable _ - if {$_($t:af) == 1} { - array set ax {x y xx y y x yy x} - } else { - array set ax {x x xx x y y yy y} - } - set m [mat_tr $p $t $ax($e) d [expr $$ax($e) - $_($t:c$ax($e))]] - foreach item $_($t:sel) {mat_item_ua $p $t $item rel [dict create $e $m] 1} - mat_item_info $p $t $_($t:sel) - } - - proc mat_cleansel {p t sel} { - set clean {} - foreach item $sel {if {[lindex [$p.m itemcget $item -tags] 0] eq "item"} {lappend clean [lindex [$p.m itemcget $item -tags] 2]}} - set clean [lsort -integer -unique $clean] - return $clean - } - - proc mat_loc {p t si x y} { - variable _ - if {$si == 1} { - set sy $y - set sx $x - set x [mat_tr $p $t x i $x] - set y [mat_tr $p $t y i $y] - } else { - set sy [mat_tr $p $t y t $y] - set sx [mat_tr $p $t x t $x] - } - $p.m coords lY [concat M 0 $sy L [winfo width $p.m] $sy] - $p.m coords lX [concat M $sx 0 L $sx [winfo height $p.m]] - $p.m itemconfigure loc -text [list $x $y] - } - - proc mat_hover {p t x y} { - variable _ -# mat_loc $p $t 1 $x $y - if {[$p.m find withtag sel] ne ""} { - mat_sel $p $t motion $x $y - } else { - set clicked [mat_cleansel $p $t [$p.m find overlapping [expr $x - 2] [expr $y - 2] [expr $x + 2] [expr $y + 2]]] - if {$clicked ne ""} { - mat_resize_modes $p $t $x $y [lindex $clicked end] - if {[llength $_($t:sel)] <= 1} {mat_updatesel $p $t [lindex $clicked end]} - } else { - mat_mode $p $t move_canvas - } - } - } - - proc mat_resize_modes {p t x y id} { - variable _ - set d 3 - set dx [expr {abs([mat_tr $p $t x t [dict get $_($t) $id x]] - $x)}] - set dxx [expr {abs([mat_tr $p $t x t [dict get $_($t) $id xx]] - $x)}] - set dy [expr {abs([mat_tr $p $t y t [dict get $_($t) $id y]] - $y)}] - set dyy [expr {abs([mat_tr $p $t y t [dict get $_($t) $id yy]] - $y)}] - if {$dx < $d && $dy < $d} { - mat_mode $p $t resize_tl - } elseif {$dxx < $d && $dy < $d} { - mat_mode $p $t resize_tr - } elseif {$dx < $d && $dyy < $d} { - mat_mode $p $t resize_bl - } elseif {$dxx < $d && $dyy < $d} { - mat_mode $p $t resize_br - } elseif {$dx < 5} { - mat_mode $p $t resize_left - } elseif {$dxx < 5} { - mat_mode $p $t resize_right - } elseif {$dy < 1} { - mat_mode $p $t resize_top - } elseif {$dyy < 1} { - mat_mode $p $t resize_bottom - } else { - mat_mode $p $t move_object - } - } - - proc mat_item_info {p t clicked} { - variable _ - set n 0;$p.m delete hover - foreach item $clicked { - set info "" - set data [dict get $_($t) $item] - foreach d $data {lappend info [string range $d 0 7]} - $p.m create text [list [expr [winfo width $p.m] - 8.0] [expr [winfo height $p.m] - 8.0 - 11 * $n.0]] -fill $_($t:sc) -justify right -anchor se -font {{bitstream vera sans mono} 10} -tags hover -text $info - incr n - }} - - proc mat_togglesel {p t d} { - variable _ - if {[lsearch -integer $_($t:sel) $d] < 0} { - set _($t:sel) [concat $_($t:sel) $d] - } else { - set _($t:sel) [lsearch -inline -not -all -integer $_($t:sel) $d] - } - mat_redraw $p $t $d - } - - proc mat_updatesel {p t ns} { - variable _ - set os $_($t:sel) - set _($t:sel) $ns - mat_redraw $p $t [lsort -unique -integer [concat $os $ns]] - mat_item_info $p $t $ns - } - - proc mat_click {m button action p t x y X Y} { - variable _ - set clicked [mat_cleansel $p $t [$p.m find overlapping $x $y $x $y]] - set a [$p.m itemcget mode -text] - switch $action { - first { - foreach xy {x y} {set _($t:f$xy) [set $xy]} - switch $button { - 1 {if {$m eq "control"} { - mat_mode $p $t draw; mat_draw $p $t $action $x $y - } elseif {$m eq "double" || $m eq "shift"} { - if {[llength $clicked] > 0} { - mat_togglesel $p $t $clicked - } else { - mat_sel $p $t first $x $y - mat_mode $p $t sel - } - } elseif {[$p.m find withtag sel] ne ""} { - mat_sel $p $t release $x $y - } elseif {[llength $_($t:sel)] > 1 && [llength $clicked] > 0 && [lsearch $_($t:sel) $clicked] == -1} { - mat_updatesel $p $t $clicked}} - 2 {mat_mode $p $t resize_canvas} - 3 {if {$clicked ne ""} { - mat_mode $p $t item_v } else {mat_rmenu $p $t $X $Y}}}} - motion {eval mat_$a $p $t $action $x $y} - release { - switch $button { - 1 {if {$a eq "draw" || ($a eq "sel" && [expr {abs($_($t:fx) - $x)}] >13)} {eval mat_$a $p $t $action $x $y}} - 2 {mat_mode $p $t move_canvas} - 3 {mat_mode $p $t move_canvas} - } - } - } - foreach xy {x y} {set _($t:c$xy) [set $xy]} - } - - proc mat_rmenu {p t x y} { - variable _ - if {[winfo exists $p.rmenu] != 1} { - set m [menu $p.rmenu -tearoff no] - $m add command -label "zoom to fit" -command "::ix::mat_viewpoint $p $t {action fit}" - $m add command -label "reset zoom" -command "::ix::mat_viewpoint $p $t {action reset}" - $m add command -label "add group" -command "::ix::mat_group_new $p $t -" - $m add cascade -label "sel to group" -menu [menu $p.rmenu.seltogroup -tearoff no] - $m add command -label "flip axes" -command "::ix::mat_flipaxe $p $t" - } else { - # $p.rmenu entryconfigure 0 -label $x - } - $p.rmenu.seltogroup delete 0 end - foreach group [dict keys $_($t:g)] { - $p.rmenu.seltogroup add command -label [dict get $_($t:g) $group name] -command "::ix::mat_group_assign $p $t $group" - } - tk_popup $p.rmenu $x $y - } - - proc mat_tr {p t d inv v} { - variable _ - array set dm {x width y height} - switch $inv { - t {return [expr {($v - $_($t:${d}a)) / ($_($t:${d}b) - $_($t:${d}a) + 0.0) * [winfo $dm($d) $p.m]}]} - i {return [expr {($_($t:${d}b) - $_($t:${d}a)) * $v /([winfo $dm($d) $p.m] + 0.0) + $_($t:${d}a)}]} - d {return [expr {($_($t:${d}b) - $_($t:${d}a)) * $v /([winfo $dm($d) $p.m] + 0.0)}]} - id {return [expr {$v / ($_($t:${d}b) - $_($t:${d}a) + 0.0) * [winfo $dm($d) $p.m]}]}}} - - proc mat_viewpoint {p t opts} { - variable _ - switch [dict get $opts action] { - fit { - set i 0 - dict for {s xy} $_($t) { - dict with xy { - if {$i == 0} { - set xa $x - set xb $x - set ya $y - set yb $y - } - if {$x > $xb} {set xb $x} - if {$x < $xa} {set xa $x} - if {$y > $yb} {set yb $y} - if {$y < $ya} {set ya $y} - if {$xx > $xb} {set xb $xx} - if {$xx < $xa} {set xa $xx} - if {$yy > $yb} {set yb $yy} - if {$yy < $ya} {set ya $yy} - incr i - } - } - set _($t:xa) $xa - set _($t:xb) $xb - set _($t:ya) $ya - set _($t:yb) $yb - } - reset { - set _($t:ya) $_($t:yao);set _($t:yb) $_($t:ybo);set _($t:xa) $_($t:xao);set _($t:xb) $_($t:xbo) - } - move { - foreach xy {x y} { - set mvt [mat_tr $p $t $xy d [expr {[dict get $opts $xy] - $_($t:c$xy)}]] - foreach ab {a b} {set _($t:${xy}$ab) [expr {$_($t:${xy}$ab) - $mvt}]}} - } - zoom { - array set dir {in 0.5 out 1.5} - foreach xy [dict get $opts axe] { - set radius [expr {($_($t:${xy}b) - $_($t:${xy}a)) / 2. * $dir([dict get $opts dir])}] - set center [mat_tr $p $t $xy i [dict get $opts $xy]] - set _($t:${xy}a) [expr {$center - $radius}] - set _($t:${xy}b) [expr {$center + $radius}] - } - } - resize { - foreach xy {x y} { - set mvt [mat_tr $p $t $xy d [expr {[dict get $opts $xy] - $_($t:c$xy)}]] - set _($t:${xy}a) [expr {$_($t:${xy}a) - $mvt}] - set _($t:${xy}b) [expr {$_($t:${xy}b) + $mvt}]} - } - scroll { - set xy [dict get $opts axis] - set mv [expr {($_($t:${xy}b) - $_($t:${xy}a)) / 4.0}] - foreach ab {a b} {set _($t:${xy}$ab) [expr {[dict get $opts units] > 0 ? $_($t:${xy}$ab) + $mv : $_($t:${xy}$ab) - $mv }]} - } - } - mat_redraw $p $t all - mat_gridlines $p $t - } - proc mat_flipaxe {p t} { - variable _ - set _($t:af) [expr $_($t:af) == 1 ? 0 : 1] - - set ya $_($t:ya) - set xa $_($t:xa) - set xb $_($t:xb) - set yb $_($t:yb) - set qx $_($t:qx) - set qy $_($t:qy) - set mx $_($t:mx) - set my $_($t:my) - - set _($t:ya) $xa - set _($t:xa) $ya - set _($t:yb) $xb - set _($t:xb) $yb - set _($t:qx) $qy - set _($t:qy) $qx - set _($t:mx) $my - set _($t:my) $mx - - mat_gridlines $p $t - mat_redraw $p $t all - } - proc mat_clip {p t action} { - variable _ - switch $action { - selecta { - mat_updatesel $p $t [dict keys $_($t)] - } - cut { - set _($t:c) [dict create] - set i 0 - foreach item $_($t:sel) { - dict set _($t:c) $i [dict get $_($t) $item] - incr i - } - mat_item_delete $p $t - } - copy { - set _($t:c) [dict create] - set i 0 - foreach item $_($t:sel) { - dict set _($t:c) $i [dict get $_($t) $item] - incr i - } - } - paste { - set pasted {} - foreach item [dict keys $_($t:c)] { - mat_item_new $p $t - [dict get $_($t:c) $item] - } - } - } - } - - proc mat_mode {p t m} { - array set cursor {draw pencil move_canvas fleur move_object dotbox item_v box_spiral resize_canvas bogosity sel cross_reverse resize_left left_side resize_right right_side resize_top top_side resize_bottom bottom_side resize_tl top_left_corner resize_tr top_right_corner resize_bl bottom_left_corner resize_br bottom_right_corner} - $p.m itemconfigure mode -text $m - $p.m configure -cursor $cursor($m) - } - - proc mat_group_assign {p t group} { - variable _ - foreach item $_($t:sel) { - mat_item_ua $p $t $item abs [dict create g $group] 0 - } - } - - proc mat_group_new {p t grp} { - variable _ - set exists 0 - dict for {key val} $_($t:g) {if {[dict get $val name] eq $grp} {set exists 1}} - if {$exists == 0} { - if {$grp eq "-"} {set grp [random_txt [expr "int(floor(rand() * 10 + 2))"]]} - set n -1 - while true { if {[lsearch -integer [dict keys $_($t:g)] [incr n]] == -1} {break}} - dict set _($t:g) $n name $grp - dict set _($t:g) $n color [rgb] - set _($t:cg) $n - mat_groups_view $p $t - mat_group_active $p $t $n - } - } - - proc mat_groups_view {p t} { - variable _ - $p.m delete [$p.m find withtag group] - foreach i [dict keys $_($t:g)] { - set id [$p.m create text [concat 68.0 [expr {38.0 + 11 * $i}]] -fill [color [dict get $_($t:g) $i color]] -justify right -anchor e -font {{bitstream vera sans mono} 10} -tags [concat group $i lb] -text [dict get $_($t:g) $i name]] - $p.m bind $id "::ix::mat_group_active $p $t $i" - $p.m bind $id <1> "::ix::mat_group_assign $p $t $i" - set bx [$p.m bbox $id] - $p.m lower [$p.m create path [::tkpath::coords rect [lindex $bx 0] [lindex $bx 1] [expr [lindex $bx 2] - [lindex $bx 0]] [expr [lindex $bx 3] - [lindex $bx 1]] -rx 6 -ry 6] -tags [concat group $i bg] -strokewidth 1 -stroke white -fill white -fillopacity 0.5] - } - } - - proc mat_group_active {p t g} { - variable _ - set _($t:cg) $g - foreach n [dict keys $_($t:g)] { - if {$g == $n} {set cb black; set cl white; set tl 1} {set cb white; set cl [color [dict get $_($t:g) $n color]]; set tl 0.5} - set idb [$p.m find withtag "group && $n && bg"] - $p.m itemconfigure $idb -fill $cb -fillopacity $tl -stroke $cl - set idl [$p.m find withtag "group && $n && lb"] - $p.m itemconfigure $idl -fill $cl; - if {$g == $n} {$p.m raise $idb;$p.m raise $idl;} - } - } - - proc mat_key {p t k b} { - puts $k - switch $b { - 1 { - switch $k { - 22 {mat_item_delete $p $t} - 38 {mat_clip $p $t selecta} - 53 {mat_clip $p $t cut} - 54 {mat_clip $p $t copy} - 55 {mat_clip $p $t paste} - 97 {mat_viewpoint $p $t {action reset}} - 98 {mat_viewpoint $p $t {action scroll units -1 axis y}} - 100 {mat_viewpoint $p $t {action scroll units -1 axis x}} - 102 {mat_viewpoint $p $t {action scroll units 1 axis x}} - 104 {mat_viewpoint $p $t {action scroll units 1 axis y}} - 107 {mat_item_delete $p $t} - } - } -# 0 { -# switch $k { -# } -# } - } - } - - proc mat_drop {p t dropped x y} { -# foreach d $dropped { - foreach d [split $dropped "\n"] { - set x [mat_tr $p $t x i $x] - set y [mat_tr $p $t y i $y] - mat_item_new $p $t - [dict create type sound g 1 v 1 x $x y $y xx $x yy $y filename [regsub -- {^file:[/]+} $d "/"]] - } - } - - proc mat_new {p t w h bg ln xa xb ya yb qx qy mx my samplerate} { - variable _ - set sc orange - foreach xy {x y} {foreach ab {a b} {set ${xy}${ab}o [set ${xy}${ab}]}} - foreach a {sc ln xa xb ya yb xao xbo yao ybo qx qy mx my samplerate} {set _($t:$a) [set $a]} - if {[winfo exists $p.m] != 1} { - canvas $p.m -bg $bg -width $w -height $h - pack $p.m -side left - bind $p.m "::ix::mat_key $p $t %k 1" - bind $p.m "::ix::mat_key $p $t %k 0" -# dnd bindtarget $p.m text/uri-list "::ix::mat_drop $p $t %D %x %y" - dnd bindtarget $p.m text/plain "::ix::mat_drop $p $t %D %x %y" - bind $p.m "::ix::mat_hover $p $t %x %y" - bind $p.m <4> "::ix::mat_viewpoint $p $t {action scroll units 1 axis x}" - bind $p.m <5> "::ix::mat_viewpoint $p $t {action scroll units -1 axis x}" - bind $p.m "::ix::mat_viewpoint $p $t {action zoom dir in axe x x %x y %y}" - bind $p.m "::ix::mat_viewpoint $p $t {action zoom dir out axe x x %x y %y}" - bind $p.m "::ix::mat_viewpoint $p $t {action zoom dir in axe {x y} x %x y %y}" - bind $p.m "::ix::mat_viewpoint $p $t {action zoom dir out axe {x y} x %x y %y}" - bind $p.m "::ix::mat_viewpoint $p $t {action zoom dir in axe y x %x y %y}" - bind $p.m "::ix::mat_viewpoint $p $t {action zoom dir out axe y x %x y %y}" - bind $p.m "::ix::mat_viewpoint $p $t {action scroll units -1 axis y}" - bind $p.m "::ix::mat_viewpoint $p $t {action scroll units 1 axis y}" - foreach m {"Control-" "" "Shift-" "Double-"} { - foreach bn {1 2 3} { - set b [list [concat $bn first] [concat B${bn}-Motion motion] [concat ButtonRelease-$bn release]] - foreach ba {0 1 2} { - bind $p.m <$m[lindex [lindex $b $ba] 0]> "::ix::mat_click [list [string tolower [string trimright $m -1]]] $bn [lindex [lindex $b $ba] 1] $p $t %x %y %X %Y"}}} - set bd [expr {[$p cget -bd] * 2}] -# update - $p configure -bg gray -width [expr {[winfo width $p.m] + $bd}] -height [expr {[winfo height $p.m] + $bd}] - $p.m create text {20 20} -fill blue -justify left -anchor w -font {{bitstream vera sans} 18} -tags mode -text move_canvas - $p.m create text [list [expr {$w / 2.}] 5] -fill red -justify center -anchor n -font {{bitstream vera sans} 14} -tags q -text q - $p.m create path "M 0 0" -tags lX -stroke black -strokeopacity 0.5 - $p.m create path "M 0 0" -tags lY -stroke black -strokeopacity 0.5 - $p.m create text "10 $h" -fill red -justify left -anchor sw -font {{bitstream vera sans} 12 bold} -fill purple -tags loc -text "" - if {[info exists _($t)] != 1} { - set _($t) {} - set _($t:g) {} - set af 0; set i -1; set sel {} - foreach a {af i sel} {set _($t:$a) [set $a]} - mat_group_new $p $t default - mat_group_new $p $t wavs - } - } - mat_gridlines $p $t - mat_item_draw $p $t all - mat_groups_view $p $t - } - - proc mat_gridlines {p t} { - variable _ - set w $p.m - $w delete gridlines - set gh [winfo height $w] - set gw [winfo width $w] - foreach item [$w find withtag gridline] {$w delete $item} - foreach xy {x y} { - array set ta {x n y w} - array set tj {x center y left} - array set igx {y width x height} - set range [expr {abs($_($t:${xy}b) - $_($t:${xy}a))}] - set numshits [expr {$range / $_($t:q$xy)}] - if {$numshits > $_($t:m${xy})} {set factor [expr {int($numshits / ($_($t:m${xy}) + 0.0) + 1)}]} else { - set factor [expr {1. / (int(1./($numshits / ($_($t:m${xy}) + 0.0) + 0.0)) + 0.0)}] - } - set increment [expr {$_($t:q${xy}) * $factor}] - for {set x [expr {int($_($t:${xy}a) / ($increment + 0.0) + 1)*($increment + 0.0)}]} {[expr {$_($t:${xy}a) > $_($t:${xy}b) ? $x >= $_($t:${xy}b) : $x <= $_($t:${xy}b)}]} {set x [expr {$_($t:${xy}a) > $_($t:${xy}b) ? $x - $increment : $x + $increment}]} { - set og [mat_tr $p $t $xy t $x] - set invgeo [winfo $igx($xy) $w] - switch $xy { - y {set coords [concat M [expr {int(rand()*23)}] $og L $invgeo $og]} - x {set coords [concat M $og [expr {int(rand()*16)}] L $og $invgeo]}} -# y {set coords [concat M 0 $og L $invgeo $og]} -# x {set coords [concat M $og 0 L $og $invgeo]}} - $w lower [$w create text [lrange $coords 1 2] -font {{Bitstream Vera Sans} 8} -fill [rc] -anchor $ta($xy) -text [string range $x 0 7] -justify $tj($xy) -tags gridline] - $w lower [$w create path $coords -stroke $_($t:ln) -strokedasharray [expr {int(rand()*42 + 1)}] -tags gridline -strokewidth 1] - }}}} - -#> mat frame -#. -bd 3 #w 384 #h 144 #bg gray86 #ln white -#. #samplerate 44100 -#. #Xa 123 #Xb 2000 #Ya 127 #Yb 0 #qx 50 #qy 1 #mx 12 #my 64 -#. @add ::ix::mat_item_new .- .| .#1 {type .#2} -#. @update ::ix::mat_item_ua .- .| .#1 abs {.#2 .#3} 1 -#. @updaterel ::ix::mat_item_ua .- .| .#1 rel {.#2 .#3} 1 -#. @up ::ix::mat_item_ua .- .| .#1 abs {.#2 .#3} 0 -#. @uprel ::ix::mat_item_ua .- .| .#1 rel {.#2 .#3} 0 -puts "mat .- .|" -::ix::mat_new .- .| .#w .#h .#bg .#ln .#Xa .#Xb .#Ya .#Yb .#qx .#qy .#mx .#my .#samplerate -#bind .-.m {focus .-.m} -bind .-.m {focus .^.c} diff --git a/extensions/gui/ix/ngrid-demo.pd b/extensions/gui/ix/ngrid-demo.pd deleted file mode 100644 index 29dacac1..00000000 --- a/extensions/gui/ix/ngrid-demo.pd +++ /dev/null @@ -1,310 +0,0 @@ -#N canvas 1333 136 79 124 12; -#X msg 785 -536 -height 26 -width 26 -bg gray95; -#N canvas 0 0 595 500 intro 1; -#X obj 9 418 osc~; -#X obj 9 456 dac~; -#X obj 9 399 line; -#X obj 9 -29 widget ngrid n1 #w 382 #h 382 #move 0 #radius 8; -#X floatatom 360 365 3 2 233 0 - - -; -#X floatatom 381 382 2 4 32 0 - - -; -#X msg 394 381 radius \$1; -#X msg 382 362 spread \$1; -#X obj 403 337 bng 23 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 --1; -#X obj 61 418 osc~; -#X obj 35 418 osc~; -#X obj 87 418 osc~; -#X obj 113 418 osc~; -#X obj 139 418 osc~; -#X obj 35 399 line; -#X obj 61 399 line; -#X obj 87 399 line; -#X obj 113 399 line; -#X obj 139 399 line; -#X obj 165 418 osc~; -#X obj 191 418 osc~; -#X obj 9 380 route 0x 0y 1x 1y 2x 2y 3x 3y 4x 4y; -#X obj 296 405 until; -#X obj 328 422 + 1; -#X obj 296 424 i; -#X msg 330 405 0; -#X obj 217 418 osc~; -#X obj 243 418 osc~; -#X obj 165 399 line; -#X obj 191 399 line; -#X obj 217 399 line; -#X obj 243 399 line; -#X obj 355 446 tow . ngrid n1; -#X obj 9 360 Append 100; -#X msg 258 363 move swarm; -#X msg 312 385 5; -#X msg 326 363 move; -#X obj 86 437 prepend set; -#X obj 86 454 prepend set; -#X obj 160 442 hsl 128 15 0 2000 0 0 empty empty empty -2 -6 0 8 -262144 --1 -1 2100 1; -#X obj 160 458 hsl 128 15 0 2000 0 0 empty empty empty -2 -6 0 8 -262144 --1 -1 0 1; -#X obj 423 50 widget ngrid m #w 64 #h 64; -#X msg 407 451 add x 1 0 10 \, add y 2 0 10; -#X obj 425 127 route x y; -#X obj 468 146 prepend set; -#X obj 400 147 prepend set; -#X obj 435 166 hsl 128 15 0 10 0 0 empty empty empty -2 -6 0 8 -262144 --1 -1 12700 1; -#X obj 435 181 hsl 128 15 0 10 0 0 empty empty empty -2 -6 0 8 -262144 --1 -1 385 1; -#X obj 496 50 widget ngrid m #w 64 #h 64; -#X obj 510 212 widget ngrid m #w 64 #h 64; -#X obj 514 286 widget ngrid m #w 64 #h 64; -#X obj 501 367 widget ngrid m #w 64 #h 64; -#X obj 512 264 prepend pos; -#X obj 503 371 prepend pos; -#X obj 425 57 prepend setpos; -#X obj 476 59 prepend setpos; -#X msg 353 406 add \$1x 1000 0 2000; -#X msg 353 425 add \$1y 1000 0 2000; -#X msg 301 465 pos 4y \$1; -#X obj 9 437 *~ 0.033; -#X obj 513 215 prepend pos; -#X obj 417 198 prepend x; -#X obj 472 197 prepend y; -#X msg 409 414 add x 1 10 0 \, add y 2 10 0; -#X msg 407 434 add x 1 0 10 \, add y 2 10 0; -#X msg 407 470 add x 1 10 0 \, add y 2 0 10; -#X msg 303 446 pos 4x \$1; -#X msg 240 472 pos 3x \$1; -#X msg 168 472 pos 3y \$1; -#X msg 195 363 move error; -#X obj 406 219 sin; -#X obj 410 240 hsl 99 15 0 6.28 0 0 empty empty empty -2 -6 0 8 -262144 --1 -1 0 1; -#X msg 404 297 pos 0x \$1; -#X obj 458 220 cos; -#X msg 456 295 pos 0y \$1; -#X obj 413 259 * 500; -#X obj 466 258 * 500; -#X obj 412 279 + 1000; -#X obj 468 278 + 1000; -#X obj 414 311 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 -1; -#X msg 451 315 6.28 1000; -#X obj 446 334 line; -#X obj 449 370 select 6.28 0; -#X obj 448 352 spigot; -#X msg 472 333 0 2000; -#X obj 49 480 switch~; -#X obj 430 324 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 -1; -#X obj 63 363 hsl 128 15 0 2000 0 0 empty empty empty -2 -6 0 8 -262144 --1 -1 12700 1; -#X obj 78 368 prepend set; -#X connect 0 0 59 0; -#X connect 2 0 0 0; -#X connect 3 0 33 0; -#X connect 4 0 7 0; -#X connect 5 0 6 0; -#X connect 6 0 32 0; -#X connect 7 0 32 0; -#X connect 8 0 35 0; -#X connect 8 0 42 0; -#X connect 8 0 63 0; -#X connect 8 0 65 0; -#X connect 8 0 64 0; -#X connect 8 0 86 0; -#X connect 9 0 59 0; -#X connect 10 0 59 0; -#X connect 11 0 59 0; -#X connect 12 0 59 0; -#X connect 13 0 59 0; -#X connect 14 0 10 0; -#X connect 15 0 9 0; -#X connect 16 0 11 0; -#X connect 17 0 12 0; -#X connect 18 0 13 0; -#X connect 19 0 59 0; -#X connect 20 0 59 0; -#X connect 21 0 2 0; -#X connect 21 1 14 0; -#X connect 21 2 15 0; -#X connect 21 3 16 0; -#X connect 21 4 17 0; -#X connect 21 5 18 0; -#X connect 21 6 28 0; -#X connect 21 7 29 0; -#X connect 21 8 30 0; -#X connect 21 8 37 0; -#X connect 21 9 31 0; -#X connect 21 9 38 0; -#X connect 22 0 24 0; -#X connect 23 0 24 1; -#X connect 24 0 23 0; -#X connect 24 0 56 0; -#X connect 24 0 57 0; -#X connect 25 0 24 1; -#X connect 26 0 59 0; -#X connect 27 0 59 0; -#X connect 28 0 19 0; -#X connect 29 0 20 0; -#X connect 30 0 26 0; -#X connect 31 0 27 0; -#X connect 33 0 21 0; -#X connect 34 0 32 0; -#X connect 35 0 25 0; -#X connect 35 0 22 0; -#X connect 36 0 32 0; -#X connect 37 0 39 0; -#X connect 38 0 40 0; -#X connect 39 0 66 0; -#X connect 39 0 68 0; -#X connect 40 0 58 0; -#X connect 40 0 67 0; -#X connect 41 0 43 0; -#X connect 41 0 55 0; -#X connect 41 0 60 0; -#X connect 42 0 41 0; -#X connect 42 0 51 0; -#X connect 43 0 45 0; -#X connect 43 1 44 0; -#X connect 44 0 47 0; -#X connect 45 0 46 0; -#X connect 46 0 61 0; -#X connect 47 0 62 0; -#X connect 48 0 43 0; -#X connect 48 0 54 0; -#X connect 48 0 60 0; -#X connect 49 0 52 0; -#X connect 50 0 53 0; -#X connect 52 0 50 0; -#X connect 53 0 51 0; -#X connect 54 0 41 0; -#X connect 55 0 48 0; -#X connect 56 0 32 0; -#X connect 57 0 32 0; -#X connect 58 0 32 0; -#X connect 59 0 1 0; -#X connect 59 0 1 1; -#X connect 60 0 49 0; -#X connect 61 0 60 0; -#X connect 61 0 55 0; -#X connect 61 0 54 0; -#X connect 62 0 60 0; -#X connect 62 0 54 0; -#X connect 62 0 55 0; -#X connect 63 0 48 0; -#X connect 64 0 50 0; -#X connect 65 0 49 0; -#X connect 66 0 32 0; -#X connect 67 0 32 0; -#X connect 68 0 32 0; -#X connect 69 0 32 0; -#X connect 70 0 75 0; -#X connect 71 0 70 0; -#X connect 71 0 73 0; -#X connect 72 0 32 0; -#X connect 73 0 76 0; -#X connect 74 0 32 0; -#X connect 75 0 77 0; -#X connect 76 0 78 0; -#X connect 77 0 72 0; -#X connect 78 0 74 0; -#X connect 79 0 83 1; -#X connect 79 0 80 0; -#X connect 80 0 81 0; -#X connect 81 0 83 0; -#X connect 82 0 84 0; -#X connect 82 1 80 0; -#X connect 83 0 82 0; -#X connect 83 0 71 0; -#X connect 84 0 81 0; -#X connect 86 0 85 0; -#X connect 87 0 88 0; -#X connect 88 0 33 0; -#X restore 18 35 pd intro; -#N canvas 0 0 442 580 om 0; -#X obj 306 502 sendOSC; -#X msg 307 426 connect localhost 16180; -#X obj 306 483 prepend send; -#X obj 23 382 dumpOSC 3339; -#X obj 22 -8 widget ngrid n2 #w 382 #h 382 #move 0 #radius 8; -#X obj 23 403 OSCroute /om; -#X obj 23 422 OSCroute /new_port; -#X obj 23 441 niagara 4; -#X obj 23 460 niagara 1; -#X obj 23 498 glue; -#X obj 23 555 prepend add; -#X obj 23 479 a2l; -#X obj 406 407 t b b b; -#X msg 306 464 /om/request/all_objects 5; -#X obj 207 388 widget dm dmngr #items .(error normal swarm trails.) -; -#X msg 154 394 move \$1; -#X msg 351 503 disconnect; -#X obj 99 459 prepend /om/synth/set_port_value 1; -#X msg 305 445 /om/engine/register_client 0 localhost 3339; -#X obj 72 479 niagara 1; -#X obj 23 517 spigot; -#X msg 72 517 1; -#X msg 92 517 0; -#X obj 72 498 route CONTROL; -#X obj 146 421 OSCroute /control_change; -#X obj 146 438 prepend setpos; -#X obj 102 401 spigot; -#X obj 133 387 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 -1; -#X obj 165 478 OSCroute /node_removal; -#X obj 112 517 niagara 1; -#X obj 23 536 spigot; -#X msg 72 536 1; -#X msg 92 536 0; -#X obj 112 536 route INPUT; -#X obj 166 497 prepend delete; -#X obj 354 406 loadbang; -#X text 266 546 www.nongnu.org/om-synth/; -#X obj 199 532 print NOSHIT; -#X connect 1 0 0 0; -#X connect 2 0 0 0; -#X connect 3 0 5 0; -#X connect 3 0 37 0; -#X connect 4 0 17 0; -#X connect 5 0 6 0; -#X connect 5 0 26 0; -#X connect 5 0 28 0; -#X connect 6 0 7 0; -#X connect 7 0 8 0; -#X connect 7 1 9 1; -#X connect 8 0 11 0; -#X connect 8 1 19 0; -#X connect 9 0 20 0; -#X connect 10 0 4 0; -#X connect 11 0 9 0; -#X connect 12 0 13 0; -#X connect 12 1 18 0; -#X connect 12 2 1 0; -#X connect 13 0 2 0; -#X connect 14 0 15 0; -#X connect 15 0 4 0; -#X connect 16 0 0 0; -#X connect 17 0 2 0; -#X connect 18 0 2 0; -#X connect 19 0 23 0; -#X connect 19 1 29 0; -#X connect 20 0 30 0; -#X connect 21 0 20 1; -#X connect 22 0 20 1; -#X connect 23 0 21 0; -#X connect 23 1 22 0; -#X connect 24 0 25 0; -#X connect 25 0 4 0; -#X connect 26 0 24 0; -#X connect 27 0 26 1; -#X connect 28 0 34 0; -#X connect 29 0 33 0; -#X connect 30 0 10 0; -#X connect 31 0 30 1; -#X connect 32 0 30 1; -#X connect 33 0 31 0; -#X connect 33 1 32 0; -#X connect 34 0 4 0; -#X connect 35 0 12 0; -#X restore 18 59 pd om; diff --git a/extensions/gui/ix/ngrid.wid b/extensions/gui/ix/ngrid.wid deleted file mode 100755 index 6d8f16d2..00000000 --- a/extensions/gui/ix/ngrid.wid +++ /dev/null @@ -1,150 +0,0 @@ -namespace eval ::ix { - proc random_int {} {return [expr "int(floor(rand()*16))"]} - proc random_clr {} { - return [format "\#%1X%1X%1X%1X%1X%1X" [random_int] [random_int] [random_int] [random_int] [random_int] [random_int]] - } - variable _ - - proc ngrid_new {path target w h bg ln div move spread radius max} { - variable _ - if {[winfo exists $path.ngrid] != 1} { - canvas $path.ngrid -bg $bg -width $w -height $h - pack $path.ngrid -side left - bind $path.ngrid <1> "::ix::ngrid_click $path $target %x %y" - bind $path.ngrid [bind $path.ngrid <1>] - ngrid_gridlines $path $target $ln $div - set bd [expr {[$path cget -bd] * 2}] - $path configure -bg $bg -width [expr [winfo width $path.ngrid] + $bd] -height [expr [winfo height $path.ngrid] + $bd] - } - set _($target:recent) 0 - set _($target:n) 0 - set _($target:move) $move - set _($target:spread) $spread - set _($target:radius) $radius - set _($target:max) $max} - - proc ngrid_find {which path target what udata} { - variable _ - array set dm {x width y height} - for {set n 0 } {$n <= $_($target:n)} {incr n} { - foreach xy {x y} { - if {[$path.ngrid find withtag name_${xy}_$n] ne "" && [string match "$what*" [lindex $_($target:box$n:$xy) 0]]} { - set x [expr [lindex [$path.ngrid coords sqr_$n] 0] + $_($target:radius)] - set y [expr [lindex [$path.ngrid coords sqr_$n] 1] + $_($target:radius)] - set $xy [expr ($udata - [lindex $_($target:box$n:$xy) 1 ] + 0.0) / ([lindex $_($target:box$n:$xy) 2] - [lindex $_($target:box$n:$xy) 1 ] + 0.0) * [winfo $dm($xy) $path.ngrid]] - switch $which { - setpos {$path.ngrid coords sqr_$n [expr $x - $_($target:radius)] [expr $y - $_($target:radius)] [expr $x + $_($target:radius)] [expr $y + $_($target:radius)]} - pos { - set _($target:recent) $n - ngrid_click $path $target $x $y - } - remove { - $path.ngrid delete name_${xy}_$n - if {[$path.ngrid find withtag name_x_$n] eq "" && [$path.ngrid find withtag name_x_$n] eq ""} { - $path.ngrid delete sqr_$n; $path.ngrid delete hist_$n}}}}}}} - - proc ngrid_vset {path target what where} {variable _; set _($target:$what) $where} - - proc ngrid_add {path target name cur min max} { - variable _ - if {$max == $min} {set max 1.0; set min 0.0} - array set justify {x left y right} - array set anchor {y e x w} - for {set n 0 } {$n <= $_($target:n)} {incr n} {foreach xy {x y} { - if {[$path.ngrid itemcget name_${xy}_$n -text] eq $name} {return}}} - - for {set n 0 } {$n <= $_($target:n)} {incr n} {foreach xy {x y} { - if {[$path.ngrid find withtag name_x_$n] eq "" && [$path.ngrid find withtag name_y_$n] eq ""} { - set fill [set _($target:box$n:fill) [random_clr]] - $path.ngrid create oval 0 0 0 0 -tags sqr_$n -fill $fill -outline white -width 2 - set rx [expr rand() * [winfo width $path.ngrid]]; set ry [expr rand() * [winfo height $path.ngrid]] - $path.ngrid create line $rx $ry $rx $ry -tags hist_$n -fill $fill - $path.ngrid bind sqr_$n <1> "set ::ix::_($target:recent) $n; ::ix::ngrid_click $path $target %x %y" - $path.ngrid bind sqr_$n [$path.ngrid bind sqr_$n <1>] - $path.ngrid bind sqr_$n "::ix::ngrid_highlight $path $target $n grey96" - $path.ngrid bind sqr_$n "::ix::ngrid_highlight $path $target $n -" - ngrid_move $path $target $n $rx $ry - incr _($target:n) - } - if {[$path.ngrid find withtag name_${xy}_$n] eq ""} { - set _($target:box$n:$xy) [list $name $min $max] - puts "adding $xy $n $name $min $max" - switch $xy { - x { - set tl [concat 0 [expr 5 + $n * 8.0]] - set qx [expr ($cur - $min) / ($max - $min + 0.0) * [winfo width $path.ngrid]] - set qy [expr [lindex [$path.ngrid coords sqr_$n] 1] + $_($target:radius)]} - y { - set tl [concat [winfo width $path.ngrid] [expr 5 + $n * 8.0]] - set qx [expr [lindex [$path.ngrid coords sqr_$n] 0] + $_($target:radius)] - set qy [expr ($cur - $min) / ($max - $min + 0.0) * [winfo height $path.ngrid]]}} - $path.ngrid create text $tl -tags name_${xy}_$n -fill $_($target:box$n:fill) -font {{Bitstream Vera Sans} 8} -text $name -anchor $anchor($xy) -justify $justify($xy) - $path.ngrid lower name_${xy}_$n - $path.ngrid bind name_${xy}_$n "::ix::ngrid_highlight $path $target $n grey96" - $path.ngrid bind name_${xy}_$n "::ix::ngrid_highlight $path $target $n -" - ngrid_move $path $target $n $qx $qy - return}}}} - - proc ngrid_highlight {path target n color} { - variable _ - foreach el [list name_y_$n name_x_$n sqr_$n] { - if {$color eq "-"} {set color $_($target:box$n:fill)} - $path.ngrid itemconfigure $el -fill $color - set _($target:recent) $n}} - - proc ngrid_click {path target x y} { - variable _ - switch $_($target:move) { - swarm { - for {set n 0} {$n <= $_($target:n)} {incr n} { - ngrid_move $path $target $n [expr rand() * $_($target:spread) - [expr $_($target:spread) / 2.0] + $x] [expr rand() * $_($target:spread) - [expr $_($target:spread) / 2.0] + $y]}} - trails { - for {set n 0} {$n <= $_($target:n)} {incr n} { - if {[expr rand() > 0.96] == 1} { - ngrid_move $path $target $n [expr rand() * $_($target:spread) - [expr $_($target:spread) / 2.0] + $x] [expr rand() * $_($target:spread) - [expr $_($target:spread) / 2.0] + $y]}}} - error {ngrid_move $path $target $_($target:recent) [expr rand() * $_($target:spread) - [expr $_($target:spread) / 2.0] + $x] [expr rand() * $_($target:spread) - [expr $_($target:spread) / 2.0] + $y]} - default {ngrid_move $path $target $_($target:recent) $x $y}}} - - proc ngrid_move {path target n px py} { - variable _ - $path.ngrid coords sqr_$n [expr $px - $_($target:radius)] [expr $py - $_($target:radius)] [expr $px + $_($target:radius)] [expr $py + $_($target:radius)] - set h [winfo height $path.ngrid] - set w [winfo width $path.ngrid] - foreach xy {x y} { - if {[$path.ngrid find withtag name_${xy}_$n] ne ""} { - set l $_($target:box$n:$xy) - set name [lindex $l 0] - set min [lindex $l 1] - set max [lindex $l 2] - if {[expr $min == 0] && [expr $max == 0]} {set max $_($target:max)} - pd "$target.rp _cb [pdtk_enquote $name] [expr ($max - $min) * [set p$xy] / $w.0 + $min] \;"}}} - - proc ngrid_gridlines {path target ln lines} { - variable _ - puts "gridlines $ln $lines" - set w $path.ngrid - $w delete gridlines - set gh [winfo height $w] - set gw [winfo width $w] - for {set x 1} {$x <= $lines} {incr x} { - if {$lines < 16 && $lines > 0} { - set oh [expr $gh.0 * $x.0 / $lines.0] - set ow [expr $gw.0 * $x.0 / $lines.0] - $w create line $ow 0 $ow $gh -fill $ln -tags gridlines - $w create line 0 $oh $gw $oh -fill $ln -tags gridlines}}}} - -#> ngrid frame -#. -bd 3 #w 384 #h 144 #bg gray10 #ln gray35 #div 6 #n 3 -#. #move normal #spread 96 #radius 9 #max 1 -#. @list ::ix::ngrid_add .- .| {.#1} .#2 .#3 .#4 -#. @add ::ix::ngrid_add .- .| {.#1} .#2 .#3 .#4 -#. @pos ::ix::ngrid_find pos .- .| {.#1} .#2 -#. @setpos ::ix::ngrid_find setpos .- .| {.#1} .#2 -#. @delete ::ix::ngrid_find remove .- .| {.#1} 0 -#. @clear ::ix::ngrid_clear .- .| all -#. @radius ::ix::ngrid_vset .- .| radius .#1 -#. @spread ::ix::ngrid_vset .- .| spread .#1 -#. @move ::ix::ngrid_vset .- .| move .#1 -#. @max ::ix::ngrid_vset .- .| max .#1 -puts "ngrid .- .|" -::ix::ngrid_new .- .| .#w .#h .#bg .#ln .#div .#move .#spread .#radius .#max diff --git a/extensions/gui/ix/nob-demo.pd b/extensions/gui/ix/nob-demo.pd deleted file mode 100755 index 901001a8..00000000 --- a/extensions/gui/ix/nob-demo.pd +++ /dev/null @@ -1,74 +0,0 @@ -#N canvas 151 325 465 268 12; -#X floatatom 234 44 5 16 1024 0 - - -; -#X msg 234 62 #w \$1 \, #h \$1; -#X msg 14 209 #trans \$1; -#X floatatom 14 191 5 22 100 0 - - -; -#X obj 356 150 widget nob n2 #w 34 #h 35 #ca "#ff4a9c" #cb "#83f735" -#cc "#fff74a" #trans 100 #th 8 #bg "#446dfd" #cn "#83f735" #nx -30 -#ny -30 -bd 1; -#X obj 103 198 nbx 8 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 --262144 -1 -1 31.6832 256; -#X obj 103 89 widget nob n1 #w 100 #h 100 #th 7 #cc purple #cb black -#ca red #trans 81 #bg orange #range 1 #cn yellow #ny 82 #nx 50 #max -0 #min 0 -bd 1; -#X msg 225 159 #range \$1; -#X msg 247 194 1; -#X msg 274 194 10000; -#X floatatom 234 6 5 1 50 0 - - -; -#X msg 234 21 #th \$1; -#X obj 338 18 tot .; -#X msg 338 0 query tk_chooseColor; -#X obj 333 36 makefilename "%s"; -#X obj 183 29 widget nob n3 #size #1 #w 30 #h 30 #ny 87 #nx 33 #th -8 #bg orange #cc green #trans 134; -#X floatatom 280 114 5 0 0 0 - - -; -#X msg 280 129 #ny \$1; -#X floatatom 183 11 5 0 0 0 - - -; -#X floatatom 183 62 5 0 0 0 - - -; -#X floatatom 280 81 5 0 0 0 - - -; -#X msg 280 96 #nx \$1; -#X msg 247 220 #max 1; -#X obj 8 -2 widget dm color #arrows 0 #items .(bg ca cb cc cn.); -#X obj 108 2 loadbang; -#X obj 37 -2 widget dm bg #arrows 0 #items .(green red purple blue -orange yellow black white pink.); -#X obj 41 53 prepend; -#X msg 108 21 bg; -#X obj 285 152 widget dm range #arrow 0 #items .(1 100 1000 0.1.) #arrows -0; -#X msg 292 220 #max 32 \, #min 16; -#X msg 247 240 #min 0 \, #max 0; -#X obj 7 29 makefilename #%s; -#X text 347 87 right = 1/10th; -#X text 347 76 middle = 10; -#X text 357 99 left = 1; -#X connect 0 0 1 0; -#X connect 1 0 6 0; -#X connect 2 0 6 0; -#X connect 3 0 2 0; -#X connect 6 0 5 0; -#X connect 7 0 6 0; -#X connect 8 0 6 0; -#X connect 9 0 6 0; -#X connect 10 0 11 0; -#X connect 11 0 6 0; -#X connect 12 0 14 0; -#X connect 13 0 12 0; -#X connect 14 0 26 0; -#X connect 15 0 19 0; -#X connect 16 0 17 0; -#X connect 17 0 6 0; -#X connect 18 0 15 0; -#X connect 19 0 6 0; -#X connect 20 0 21 0; -#X connect 21 0 6 0; -#X connect 22 0 6 0; -#X connect 23 0 31 0; -#X connect 24 0 27 0; -#X connect 25 0 26 0; -#X connect 26 0 6 0; -#X connect 27 0 31 0; -#X connect 28 0 7 0; -#X connect 29 0 6 0; -#X connect 30 0 6 0; -#X connect 31 0 26 1; diff --git a/extensions/gui/ix/nob.wid b/extensions/gui/ix/nob.wid deleted file mode 100755 index 9d256537..00000000 --- a/extensions/gui/ix/nob.wid +++ /dev/null @@ -1,105 +0,0 @@ -#console show -package require Tkzinc 3.3 -package require zincGraphics -namespace eval ::ix { - variable _ - proc nobfloat {path t num} { - variable _ - $path itemconfigure $t:num -text $num - pd [concat $t.rp _cb $num \;] - set _($t:num) $num - } - proc nob_mover {w t f x y} { - variable _ - if {$::ix::_($t:clickd) > 0} { - set move [expr (($x - $::ix::_($t:lx)) + (-1 * ($y - $::ix::_($t:ly)))) / ([winfo width $w].0 + [winfo height $w].0) * $f] - nob_move $w $t $move - } - set ::ix::_($t:clickd) 1 - set ::ix::_($t:lx) $x - set ::ix::_($t:ly) $y - } - proc nob_move {w t move} { - variable _ - set on [$w itemcget $t:num -text] - set no [expr $on + $_($t:range) * $move * 2] - if {$_($t:min) != $_($t:max)} { - if {$no > $_($t:max)} {set no $_($t:max);set move 0} - if {$no < $_($t:min)} {set no $_($t:min);set move 0} - } - nobfloat $w $t $no - foreach e {1 10 100} { - set a [expr [$w itemcget $t:nob$e -startangle] + int($move * $e * 90)] - $w itemconfigure $t:nob$e -startangle $a - set _($t:a$e) $a - } - } - - proc nob {path t w h range bg c1 c2 c3 cn trans th nx ny max min} { - variable _ - set _($t:lx) 32 - set _($t:clickd) -1 - set _($t:max) $max - set _($t:min) $min - if {$_($t:min) != $_($t:max)} { - set _($t:range) [expr abs($min - $max)] - } else { - set _($t:range) $range - } - if {[winfo exists $path.nob] != 1} { - zinc $path.nob -render 1 -width $w -height $h -borderwidth 1 -lightangle 140 -backcolor $bg - $path configure -width $w -height $h - place $path.nob -anchor nw -relwidth 1 -relheight 1 - $path.nob remove * - set i 0 - set colors [list $c1 $c2 $c3] - set ratios {1 10 0.1} - set edge 10 - $path.nob add rectangle 1 {1 1 8 4} -filled 1 -fillcolor "#555555" - $path.nob add rectangle 1 "1 $h 8 [expr $h - 5]" -filled 1 -fillcolor "#555555" - foreach e {1 10 100} { - $path.nob add arc 1 \ - "[expr $w / $edge / ($i + 1) + ($edge / 2)] [expr $h / $edge / ($i + 1) + ($edge / 2)] [expr $w - $w / $edge / ($i + 1) - ($edge / 2)] [expr $h - $h / $edge / ($i + 1) - ($edge / 2)]" \ - -closed 0 -filled 0 -extent [expr int(300 / $e)] -startangle 90 \ - -linecolor "[lindex $colors $i];$trans" \ - -linewidth [expr int($h / $th)] \ - -tags $t:nob$e - bind $path.nob \ - "::ix::nob_mover $path.nob $t [lindex $ratios $i] %x %y" - incr i - bind $path.nob "set ::ix::_($t:clickd) -1" - } - bind $path {::ix::nob_move %W.nob [winfo name %W] [expr %D / 2400.]} - bind $path {::ix::nob_move %W.nob [winfo name %W] [expr %D / 24000.]} - bind $path {::ix::nob_move %W.nob [winfo name %W] [expr %D / 240.]} - bind $path.nob "::ix::nob_mover $path.nob $t 10 %x %y" - bind $path.nob "::ix::nob_mover $path.nob $t 0.1 %x %y" - if {$nx == 0} { - set nx [expr $w / 2] - set ny [expr $h - 20] - } - $path.nob add text 1 -text "0.0" \ - -position "$nx $ny" -tags $t:num -color "$cn;$trans" - } - if {[info exists _($t:num)]} { - $path.nob itemconfigure $t:num -text $_($t:num) - foreach e {1 10 100} { - $path.nob itemconfigure $t:nob$e -startangle $_($t:a$e) - } - } else { - foreach e {1 10 100} {set _($t:a$e) 90} - set _($t:num) 0.0} - - } -} -#> nob frame -#. -height 128 -width 128 -bd 1 -bg "#cccccc" -#. -highlightbackground red -#. #max 0 #min 0 -#. #w 128 #h 128 #trans 70 #th 5 #range 100 #nx 0 #ny 0 -#. #bg purple #ca blue #cb yellow #cc green #cn orange -#. @float ::ix::nobfloat .-.nob .| .#1 -#. @cmd eval ".-.nob .#args" -bind .- {focus .-} -bind .- {focus .^.c} -::ix::nob .- .| .#w .#h .#range .#bg .#ca .#cb .#cc .#cn .#trans .#th .#nx .#ny .#max .#min diff --git a/extensions/gui/ix/q-demo.pd b/extensions/gui/ix/q-demo.pd deleted file mode 100755 index 492c538e..00000000 --- a/extensions/gui/ix/q-demo.pd +++ /dev/null @@ -1,90 +0,0 @@ -#N canvas 46 0 792 949 12; -#X obj 20 352 widget q q1 -width 37 -height 56 -font .(Tahoma 8.) -bg -white -fg cyan; -#X obj 58 332 popen; -#X msg 58 313 grep \$1 wavs.d; -#X obj 56 276 widget dd d1 -width 30; -#X msg 16 313 clear; -#X obj 18 278 t s b; -#X obj 312 363 player w; -#X obj 353 242 loadbang; -#X msg 387 313 \; pd dsp 1; -#X floatatom 258 335 5 0 0 0 - - -; -#X obj 210 584 widget q lb2 -width 24 -height 26; -#X obj 17 56 widget q x0; -#X obj 148 56 widget q x1; -#X obj 278 57 widget q x2; -#X obj 408 57 widget q x3; -#X obj 537 57 widget q x5; -#X obj 19 32 pool w; -#X msg 19 11 chdir \, getsub; -#X obj 280 238 l2s; -#X msg 306 260 symbol /; -#X obj 19 210 ndx; -#X obj 670 57 widget q q5; -#X msg 384 352 load wavs.dat; -#X obj 280 211 ndx; -#X obj 150 210 ndx; -#X obj 411 211 ndx; -#X obj 539 211 ndx; -#X obj 672 211 ndx; -#X text 54 263 search; -#X text 220 564 <-right click starts drag; -#X obj 310 409 widget q -bg -fg white -width 41 -bg black; -#X obj 212 409 widget q -width -bg "#2f3351" -fg "#ff8617" -width 16 -; -#X msg 151 296 clear; -#X msg 102 259 bang; -#X obj 348 382 outlet~; -#X obj 394 382 outlet~; -#X msg 222 352 next; -#X msg 222 334 prev; -#X msg 263 362 stop; -#X connect 0 0 6 1; -#X connect 1 0 0 0; -#X connect 2 0 1 0; -#X connect 3 0 5 0; -#X connect 4 0 0 0; -#X connect 5 0 2 0; -#X connect 5 1 4 0; -#X connect 6 2 30 0; -#X connect 6 3 31 0; -#X connect 6 4 36 0; -#X connect 6 5 34 0; -#X connect 6 6 35 0; -#X connect 7 0 8 0; -#X connect 7 0 19 0; -#X connect 7 0 22 0; -#X connect 9 0 0 0; -#X connect 11 0 20 1; -#X connect 12 0 24 1; -#X connect 13 0 23 1; -#X connect 14 0 25 1; -#X connect 15 0 26 1; -#X connect 16 1 11 0; -#X connect 17 0 16 0; -#X connect 18 0 6 1; -#X connect 19 0 18 1; -#X connect 20 0 18 0; -#X connect 20 0 24 0; -#X connect 20 1 12 0; -#X connect 21 0 27 1; -#X connect 22 0 6 2; -#X connect 23 0 18 0; -#X connect 23 0 25 0; -#X connect 23 1 14 0; -#X connect 24 0 18 0; -#X connect 24 0 23 0; -#X connect 24 1 13 0; -#X connect 25 0 18 0; -#X connect 25 0 26 0; -#X connect 25 1 15 0; -#X connect 26 0 18 0; -#X connect 26 0 27 0; -#X connect 26 1 21 0; -#X connect 27 0 18 0; -#X connect 32 0 3 0; -#X connect 33 0 3 0; -#X connect 36 0 0 0; -#X connect 37 0 0 0; -#X connect 38 0 6 0; diff --git a/extensions/gui/ix/q.wid b/extensions/gui/ix/q.wid deleted file mode 100755 index 8a971c6e..00000000 --- a/extensions/gui/ix/q.wid +++ /dev/null @@ -1,84 +0,0 @@ -#console show -package require tkdnd -namespace eval ::ix { - proc qo {p t e} { - set s [$p get $e] - if {$s ne ""} { - pd [concat $t.rp _cb symbol [pdtk_enquote $s] \;] - } else {pd [concat $t.rp _cb bang \;]} - } - proc qi {p t i} { - $p selection clear 0 end - $p selection set $i - qo $p $t $i - } - proc q_go {p t d} { - array set direction "next 1 prev -1" - array set edge "next end prev 0" - set cs [$p curselection] - if {$cs eq "" && [$p index end] != 0} { - set go 0 } else { - set go [expr $direction($d) + [lindex $cs $edge($d)]]} - if {$go >= [$p index end]} {set go 0} - if {$go < 0} {set go [expr [$p index end] - 1]} - qi $p $t $go - } -} -#> q listbox -#. -selectmode extended -font {{Bitstream Vera Sans} 8} -exportselection 0 -#. -relief flat -borderwidth 0 -selectborderwidth 0 -bg "#ccffcc" -fg black -#. @list foreach x [list .#args] {.- insert end $x} -#. @add .- insert end [join [lrange [list .#args] 0 end] " "] -#. @scroll .- yview scroll .#1 units -#. @symbol .- insert end {.#1} -#. @float ::ix::qi .- .| .#1 -#. @clear .- delete 0 end -#. @next ::ix::q_go .- .| next -#. @prev ::ix::q_go .- .| prev -#. @cmd eval ".- .#args" -bind .- {focus .-} -bind .- {focus .^.c} -bind .- <4> { pd [concat .|.rp _cb scroll -5 \;]} -bind .- <5> { pd [concat .|.rp _cb scroll 5 \;]} -bind .- {.- xview scroll [expr {- (%D / 120) * 4}] units} -bind .- {} -bind .- {dnd drag %W} -dnd bindtarget .- text/plain { - foreach l [split %D "\n"] {.- insert end [regsub -- {^file:[/]+} $l "/"]} -} -dnd bindtarget .- text/uri-list {foreach d %D {.- insert end [regsub -- {^file:[/]+} $d "/"]}} -dnd bindsource .- text/uri-list { - set sel [.- curselection] - if {$sel ne ""} { - set dd {} - foreach el $sel { - lappend dd [.- get $el] - } - return $dd - } -} -bind .- <> { - set sel [.- curselection] - if {$sel ne ""} { - ::ix::qo .- .| [lindex $sel end] -# foreach el $sel { -# ::ix::qo .- .| $el -# } - } -} -bind .- <> { - set sel [.- curselection] - if {$sel ne ""} { - for {set i [expr [llength $sel] - 1]} {0 <= $i} {incr i -1} { - .- delete [lindex $sel $i] - } - } -} -bind .- <> { - .- selection set 0 end -} -event add <> -event add <> -event add <> -event add <> -puts "q .- .|" diff --git a/extensions/gui/ix/sp-demo.pd b/extensions/gui/ix/sp-demo.pd deleted file mode 100755 index 28bd5464..00000000 --- a/extensions/gui/ix/sp-demo.pd +++ /dev/null @@ -1,325 +0,0 @@ -#N canvas 387 298 580 364 10; -#X obj 40 102 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 -; -#X obj -196 21 loadbang; -#X obj -196 111 until; -#X obj -299 225 textfile; -#X obj -299 207 prepend add2; -#X msg -307 171 clear; -#X msg -307 171 bang; -#X obj -299 243 prepend draw; -#X obj -307 153 t b b b; -#X obj -196 129 f 512; -#X obj -196 147 mod 512; -#X obj -196 147 - 1; -#X obj -176 75 samplerate~; -#X obj -251 71 * 1000; -#X obj -196 75 /; -#X obj -273 89 metro 46; -#X msg -77 218 img configure -height \$1 \, -height \$1; -#X obj -196 93 i 512; -#X obj 63 33 hsl 128 15 0 1000 0 1 empty empty hue -2 -6 0 8 -1 -262144 --1 6200 1; -#X obj -149 200 exp; -#X obj 42 32 tgl 15 1 empty empty empty 0 -6 0 8 -99865 -195568 -1 -1 1; -#X obj -174 165 demux; -#X obj -129 182 log; -#X obj -149 182 *; -#X obj -129 164 t f f; -#X obj -129 200 /; -#X msg -248 129 -1; -#X msg -225 129 1; -#X obj 197 33 hsl 128 15 30 300 0 1 empty empty gain -2 -6 0 8 -262144 --1 -1 4200 1; -#X obj -129 254 +; -#X obj 59 49 widget sp sp1 -height 303; -#X obj -162 236 sqrt; -#X obj -157 272 mod 1000; -#X obj -157 290 demux; -#X obj 42 50 tgl 15 1 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 -; -#X obj -129 326 abs; -#X obj -129 308 - 1000; -#X obj -129 236 * 110; -#X msg -196 39 512; -#X obj -147 129 i; -#X obj -196 57 t f b; -#X obj 3 75 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10 -262144 --1 -1 303 256; -#X obj -322 17 mp3amp~; -#X msg -271 -1 disconnect; -#X msg -209 -1 connecturl live365.com:80/play/wfmu1; -#X obj 61 -5 widget dd d1 #width 25 -width 73; -#X obj -271 37 readsf~ 2; -#X msg -271 17 open \$1 \, 1; -#X obj -329 55 dac~; -#X text 6 30 log/lin; -#X text 11 100 start; -#X text 2 52 palette; -#X text 3 44 inverse; -#N canvas 845 38 435 259 1000sp 0; -#X obj 96 113 inlet; -#X obj 12 -13 inlet~; -#X obj 11 68 rfft~; -#X obj 5 103 *~; -#X obj 12 135 sqrt~; -#X obj 32 103 *~; -#X obj 94 27 loadbang; -#X obj 94 48 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 -; -#X obj 105 65 prepend set; -#X obj 122 47 pack 1 1 1; -#X obj 166 21 inlet; -#X obj 95 83 switch~ 512 1 1; -#X obj 247 1 table \$0sp 512; -#X obj 11 166 tabwrite~ \$0sp; -#X obj 36 9 tabreceive~ \$0w; -#X obj 338 1 table \$0w; -#X msg 310 112 0; -#X obj 267 130 osc~; -#X obj 267 83 samplerate~; -#X obj 267 107 / 256; -#X obj 267 152 *~ -0.5; -#X obj 267 174 +~ 0.5; -#X obj 253 41 loadbang; -#X obj 23 31 *~; -#X obj 252 203 tabwrite~ \$0w; -#X obj 338 25 pack f \$0; -#X msg 338 43 \; \$2w resize \$1; -#X obj 193 45 t b f; -#X msg 253 63 bang; -#X obj 338 101 pack f \$0; -#X msg 338 119 \; \$2sp resize \$1; -#X obj 338 83 / 2; -#X connect 0 0 13 0; -#X connect 1 0 23 0; -#X connect 2 0 3 1; -#X connect 2 0 3 0; -#X connect 2 1 5 1; -#X connect 2 1 5 0; -#X connect 3 0 4 0; -#X connect 4 0 13 0; -#X connect 5 0 4 0; -#X connect 6 0 7 0; -#X connect 7 0 11 0; -#X connect 8 0 11 0; -#X connect 9 0 8 0; -#X connect 10 0 9 0; -#X connect 10 0 27 0; -#X connect 14 0 23 1; -#X connect 16 0 17 1; -#X connect 17 0 20 0; -#X connect 18 0 19 0; -#X connect 19 0 17 0; -#X connect 20 0 21 0; -#X connect 21 0 24 0; -#X connect 22 0 28 0; -#X connect 23 0 2 0; -#X connect 25 0 26 0; -#X connect 27 0 28 0; -#X connect 27 1 19 1; -#X connect 27 1 25 0; -#X connect 27 1 31 0; -#X connect 28 0 16 0; -#X connect 28 0 18 0; -#X connect 28 0 24 0; -#X connect 29 0 30 0; -#X connect 31 0 29 0; -#X restore -285 112 pd \$0sp; -#X obj -162 218 tabread4 \$0sp; -#X msg -170 39 1024; -#X obj -157 343 * 0.255; -#N canvas 0 0 356 499 hsv2rgb 0; -#X obj 152 455 sprintf symbol #%02x%02x%02x; -#X obj 41 14 inlet; -#X obj 153 471 outlet; -#X obj 53 75 / 42.5; -#X obj 18 55 t f f; -#X obj 31 33 unpack f f f; -#X obj 16 85 / 42.5; -#X obj 23 115 -; -#X obj 56 97 i; -#X obj 115 78 / 255; -#X obj 96 112 *; -#X obj 70 143 *; -#X text 14 39 h; -#X text 58 46 s; -#X text 88 42 v; -#X text 75 102 i; -#X text 16 120 f; -#X text 145 83 vf; -#X text 115 117 vs; -#X text 90 148 vsf; -#X text 147 185 p; -#X text 73 225 q; -#X text 132 212 t; -#X obj 122 139 t b f; -#X obj 124 162 f; -#X obj 126 183 -; -#X obj 52 192 f; -#X obj 52 169 t b f; -#X obj 54 220 -; -#X obj 112 207 +; -#X obj 131 272 f; -#X obj 162 271 f; -#X obj 197 272 f; -#X obj 231 271 f; -#X text 250 277 v; -#X text 218 275 p; -#X text 146 279 t; -#X text 182 278 q; -#X obj 92 278 i; -#X obj 214 293 prepend add2; -#X msg 193 321 96.8999 0 255; -#X obj 77 325 t b b b; -#X obj 79 252 t b b f b; -#X msg 191 295 set; -#X obj 90 345 t b b b; -#X obj 116 367 t b b b; -#X obj 138 387 t b b b; -#X obj 153 414 t b b b; -#X obj 167 435 t b b b; -#X obj 79 300 route 1 2 3 4 5; -#X connect 0 0 2 0; -#X connect 1 0 5 0; -#X connect 3 0 8 0; -#X connect 4 0 6 0; -#X connect 4 1 3 0; -#X connect 5 0 4 0; -#X connect 5 1 10 0; -#X connect 5 2 9 0; -#X connect 5 2 24 1; -#X connect 5 2 26 1; -#X connect 5 2 33 1; -#X connect 6 0 7 0; -#X connect 7 0 11 0; -#X connect 8 0 7 1; -#X connect 8 0 38 1; -#X connect 9 0 10 1; -#X connect 10 0 11 1; -#X connect 10 0 23 0; -#X connect 11 0 27 0; -#X connect 23 0 24 0; -#X connect 23 1 25 1; -#X connect 24 0 25 0; -#X connect 25 0 29 1; -#X connect 25 0 32 1; -#X connect 26 0 28 0; -#X connect 27 0 26 0; -#X connect 27 1 28 1; -#X connect 27 1 29 0; -#X connect 28 0 42 0; -#X connect 29 0 30 1; -#X connect 30 0 39 0; -#X connect 31 0 39 0; -#X connect 32 0 39 0; -#X connect 33 0 39 0; -#X connect 38 0 49 0; -#X connect 39 0 40 0; -#X connect 40 0 0 0; -#X connect 41 0 32 0; -#X connect 41 1 33 0; -#X connect 41 2 31 0; -#X connect 42 0 40 0; -#X connect 42 1 38 0; -#X connect 42 2 31 1; -#X connect 42 3 43 0; -#X connect 43 0 40 0; -#X connect 44 0 30 0; -#X connect 44 1 33 0; -#X connect 44 2 32 0; -#X connect 45 0 33 0; -#X connect 45 1 31 0; -#X connect 45 2 32 0; -#X connect 46 0 33 0; -#X connect 46 1 32 0; -#X connect 46 2 30 0; -#X connect 47 0 31 0; -#X connect 47 1 32 0; -#X connect 47 2 33 0; -#X connect 48 0 32 0; -#X connect 48 1 30 0; -#X connect 48 2 33 0; -#X connect 49 0 41 0; -#X connect 49 1 44 0; -#X connect 49 2 45 0; -#X connect 49 3 46 0; -#X connect 49 4 47 0; -#X connect 49 5 48 0; -#X restore -268 186 pd hsv2rgb; -#X obj -313 74 adc~; -#X obj -268 167 pack 0 255 255; -#X connect 0 0 15 0; -#X connect 1 0 38 0; -#X connect 2 0 9 0; -#X connect 3 0 7 0; -#X connect 4 0 3 0; -#X connect 5 0 3 0; -#X connect 6 0 3 0; -#X connect 7 0 30 0; -#X connect 8 0 6 0; -#X connect 8 1 17 0; -#X connect 8 2 5 0; -#X connect 9 0 11 0; -#X connect 10 0 9 1; -#X connect 10 0 21 0; -#X connect 11 0 10 0; -#X connect 12 0 14 1; -#X connect 13 0 15 1; -#X connect 14 0 13 0; -#X connect 15 0 53 1; -#X connect 15 0 8 0; -#X connect 16 0 30 0; -#X connect 17 0 2 0; -#X connect 18 0 29 1; -#X connect 19 0 54 0; -#X connect 20 0 21 1; -#X connect 21 0 54 0; -#X connect 21 1 23 0; -#X connect 22 0 25 0; -#X connect 23 0 19 0; -#X connect 24 0 22 0; -#X connect 24 1 25 1; -#X connect 25 0 23 1; -#X connect 26 0 11 1; -#X connect 27 0 11 1; -#X connect 28 0 37 1; -#X connect 29 0 32 0; -#X connect 31 0 37 0; -#X connect 32 0 33 0; -#X connect 33 0 56 0; -#X connect 33 1 36 0; -#X connect 34 0 33 1; -#X connect 35 0 56 0; -#X connect 36 0 35 0; -#X connect 37 0 29 0; -#X connect 38 0 40 0; -#X connect 39 0 10 1; -#X connect 39 0 9 1; -#X connect 39 0 16 0; -#X connect 39 0 17 1; -#X connect 39 0 24 0; -#X connect 40 0 14 0; -#X connect 40 0 53 2; -#X connect 40 1 12 0; -#X connect 41 0 39 0; -#X connect 42 0 48 0; -#X connect 42 0 53 0; -#X connect 42 1 48 1; -#X connect 42 1 53 0; -#X connect 43 0 42 0; -#X connect 44 0 42 0; -#X connect 45 0 47 0; -#X connect 46 0 48 0; -#X connect 46 0 53 0; -#X connect 46 1 48 1; -#X connect 46 1 53 0; -#X connect 47 0 46 0; -#X connect 54 0 31 0; -#X connect 55 0 40 0; -#X connect 56 0 59 0; -#X connect 57 0 4 0; -#X connect 58 0 53 0; -#X connect 59 0 57 0; -#X coords 0 0 2.71716e-06 4.15856e-06 535 500 0; diff --git a/extensions/gui/ix/sp.wid b/extensions/gui/ix/sp.wid deleted file mode 100755 index 2b41902f..00000000 --- a/extensions/gui/ix/sp.wid +++ /dev/null @@ -1,36 +0,0 @@ -#console show -namespace eval ::ix { - variable _ - proc sp {p t} { - variable _ - image create photo $t - $p configure -image $t - set _($t:loc) 0 - } - proc spl {t args} { - variable _ - incr _($t:loc) - if {$_($t:loc) > 511} {set _($t:loc) 0} - set draw {} - foreach pixel $args { - set pixel [expr int($pixel)] - lappend draw [format #%02x%02x%02x $pixel $pixel $pixel] - } - $t put $draw -to $_($t:loc) 0 - } - proc spd {t args} { - variable _ - incr _($t:loc) - if {$_($t:loc) > 511} {set _($t:loc) 0} - $t put $args -to $_($t:loc) 0 - } -} -#> sp label -#. @list ::ix::spl .| .#args -#. @draw ::ix::spd .| .#args -#. @clear .- delete 0 end -#. @img eval ".| .#args" -#. @cmd eval ".- .#args" -bind .- {.| put #eeeeee -to %x %y} -::ix::sp .- .| -puts "setup" \ No newline at end of file diff --git a/extensions/gui/ix/spectrum-demo.pd b/extensions/gui/ix/spectrum-demo.pd deleted file mode 100755 index 98c5a385..00000000 --- a/extensions/gui/ix/spectrum-demo.pd +++ /dev/null @@ -1,171 +0,0 @@ -#N canvas 62 98 623 209 10; -#X obj -28 29 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 -; -#X obj -115 21 loadbang; -#X obj -95 69 samplerate~; -#X obj -115 85 * 1000; -#X obj -115 69 /; -#X obj -115 101 metro 46; -#X obj 86 29 tgl 15 1 \$0loglin empty empty 0 -6 0 8 -99865 -195568 --1 0 1; -#X obj 112 30 hsl 128 15 1 100 0 1 \$0gain empty empty -2 -6 0 8 -262144 --1 -1 3500 1; -#X obj -28 46 widget spectrum sp1 #ca "#ffff4c" #cb "#0ebcd8" #tb 57 -#w 480 #h 160 -height 269; -#X obj -115 53 t f b; -#X text 57 30 log/lin; -#N canvas 755 38 493 259 1000sp 0; -#X obj 96 113 inlet; -#X obj 12 -13 inlet~; -#X obj 11 68 rfft~; -#X obj 5 103 *~; -#X obj 12 135 sqrt~; -#X obj 32 103 *~; -#X obj 94 27 loadbang; -#X obj 94 48 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 -; -#X obj 105 65 prepend set; -#X obj 122 47 pack 1 1 1; -#X obj 166 21 inlet; -#X obj 95 83 switch~ 512 1 1; -#X obj 36 9 tabreceive~ \$0w; -#X obj 338 1 table \$0w; -#X msg 310 112 0; -#X obj 267 130 osc~; -#X obj 267 83 samplerate~; -#X obj 267 107 / 256; -#X obj 267 152 *~ -0.5; -#X obj 267 174 +~ 0.5; -#X obj 253 41 loadbang; -#X obj 16 32 *~; -#X obj 252 203 tabwrite~ \$0w; -#X obj 338 25 pack f \$0; -#X msg 338 43 \; \$2w resize \$1; -#X obj 193 45 t b f; -#X msg 253 63 bang; -#X obj 338 101 pack f \$0; -#X obj 338 83 / 2; -#X obj 51 -14 inlet~; -#X obj 53 68 rfft~; -#X obj 47 103 *~; -#X obj 54 135 sqrt~; -#X obj 74 103 *~; -#X obj 58 32 *~; -#X obj 94 166 tabwrite~ \$0sp1; -#X obj 11 166 tabwrite~ \$0sp0; -#X msg 338 119 \; \$2sp0 resize \$1 \; \$2sp1 resize \$1; -#X obj 247 1 table \$0sp0 512; -#X obj 247 17 table \$0sp1 512; -#X connect 0 0 36 0; -#X connect 0 0 35 0; -#X connect 1 0 21 0; -#X connect 2 0 3 1; -#X connect 2 0 3 0; -#X connect 2 1 5 1; -#X connect 2 1 5 0; -#X connect 3 0 4 0; -#X connect 4 0 36 0; -#X connect 5 0 4 0; -#X connect 6 0 7 0; -#X connect 7 0 11 0; -#X connect 8 0 11 0; -#X connect 9 0 8 0; -#X connect 10 0 9 0; -#X connect 10 0 25 0; -#X connect 12 0 21 1; -#X connect 12 0 34 1; -#X connect 14 0 15 1; -#X connect 15 0 18 0; -#X connect 16 0 17 0; -#X connect 17 0 15 0; -#X connect 18 0 19 0; -#X connect 19 0 22 0; -#X connect 20 0 26 0; -#X connect 21 0 2 0; -#X connect 23 0 24 0; -#X connect 25 0 26 0; -#X connect 25 1 17 1; -#X connect 25 1 23 0; -#X connect 25 1 28 0; -#X connect 26 0 14 0; -#X connect 26 0 16 0; -#X connect 26 0 22 0; -#X connect 27 0 37 0; -#X connect 28 0 27 0; -#X connect 29 0 34 0; -#X connect 30 0 31 1; -#X connect 30 0 31 0; -#X connect 30 1 33 1; -#X connect 30 1 33 0; -#X connect 31 0 32 0; -#X connect 32 0 35 0; -#X connect 33 0 32 0; -#X connect 34 0 30 0; -#X restore -144 155 pd \$0sp; -#X msg -115 37 2048; -#X text -10 31 power; -#X obj -145 76 adc~; -#X msg 289 30 #ca \$1; -#X obj 358 30 tot .; -#X msg 353 15 query tk_chooseColor; -#X obj 387 31 makefilename "%s"; -#X obj 289 14 demux; -#X obj 338 15 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 -; -#X msg 323 30 #cb \$1; -#X floatatom 258 17 5 33 100 0 - - -; -#X msg 249 30 #tb \$1; -#X floatatom 7 1 5 30 500 0 - - -; -#X floatatom -20 1 5 64 640 0 - - -; -#X msg 94 15 #w \$1; -#X obj 22 14 spr \$0 \$0sp1 2; -#X msg 125 15 #h \$1; -#X obj -50 14 spr \$0 \$0sp0 1; -#X msg -115 5 480; -#X msg -92 5 160; -#X obj -132 132 biquad~; -#X obj -103 135 notch 4000 42; -#X obj -139 118 hsl 106 15 0 10000 0 0 empty empty empty -2 -6 0 8 --262144 -1 -1 8600 1; -#X connect 0 0 5 0; -#X connect 1 0 12 0; -#X connect 1 0 30 0; -#X connect 1 0 31 0; -#X connect 2 0 4 1; -#X connect 3 0 5 1; -#X connect 4 0 3 0; -#X connect 5 0 11 2; -#X connect 5 0 27 0; -#X connect 5 0 29 0; -#X connect 9 0 4 0; -#X connect 9 0 11 3; -#X connect 9 1 2 0; -#X connect 12 0 9 0; -#X connect 14 0 11 0; -#X connect 14 1 32 0; -#X connect 15 0 8 0; -#X connect 16 0 18 0; -#X connect 17 0 16 0; -#X connect 18 0 19 0; -#X connect 19 0 15 0; -#X connect 19 1 21 0; -#X connect 20 0 19 1; -#X connect 21 0 8 0; -#X connect 22 0 23 0; -#X connect 23 0 8 0; -#X connect 24 0 28 0; -#X connect 24 0 29 2; -#X connect 24 0 27 2; -#X connect 25 0 26 0; -#X connect 25 0 27 1; -#X connect 25 0 29 1; -#X connect 26 0 8 0; -#X connect 27 0 8 0; -#X connect 28 0 8 0; -#X connect 29 0 8 0; -#X connect 30 0 25 0; -#X connect 31 0 24 0; -#X connect 32 0 11 1; -#X connect 33 0 32 0; -#X connect 34 0 33 0; -#X coords 0 0 2.71716e-06 4.15856e-06 535 500 0; diff --git a/extensions/gui/ix/spectrum.wid b/extensions/gui/ix/spectrum.wid deleted file mode 100755 index e42af026..00000000 --- a/extensions/gui/ix/spectrum.wid +++ /dev/null @@ -1,42 +0,0 @@ -#console show -package require Tkzinc 3.3 -package require zincGraphics -namespace eval ::ix { - variable _ - proc spectrum_sub {t sub} { - variable _ - set _($t:use) $sub - } - proc spectrum_floats {path t w h args} { - variable _ - set coords "0 $h" - set i 0 - foreach num $args { - incr i - lappend coords $i $num - } - lappend coords $w $h - $path coords $t:sub$_($t:use) $coords - - } - proc spectrum {path t w h bg c1 c2 t1 t2} { - if {[winfo exists $path.nob] != 1} { - zinc $path.nob -render 1 -width $w -height $h -borderwidth 1 -lightangle 140 -backcolor $bg - $path configure -width $w -height $h - place $path.nob -anchor nw -relwidth 1 -relheight 1 - $path.nob remove * - $path.nob add curve 1 {1 1 8 4} -filled 1 -linewidth 0 -fillcolor "$c1;$t1" -closed 1 -tags $t:sub1 - $path.nob add curve 1 {1 1 8 4} -filled 1 -linewidth 0 -fillcolor "$c2;$t2" -closed 1 -tags $t:sub2 - } - } -} -#> spectrum frame -#. -height 160 -width 480 -bd 1 -bg "#cccccc" -#. #h 160 #w 480 #bg gray20 #ca yellow #cb red #ta 100 #tb 50 -#. @list ::ix::spectrum_floats .-.nob .| .#w .#h .#args -#. @use ::ix::spectrum_sub .| .#1 -#. @cmd eval ".-.nob .#args" -bind .- {focus .-} -bind .- {focus .^.c} -::ix::spectrum .- .| .#w .#h .#bg .#ca .#cb .#ta .#tb -puts "spectrum .- .|" diff --git a/extensions/gui/ix/tile-demo.pd b/extensions/gui/ix/tile-demo.pd deleted file mode 100755 index 4e7c845b..00000000 --- a/extensions/gui/ix/tile-demo.pd +++ /dev/null @@ -1,74 +0,0 @@ -#N canvas 265 374 607 366 12; -#X obj 135 73 widget tile t1 #e non -colwidth -13 -rows 12 -cols 16 --width 16 -height 12 -rowheight -13 -bd 1 -bg red; -#X msg 80 87 redefine; -#X msg 198 53 clr; -#X msg 100 54 #e \$1; -#X obj 137 46 widget dm #items #items .(rows columns non.) #arrows -0 -bg pink; -#X floatatom 428 3 2 0 64 0 - - -; -#X floatatom 271 14 5 0 0 0 - - -; -#X floatatom 271 -2 5 0 0 0 - - -; -#X obj 459 9 * -1; -#X msg 419 27 -colwidth \$1 \, -rowheight \$1; -#X msg 271 30 -cols \$1 \, -width \$1 \, clr; -#X msg 270 49 -rows \$1 \, -height \$1 \, clr; -#X obj 199 -10 bng 55 250 50 0 empty empty empty 0 -6 0 8 -241291 -1 --1; -#X obj 441 277 osc~ 440; -#X obj 462 165 mtof; -#X obj 499 297 line~; -#X obj 465 325 dac~ 1 2; -#X obj 466 302 *~; -#X obj 462 106 - 12; -#X obj 462 125 abs; -#X obj 422 78 unpack f f f; -#X obj 436 188 pack 0 0 0; -#X obj 440 254 pipe 0 0 1000; -#X obj 422 100 * 100; -#X msg 438 210 \$2 \$3 \$1; -#X obj 438 231 unpack f f f; -#X obj 462 144 + 48; -#X obj 495 154 * 0.25; -#X msg 538 277 0 2; -#X obj 540 258 del 98; -#X msg 503 276 \$1 2; -#X obj 540 236 t b; -#X connect 0 0 20 0; -#X connect 1 0 0 0; -#X connect 2 0 0 0; -#X connect 3 0 0 0; -#X connect 4 0 3 0; -#X connect 5 0 8 0; -#X connect 6 0 10 0; -#X connect 7 0 11 0; -#X connect 8 0 9 0; -#X connect 9 0 0 0; -#X connect 10 0 0 0; -#X connect 11 0 0 0; -#X connect 12 0 0 0; -#X connect 13 0 17 0; -#X connect 14 0 21 1; -#X connect 15 0 17 1; -#X connect 17 0 16 0; -#X connect 17 0 16 1; -#X connect 18 0 19 0; -#X connect 19 0 26 0; -#X connect 20 0 23 0; -#X connect 20 1 18 0; -#X connect 20 2 27 0; -#X connect 21 0 24 0; -#X connect 22 0 13 0; -#X connect 22 1 31 0; -#X connect 22 1 30 0; -#X connect 23 0 21 0; -#X connect 24 0 25 0; -#X connect 25 0 22 0; -#X connect 25 1 22 1; -#X connect 25 2 22 2; -#X connect 26 0 14 0; -#X connect 27 0 21 2; -#X connect 28 0 15 0; -#X connect 29 0 28 0; -#X connect 30 0 15 0; -#X connect 31 0 29 0; diff --git a/extensions/gui/ix/tile.wid b/extensions/gui/ix/tile.wid deleted file mode 100755 index 5bf3cecd..00000000 --- a/extensions/gui/ix/tile.wid +++ /dev/null @@ -1,87 +0,0 @@ -#console show -package require Tktable -namespace eval ::ix { - variable _ - proc tile {t tg bg fg ac sb sf e} { - variable _ - $t tag configure active -bg $ac - $t tag configure OFF -bg $bg -relief ridge - $t tag configure ON -bg $fg -relief sunken - $t tag configure sel -bg $sb -fg $sf -relief flat - if {$e eq "columns"} { - bind $t { - %W selection clear all - set sel [%W index @%x,%y row] - %W selection set $sel,0 $sel,[%W cget -cols] - } - } elseif {$e eq "rows"} { - bind $t { - %W selection clear all - set sel [%W index @%x,%y col] - %W selection set 0,$sel [%W cget -rows],$sel - } - } else { - bind $t { - %W selection clear all - %W selection set @%x,%y - } - } - set _($t:e) $e - bind $t {%W selection clear all} - bind $t <2> {%W configure -state [if {[%W cget -state] eq "normal"} {list disabled} {list normal}]} - bind $t <3> {::ix::tile_clk %W %x %y OFF} - bind $t <1> {::ix::tile_clk %W %x %y ON} - bind $t [bind $t <3>] - bind $t [bind $t <1>] - - tile_clr $t - } - proc tile_dump {t id} { - puts "$t $id" - for {set c 0} {$c < [$t cget -cols]} {incr c} { - for {set r 0} {$r < [$t cget -rows]} {incr r} { - if {[$t tag includes ON $r,$c] == 1} { - pd [concat $id.rp _cb $c $r 1\;] - } - } - } - } - proc tile_clk {t x y v} { - variable _ - if {[$t cget -state] eq "disabled"} { - switch $_($t:e) { - rows { - for {set row 0} {$row < [$t cget -rows]} {incr row} { - $t tag celltag OFF $row,[$t index @$x,$y col] - } - } - columns { - for {set col 0} {$col < [$t cget -cols]} {incr col} { - $t tag celltag OFF [$t index @$x,$y row],$col - } - } - } - $t tag celltag $v [$t index @$x,$y] - } - } - proc tile_clr {t} { - for {set i 0} {$i < [$t cget -rows]} {incr i} { - for {set j 0} {$j < [$t cget -cols]} {incr j} { - $t tag celltag OFF $i,$j - } - } - } - -} -#> tile table -#. -rows 8 -cols 16 -resizeborders none -fg blue -#. -borderwidth 2 -titlerows 0 -titlecols 0 -roworigin 0 -colorigin 0 -colwidth 4 -#. -width 16 -height 8 -variable tab -flashmode off -font {Tahoma 8} -#. #bg "#a4e75a" #fg "#fefdff" #cb yellow #ac yellow #sb "#aaff88" #sf green -#. #e none -#. @bang ::ix::tile_dump .- .| -#. @clear ::ix::tile_clr .- -#. @clr ::ix::tile_clr .- - -::ix::tile .- .| .#bg .#fg .#ac .#sb .#sf .#e -puts "tile .- .|" diff --git a/extensions/gui/ix/toxy/dd-demo.pd b/extensions/gui/ix/toxy/dd-demo.pd new file mode 100755 index 00000000..fb59154f --- /dev/null +++ b/extensions/gui/ix/toxy/dd-demo.pd @@ -0,0 +1,33 @@ +#N canvas 170 459 559 300 12; +#X obj 11 9 widget dd dt -bg black -width 38 -fg orange; +#X obj 9 99 dac~; +#X obj 10 77 *~ 0.3; +#X obj 52 77 *~ 0.3; +#X msg 11 33 open \$1 \, 1; +#X obj 11 55 readsf~ 2; +#X obj 290 33 widget dd df -bg purple -fg white -width 11; +#X obj 99 65 widget dd dl2 -bg green -fg purple -width 22; +#X symbolatom 93 96 30 0 0 0 - - -; +#X obj 114 110 print; +#X text 98 50 drop some files here..; +#X obj 3 184 widget dd d12; +#X msg 4 162 list la la la la; +#X floatatom 326 82 5 0 0 0 - - -; +#X msg 372 88 -width \$1; +#X obj 344 114 tow . dd df; +#X text 329 10 < drag amongst widgets; +#X msg 273 96 clear; +#X obj 169 137 widget q q -width 64 -height 12 -bg gray90 -fg blue +; +#X connect 0 0 4 0; +#X connect 2 0 1 0; +#X connect 3 0 1 1; +#X connect 4 0 5 0; +#X connect 5 0 2 0; +#X connect 5 1 3 0; +#X connect 7 0 8 0; +#X connect 7 0 9 0; +#X connect 7 0 18 0; +#X connect 12 0 11 0; +#X connect 13 0 14 0; +#X connect 14 0 15 0; diff --git a/extensions/gui/ix/toxy/dd.wid b/extensions/gui/ix/toxy/dd.wid new file mode 100755 index 00000000..b82252ac --- /dev/null +++ b/extensions/gui/ix/toxy/dd.wid @@ -0,0 +1,32 @@ +namespace eval ::ix { +proc dd {path target symbol args} { + set sym [join [lrange $args 0 end] " "] + $path delete 0 end + $path insert 0 $sym + ddp $target $symbol $sym +} +proc ddp {target symbol stuff} { + if {$symbol == 1} { + pd "$target.rp _cb symbol [pdtk_enquote $stuff];" + } else { + pd "$target.rp _cb $stuff;" + } +} +} +#> dd entry +#. -selectforeground black -selectbackground green +#. -bg blue -font .(helvetica 10.) -width 24 -borderwidth 0 +#. #symbol 1 +#. @bang ::ix::ddp .| .#symbol [.- get] +#. @list ::ix::dd .- .| 0 .#args +#. @symbol ::ix::dd .- .| 1 .#1 +#. @clear .- delete 0 end +package require tkdnd +puts "dd .- .|" +bind .- {focus .-} +dnd bindtarget .- text/uri-list {foreach i %D {::ix::dd .- .| .#symbol [regsub -- "^file://" $i ""]}} +dnd bindtarget .- text/plain {::ix::dd .- .| .#symbol %D} +dnd bindsource .- text/plain {return [.- get]} +dnd bindsource .- text/uri-list {return "\{[.- get]\}"} +bind .- {dnd drag %W} +bind .- {::ix::ddp .| .#symbol [.- get]} diff --git a/extensions/gui/ix/toxy/dm-demo.pd b/extensions/gui/ix/toxy/dm-demo.pd new file mode 100755 index 00000000..b128e211 --- /dev/null +++ b/extensions/gui/ix/toxy/dm-demo.pd @@ -0,0 +1,32 @@ +#N canvas 45 442 370 233 10; +#X msg 190 127 clear; +#X symbolatom 187 203 10 0 0 0 - - -; +#X obj 187 155 widget dm dm1 #items .( zero one two three four five +six seven eight nine ten eleven twelve thirteen i14 i15 i16 i17 i18 +i19 i20 i21 i22 i23 i24 i25 i26 i27 i28 i29 i30.) #arrows 0; +#X obj 140 17 widget dm dm1 #items .(0 1 2 3 4 5 6 7 8 9 10 11 12.) +-bg gray; +#X obj 187 185 l2s; +#X obj 56 119 l2s; +#X msg 56 76 zero one two three four five six seven eight nine ten +eleven twelve thirteen i14 i15 i16 i17 i18 i19 i20 i21 i22 i23 i24 +i25 i26 i27 i28 i29 i30; +#X msg 4 60 list ichi ni san chi; +#X msg 56 136 #items .( \$1.); +#X msg 92 25 5; +#X msg 89 8 12; +#X msg 259 138 #arrows \$1; +#X obj 258 122 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 +1; +#X connect 0 0 2 0; +#X connect 2 0 4 0; +#X connect 3 0 2 0; +#X connect 4 0 1 0; +#X connect 5 0 8 0; +#X connect 6 0 5 0; +#X connect 7 0 2 0; +#X connect 8 0 2 0; +#X connect 9 0 3 0; +#X connect 10 0 3 0; +#X connect 11 0 2 0; +#X connect 12 0 11 0; diff --git a/extensions/gui/ix/toxy/dm.wid b/extensions/gui/ix/toxy/dm.wid new file mode 100755 index 00000000..389e31bb --- /dev/null +++ b/extensions/gui/ix/toxy/dm.wid @@ -0,0 +1,84 @@ +#console show +namespace eval ::ix { + variable _ + proc spin_resize {w} { +# update + $w config -height [winfo height $w] -width [winfo width $w] + } + proc spin {c w t bg fg font items arrows} { + if {[winfo exists $w.m] != 1} { + variable _ + set _($t:p) 0 + array set arrow "up \u25b2 dn \u25bc"; array set anchor "up n dn s" + menubutton $w.m -menu $w.m.m -textvariable _($t:t) -relief raised \ + -bg $bg -fg $fg -font $font -padx 0 -pady 0 + menu $w.m.m -bd 0 -bg $bg -fg $fg; pack $w.m -side left -fill y + if {$arrows == 1} { + foreach i {up dn} { + button $w.$i -padx 0 -pady 0 -text $arrow($i) \ + -command "::ix::spinclick $w $t $i" \ + -bd 0 -bg $bg -fg $fg -font {Times 6} + pack $w.$i -anchor $anchor($i) + } + } + spin_resize $w + foreach item $items {spinitem $w $t $item} + $w.m.m activate 0; $w.m.m invoke 0 + } + } + proc spinitem {w t item} { + variable _ + set len [$w.m.m index end]; + if {$len ne "none"} {set n [expr $len + 1]} else {set n 0} + $w.m.m add radiobutton -selectcolor green -font {Tahoma 8} -label $item -variable _($t:t) -command "::ix::spinout $w $t $n" + set wider [string length $item]; set wide [$w.m cget -width] + if {$wide < $wider && $wider <= 31 } { + $w.m configure -width $wider + spin_resize $w + } + $w.m.m activate $n + } + proc spinout {w t i} { + set sym [$w.m.m entrycget $i -label] + pd [concat $t.rp _cb $sym \;] + $w.m.m activate $i + } + proc spinclick {w t d} { + variable _ + array set shift "up -1 dn 1" + set len [$w.m.m index end]; + set pos $_($t:p) + if {$pos != "none"} { + incr pos $shift($d) + if {$pos > $len} {set pos 0} + if {$pos < 0} {set pos $len} + $w.m.m activate $pos + $w.m.m invoke $pos + } + set _($t:p) $pos + } + proc spinclear {w} { + $w.m.m delete 0 end + $w.m configure -width 0 + } +} +#> dm frame +#. -bg green -padx 4 -pady 4 -height 40 -width 86 #arrows 1 +#. #bg black #fg "#8888ff" #items {} #font {Tahoma 10} +#. @list foreach x [list .#args] {::ix::spinitem .- .| $x} +#. @symbol ::ix::spinitem .- .| {.#1} +#. @float .-.m.m invoke .#1 .: set ::ix::_(.|:p) .#1 +#. @clear ::ix::spinclear .- +puts "dm .- .|" +::ix::spin .^ .- .| .#bg .#fg .#font .#items .#arrows +bind .- {focus .-} +bind .- {focus .^.c} +bind .- <> {::ix::spinclick .- .| dn} +bind .- <> {::ix::spinclick .- .| up} +event add <> +event add <> +foreach el {.- .-.m} { + bind $el {if {%D > 0} {::ix::spinclick .- .| up} else {::ix::spinclick .- .| dn}} + bind $el {::ix::spinclick .- .| up} + bind $el {::ix::spinclick .- .| dn} +} diff --git a/extensions/gui/ix/toxy/filter-demo.pd b/extensions/gui/ix/toxy/filter-demo.pd new file mode 100755 index 00000000..c98ec407 --- /dev/null +++ b/extensions/gui/ix/toxy/filter-demo.pd @@ -0,0 +1,72 @@ +#N canvas 218 245 450 232 10; +#X obj 51 67 widget filter f1 #div 8 #log 6.53061 #rate 44100 #n 5 +; +#X msg 11 42 redefine; +#X obj 185 259 biquad~; +#X obj 223 259 biquad~; +#X obj 261 259 biquad~; +#X obj 298 259 biquad~; +#X obj 336 259 biquad~; +#X obj 52 276 multiplex~ 0 99 23 44 88 22; +#X msg 35 18 #log \$1; +#X obj 23 7 hsl 50 10 5 10 0 0 empty empty empty -2 -6 0 8 -262144 +-1 -1 0 1; +#X msg 41 -10 10; +#X msg 20 -10 0; +#X floatatom 80 29 3 1 5 0 - - -; +#X obj 189 278 biquad~; +#X obj 225 278 biquad~; +#X obj 263 278 biquad~; +#X obj 300 278 biquad~; +#X obj 337 278 biquad~; +#X obj 52 293 multiplex~ 0 99 23 44 88 22; +#X obj 51 225 route n params; +#X msg 80 43 #n \$1; +#X obj 206 242 route 1 2 3 4 5; +#X obj 184 242 adc~; +#X obj 52 310 dac~; +#X connect 0 0 19 0; +#X connect 1 0 0 0; +#X connect 2 0 3 0; +#X connect 2 0 7 1; +#X connect 3 0 4 0; +#X connect 3 0 7 2; +#X connect 4 0 5 0; +#X connect 4 0 7 3; +#X connect 5 0 6 0; +#X connect 5 0 7 4; +#X connect 6 0 7 5; +#X connect 7 0 23 0; +#X connect 8 0 0 0; +#X connect 9 0 8 0; +#X connect 10 0 9 0; +#X connect 11 0 8 0; +#X connect 12 0 20 0; +#X connect 13 0 14 0; +#X connect 13 0 18 1; +#X connect 14 0 15 0; +#X connect 14 0 18 2; +#X connect 15 0 16 0; +#X connect 15 0 18 3; +#X connect 16 0 17 0; +#X connect 16 0 18 4; +#X connect 17 0 18 5; +#X connect 18 0 23 1; +#X connect 19 0 7 0; +#X connect 19 0 18 0; +#X connect 19 1 21 0; +#X connect 20 0 0 0; +#X connect 21 0 2 0; +#X connect 21 0 13 0; +#X connect 21 1 3 0; +#X connect 21 1 14 0; +#X connect 21 2 4 0; +#X connect 21 2 15 0; +#X connect 21 3 5 0; +#X connect 21 3 16 0; +#X connect 21 4 6 0; +#X connect 21 4 17 0; +#X connect 22 0 7 0; +#X connect 22 0 2 0; +#X connect 22 1 18 0; +#X connect 22 1 13 0; diff --git a/extensions/gui/ix/toxy/filter.wid b/extensions/gui/ix/toxy/filter.wid new file mode 100755 index 00000000..b05c938a --- /dev/null +++ b/extensions/gui/ix/toxy/filter.wid @@ -0,0 +1,286 @@ +namespace eval ::ix { + proc random_int {} { + return [expr "int(floor(rand()*16))"] + } + proc random_clr {} { + return [format "\#%1X%1X%1X%1X%1X%1X" [random_int] [random_int] [random_int] [random_int] [random_int] [random_int]] + } + variable _ + proc filter_update {path target n} { + set type [$path.filter itemcget type_$n -text] + set q [$path.filter itemcget q_$n -text] + set loc [$path.filter coords sqr_$n] + set x [expr 5 + [lindex $loc 0]] + set y [expr 5 + [lindex $loc 1]] + set inv [filter_invtr $path $target $x $y] + set freq [lindex $inv 0] + set mag [lindex $inv 1] + filter_bqp $path $target $n $type $freq $mag $q + } + proc filter_bqp {path target n type f0 dBgain Q} { + variable _ + set A [expr pow(10,($dBgain/40.0))] + set Fs $_($target:rate) + set pi [expr {atan(1) * 4}] + set w0 [expr 2 * $pi * $f0 / $Fs] + set alpha [expr sin($w0) / (2 * $Q)] + switch $type { + notch { + set b0 1 + set b1 [expr -2 * cos($w0)] + set b2 1 + set a0 [expr 1 + $alpha] + set a1 $b1 + set a2 [expr 1 - $alpha] + } + lowpass { + set b0 [expr (1 - cos($w0))/2] + set b1 [expr 1 - cos($w0)] + set b2 $b0 + set a0 [expr 1 + $alpha] + set a1 [expr -2 * cos($w0)] + set a2 [expr 1 - $alpha] + } + highpass { + set b0 [expr (1 + cos($w0))/2] + set b1 [expr -(1 + cos($w0))] + set b2 $b0 + set a0 [expr 1 + $alpha] + set a1 [expr -2 * cos($w0)] + set a2 [expr 1 - $alpha] + } + qbandpass { + set b0 [expr sin($w0)/2] + set b1 0 + set b2 [expr -$b0] + set a0 [expr 1 + $alpha] + set a1 [expr -2 * cos($w0)] + set a2 [expr 1 - $alpha] + } + bandpass { + set b0 $alpha + set b1 0 + set b2 [expr -$alpha] + set a0 [expr 1 + $alpha] + set a1 [expr -2 * cos($w0)] + set a2 [expr 1 - $alpha] + } + allpass { + set b0 [expr 1 - $alpha] + set b1 [expr -2 * cos($w0)] + set b2 [expr 1 + $alpha] + set a0 $b2 + set a1 $b1 + set a2 $b0 + } + peakingEQ { + set b0 [expr 1 + $alpha * $A] + set b1 [expr -2 * cos($w0)] + set b2 [expr 1 - $alpha * $A] + set a0 [expr 1 + $alpha / $A] + set a1 $b1 + set a2 [expr 1 - $alpha / $A] + } + lowShelf { + set b0 [expr $A*(($A+1)-($A-1)*cos($w0)+2*sqrt($A)*$alpha)] + set b1 [expr 2*$A*(($A-1)-($A+1)*cos($w0))] + set b2 [expr $A*(($A+1)-($A-1)*cos($w0)-2*sqrt($A)*$alpha)] + set a0 [expr ($A+1)+($A-1)*cos($w0)+2*sqrt($A)*$alpha] + set a1 [expr -2*(($A-1)+($A+1)*cos($w0))] + set a2 [expr ($A+1)+($A-1)*cos($w0) - 2*sqrt($A)*$alpha ] + } + highShelf { + set b0 [expr $A*(($A+1)+($A-1)*cos($w0)+2*sqrt($A)*$alpha)] + set b1 [expr -2*$A*(($A-1)+($A+1)*cos($w0))] + set b2 [expr $A*(($A+1)+($A-1)*cos($w0)-2*sqrt($A)*$alpha)] + set a0 [expr ($A+1)-($A-1)*cos($w0)+2*sqrt($A)*$alpha] + set a1 [expr 2*(($A-1)-($A+1)*cos($w0))] + set a2 [expr ($A+1)-($A-1)*cos($w0) - 2*sqrt($A)*$alpha ] + } + } + set f 0 + set fr {} + set _($target:fmag_$n) {1} + set h [winfo height $path.filter] + set h2 [expr $h / 2] + while {$f < [winfo width $path.filter]} { + incr f + set w [expr $pi * [filter_invtr_x $path $target $f] / $_($target:nyquist)] + set mag [expr sqrt(pow(($b0+$b1*cos($w)+$b2*cos(2*$w)),2)+pow(($b1*sin($w)+$b2*sin(2*$w)),2))/sqrt(pow(($a0+$a1*cos($w)+$a2*cos(2*$w)),2)+pow(($a1*sin($w)+$a2*sin(2*$w)),2))] + lappend fr $f [expr $h - $h2 * $mag] + lappend _($target:fmag_$n) $mag + } + $path.filter coords resp_$n $fr + pd [concat $target.rp _cb params $n [expr -1 * $a1 / $a0] [expr -1 * $a2 / $a0] [expr $b0 / $a0] [expr $b1 / $a0] [expr $b2 / $a0] \;] + filter_resp $path $target + } + proc filter_resp {path target} { + variable _ + if {$_($target:init) == 1} { + set f 0 + set fr {} + set h [winfo height $path.filter] + set h2 [expr $h / 2] + while {$f < [winfo width $path.filter]} { + incr f + set cx 0 + set ci 1 + while {$cx < $_($target:n)} { + incr cx + set ci [expr $ci * [lindex $_($target:fmag_$cx) $f]] + } + lappend fr $f [expr $h - $h2 * $ci] + } + $path.filter coords resp $fr + } + } + proc filter_motion {path target x y} { + set v [filter_invtr $path $target $x $y] + $path itemconfigure freq -text "[expr int([lindex $v 0])] hz" +# $path itemconfigure dB -text "[expr int([lindex $v 1])] dB" + } + proc filter_invtr {path target x y} { + return [list [filter_invtr_x $path $target $x] [filter_invtr_y $path $target $y]] + } + proc filter_invtr_x {path target x} { + variable _ + set gw [winfo width $path] + if {$_($target:log) > 0} { + return [expr $_($target:scale) * exp($_($target:log) * $x / $gw.0)] + } else { + return freq [expr $_($target:nyquist) * $x / $gw.0] + } + } + proc filter_invtr_y {path target y} { + set gh [winfo height $path] + return [expr (12 * ($y / $gh.0 - 0.5) * - 1.0)] + } + proc filter_new {path target w h bg div log rate n} { + variable _ + set _($target:init) 0 + set _($target:n) $n + set _($target:log) $log + set _($target:rate) $rate + set _($target:nyquist) [expr $rate / 2] + set _($target:scale) [expr $_($target:nyquist) / exp($_($target:log))] + if {[winfo exists $path.filter] != 1} { + canvas $path.filter -bg $bg -width $w -height $h + pack $path.filter -side left + bind $path.filter "::ix::filter_motion %W $target %x %y" +# bind $path.filter "::ix::filter_resp $path $target" + bind $path.filter { + %W itemconfigure freq -text "" + %W itemconfigure dB -text "" + } + bind $path.filter <1> "::ix::filter_click $path $target %x %y" + bind $path.filter [bind $path.filter <1>] + filter_gridlines $path $target $div + filter_filters $path $target $n + $path.filter create text 2 1 -tags freq -text "" -anchor nw -justify left -font {{Bitstream Vera Sans} 9} +# $path.filter create text 96 1 -tags dB -text "" -anchor ne -justify right -font {{Bitstream Vera Sans} 9} + $path.filter create line 0 0 0 0 -tags resp -fill grey44 -width 1.6 + set fn 0 + while {$fn < $n} { + incr fn + foreach a [list sqr_$fn type_$fn q_$fn] {$path.filter raise $a} + } + set bd [expr {[$path cget -bd] * 2}] + $path configure -bg $bg -width [expr [winfo width $path.filter] + $bd] -height [expr [winfo height $path.filter] + $bd] + } + pd "$target.rp _cb n $n;" + set _($target:init) 1 + } + proc filter_filters {path target n} { + set gh [winfo height $path.filter] + set gw [winfo width $path.filter] + set fn 0 + while {$fn < $n} { + incr fn + set px [expr $gw.0 * $fn.0 / $n.0] + set py [expr $gh.0 / 2.0] + set fill [random_clr] + $path.filter create rectangle 0 0 0 0 -tags sqr_$fn -fill $fill + $path.filter create line 0 0 0 0 -tags resp_$fn -fill $fill + $path.filter create text 0 0 -tags type_$fn -fill grey33 -font {{Bitstream Vera Sans} 8} -text "peakingEQ" -anchor e -justify right + $path.filter create text 0 0 -tags q_$fn -fill white -font {{Bitstream Vera Sans} 8} -text "1.0" -anchor w -justify left + set b1 "::ix::filter_move $path $target $fn %x %y" + set b2 "::ix::filter_menu $path $target $fn %X %Y" + set b3 "::ix::filter_move_q $path $target $fn %x %y" + set b4 "::ix::filter_locus $path $target $fn %x %y" + foreach a [list sqr_$fn type_$fn q_$fn] { + $path.filter bind $a <1> $b1 + $path.filter bind $a <2> $b2 + $path.filter bind $a <3> $b4 + $path.filter bind $a $b3 + $path.filter bind $a $b1 + } + filter_move $path $target $fn $px $py + } + } + proc filter_menu {path target n x y} { + if {[winfo exists $path.ft] == 1} { destroy $path.ft} + set m [menu $path.ft -tearoff no] + foreach ft {lowpass highpass qbandpass bandpass notch allpass peakingEQ lowShelf highShelf} { + $m add command -label $ft -command "::ix::filter_type $path $target $n $ft" + } + tk_popup $path.ft $x $y + } + proc filter_type {path target n type} { + $path.filter itemconfigure type_$n -text "$type" + filter_update $path $target $n + } + proc filter_click {path target x y} { + variable _ + filter_move $path $target $_($target:recent) $x $y + } + proc filter_move {path target n px py} { + variable _ + $path.filter coords sqr_$n [expr $px - 5] [expr $py - 5] [expr $px + 5] [expr $py + 5] + $path.filter coords type_$n [expr $px - 9] [expr $py] + $path.filter coords q_$n [expr $px + 9] [expr $py] + filter_motion $path.filter $target $px $py + set _($target:recent) $n + filter_update $path $target $n + } + proc filter_locus {path target n px py} { + variable _ + set _($target:lx) $px + } + proc filter_move_q {path target n px py} { + variable _ + set delta [expr ($px.0 - $_($target:lx).0) / 25] + set move [expr [$path.filter itemcget q_$n -text] + $delta] + if {$move > 0} { + $path.filter itemconfigure q_$n -text $move + } + filter_update $path $target $n + set _($target:lx) $px + } + proc filter_gridlines {path target lines} { + variable _ + puts "gridlines" + set color white + set w $path.filter + $w delete gridlines + set gh [winfo height $w] + set gw [winfo width $w] + for {set x 1} {$x <= $lines} {incr x} { + if {$lines < 16 && $lines > 0} { + set oh [expr $gh.0 * $x.0 / $lines.0] + set ow [expr $gw.0 * $x.0 / $lines.0] + $w create line $ow 0 $ow $gh -fill $color -tags gridlines + $w create line 0 $oh $gw $oh -fill $color -tags gridlines + set fontsize [expr int(80.0/$lines.0)] + $w create text $ow [expr $gh - $fontsize] -font [list {Bitstream Vera Sans} $fontsize] -tags gridlines -text [expr int([filter_invtr_x $path $target $ow])] + } + } + $w raise ${target}sqr + } +} +#> filter frame +#. -bd 3 #w 384 #h 144 #bg gray90 #div 6 #n 3 +#. #log 1 #rate 44100 +#. @div ::ix::filter_gridlines .- .| .#1 +#. @params ::ix::filter_lp .- .| .#args +puts "filter .- .|" +::ix::filter_new .- .| .#w .#h .#bg .#div .#log .#rate .#n diff --git a/extensions/gui/ix/toxy/grid-demo.pd b/extensions/gui/ix/toxy/grid-demo.pd new file mode 100755 index 00000000..24a2dc66 --- /dev/null +++ b/extensions/gui/ix/toxy/grid-demo.pd @@ -0,0 +1,69 @@ +#N canvas 361 266 709 441 12; +#X obj 88 210 pack 0 0; +#X floatatom 151 352 7 0 0 0 - - -; +#X floatatom 200 351 7 0 0 0 - - -; +#X obj 151 331 unpack; +#X obj 151 228 widget grid g5a #bg white #fg purple #div 5 #shape rectangle +#w 95 #h 95 #ln pink #x 0.889764 #size 56 -width 55 -height 55; +#X obj 270 184 widget grid g3; +#X obj 402 154 widget grid g4 #fg orange #bg black #w 264 #h 159 #div +0; +#X obj 269 53 widget grid gg #shape oval #bg orange #fg pink #ln white +#div 2 #size 67; +#X obj 136 53 widget grid bllldie #bg red #fg white #ln gray #shape +arc #size 44 #div 22; +#X floatatom 131 12 5 0 0 0 - - -; +#X msg 131 30 #div \$1; +#X msg 269 31 #size \$1; +#X floatatom 269 13 5 0 0 0 - - -; +#X floatatom 403 110 5 0 0 0 - - -; +#X msg 403 129 #w \$1; +#X floatatom 442 110 5 0 0 0 - - -; +#X msg 442 129 #h \$1; +#X obj 66 174 random 100; +#X obj 43 133 t b b; +#X obj 29 157 random 100; +#X obj 44 198 * 0.01; +#X obj 43 97 bng 33 250 50 0 empty empty empty 0 -6 0 8 -225271 -1 +-1; +#X obj 135 186 / 100; +#X text 426 25 #w #h #bg #fg #ln #div #shape #size; +#X obj 530 81 tot .; +#X msg 529 57 tot console show; +#X obj 199 370 * 200; +#X obj 339 315 widget grid g3902 #bg green #fg gray #ln yellow #div +3 #w 97 #h 97; +#X obj 456 376 widget grid #bg #fg gray #w 32 #h 32; +#X obj 149 395 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 +-262144 -1 -1 0.66 256; +#X obj 35 71 metro 333; +#X obj 40 46 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 +; +#X connect 0 0 4 0; +#X connect 2 0 26 0; +#X connect 3 0 1 0; +#X connect 3 0 29 0; +#X connect 3 1 2 0; +#X connect 4 0 3 0; +#X connect 5 0 8 0; +#X connect 6 0 5 0; +#X connect 7 0 5 0; +#X connect 9 0 10 0; +#X connect 10 0 8 0; +#X connect 11 0 7 0; +#X connect 12 0 11 0; +#X connect 13 0 14 0; +#X connect 14 0 6 0; +#X connect 15 0 16 0; +#X connect 16 0 6 0; +#X connect 17 0 22 0; +#X connect 18 0 19 0; +#X connect 18 1 17 0; +#X connect 19 0 20 0; +#X connect 20 0 0 0; +#X connect 21 0 18 0; +#X connect 22 0 0 1; +#X connect 25 0 24 0; +#X connect 30 0 21 0; +#X connect 31 0 30 0; +#X coords 0 0 1 1 200 140 1; diff --git a/extensions/gui/ix/toxy/grid.wid b/extensions/gui/ix/toxy/grid.wid new file mode 100755 index 00000000..1d177ad8 --- /dev/null +++ b/extensions/gui/ix/toxy/grid.wid @@ -0,0 +1,46 @@ +namespace eval ::ix { + proc grid_click {w target r hy hx hh ww size} { + switch $r { + 0 { set y [expr $hy / $hh.0] + set x [expr $hx / $ww.0]} + 1 { set x $hx + set y $hy + set hx [expr $ww * $hx] + set hy [expr $hh * $hy]}} + set rs [expr $size / 2] + $w coords ${target}sqr [expr $hx - $rs] [expr $hy - $rs] [expr $hx + $rs] [expr $hy + $rs] + pd "$target.rp _cb $x $y;" + } + proc grid_new {path target w h bg fg ln div shape size} { + if {[winfo exists $path.grid] != 1} { + canvas $path.grid -bg $bg + $path configure -width $w -height $h + place $path.grid -anchor nw -relwidth 1 -relheight 1 + $path.grid create $shape 0 0 0 0 -fill $fg -tags ${target}sqr + grid_click $path.grid $target 1 0.5 0.5 $h $w $size + grid_lines $path.grid $target $div $w $h $ln + bind $path.grid <1> "::ix::grid_click %W $target 0 %y %x $h $w $size" + bind $path.grid "::ix::grid_click %W $target 0 %y %x $h $w $size" + } + } + proc grid_lines {w target lines ww hw color} { + $w delete gridlines + for {set x 1} {$x <= $lines} {incr x} { + if {$lines < 64} { + set oh [expr $hw.0 * $x.0 / $lines.0] + set ow [expr $ww.0 * $x.0 / $lines.0] + $w create line $ow 0 $ow $hw -fill $color -tags gridlines + $w create line 0 $oh $ww $oh -fill $color -tags gridlines + } + } + $w raise ${target}sqr + } +} +#> grid frame +#. -bd 3 +#. #w 128 #h 128 #x 0.5 #y 0.5 +#. #fg red #bg blue #ln yellow +#. #shape rectangle #size 12 #div 5 +#. @list ::ix::grid_click .-.grid .| 1 .#2 .#1 .#h .#w .#size + +::ix::grid_new .- .| .#w .#h .#bg .#fg .#ln .#div .#shape .#size diff --git a/extensions/gui/ix/toxy/img-demo.pd b/extensions/gui/ix/toxy/img-demo.pd new file mode 100755 index 00000000..195d86a8 --- /dev/null +++ b/extensions/gui/ix/toxy/img-demo.pd @@ -0,0 +1,60 @@ +#N canvas 0 0 818 675 12; +#X obj 134 121 widget img i1; +#X obj 328 135 widget img img__guns #src /var/www/_/_i/p/_guns.gif +; +#X obj 328 167 widget img img__lunch #src /var/www/_/_i/p/_lunch.gif +; +#X obj 308 205 widget img img__roast #src /var/www/_/_i/p/_roast.gif +; +#X obj 328 231 widget img img__door #src /var/www/_/_i/p/_door.gif +; +#X obj 328 263 widget img img__fruit #src /var/www/_/_i/p/_fruit.gif +; +#X obj 328 295 widget img img__crop #src /var/www/_/_i/p/_crop.gif +; +#X obj 328 327 widget img img__twogirls #src /var/www/_/_i/p/_twogirls.gif +#mouseover 1; +#X obj 328 359 widget img img__345 #src /var/www/_/_i/p/_345.gif; +#X obj 328 391 widget img img__machinery #src /var/www/_/_i/p/_machinery.gif +; +#X obj 175 252 route _roast _guns; +#X obj 175 280 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 224 275 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 170 222 a2l; +#X obj 172 174 print wtf; +#X obj 189 131 a2l; +#X obj 381 -297 widget img img_guns #src /var/www/_/_i/p/guns.jpg; +#X obj 96 132 widget img img__pissers #src /var/www/_/_i/p/_pissers.gif +; +#X obj 96 164 widget img img__w3 #src /var/www/_/_i/p/_w3.gif; +#X obj 96 196 widget img img__w1 #src /var/www/_/_i/p/_w1.gif; +#X obj 96 228 widget img img__db #src /var/www/_/_i/p/_db.gif; +#X obj 96 260 widget img img__w4 #src /var/www/_/_i/p/_w4.gif; +#X obj 96 292 widget img img__scream #src /var/www/_/_i/p/_scream.gif +; +#X obj 96 324 widget img img__chair #src /var/www/_/_i/p/_chair.gif +; +#X obj 96 356 widget img img__dog #src /var/www/_/_i/p/_dog.gif; +#X obj 96 388 widget img img__w2 #src /var/www/_/_i/p/_w2.gif; +#X obj 96 420 widget img img__h #src /var/www/_/_i/p/_h.gif; +#X obj 96 452 widget img img__shitters #src /var/www/_/_i/p/_shitters.gif +; +#X obj 96 484 widget img img__violation #src /var/www/_/_i/p/_violation.gif +; +#X obj 96 516 widget img img__melt #src /var/www/_/_i/p/_melt.gif; +#X msg 206 326 #mouseover \$1; +#X obj 209 303 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 +1; +#X connect 1 0 13 0; +#X connect 3 0 13 0; +#X connect 3 0 15 0; +#X connect 7 0 14 0; +#X connect 10 0 11 0; +#X connect 10 1 12 0; +#X connect 13 0 10 0; +#X connect 15 0 14 0; +#X connect 16 0 14 0; +#X connect 30 0 7 0; +#X connect 31 0 30 0; diff --git a/extensions/gui/ix/toxy/img.wid b/extensions/gui/ix/toxy/img.wid new file mode 100755 index 00000000..34c82dfe --- /dev/null +++ b/extensions/gui/ix/toxy/img.wid @@ -0,0 +1,41 @@ +#console show +package require Img +package require tkdnd +namespace eval ::ix { + variable _ + proc drop_pics {name files x y} { + set c 0 + for {set n 0} {$n < [llength $files]} {incr n} { + if {[regexp {.*/(.+)\.[a-zA-Z0-9]+$} [lindex $files $n] file obj] == 1} { + pd [concat $name obj $x [expr $y + ($c * 32)] widget img [pdtk_enquote [string tolower "img_${obj}"]] #src [pdtk_enquote [regsub -- "^file:" [lindex $files $n] ""]] \;] + incr c + } + } + } + proc pic {c p t src mouseover} { + variable _ + image create photo $t + $p configure -image $t + if {$src ne "none" && [file exists $src]} { + $t configure -file $src + set cb "pd \"$t _cb [lindex [regexp -inline {.*/(.+)\.[a-zA-Z0-9]+$} $src] 1] \;\"" + bind $p "$t configure -gamma 2" + if {$mouseover != 0} { + bind $p +$cb + } + bind $p "$t configure -gamma 1" + bind $p "+$t configure -gamma 0.5; $cb" + bind $p "+$t configure -gamma 1" + } else { + $t configure -format gif -data {R0lGODdhDgAQAKIAAICAgP///8DAwAAAAP8AAP///////////ywAAAAADgAQAAADWQi63Bi6HIIDGLocggMYuhyCAxi6HIIDEUFIEUSBIQMRGEFEhKEyoBoQUUQEykBEYBARBUbIQGAEUQQSRcggYOhyCA5g6HIIDmDocggOYOhyCA6g6LLi6HInADs=} + dnd bindtarget $c.c text/uri-list "::ix::drop_pics $c %D %x %y" + } + set _($t:loc) 0 + } +} +#> img label +#. -borderwidth 0 +#. #src none #mouseover 1 +#. @bang puts "bang" +::ix::pic .^ .- .| {.#src} .#mouseover +puts "pic .- .|" diff --git a/extensions/gui/ix/toxy/kbd-demo.pd b/extensions/gui/ix/toxy/kbd-demo.pd new file mode 100755 index 00000000..a9baf395 --- /dev/null +++ b/extensions/gui/ix/toxy/kbd-demo.pd @@ -0,0 +1,61 @@ +#N canvas 360 12 574 324 12; +#X obj 56 57 widget kbd k1 #octaves 7 -width 444.094 -height 63.4421 +; +#X obj 56 134 unpack; +#X floatatom 56 155 5 0 0 0 - - -; +#X floatatom 90 155 5 0 0 0 - - -; +#X floatatom 98 135 5 0 0 0 - - -; +#X obj 56 29 pack 0 1; +#X floatatom 56 13 5 0 0 0 - - -; +#X obj 99 14 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 +; +#X floatatom 21 32 5 0 0 0 - - -; +#X obj 56 217 osc~ 440; +#X obj 56 196 mtof; +#X obj 110 217 line~; +#X msg 110 195 \$1 100; +#X obj 80 265 dac~ 1 2; +#X obj 81 242 *~; +#X obj 92 173 * 0.4; +#X floatatom 149 21 5 0 12 0 - - -; +#X msg 148 38 #octaves \$1; +#X obj 143 134 widget kbd k2 #octaves 3 #bg hotpink #fg orange -height +32; +#X obj 56 174 + 36; +#X obj 345 134 widget kbd k2 #octaves 3 #bg blue #fg cyan -height 32 +; +#X obj 207 232 * 127; +#X obj 171 230 + 36; +#X obj 171 265 noteout; +#X obj 170 203 unpack 0 0 0; +#X obj 160 172 Append 1; +#X obj 232 173 Append 2; +#X connect 0 0 1 0; +#X connect 0 0 4 0; +#X connect 1 0 2 0; +#X connect 1 1 3 0; +#X connect 2 0 19 0; +#X connect 3 0 15 0; +#X connect 5 0 0 0; +#X connect 6 0 5 0; +#X connect 7 0 5 1; +#X connect 8 0 0 0; +#X connect 9 0 14 0; +#X connect 10 0 9 0; +#X connect 11 0 14 1; +#X connect 12 0 11 0; +#X connect 14 0 13 0; +#X connect 14 0 13 1; +#X connect 15 0 12 0; +#X connect 16 0 17 0; +#X connect 17 0 0 0; +#X connect 18 0 25 0; +#X connect 19 0 10 0; +#X connect 20 0 26 0; +#X connect 21 0 23 1; +#X connect 22 0 23 0; +#X connect 24 0 22 0; +#X connect 24 1 21 0; +#X connect 24 2 23 2; +#X connect 25 0 24 0; +#X connect 26 0 24 0; diff --git a/extensions/gui/ix/toxy/kbd.wid b/extensions/gui/ix/toxy/kbd.wid new file mode 100755 index 00000000..06c1d7e7 --- /dev/null +++ b/extensions/gui/ix/toxy/kbd.wid @@ -0,0 +1,48 @@ +namespace eval ::ix { + proc kbd_list {p t args} { + variable _ + set w $p.f[expr [lindex $args 0] / 12].[lindex $args 0] + if {[llength $args] == 1} {set v 1;if {$_($t:lp) != -1 && $_($t:lp) ne $w} {kbd_action $_($t:lp) $t 0}} {set v [lindex $args 1]} + kbd_action $w $t $v + set _($t:lp) $w} + + proc kbd_play {t m b x y} { + variable _ + foreach a {{rs {0 sunken 1 raised}} {v {0 0 1 {($y - [winfo rooty $w]) / ([winfo height $w] + 0.0)}}}} {array set [lindex $a 0] [lindex $a 1]} + set w [winfo containing $x $y] + if {$m != 1 && $_($t:lp) != -1 && $_($t:lp) ne $w} {kbd_action $_($t:lp) $t 0} + if {[$w cget -relief] eq $rs($b)} {kbd_action $w $t [eval expr $v($b)]} + set _($t:lp) $w} + + proc kbd_action {w t v} { + if {$v == 0} {set relief raised} {set relief sunken} + $w config -relief $relief + pd [concat $t.rp _cb [winfo name $w] $v \;]} + + proc kbd_off {p t octaves} { + for {set o 0} {$o < $octaves} {incr o} { + for {set on 0} {$on < 12} {incr on} { + set w $p.f$o.[expr $o * 12 + $on] + if {[$w cget -relief] eq "sunken"} {kbd_action $w $t 0}}}} + + proc kbd {path t octaves b f} { + $path config -width [expr $octaves * 66] + if {![winfo exists $path.f0]} { + variable _ + set _($t:lp) -1 + set bw {0 1 0 1 0 0 1 0 1 0 1 0} ; set npl {0 1 1 2 2 3 4 4 5 5 6 6} + foreach a {{bg "0 $b 1 $f"} {fg "1 $b 0 $f"} {an {0 ";lower $wk" 1 "-anchor n"}} {rw {0 {[expr 1 / 7.]} 1 {[expr 1 / 10.]}}} {rh {0 {[expr 1.]} 1 {[expr 6 / 10.]}}}} {array set [lindex $a 0] [lindex $a 1]} + for {set o 0} {$o < $octaves} {incr o} { + set w $path.f$o ; frame $w -bd 0 -height 66 -width 66 + for {set on 0} {$on < 12} {incr on} { + set wk $w.[expr $o * 12 + $on] ; set n [lindex $bw $on] + eval "label $wk -bg $bg($n) -fg $fg($n) -bd 1 -relief raised;place $wk -relx [expr [lindex $npl $on] / 7.] -y 0 -relwidth $rw($n) -relheight $rh($n) $an($n)" + bind $wk <1> "::ix::kbd_play $t 0 1 %X %Y"; bind $wk [bind $wk <1>];bind $wk "::ix::kbd_play $t 0 0 %X %Y"; bind $wk "::ix::kbd_play $t 1 0 %X %Y"; bind $wk <3> "::ix::kbd_play $t 1 1 %X %Y"; bind $wk [bind $wk <3>]; bind $wk <2> "::ix::kbd_off $path $t $octaves"} + place $w -y 0 -relheight 1.0 -relx [expr $o / $octaves.0] -relwidth [expr 1 / $octaves.0]}}}} + +#> kbd frame +#. -height 100 -width 60 +#. #octaves 6 #bg black #fg white +#. @list ::ix::kbd_list .- .| .#args +#. @float ::ix::kbd_list .- .| .#args +::ix::kbd .- .| .#octaves .#bg .#fg diff --git a/extensions/gui/ix/toxy/knob-demo.pd b/extensions/gui/ix/toxy/knob-demo.pd new file mode 100755 index 00000000..3d1035af --- /dev/null +++ b/extensions/gui/ix/toxy/knob-demo.pd @@ -0,0 +1,43 @@ +#N canvas 403 277 313 218 12; +#X floatatom 157 24 5 16 1024 0 - - -; +#X msg 157 42 #w \$1 \, #h \$1; +#X floatatom 194 7 5 3 22 0 - - -; +#X obj 13 148 nbx 8 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 +-262144 -1 -1 -0.0116279 256; +#X obj 13 39 widget knob n1 #w 88 #h 88 #th 3 #cc purple #cb black +#ca red #trans 81 #bg green #range 1 #cn navy #ny 79 #nx 43 #max 0 +#min 0 #an white -bd 1; +#X msg 135 109 #range \$1; +#X msg 157 144 1; +#X msg 184 144 10000; +#X floatatom 203 94 5 0 0 0 - - -; +#X msg 203 109 #ny \$1; +#X floatatom 203 61 5 0 0 0 - - -; +#X msg 203 76 #nx \$1; +#X msg 157 170 #max 1; +#X msg 202 170 #max 32 \, #min 16; +#X msg 157 190 #min 0 \, #max 0; +#X msg 103 107 1; +#X msg 103 85 100; +#X msg 104 63 1000; +#X msg 104 41 0.1; +#X msg 194 23 #th \$1; +#X connect 0 0 1 0; +#X connect 1 0 4 0; +#X connect 2 0 19 0; +#X connect 4 0 3 0; +#X connect 5 0 4 0; +#X connect 6 0 4 0; +#X connect 7 0 4 0; +#X connect 8 0 9 0; +#X connect 9 0 4 0; +#X connect 10 0 11 0; +#X connect 11 0 4 0; +#X connect 12 0 4 0; +#X connect 13 0 4 0; +#X connect 14 0 4 0; +#X connect 15 0 5 0; +#X connect 16 0 5 0; +#X connect 17 0 5 0; +#X connect 18 0 5 0; +#X connect 19 0 4 0; diff --git a/extensions/gui/ix/toxy/knob.wid b/extensions/gui/ix/toxy/knob.wid new file mode 100755 index 00000000..450f1baf --- /dev/null +++ b/extensions/gui/ix/toxy/knob.wid @@ -0,0 +1,102 @@ +namespace eval ::ix { + variable _ + proc nobfloat {path t num} { + variable _ + $path itemconfigure $t:num -text $num + pd [concat $t.rp _cb $num \;] + set _($t:num) $num + } + proc nob_mover {w t f x y} { + variable _ + if {$::ix::_($t:clickd) > 0} { + set move [expr (($x - $::ix::_($t:lx)) + (-1 * ($y - $::ix::_($t:ly)))) / ([winfo width $w].0 + [winfo height $w].0) * $f] + nob_move $w $t $move + } + set ::ix::_($t:clickd) 1 + set ::ix::_($t:lx) $x + set ::ix::_($t:ly) $y + } + proc nob_move {w t move} { + variable _ + set on [$w itemcget $t:num -text] + set no [expr $on + $_($t:range) * $move * 2] + if {$_($t:min) != $_($t:max)} { + if {$no > $_($t:max)} {set no $_($t:max);set move 0} + if {$no < $_($t:min)} {set no $_($t:min);set move 0} + } + nobfloat $w $t $no + foreach e {1 10 100} { + set a [expr [$w itemcget $t:nob$e -start] + int($move * $e * 90)] + $w itemconfigure $t:nob$e -start $a + set _($t:a$e) $a + } + } + + proc nob {path t w h range bg c1 c2 c3 cn th nx ny max min} { + variable _ + set _($t:lx) 32 + set _($t:clickd) -1 + set _($t:max) $max + set _($t:min) $min + if {$_($t:min) != $_($t:max)} { + set _($t:range) [expr abs($min - $max)] + } else { + set _($t:range) $range + } + if {[winfo exists $path.nob] != 1} { + canvas $path.nob -width $w -height $h -borderwidth 1 -bg $bg + $path configure -width $w -height $h + place $path.nob -anchor nw -relwidth 1 -relheight 1 + $path.nob delete * + set i 0 + set colors [list $c1 $c2 $c3] + set ratios {1 10 0.1} + set edge 10 + $path.nob create rectangle {1 1 8 4} -fill "#555555" + $path.nob create rectangle "1 $h 8 [expr $h - 5]" -fill "#555555" + foreach e {1 10 100} { + $path.nob create arc \ + "[expr $w / $edge / ($i + 1) + ($edge / 2)] [expr $h / $edge / ($i + 1) + ($edge / 2)] [expr $w - $w / $edge / ($i + 1) - ($edge / 2)] [expr $h - $h / $edge / ($i + 1) - ($edge / 2)]" \ + -extent [expr int(300 / $e)] -start 90 \ + -outline "[lindex $colors $i]" \ + -style arc \ + -width [expr int($h / $th)] \ + -tags $t:nob$e + bind $path.nob \ + "::ix::nob_mover $path.nob $t [lindex $ratios $i] %x %y" + incr i + bind $path.nob "set ::ix::_($t:clickd) -1" + } + bind $path {::ix::nob_move %W.nob [winfo name %W] [expr %D / 2400.]} + bind $path {::ix::nob_move %W.nob [winfo name %W] [expr %D / 24000.]} + bind $path {::ix::nob_move %W.nob [winfo name %W] [expr %D / 240.]} + bind $path.nob "::ix::nob_mover $path.nob $t 10 %x %y" + bind $path.nob "::ix::nob_mover $path.nob $t 0.1 %x %y" + if {$nx == 0} { + set nx [expr $w / 2] + set ny [expr $h - 20] + } + $path.nob create text $nx $ny -text "0.0" -tags $t:num -fill "$cn" -font {{Bitstream Vera Sans} 8} + } + if {[info exists _($t:num)]} { + $path.nob itemconfigure $t:num -text $_($t:num) + foreach e {1 10 100} { + $path.nob itemconfigure $t:nob$e -start $_($t:a$e) + } + } else { + foreach e {1 10 100} {set _($t:a$e) 90} + set _($t:num) 0.0} + + } +} +#> knob frame +#. -bd 1 -bg "#cccccc" +#. -highlightbackground red +#. #max 0 #min 0 +#. #w 128 #h 128 #th 5 #range 100 #nx 0 #ny 0 +#. #bg purple #ca blue #cb yellow #cc green #cn orange +#. @float ::ix::nobfloat .-.nob .| .#1 +#. @cmd eval ".-.nob .#args" +bind .- {focus .-} +bind .- {focus .^.c} +::ix::nob .- .| .#w .#h .#range .#bg .#ca .#cb .#cc .#cn .#th .#nx .#ny .#max .#min diff --git a/extensions/gui/ix/toxy/lg-demo.pd b/extensions/gui/ix/toxy/lg-demo.pd new file mode 100755 index 00000000..a7c95bf4 --- /dev/null +++ b/extensions/gui/ix/toxy/lg-demo.pd @@ -0,0 +1,68 @@ +#N canvas 138 75 1019 727 12; +#X obj 5 87 widget lg lga -width 940 -height 440 -bg green; +#X obj 92 -48 bng 28 250 50 0 empty empty view 0 -6 0 8 -62784 -1 -1 +; +#X msg 58 34 clear; +#X obj 142 34 getall lga; +#X obj 366 62 srec lga; +#X msg -2 52 cmd axis configure y -logscale \$1; +#X obj -3 38 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 +; +#X msg 421 -36 190 lolp 0 \, 140 lolp 4; +#X msg 398 -18 1 kgoga 2 3 6 \, 190 kgoga 0 4 3; +#X obj 70 216; +#X msg 75 211; +#X msg 335 -28 delete lolp; +#X msg 322 -46 delete kgoga; +#X msg 25 34 dump; +#X msg 395 1 1 juba 2 3 4 5 \, 200 juba 5 6 7 8; +#X obj 9 607 pool lga; +#X obj 74 546 + 1; +#X obj 47 546 i; +#X obj 9 563 prepend; +#X obj 5 528 t a b; +#X obj 8 585 prepend set; +#X msg 106 11 reset; +#X obj 83 -12 t b b; +#X msg 118 -9 0; +#X obj 123 -49 bng 32 250 50 0 empty empty write-+ 0 -6 0 8 -24198 +-1 -1; +#X obj 144 6 t b b; +#X obj 426 27 tow . lg lga; +#X msg 217 20 redefine; +#X msg 227 61 -width \$1; +#X msg 286 61 -height \$1; +#X floatatom 227 43 5 0 0 0 - - -; +#X floatatom 286 43 5 0 0 0 - - -; +#X connect 0 0 19 0; +#X connect 1 0 25 0; +#X connect 2 0 0 0; +#X connect 3 0 0 0; +#X connect 5 0 0 0; +#X connect 6 0 5 0; +#X connect 7 0 26 0; +#X connect 8 0 26 0; +#X connect 11 0 26 0; +#X connect 12 0 26 0; +#X connect 13 0 0 0; +#X connect 14 0 26 0; +#X connect 16 0 17 1; +#X connect 17 0 16 0; +#X connect 17 0 18 1; +#X connect 18 0 20 0; +#X connect 19 0 18 0; +#X connect 19 1 17 0; +#X connect 20 0 15 0; +#X connect 21 0 15 0; +#X connect 22 0 13 0; +#X connect 22 1 21 0; +#X connect 22 1 23 0; +#X connect 23 0 17 1; +#X connect 24 0 22 0; +#X connect 25 0 3 0; +#X connect 25 1 2 0; +#X connect 27 0 0 0; +#X connect 28 0 0 0; +#X connect 29 0 0 0; +#X connect 30 0 28 0; +#X connect 31 0 29 0; diff --git a/extensions/gui/ix/toxy/lg.wid b/extensions/gui/ix/toxy/lg.wid new file mode 100755 index 00000000..c43b8012 --- /dev/null +++ b/extensions/gui/ix/toxy/lg.wid @@ -0,0 +1,237 @@ +package require BLT +namespace import blt:: +namespace eval ::ix { + variable _ + proc random_int {} { + return [expr "int(floor(rand()*16))"] + } + proc random_clr {} { + return [format "\#%1X%1X%1X%1X%1X%1X" [random_int] [random_int] [random_int] [random_int] [random_int] [random_int]] + } + proc lg_add {path tg args} { + variable _ + set e [lindex $args 1] + set l [llength $args] + for {set n 2} {$n < $l} {incr n} { + if {$l > 3} {set nm $e:[expr $n - 1]} else {set nm $e} + set _($path:$nm:e) [expr $n - 1] + set _($path:$nm:p) $e + set _($path:$e:n) [expr $l - 2] + lg_list $path $tg $nm [lindex $args 0] [lindex $args $n] + } + } + proc lg_dumper {path tg args} { + variable _ + foreach e [$path element names] { + if {$_($path:$e:e) == 1} { + lg_dump $path $tg $e + } + } + } + proc lg_dump {path tg e} { + variable _ + set p $_($path:$e:p) + set el $_($path:$e:e) + set n $_($path:$p:n) + for {set i 0} {$i < [$tg:x$e length]} {incr i} { + set out {} + lappend out [$tg:x$e index $i] + lappend out $p + if {$n > 1} { + for {set x 1} {$x <= $n} {incr x} { + lappend out [$tg:y$p:$x index $i] + } + } else { + lappend out [$tg:y$e index $i] + } + set out [join $out " "] +# puts $out + pd "$tg.rp _cb $out;" + } + } + proc lg_list {path tg e i1 i2} { + if {[$path element exists $e] != 1} {lg_nv $path $tg $e} + $tg:y$e append $i2 + $tg:x$e append $i1 + } + proc lg_zoom {path tg d x y} { + puts "$path $tg $d" + if {$d eq "in"} {set dn 4} {set dn 1} + set lx [$path axis limits x] + set dx [expr ([lindex $lx 1] - [lindex $lx 0]) / $dn] + set cx [$path axis invtransform x $x] + set cy [$path axis invtransform y $y] + set ly [$path axis limits y] + set dy [expr ([lindex $ly 1] - [lindex $ly 0]) / $dn] + $path axis configure x -min [expr $cx - $dx] -max [expr $cx + $dx] + $path axis configure y -min [expr $cy - $dy] -max [expr $cy + $dy] + } + proc lg_dr {path tg e x y} { + variable _ + if {[$path element closest $x $y cl -halo 666 -interpolate 1 -along x $e] == 1} { + set new [$path axis invtransform y $y] + set n $tg:y$cl(name) + set io $_($path:clickd) + set ic $cl(index) + $n index $ic $new + if {$io != -1 && [expr abs($io - $ic)] > 1} {lg_smooth $io $ic $n} + set _($path:clickd) $ic + } + } + proc lg_smooth {io ic n} { +# puts "smoothing $n from $io to $ic" + set vo [$n index $io] + set vc [$n index $ic] + if {$ic > $io} {set is $io; set vs $vo} else {set is $ic; set vs $vc} + set ne [expr [$n length] - 1] + if {$ic != $ne && $io != $ne} { + for {set i 1} {$i < [expr abs($io - $ic)]} {incr i} { + set nv [expr $vs + (($vc - $vo) * $i / ($ic - $io))] + set ni [expr $is + $i] + $n index $ni $nv + } + } + } + proc lg_sl {path tg e x y} { + variable _ + set t [$path invtransform $x $y] + if {$_($path:clickd) != -1} { + set dx [expr [lindex $t 0] - [lindex $_($path:clcord) 0]] + set dy [expr [lindex $t 1] - [lindex $_($path:clcord) 1]] + + set p $_($path:$e:p) + set el $_($path:$e:e) + set n $_($path:$p:n) + + if {$n > 1} { + for {set i 1} {$i <= $n} {incr i} { + set tx $tg:x$p:$i + set ty $tg:y$p:$i + $tx expr "$tx + $dx" + if {$el == $i} {$ty expr "$ty + $dy"} + } + } else { + $tg:x$e expr "$tg:x$e + $dx" + $tg:y$e expr "$tg:y$e + $dy" + } + } + set _($path:clcord) $t + set _($path:clickd) 1 + } + proc lg_draw {path tg e x y} { + variable _ + if {[$path element closest $x $y cl -halo 666 -interpolate 1 -along x $e] == 1} { + set t [$path invtransform $x $y] + set p $_($path:$e:p) + set el $_($path:$e:e) + set n $_($path:$p:n) + set io $_($path:clickd) + set ic $cl(index) + if {$n > 1} { + for {set i 1} {$i <= $n} {incr i} { + set tx $tg:x$p:$i + set ty $tg:y$p:$i + if {$el == $i} {set ny [lindex $t 1]} else { + if {[$ty length] == $ic} {set tc [expr $ic - 1]} else {set tc $ic} + set ny [$ty index $tc] + } + set nx [lindex $t 0] + $ty append $ny + $tx append $nx + $tx sort $ty + if {$i == 1} { + if {$ic < $io} {incr io} + incr ic + } + if {$io != -1 && [expr abs($io - $ic)] > 1} {lg_smooth $io $ic $ty} + } + } else { + $tg:y$e append [lindex $t 1] + $tg:x$e append [lindex $t 0] + $tg:x$e sort $tg:y$e + if {$ic < $io} {incr io} + incr ic + if {$io != -1 && [expr abs($io - $ic)] > 1} {lg_smooth $io $ic $tg:y$e} + } + set _($path:clickd) $ic + } + } + + proc lg_trim {path tg e x y} { + variable _ + if {[$path element closest $x $y cl -halo 666 -interpolate 1 -along x $e] == 1} { +# foreach name [array names cl] {puts "$name $cl($name)"} + if {[expr abs([$path axis transform x [$tg:x$e index $cl(index)]] - $x.0)] < 32} { + set p $_($path:$cl(name):p) + set n $_($path:$p:n) + if {$n > 1} { + for {set i 1} {$i <= $n} {incr i} { + $tg:y$p:$i delete $cl(index) + $tg:x$p:$i delete $cl(index) + } + } else { + $tg:y$cl(name) delete $cl(index) + $tg:x$cl(name) delete $cl(index) + } + } + } + } + proc lg_cl {path tg} { + foreach e [$path element names] {lg_dv $path $tg $e} +# pd "$tg.rp _cb symbol clear;" + } + proc lg_de {path tg e} { + variable _ + set n $_($path:$e:n) + if {$n > 1} { + for {set i 1} {$i <= $n} {incr i} { + lg_dv $path $tg $e:$i + } + } else { + lg_dv $path $tg $e + } + } + proc lg_dv {path tg e} { + blt::vector destroy $tg:x$e + blt::vector destroy $tg:y$e + $path element delete $e +# pd "$tg.rp _cb delete $e;" + } + proc lg_nv {path tg e} { + variable _ + blt::vector create $tg:x$e -variable "" + blt::vector create $tg:y$e -variable "" + set _($path:clickd) -1 + $path element create $e -x $tg:x$e -y $tg:y$e -symbol "circle" -pixels 2 -linewidth 2 -color [random_clr] -hide 0 +# puts "creating: $path $e -x $tg:x$e -y $tg:y$e -color [random_clr] -hide 0" + $path element bind $e "::ix::lg_dr $path $tg $e %x %y" + $path element bind $e "::ix::lg_sl $path $tg $e %x %y" + $path element bind $e "::ix::lg_draw $path $tg $e %x %y" + $path element bind $e "::ix::lg_trim $path $tg $e %x %y" +# $path element bind $e <1> "::ix::lg_dr $path $tg $e %x %y" + $path element bind $e "set ::ix::_($path:clickd) -1" +# $path element bind $e "set ::ix::_($path:clickd) -1" + } + proc lg_new {path tg} { + bind $path {} + bind $path "::ix::lg_zoom $path $tg in %x %y" + bind $path "::ix::lg_zoom $path $tg out %x %y" + bind $path "$path axis configure x -min {} -max {}; $path axis configure y -min {} -max {}" + bind $path [bind $path ] + Blt_ZoomStack $path "2" "Control-2" + $path axis configure x -background [$path cget -bg] + $path axis configure y -background [$path cget -bg] + } +} +#> lg blt::graph +#. -bg yellow -halo 16 +#. @clear ::ix::lg_cl .- .| +#. @delete ::ix::lg_de .- .| .#1 +#. @list ::ix::lg_add .- .| .#args +#. @add ::ix::lg_add .- .| .#args +#. @dump ::ix::lg_dumper .- .| .#args +#. @cmd eval ".- .#args" + +::ix::lg_new .- .| + +puts "lg .- .|" \ No newline at end of file diff --git a/extensions/gui/ix/toxy/mat-demo.pd b/extensions/gui/ix/toxy/mat-demo.pd new file mode 100755 index 00000000..eda61bc5 --- /dev/null +++ b/extensions/gui/ix/toxy/mat-demo.pd @@ -0,0 +1,53 @@ +#N canvas 80 85 910 775 12; +#X obj 15 29 widget mat n1 #w 881 #bg gray83 #divX 8 #divY 5 #h 494 +#Yb 1 #Ya 88 #qYv 2 #qYa 8 #ln white; +#X msg 1080 -13 -height 26 -width 26 -bg gray95; +#X msg 184 648 redefine; +#X obj 131 646 * 127; +#X obj 95 644 + 36; +#X obj 587 565 rr ss; +#X obj 587 546 rg; +#X obj 20 603 unpack f f f; +#X obj 47 638 * 127; +#X obj 26 668 pack f f f; +#X obj 49 692 makenote 99 250; +#X obj 102 728 noteout; +#X obj 77 559 rp ss kbd; +#X obj 158 583 rp ss kb2; +#X obj 138 537 widget kbd k1 #bg blue #fg green #ln gray50 -height +32; +#X obj 138 570 widget kbd k2 #bg orange #fg red #ln gray50 -height +32; +#X obj 108 622 unpack 0 0 0; +#X obj 108 603 Append 1; +#X obj 158 602 Append 2; +#X msg 74 575 1; +#X obj 3 533 widget dd dd1 -bg green -fg red; +#X obj 3 493 a2l; +#X obj 3 549 widget dd s2 #symbol 0; +#X connect 0 0 21 0; +#X connect 2 0 0 0; +#X connect 3 0 11 1; +#X connect 4 0 11 0; +#X connect 6 0 5 0; +#X connect 7 0 9 0; +#X connect 7 1 8 0; +#X connect 7 2 9 2; +#X connect 8 0 9 1; +#X connect 9 0 10 0; +#X connect 10 0 11 0; +#X connect 10 1 11 1; +#X connect 12 0 17 0; +#X connect 13 0 18 0; +#X connect 14 0 17 0; +#X connect 14 0 12 0; +#X connect 15 0 18 0; +#X connect 15 0 13 0; +#X connect 16 0 4 0; +#X connect 16 1 3 0; +#X connect 16 2 11 2; +#X connect 17 0 16 0; +#X connect 18 0 16 0; +#X connect 19 0 9 2; +#X connect 21 0 20 0; +#X connect 22 0 20 0; diff --git a/extensions/gui/ix/toxy/mat.wid b/extensions/gui/ix/toxy/mat.wid new file mode 100755 index 00000000..237bf772 --- /dev/null +++ b/extensions/gui/ix/toxy/mat.wid @@ -0,0 +1,688 @@ +foreach package {snack tkdnd tkpath} {package require $package} +namespace eval ::ix { + proc rc {} {return [format "\#%06x" [expr "int(floor(rand() * 16777216))"]]} + proc rgb {} {return [list [expr "int(floor(rand() * 256))"] [expr "int(floor(rand() * 256))"] [expr "int(floor(rand() * 256))"]]} + proc lighten {rgb r} {set l {}; foreach c $rgb {lappend l [expr {(256 - $c) * $r + $c}]}; return $l} + proc darken {rgb r} {set l {}; foreach c $rgb {lappend l [expr {$c - ($c * $r)}]}; return $l} + proc color {rgb} {return [format "\#%02x%02x%02x" [expr int([lindex $rgb 0])] [expr int([lindex $rgb 1])] [expr int([lindex $rgb 2])]]} + proc random_txt {n} { + set i 0 + set text "" + while {$i < $n} { + set int [expr "int(floor(rand()*62))"] + if {$int < 10} {incr int 48} elseif {$int < 36} {incr int 55} else {incr int 61} + set text "$text[format %c $int]" + incr i + } + return $text + } + + proc mat_sel {p t a x y} { + variable _ + set _($t:sc) [rc] + switch $a { + first { + foreach xy {x y} {set _($t:c$xy) [set $xy];set _($t:f$xy) [set $xy]} + $p.m create path [::tkpath::coords rect $_($t:cx) $_($t:cy) 0 0 -rx 12 -ry 12] \ + -tags sel -stroke $_($t:sc) -strokewidth 12 -strokeopacity 0.3} + release {$p.m delete sel} + motion { + mat_updatesel $p $t [mat_cleansel $p $t [$p.m find overlapping $_($t:fx) $_($t:fy) $x $y]] + if {$x >= $_($t:cx)} {set xa $_($t:fx);set xb $x} else {set xa $x;set xb $_($t:fx)} + if {$y >= $_($t:cy)} {set ya $_($t:fy);set yb $y} else {set ya $y;set yb $_($t:fy)} + set w [expr {abs($xb - $xa)}] + set h [expr {abs($yb - $ya)}] + $p.m coords sel [::tkpath::coords rect $xa $ya $w $h -rx 12 -ry 12] + $p.m itemconfigure sel -stroke $_($t:sc)}}} + + proc mat_item_new {p t id d} { + variable _ + if {$id eq "-"} { + if {[dict keys $_($t)] eq ""} {set id 0} else { + set id -1 + while true {if {[lsearch -integer [dict keys $_($t)] [incr id]] == -1} {break}} + } + } + set _($t:ci) $id + mat_item_ua $p $t $id abs {x 0 xx 0 y 0 yy 0 g 0 v 1} 0 + mat_item_ua $p $t $id abs $d 0 + mat_item_draw $p $t $id + } + + proc mat_item_draw {p t is} { + variable _ + if {$is eq "all"} {set is [dict keys $_($t)]} + foreach id $is { + set tags [list item i$id $id] + set color [dict get $_($t:g) $_($t:cg) color] + switch [dict get $_($t) $id type] { + note { + $p.m create path [::tkpath::coords rect 0 0 0 0 -rx 3 -ry 3] -tags [concat $tags r] -stroke [color [lighten $color 0.4]] -strokeopacity 1.0 -fill [color $color] -fillopacity 0.08 + $p.m create path [::tkpath::coords rect 0 0 0 0 -rx 3 -ry 3] -tags [concat $tags q] -fill [color $color] -strokewidth 0 -fillopacity 0.8 + } + sound { + snack:::sound s$id + set filename [dict get $_($t) $id filename] + s$id read $filename + $p.m create path [::tkpath::coords rect 0 0 0 0 -rx 3 -ry 3] -tags [concat $tags r] -strokewidth 0 -fill [color $color] -fillopacity 0.08 + $p.m create waveform 0 0 -tags [concat $tags w] -sound s$id -fill white + set length [expr [s$id length] / ($_($t:samplerate) + 0.0) * 1000] + mat_item_ua $p $t $id abs [dict create xx [expr [dict get $_($t) $id x] + $length]] 0 + $p.m create text 0 0 -tags [concat $tags tl] -font {{bitstream vera sans} 8} -fill HotPink -anchor nw -justify left -text "[string range $length 0 10] s" + $p.m create rectangle 0 0 0 0 -tags [concat $tags tlr] -fill LightGreen -width 0 + $p.m raise [$p.m find withtag "i$id && tl"] + $p.m create text 0 0 -tags [concat $tags tf] -font {{bitstream vera sans} 8} -fill NavyBlue -anchor ne -justify right -text $filename + $p.m create rectangle 0 0 0 0 -tags [concat $tags tfr] -fill gray90 -width 0 + $p.m raise [$p.m find withtag "i$id && tf"] + } + } + mat_redraw $p $t $id + } + } + + proc mat_item_delete {p t} { + variable _ + foreach item $_($t:sel) { + foreach i [$p.m find withtag i$item] { + $p.m delete $i + } + dict unset _($t) $item + set _($t:sel) {} + mat_item_info $p $t "" + pd [concat $t.rp _cb delete $item \;] + } + } + + proc mat_quant {p t y v} { + variable _ + if {$y eq "xx"} {set y x}; if {$y eq "yy"} {set y y} + if {$y eq "x" || $y eq "y"} { + set v [expr {int( ($v + $_($t:q$y) / 2.0 ) / ($_($t:q$y) + 0.0))*$_($t:q$y)}] + } + return $v + } + + proc mat_item_pos {p t item r x y xx yy} { + mat_item_ua $p $t $item $r [dict create x $x y $y xx $xx yy $yy] 1} + + proc mat_item_ua {p t item r u redraw} { + variable _ + foreach a [dict keys $u] { + switch $r {abs {dict set _($t) $item $a [dict get $u $a]} + rel {dict set _($t) $item $a [expr {[dict get $_($t) $item $a] + [dict get $u $a]}]}} + pd [concat $t.rp _cb update $item $a [pdtk_enquote [dict get $_($t) $item $a]] \;] + } + if {$redraw == 1} {mat_redraw $p $t $item} + } + + proc mat_draw {p t a x y} { + variable _ + switch $a { + motion { + if {$_($t:af) == 1} { + mat_item_pos $p $t $_($t:ci) abs [mat_tr $p $t y i $y] [mat_tr $p $t x i $x] [mat_tr $p $t y i $_($t:fy)] [mat_tr $p $t x i $x] + } else { + mat_item_pos $p $t $_($t:ci) abs [mat_tr $p $t x i $x] [mat_tr $p $t y i $y] [mat_tr $p $t x i $_($t:fx)] [mat_tr $p $t y i $y] + } + } + first {mat_item_new $p $t - [dict create type note g $_($t:cg) x 0 y 0 xx 0 yy 0 v 1]}}} + + proc mat_resize_canvas {p t a x y} {mat_viewpoint $p $t [dict create action resize x $x y $y]} + + proc mat_redraw {p t items} { + variable _ + if {$_($t:af) == 1} { + array set a {x y y x xx yy yy xx} + } else { + array set a {x x y y xx xx yy yy} + } + switch $items { + all {set items [dict keys $_($t)]} + default {}} + foreach id $items { + set x [mat_tr $p $t x t [dict get $_($t) $id $a(x)]] + set y [mat_tr $p $t y t [dict get $_($t) $id $a(y)]] + set qx [mat_tr $p $t x t [mat_quant $p $t x [dict get $_($t) $id $a(x)]]] + set qy [mat_tr $p $t y t [mat_quant $p $t y [dict get $_($t) $id $a(y)]]] + set wx [expr {[dict get $_($t) $id $a(xx)] - [dict get $_($t) $id $a(x)]}] + if {$wx == 0} {set wx 1} + set sx [expr abs([mat_tr $p $t x id $wx])] + set qsx [expr int(abs([mat_tr $p $t x id [expr {[mat_quant $p $t x [dict get $_($t) $id $a(xx)]] - [mat_quant $p $t x [dict get $_($t) $id $a(x)]]}]]))] + set wy [expr {[dict get $_($t) $id $a(yy)] - [dict get $_($t) $id $a(y)]}] + if {$wy == 0} {set wy 1} + set sy [expr abs([mat_tr $p $t y id $wy])] + set qsy [expr int(abs([mat_tr $p $t y id [expr {[mat_quant $p $t y [dict get $_($t) $id $a(yy)]] - [mat_quant $p $t y [dict get $_($t) $id $a(y)]]}]]))] + set ro [expr {int( [set s$a(y)] / 2.0 )}] + if {[lsearch -integer $_($t:sel) $id] >= 0} { + set color $_($t:sc) + } else { + set color [color [dict get $_($t:g) [dict get $_($t) $id g] color]] + } + switch [dict get $_($t) $id type] { + note { + set r [$p.m find withtag "i$id && r"] + set q [$p.m find withtag "i$id && q"] + $p.m coords $r [::tkpath::coords rect $x $y $sx $sy -rx $ro -ry $ro] + $p.m coords $q [::tkpath::coords rect $qx $qy $qsx $qsy -rx $ro -ry $ro] + $p.m itemconfigure $q -fillopacity [dict get $_($t) $id v] -fill $color + } + sound { + set waveform [$p.m find withtag "i$id && w"] + set r [$p.m find withtag "i$id && r"] +# set ro [expr int($ro / 2.)] + set ro 6 + $p.m coords $r [::tkpath::coords rect $x $y $sx $sy -rx $ro -ry $ro] + $p.m itemconfigure $r -fillopacity [dict get $_($t) $id v] -fill $color + $p.m coords $waveform $x $y + $p.m itemconfigure $waveform -width $sx -height [expr int($sy)] +# $p.m itemconfigure $waveform -width $sx + $p.m coords [$p.m find withtag "i$id && tl"] [expr $x + 4] [expr $y + 4] + $p.m coords [$p.m find withtag "i$id && tlr"] [$p.m bbox [$p.m find withtag "i$id && tl"] ] + $p.m coords [$p.m find withtag "i$id && tf"] [expr $x + $sx] [expr $y + 4] + $p.m coords [$p.m find withtag "i$id && tfr"] [$p.m bbox [$p.m find withtag "i$id && tf"] ] + } + } + } + } + + proc mat_item_v {p t a x y} { + variable _ + foreach item $_($t:sel) { + mat_item_ua $p $t $item rel [dict create v [expr {($x - $_($t:cx)) / 100.0}]] 1 + } + mat_item_info $p $t $_($t:sel) + } + + proc mat_move_canvas {p t a x y} {mat_viewpoint $p $t [dict create action move x $x y $y]} + + proc mat_move_object {p t a x y} { + variable _ + set mx [mat_tr $p $t x d [expr {$x - $_($t:cx)}]] + set my [mat_tr $p $t y d [expr {$y - $_($t:cy)}]] + if {$_($t:af) == 1} { + foreach item $_($t:sel) {mat_item_pos $p $t $item rel $my $mx $my $mx} + } else { + foreach item $_($t:sel) {mat_item_pos $p $t $item rel $mx $my $mx $my} + } + mat_item_info $p $t $_($t:sel) + } + + proc mat_resize_left {p t a x y} {mat_resize_object $p $t x $x $y} + proc mat_resize_right {p t a x y} {mat_resize_object $p $t xx $x $y} + proc mat_resize_top {p t a x y} {mat_resize_object $p $t y $x $y} + proc mat_resize_bottom {p t a x y} {mat_resize_object $p $t yy $x $y} + proc mat_resize_tl {p t a x y} {mat_resize_object $p $t x $x $y; mat_resize_object $p $t y $x $y} + proc mat_resize_tr {p t a x y} {mat_resize_object $p $t x $x $y; mat_resize_object $p $t yy $x $y} + proc mat_resize_bl {p t a x y} {mat_resize_object $p $t xx $x $y; mat_resize_object $p $t y $x $y} + proc mat_resize_br {p t a x y} {mat_resize_object $p $t xx $x $y; mat_resize_object $p $t yy $x $y} + + proc mat_resize_object {p t e x y} { + variable _ + if {$_($t:af) == 1} { + array set ax {x y xx y y x yy x} + } else { + array set ax {x x xx x y y yy y} + } + set m [mat_tr $p $t $ax($e) d [expr $$ax($e) - $_($t:c$ax($e))]] + foreach item $_($t:sel) {mat_item_ua $p $t $item rel [dict create $e $m] 1} + mat_item_info $p $t $_($t:sel) + } + + proc mat_cleansel {p t sel} { + set clean {} + foreach item $sel {if {[lindex [$p.m itemcget $item -tags] 0] eq "item"} {lappend clean [lindex [$p.m itemcget $item -tags] 2]}} + set clean [lsort -integer -unique $clean] + return $clean + } + + proc mat_loc {p t si x y} { + variable _ + if {$si == 1} { + set sy $y + set sx $x + set x [mat_tr $p $t x i $x] + set y [mat_tr $p $t y i $y] + } else { + set sy [mat_tr $p $t y t $y] + set sx [mat_tr $p $t x t $x] + } + $p.m coords lY [concat M 0 $sy L [winfo width $p.m] $sy] + $p.m coords lX [concat M $sx 0 L $sx [winfo height $p.m]] + $p.m itemconfigure loc -text [list $x $y] + } + + proc mat_hover {p t x y} { + variable _ +# mat_loc $p $t 1 $x $y + if {[$p.m find withtag sel] ne ""} { + mat_sel $p $t motion $x $y + } else { + set clicked [mat_cleansel $p $t [$p.m find overlapping [expr $x - 2] [expr $y - 2] [expr $x + 2] [expr $y + 2]]] + if {$clicked ne ""} { + mat_resize_modes $p $t $x $y [lindex $clicked end] + if {[llength $_($t:sel)] <= 1} {mat_updatesel $p $t [lindex $clicked end]} + } else { + mat_mode $p $t move_canvas + } + } + } + + proc mat_resize_modes {p t x y id} { + variable _ + set d 3 + set dx [expr {abs([mat_tr $p $t x t [dict get $_($t) $id x]] - $x)}] + set dxx [expr {abs([mat_tr $p $t x t [dict get $_($t) $id xx]] - $x)}] + set dy [expr {abs([mat_tr $p $t y t [dict get $_($t) $id y]] - $y)}] + set dyy [expr {abs([mat_tr $p $t y t [dict get $_($t) $id yy]] - $y)}] + if {$dx < $d && $dy < $d} { + mat_mode $p $t resize_tl + } elseif {$dxx < $d && $dy < $d} { + mat_mode $p $t resize_tr + } elseif {$dx < $d && $dyy < $d} { + mat_mode $p $t resize_bl + } elseif {$dxx < $d && $dyy < $d} { + mat_mode $p $t resize_br + } elseif {$dx < 5} { + mat_mode $p $t resize_left + } elseif {$dxx < 5} { + mat_mode $p $t resize_right + } elseif {$dy < 1} { + mat_mode $p $t resize_top + } elseif {$dyy < 1} { + mat_mode $p $t resize_bottom + } else { + mat_mode $p $t move_object + } + } + + proc mat_item_info {p t clicked} { + variable _ + set n 0;$p.m delete hover + foreach item $clicked { + set info "" + set data [dict get $_($t) $item] + foreach d $data {lappend info [string range $d 0 7]} + $p.m create text [list [expr [winfo width $p.m] - 8.0] [expr [winfo height $p.m] - 8.0 - 11 * $n.0]] -fill $_($t:sc) -justify right -anchor se -font {{bitstream vera sans mono} 10} -tags hover -text $info + incr n + }} + + proc mat_togglesel {p t d} { + variable _ + if {[lsearch -integer $_($t:sel) $d] < 0} { + set _($t:sel) [concat $_($t:sel) $d] + } else { + set _($t:sel) [lsearch -inline -not -all -integer $_($t:sel) $d] + } + mat_redraw $p $t $d + } + + proc mat_updatesel {p t ns} { + variable _ + set os $_($t:sel) + set _($t:sel) $ns + mat_redraw $p $t [lsort -unique -integer [concat $os $ns]] + mat_item_info $p $t $ns + } + + proc mat_click {m button action p t x y X Y} { + variable _ + set clicked [mat_cleansel $p $t [$p.m find overlapping $x $y $x $y]] + set a [$p.m itemcget mode -text] + switch $action { + first { + foreach xy {x y} {set _($t:f$xy) [set $xy]} + switch $button { + 1 {if {$m eq "control"} { + mat_mode $p $t draw; mat_draw $p $t $action $x $y + } elseif {$m eq "double" || $m eq "shift"} { + if {[llength $clicked] > 0} { + mat_togglesel $p $t $clicked + } else { + mat_sel $p $t first $x $y + mat_mode $p $t sel + } + } elseif {[$p.m find withtag sel] ne ""} { + mat_sel $p $t release $x $y + } elseif {[llength $_($t:sel)] > 1 && [llength $clicked] > 0 && [lsearch $_($t:sel) $clicked] == -1} { + mat_updatesel $p $t $clicked}} + 2 {mat_mode $p $t resize_canvas} + 3 {if {$clicked ne ""} { + mat_mode $p $t item_v } else {mat_rmenu $p $t $X $Y}}}} + motion {eval mat_$a $p $t $action $x $y} + release { + switch $button { + 1 {if {$a eq "draw" || ($a eq "sel" && [expr {abs($_($t:fx) - $x)}] >13)} {eval mat_$a $p $t $action $x $y}} + 2 {mat_mode $p $t move_canvas} + 3 {mat_mode $p $t move_canvas} + } + } + } + foreach xy {x y} {set _($t:c$xy) [set $xy]} + } + + proc mat_rmenu {p t x y} { + variable _ + if {[winfo exists $p.rmenu] != 1} { + set m [menu $p.rmenu -tearoff no] + $m add command -label "zoom to fit" -command "::ix::mat_viewpoint $p $t {action fit}" + $m add command -label "reset zoom" -command "::ix::mat_viewpoint $p $t {action reset}" + $m add command -label "add group" -command "::ix::mat_group_new $p $t -" + $m add cascade -label "sel to group" -menu [menu $p.rmenu.seltogroup -tearoff no] + $m add command -label "flip axes" -command "::ix::mat_flipaxe $p $t" + } else { + # $p.rmenu entryconfigure 0 -label $x + } + $p.rmenu.seltogroup delete 0 end + foreach group [dict keys $_($t:g)] { + $p.rmenu.seltogroup add command -label [dict get $_($t:g) $group name] -command "::ix::mat_group_assign $p $t $group" + } + tk_popup $p.rmenu $x $y + } + + proc mat_tr {p t d inv v} { + variable _ + array set dm {x width y height} + switch $inv { + t {return [expr {($v - $_($t:${d}a)) / ($_($t:${d}b) - $_($t:${d}a) + 0.0) * [winfo $dm($d) $p.m]}]} + i {return [expr {($_($t:${d}b) - $_($t:${d}a)) * $v /([winfo $dm($d) $p.m] + 0.0) + $_($t:${d}a)}]} + d {return [expr {($_($t:${d}b) - $_($t:${d}a)) * $v /([winfo $dm($d) $p.m] + 0.0)}]} + id {return [expr {$v / ($_($t:${d}b) - $_($t:${d}a) + 0.0) * [winfo $dm($d) $p.m]}]}}} + + proc mat_viewpoint {p t opts} { + variable _ + switch [dict get $opts action] { + fit { + set i 0 + dict for {s xy} $_($t) { + dict with xy { + if {$i == 0} { + set xa $x + set xb $x + set ya $y + set yb $y + } + if {$x > $xb} {set xb $x} + if {$x < $xa} {set xa $x} + if {$y > $yb} {set yb $y} + if {$y < $ya} {set ya $y} + if {$xx > $xb} {set xb $xx} + if {$xx < $xa} {set xa $xx} + if {$yy > $yb} {set yb $yy} + if {$yy < $ya} {set ya $yy} + incr i + } + } + set _($t:xa) $xa + set _($t:xb) $xb + set _($t:ya) $ya + set _($t:yb) $yb + } + reset { + set _($t:ya) $_($t:yao);set _($t:yb) $_($t:ybo);set _($t:xa) $_($t:xao);set _($t:xb) $_($t:xbo) + } + move { + foreach xy {x y} { + set mvt [mat_tr $p $t $xy d [expr {[dict get $opts $xy] - $_($t:c$xy)}]] + foreach ab {a b} {set _($t:${xy}$ab) [expr {$_($t:${xy}$ab) - $mvt}]}} + } + zoom { + array set dir {in 0.5 out 1.5} + foreach xy [dict get $opts axe] { + set radius [expr {($_($t:${xy}b) - $_($t:${xy}a)) / 2. * $dir([dict get $opts dir])}] + set center [mat_tr $p $t $xy i [dict get $opts $xy]] + set _($t:${xy}a) [expr {$center - $radius}] + set _($t:${xy}b) [expr {$center + $radius}] + } + } + resize { + foreach xy {x y} { + set mvt [mat_tr $p $t $xy d [expr {[dict get $opts $xy] - $_($t:c$xy)}]] + set _($t:${xy}a) [expr {$_($t:${xy}a) - $mvt}] + set _($t:${xy}b) [expr {$_($t:${xy}b) + $mvt}]} + } + scroll { + set xy [dict get $opts axis] + set mv [expr {($_($t:${xy}b) - $_($t:${xy}a)) / 4.0}] + foreach ab {a b} {set _($t:${xy}$ab) [expr {[dict get $opts units] > 0 ? $_($t:${xy}$ab) + $mv : $_($t:${xy}$ab) - $mv }]} + } + } + mat_redraw $p $t all + mat_gridlines $p $t + } + proc mat_flipaxe {p t} { + variable _ + set _($t:af) [expr $_($t:af) == 1 ? 0 : 1] + + set ya $_($t:ya) + set xa $_($t:xa) + set xb $_($t:xb) + set yb $_($t:yb) + set qx $_($t:qx) + set qy $_($t:qy) + set mx $_($t:mx) + set my $_($t:my) + + set _($t:ya) $xa + set _($t:xa) $ya + set _($t:yb) $xb + set _($t:xb) $yb + set _($t:qx) $qy + set _($t:qy) $qx + set _($t:mx) $my + set _($t:my) $mx + + mat_gridlines $p $t + mat_redraw $p $t all + } + proc mat_clip {p t action} { + variable _ + switch $action { + selecta { + mat_updatesel $p $t [dict keys $_($t)] + } + cut { + set _($t:c) [dict create] + set i 0 + foreach item $_($t:sel) { + dict set _($t:c) $i [dict get $_($t) $item] + incr i + } + mat_item_delete $p $t + } + copy { + set _($t:c) [dict create] + set i 0 + foreach item $_($t:sel) { + dict set _($t:c) $i [dict get $_($t) $item] + incr i + } + } + paste { + set pasted {} + foreach item [dict keys $_($t:c)] { + mat_item_new $p $t - [dict get $_($t:c) $item] + } + } + } + } + + proc mat_mode {p t m} { + array set cursor {draw pencil move_canvas fleur move_object dotbox item_v box_spiral resize_canvas bogosity sel cross_reverse resize_left left_side resize_right right_side resize_top top_side resize_bottom bottom_side resize_tl top_left_corner resize_tr top_right_corner resize_bl bottom_left_corner resize_br bottom_right_corner} + $p.m itemconfigure mode -text $m + $p.m configure -cursor $cursor($m) + } + + proc mat_group_assign {p t group} { + variable _ + foreach item $_($t:sel) { + mat_item_ua $p $t $item abs [dict create g $group] 0 + } + } + + proc mat_group_new {p t grp} { + variable _ + set exists 0 + dict for {key val} $_($t:g) {if {[dict get $val name] eq $grp} {set exists 1}} + if {$exists == 0} { + if {$grp eq "-"} {set grp [random_txt [expr "int(floor(rand() * 10 + 2))"]]} + set n -1 + while true { if {[lsearch -integer [dict keys $_($t:g)] [incr n]] == -1} {break}} + dict set _($t:g) $n name $grp + dict set _($t:g) $n color [rgb] + set _($t:cg) $n + mat_groups_view $p $t + mat_group_active $p $t $n + } + } + + proc mat_groups_view {p t} { + variable _ + $p.m delete [$p.m find withtag group] + foreach i [dict keys $_($t:g)] { + set id [$p.m create text [concat 68.0 [expr {38.0 + 11 * $i}]] -fill [color [dict get $_($t:g) $i color]] -justify right -anchor e -font {{bitstream vera sans mono} 10} -tags [concat group $i lb] -text [dict get $_($t:g) $i name]] + $p.m bind $id "::ix::mat_group_active $p $t $i" + $p.m bind $id <1> "::ix::mat_group_assign $p $t $i" + set bx [$p.m bbox $id] + $p.m lower [$p.m create path [::tkpath::coords rect [lindex $bx 0] [lindex $bx 1] [expr [lindex $bx 2] - [lindex $bx 0]] [expr [lindex $bx 3] - [lindex $bx 1]] -rx 6 -ry 6] -tags [concat group $i bg] -strokewidth 1 -stroke white -fill white -fillopacity 0.5] + } + } + + proc mat_group_active {p t g} { + variable _ + set _($t:cg) $g + foreach n [dict keys $_($t:g)] { + if {$g == $n} {set cb black; set cl white; set tl 1} {set cb white; set cl [color [dict get $_($t:g) $n color]]; set tl 0.5} + set idb [$p.m find withtag "group && $n && bg"] + $p.m itemconfigure $idb -fill $cb -fillopacity $tl -stroke $cl + set idl [$p.m find withtag "group && $n && lb"] + $p.m itemconfigure $idl -fill $cl; + if {$g == $n} {$p.m raise $idb;$p.m raise $idl;} + } + } + + proc mat_key {p t k b} { + puts $k + switch $b { + 1 { + switch $k { + 22 {mat_item_delete $p $t} + 38 {mat_clip $p $t selecta} + 53 {mat_clip $p $t cut} + 54 {mat_clip $p $t copy} + 55 {mat_clip $p $t paste} + 97 {mat_viewpoint $p $t {action reset}} + 98 {mat_viewpoint $p $t {action scroll units -1 axis y}} + 100 {mat_viewpoint $p $t {action scroll units -1 axis x}} + 102 {mat_viewpoint $p $t {action scroll units 1 axis x}} + 104 {mat_viewpoint $p $t {action scroll units 1 axis y}} + 107 {mat_item_delete $p $t} + } + } +# 0 { +# switch $k { +# } +# } + } + } + + proc mat_drop {p t dropped x y} { +# foreach d $dropped { + foreach d [split $dropped "\n"] { + set x [mat_tr $p $t x i $x] + set y [mat_tr $p $t y i $y] + mat_item_new $p $t - [dict create type sound g 1 v 1 x $x y $y xx $x yy $y filename [regsub -- {^file:[/]+} $d "/"]] + } + } + + proc mat_new {p t w h bg ln xa xb ya yb qx qy mx my samplerate} { + variable _ + set sc orange + foreach xy {x y} {foreach ab {a b} {set ${xy}${ab}o [set ${xy}${ab}]}} + foreach a {sc ln xa xb ya yb xao xbo yao ybo qx qy mx my samplerate} {set _($t:$a) [set $a]} + if {[winfo exists $p.m] != 1} { + canvas $p.m -bg $bg -width $w -height $h + pack $p.m -side left + bind $p.m "::ix::mat_key $p $t %k 1" + bind $p.m "::ix::mat_key $p $t %k 0" +# dnd bindtarget $p.m text/uri-list "::ix::mat_drop $p $t %D %x %y" + dnd bindtarget $p.m text/plain "::ix::mat_drop $p $t %D %x %y" + bind $p.m "::ix::mat_hover $p $t %x %y" + bind $p.m <4> "::ix::mat_viewpoint $p $t {action scroll units 1 axis x}" + bind $p.m <5> "::ix::mat_viewpoint $p $t {action scroll units -1 axis x}" + bind $p.m "::ix::mat_viewpoint $p $t {action zoom dir in axe x x %x y %y}" + bind $p.m "::ix::mat_viewpoint $p $t {action zoom dir out axe x x %x y %y}" + bind $p.m "::ix::mat_viewpoint $p $t {action zoom dir in axe {x y} x %x y %y}" + bind $p.m "::ix::mat_viewpoint $p $t {action zoom dir out axe {x y} x %x y %y}" + bind $p.m "::ix::mat_viewpoint $p $t {action zoom dir in axe y x %x y %y}" + bind $p.m "::ix::mat_viewpoint $p $t {action zoom dir out axe y x %x y %y}" + bind $p.m "::ix::mat_viewpoint $p $t {action scroll units -1 axis y}" + bind $p.m "::ix::mat_viewpoint $p $t {action scroll units 1 axis y}" + foreach m {"Control-" "" "Shift-" "Double-"} { + foreach bn {1 2 3} { + set b [list [concat $bn first] [concat B${bn}-Motion motion] [concat ButtonRelease-$bn release]] + foreach ba {0 1 2} { + bind $p.m <$m[lindex [lindex $b $ba] 0]> "::ix::mat_click [list [string tolower [string trimright $m -1]]] $bn [lindex [lindex $b $ba] 1] $p $t %x %y %X %Y"}}} + set bd [expr {[$p cget -bd] * 2}] +# update + $p configure -bg gray -width [expr {[winfo width $p.m] + $bd}] -height [expr {[winfo height $p.m] + $bd}] + $p.m create text {20 20} -fill blue -justify left -anchor w -font {{bitstream vera sans} 18} -tags mode -text move_canvas + $p.m create text [list [expr {$w / 2.}] 5] -fill red -justify center -anchor n -font {{bitstream vera sans} 14} -tags q -text q + $p.m create path "M 0 0" -tags lX -stroke black -strokeopacity 0.5 + $p.m create path "M 0 0" -tags lY -stroke black -strokeopacity 0.5 + $p.m create text "10 $h" -fill red -justify left -anchor sw -font {{bitstream vera sans} 12 bold} -fill purple -tags loc -text "" + if {[info exists _($t)] != 1} { + set _($t) {} + set _($t:g) {} + set af 0; set i -1; set sel {} + foreach a {af i sel} {set _($t:$a) [set $a]} + mat_group_new $p $t default + mat_group_new $p $t wavs + } + } + mat_gridlines $p $t + mat_item_draw $p $t all + mat_groups_view $p $t + } + + proc mat_gridlines {p t} { + variable _ + set w $p.m + $w delete gridlines + set gh [winfo height $w] + set gw [winfo width $w] + foreach item [$w find withtag gridline] {$w delete $item} + foreach xy {x y} { + array set ta {x n y w} + array set tj {x center y left} + array set igx {y width x height} + set range [expr {abs($_($t:${xy}b) - $_($t:${xy}a))}] + set numshits [expr {$range / $_($t:q$xy)}] + if {$numshits > $_($t:m${xy})} {set factor [expr {int($numshits / ($_($t:m${xy}) + 0.0) + 1)}]} else { + set factor [expr {1. / (int(1./($numshits / ($_($t:m${xy}) + 0.0) + 0.0)) + 0.0)}] + } + set increment [expr {$_($t:q${xy}) * $factor}] + for {set x [expr {int($_($t:${xy}a) / ($increment + 0.0) + 1)*($increment + 0.0)}]} {[expr {$_($t:${xy}a) > $_($t:${xy}b) ? $x >= $_($t:${xy}b) : $x <= $_($t:${xy}b)}]} {set x [expr {$_($t:${xy}a) > $_($t:${xy}b) ? $x - $increment : $x + $increment}]} { + set og [mat_tr $p $t $xy t $x] + set invgeo [winfo $igx($xy) $w] + switch $xy { + y {set coords [concat M [expr {int(rand()*23)}] $og L $invgeo $og]} + x {set coords [concat M $og [expr {int(rand()*16)}] L $og $invgeo]}} +# y {set coords [concat M 0 $og L $invgeo $og]} +# x {set coords [concat M $og 0 L $og $invgeo]}} + $w lower [$w create text [lrange $coords 1 2] -font {{Bitstream Vera Sans} 8} -fill [rc] -anchor $ta($xy) -text [string range $x 0 7] -justify $tj($xy) -tags gridline] + $w lower [$w create path $coords -stroke $_($t:ln) -strokedasharray [expr {int(rand()*42 + 1)}] -tags gridline -strokewidth 1] + }}}} + +#> mat frame +#. -bd 3 #w 384 #h 144 #bg gray86 #ln white +#. #samplerate 44100 +#. #Xa 123 #Xb 2000 #Ya 127 #Yb 0 #qx 50 #qy 1 #mx 12 #my 64 +#. @add ::ix::mat_item_new .- .| .#1 {type .#2} +#. @update ::ix::mat_item_ua .- .| .#1 abs {.#2 .#3} 1 +#. @updaterel ::ix::mat_item_ua .- .| .#1 rel {.#2 .#3} 1 +#. @up ::ix::mat_item_ua .- .| .#1 abs {.#2 .#3} 0 +#. @uprel ::ix::mat_item_ua .- .| .#1 rel {.#2 .#3} 0 +puts "mat .- .|" +::ix::mat_new .- .| .#w .#h .#bg .#ln .#Xa .#Xb .#Ya .#Yb .#qx .#qy .#mx .#my .#samplerate +#bind .-.m {focus .-.m} +bind .-.m {focus .^.c} diff --git a/extensions/gui/ix/toxy/ngrid-demo.pd b/extensions/gui/ix/toxy/ngrid-demo.pd new file mode 100644 index 00000000..29dacac1 --- /dev/null +++ b/extensions/gui/ix/toxy/ngrid-demo.pd @@ -0,0 +1,310 @@ +#N canvas 1333 136 79 124 12; +#X msg 785 -536 -height 26 -width 26 -bg gray95; +#N canvas 0 0 595 500 intro 1; +#X obj 9 418 osc~; +#X obj 9 456 dac~; +#X obj 9 399 line; +#X obj 9 -29 widget ngrid n1 #w 382 #h 382 #move 0 #radius 8; +#X floatatom 360 365 3 2 233 0 - - -; +#X floatatom 381 382 2 4 32 0 - - -; +#X msg 394 381 radius \$1; +#X msg 382 362 spread \$1; +#X obj 403 337 bng 23 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 +-1; +#X obj 61 418 osc~; +#X obj 35 418 osc~; +#X obj 87 418 osc~; +#X obj 113 418 osc~; +#X obj 139 418 osc~; +#X obj 35 399 line; +#X obj 61 399 line; +#X obj 87 399 line; +#X obj 113 399 line; +#X obj 139 399 line; +#X obj 165 418 osc~; +#X obj 191 418 osc~; +#X obj 9 380 route 0x 0y 1x 1y 2x 2y 3x 3y 4x 4y; +#X obj 296 405 until; +#X obj 328 422 + 1; +#X obj 296 424 i; +#X msg 330 405 0; +#X obj 217 418 osc~; +#X obj 243 418 osc~; +#X obj 165 399 line; +#X obj 191 399 line; +#X obj 217 399 line; +#X obj 243 399 line; +#X obj 355 446 tow . ngrid n1; +#X obj 9 360 Append 100; +#X msg 258 363 move swarm; +#X msg 312 385 5; +#X msg 326 363 move; +#X obj 86 437 prepend set; +#X obj 86 454 prepend set; +#X obj 160 442 hsl 128 15 0 2000 0 0 empty empty empty -2 -6 0 8 -262144 +-1 -1 2100 1; +#X obj 160 458 hsl 128 15 0 2000 0 0 empty empty empty -2 -6 0 8 -262144 +-1 -1 0 1; +#X obj 423 50 widget ngrid m #w 64 #h 64; +#X msg 407 451 add x 1 0 10 \, add y 2 0 10; +#X obj 425 127 route x y; +#X obj 468 146 prepend set; +#X obj 400 147 prepend set; +#X obj 435 166 hsl 128 15 0 10 0 0 empty empty empty -2 -6 0 8 -262144 +-1 -1 12700 1; +#X obj 435 181 hsl 128 15 0 10 0 0 empty empty empty -2 -6 0 8 -262144 +-1 -1 385 1; +#X obj 496 50 widget ngrid m #w 64 #h 64; +#X obj 510 212 widget ngrid m #w 64 #h 64; +#X obj 514 286 widget ngrid m #w 64 #h 64; +#X obj 501 367 widget ngrid m #w 64 #h 64; +#X obj 512 264 prepend pos; +#X obj 503 371 prepend pos; +#X obj 425 57 prepend setpos; +#X obj 476 59 prepend setpos; +#X msg 353 406 add \$1x 1000 0 2000; +#X msg 353 425 add \$1y 1000 0 2000; +#X msg 301 465 pos 4y \$1; +#X obj 9 437 *~ 0.033; +#X obj 513 215 prepend pos; +#X obj 417 198 prepend x; +#X obj 472 197 prepend y; +#X msg 409 414 add x 1 10 0 \, add y 2 10 0; +#X msg 407 434 add x 1 0 10 \, add y 2 10 0; +#X msg 407 470 add x 1 10 0 \, add y 2 0 10; +#X msg 303 446 pos 4x \$1; +#X msg 240 472 pos 3x \$1; +#X msg 168 472 pos 3y \$1; +#X msg 195 363 move error; +#X obj 406 219 sin; +#X obj 410 240 hsl 99 15 0 6.28 0 0 empty empty empty -2 -6 0 8 -262144 +-1 -1 0 1; +#X msg 404 297 pos 0x \$1; +#X obj 458 220 cos; +#X msg 456 295 pos 0y \$1; +#X obj 413 259 * 500; +#X obj 466 258 * 500; +#X obj 412 279 + 1000; +#X obj 468 278 + 1000; +#X obj 414 311 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 +1; +#X msg 451 315 6.28 1000; +#X obj 446 334 line; +#X obj 449 370 select 6.28 0; +#X obj 448 352 spigot; +#X msg 472 333 0 2000; +#X obj 49 480 switch~; +#X obj 430 324 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 +1; +#X obj 63 363 hsl 128 15 0 2000 0 0 empty empty empty -2 -6 0 8 -262144 +-1 -1 12700 1; +#X obj 78 368 prepend set; +#X connect 0 0 59 0; +#X connect 2 0 0 0; +#X connect 3 0 33 0; +#X connect 4 0 7 0; +#X connect 5 0 6 0; +#X connect 6 0 32 0; +#X connect 7 0 32 0; +#X connect 8 0 35 0; +#X connect 8 0 42 0; +#X connect 8 0 63 0; +#X connect 8 0 65 0; +#X connect 8 0 64 0; +#X connect 8 0 86 0; +#X connect 9 0 59 0; +#X connect 10 0 59 0; +#X connect 11 0 59 0; +#X connect 12 0 59 0; +#X connect 13 0 59 0; +#X connect 14 0 10 0; +#X connect 15 0 9 0; +#X connect 16 0 11 0; +#X connect 17 0 12 0; +#X connect 18 0 13 0; +#X connect 19 0 59 0; +#X connect 20 0 59 0; +#X connect 21 0 2 0; +#X connect 21 1 14 0; +#X connect 21 2 15 0; +#X connect 21 3 16 0; +#X connect 21 4 17 0; +#X connect 21 5 18 0; +#X connect 21 6 28 0; +#X connect 21 7 29 0; +#X connect 21 8 30 0; +#X connect 21 8 37 0; +#X connect 21 9 31 0; +#X connect 21 9 38 0; +#X connect 22 0 24 0; +#X connect 23 0 24 1; +#X connect 24 0 23 0; +#X connect 24 0 56 0; +#X connect 24 0 57 0; +#X connect 25 0 24 1; +#X connect 26 0 59 0; +#X connect 27 0 59 0; +#X connect 28 0 19 0; +#X connect 29 0 20 0; +#X connect 30 0 26 0; +#X connect 31 0 27 0; +#X connect 33 0 21 0; +#X connect 34 0 32 0; +#X connect 35 0 25 0; +#X connect 35 0 22 0; +#X connect 36 0 32 0; +#X connect 37 0 39 0; +#X connect 38 0 40 0; +#X connect 39 0 66 0; +#X connect 39 0 68 0; +#X connect 40 0 58 0; +#X connect 40 0 67 0; +#X connect 41 0 43 0; +#X connect 41 0 55 0; +#X connect 41 0 60 0; +#X connect 42 0 41 0; +#X connect 42 0 51 0; +#X connect 43 0 45 0; +#X connect 43 1 44 0; +#X connect 44 0 47 0; +#X connect 45 0 46 0; +#X connect 46 0 61 0; +#X connect 47 0 62 0; +#X connect 48 0 43 0; +#X connect 48 0 54 0; +#X connect 48 0 60 0; +#X connect 49 0 52 0; +#X connect 50 0 53 0; +#X connect 52 0 50 0; +#X connect 53 0 51 0; +#X connect 54 0 41 0; +#X connect 55 0 48 0; +#X connect 56 0 32 0; +#X connect 57 0 32 0; +#X connect 58 0 32 0; +#X connect 59 0 1 0; +#X connect 59 0 1 1; +#X connect 60 0 49 0; +#X connect 61 0 60 0; +#X connect 61 0 55 0; +#X connect 61 0 54 0; +#X connect 62 0 60 0; +#X connect 62 0 54 0; +#X connect 62 0 55 0; +#X connect 63 0 48 0; +#X connect 64 0 50 0; +#X connect 65 0 49 0; +#X connect 66 0 32 0; +#X connect 67 0 32 0; +#X connect 68 0 32 0; +#X connect 69 0 32 0; +#X connect 70 0 75 0; +#X connect 71 0 70 0; +#X connect 71 0 73 0; +#X connect 72 0 32 0; +#X connect 73 0 76 0; +#X connect 74 0 32 0; +#X connect 75 0 77 0; +#X connect 76 0 78 0; +#X connect 77 0 72 0; +#X connect 78 0 74 0; +#X connect 79 0 83 1; +#X connect 79 0 80 0; +#X connect 80 0 81 0; +#X connect 81 0 83 0; +#X connect 82 0 84 0; +#X connect 82 1 80 0; +#X connect 83 0 82 0; +#X connect 83 0 71 0; +#X connect 84 0 81 0; +#X connect 86 0 85 0; +#X connect 87 0 88 0; +#X connect 88 0 33 0; +#X restore 18 35 pd intro; +#N canvas 0 0 442 580 om 0; +#X obj 306 502 sendOSC; +#X msg 307 426 connect localhost 16180; +#X obj 306 483 prepend send; +#X obj 23 382 dumpOSC 3339; +#X obj 22 -8 widget ngrid n2 #w 382 #h 382 #move 0 #radius 8; +#X obj 23 403 OSCroute /om; +#X obj 23 422 OSCroute /new_port; +#X obj 23 441 niagara 4; +#X obj 23 460 niagara 1; +#X obj 23 498 glue; +#X obj 23 555 prepend add; +#X obj 23 479 a2l; +#X obj 406 407 t b b b; +#X msg 306 464 /om/request/all_objects 5; +#X obj 207 388 widget dm dmngr #items .(error normal swarm trails.) +; +#X msg 154 394 move \$1; +#X msg 351 503 disconnect; +#X obj 99 459 prepend /om/synth/set_port_value 1; +#X msg 305 445 /om/engine/register_client 0 localhost 3339; +#X obj 72 479 niagara 1; +#X obj 23 517 spigot; +#X msg 72 517 1; +#X msg 92 517 0; +#X obj 72 498 route CONTROL; +#X obj 146 421 OSCroute /control_change; +#X obj 146 438 prepend setpos; +#X obj 102 401 spigot; +#X obj 133 387 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 +1; +#X obj 165 478 OSCroute /node_removal; +#X obj 112 517 niagara 1; +#X obj 23 536 spigot; +#X msg 72 536 1; +#X msg 92 536 0; +#X obj 112 536 route INPUT; +#X obj 166 497 prepend delete; +#X obj 354 406 loadbang; +#X text 266 546 www.nongnu.org/om-synth/; +#X obj 199 532 print NOSHIT; +#X connect 1 0 0 0; +#X connect 2 0 0 0; +#X connect 3 0 5 0; +#X connect 3 0 37 0; +#X connect 4 0 17 0; +#X connect 5 0 6 0; +#X connect 5 0 26 0; +#X connect 5 0 28 0; +#X connect 6 0 7 0; +#X connect 7 0 8 0; +#X connect 7 1 9 1; +#X connect 8 0 11 0; +#X connect 8 1 19 0; +#X connect 9 0 20 0; +#X connect 10 0 4 0; +#X connect 11 0 9 0; +#X connect 12 0 13 0; +#X connect 12 1 18 0; +#X connect 12 2 1 0; +#X connect 13 0 2 0; +#X connect 14 0 15 0; +#X connect 15 0 4 0; +#X connect 16 0 0 0; +#X connect 17 0 2 0; +#X connect 18 0 2 0; +#X connect 19 0 23 0; +#X connect 19 1 29 0; +#X connect 20 0 30 0; +#X connect 21 0 20 1; +#X connect 22 0 20 1; +#X connect 23 0 21 0; +#X connect 23 1 22 0; +#X connect 24 0 25 0; +#X connect 25 0 4 0; +#X connect 26 0 24 0; +#X connect 27 0 26 1; +#X connect 28 0 34 0; +#X connect 29 0 33 0; +#X connect 30 0 10 0; +#X connect 31 0 30 1; +#X connect 32 0 30 1; +#X connect 33 0 31 0; +#X connect 33 1 32 0; +#X connect 34 0 4 0; +#X connect 35 0 12 0; +#X restore 18 59 pd om; diff --git a/extensions/gui/ix/toxy/ngrid.wid b/extensions/gui/ix/toxy/ngrid.wid new file mode 100755 index 00000000..6d8f16d2 --- /dev/null +++ b/extensions/gui/ix/toxy/ngrid.wid @@ -0,0 +1,150 @@ +namespace eval ::ix { + proc random_int {} {return [expr "int(floor(rand()*16))"]} + proc random_clr {} { + return [format "\#%1X%1X%1X%1X%1X%1X" [random_int] [random_int] [random_int] [random_int] [random_int] [random_int]] + } + variable _ + + proc ngrid_new {path target w h bg ln div move spread radius max} { + variable _ + if {[winfo exists $path.ngrid] != 1} { + canvas $path.ngrid -bg $bg -width $w -height $h + pack $path.ngrid -side left + bind $path.ngrid <1> "::ix::ngrid_click $path $target %x %y" + bind $path.ngrid [bind $path.ngrid <1>] + ngrid_gridlines $path $target $ln $div + set bd [expr {[$path cget -bd] * 2}] + $path configure -bg $bg -width [expr [winfo width $path.ngrid] + $bd] -height [expr [winfo height $path.ngrid] + $bd] + } + set _($target:recent) 0 + set _($target:n) 0 + set _($target:move) $move + set _($target:spread) $spread + set _($target:radius) $radius + set _($target:max) $max} + + proc ngrid_find {which path target what udata} { + variable _ + array set dm {x width y height} + for {set n 0 } {$n <= $_($target:n)} {incr n} { + foreach xy {x y} { + if {[$path.ngrid find withtag name_${xy}_$n] ne "" && [string match "$what*" [lindex $_($target:box$n:$xy) 0]]} { + set x [expr [lindex [$path.ngrid coords sqr_$n] 0] + $_($target:radius)] + set y [expr [lindex [$path.ngrid coords sqr_$n] 1] + $_($target:radius)] + set $xy [expr ($udata - [lindex $_($target:box$n:$xy) 1 ] + 0.0) / ([lindex $_($target:box$n:$xy) 2] - [lindex $_($target:box$n:$xy) 1 ] + 0.0) * [winfo $dm($xy) $path.ngrid]] + switch $which { + setpos {$path.ngrid coords sqr_$n [expr $x - $_($target:radius)] [expr $y - $_($target:radius)] [expr $x + $_($target:radius)] [expr $y + $_($target:radius)]} + pos { + set _($target:recent) $n + ngrid_click $path $target $x $y + } + remove { + $path.ngrid delete name_${xy}_$n + if {[$path.ngrid find withtag name_x_$n] eq "" && [$path.ngrid find withtag name_x_$n] eq ""} { + $path.ngrid delete sqr_$n; $path.ngrid delete hist_$n}}}}}}} + + proc ngrid_vset {path target what where} {variable _; set _($target:$what) $where} + + proc ngrid_add {path target name cur min max} { + variable _ + if {$max == $min} {set max 1.0; set min 0.0} + array set justify {x left y right} + array set anchor {y e x w} + for {set n 0 } {$n <= $_($target:n)} {incr n} {foreach xy {x y} { + if {[$path.ngrid itemcget name_${xy}_$n -text] eq $name} {return}}} + + for {set n 0 } {$n <= $_($target:n)} {incr n} {foreach xy {x y} { + if {[$path.ngrid find withtag name_x_$n] eq "" && [$path.ngrid find withtag name_y_$n] eq ""} { + set fill [set _($target:box$n:fill) [random_clr]] + $path.ngrid create oval 0 0 0 0 -tags sqr_$n -fill $fill -outline white -width 2 + set rx [expr rand() * [winfo width $path.ngrid]]; set ry [expr rand() * [winfo height $path.ngrid]] + $path.ngrid create line $rx $ry $rx $ry -tags hist_$n -fill $fill + $path.ngrid bind sqr_$n <1> "set ::ix::_($target:recent) $n; ::ix::ngrid_click $path $target %x %y" + $path.ngrid bind sqr_$n [$path.ngrid bind sqr_$n <1>] + $path.ngrid bind sqr_$n "::ix::ngrid_highlight $path $target $n grey96" + $path.ngrid bind sqr_$n "::ix::ngrid_highlight $path $target $n -" + ngrid_move $path $target $n $rx $ry + incr _($target:n) + } + if {[$path.ngrid find withtag name_${xy}_$n] eq ""} { + set _($target:box$n:$xy) [list $name $min $max] + puts "adding $xy $n $name $min $max" + switch $xy { + x { + set tl [concat 0 [expr 5 + $n * 8.0]] + set qx [expr ($cur - $min) / ($max - $min + 0.0) * [winfo width $path.ngrid]] + set qy [expr [lindex [$path.ngrid coords sqr_$n] 1] + $_($target:radius)]} + y { + set tl [concat [winfo width $path.ngrid] [expr 5 + $n * 8.0]] + set qx [expr [lindex [$path.ngrid coords sqr_$n] 0] + $_($target:radius)] + set qy [expr ($cur - $min) / ($max - $min + 0.0) * [winfo height $path.ngrid]]}} + $path.ngrid create text $tl -tags name_${xy}_$n -fill $_($target:box$n:fill) -font {{Bitstream Vera Sans} 8} -text $name -anchor $anchor($xy) -justify $justify($xy) + $path.ngrid lower name_${xy}_$n + $path.ngrid bind name_${xy}_$n "::ix::ngrid_highlight $path $target $n grey96" + $path.ngrid bind name_${xy}_$n "::ix::ngrid_highlight $path $target $n -" + ngrid_move $path $target $n $qx $qy + return}}}} + + proc ngrid_highlight {path target n color} { + variable _ + foreach el [list name_y_$n name_x_$n sqr_$n] { + if {$color eq "-"} {set color $_($target:box$n:fill)} + $path.ngrid itemconfigure $el -fill $color + set _($target:recent) $n}} + + proc ngrid_click {path target x y} { + variable _ + switch $_($target:move) { + swarm { + for {set n 0} {$n <= $_($target:n)} {incr n} { + ngrid_move $path $target $n [expr rand() * $_($target:spread) - [expr $_($target:spread) / 2.0] + $x] [expr rand() * $_($target:spread) - [expr $_($target:spread) / 2.0] + $y]}} + trails { + for {set n 0} {$n <= $_($target:n)} {incr n} { + if {[expr rand() > 0.96] == 1} { + ngrid_move $path $target $n [expr rand() * $_($target:spread) - [expr $_($target:spread) / 2.0] + $x] [expr rand() * $_($target:spread) - [expr $_($target:spread) / 2.0] + $y]}}} + error {ngrid_move $path $target $_($target:recent) [expr rand() * $_($target:spread) - [expr $_($target:spread) / 2.0] + $x] [expr rand() * $_($target:spread) - [expr $_($target:spread) / 2.0] + $y]} + default {ngrid_move $path $target $_($target:recent) $x $y}}} + + proc ngrid_move {path target n px py} { + variable _ + $path.ngrid coords sqr_$n [expr $px - $_($target:radius)] [expr $py - $_($target:radius)] [expr $px + $_($target:radius)] [expr $py + $_($target:radius)] + set h [winfo height $path.ngrid] + set w [winfo width $path.ngrid] + foreach xy {x y} { + if {[$path.ngrid find withtag name_${xy}_$n] ne ""} { + set l $_($target:box$n:$xy) + set name [lindex $l 0] + set min [lindex $l 1] + set max [lindex $l 2] + if {[expr $min == 0] && [expr $max == 0]} {set max $_($target:max)} + pd "$target.rp _cb [pdtk_enquote $name] [expr ($max - $min) * [set p$xy] / $w.0 + $min] \;"}}} + + proc ngrid_gridlines {path target ln lines} { + variable _ + puts "gridlines $ln $lines" + set w $path.ngrid + $w delete gridlines + set gh [winfo height $w] + set gw [winfo width $w] + for {set x 1} {$x <= $lines} {incr x} { + if {$lines < 16 && $lines > 0} { + set oh [expr $gh.0 * $x.0 / $lines.0] + set ow [expr $gw.0 * $x.0 / $lines.0] + $w create line $ow 0 $ow $gh -fill $ln -tags gridlines + $w create line 0 $oh $gw $oh -fill $ln -tags gridlines}}}} + +#> ngrid frame +#. -bd 3 #w 384 #h 144 #bg gray10 #ln gray35 #div 6 #n 3 +#. #move normal #spread 96 #radius 9 #max 1 +#. @list ::ix::ngrid_add .- .| {.#1} .#2 .#3 .#4 +#. @add ::ix::ngrid_add .- .| {.#1} .#2 .#3 .#4 +#. @pos ::ix::ngrid_find pos .- .| {.#1} .#2 +#. @setpos ::ix::ngrid_find setpos .- .| {.#1} .#2 +#. @delete ::ix::ngrid_find remove .- .| {.#1} 0 +#. @clear ::ix::ngrid_clear .- .| all +#. @radius ::ix::ngrid_vset .- .| radius .#1 +#. @spread ::ix::ngrid_vset .- .| spread .#1 +#. @move ::ix::ngrid_vset .- .| move .#1 +#. @max ::ix::ngrid_vset .- .| max .#1 +puts "ngrid .- .|" +::ix::ngrid_new .- .| .#w .#h .#bg .#ln .#div .#move .#spread .#radius .#max diff --git a/extensions/gui/ix/toxy/nob-demo.pd b/extensions/gui/ix/toxy/nob-demo.pd new file mode 100755 index 00000000..901001a8 --- /dev/null +++ b/extensions/gui/ix/toxy/nob-demo.pd @@ -0,0 +1,74 @@ +#N canvas 151 325 465 268 12; +#X floatatom 234 44 5 16 1024 0 - - -; +#X msg 234 62 #w \$1 \, #h \$1; +#X msg 14 209 #trans \$1; +#X floatatom 14 191 5 22 100 0 - - -; +#X obj 356 150 widget nob n2 #w 34 #h 35 #ca "#ff4a9c" #cb "#83f735" +#cc "#fff74a" #trans 100 #th 8 #bg "#446dfd" #cn "#83f735" #nx -30 +#ny -30 -bd 1; +#X obj 103 198 nbx 8 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 +-262144 -1 -1 31.6832 256; +#X obj 103 89 widget nob n1 #w 100 #h 100 #th 7 #cc purple #cb black +#ca red #trans 81 #bg orange #range 1 #cn yellow #ny 82 #nx 50 #max +0 #min 0 -bd 1; +#X msg 225 159 #range \$1; +#X msg 247 194 1; +#X msg 274 194 10000; +#X floatatom 234 6 5 1 50 0 - - -; +#X msg 234 21 #th \$1; +#X obj 338 18 tot .; +#X msg 338 0 query tk_chooseColor; +#X obj 333 36 makefilename "%s"; +#X obj 183 29 widget nob n3 #size #1 #w 30 #h 30 #ny 87 #nx 33 #th +8 #bg orange #cc green #trans 134; +#X floatatom 280 114 5 0 0 0 - - -; +#X msg 280 129 #ny \$1; +#X floatatom 183 11 5 0 0 0 - - -; +#X floatatom 183 62 5 0 0 0 - - -; +#X floatatom 280 81 5 0 0 0 - - -; +#X msg 280 96 #nx \$1; +#X msg 247 220 #max 1; +#X obj 8 -2 widget dm color #arrows 0 #items .(bg ca cb cc cn.); +#X obj 108 2 loadbang; +#X obj 37 -2 widget dm bg #arrows 0 #items .(green red purple blue +orange yellow black white pink.); +#X obj 41 53 prepend; +#X msg 108 21 bg; +#X obj 285 152 widget dm range #arrow 0 #items .(1 100 1000 0.1.) #arrows +0; +#X msg 292 220 #max 32 \, #min 16; +#X msg 247 240 #min 0 \, #max 0; +#X obj 7 29 makefilename #%s; +#X text 347 87 right = 1/10th; +#X text 347 76 middle = 10; +#X text 357 99 left = 1; +#X connect 0 0 1 0; +#X connect 1 0 6 0; +#X connect 2 0 6 0; +#X connect 3 0 2 0; +#X connect 6 0 5 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 6 0; +#X connect 10 0 11 0; +#X connect 11 0 6 0; +#X connect 12 0 14 0; +#X connect 13 0 12 0; +#X connect 14 0 26 0; +#X connect 15 0 19 0; +#X connect 16 0 17 0; +#X connect 17 0 6 0; +#X connect 18 0 15 0; +#X connect 19 0 6 0; +#X connect 20 0 21 0; +#X connect 21 0 6 0; +#X connect 22 0 6 0; +#X connect 23 0 31 0; +#X connect 24 0 27 0; +#X connect 25 0 26 0; +#X connect 26 0 6 0; +#X connect 27 0 31 0; +#X connect 28 0 7 0; +#X connect 29 0 6 0; +#X connect 30 0 6 0; +#X connect 31 0 26 1; diff --git a/extensions/gui/ix/toxy/nob.wid b/extensions/gui/ix/toxy/nob.wid new file mode 100755 index 00000000..9d256537 --- /dev/null +++ b/extensions/gui/ix/toxy/nob.wid @@ -0,0 +1,105 @@ +#console show +package require Tkzinc 3.3 +package require zincGraphics +namespace eval ::ix { + variable _ + proc nobfloat {path t num} { + variable _ + $path itemconfigure $t:num -text $num + pd [concat $t.rp _cb $num \;] + set _($t:num) $num + } + proc nob_mover {w t f x y} { + variable _ + if {$::ix::_($t:clickd) > 0} { + set move [expr (($x - $::ix::_($t:lx)) + (-1 * ($y - $::ix::_($t:ly)))) / ([winfo width $w].0 + [winfo height $w].0) * $f] + nob_move $w $t $move + } + set ::ix::_($t:clickd) 1 + set ::ix::_($t:lx) $x + set ::ix::_($t:ly) $y + } + proc nob_move {w t move} { + variable _ + set on [$w itemcget $t:num -text] + set no [expr $on + $_($t:range) * $move * 2] + if {$_($t:min) != $_($t:max)} { + if {$no > $_($t:max)} {set no $_($t:max);set move 0} + if {$no < $_($t:min)} {set no $_($t:min);set move 0} + } + nobfloat $w $t $no + foreach e {1 10 100} { + set a [expr [$w itemcget $t:nob$e -startangle] + int($move * $e * 90)] + $w itemconfigure $t:nob$e -startangle $a + set _($t:a$e) $a + } + } + + proc nob {path t w h range bg c1 c2 c3 cn trans th nx ny max min} { + variable _ + set _($t:lx) 32 + set _($t:clickd) -1 + set _($t:max) $max + set _($t:min) $min + if {$_($t:min) != $_($t:max)} { + set _($t:range) [expr abs($min - $max)] + } else { + set _($t:range) $range + } + if {[winfo exists $path.nob] != 1} { + zinc $path.nob -render 1 -width $w -height $h -borderwidth 1 -lightangle 140 -backcolor $bg + $path configure -width $w -height $h + place $path.nob -anchor nw -relwidth 1 -relheight 1 + $path.nob remove * + set i 0 + set colors [list $c1 $c2 $c3] + set ratios {1 10 0.1} + set edge 10 + $path.nob add rectangle 1 {1 1 8 4} -filled 1 -fillcolor "#555555" + $path.nob add rectangle 1 "1 $h 8 [expr $h - 5]" -filled 1 -fillcolor "#555555" + foreach e {1 10 100} { + $path.nob add arc 1 \ + "[expr $w / $edge / ($i + 1) + ($edge / 2)] [expr $h / $edge / ($i + 1) + ($edge / 2)] [expr $w - $w / $edge / ($i + 1) - ($edge / 2)] [expr $h - $h / $edge / ($i + 1) - ($edge / 2)]" \ + -closed 0 -filled 0 -extent [expr int(300 / $e)] -startangle 90 \ + -linecolor "[lindex $colors $i];$trans" \ + -linewidth [expr int($h / $th)] \ + -tags $t:nob$e + bind $path.nob \ + "::ix::nob_mover $path.nob $t [lindex $ratios $i] %x %y" + incr i + bind $path.nob "set ::ix::_($t:clickd) -1" + } + bind $path {::ix::nob_move %W.nob [winfo name %W] [expr %D / 2400.]} + bind $path {::ix::nob_move %W.nob [winfo name %W] [expr %D / 24000.]} + bind $path {::ix::nob_move %W.nob [winfo name %W] [expr %D / 240.]} + bind $path.nob "::ix::nob_mover $path.nob $t 10 %x %y" + bind $path.nob "::ix::nob_mover $path.nob $t 0.1 %x %y" + if {$nx == 0} { + set nx [expr $w / 2] + set ny [expr $h - 20] + } + $path.nob add text 1 -text "0.0" \ + -position "$nx $ny" -tags $t:num -color "$cn;$trans" + } + if {[info exists _($t:num)]} { + $path.nob itemconfigure $t:num -text $_($t:num) + foreach e {1 10 100} { + $path.nob itemconfigure $t:nob$e -startangle $_($t:a$e) + } + } else { + foreach e {1 10 100} {set _($t:a$e) 90} + set _($t:num) 0.0} + + } +} +#> nob frame +#. -height 128 -width 128 -bd 1 -bg "#cccccc" +#. -highlightbackground red +#. #max 0 #min 0 +#. #w 128 #h 128 #trans 70 #th 5 #range 100 #nx 0 #ny 0 +#. #bg purple #ca blue #cb yellow #cc green #cn orange +#. @float ::ix::nobfloat .-.nob .| .#1 +#. @cmd eval ".-.nob .#args" +bind .- {focus .-} +bind .- {focus .^.c} +::ix::nob .- .| .#w .#h .#range .#bg .#ca .#cb .#cc .#cn .#trans .#th .#nx .#ny .#max .#min diff --git a/extensions/gui/ix/toxy/q-demo.pd b/extensions/gui/ix/toxy/q-demo.pd new file mode 100755 index 00000000..492c538e --- /dev/null +++ b/extensions/gui/ix/toxy/q-demo.pd @@ -0,0 +1,90 @@ +#N canvas 46 0 792 949 12; +#X obj 20 352 widget q q1 -width 37 -height 56 -font .(Tahoma 8.) -bg +white -fg cyan; +#X obj 58 332 popen; +#X msg 58 313 grep \$1 wavs.d; +#X obj 56 276 widget dd d1 -width 30; +#X msg 16 313 clear; +#X obj 18 278 t s b; +#X obj 312 363 player w; +#X obj 353 242 loadbang; +#X msg 387 313 \; pd dsp 1; +#X floatatom 258 335 5 0 0 0 - - -; +#X obj 210 584 widget q lb2 -width 24 -height 26; +#X obj 17 56 widget q x0; +#X obj 148 56 widget q x1; +#X obj 278 57 widget q x2; +#X obj 408 57 widget q x3; +#X obj 537 57 widget q x5; +#X obj 19 32 pool w; +#X msg 19 11 chdir \, getsub; +#X obj 280 238 l2s; +#X msg 306 260 symbol /; +#X obj 19 210 ndx; +#X obj 670 57 widget q q5; +#X msg 384 352 load wavs.dat; +#X obj 280 211 ndx; +#X obj 150 210 ndx; +#X obj 411 211 ndx; +#X obj 539 211 ndx; +#X obj 672 211 ndx; +#X text 54 263 search; +#X text 220 564 <-right click starts drag; +#X obj 310 409 widget q -bg -fg white -width 41 -bg black; +#X obj 212 409 widget q -width -bg "#2f3351" -fg "#ff8617" -width 16 +; +#X msg 151 296 clear; +#X msg 102 259 bang; +#X obj 348 382 outlet~; +#X obj 394 382 outlet~; +#X msg 222 352 next; +#X msg 222 334 prev; +#X msg 263 362 stop; +#X connect 0 0 6 1; +#X connect 1 0 0 0; +#X connect 2 0 1 0; +#X connect 3 0 5 0; +#X connect 4 0 0 0; +#X connect 5 0 2 0; +#X connect 5 1 4 0; +#X connect 6 2 30 0; +#X connect 6 3 31 0; +#X connect 6 4 36 0; +#X connect 6 5 34 0; +#X connect 6 6 35 0; +#X connect 7 0 8 0; +#X connect 7 0 19 0; +#X connect 7 0 22 0; +#X connect 9 0 0 0; +#X connect 11 0 20 1; +#X connect 12 0 24 1; +#X connect 13 0 23 1; +#X connect 14 0 25 1; +#X connect 15 0 26 1; +#X connect 16 1 11 0; +#X connect 17 0 16 0; +#X connect 18 0 6 1; +#X connect 19 0 18 1; +#X connect 20 0 18 0; +#X connect 20 0 24 0; +#X connect 20 1 12 0; +#X connect 21 0 27 1; +#X connect 22 0 6 2; +#X connect 23 0 18 0; +#X connect 23 0 25 0; +#X connect 23 1 14 0; +#X connect 24 0 18 0; +#X connect 24 0 23 0; +#X connect 24 1 13 0; +#X connect 25 0 18 0; +#X connect 25 0 26 0; +#X connect 25 1 15 0; +#X connect 26 0 18 0; +#X connect 26 0 27 0; +#X connect 26 1 21 0; +#X connect 27 0 18 0; +#X connect 32 0 3 0; +#X connect 33 0 3 0; +#X connect 36 0 0 0; +#X connect 37 0 0 0; +#X connect 38 0 6 0; diff --git a/extensions/gui/ix/toxy/q.wid b/extensions/gui/ix/toxy/q.wid new file mode 100755 index 00000000..8a971c6e --- /dev/null +++ b/extensions/gui/ix/toxy/q.wid @@ -0,0 +1,84 @@ +#console show +package require tkdnd +namespace eval ::ix { + proc qo {p t e} { + set s [$p get $e] + if {$s ne ""} { + pd [concat $t.rp _cb symbol [pdtk_enquote $s] \;] + } else {pd [concat $t.rp _cb bang \;]} + } + proc qi {p t i} { + $p selection clear 0 end + $p selection set $i + qo $p $t $i + } + proc q_go {p t d} { + array set direction "next 1 prev -1" + array set edge "next end prev 0" + set cs [$p curselection] + if {$cs eq "" && [$p index end] != 0} { + set go 0 } else { + set go [expr $direction($d) + [lindex $cs $edge($d)]]} + if {$go >= [$p index end]} {set go 0} + if {$go < 0} {set go [expr [$p index end] - 1]} + qi $p $t $go + } +} +#> q listbox +#. -selectmode extended -font {{Bitstream Vera Sans} 8} -exportselection 0 +#. -relief flat -borderwidth 0 -selectborderwidth 0 -bg "#ccffcc" -fg black +#. @list foreach x [list .#args] {.- insert end $x} +#. @add .- insert end [join [lrange [list .#args] 0 end] " "] +#. @scroll .- yview scroll .#1 units +#. @symbol .- insert end {.#1} +#. @float ::ix::qi .- .| .#1 +#. @clear .- delete 0 end +#. @next ::ix::q_go .- .| next +#. @prev ::ix::q_go .- .| prev +#. @cmd eval ".- .#args" +bind .- {focus .-} +bind .- {focus .^.c} +bind .- <4> { pd [concat .|.rp _cb scroll -5 \;]} +bind .- <5> { pd [concat .|.rp _cb scroll 5 \;]} +bind .- {.- xview scroll [expr {- (%D / 120) * 4}] units} +bind .- {} +bind .- {dnd drag %W} +dnd bindtarget .- text/plain { + foreach l [split %D "\n"] {.- insert end [regsub -- {^file:[/]+} $l "/"]} +} +dnd bindtarget .- text/uri-list {foreach d %D {.- insert end [regsub -- {^file:[/]+} $d "/"]}} +dnd bindsource .- text/uri-list { + set sel [.- curselection] + if {$sel ne ""} { + set dd {} + foreach el $sel { + lappend dd [.- get $el] + } + return $dd + } +} +bind .- <> { + set sel [.- curselection] + if {$sel ne ""} { + ::ix::qo .- .| [lindex $sel end] +# foreach el $sel { +# ::ix::qo .- .| $el +# } + } +} +bind .- <> { + set sel [.- curselection] + if {$sel ne ""} { + for {set i [expr [llength $sel] - 1]} {0 <= $i} {incr i -1} { + .- delete [lindex $sel $i] + } + } +} +bind .- <> { + .- selection set 0 end +} +event add <> +event add <> +event add <> +event add <> +puts "q .- .|" diff --git a/extensions/gui/ix/toxy/sp-demo.pd b/extensions/gui/ix/toxy/sp-demo.pd new file mode 100755 index 00000000..28bd5464 --- /dev/null +++ b/extensions/gui/ix/toxy/sp-demo.pd @@ -0,0 +1,325 @@ +#N canvas 387 298 580 364 10; +#X obj 40 102 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 +; +#X obj -196 21 loadbang; +#X obj -196 111 until; +#X obj -299 225 textfile; +#X obj -299 207 prepend add2; +#X msg -307 171 clear; +#X msg -307 171 bang; +#X obj -299 243 prepend draw; +#X obj -307 153 t b b b; +#X obj -196 129 f 512; +#X obj -196 147 mod 512; +#X obj -196 147 - 1; +#X obj -176 75 samplerate~; +#X obj -251 71 * 1000; +#X obj -196 75 /; +#X obj -273 89 metro 46; +#X msg -77 218 img configure -height \$1 \, -height \$1; +#X obj -196 93 i 512; +#X obj 63 33 hsl 128 15 0 1000 0 1 empty empty hue -2 -6 0 8 -1 -262144 +-1 6200 1; +#X obj -149 200 exp; +#X obj 42 32 tgl 15 1 empty empty empty 0 -6 0 8 -99865 -195568 -1 +1 1; +#X obj -174 165 demux; +#X obj -129 182 log; +#X obj -149 182 *; +#X obj -129 164 t f f; +#X obj -129 200 /; +#X msg -248 129 -1; +#X msg -225 129 1; +#X obj 197 33 hsl 128 15 30 300 0 1 empty empty gain -2 -6 0 8 -262144 +-1 -1 4200 1; +#X obj -129 254 +; +#X obj 59 49 widget sp sp1 -height 303; +#X obj -162 236 sqrt; +#X obj -157 272 mod 1000; +#X obj -157 290 demux; +#X obj 42 50 tgl 15 1 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 +; +#X obj -129 326 abs; +#X obj -129 308 - 1000; +#X obj -129 236 * 110; +#X msg -196 39 512; +#X obj -147 129 i; +#X obj -196 57 t f b; +#X obj 3 75 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10 -262144 +-1 -1 303 256; +#X obj -322 17 mp3amp~; +#X msg -271 -1 disconnect; +#X msg -209 -1 connecturl live365.com:80/play/wfmu1; +#X obj 61 -5 widget dd d1 #width 25 -width 73; +#X obj -271 37 readsf~ 2; +#X msg -271 17 open \$1 \, 1; +#X obj -329 55 dac~; +#X text 6 30 log/lin; +#X text 11 100 start; +#X text 2 52 palette; +#X text 3 44 inverse; +#N canvas 845 38 435 259 1000sp 0; +#X obj 96 113 inlet; +#X obj 12 -13 inlet~; +#X obj 11 68 rfft~; +#X obj 5 103 *~; +#X obj 12 135 sqrt~; +#X obj 32 103 *~; +#X obj 94 27 loadbang; +#X obj 94 48 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 +; +#X obj 105 65 prepend set; +#X obj 122 47 pack 1 1 1; +#X obj 166 21 inlet; +#X obj 95 83 switch~ 512 1 1; +#X obj 247 1 table \$0sp 512; +#X obj 11 166 tabwrite~ \$0sp; +#X obj 36 9 tabreceive~ \$0w; +#X obj 338 1 table \$0w; +#X msg 310 112 0; +#X obj 267 130 osc~; +#X obj 267 83 samplerate~; +#X obj 267 107 / 256; +#X obj 267 152 *~ -0.5; +#X obj 267 174 +~ 0.5; +#X obj 253 41 loadbang; +#X obj 23 31 *~; +#X obj 252 203 tabwrite~ \$0w; +#X obj 338 25 pack f \$0; +#X msg 338 43 \; \$2w resize \$1; +#X obj 193 45 t b f; +#X msg 253 63 bang; +#X obj 338 101 pack f \$0; +#X msg 338 119 \; \$2sp resize \$1; +#X obj 338 83 / 2; +#X connect 0 0 13 0; +#X connect 1 0 23 0; +#X connect 2 0 3 1; +#X connect 2 0 3 0; +#X connect 2 1 5 1; +#X connect 2 1 5 0; +#X connect 3 0 4 0; +#X connect 4 0 13 0; +#X connect 5 0 4 0; +#X connect 6 0 7 0; +#X connect 7 0 11 0; +#X connect 8 0 11 0; +#X connect 9 0 8 0; +#X connect 10 0 9 0; +#X connect 10 0 27 0; +#X connect 14 0 23 1; +#X connect 16 0 17 1; +#X connect 17 0 20 0; +#X connect 18 0 19 0; +#X connect 19 0 17 0; +#X connect 20 0 21 0; +#X connect 21 0 24 0; +#X connect 22 0 28 0; +#X connect 23 0 2 0; +#X connect 25 0 26 0; +#X connect 27 0 28 0; +#X connect 27 1 19 1; +#X connect 27 1 25 0; +#X connect 27 1 31 0; +#X connect 28 0 16 0; +#X connect 28 0 18 0; +#X connect 28 0 24 0; +#X connect 29 0 30 0; +#X connect 31 0 29 0; +#X restore -285 112 pd \$0sp; +#X obj -162 218 tabread4 \$0sp; +#X msg -170 39 1024; +#X obj -157 343 * 0.255; +#N canvas 0 0 356 499 hsv2rgb 0; +#X obj 152 455 sprintf symbol #%02x%02x%02x; +#X obj 41 14 inlet; +#X obj 153 471 outlet; +#X obj 53 75 / 42.5; +#X obj 18 55 t f f; +#X obj 31 33 unpack f f f; +#X obj 16 85 / 42.5; +#X obj 23 115 -; +#X obj 56 97 i; +#X obj 115 78 / 255; +#X obj 96 112 *; +#X obj 70 143 *; +#X text 14 39 h; +#X text 58 46 s; +#X text 88 42 v; +#X text 75 102 i; +#X text 16 120 f; +#X text 145 83 vf; +#X text 115 117 vs; +#X text 90 148 vsf; +#X text 147 185 p; +#X text 73 225 q; +#X text 132 212 t; +#X obj 122 139 t b f; +#X obj 124 162 f; +#X obj 126 183 -; +#X obj 52 192 f; +#X obj 52 169 t b f; +#X obj 54 220 -; +#X obj 112 207 +; +#X obj 131 272 f; +#X obj 162 271 f; +#X obj 197 272 f; +#X obj 231 271 f; +#X text 250 277 v; +#X text 218 275 p; +#X text 146 279 t; +#X text 182 278 q; +#X obj 92 278 i; +#X obj 214 293 prepend add2; +#X msg 193 321 96.8999 0 255; +#X obj 77 325 t b b b; +#X obj 79 252 t b b f b; +#X msg 191 295 set; +#X obj 90 345 t b b b; +#X obj 116 367 t b b b; +#X obj 138 387 t b b b; +#X obj 153 414 t b b b; +#X obj 167 435 t b b b; +#X obj 79 300 route 1 2 3 4 5; +#X connect 0 0 2 0; +#X connect 1 0 5 0; +#X connect 3 0 8 0; +#X connect 4 0 6 0; +#X connect 4 1 3 0; +#X connect 5 0 4 0; +#X connect 5 1 10 0; +#X connect 5 2 9 0; +#X connect 5 2 24 1; +#X connect 5 2 26 1; +#X connect 5 2 33 1; +#X connect 6 0 7 0; +#X connect 7 0 11 0; +#X connect 8 0 7 1; +#X connect 8 0 38 1; +#X connect 9 0 10 1; +#X connect 10 0 11 1; +#X connect 10 0 23 0; +#X connect 11 0 27 0; +#X connect 23 0 24 0; +#X connect 23 1 25 1; +#X connect 24 0 25 0; +#X connect 25 0 29 1; +#X connect 25 0 32 1; +#X connect 26 0 28 0; +#X connect 27 0 26 0; +#X connect 27 1 28 1; +#X connect 27 1 29 0; +#X connect 28 0 42 0; +#X connect 29 0 30 1; +#X connect 30 0 39 0; +#X connect 31 0 39 0; +#X connect 32 0 39 0; +#X connect 33 0 39 0; +#X connect 38 0 49 0; +#X connect 39 0 40 0; +#X connect 40 0 0 0; +#X connect 41 0 32 0; +#X connect 41 1 33 0; +#X connect 41 2 31 0; +#X connect 42 0 40 0; +#X connect 42 1 38 0; +#X connect 42 2 31 1; +#X connect 42 3 43 0; +#X connect 43 0 40 0; +#X connect 44 0 30 0; +#X connect 44 1 33 0; +#X connect 44 2 32 0; +#X connect 45 0 33 0; +#X connect 45 1 31 0; +#X connect 45 2 32 0; +#X connect 46 0 33 0; +#X connect 46 1 32 0; +#X connect 46 2 30 0; +#X connect 47 0 31 0; +#X connect 47 1 32 0; +#X connect 47 2 33 0; +#X connect 48 0 32 0; +#X connect 48 1 30 0; +#X connect 48 2 33 0; +#X connect 49 0 41 0; +#X connect 49 1 44 0; +#X connect 49 2 45 0; +#X connect 49 3 46 0; +#X connect 49 4 47 0; +#X connect 49 5 48 0; +#X restore -268 186 pd hsv2rgb; +#X obj -313 74 adc~; +#X obj -268 167 pack 0 255 255; +#X connect 0 0 15 0; +#X connect 1 0 38 0; +#X connect 2 0 9 0; +#X connect 3 0 7 0; +#X connect 4 0 3 0; +#X connect 5 0 3 0; +#X connect 6 0 3 0; +#X connect 7 0 30 0; +#X connect 8 0 6 0; +#X connect 8 1 17 0; +#X connect 8 2 5 0; +#X connect 9 0 11 0; +#X connect 10 0 9 1; +#X connect 10 0 21 0; +#X connect 11 0 10 0; +#X connect 12 0 14 1; +#X connect 13 0 15 1; +#X connect 14 0 13 0; +#X connect 15 0 53 1; +#X connect 15 0 8 0; +#X connect 16 0 30 0; +#X connect 17 0 2 0; +#X connect 18 0 29 1; +#X connect 19 0 54 0; +#X connect 20 0 21 1; +#X connect 21 0 54 0; +#X connect 21 1 23 0; +#X connect 22 0 25 0; +#X connect 23 0 19 0; +#X connect 24 0 22 0; +#X connect 24 1 25 1; +#X connect 25 0 23 1; +#X connect 26 0 11 1; +#X connect 27 0 11 1; +#X connect 28 0 37 1; +#X connect 29 0 32 0; +#X connect 31 0 37 0; +#X connect 32 0 33 0; +#X connect 33 0 56 0; +#X connect 33 1 36 0; +#X connect 34 0 33 1; +#X connect 35 0 56 0; +#X connect 36 0 35 0; +#X connect 37 0 29 0; +#X connect 38 0 40 0; +#X connect 39 0 10 1; +#X connect 39 0 9 1; +#X connect 39 0 16 0; +#X connect 39 0 17 1; +#X connect 39 0 24 0; +#X connect 40 0 14 0; +#X connect 40 0 53 2; +#X connect 40 1 12 0; +#X connect 41 0 39 0; +#X connect 42 0 48 0; +#X connect 42 0 53 0; +#X connect 42 1 48 1; +#X connect 42 1 53 0; +#X connect 43 0 42 0; +#X connect 44 0 42 0; +#X connect 45 0 47 0; +#X connect 46 0 48 0; +#X connect 46 0 53 0; +#X connect 46 1 48 1; +#X connect 46 1 53 0; +#X connect 47 0 46 0; +#X connect 54 0 31 0; +#X connect 55 0 40 0; +#X connect 56 0 59 0; +#X connect 57 0 4 0; +#X connect 58 0 53 0; +#X connect 59 0 57 0; +#X coords 0 0 2.71716e-06 4.15856e-06 535 500 0; diff --git a/extensions/gui/ix/toxy/sp.wid b/extensions/gui/ix/toxy/sp.wid new file mode 100755 index 00000000..2b41902f --- /dev/null +++ b/extensions/gui/ix/toxy/sp.wid @@ -0,0 +1,36 @@ +#console show +namespace eval ::ix { + variable _ + proc sp {p t} { + variable _ + image create photo $t + $p configure -image $t + set _($t:loc) 0 + } + proc spl {t args} { + variable _ + incr _($t:loc) + if {$_($t:loc) > 511} {set _($t:loc) 0} + set draw {} + foreach pixel $args { + set pixel [expr int($pixel)] + lappend draw [format #%02x%02x%02x $pixel $pixel $pixel] + } + $t put $draw -to $_($t:loc) 0 + } + proc spd {t args} { + variable _ + incr _($t:loc) + if {$_($t:loc) > 511} {set _($t:loc) 0} + $t put $args -to $_($t:loc) 0 + } +} +#> sp label +#. @list ::ix::spl .| .#args +#. @draw ::ix::spd .| .#args +#. @clear .- delete 0 end +#. @img eval ".| .#args" +#. @cmd eval ".- .#args" +bind .- {.| put #eeeeee -to %x %y} +::ix::sp .- .| +puts "setup" \ No newline at end of file diff --git a/extensions/gui/ix/toxy/spectrum-demo.pd b/extensions/gui/ix/toxy/spectrum-demo.pd new file mode 100755 index 00000000..98c5a385 --- /dev/null +++ b/extensions/gui/ix/toxy/spectrum-demo.pd @@ -0,0 +1,171 @@ +#N canvas 62 98 623 209 10; +#X obj -28 29 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 +; +#X obj -115 21 loadbang; +#X obj -95 69 samplerate~; +#X obj -115 85 * 1000; +#X obj -115 69 /; +#X obj -115 101 metro 46; +#X obj 86 29 tgl 15 1 \$0loglin empty empty 0 -6 0 8 -99865 -195568 +-1 0 1; +#X obj 112 30 hsl 128 15 1 100 0 1 \$0gain empty empty -2 -6 0 8 -262144 +-1 -1 3500 1; +#X obj -28 46 widget spectrum sp1 #ca "#ffff4c" #cb "#0ebcd8" #tb 57 +#w 480 #h 160 -height 269; +#X obj -115 53 t f b; +#X text 57 30 log/lin; +#N canvas 755 38 493 259 1000sp 0; +#X obj 96 113 inlet; +#X obj 12 -13 inlet~; +#X obj 11 68 rfft~; +#X obj 5 103 *~; +#X obj 12 135 sqrt~; +#X obj 32 103 *~; +#X obj 94 27 loadbang; +#X obj 94 48 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 +; +#X obj 105 65 prepend set; +#X obj 122 47 pack 1 1 1; +#X obj 166 21 inlet; +#X obj 95 83 switch~ 512 1 1; +#X obj 36 9 tabreceive~ \$0w; +#X obj 338 1 table \$0w; +#X msg 310 112 0; +#X obj 267 130 osc~; +#X obj 267 83 samplerate~; +#X obj 267 107 / 256; +#X obj 267 152 *~ -0.5; +#X obj 267 174 +~ 0.5; +#X obj 253 41 loadbang; +#X obj 16 32 *~; +#X obj 252 203 tabwrite~ \$0w; +#X obj 338 25 pack f \$0; +#X msg 338 43 \; \$2w resize \$1; +#X obj 193 45 t b f; +#X msg 253 63 bang; +#X obj 338 101 pack f \$0; +#X obj 338 83 / 2; +#X obj 51 -14 inlet~; +#X obj 53 68 rfft~; +#X obj 47 103 *~; +#X obj 54 135 sqrt~; +#X obj 74 103 *~; +#X obj 58 32 *~; +#X obj 94 166 tabwrite~ \$0sp1; +#X obj 11 166 tabwrite~ \$0sp0; +#X msg 338 119 \; \$2sp0 resize \$1 \; \$2sp1 resize \$1; +#X obj 247 1 table \$0sp0 512; +#X obj 247 17 table \$0sp1 512; +#X connect 0 0 36 0; +#X connect 0 0 35 0; +#X connect 1 0 21 0; +#X connect 2 0 3 1; +#X connect 2 0 3 0; +#X connect 2 1 5 1; +#X connect 2 1 5 0; +#X connect 3 0 4 0; +#X connect 4 0 36 0; +#X connect 5 0 4 0; +#X connect 6 0 7 0; +#X connect 7 0 11 0; +#X connect 8 0 11 0; +#X connect 9 0 8 0; +#X connect 10 0 9 0; +#X connect 10 0 25 0; +#X connect 12 0 21 1; +#X connect 12 0 34 1; +#X connect 14 0 15 1; +#X connect 15 0 18 0; +#X connect 16 0 17 0; +#X connect 17 0 15 0; +#X connect 18 0 19 0; +#X connect 19 0 22 0; +#X connect 20 0 26 0; +#X connect 21 0 2 0; +#X connect 23 0 24 0; +#X connect 25 0 26 0; +#X connect 25 1 17 1; +#X connect 25 1 23 0; +#X connect 25 1 28 0; +#X connect 26 0 14 0; +#X connect 26 0 16 0; +#X connect 26 0 22 0; +#X connect 27 0 37 0; +#X connect 28 0 27 0; +#X connect 29 0 34 0; +#X connect 30 0 31 1; +#X connect 30 0 31 0; +#X connect 30 1 33 1; +#X connect 30 1 33 0; +#X connect 31 0 32 0; +#X connect 32 0 35 0; +#X connect 33 0 32 0; +#X connect 34 0 30 0; +#X restore -144 155 pd \$0sp; +#X msg -115 37 2048; +#X text -10 31 power; +#X obj -145 76 adc~; +#X msg 289 30 #ca \$1; +#X obj 358 30 tot .; +#X msg 353 15 query tk_chooseColor; +#X obj 387 31 makefilename "%s"; +#X obj 289 14 demux; +#X obj 338 15 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 +; +#X msg 323 30 #cb \$1; +#X floatatom 258 17 5 33 100 0 - - -; +#X msg 249 30 #tb \$1; +#X floatatom 7 1 5 30 500 0 - - -; +#X floatatom -20 1 5 64 640 0 - - -; +#X msg 94 15 #w \$1; +#X obj 22 14 spr \$0 \$0sp1 2; +#X msg 125 15 #h \$1; +#X obj -50 14 spr \$0 \$0sp0 1; +#X msg -115 5 480; +#X msg -92 5 160; +#X obj -132 132 biquad~; +#X obj -103 135 notch 4000 42; +#X obj -139 118 hsl 106 15 0 10000 0 0 empty empty empty -2 -6 0 8 +-262144 -1 -1 8600 1; +#X connect 0 0 5 0; +#X connect 1 0 12 0; +#X connect 1 0 30 0; +#X connect 1 0 31 0; +#X connect 2 0 4 1; +#X connect 3 0 5 1; +#X connect 4 0 3 0; +#X connect 5 0 11 2; +#X connect 5 0 27 0; +#X connect 5 0 29 0; +#X connect 9 0 4 0; +#X connect 9 0 11 3; +#X connect 9 1 2 0; +#X connect 12 0 9 0; +#X connect 14 0 11 0; +#X connect 14 1 32 0; +#X connect 15 0 8 0; +#X connect 16 0 18 0; +#X connect 17 0 16 0; +#X connect 18 0 19 0; +#X connect 19 0 15 0; +#X connect 19 1 21 0; +#X connect 20 0 19 1; +#X connect 21 0 8 0; +#X connect 22 0 23 0; +#X connect 23 0 8 0; +#X connect 24 0 28 0; +#X connect 24 0 29 2; +#X connect 24 0 27 2; +#X connect 25 0 26 0; +#X connect 25 0 27 1; +#X connect 25 0 29 1; +#X connect 26 0 8 0; +#X connect 27 0 8 0; +#X connect 28 0 8 0; +#X connect 29 0 8 0; +#X connect 30 0 25 0; +#X connect 31 0 24 0; +#X connect 32 0 11 1; +#X connect 33 0 32 0; +#X connect 34 0 33 0; +#X coords 0 0 2.71716e-06 4.15856e-06 535 500 0; diff --git a/extensions/gui/ix/toxy/spectrum.wid b/extensions/gui/ix/toxy/spectrum.wid new file mode 100755 index 00000000..e42af026 --- /dev/null +++ b/extensions/gui/ix/toxy/spectrum.wid @@ -0,0 +1,42 @@ +#console show +package require Tkzinc 3.3 +package require zincGraphics +namespace eval ::ix { + variable _ + proc spectrum_sub {t sub} { + variable _ + set _($t:use) $sub + } + proc spectrum_floats {path t w h args} { + variable _ + set coords "0 $h" + set i 0 + foreach num $args { + incr i + lappend coords $i $num + } + lappend coords $w $h + $path coords $t:sub$_($t:use) $coords + + } + proc spectrum {path t w h bg c1 c2 t1 t2} { + if {[winfo exists $path.nob] != 1} { + zinc $path.nob -render 1 -width $w -height $h -borderwidth 1 -lightangle 140 -backcolor $bg + $path configure -width $w -height $h + place $path.nob -anchor nw -relwidth 1 -relheight 1 + $path.nob remove * + $path.nob add curve 1 {1 1 8 4} -filled 1 -linewidth 0 -fillcolor "$c1;$t1" -closed 1 -tags $t:sub1 + $path.nob add curve 1 {1 1 8 4} -filled 1 -linewidth 0 -fillcolor "$c2;$t2" -closed 1 -tags $t:sub2 + } + } +} +#> spectrum frame +#. -height 160 -width 480 -bd 1 -bg "#cccccc" +#. #h 160 #w 480 #bg gray20 #ca yellow #cb red #ta 100 #tb 50 +#. @list ::ix::spectrum_floats .-.nob .| .#w .#h .#args +#. @use ::ix::spectrum_sub .| .#1 +#. @cmd eval ".-.nob .#args" +bind .- {focus .-} +bind .- {focus .^.c} +::ix::spectrum .- .| .#w .#h .#bg .#ca .#cb .#ta .#tb +puts "spectrum .- .|" diff --git a/extensions/gui/ix/toxy/tile-demo.pd b/extensions/gui/ix/toxy/tile-demo.pd new file mode 100755 index 00000000..4e7c845b --- /dev/null +++ b/extensions/gui/ix/toxy/tile-demo.pd @@ -0,0 +1,74 @@ +#N canvas 265 374 607 366 12; +#X obj 135 73 widget tile t1 #e non -colwidth -13 -rows 12 -cols 16 +-width 16 -height 12 -rowheight -13 -bd 1 -bg red; +#X msg 80 87 redefine; +#X msg 198 53 clr; +#X msg 100 54 #e \$1; +#X obj 137 46 widget dm #items #items .(rows columns non.) #arrows +0 -bg pink; +#X floatatom 428 3 2 0 64 0 - - -; +#X floatatom 271 14 5 0 0 0 - - -; +#X floatatom 271 -2 5 0 0 0 - - -; +#X obj 459 9 * -1; +#X msg 419 27 -colwidth \$1 \, -rowheight \$1; +#X msg 271 30 -cols \$1 \, -width \$1 \, clr; +#X msg 270 49 -rows \$1 \, -height \$1 \, clr; +#X obj 199 -10 bng 55 250 50 0 empty empty empty 0 -6 0 8 -241291 -1 +-1; +#X obj 441 277 osc~ 440; +#X obj 462 165 mtof; +#X obj 499 297 line~; +#X obj 465 325 dac~ 1 2; +#X obj 466 302 *~; +#X obj 462 106 - 12; +#X obj 462 125 abs; +#X obj 422 78 unpack f f f; +#X obj 436 188 pack 0 0 0; +#X obj 440 254 pipe 0 0 1000; +#X obj 422 100 * 100; +#X msg 438 210 \$2 \$3 \$1; +#X obj 438 231 unpack f f f; +#X obj 462 144 + 48; +#X obj 495 154 * 0.25; +#X msg 538 277 0 2; +#X obj 540 258 del 98; +#X msg 503 276 \$1 2; +#X obj 540 236 t b; +#X connect 0 0 20 0; +#X connect 1 0 0 0; +#X connect 2 0 0 0; +#X connect 3 0 0 0; +#X connect 4 0 3 0; +#X connect 5 0 8 0; +#X connect 6 0 10 0; +#X connect 7 0 11 0; +#X connect 8 0 9 0; +#X connect 9 0 0 0; +#X connect 10 0 0 0; +#X connect 11 0 0 0; +#X connect 12 0 0 0; +#X connect 13 0 17 0; +#X connect 14 0 21 1; +#X connect 15 0 17 1; +#X connect 17 0 16 0; +#X connect 17 0 16 1; +#X connect 18 0 19 0; +#X connect 19 0 26 0; +#X connect 20 0 23 0; +#X connect 20 1 18 0; +#X connect 20 2 27 0; +#X connect 21 0 24 0; +#X connect 22 0 13 0; +#X connect 22 1 31 0; +#X connect 22 1 30 0; +#X connect 23 0 21 0; +#X connect 24 0 25 0; +#X connect 25 0 22 0; +#X connect 25 1 22 1; +#X connect 25 2 22 2; +#X connect 26 0 14 0; +#X connect 27 0 21 2; +#X connect 28 0 15 0; +#X connect 29 0 28 0; +#X connect 30 0 15 0; +#X connect 31 0 29 0; diff --git a/extensions/gui/ix/toxy/tile.wid b/extensions/gui/ix/toxy/tile.wid new file mode 100755 index 00000000..5bf3cecd --- /dev/null +++ b/extensions/gui/ix/toxy/tile.wid @@ -0,0 +1,87 @@ +#console show +package require Tktable +namespace eval ::ix { + variable _ + proc tile {t tg bg fg ac sb sf e} { + variable _ + $t tag configure active -bg $ac + $t tag configure OFF -bg $bg -relief ridge + $t tag configure ON -bg $fg -relief sunken + $t tag configure sel -bg $sb -fg $sf -relief flat + if {$e eq "columns"} { + bind $t { + %W selection clear all + set sel [%W index @%x,%y row] + %W selection set $sel,0 $sel,[%W cget -cols] + } + } elseif {$e eq "rows"} { + bind $t { + %W selection clear all + set sel [%W index @%x,%y col] + %W selection set 0,$sel [%W cget -rows],$sel + } + } else { + bind $t { + %W selection clear all + %W selection set @%x,%y + } + } + set _($t:e) $e + bind $t {%W selection clear all} + bind $t <2> {%W configure -state [if {[%W cget -state] eq "normal"} {list disabled} {list normal}]} + bind $t <3> {::ix::tile_clk %W %x %y OFF} + bind $t <1> {::ix::tile_clk %W %x %y ON} + bind $t [bind $t <3>] + bind $t [bind $t <1>] + + tile_clr $t + } + proc tile_dump {t id} { + puts "$t $id" + for {set c 0} {$c < [$t cget -cols]} {incr c} { + for {set r 0} {$r < [$t cget -rows]} {incr r} { + if {[$t tag includes ON $r,$c] == 1} { + pd [concat $id.rp _cb $c $r 1\;] + } + } + } + } + proc tile_clk {t x y v} { + variable _ + if {[$t cget -state] eq "disabled"} { + switch $_($t:e) { + rows { + for {set row 0} {$row < [$t cget -rows]} {incr row} { + $t tag celltag OFF $row,[$t index @$x,$y col] + } + } + columns { + for {set col 0} {$col < [$t cget -cols]} {incr col} { + $t tag celltag OFF [$t index @$x,$y row],$col + } + } + } + $t tag celltag $v [$t index @$x,$y] + } + } + proc tile_clr {t} { + for {set i 0} {$i < [$t cget -rows]} {incr i} { + for {set j 0} {$j < [$t cget -cols]} {incr j} { + $t tag celltag OFF $i,$j + } + } + } + +} +#> tile table +#. -rows 8 -cols 16 -resizeborders none -fg blue +#. -borderwidth 2 -titlerows 0 -titlecols 0 -roworigin 0 -colorigin 0 -colwidth 4 +#. -width 16 -height 8 -variable tab -flashmode off -font {Tahoma 8} +#. #bg "#a4e75a" #fg "#fefdff" #cb yellow #ac yellow #sb "#aaff88" #sf green +#. #e none +#. @bang ::ix::tile_dump .- .| +#. @clear ::ix::tile_clr .- +#. @clr ::ix::tile_clr .- + +::ix::tile .- .| .#bg .#fg .#ac .#sb .#sf .#e +puts "tile .- .|" diff --git a/extensions/gui/ix/toxy/tree-demo.pd b/extensions/gui/ix/toxy/tree-demo.pd new file mode 100755 index 00000000..cdfa6fec --- /dev/null +++ b/extensions/gui/ix/toxy/tree-demo.pd @@ -0,0 +1,184 @@ +#N canvas 402 155 495 621 10; +#X obj 36 131 widget tree t1 -height 300 -selectmode single -width +205 -bd 2 -border 1 -font .(verdana 8.) -bg yellow -fg blue; +#X obj 215 16 tow . tree t1; +#X msg 13 8 0 juice; +#X msg 21 24 1 coffee; +#X msg 32 41 2 apples; +#X msg 43 58 3 plantains; +#X msg 27 74 2 arugula; +#X msg 22 90 1 byte; +#X obj 251 117 bng 15 250 50 0 empty empty empty 0 -6 0 8 -260818 -1 +-1; +#X msg 107 101 clear; +#X msg 178 113 path \$1; +#X msg 178 93 auto \$1; +#X obj 224 78 tgl 15 0 empty empty empty 0 -6 0 8 -225271 -1 -1 0 1 +; +#X obj 225 98 tgl 15 0 empty empty empty 0 -6 0 8 -225280 -1 -1 0 1 +; +#X obj 266 168 widget dd dt -bg gray -fg pink; +#X obj 11 113 prepend add; +#X msg 171 0 cmd collapse -recurse all \, cmd expand 0; +#X msg 255 -16 cmd expand all; +#X obj 17 -10 t b b b b b; +#X msg 80 -23 16; +#X obj 81 -8 until; +#X obj 78 9 random 6; +#X obj 73 24 route 0 1 2 3 4 5; +#X obj 24 -47 bng 31 250 50 0 empty empty empty 0 -6 0 8 -193787 -1 +-1; +#X obj 56 -48 bng 27 250 50 0 empty empty empty 0 -6 0 8 -258699 -1 +-1; +#X obj 146 453 s2l /; +#X msg 240 453 resynth \; supatrigga \;; +#X msg 215 473 set; +#X msg 201 453 add \$1; +#X obj 176 453 drip; +#X symbolatom 40 492 39 0 0 0 - - -; +#X obj 96 453 l2s; +#X obj 116 453 t s b; +#N canvas 17 433 316 238 pooledit 1; +#X obj 18 50 prepend mkchdir; +#X obj 18 9 inlet; +#X obj 28 66 prepend rmdir; +#X obj 168 173 outlet; +#X obj 89 103 l2s; +#X obj 48 82 niagara 1; +#X obj 61 139 glue; +#X obj 89 123 s2l /; +#X obj 48 101 a2l; +#X obj 61 158 route list; +#X obj 61 174 pool tt; +#X obj 197 66 prepend chdir; +#X obj 18 26 route new delete cut copy paste; +#X msg 169 66 paste; +#X msg 132 66 copyall; +#X msg 100 66 cutall; +#X obj 100 50 t a a; +#X obj 132 50 t a a; +#X obj 169 50 t a a; +#X connect 0 0 5 0; +#X connect 1 0 12 0; +#X connect 2 0 5 0; +#X connect 4 0 7 0; +#X connect 5 0 8 0; +#X connect 5 1 4 0; +#X connect 6 0 9 0; +#X connect 7 0 6 1; +#X connect 8 0 6 0; +#X connect 9 0 10 0; +#X connect 11 0 5 0; +#X connect 12 0 0 0; +#X connect 12 1 2 0; +#X connect 12 2 16 0; +#X connect 12 3 17 0; +#X connect 12 4 18 0; +#X connect 12 5 3 0; +#X connect 13 0 10 0; +#X connect 14 0 10 0; +#X connect 15 0 10 0; +#X connect 16 0 15 0; +#X connect 16 1 11 0; +#X connect 17 0 14 0; +#X connect 17 1 11 0; +#X connect 18 0 13 0; +#X connect 18 1 11 0; +#X restore 37 437 pd pooledit; +#N canvas 185 447 106 167 poolview 1; +#X obj 3 84 packel -1; +#X msg 4 23 chdir \, getsub -1; +#X obj 53 84 length; +#X obj 11 63 t a a; +#X obj 3 137 outlet; +#X obj 4 3 inlet; +#X obj 62 2 inlet; +#X obj 4 44 pool tt; +#X obj 3 119 prepend; +#X obj 53 102 - 1; +#X connect 0 0 8 0; +#X connect 1 0 7 0; +#X connect 2 0 9 0; +#X connect 3 0 0 0; +#X connect 3 1 2 0; +#X connect 5 0 1 0; +#X connect 6 0 7 0; +#X connect 7 1 3 0; +#X connect 8 0 4 0; +#X connect 9 0 8 1; +#X restore 267 116 pd poolview; +#X text 266 154 drag an item here; +#X obj 158 -33 tot .; +#X msg 136 -50 tot console show; +#X obj 267 79 widget dd dfd -width 19; +#X msg 282 -43 -bg yellow -fg blue; +#X msg 317 101 reset \, load \$1; +#X msg 118 64 0 jip jop; +#X obj 348 281 pool tt; +#X obj 272 225 prepend chdir; +#X msg 348 260 getall; +#X obj 272 244 t b b a; +#X msg 317 278 set; +#X msg 253 333 ins 2 \; name supatrigga \; synth 0 \; vendor Bram @ +Smartelectronix \; version 1 \; dll c:/local/wbin/vst/resynth/supatrigga.dll +\; editor 0 \; outs 2 \;; +#X obj 306 317 prepend add2; +#X obj 368 317 prepend add; +#X connect 0 0 33 0; +#X connect 2 0 15 0; +#X connect 3 0 15 0; +#X connect 4 0 15 0; +#X connect 5 0 15 0; +#X connect 6 0 15 0; +#X connect 7 0 15 0; +#X connect 8 0 34 0; +#X connect 9 0 0 0; +#X connect 10 0 0 0; +#X connect 11 0 0 0; +#X connect 12 0 11 0; +#X connect 13 0 10 0; +#X connect 15 0 0 0; +#X connect 16 0 1 0; +#X connect 17 0 1 0; +#X connect 18 0 19 0; +#X connect 18 1 5 0; +#X connect 18 2 4 0; +#X connect 18 3 3 0; +#X connect 18 4 2 0; +#X connect 19 0 20 0; +#X connect 20 0 21 0; +#X connect 21 0 22 0; +#X connect 22 0 2 0; +#X connect 22 1 3 0; +#X connect 22 2 4 0; +#X connect 22 3 5 0; +#X connect 22 4 6 0; +#X connect 22 5 7 0; +#X connect 23 0 18 0; +#X connect 24 0 9 0; +#X connect 25 0 29 0; +#X connect 25 0 43 0; +#X connect 27 0 26 0; +#X connect 28 0 26 0; +#X connect 29 0 28 0; +#X connect 31 0 32 0; +#X connect 32 0 25 0; +#X connect 32 0 30 0; +#X connect 32 1 27 0; +#X connect 33 0 31 0; +#X connect 34 0 15 0; +#X connect 37 0 36 0; +#X connect 38 0 40 0; +#X connect 39 0 1 0; +#X connect 40 0 34 1; +#X connect 41 0 15 0; +#X connect 42 0 49 0; +#X connect 42 1 48 0; +#X connect 43 0 45 0; +#X connect 44 0 42 0; +#X connect 45 0 44 0; +#X connect 45 1 46 0; +#X connect 45 2 42 0; +#X connect 46 0 47 0; +#X connect 48 0 47 0; +#X connect 49 0 47 0; diff --git a/extensions/gui/ix/toxy/tree.wid b/extensions/gui/ix/toxy/tree.wid new file mode 100755 index 00000000..809b2670 --- /dev/null +++ b/extensions/gui/ix/toxy/tree.wid @@ -0,0 +1,184 @@ +package require treectrl +package require tkdnd +namespace eval ::ix { + variable _ + proc tree {t target title auto echo path delim} { + variable _ + puts "$t $target $title $echo $path $delim" + if {[$t element names] != "el1"} { + $t column create -text $title + $t element create el1 text -fill [list green {selected focus}] + $t style create s1 + $t style elements s1 el1 + } + bind $t {dnd drag %W} + bind $t { + set id [lindex [%W identify %x %y] 1] + if {$id ne "" && $id ne "tail"} { + %W activate $id + ::ix::tree_click %W [winfo name %W] + } + } + + dnd bindsource $t text/plain "return \[::ix::tree_get $t $target -1 -1\]" + bind $t "::ix::tree_out $t $target -1" + bind $t "::ix::tree_out $t $target -1" + bind $t "::ix::tree_out $t $target -1" + bind $t {} + bind $t { + variable _ + focus %W + set target [winfo name %W] + set id [lindex [%W identify %x %y] 1] + if {$id ne ""} { + %W activate $id + %W selection clear all + %W selection add $id + set path [::ix::tree_get %W $target 1 -1] + if {[winfo exists %W.rc] != 1} { + set m [menu %W.rc -tearoff no] + $m add command -label "path [::ix::tree_get %W $target -1 $id]" -state disabled + $m add command -label delete -command { + ::ix::tree_msg $target "delete [pdtk_enquote $path]" + set p [%W item parent $id] + %W item delete $id + if {[%W item numchildren $p] < 1} { + %W item configure $p -button no + } + } + $m add command -label new -command { + ::ix::tree_nameitem %W $target $path $id + } + $m add command -label copy -command {::ix::tree_msg $target "copy [pdtk_enquote $path]"} + $m add command -label cut -command {::ix::tree_msg $target "cut [pdtk_enquote $path]"} + $m add command -label paste -command {::ix::tree_msg $target "paste [pdtk_enquote $path]"} + } else { + %W.rc entryconfigure 0 -label "path [::ix::tree_get %W $target -1 $id]" + } + tk_popup %W.rc %X %Y + } else { + if {[winfo exists %W.rroot] != 1} { + set m [menu %W.rroot -tearoff no] + $m add command -label "new root" -command { + ::ix::tree_nameitem %W $target "" 0 + } + } + tk_popup %W.rroot %X %Y + } + } + set _($target:parentList) [list root {} {} {} {} {} {}] + set _($target:auto) $auto + set _($target:echo) $echo + set _($target:path) $path + set _($target:delim) $delim + } + proc tree_nameitem {t target path id} { + set path "$path/" + destroy .$path + toplevel .$path + entry .$path.entry -textvariable send_textvariable + .$path.entry delete 0 end + .$path.entry insert 0 [::ix::random_txt 6] + .$path.entry select from 0 + .$path.entry select adjust end +# if {$path == "/"} {set pathname ""} else {set pathname path} + set submit "::ix::tree_msg $target \"new \[pdtk_enquote \"$path\$send_textvariable\"\]\";::ix::tree_item $t $id \$send_textvariable;destroy .$path" + bind .$path.entry $submit + button .$path.ok -text "OK" -command $submit + button .$path.cancel -text cancel -command "destroy .$path" + pdtk_standardkeybindings .$path.entry + grid .$path.entry -sticky news -columnspan 2 + grid .$path.ok .$path.cancel -sticky news + grid columnconfigure .$path 1 -weight 1 + focus .$path.entry + } + proc random_txt {n} { + set i 0 + set text "" + while {$i < $n} { + set int [expr "int(floor(rand()*62))"] + if {$int < 10} {incr int 48} elseif {$int < 36} {incr int 55} else {incr int 61} + set text "$text[format %c $int]" + incr i + } + return $text + } + proc tree_item {t p text} { + set ti [$t item create] + $t item style set $ti 0 s1 + $t item text $ti 0 $text + $t item lastchild $p $ti + $t item configure $p -button yes + return $ti + } + proc tree_add {t target args} { + variable _ + set depth [lindex $args 0] + set text [lrange $args 1 end] + set p [lindex $_($target:parentList) $depth] + set ti [tree_item $t $p $text] + incr depth + set _($target:parentList) [lreplace $_($target:parentList) $depth $depth $ti] +# if {$_($target:auto) == 1} { +# tree_msg $target "new [tree_get $t $target -1 $ti]" +# } + } + proc tree_click {t target} { + variable _ + if {$_($target:auto) == 1} {tree_out $t $target -1} + } + proc tree_cmd {t target args} { + variable _ + puts "$t $args" + set r [eval "$t $args"] + if {$_($target:echo) == 1} {pd "$target.rp _cb $r;"} + } + proc tree_out {t target rec} { + tree_msg $target [tree_get $t $target $rec -1] + } + proc tree_msg {target msg} { + pd "$target.rp _cb $msg;" + } + proc tree_get {t target rec it} { + variable _ + if {$it < 0} {set it [$t index active]} + if {$rec < 0} {set rec $_($target:path)} + if {$rec > 0} {return [tree_getrec $t $target $it ""]} else { + set item [$t item text $it 0] + return $item + } + } + proc tree_getrec {t target tr dl} { + variable _ + if {$tr > 0} { + lappend dl $tr + tree_getrec $t $target [$t item parent $tr] $dl + } else { + set tr "" + for {set i [expr [llength $dl] - 1]} {0 <= $i} {incr i -1} { + set tr "$tr$_($target:delim)[$t item text [lindex $dl $i] 0]" + } + return $tr + } + } + proc tree_cfg {target item arg} { + variable _ + set _($target:$item) $arg + } + +} + +#> tree treectrl +#. -height 400 -width 200 +#. #title 1 #auto 1 #echo 0 #path 1 #delim "/" +#. -font {tahoma 8} -showroot yes -showrootbutton no -selectmode single +#. @list ::ix::tree_list .- .| .#args +#. @clear .- item delete all +#. @add ::ix::tree_add .- .| .#args +#. @cmd ::ix::tree_cmd .- .| .#args +#. @auto ::ix::tree_cfg .| auto .#1 +#. @echo ::ix::tree_cfg .| echo .#1 +#. @path ::ix::tree_cfg .| path .#1 +#. @delim ::ix::tree_cfg .| delim .#1 + +::ix::tree .- .| .#title .#auto .#echo .#path .#delim diff --git a/extensions/gui/ix/tree-demo.pd b/extensions/gui/ix/tree-demo.pd deleted file mode 100755 index cdfa6fec..00000000 --- a/extensions/gui/ix/tree-demo.pd +++ /dev/null @@ -1,184 +0,0 @@ -#N canvas 402 155 495 621 10; -#X obj 36 131 widget tree t1 -height 300 -selectmode single -width -205 -bd 2 -border 1 -font .(verdana 8.) -bg yellow -fg blue; -#X obj 215 16 tow . tree t1; -#X msg 13 8 0 juice; -#X msg 21 24 1 coffee; -#X msg 32 41 2 apples; -#X msg 43 58 3 plantains; -#X msg 27 74 2 arugula; -#X msg 22 90 1 byte; -#X obj 251 117 bng 15 250 50 0 empty empty empty 0 -6 0 8 -260818 -1 --1; -#X msg 107 101 clear; -#X msg 178 113 path \$1; -#X msg 178 93 auto \$1; -#X obj 224 78 tgl 15 0 empty empty empty 0 -6 0 8 -225271 -1 -1 0 1 -; -#X obj 225 98 tgl 15 0 empty empty empty 0 -6 0 8 -225280 -1 -1 0 1 -; -#X obj 266 168 widget dd dt -bg gray -fg pink; -#X obj 11 113 prepend add; -#X msg 171 0 cmd collapse -recurse all \, cmd expand 0; -#X msg 255 -16 cmd expand all; -#X obj 17 -10 t b b b b b; -#X msg 80 -23 16; -#X obj 81 -8 until; -#X obj 78 9 random 6; -#X obj 73 24 route 0 1 2 3 4 5; -#X obj 24 -47 bng 31 250 50 0 empty empty empty 0 -6 0 8 -193787 -1 --1; -#X obj 56 -48 bng 27 250 50 0 empty empty empty 0 -6 0 8 -258699 -1 --1; -#X obj 146 453 s2l /; -#X msg 240 453 resynth \; supatrigga \;; -#X msg 215 473 set; -#X msg 201 453 add \$1; -#X obj 176 453 drip; -#X symbolatom 40 492 39 0 0 0 - - -; -#X obj 96 453 l2s; -#X obj 116 453 t s b; -#N canvas 17 433 316 238 pooledit 1; -#X obj 18 50 prepend mkchdir; -#X obj 18 9 inlet; -#X obj 28 66 prepend rmdir; -#X obj 168 173 outlet; -#X obj 89 103 l2s; -#X obj 48 82 niagara 1; -#X obj 61 139 glue; -#X obj 89 123 s2l /; -#X obj 48 101 a2l; -#X obj 61 158 route list; -#X obj 61 174 pool tt; -#X obj 197 66 prepend chdir; -#X obj 18 26 route new delete cut copy paste; -#X msg 169 66 paste; -#X msg 132 66 copyall; -#X msg 100 66 cutall; -#X obj 100 50 t a a; -#X obj 132 50 t a a; -#X obj 169 50 t a a; -#X connect 0 0 5 0; -#X connect 1 0 12 0; -#X connect 2 0 5 0; -#X connect 4 0 7 0; -#X connect 5 0 8 0; -#X connect 5 1 4 0; -#X connect 6 0 9 0; -#X connect 7 0 6 1; -#X connect 8 0 6 0; -#X connect 9 0 10 0; -#X connect 11 0 5 0; -#X connect 12 0 0 0; -#X connect 12 1 2 0; -#X connect 12 2 16 0; -#X connect 12 3 17 0; -#X connect 12 4 18 0; -#X connect 12 5 3 0; -#X connect 13 0 10 0; -#X connect 14 0 10 0; -#X connect 15 0 10 0; -#X connect 16 0 15 0; -#X connect 16 1 11 0; -#X connect 17 0 14 0; -#X connect 17 1 11 0; -#X connect 18 0 13 0; -#X connect 18 1 11 0; -#X restore 37 437 pd pooledit; -#N canvas 185 447 106 167 poolview 1; -#X obj 3 84 packel -1; -#X msg 4 23 chdir \, getsub -1; -#X obj 53 84 length; -#X obj 11 63 t a a; -#X obj 3 137 outlet; -#X obj 4 3 inlet; -#X obj 62 2 inlet; -#X obj 4 44 pool tt; -#X obj 3 119 prepend; -#X obj 53 102 - 1; -#X connect 0 0 8 0; -#X connect 1 0 7 0; -#X connect 2 0 9 0; -#X connect 3 0 0 0; -#X connect 3 1 2 0; -#X connect 5 0 1 0; -#X connect 6 0 7 0; -#X connect 7 1 3 0; -#X connect 8 0 4 0; -#X connect 9 0 8 1; -#X restore 267 116 pd poolview; -#X text 266 154 drag an item here; -#X obj 158 -33 tot .; -#X msg 136 -50 tot console show; -#X obj 267 79 widget dd dfd -width 19; -#X msg 282 -43 -bg yellow -fg blue; -#X msg 317 101 reset \, load \$1; -#X msg 118 64 0 jip jop; -#X obj 348 281 pool tt; -#X obj 272 225 prepend chdir; -#X msg 348 260 getall; -#X obj 272 244 t b b a; -#X msg 317 278 set; -#X msg 253 333 ins 2 \; name supatrigga \; synth 0 \; vendor Bram @ -Smartelectronix \; version 1 \; dll c:/local/wbin/vst/resynth/supatrigga.dll -\; editor 0 \; outs 2 \;; -#X obj 306 317 prepend add2; -#X obj 368 317 prepend add; -#X connect 0 0 33 0; -#X connect 2 0 15 0; -#X connect 3 0 15 0; -#X connect 4 0 15 0; -#X connect 5 0 15 0; -#X connect 6 0 15 0; -#X connect 7 0 15 0; -#X connect 8 0 34 0; -#X connect 9 0 0 0; -#X connect 10 0 0 0; -#X connect 11 0 0 0; -#X connect 12 0 11 0; -#X connect 13 0 10 0; -#X connect 15 0 0 0; -#X connect 16 0 1 0; -#X connect 17 0 1 0; -#X connect 18 0 19 0; -#X connect 18 1 5 0; -#X connect 18 2 4 0; -#X connect 18 3 3 0; -#X connect 18 4 2 0; -#X connect 19 0 20 0; -#X connect 20 0 21 0; -#X connect 21 0 22 0; -#X connect 22 0 2 0; -#X connect 22 1 3 0; -#X connect 22 2 4 0; -#X connect 22 3 5 0; -#X connect 22 4 6 0; -#X connect 22 5 7 0; -#X connect 23 0 18 0; -#X connect 24 0 9 0; -#X connect 25 0 29 0; -#X connect 25 0 43 0; -#X connect 27 0 26 0; -#X connect 28 0 26 0; -#X connect 29 0 28 0; -#X connect 31 0 32 0; -#X connect 32 0 25 0; -#X connect 32 0 30 0; -#X connect 32 1 27 0; -#X connect 33 0 31 0; -#X connect 34 0 15 0; -#X connect 37 0 36 0; -#X connect 38 0 40 0; -#X connect 39 0 1 0; -#X connect 40 0 34 1; -#X connect 41 0 15 0; -#X connect 42 0 49 0; -#X connect 42 1 48 0; -#X connect 43 0 45 0; -#X connect 44 0 42 0; -#X connect 45 0 44 0; -#X connect 45 1 46 0; -#X connect 45 2 42 0; -#X connect 46 0 47 0; -#X connect 48 0 47 0; -#X connect 49 0 47 0; diff --git a/extensions/gui/ix/tree.wid b/extensions/gui/ix/tree.wid deleted file mode 100755 index 809b2670..00000000 --- a/extensions/gui/ix/tree.wid +++ /dev/null @@ -1,184 +0,0 @@ -package require treectrl -package require tkdnd -namespace eval ::ix { - variable _ - proc tree {t target title auto echo path delim} { - variable _ - puts "$t $target $title $echo $path $delim" - if {[$t element names] != "el1"} { - $t column create -text $title - $t element create el1 text -fill [list green {selected focus}] - $t style create s1 - $t style elements s1 el1 - } - bind $t {dnd drag %W} - bind $t { - set id [lindex [%W identify %x %y] 1] - if {$id ne "" && $id ne "tail"} { - %W activate $id - ::ix::tree_click %W [winfo name %W] - } - } - - dnd bindsource $t text/plain "return \[::ix::tree_get $t $target -1 -1\]" - bind $t "::ix::tree_out $t $target -1" - bind $t "::ix::tree_out $t $target -1" - bind $t "::ix::tree_out $t $target -1" - bind $t {} - bind $t { - variable _ - focus %W - set target [winfo name %W] - set id [lindex [%W identify %x %y] 1] - if {$id ne ""} { - %W activate $id - %W selection clear all - %W selection add $id - set path [::ix::tree_get %W $target 1 -1] - if {[winfo exists %W.rc] != 1} { - set m [menu %W.rc -tearoff no] - $m add command -label "path [::ix::tree_get %W $target -1 $id]" -state disabled - $m add command -label delete -command { - ::ix::tree_msg $target "delete [pdtk_enquote $path]" - set p [%W item parent $id] - %W item delete $id - if {[%W item numchildren $p] < 1} { - %W item configure $p -button no - } - } - $m add command -label new -command { - ::ix::tree_nameitem %W $target $path $id - } - $m add command -label copy -command {::ix::tree_msg $target "copy [pdtk_enquote $path]"} - $m add command -label cut -command {::ix::tree_msg $target "cut [pdtk_enquote $path]"} - $m add command -label paste -command {::ix::tree_msg $target "paste [pdtk_enquote $path]"} - } else { - %W.rc entryconfigure 0 -label "path [::ix::tree_get %W $target -1 $id]" - } - tk_popup %W.rc %X %Y - } else { - if {[winfo exists %W.rroot] != 1} { - set m [menu %W.rroot -tearoff no] - $m add command -label "new root" -command { - ::ix::tree_nameitem %W $target "" 0 - } - } - tk_popup %W.rroot %X %Y - } - } - set _($target:parentList) [list root {} {} {} {} {} {}] - set _($target:auto) $auto - set _($target:echo) $echo - set _($target:path) $path - set _($target:delim) $delim - } - proc tree_nameitem {t target path id} { - set path "$path/" - destroy .$path - toplevel .$path - entry .$path.entry -textvariable send_textvariable - .$path.entry delete 0 end - .$path.entry insert 0 [::ix::random_txt 6] - .$path.entry select from 0 - .$path.entry select adjust end -# if {$path == "/"} {set pathname ""} else {set pathname path} - set submit "::ix::tree_msg $target \"new \[pdtk_enquote \"$path\$send_textvariable\"\]\";::ix::tree_item $t $id \$send_textvariable;destroy .$path" - bind .$path.entry $submit - button .$path.ok -text "OK" -command $submit - button .$path.cancel -text cancel -command "destroy .$path" - pdtk_standardkeybindings .$path.entry - grid .$path.entry -sticky news -columnspan 2 - grid .$path.ok .$path.cancel -sticky news - grid columnconfigure .$path 1 -weight 1 - focus .$path.entry - } - proc random_txt {n} { - set i 0 - set text "" - while {$i < $n} { - set int [expr "int(floor(rand()*62))"] - if {$int < 10} {incr int 48} elseif {$int < 36} {incr int 55} else {incr int 61} - set text "$text[format %c $int]" - incr i - } - return $text - } - proc tree_item {t p text} { - set ti [$t item create] - $t item style set $ti 0 s1 - $t item text $ti 0 $text - $t item lastchild $p $ti - $t item configure $p -button yes - return $ti - } - proc tree_add {t target args} { - variable _ - set depth [lindex $args 0] - set text [lrange $args 1 end] - set p [lindex $_($target:parentList) $depth] - set ti [tree_item $t $p $text] - incr depth - set _($target:parentList) [lreplace $_($target:parentList) $depth $depth $ti] -# if {$_($target:auto) == 1} { -# tree_msg $target "new [tree_get $t $target -1 $ti]" -# } - } - proc tree_click {t target} { - variable _ - if {$_($target:auto) == 1} {tree_out $t $target -1} - } - proc tree_cmd {t target args} { - variable _ - puts "$t $args" - set r [eval "$t $args"] - if {$_($target:echo) == 1} {pd "$target.rp _cb $r;"} - } - proc tree_out {t target rec} { - tree_msg $target [tree_get $t $target $rec -1] - } - proc tree_msg {target msg} { - pd "$target.rp _cb $msg;" - } - proc tree_get {t target rec it} { - variable _ - if {$it < 0} {set it [$t index active]} - if {$rec < 0} {set rec $_($target:path)} - if {$rec > 0} {return [tree_getrec $t $target $it ""]} else { - set item [$t item text $it 0] - return $item - } - } - proc tree_getrec {t target tr dl} { - variable _ - if {$tr > 0} { - lappend dl $tr - tree_getrec $t $target [$t item parent $tr] $dl - } else { - set tr "" - for {set i [expr [llength $dl] - 1]} {0 <= $i} {incr i -1} { - set tr "$tr$_($target:delim)[$t item text [lindex $dl $i] 0]" - } - return $tr - } - } - proc tree_cfg {target item arg} { - variable _ - set _($target:$item) $arg - } - -} - -#> tree treectrl -#. -height 400 -width 200 -#. #title 1 #auto 1 #echo 0 #path 1 #delim "/" -#. -font {tahoma 8} -showroot yes -showrootbutton no -selectmode single -#. @list ::ix::tree_list .- .| .#args -#. @clear .- item delete all -#. @add ::ix::tree_add .- .| .#args -#. @cmd ::ix::tree_cmd .- .| .#args -#. @auto ::ix::tree_cfg .| auto .#1 -#. @echo ::ix::tree_cfg .| echo .#1 -#. @path ::ix::tree_cfg .| path .#1 -#. @delim ::ix::tree_cfg .| delim .#1 - -::ix::tree .- .| .#title .#auto .#echo .#path .#delim -- cgit v1.2.1