From 22a829cb1907c79bfe68ad91314a1dddbf1beeb3 Mon Sep 17 00:00:00 2001 From: Miller Puckette Date: Tue, 1 Sep 2009 18:22:23 +0000 Subject: merge in HC's new tcl code and start taking patches svn path=/trunk/; revision=12166 --- pd/doc/3.audio.examples/E07.evenodd.pd | 6 +- pd/doc/3.audio.examples/E10.complex.FM.pd | 2 +- pd/doc/3.audio.examples/H04.filter.sweep.pd | 26 +- pd/doc/3.audio.examples/H05.filter.floyd.pd | 45 +- pd/doc/3.audio.examples/I07.phase.vocoder.pd | 92 +-- pd/doc/3.audio.examples/J01.even.odd.pd | 2 +- pd/extra/bonk~/bonk~.c | 3 +- pd/extra/expr~/vexp.c | 2 +- pd/extra/expr~/vexp.h | 6 +- pd/extra/expr~/vexp_fun.c | 10 +- pd/extra/fiddle~/fiddle~.c | 10 +- pd/extra/pique/pique.c | 3 +- pd/extra/sigmund~/sigmund~.c | 12 +- pd/src/configure.in | 2 +- pd/src/g_editor.c | 6 + pd/src/makefile.in | 8 +- pd/src/s_inter.c | 8 +- pd/src/s_main.c | 4 +- pd/tcl/AppMain.tcl | 7 +- pd/tcl/apple_events.tcl | 8 +- pd/tcl/dialog_array.tcl | 328 +++++++++ pd/tcl/dialog_audio.tcl | 298 ++++++++ pd/tcl/dialog_canvas.tcl | 213 ++++++ pd/tcl/dialog_find.tcl | 71 +- pd/tcl/dialog_font.tcl | 184 +++-- pd/tcl/dialog_gatom.tcl | 145 ++-- pd/tcl/dialog_iemgui.tcl | 492 +++++++------ pd/tcl/dialog_midi.tcl | 344 +++++++++ pd/tcl/opt_parser.tcl | 78 ++ pd/tcl/pd-gui.tcl | 503 +++++++++++++ pd/tcl/pd.tcl | 315 -------- pd/tcl/pd_bindings.tcl | 152 ++-- pd/tcl/pd_connect.tcl | 4 +- pd/tcl/pd_menucommands.tcl | 126 +++- pd/tcl/pd_menus.tcl | 326 ++++++--- pd/tcl/pdtk_canvas.tcl | 77 +- pd/tcl/pdwindow.tcl | 53 ++ pd/tcl/pkgIndex.tcl | 7 +- pd/tcl/wheredoesthisgo.tcl | 1003 +------------------------- 39 files changed, 2906 insertions(+), 2075 deletions(-) create mode 100644 pd/tcl/dialog_array.tcl create mode 100644 pd/tcl/dialog_audio.tcl create mode 100644 pd/tcl/dialog_canvas.tcl create mode 100644 pd/tcl/dialog_midi.tcl create mode 100644 pd/tcl/opt_parser.tcl create mode 100644 pd/tcl/pd-gui.tcl delete mode 100644 pd/tcl/pd.tcl create mode 100644 pd/tcl/pdwindow.tcl (limited to 'pd') diff --git a/pd/doc/3.audio.examples/E07.evenodd.pd b/pd/doc/3.audio.examples/E07.evenodd.pd index 9715e1ea..e6d3851e 100644 --- a/pd/doc/3.audio.examples/E07.evenodd.pd +++ b/pd/doc/3.audio.examples/E07.evenodd.pd @@ -38,11 +38,11 @@ #X text 299 152 <--transpose; #N canvas 0 0 538 208 make-table 0; #X obj 38 71 loadbang; -#X text 16 11 This patch loads a sequence of pitches into array1. The +#X text 16 11 This patch loads a sequence of pitches into E07. The values are floating-point \, so we could use microtones (60.5 \, for example) if we wish.; -#X msg 38 99 \; array1 0 55 56 57 55 57 61 55 61 63 57 63 \; array1 -yticks 36 12 1 \; array1 ylabel 12 36 48 60 72 84 96; +#X msg 38 99 \; E07 0 55 56 57 55 57 61 55 61 63 57 63 \; E07 +yticks 36 12 1 \; E07 ylabel 12 36 48 60 72 84 96; #X connect 0 0 2 0; #X restore 527 195 pd make-table; #X obj 176 50 sel 0; diff --git a/pd/doc/3.audio.examples/E10.complex.FM.pd b/pd/doc/3.audio.examples/E10.complex.FM.pd index 094d68ed..fbd6ce99 100644 --- a/pd/doc/3.audio.examples/E10.complex.FM.pd +++ b/pd/doc/3.audio.examples/E10.complex.FM.pd @@ -43,7 +43,7 @@ frequency for showing spectra: the 16th bin in a 4096-point spectrum #X text 273 232 toggle to graph repeatedly; #X text 262 212 bang to graph once; #X obj 16 494 t b f; -#X obj 19 295 tabwrite~ E10-signal; +#X obj 19 295 tabwrite~ E10-spectrum; #X obj 208 295 tabwrite~ E10-spectrum; #X text 72 536 set carrier multiplier and modulation multipliers after fundamental; diff --git a/pd/doc/3.audio.examples/H04.filter.sweep.pd b/pd/doc/3.audio.examples/H04.filter.sweep.pd index e4f3cf09..1675e9a6 100644 --- a/pd/doc/3.audio.examples/H04.filter.sweep.pd +++ b/pd/doc/3.audio.examples/H04.filter.sweep.pd @@ -1,4 +1,4 @@ -#N canvas 360 15 553 524 12; +#N canvas 360 22 557 528 12; #X floatatom 44 146 5 0 150 0 - #0-pitch -; #X text 126 9 SWEEPING FILTERS; #X obj 44 193 phasor~; @@ -43,6 +43,30 @@ sweep speeds.; "vcf~" instead of "bp~". The vcf~ module takes an audio signal to set center frequency. (Q is still set by messages though.) Vcf is computationally somewhat more expensive than bp~.; +#N canvas 0 22 612 404 conversion-tables 0; +#N canvas 0 22 450 300 graph2 0; +#X array mtof 130 float 1; +#A 0 8.1758 8.66196 9.17702 9.72272 10.3009 10.9134 11.5623 12.2499 +12.9783 13.75 14.5676 15.4339 16.3516 17.3239 18.354 19.4454 20.6017 +21.8268 23.1247 24.4997 25.9565 27.5 29.1352 30.8677 32.7032 34.6478 +36.7081 38.8909 41.2034 43.6535 46.2493 48.9994 51.9131 55 58.2705 +61.7354 65.4064 69.2957 73.4162 77.7817 82.4069 87.3071 92.4986 97.9989 +103.826 110 116.541 123.471 130.813 138.591 146.832 155.563 164.814 +174.614 184.997 195.998 207.652 220 233.082 246.942 261.626 277.183 +293.665 311.127 329.628 349.228 369.994 391.995 415.305 440 466.164 +493.883 523.251 554.365 587.33 622.254 659.255 698.456 739.989 783.991 +830.609 880 932.328 987.767 1046.5 1108.73 1174.66 1244.51 1318.51 +1396.91 1479.98 1567.98 1661.22 1760 1864.66 1975.53 2093 2217.46 2349.32 +2489.02 2637.02 2793.83 2959.96 3135.96 3322.44 3520 3729.31 3951.07 +4186.01 4434.92 4698.64 4978.03 5274.04 5587.65 5919.91 6271.93 6644.88 +7040 7458.62 7902.13 8372.02 8869.84 9397.27 9956.06 10548.1 11175.3 +11839.8 12543.9 13289.8 14080; +#X coords 0 12000 130 0 200 100 1; +#X restore 309 225 graph; +#X text 319 333 ------ 130 samples ------; +#X text 518 318 0; +#X text 520 218 12000; +#X restore 168 463 pd conversion-tables; #X connect 0 0 21 0; #X connect 2 0 8 0; #X connect 3 0 9 0; diff --git a/pd/doc/3.audio.examples/H05.filter.floyd.pd b/pd/doc/3.audio.examples/H05.filter.floyd.pd index 2187f05d..401b5628 100644 --- a/pd/doc/3.audio.examples/H05.filter.floyd.pd +++ b/pd/doc/3.audio.examples/H05.filter.floyd.pd @@ -1,30 +1,31 @@ -#N canvas 708 41 555 646 12; -#N canvas 0 0 600 392 conversion-tables 0; -#N canvas 0 0 450 300 graph1 0; +#N canvas 288 109 559 650 12; +#N canvas 0 22 604 396 conversion-tables 0; +#N canvas 0 22 450 300 graph1 0; #X array dbtorms 123 float 1; #A 0 0 0 1.25893e-05 1.41254e-05 1.58489e-05 1.77828e-05 1.99526e-05 2.23872e-05 2.51189e-05 2.81838e-05 3.16228e-05 3.54813e-05 3.98107e-05 4.46684e-05 5.01187e-05 5.62341e-05 6.30957e-05 7.07946e-05 7.94328e-05 -8.91251e-05 1e-04 0.000112202 0.000125893 0.000141254 0.000158489 0.000177828 -0.000199526 0.000223872 0.000251189 0.000281838 0.000316228 0.000354813 -0.000398107 0.000446684 0.000501187 0.000562341 0.000630957 0.000707946 -0.000794328 0.000891251 0.001 0.00112202 0.00125893 0.00141254 0.00158489 -0.00177828 0.00199526 0.00223872 0.00251189 0.00281838 0.00316228 0.00354813 -0.00398107 0.00446684 0.00501187 0.00562341 0.00630957 0.00707946 0.00794328 -0.00891251 0.01 0.0112202 0.0125893 0.0141254 0.0158489 0.0177828 0.0199526 -0.0223872 0.0251189 0.0281838 0.0316228 0.0354813 0.0398107 0.0446684 -0.0501187 0.0562341 0.0630957 0.0707946 0.0794328 0.0891251 0.1 0.112202 -0.125893 0.141254 0.158489 0.177828 0.199526 0.223872 0.251189 0.281838 -0.316228 0.354813 0.398107 0.446684 0.501187 0.562341 0.630957 0.707946 -0.794328 0.891251 1 1.12202 1.25893 1.41254 1.58489 1.77828 1.99526 -2.23872 2.51189 2.81838 3.16228 3.54813 3.98107 4.46684 5.01187 5.62341 -6.30957 7.07946 7.94328 8.91251 10 11.2202 12.5893; +8.91251e-05 0.0001 0.000112202 0.000125893 0.000141254 0.000158489 +0.000177828 0.000199526 0.000223872 0.000251189 0.000281838 0.000316228 +0.000354813 0.000398107 0.000446684 0.000501187 0.000562341 0.000630957 +0.000707946 0.000794328 0.000891251 0.001 0.00112202 0.00125893 0.00141254 +0.00158489 0.00177828 0.00199526 0.00223872 0.00251189 0.00281838 0.00316228 +0.00354813 0.00398107 0.00446684 0.00501187 0.00562341 0.00630957 0.00707946 +0.00794328 0.00891251 0.01 0.0112202 0.0125893 0.0141254 0.0158489 +0.0177828 0.0199526 0.0223872 0.0251189 0.0281838 0.0316228 0.0354813 +0.0398107 0.0446684 0.0501187 0.0562341 0.0630957 0.0707946 0.0794328 +0.0891251 0.1 0.112202 0.125893 0.141254 0.158489 0.177828 0.199526 +0.223872 0.251189 0.281838 0.316228 0.354813 0.398107 0.446684 0.501187 +0.562341 0.630957 0.707946 0.794328 0.891251 1 1.12202 1.25893 1.41254 +1.58489 1.77828 1.99526 2.23872 2.51189 2.81838 3.16228 3.54813 3.98107 +4.46684 5.01187 5.62341 6.30957 7.07946 7.94328 8.91251 10 11.2202 +12.5893; #X coords 0 10 123 0 200 100 1; #X restore 302 48 graph; #X text 504 141 0; #X text 506 41 10; #X text 321 151 ------ 123 samples ------; -#N canvas 0 0 450 300 graph2 0; +#N canvas 0 22 450 300 graph2 0; #X array mtof 130 float 1; #A 0 8.1758 8.66196 9.17702 9.72272 10.3009 10.9134 11.5623 12.2499 12.9783 13.75 14.5676 15.4339 16.3516 17.3239 18.354 19.4454 20.6017 @@ -65,7 +66,7 @@ #X obj 55 145 + 1; #X obj 22 217 mtof; #X obj 55 169 mod 8; -#N canvas 0 0 450 300 graph1 0; +#N canvas 0 22 450 300 graph1 0; #X array \$0-array1 8 float 2; #X coords 0 96 8 36 200 100 1; #X restore 340 144 graph; @@ -74,9 +75,9 @@ #X text 107 147 sequencer for; #X text 122 164 8 note loop; #X obj 16 576 output~; -#X obj 22 104 tgl 15 0 empty \$1-metro empty 0 -6 0 8 -262144 -1 -1 -1 1; -#N canvas 876 177 375 255 startup 0; +#X obj 22 104 tgl 15 0 empty \$0-metro empty 0 -6 0 8 -262144 -1 -1 +0 1; +#N canvas 876 177 379 259 startup 0; #X obj 22 24 loadbang; #X obj 22 48 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; diff --git a/pd/doc/3.audio.examples/I07.phase.vocoder.pd b/pd/doc/3.audio.examples/I07.phase.vocoder.pd index 95017436..735b8cd2 100644 --- a/pd/doc/3.audio.examples/I07.phase.vocoder.pd +++ b/pd/doc/3.audio.examples/I07.phase.vocoder.pd @@ -1,8 +1,8 @@ -#N canvas 164 25 744 599 12; +#N canvas 425 33 744 599 12; #X floatatom 494 315 5 0 0 0 - transpo-set -; #X floatatom 167 383 3 0 0 0 - speed-set -; #X floatatom 55 385 7 0 0 0 - location-set -; -#N canvas 199 40 821 693 fft-analysis 0; +#N canvas 90 42 821 693 fft-analysis 0; #X obj 51 477 *~; #X obj 18 477 *~; #X obj 18 499 -~; @@ -39,7 +39,7 @@ bang; #X obj 97 425 q8_rsqrt~; #N canvas 139 105 1006 799 read-windows 0; #X obj 18 693 *~; -#X obj 364 448 r window-size; +#X obj 340 448 r window-size; #X obj 156 300 f; #X obj 102 91 r window-size; #X obj 102 139 /; @@ -60,14 +60,14 @@ bang; #X text 188 394 reading location (samples); #X obj 51 597 / 4; #X obj 288 245 * 0.01; -#X floatatom 364 498 7 0 0 0 - - -; -#X obj 364 474 *; -#X obj 502 347 r transpo; -#X obj 502 369 * 0.01; -#X obj 504 390 + 69; -#X obj 505 411 mtof; -#X obj 505 433 / 440; -#X obj 399 474 t b f; +#X floatatom 340 498 7 0 0 0 - - -; +#X obj 340 474 *; +#X obj 499 365 r transpo; +#X obj 499 387 * 0.01; +#X obj 501 408 + 69; +#X obj 502 429 mtof; +#X obj 502 451 / 440; +#X obj 375 474 t b f; #X obj 19 719 outlet~; #X obj 195 720 outlet~; #X obj 218 664 tabreceive~ \$0-hann; @@ -77,7 +77,7 @@ bang; #X obj 768 508 r speed; #X msg 768 532 set \$1; #X obj 768 557 s speed-set; -#X text 432 498 stretched window size (samples); +#X text 411 498 stretched window size (samples); #X obj 877 507 r transpo; #X msg 877 533 set \$1; #X obj 877 558 s transpo-set; @@ -123,8 +123,8 @@ by "location". If "speed" is nonzero \, "location" automatically precesses. #X obj 845 684 r auto; #X obj 730 685 r no-detune; #X msg 730 707 \; detune 0; -#X text 321 280 loop to precess the location according; -#X text 320 296 to the "speed" parameter.; +#X text 326 275 loop to precess the location according; +#X text 325 291 to the "speed" parameter.; #X text 611 31 if location changes \, update number box; #X text 610 50 in main window via "location-set" \, but; #X text 613 69 taking care to limit frequency of updates.; @@ -136,14 +136,6 @@ by "location". If "speed" is nonzero \, "location" automatically precesses. #X text 496 527 "rewind" control takes us; #X text 499 545 to a location depending on; #X text 499 564 stretched window size.; -#X obj 593 457 t b f; -#X obj 617 395 samplerate~; -#X obj 593 348 r \$0-insamprate; -#X obj 593 418 /; -#X obj 505 455 * 1; -#X text 494 312 desired transposition and sample; -#X text 494 329 rate correction for soundfile; -#X obj 593 370 t f b; #X connect 0 0 30 0; #X connect 1 0 23 0; #X connect 2 0 11 0; @@ -179,7 +171,7 @@ by "location". If "speed" is nonzero \, "location" automatically precesses. #X connect 25 0 26 0; #X connect 26 0 27 0; #X connect 27 0 28 0; -#X connect 28 0 99 0; +#X connect 28 0 29 0; #X connect 29 0 23 0; #X connect 29 1 23 1; #X connect 32 0 5 1; @@ -224,14 +216,6 @@ by "location". If "speed" is nonzero \, "location" automatically precesses. #X connect 77 0 75 0; #X connect 79 0 78 0; #X connect 80 0 81 0; -#X connect 95 0 99 0; -#X connect 95 1 99 1; -#X connect 96 0 98 1; -#X connect 97 0 102 0; -#X connect 98 0 95 0; -#X connect 99 0 29 0; -#X connect 102 0 98 0; -#X connect 102 1 96 0; #X restore 109 133 pd read-windows; #X obj 137 543 tabsend~ prev-imag; #X obj 136 567 tabsend~ prev-real; @@ -363,11 +347,11 @@ shifts the signal to the left or right depending on its argument.) #X connect 54 0 21 0; #X restore 55 480 pd fft-analysis; #N canvas 260 23 647 768 phase-tables 0; -#N canvas 0 0 450 300 (subpatch) 0; +#N canvas 0 0 450 300 graph2 0; #X array prev-imag 4096 float 0; #X coords 0 1000 4096 -1000 400 300 1; #X restore 169 326 graph; -#N canvas 0 0 450 300 (subpatch) 0; +#N canvas 0 0 450 300 graph3 0; #X array prev-real 4096 float 0; #X coords 0 500 4096 -500 400 300 1; #X restore 170 17 graph; @@ -378,9 +362,9 @@ shifts the signal to the left or right depending on its argument.) #X text 389 359 normal; #X obj 56 517 output~; #N canvas 0 110 565 454 hann-window 0; -#N canvas 0 0 450 300 (subpatch) 0; -#X array \$0-hann 4096 float 0; -#X coords 0 1 4095 0 300 100 1; +#N canvas 0 0 450 300 graph1 0; +#X array \$0-hann 1024 float 0; +#X coords 0 1 1023 0 300 100 1; #X restore 82 311 graph; #X obj 378 165 osc~; #X obj 378 190 *~ -0.5; @@ -428,9 +412,9 @@ and window-msec (analysis window size in seconds and msec).; #X connect 19 1 18 0; #X restore 440 528 pd hann-window; #N canvas 388 86 694 447 insample 0; -#N canvas 0 0 450 300 (subpatch) 0; -#X array \$0-sample 82301 float 0; -#X coords 0 1 82300 -1 400 150 1; +#N canvas 0 0 450 300 graph1 0; +#X array \$0-sample 160161 float 0; +#X coords 0 1 160160 -1 400 150 1; #X restore 281 135 graph; #X obj 28 133 r read-sample; #X obj 28 184 unpack s f; @@ -449,12 +433,12 @@ and window-msec (analysis window size in seconds and msec).; #X obj 28 381 * 1000; #X obj 28 404 s \$0-samp-msec; #X obj 66 357 r \$0-insamprate; -#X obj 37 68 hip~ 5; -#X obj 37 44 adc~ 1; +#X obj 29 70 hip~ 5; +#X obj 29 46 adc~ 1; #X obj 29 9 inlet; -#X obj 99 44 samplerate~; +#X obj 91 46 samplerate~; #X obj 29 93 tabwrite~ \$0-sample; -#X obj 99 68 s \$0-insamprate; +#X obj 91 70 s \$0-insamprate; #X msg 285 383 \; read-sample ../sound/voice.wav; #X obj 276 20 inlet; #X obj 276 42 openpanel; @@ -479,7 +463,7 @@ and window-msec (analysis window size in seconds and msec).; #X connect 18 0 22 0; #X connect 19 0 18 0; #X connect 20 0 21 0; -#X connect 20 0 22 0; +#X connect 20 0 19 0; #X connect 21 0 23 0; #X connect 25 0 26 0; #X connect 26 0 27 0; @@ -501,6 +485,7 @@ and window-msec (analysis window size in seconds and msec).; #X obj 262 408 s rewind; #X msg 345 336 200; #X msg 345 358 100; +#X msg 345 380 20; #X text 386 335 contract; #X text 390 380 expand; #X obj 493 407 s lock; @@ -542,7 +527,6 @@ to see the workings.; #X obj 535 460 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X text 466 458 file ->; -#X msg 345 380 20; #X connect 0 0 5 0; #X connect 1 0 21 0; #X connect 2 0 20 0; @@ -552,13 +536,13 @@ to see the workings.; #X connect 14 0 16 0; #X connect 15 0 16 0; #X connect 17 0 11 0; -#X connect 19 0 28 0; +#X connect 19 0 29 0; #X connect 22 0 23 0; -#X connect 24 0 48 0; -#X connect 25 0 48 0; -#X connect 38 0 42 0; -#X connect 39 0 42 0; -#X connect 40 0 42 0; -#X connect 41 0 42 0; -#X connect 52 0 11 1; -#X connect 54 0 48 0; +#X connect 24 0 49 0; +#X connect 25 0 49 0; +#X connect 26 0 49 0; +#X connect 39 0 43 0; +#X connect 40 0 43 0; +#X connect 41 0 43 0; +#X connect 42 0 43 0; +#X connect 53 0 11 1; diff --git a/pd/doc/3.audio.examples/J01.even.odd.pd b/pd/doc/3.audio.examples/J01.even.odd.pd index 71c9fdf5..18603bb3 100644 --- a/pd/doc/3.audio.examples/J01.even.odd.pd +++ b/pd/doc/3.audio.examples/J01.even.odd.pd @@ -40,7 +40,7 @@ and heard. (Listen to the two outputs separately \, then together.) #X text 95 350 output level; #X text 100 308 for difference; #X text 157 77 <-- click to graph; -#X msg 148 97 \; pd DSP 1; +#X msg 148 97 \; pd dsp 1; #X obj 138 247 tabwrite~ \$0-difference; #X obj 138 270 tabwrite~ \$0-sum; #X obj 138 138 tabwrite~ \$0-phasor; diff --git a/pd/extra/bonk~/bonk~.c b/pd/extra/bonk~/bonk~.c index 6776b2e2..d0f18de9 100644 --- a/pd/extra/bonk~/bonk~.c +++ b/pd/extra/bonk~/bonk~.c @@ -53,7 +53,8 @@ decay and other times in msec #include #include -#ifdef NT +/* These pragmas are only used for MSVC, not MinGW or Cygwin */ +#ifdef _MSC_VER #pragma warning (disable: 4305 4244) #endif diff --git a/pd/extra/expr~/vexp.c b/pd/extra/expr~/vexp.c index 7d4d7b52..732944de 100644 --- a/pd/extra/expr~/vexp.c +++ b/pd/extra/expr~/vexp.c @@ -2137,6 +2137,6 @@ ex_print(struct ex_ex *eptr) post("\n"); } -#ifdef NT +#ifdef _WIN32 void ABORT( void) {bug("expr");} #endif diff --git a/pd/extra/expr~/vexp.h b/pd/extra/expr~/vexp.h index 92dfb06e..d096842f 100644 --- a/pd/extra/expr~/vexp.h +++ b/pd/extra/expr~/vexp.h @@ -236,9 +236,13 @@ extern void ex_store(t_expr *expr, long int argc, struct ex_ex *argv, int value_getonly(t_symbol *s, t_float *f); -#ifdef NT + +/* These pragmas are only used for MSVC, not MinGW or Cygwin */ +#ifdef _MSC_VER #pragma warning (disable: 4305 4244) +#endif +#ifdef _WIN32 #define abort ABORT void ABORT(void); #endif diff --git a/pd/extra/expr~/vexp_fun.c b/pd/extra/expr~/vexp_fun.c index fba49b18..26b0b767 100644 --- a/pd/extra/expr~/vexp_fun.c +++ b/pd/extra/expr~/vexp_fun.c @@ -123,7 +123,7 @@ static void ex_if(t_expr *expr, long argc, struct ex_ex *argv, struct ex_ex *opt static void ex_ldexp(t_expr *expr, long argc, struct ex_ex *argv, struct ex_ex *optr); static void ex_imodf(t_expr *expr, long argc, struct ex_ex *argv, struct ex_ex *optr); static void ex_modf(t_expr *expr, long argc, struct ex_ex *argv, struct ex_ex *optr); -#ifndef NT +#ifndef _WIN32 static void ex_cbrt(t_expr *expr, long argc, struct ex_ex *argv, struct ex_ex *optr); static void ex_erf(t_expr *expr, long argc, struct ex_ex *argv, struct ex_ex *optr); static void ex_erfc(t_expr *expr, long argc, struct ex_ex *argv, struct ex_ex *optr); @@ -176,7 +176,7 @@ t_ex_func ex_funcs[] = { {"ldexp ", ex_ldexp, 1}, {"imodf ", ex_imodf, 1}, {"modf", ex_modf, 1}, -#ifndef NT +#ifndef _WIN32 {"cbrt", ex_cbrt, 1}, {"erf", ex_erf, 1}, {"erfc", ex_erfc, 1}, @@ -542,7 +542,7 @@ ex_toint(t_expr *e, long int argc, struct ex_ex *argv, struct ex_ex *optr) FUNC_EVAL_UNARY(left, toint, (int), optr, 0); } -#ifdef NT +#ifdef _WIN32 /* No rint in NT land ??? */ double rint(double x); @@ -874,7 +874,7 @@ ex_tanh(t_expr *e, long int argc, struct ex_ex *argv, struct ex_ex *optr) } -#ifndef NT +#ifndef _WIN32 static void ex_asinh(t_expr *e, long argc, struct ex_ex *argv, struct ex_ex *optr) { @@ -1239,7 +1239,7 @@ FUNC_DEF_UNARY(ex_modf, fracmodf, (double), 1); */ FUNC_DEF(ex_ldexp, ldexp, (double), (int), 1); -#ifndef NT +#ifndef _WIN32 /* * ex_cbrt - cube root */ diff --git a/pd/extra/fiddle~/fiddle~.c b/pd/extra/fiddle~/fiddle~.c index d959b00f..4633b3c0 100644 --- a/pd/extra/fiddle~/fiddle~.c +++ b/pd/extra/fiddle~/fiddle~.c @@ -28,11 +28,17 @@ * */ -#ifdef NT + +/* These pragmas are only used for MSVC, not MinGW or Cygwin */ +#ifdef _MSC_VER +#pragma warning (disable: 4305 4244) +#endif + +/* this #ifdef does nothing, but its there... */ +#ifdef _WIN32 #define flog log #define fexp exp #define fsqrt sqrt -#pragma warning (disable: 4305 4244) #else #define flog log #define fexp exp diff --git a/pd/extra/pique/pique.c b/pd/extra/pique/pique.c index f4cae5e1..a53ad765 100644 --- a/pd/extra/pique/pique.c +++ b/pd/extra/pique/pique.c @@ -7,7 +7,8 @@ combustible materiel, or as part of any life support system or weapon. */ #include "m_pd.h" #include #include -#ifdef NT +/* These pragmas are only used for MSVC, not MinGW or Cygwin */ +#ifdef _MSC_VER #pragma warning( disable : 4244 ) #pragma warning( disable : 4305 ) #endif diff --git a/pd/extra/sigmund~/sigmund~.c b/pd/extra/sigmund~/sigmund~.c index d5211ac6..92604b7e 100644 --- a/pd/extra/sigmund~/sigmund~.c +++ b/pd/extra/sigmund~/sigmund~.c @@ -26,13 +26,13 @@ for example, defines this in the file d_fft_mayer.c or d_fft_fftsg.c. */ #include #include #include -#ifdef NT +#ifdef _WIN32 #include #else #include #endif #include -#ifdef NT +#ifdef _MSC_VER #pragma warning( disable : 4244 ) #pragma warning( disable : 4305 ) #endif @@ -1395,7 +1395,7 @@ void sigmund_tilde_setup(void) gensym("print"), 0); class_addmethod(sigmund_class, (t_method)sigmund_printnext, gensym("printnext"), A_FLOAT, 0); - post("sigmund~ version 0.06"); + post("sigmund~ version 0.07"); } #endif /* PD */ @@ -1429,6 +1429,10 @@ static t_int *sigmund_perform(t_int *w) int n = (int)(w[3]), j; int infill = x->x_infill; float *fp = x->x_inbuf2 + infill; + + if (x->x_obj.z_disabled) /* return if in muted MSP subpatch -Rd */ + return (w+4); + if (infill < 0 || infill >= x->x_npts) infill = 0; /* for some reason this sometimes happens: */ @@ -1642,7 +1646,7 @@ int main() class_register(CLASS_BOX, c); sigmund_class = c; - post("sigmund~ v0.06"); + post("sigmund~ version 0.07"); return (0); } diff --git a/pd/src/configure.in b/pd/src/configure.in index dfc1b862..e4f4edd7 100644 --- a/pd/src/configure.in +++ b/pd/src/configure.in @@ -247,7 +247,7 @@ dnl This should be fixed so Pd can use ALSA shared libraries where appropriate. binarymode="-m4755" fi STRIPFLAG=-s - GUINAME="pd-gui" + GUINAME="" if test x$USE_DEBUG_CFLAGS = "xyes"; then MORECFLAGS=$MORECFLAGS" -g" diff --git a/pd/src/g_editor.c b/pd/src/g_editor.c index 7ef5266a..0890d465 100644 --- a/pd/src/g_editor.c +++ b/pd/src/g_editor.c @@ -2251,6 +2251,8 @@ restore: static void canvas_cut(t_canvas *x) { + if (!x->gl_editor) /* ignore if invisible */ + return; if (x->gl_editor && x->gl_editor->e_selectedline) canvas_clearline(x); else if (x->gl_editor->e_textedfor) @@ -2343,6 +2345,8 @@ static void canvas_paste(t_canvas *x) static void canvas_duplicate(t_canvas *x) { + if (!x->gl_editor) + return; if (x->gl_editor->e_onmotion == MA_NONE && x->gl_editor->e_selection) { t_selection *y; @@ -2360,6 +2364,8 @@ static void canvas_duplicate(t_canvas *x) static void canvas_selectall(t_canvas *x) { t_gobj *y; + if (!x->gl_editor) + return; if (!x->gl_edit) canvas_editmode(x, 1); /* if everyone is already selected deselect everyone */ diff --git a/pd/src/makefile.in b/pd/src/makefile.in index 7713be99..ed0f5b7c 100644 --- a/pd/src/makefile.in +++ b/pd/src/makefile.in @@ -1,3 +1,8 @@ +# On Mac OS X, this needs to be defined to enable dlopen and weak linking +# support. Its safe on other platforms since gcc only checks this env var on +# Apple's gcc. +export MACOSX_DEPLOYMENT_TARGET = 10.3 + VPATH = ../obj:./ OBJ_DIR = ../obj BIN_DIR = ../bin @@ -149,9 +154,8 @@ BINARYMODE=@binarymode@ ABOUT_FILE=$(DESTDIR)$(pddocdir)/1.manual/1.introduction.txt install: all install -d $(DESTDIR)$(libpdbindir) - install $(BIN_DIR)/$(GUINAME) $(DESTDIR)$(libpdbindir)/$(GUINAME) + -install $(BIN_DIR)/$(GUINAME) $(DESTDIR)$(libpdbindir)/$(GUINAME) install $(BIN_DIR)/pd-watchdog $(DESTDIR)$(libpdbindir)/pd-watchdog - install -m644 $(BIN_DIR)/pd.tk $(DESTDIR)$(libpdbindir)/pd.tk install -d $(DESTDIR)$(bindir) install $(BINARYMODE) $(PDEXEC) $(DESTDIR)$(bindir)/pd install -m755 $(BIN_DIR)/pdsend $(DESTDIR)$(bindir)/pdsend diff --git a/pd/src/s_inter.c b/pd/src/s_inter.c index 1f17ce70..1549f9de 100644 --- a/pd/src/s_inter.c +++ b/pd/src/s_inter.c @@ -272,7 +272,7 @@ void sys_setalarm(int microsec) #endif -#ifdef __linux +#ifdef __linux__ #if defined(_POSIX_PRIORITY_SCHEDULING) || defined(_POSIX_MEMLOCK) #include @@ -1063,12 +1063,12 @@ int sys_startgui(const char *libdir) if (stat(wish_paths[i], &statbuf) >= 0) break; } - sprintf(cmdbuf,"\"%s\" %s/tcl/pd.tcl %d\n", wish_paths[i], + sprintf(cmdbuf,"\"%s\" %s/tcl/pd-gui.tcl %d\n", wish_paths[i], libdir, portno); #else sprintf(cmdbuf, "TCL_LIBRARY=\"%s/lib/tcl/library\" TK_LIBRARY=\"%s/lib/tk/library\" \ - wish \"%s/tcl/pd.tcl\" %d\n", + wish \"%s/tcl/pd-gui.tcl\" %d\n", libdir, libdir, libdir, portno); #endif sys_guicmd = cmdbuf; @@ -1116,7 +1116,7 @@ int sys_startgui(const char *libdir) strcpy(scriptbuf, "\""); strcat(scriptbuf, libdir); - strcat(scriptbuf, "/" PDTCLDIR "pd.tcl\""); + strcat(scriptbuf, "/" PDTCLDIR "pd-gui.tcl\""); sys_bashfilename(scriptbuf, scriptbuf); sprintf(portbuf, "%d", portno); diff --git a/pd/src/s_main.c b/pd/src/s_main.c index 058f0232..a1e5af2a 100644 --- a/pd/src/s_main.c +++ b/pd/src/s_main.c @@ -483,12 +483,12 @@ void sys_findprogdir(char *progname) "gui" directory. In "simple" unix installations, the layout is .../bin/pd .../bin/pd-watchdog (etc) - .../tcl/pd.tcl + .../tcl/pd-gui.tcl .../doc and in "complicated" unix installations, it's: .../bin/pd .../lib/pd/bin/pd-watchdog - .../lib/tcl/pd.tcl + .../lib/tcl/pd-gui.tcl .../lib/pd/doc To decide which, we stat .../lib/pd; if that exists, we assume it's the complicated layout. In MSW, it's the "simple" layout, but diff --git a/pd/tcl/AppMain.tcl b/pd/tcl/AppMain.tcl index 26adc832..b170c6f5 100644 --- a/pd/tcl/AppMain.tcl +++ b/pd/tcl/AppMain.tcl @@ -7,8 +7,7 @@ puts --------------------------AppMain.tcl----------------------------------- catch {console show} -# FIXME apple_events must require a newer tcl than 8.4? -# package require apple_events +package require apple_events puts "AppMain.tcl" puts "argv0: $argv0" @@ -21,7 +20,7 @@ if {[string first "-psn" [lindex $argv 0]] == 0} { set argc [expr $argc - 1] } -# launch pd.tk here -if [catch {source [file join [file dirname [info script]] ../tcl/pd.tcl]}] { +# launch pd-gui.tcl here +if [catch {source [file join [file dirname [info script]] pd-gui.tcl]}] { puts stderr $errorInfo } diff --git a/pd/tcl/apple_events.tcl b/pd/tcl/apple_events.tcl index b52dcdba..cfc92982 100644 --- a/pd/tcl/apple_events.tcl +++ b/pd/tcl/apple_events.tcl @@ -29,14 +29,14 @@ proc ::tk::mac::OnShow {} { # kAEShowPreferences proc ::tk::mac::ShowPreferences {} { - menu_preferences_panel + menu_preferences_dialog } # kAEQuitApplication #proc ::tk::mac::Quit {} { -# # TODO sort this out... how to quit pd-gui after sending the message -# puts stderr "Custom exit proc" -# pdsend "pd verifyquit" +# # TODO sort this out... how to quit pd-gui after sending the message +# puts stderr "Custom exit proc" +# pdsend "pd verifyquit" #} # these I gleaned by reading the source (tkMacOSXHLEvents.c) diff --git a/pd/tcl/dialog_array.tcl b/pd/tcl/dialog_array.tcl new file mode 100644 index 00000000..87b2de8c --- /dev/null +++ b/pd/tcl/dialog_array.tcl @@ -0,0 +1,328 @@ +package provide dialog_array 0.1 + +namespace eval ::dialog_array:: { + namespace export pdtk_array_dialog + namespace export pdtk_array_listview_new + namespace export pdtk_array_listview_fillpage + namespace export pdtk_array_listview_setpage + namespace export pdtk_array_listview_closeWindow +} + +# global variables for the listview +array set pd_array_listview_entry {} +array set pd_array_listview_id {} +array set pd_array_listview_page {} +set pd_array_listview_pagesize 0 +# this stores the state of the "save me" check button +array set saveme_button {} +# this stores the state of the "draw as" radio buttons +array set drawas_button {} +# this stores the state of the "in new graph"/"in last graph" radio buttons +# and the "delete array" checkbutton +array set otherflag_button {} + +# TODO figure out how to escape $ args so sharptodollar() isn't needed + +############ pdtk_array_dialog -- dialog window for arrays ######### + +proc ::dialog_array::pdtk_array_listview_setpage {arrayName page} { + set ::pd_array_listview_page($arrayName) $page +} + +proc ::dialog_array::listview_changepage {arrayName np} { + pdtk_array_listview_setpage \ + $arrayName [expr $::pd_array_listview_page($arrayName) + $np] + pdtk_array_listview_fillpage $arrayName +} + +proc ::dialog_array::pdtk_array_listview_fillpage {arrayName} { + set windowName [format ".%sArrayWindow" $arrayName] + set topItem [expr [lindex [$windowName.lb yview] 0] * \ + [$windowName.lb size]] + + if {[winfo exists $windowName]} { + set cmd "$::pd_array_listview_id($arrayName) \ + arrayviewlistfillpage \ + $::pd_array_listview_page($arrayName) \ + $topItem" + + pdsend $cmd + } +} + +proc ::dialog_array::pdtk_array_listview_new {id arrayName page} { + set ::pd_array_listview_page($arrayName) $page + set ::pd_array_listview_id($arrayName) $id + set windowName [format ".%sArrayWindow" $arrayName] + if [winfo exists $windowName] then [destroy $windowName] + toplevel $windowName -class DialogWindow + wm group $windowName . + wm protocol $windowName WM_DELETE_WINDOW \ + "::dialog_array::listview_close $id $arrayName" + wm title $windowName [concat $arrayName "(list view)"] + # FIXME + set font 12 + set $windowName.lb [listbox $windowName.lb -height 20 -width 25\ + -selectmode extended \ + -relief solid -background white -borderwidth 1 \ + -font [format {{%s} %d %s} $::font_family $font $::font_weight]\ + -yscrollcommand "$windowName.lb.sb set"] + set $windowName.lb.sb [scrollbar $windowName.lb.sb \ + -command "$windowName.lb yview" -orient vertical] + place configure $windowName.lb.sb -relheight 1 -relx 0.9 -relwidth 0.1 + pack $windowName.lb -expand 1 -fill both + bind $windowName.lb \ + "::dialog_array::listview_edit $arrayName $page $font" + # handle copy/paste + switch -- $::windowingsystem { + "x11" {selection handle $windowName.lb \ + "::dialog_array::listview_lbselection $arrayName"} + "win32" {bind $windowName.lb \ + "::dialog_array::listview_popup $arrayName"} + } + set $windowName.prevBtn [button $windowName.prevBtn -text "<-" \ + -command "::dialog_array::listview_changepage $arrayName -1"] + set $windowName.nextBtn [button $windowName.nextBtn -text "->" \ + -command "::dialog_array::listview_changepage $arrayName 1"] + pack $windowName.prevBtn -side left -ipadx 20 -pady 10 -anchor s + pack $windowName.nextBtn -side right -ipadx 20 -pady 10 -anchor s + focus $windowName +} + +proc ::dialog_array::listview_lbselection {arrayName off size} { + set windowName [format ".%sArrayWindow" $arrayName] + set itemNums [$windowName.lb curselection] + set cbString "" + for {set i 0} {$i < [expr [llength $itemNums] - 1]} {incr i} { + set listItem [$windowName.lb get [lindex $itemNums $i]] + append cbString [string range $listItem \ + [expr [string first ") " $listItem] + 2] \ + end] + append cbString "\n" + } + set listItem [$windowName.lb get [lindex $itemNums $i]] + append cbString [string range $listItem \ + [expr [string first ") " $listItem] + 2] \ + end] + set last $cbString +} + +# Win32 uses a popup menu for copy/paste +proc ::dialog_array::listview_popup {arrayName} { + set windowName [format ".%sArrayWindow" $arrayName] + if [winfo exists $windowName.popup] then [destroy $windowName.popup] + menu $windowName.popup -tearoff false + $windowName.popup add command -label [_ "Copy"] \ + -command "::dialog_array::listview_copy $arrayName; \ + destroy $windowName.popup" + $windowName.popup add command -label [_ "Paste"] \ + -command "::dialog_array::listview_paste $arrayName; \ + destroy $windowName.popup" + tk_popup $windowName.popup [winfo pointerx $windowName] \ + [winfo pointery $windowName] 0 +} + +proc ::dialog_array::listview_copy {arrayName} { + set windowName [format ".%sArrayWindow" $arrayName] + set itemNums [$windowName.lb curselection] + set cbString "" + for {set i 0} {$i < [expr [llength $itemNums] - 1]} {incr i} { + set listItem [$windowName.lb get [lindex $itemNums $i]] + append cbString [string range $listItem \ + [expr [string first ") " $listItem] + 2] \ + end] + append cbString "\n" + } + set listItem [$windowName.lb get [lindex $itemNums $i]] + append cbString [string range $listItem \ + [expr [string first ") " $listItem] + 2] \ + end] + clipboard clear + clipboard append $cbString +} + +proc ::dialog_array::listview_paste {arrayName} { + set cbString [selection get -selection CLIPBOARD] + set lbName [format ".%sArrayWindow.lb" $arrayName] + set itemNum [lindex [$lbName curselection] 0] + set splitChars ", \n" + set itemString [split $cbString $splitChars] + set flag 1 + for {set i 0; set counter 0} {$i < [llength $itemString]} {incr i} { + if {[lindex $itemString $i] ne {}} { + pdsend "$arrayName [expr $itemNum + \ + [expr $counter + \ + [expr $::pd_array_listview_pagesize \ + * $::pd_array_listview_page($arrayName)]]] \ + [lindex $itemString $i]" + incr counter + set flag 0 + } + } +} + +proc ::dialog_array::listview_edit {arrayName page font} { + set lbName [format ".%sArrayWindow.lb" $arrayName] + if {[winfo exists $lbName.entry]} { + ::dialog_array::listview_update_entry \ + $arrayName $::pd_array_listview_entry($arrayName) + unset ::pd_array_listview_entry($arrayName) + } + set itemNum [$lbName index active] + set ::pd_array_listview_entry($arrayName) $itemNum + set bbox [$lbName bbox $itemNum] + set y [expr [lindex $bbox 1] - 4] + set $lbName.entry [entry $lbName.entry \ + -font [format {{%s} %d %s} $::font_family $font $::font_weight]] + $lbName.entry insert 0 [] + place configure $lbName.entry -relx 0 -y $y -relwidth 1 + lower $lbName.entry + focus $lbName.entry + bind $lbName.entry \ + "::dialog_array::listview_update_entry $arrayName $itemNum;" +} + +proc ::dialog_array::listview_update_entry {arrayName itemNum} { + set lbName [format ".%sArrayWindow.lb" $arrayName] + set splitChars ", \n" + set itemString [split [$lbName.entry get] $splitChars] + set flag 1 + for {set i 0; set counter 0} {$i < [llength $itemString]} {incr i} { + if {[lindex $itemString $i] ne {}} { + pdsend "$arrayName [expr $itemNum + \ + [expr $counter + \ + [expr $::pd_array_listview_pagesize \ + * $::pd_array_listview_page($arrayName)]]] \ + [lindex $itemString $i]" + incr counter + set flag 0 + } + } + pdtk_array_listview_fillpage $arrayName + destroy $lbName.entry +} + +proc ::dialog_array::pdtk_array_listview_closeWindow {arrayName} { + set mytoplevel [format ".%sArrayWindow" $arrayName] + destroy $mytoplevel +} + +proc ::dialog_array::listview_close {mytoplevel arrayName} { + pdtk_array_listview_closeWindow $arrayName + pdsend "$mytoplevel arrayviewclose" +} + +proc ::dialog_array::apply {mytoplevel} { +# TODO figure out how to ditch this escaping mechanism + set mofo [$mytoplevel.name.entry get] + if {[string index $mofo 0] == "$"} { + set mofo [string replace $mofo 0 0 #] } + + pdsend "$mytoplevel arraydialog \ + $mofo \ + [$mytoplevel.size.entry get] \ + [expr $::saveme_button($mytoplevel) + (2 * $::drawas_button($mytoplevel))] \ + $::otherflag_button($mytoplevel)" +} + +proc ::dialog_array::openlistview {mytoplevel} { + pdsend "$mytoplevel arrayviewlistnew" +} + +proc ::dialog_array::cancel {mytoplevel} { + pdsend "$mytoplevel cancel" +} + +proc ::dialog_array::ok {mytoplevel} { + ::dialog_array::apply $mytoplevel + ::dialog_array::cancel $mytoplevel +} + +proc ::dialog_array::pdtk_array_dialog {mytoplevel name size flags newone} { +puts "::dialog_array::pdtk_array_dialog {$mytoplevel $name $size $flags $newone}" + if {[winfo exists $mytoplevel]} { + wm deiconify $mytoplevel + raise $mytoplevel + } else { + create_dialog $mytoplevel $newone + } + + $mytoplevel.name.entry insert 0 $name + $mytoplevel.size.entry insert 0 $size + set ::saveme_button($mytoplevel) [expr $flags & 1] + set ::drawas_button($mytoplevel) [expr ( $flags & 6 ) >> 1] + set ::otherflag_button($mytoplevel) 0 +# pd -> tcl +# 2 * (int)(template_getfloat(template_findbyname(sc->sc_template), gensym("style"), x->x_scalar->sc_vec, 1))); + +# tcl->pd +# int style = ((flags & 6) >> 1); +} + +proc ::dialog_array::create_dialog {mytoplevel newone} { + toplevel $mytoplevel -class DialogWindow + wm title $mytoplevel [_ "Array Properties"] + if {$::windowingsystem eq "aqua"} {$mytoplevel configure -menu .menubar} + ::pd_bindings::dialog_bindings $mytoplevel "array" + + frame $mytoplevel.name + pack $mytoplevel.name -side top + label $mytoplevel.name.label -text [_ "Name:"] + entry $mytoplevel.name.entry + pack $mytoplevel.name.label $mytoplevel.name.entry -anchor w + + frame $mytoplevel.size + pack $mytoplevel.size -side top + label $mytoplevel.size.label -text [_ "Size:"] + entry $mytoplevel.size.entry + pack $mytoplevel.size.label $mytoplevel.size.entry -anchor w + + checkbutton $mytoplevel.saveme -text [_ "Save contents"] \ + -variable ::saveme_button($mytoplevel) -anchor w + pack $mytoplevel.saveme -side top + + labelframe $mytoplevel.drawas -text [_ "Draw as:"] -padx 20 -borderwidth 1 + pack $mytoplevel.drawas -side top -fill x + radiobutton $mytoplevel.drawas.points -value 0 \ + -variable ::drawas_button($mytoplevel) -text [_ "Points"] + radiobutton $mytoplevel.drawas.polygon -value 1 \ + -variable ::drawas_button($mytoplevel) -text [_ "Polygon"] + radiobutton $mytoplevel.drawas.bezier -value 2 \ + -variable ::drawas_button($mytoplevel) -text [_ "Bezier curve"] + pack $mytoplevel.drawas.points -side top -anchor w + pack $mytoplevel.drawas.polygon -side top -anchor w + pack $mytoplevel.drawas.bezier -side top -anchor w + + if {$newone != 0} { + labelframe $mytoplevel.radio -text [_ "Put array into:"] -padx 20 -borderwidth 1 + pack $mytoplevel.radio -side top -fill x + radiobutton $mytoplevel.radio.radio0 -value 0 \ + -variable ::otherflag_button($mytoplevel) -text [_ "New graph"] + radiobutton $mytoplevel.radio.radio1 -value 1 \ + -variable ::otherflag_button($mytoplevel) -text [_ "Last graph"] + pack $mytoplevel.radio.radio0 -side top -anchor w + pack $mytoplevel.radio.radio1 -side top -anchor w + } else { + checkbutton $mytoplevel.deletearray -text [_ "Delete array"] \ + -variable ::otherflag_button($mytoplevel) -anchor w + pack $mytoplevel.deletearray -side top + } + # jsarlo + if {$newone == 0} { + button $mytoplevel.listview -text [_ "Open List View..."] \ + -command "::dialog_array::openlistview $mytoplevel [$mytoplevel.name.entry get]" + pack $mytoplevel.listview -side top + } + # end jsarlo + frame $mytoplevel.buttonframe + pack $mytoplevel.buttonframe -side bottom -fill x -pady 2m + button $mytoplevel.buttonframe.cancel -text [_ "Cancel"] \ + -command "::dialog_array::cancel $mytoplevel" + if {$newone == 0} {button $mytoplevel.buttonframe.apply -text [_ "Apply"] \ + -command "::dialog_array::apply $mytoplevel"} + button $mytoplevel.buttonframe.ok -text [_ "OK"]\ + -command "::dialog_array::ok $mytoplevel" + pack $mytoplevel.buttonframe.cancel -side left -expand 1 + if {$newone == 0} {pack $mytoplevel.buttonframe.apply -side left -expand 1} + pack $mytoplevel.buttonframe.ok -side left -expand 1 +} diff --git a/pd/tcl/dialog_audio.tcl b/pd/tcl/dialog_audio.tcl new file mode 100644 index 00000000..1025f66e --- /dev/null +++ b/pd/tcl/dialog_audio.tcl @@ -0,0 +1,298 @@ +package provide dialog_audio 0.1 + +namespace eval ::dialog_audio:: { + namespace export pdtk_audio_dialog +} + +# TODO this panel really needs some reworking, it works but the code is +# very unreadable + +####################### audio dialog ##################3 + +proc ::dialog_audio::apply {id} { + global audio_indev1 audio_indev2 audio_indev3 audio_indev4 + global audio_inchan1 audio_inchan2 audio_inchan3 audio_inchan4 + global audio_inenable1 audio_inenable2 audio_inenable3 audio_inenable4 + global audio_outdev1 audio_outdev2 audio_outdev3 audio_outdev4 + global audio_outchan1 audio_outchan2 audio_outchan3 audio_outchan4 + global audio_outenable1 audio_outenable2 audio_outenable3 audio_outenable4 + global audio_sr audio_advance audio_callback + + pdsend "pd audio-dialog \ + $audio_indev1 \ + $audio_indev2 \ + $audio_indev3 \ + $audio_indev4 \ + [expr $audio_inchan1 * ( $audio_inenable1 ? 1 : -1 ) ]\ + [expr $audio_inchan2 * ( $audio_inenable2 ? 1 : -1 ) ]\ + [expr $audio_inchan3 * ( $audio_inenable3 ? 1 : -1 ) ]\ + [expr $audio_inchan4 * ( $audio_inenable4 ? 1 : -1 ) ]\ + $audio_outdev1 \ + $audio_outdev2 \ + $audio_outdev3 \ + $audio_outdev4 \ + [expr $audio_outchan1 * ( $audio_outenable1 ? 1 : -1 ) ]\ + [expr $audio_outchan2 * ( $audio_outenable2 ? 1 : -1 ) ]\ + [expr $audio_outchan3 * ( $audio_outenable3 ? 1 : -1 ) ]\ + [expr $audio_outchan4 * ( $audio_outenable4 ? 1 : -1 ) ]\ + $audio_sr \ + $audio_advance \ + $audio_callback" +} + +proc ::dialog_audio::cancel {id} { + pdsend "$id cancel" +} + +proc ::dialog_audio::ok {id} { + ::dialog_audio::apply $id + ::dialog_audio::cancel $id +} + +# callback from popup menu +proc audio_popup_action {buttonname varname devlist index} { + global audio_indevlist audio_outdevlist $varname + $buttonname configure -text [lindex $devlist $index] + set $varname $index +} + +# create a popup menu +proc audio_popup {name buttonname varname devlist} { + if [winfo exists $name.popup] {destroy $name.popup} + menu $name.popup -tearoff false + if {$::windowingsystem eq "win32"} { + $name.popup configure -font menuFont + } + for {set x 0} {$x<[llength $devlist]} {incr x} { + $name.popup add command -label [lindex $devlist $x] \ + -command [list audio_popup_action \ + $buttonname $varname $devlist $x] + } + tk_popup $name.popup [winfo pointerx $name] [winfo pointery $name] 0 +} + +# start a dialog window to select audio devices and settings. "multi" +# is 0 if only one device is allowed; 1 if one apiece may be specified for +# input and output; and 2 if we can select multiple devices. "longform" +# (which only makes sense if "multi" is 2) asks us to make controls for +# opening several devices; if not, we get an extra button to turn longform +# on and restart the dialog. + +proc ::dialog_audio::pdtk_audio_dialog {id indev1 indev2 indev3 indev4 \ + inchan1 inchan2 inchan3 inchan4 \ + outdev1 outdev2 outdev3 outdev4 \ + outchan1 outchan2 outchan3 outchan4 sr advance multi callback \ + longform} { + global audio_indev1 audio_indev2 audio_indev3 audio_indev4 + global audio_inchan1 audio_inchan2 audio_inchan3 audio_inchan4 + global audio_inenable1 audio_inenable2 audio_inenable3 audio_inenable4 + global audio_outdev1 audio_outdev2 audio_outdev3 audio_outdev4 + global audio_outchan1 audio_outchan2 audio_outchan3 audio_outchan4 + global audio_outenable1 audio_outenable2 audio_outenable3 audio_outenable4 + global audio_sr audio_advance audio_callback + global audio_indevlist audio_outdevlist + global pd_indev pd_outdev + global audio_longform + + set audio_indev1 $indev1 + set audio_indev2 $indev2 + set audio_indev3 $indev3 + set audio_indev4 $indev4 + + set audio_inchan1 [expr ( $inchan1 > 0 ? $inchan1 : -$inchan1 ) ] + set audio_inenable1 [expr $inchan1 > 0 ] + set audio_inchan2 [expr ( $inchan2 > 0 ? $inchan2 : -$inchan2 ) ] + set audio_inenable2 [expr $inchan2 > 0 ] + set audio_inchan3 [expr ( $inchan3 > 0 ? $inchan3 : -$inchan3 ) ] + set audio_inenable3 [expr $inchan3 > 0 ] + set audio_inchan4 [expr ( $inchan4 > 0 ? $inchan4 : -$inchan4 ) ] + set audio_inenable4 [expr $inchan4 > 0 ] + + set audio_outdev1 $outdev1 + set audio_outdev2 $outdev2 + set audio_outdev3 $outdev3 + set audio_outdev4 $outdev4 + + set audio_outchan1 [expr ( $outchan1 > 0 ? $outchan1 : -$outchan1 ) ] + set audio_outenable1 [expr $outchan1 > 0 ] + set audio_outchan2 [expr ( $outchan2 > 0 ? $outchan2 : -$outchan2 ) ] + set audio_outenable2 [expr $outchan2 > 0 ] + set audio_outchan3 [expr ( $outchan3 > 0 ? $outchan3 : -$outchan3 ) ] + set audio_outenable3 [expr $outchan3 > 0 ] + set audio_outchan4 [expr ( $outchan4 > 0 ? $outchan4 : -$outchan4 ) ] + set audio_outenable4 [expr $outchan4 > 0 ] + + set audio_sr $sr + set audio_advance $advance + set audio_callback $callback + + toplevel $id + wm title $id [_ "Audio Settings"] + if {$::windowingsystem eq "aqua"} {$id configure -menu .menubar} + ::pd_bindings::dialog_bindings $id "audio" + + frame $id.buttonframe + pack $id.buttonframe -side bottom -fill x -pady 2m + button $id.buttonframe.cancel -text [_ "Cancel"]\ + -command "::dialog_audio::cancel $id" + button $id.buttonframe.apply -text [_ "Apply"]\ + -command "::dialog_audio::apply $id" + button $id.buttonframe.ok -text [_ "OK"]\ + -command "::dialog_audio::ok $id" + button $id.buttonframe.save -text [_ "Save all settings"]\ + -command "::dialog_audio::apply $id \; pdsend \"pd save-preferences\"" + pack $id.buttonframe.cancel $id.buttonframe.apply $id.buttonframe.ok \ + $id.buttonframe.save -side left -expand 1 + + # sample rate and advance + frame $id.srf + pack $id.srf -side top + + label $id.srf.l1 -text [_ "Sample rate:"] + entry $id.srf.x1 -textvariable audio_sr -width 7 + label $id.srf.l2 -text [_ "Delay (msec):"] + entry $id.srf.x2 -textvariable audio_advance -width 4 + pack $id.srf.l1 $id.srf.x1 $id.srf.l2 $id.srf.x2 -side left + if {$audio_callback >= 0} { + checkbutton $id.srf.x3 -variable audio_callback \ + -text [_ "Use callbacks"] -anchor e + pack $id.srf.x3 -side left + } + # input device 1 + frame $id.in1f + pack $id.in1f -side top + + checkbutton $id.in1f.x0 -variable audio_inenable1 \ + -text [_ "Input device 1:"] -anchor e + button $id.in1f.x1 -text [lindex $audio_indevlist $audio_indev1] \ + -command [list audio_popup $id $id.in1f.x1 audio_indev1 $audio_indevlist] + label $id.in1f.l2 -text [_ "Channels:"] + entry $id.in1f.x2 -textvariable audio_inchan1 -width 3 + pack $id.in1f.x0 $id.in1f.x1 $id.in1f.l2 $id.in1f.x2 -side left -fill x + + # input device 2 + if {$longform && $multi > 1 && [llength $audio_indevlist] > 1} { + frame $id.in2f + pack $id.in2f -side top + + checkbutton $id.in2f.x0 -variable audio_inenable2 \ + -text [_ "Input device 2:"] -anchor e + button $id.in2f.x1 -text [lindex $audio_indevlist $audio_indev2] \ + -command [list audio_popup $id $id.in2f.x1 audio_indev2 \ + $audio_indevlist] + label $id.in2f.l2 -text [_ "Channels:"] + entry $id.in2f.x2 -textvariable audio_inchan2 -width 3 + pack $id.in2f.x0 $id.in2f.x1 $id.in2f.l2 $id.in2f.x2 -side left -fill x + } + + # input device 3 + if {$longform && $multi > 1 && [llength $audio_indevlist] > 2} { + frame $id.in3f + pack $id.in3f -side top + + checkbutton $id.in3f.x0 -variable audio_inenable3 \ + -text [_ "Input device 3:"] -anchor e + button $id.in3f.x1 -text [lindex $audio_indevlist $audio_indev3] \ + -command [list audio_popup $id $id.in3f.x1 audio_indev3 \ + $audio_indevlist] + label $id.in3f.l2 -text [_ "Channels:"] + entry $id.in3f.x2 -textvariable audio_inchan3 -width 3 + pack $id.in3f.x0 $id.in3f.x1 $id.in3f.l2 $id.in3f.x2 -side left + } + + # input device 4 + if {$longform && $multi > 1 && [llength $audio_indevlist] > 3} { + frame $id.in4f + pack $id.in4f -side top + + checkbutton $id.in4f.x0 -variable audio_inenable4 \ + -text [_ "Input device 4:"] -anchor e + button $id.in4f.x1 -text [lindex $audio_indevlist $audio_indev4] \ + -command [list audio_popup $id $id.in4f.x1 audio_indev4 \ + $audio_indevlist] + label $id.in4f.l2 -text [_ "Channels:"] + entry $id.in4f.x2 -textvariable audio_inchan4 -width 3 + pack $id.in4f.x0 $id.in4f.x1 $id.in4f.l2 $id.in4f.x2 -side left + } + + # output device 1 + frame $id.out1f + pack $id.out1f -side top + + checkbutton $id.out1f.x0 -variable audio_outenable1 \ + -text [_ "Output device 1:"] -anchor e + if {$multi == 0} { + label $id.out1f.l1 \ + -text [_ "(same as input device) .............. "] + } else { + button $id.out1f.x1 -text [lindex $audio_outdevlist $audio_outdev1] \ + -command [list audio_popup $id $id.out1f.x1 audio_outdev1 \ + $audio_outdevlist] + } + label $id.out1f.l2 -text [_ "Channels:"] + entry $id.out1f.x2 -textvariable audio_outchan1 -width 3 + if {$multi == 0} { + pack $id.out1f.x0 $id.out1f.l1 $id.out1f.x2 -side left -fill x + } else { + pack $id.out1f.x0 $id.out1f.x1 $id.out1f.l2 $id.out1f.x2 -side left -fill x + } + + # output device 2 + if {$longform && $multi > 1 && [llength $audio_outdevlist] > 1} { + frame $id.out2f + pack $id.out2f -side top + + checkbutton $id.out2f.x0 -variable audio_outenable2 \ + -text [_ "Output device 2:"] -anchor e + button $id.out2f.x1 -text [lindex $audio_outdevlist $audio_outdev2] \ + -command \ + [list audio_popup $id $id.out2f.x1 audio_outdev2 $audio_outdevlist] + label $id.out2f.l2 -text [_ "Channels:"] + entry $id.out2f.x2 -textvariable audio_outchan2 -width 3 + pack $id.out2f.x0 $id.out2f.x1 $id.out2f.l2 $id.out2f.x2 -side left + } + + # output device 3 + if {$longform && $multi > 1 && [llength $audio_outdevlist] > 2} { + frame $id.out3f + pack $id.out3f -side top + + checkbutton $id.out3f.x0 -variable audio_outenable3 \ + -text [_ "Output device 3:"] -anchor e + button $id.out3f.x1 -text [lindex $audio_outdevlist $audio_outdev3] \ + -command \ + [list audio_popup $id $id.out3f.x1 audio_outdev3 $audio_outdevlist] + label $id.out3f.l2 -text [_ "Channels:"] + entry $id.out3f.x2 -textvariable audio_outchan3 -width 3 + pack $id.out3f.x0 $id.out3f.x1 $id.out3f.l2 $id.out3f.x2 -side left + } + + # output device 4 + if {$longform && $multi > 1 && [llength $audio_outdevlist] > 3} { + frame $id.out4f + pack $id.out4f -side top + + checkbutton $id.out4f.x0 -variable audio_outenable4 \ + -text [_ "Output device 4:"] -anchor e + button $id.out4f.x1 -text [lindex $audio_outdevlist $audio_outdev4] \ + -command \ + [list audio_popup $id $id.out4f.x1 audio_outdev4 $audio_outdevlist] + label $id.out4f.l2 -text [_ "Channels:"] + entry $id.out4f.x2 -textvariable audio_outchan4 -width 3 + pack $id.out4f.x0 $id.out4f.x1 $id.out4f.l2 $id.out4f.x2 -side left + } + + # if not the "long form" but if "multi" is 2, make a button to + # restart with longform set. + + if {$longform == 0 && $multi > 1} { + frame $id.longbutton + pack $id.longbutton -side top + button $id.longbutton.b -text [_ "Use multiple devices"] \ + -command {pdsend "pd audio-properties 1"} + pack $id.longbutton.b + } + $id.srf.x1 select from 0 + $id.srf.x1 select adjust end + focus $id.srf.x1 +} diff --git a/pd/tcl/dialog_canvas.tcl b/pd/tcl/dialog_canvas.tcl new file mode 100644 index 00000000..06444807 --- /dev/null +++ b/pd/tcl/dialog_canvas.tcl @@ -0,0 +1,213 @@ + +# TODO offset this panel so it doesn't overlap the pdtk_array panel + +package provide dialog_canvas 0.1 + +namespace eval ::dialog_canvas:: { + namespace export pdtk_canvas_dialog +} + +# global variables to store checkbox state on canvas properties window. These +# are only used in the context of getting data from the checkboxes, so they +# aren't really useful elsewhere. It would be nice to have them globally +# useful, but that would mean changing the C code. +array set graphme_button {} +array set hidetext_button {} + +############# pdtk_canvas_dialog -- dialog window for canvases ################# + +proc ::dialog_canvas::apply {mytoplevel} { + pdsend "$mytoplevel donecanvasdialog \ + [$mytoplevel.scale.x.entry get] \ + [$mytoplevel.scale.y.entry get] \ + [expr $::graphme_button($mytoplevel) + 2 * $::hidetext_button($mytoplevel)] \ + [$mytoplevel.range.x.from_entry get] \ + [$mytoplevel.range.y.from_entry get] \ + [$mytoplevel.range.x.to_entry get] \ + [$mytoplevel.range.y.to_entry get] \ + [$mytoplevel.range.x.size_entry get] \ + [$mytoplevel.range.y.size_entry get] \ + [$mytoplevel.range.x.margin_entry get] \ + [$mytoplevel.range.y.margin_entry get]" +} + +proc ::dialog_canvas::cancel {mytoplevel} { + pdsend "$mytoplevel cancel" +} + +proc ::dialog_canvas::ok {mytoplevel} { + ::dialog_canvas::apply $mytoplevel + ::dialog_canvas::cancel $mytoplevel +} + +proc ::dialog_canvas::checkcommand {mytoplevel} { + if { $::graphme_button($mytoplevel) != 0 } { + $mytoplevel.scale.x.entry configure -state disabled + $mytoplevel.scale.y.entry configure -state disabled + $mytoplevel.parent.hidetext configure -state normal + $mytoplevel.range.x.from_entry configure -state normal + $mytoplevel.range.x.to_entry configure -state normal + $mytoplevel.range.x.size_entry configure -state normal + $mytoplevel.range.x.margin_entry configure -state normal + $mytoplevel.range.y.from_entry configure -state normal + $mytoplevel.range.y.to_entry configure -state normal + $mytoplevel.range.y.size_entry configure -state normal + $mytoplevel.range.y.margin_entry configure -state normal + if { [$mytoplevel.range.x.from_entry get] == 0 \ + && [$mytoplevel.range.y.from_entry get] == 0 \ + && [$mytoplevel.range.x.to_entry get] == 0 \ + && [$mytoplevel.range.y.to_entry get] == 0 } { + $mytoplevel.range.y.to_entry insert 0 1 + $mytoplevel.range.y.to_entry insert 0 1 + } + if { [$mytoplevel.range.x.size_entry get] == 0 } { + $mytoplevel.range.x.size_entry delete 0 end + $mytoplevel.range.x.margin_entry delete 0 end + $mytoplevel.range.x.size_entry insert 0 85 + $mytoplevel.range.x.margin_entry insert 0 100 + } + if { [$mytoplevel.range.y.size_entry get] == 0 } { + $mytoplevel.range.y.size_entry delete 0 end + $mytoplevel.range.y.margin_entry delete 0 end + $mytoplevel.range.y.size_entry insert 0 60 + $mytoplevel.range.y.margin_entry insert 0 100 + } + } else { + $mytoplevel.scale.x.entry configure -state normal + $mytoplevel.scale.y.entry configure -state normal + $mytoplevel.parent.hidetext configure -state disabled + $mytoplevel.range.x.from_entry configure -state disabled + $mytoplevel.range.x.to_entry configure -state disabled + $mytoplevel.range.x.size_entry configure -state disabled + $mytoplevel.range.x.margin_entry configure -state disabled + $mytoplevel.range.y.from_entry configure -state disabled + $mytoplevel.range.y.to_entry configure -state disabled + $mytoplevel.range.y.size_entry configure -state disabled + $mytoplevel.range.y.margin_entry configure -state disabled + if { [$mytoplevel.scale.x.entry get] == 0 } { + $mytoplevel.scale.x.entry delete 0 end + $mytoplevel.scale.x.entry insert 0 1 + } + if { [$mytoplevel.scale.y.entry get] == 0 } { + $mytoplevel.scale.y.entry delete 0 end + $mytoplevel.scale.y.entry insert 0 1 + } + } +} + +proc ::dialog_canvas::pdtk_canvas_dialog {mytoplevel xscale yscale graphmeflags \ + xfrom yfrom xto yto \ + xsize ysize xmargin ymargin} { + if {[winfo exists $mytoplevel]} { + wm deiconify $mytoplevel + raise $mytoplevel + } else { + create_dialog $mytoplevel + } + puts "canvas_dialog $mytoplevel" + switch -- $graphmeflags { + 0 { + $mytoplevel.parent.graphme deselect + $mytoplevel.parent.hidetext deselect + } 1 { + $mytoplevel.parent.graphme select + $mytoplevel.parent.hidetext deselect + } 2 { + $mytoplevel.parent.graphme deselect + $mytoplevel.parent.hidetext select + } 3 { + $mytoplevel.parent.graphme select + $mytoplevel.parent.hidetext select + } default { + pdtk_post "Warning: unknown graphme flags received in pdtk_canvas_dialog" + } + } + + $mytoplevel.scale.x.entry insert 0 $xscale + $mytoplevel.scale.y.entry insert 0 $yscale + $mytoplevel.range.x.from_entry insert 0 $xfrom + $mytoplevel.range.y.from_entry insert 0 $yfrom + $mytoplevel.range.x.to_entry insert 0 $xto + $mytoplevel.range.y.to_entry insert 0 $yto + $mytoplevel.range.x.size_entry insert 0 $xsize + $mytoplevel.range.y.size_entry insert 0 $ysize + $mytoplevel.range.x.margin_entry insert 0 $xsize + $mytoplevel.range.y.margin_entry insert 0 $ysize + + ::dialog_canvas::checkcommand $mytoplevel +} + +proc ::dialog_canvas::create_dialog {mytoplevel} { + toplevel $mytoplevel -class DialogWindow + wm title $mytoplevel [_ "Canvas Properties"] + if {$::windowingsystem eq "aqua"} {$mytoplevel configure -menu .menubar} + ::pd_bindings::dialog_bindings $mytoplevel "canvas" + + labelframe $mytoplevel.scale -text [_ "Scale"] -borderwidth 1 + pack $mytoplevel.scale -side top -fill x + frame $mytoplevel.scale.x -pady 2 -borderwidth 1 + pack $mytoplevel.scale.x -side top + label $mytoplevel.scale.x.label -text [_ "X units per pixel:"] + entry $mytoplevel.scale.x.entry -width 10 + pack $mytoplevel.scale.x.label $mytoplevel.scale.x.entry -side left + frame $mytoplevel.scale.y -pady 2 + pack $mytoplevel.scale.y -side top + label $mytoplevel.scale.y.label -text [_ "Y units per pixel:"] + entry $mytoplevel.scale.y.entry -width 10 + pack $mytoplevel.scale.y.label $mytoplevel.scale.y.entry -side left + + labelframe $mytoplevel.parent -text [_ "Appearance on parent patch"] -borderwidth 1 + pack $mytoplevel.parent -side top -fill x + checkbutton $mytoplevel.parent.graphme -text [_ "Graph-On-Parent"] \ + -anchor w -variable graphme_button($mytoplevel) \ + -command [concat ::dialog_canvas::checkcommand $mytoplevel] + pack $mytoplevel.parent.graphme -side top -fill x -padx 40 + checkbutton $mytoplevel.parent.hidetext -text [_ "Hide object name and arguments"] \ + -anchor w -variable hidetext_button($mytoplevel) \ + -command [concat ::dialog_canvas::checkcommand $mytoplevel] + pack $mytoplevel.parent.hidetext -side top -fill x -padx 40 + + labelframe $mytoplevel.range -text [_ "Range and size"] -borderwidth 1 + pack $mytoplevel.range -side top -fill x + frame $mytoplevel.range.x -padx 2 -pady 2 + pack $mytoplevel.range.x -side top + label $mytoplevel.range.x.from_label -text [_ "X range, from"] + entry $mytoplevel.range.x.from_entry -width 6 + label $mytoplevel.range.x.to_label -text [_ "to"] + entry $mytoplevel.range.x.to_entry -width 6 + label $mytoplevel.range.x.size_label -text [_ "Size:"] + entry $mytoplevel.range.x.size_entry -width 4 + label $mytoplevel.range.x.margin_label -text [_ "Margin:"] + entry $mytoplevel.range.x.margin_entry -width 4 + pack $mytoplevel.range.x.from_label $mytoplevel.range.x.from_entry \ + $mytoplevel.range.x.to_label $mytoplevel.range.x.to_entry \ + $mytoplevel.range.x.size_label $mytoplevel.range.x.size_entry \ + $mytoplevel.range.x.margin_label $mytoplevel.range.x.margin_entry \ + -side left + frame $mytoplevel.range.y -padx 2 -pady 2 + pack $mytoplevel.range.y -side top + label $mytoplevel.range.y.from_label -text [_ "Y range, from"] + entry $mytoplevel.range.y.from_entry -width 6 + label $mytoplevel.range.y.to_label -text [_ "to"] + entry $mytoplevel.range.y.to_entry -width 6 + label $mytoplevel.range.y.size_label -text [_ "Size:"] + entry $mytoplevel.range.y.size_entry -width 4 + label $mytoplevel.range.y.margin_label -text [_ "Margin:"] + entry $mytoplevel.range.y.margin_entry -width 4 + pack $mytoplevel.range.y.from_label $mytoplevel.range.y.from_entry \ + $mytoplevel.range.y.to_label $mytoplevel.range.y.to_entry \ + $mytoplevel.range.y.size_label $mytoplevel.range.y.size_entry \ + $mytoplevel.range.y.margin_label $mytoplevel.range.y.margin_entry \ + -side left + + frame $mytoplevel.buttons + pack $mytoplevel.buttons -side bottom -fill x -pady 2m + button $mytoplevel.buttons.cancel -text [_ "Cancel"] \ + -command "::dialog_canvas::cancel $mytoplevel" + button $mytoplevel.buttons.apply -text [_ "Apply"] \ + -command "::dialog_canvas::apply $mytoplevel" + button $mytoplevel.buttons.ok -text [_ "OK"] \ + -command "::dialog_canvas::ok $mytoplevel" + pack $mytoplevel.buttons.cancel $mytoplevel.buttons.apply \ + $mytoplevel.buttons.ok -side left -expand 1 + } diff --git a/pd/tcl/dialog_find.tcl b/pd/tcl/dialog_find.tcl index 92d58347..c7a708ae 100644 --- a/pd/tcl/dialog_find.tcl +++ b/pd/tcl/dialog_find.tcl @@ -4,42 +4,62 @@ package provide dialog_find 0.1 package require pd_bindings namespace eval ::dialog_find:: { + # store the state of the "Match whole word only" check box + variable wholeword_button 0 + # if the search hasn't changed, then the Find button sends "findagain" + variable previous_wholeword_button 0 + variable previous_findstring "" + namespace export menu_dialog_find } -# TODO figure out findagain -# TODO make targetlabel into a popup menu -# TODO make panel go away after a find +# TODO make find panel as small as possible, being topmost means its findable +# TODO (GNOME/Windows) find panel should retain focus after a find +# TODO (Mac OS X) hide panel after success, but stay if the find was unsuccessful -proc find_ok {mytoplevel} {::dialog_find::ok $mytoplevel} ;# TODO temp kludge proc ::dialog_find::ok {mytoplevel} { + variable wholeword_button + variable previous_wholeword_button + variable previous_findstring # find will be on top, so use the previous window that was on top set search_window [lindex [wm stackorder .] end-1] - if {$search_window eq "."} { - puts "search pd window not implemented yet" + puts "search_window $search_window" + set findstring [.find.entry get] + if {$findstring eq ""} {return} + if {$search_window eq ".pdwindow"} { + set matches [.pdwindow.text search -all -nocase -- $findstring 0.0] + .pdwindow.text tag delete sel + foreach match $matches { + .pdwindow.text tag add sel $match "$match wordend" + } + .pdwindow.text see [lindex $matches 0] } else { - puts "search_window $search_window" - set find_string [.find.entry get] - if {$find_string ne ""} { - pdsend "$search_window find $find_string" + if {$findstring eq $previous_findstring \ + && $wholeword_button == $previous_wholeword_button} { + pdsend "$search_window findagain" + } else { + # TODO switch back to this for 0.43: + #pdsend "$search_window find $findstring $wholeword_button" + pdsend "$search_window find $findstring" + set previous_findstring $findstring + set previous_wholeword_button $wholeword_button } } } -proc find_cancel {mytoplevel} {::dialog_find::cancel $mytoplevel} ;# TODO temp kludge proc ::dialog_find::cancel {mytoplevel} { wm withdraw .find } proc ::dialog_find::set_canvas_to_search {mytoplevel} { + # TODO rewrite using global $::focused_window if {[winfo exists .find.frame.targetlabel]} { set focusedtoplevel [winfo toplevel [lindex [wm stackorder .] end]] if {$focusedtoplevel eq ".find"} { set focusedtoplevel [winfo toplevel [lindex [wm stackorder .] end-1]] } - # TODO this text should be based on $::menu_windowlist - if {$focusedtoplevel eq "."} { - .find.frame.targetlabel configure -text [wm title .] + if {$focusedtoplevel eq ".pdwindow"} { + .find.frame.targetlabel configure -text [wm title .pdwindow] } else { foreach window $::menu_windowlist { if {[lindex $window 1] eq $focusedtoplevel} { @@ -51,26 +71,25 @@ proc ::dialog_find::set_canvas_to_search {mytoplevel} { } # the find panel is opened from the menu and key bindings -proc ::dialog_find::menu_dialog_find {mytoplevel} { +proc ::dialog_find::menu_find_dialog {mytoplevel} { if {[winfo exists .find]} { wm deiconify .find raise .find } else { - create_panel $mytoplevel + create_dialog $mytoplevel } } -proc ::dialog_find::create_panel {mytoplevel} { - toplevel .find +proc ::dialog_find::create_dialog {mytoplevel} { + toplevel .find -class DialogWindow wm title .find [_ "Find"] wm geometry .find =475x125+150+150 - wm resizable .find 0 0 - if {[catch {wm attributes .find -topmost}]} {puts stderr ".find -topmost failed"} .find configure - ::pd_bindings::panel_bindings .find "find" + if {$::windowingsystem eq "aqua"} {$mytoplevel configure -menu .menubar} + ::pd_bindings::dialog_bindings .find "find" frame .find.frame - pack .find.frame -side top -fill x -pady 7 + pack .find.frame -side top -fill x -pady 1 label .find.frame.searchin -text [_ "Search in"] label .find.frame.targetlabel -font "TkTextFont 14" label .find.frame.for -text [_ "for:"] @@ -80,15 +99,19 @@ proc ::dialog_find::create_panel {mytoplevel} { focus .find.entry pack .find.entry -side top -padx 10 + checkbutton .find.wholeword -variable ::dialog_find::wholeword_button \ + -text [_ "Match whole word only"] -anchor w + pack .find.wholeword -side top -padx 30 -pady 3 -fill x + frame .find.buttonframe -background yellow button .find.button -text [_ "Find"] -default active -width 9 \ -command "::dialog_find::ok $mytoplevel" if {$::windowingsystem eq "x11"} { button .find.close -text [_ "Close"] -default normal -width 9 \ -command "::dialog_find::cancel $mytoplevel" - pack .find.buttonframe .find.button .find.close -side right -padx 10 -pady 15 + pack .find.buttonframe .find.button .find.close -side right -padx 10 -pady 3 } else { - pack .find.buttonframe .find.button -side right -padx 10 -pady 15 + pack .find.buttonframe .find.button -side right -padx 10 -pady 3 } ::dialog_find::set_canvas_to_search $mytoplevel } diff --git a/pd/tcl/dialog_font.tcl b/pd/tcl/dialog_font.tcl index cebfcb08..578d155e 100644 --- a/pd/tcl/dialog_font.tcl +++ b/pd/tcl/dialog_font.tcl @@ -2,106 +2,132 @@ package provide dialog_font 0.1 namespace eval ::dialog_font:: { - variable fontsize 0 - variable dofont_fontsize 0 - variable stretchval 0 - variable whichstretch 0 - + variable fontsize 10 + variable stretchval 100 + variable whichstretch 1 + variable canvaswindow + variable sizes {8 10 12 16 24 36} + variable gfxstub + namespace export pdtk_canvas_dofont } +# TODO this should use the pd_font_$size fonts created in pd-gui.tcl + +# TODO this should really be changed on the C side so that it doesn't have to +# work around gfxstub/x_gui.c. The gfxstub stuff assumes that there are +# multiple panels, for properties panels like this, its much easier to use if +# there is a single properties panel that adjusts based on which CanvasWindow +# has focus + proc ::dialog_font::apply {mytoplevel myfontsize} { - pdsend "$mytoplevel font $myfontsize $stretchval $whichstretch" + if {$mytoplevel eq ".pdwindow"} { + .pdwindow.text configure -font "-size $myfontsize" + } else { + variable stretchval + variable whichstretch + pdsend "$mytoplevel font $myfontsize $stretchval $whichstretch" + } +} + +proc ::dialog_font::cancel {mygfxstub} { + if {$mygfxstub ne ".pdwindow"} { + pdsend "$mygfxstub cancel" + } + destroy .font } -proc ::dialog_font::close {mytoplevel} { - pdsend "$mytoplevel cancel" +proc ::dialog_font::ok {mygfxstub} { + variable fontsize + ::dialog_font::apply $mygfxstub $fontsize + ::dialog_font::cancel $mygfxstub } -proc ::dialog_font::cancel {mytoplevel} { - ::dialog_font::apply $mytoplevel $fontsize ;# reinstate previous font size - pdsend "$mytoplevel cancel" +proc ::dialog_font::update_font_dialog {mytoplevel} { + set ::dialog_font::canvaswindow $mytoplevel + if {$mytoplevel eq ".pdwindow"} { + set windowname [_ "Pd window"] + } else { + set windowname [lookup_windowname $mytoplevel] + } + if {[winfo exists .font]} { + wm title .font [format [_ "%s Font"] $windowname] + } } -proc ::dialog_font::ok {mytoplevel} { - set fontsize $::dialog_font::fontsize - ::dialog_font::apply $mytoplevel $fontsize - ::dialog_font::close $mytoplevel +proc ::dialog_font::arrow_fontchange {change} { + variable sizes + set position [expr [lsearch $sizes $::dialog_font::fontsize] + $change] + if {$position < 0} {set position 0} + set max [llength $sizes] + if {$position >= $max} {set position [expr $max-1]} + set ::dialog_font::fontsize [lindex $sizes $position] + ::dialog_font::apply $::dialog_font::canvaswindow $::dialog_font::fontsize } # this should be called pdtk_font_dialog like the rest of the panels, but it # is called from the C side, so we'll leave it be -proc ::dialog_font::pdtk_canvas_dofont {mytoplevel initsize} { - create_panel $mytoplevel $initsize +proc ::dialog_font::pdtk_canvas_dofont {mygfxstub initsize} { + variable fontsize $initsize + variable whichstretch 1 + variable stretchval 100 + if {[winfo exists .font]} { + wm deiconify .font + raise .font + # the gfxstub stuff expects multiple font windows, we only have one, + # so kill the new gfxstub requests as the come in. We'll save the + # original gfxstub for when the font panel gets closed + pdsend "$mygfxstub cancel" + } else { + create_dialog $mygfxstub + } } -proc ::dialog_font::create_panel {mytoplevel initsize} { - set fontsize $initsize - set dofont_fontsize $initsize - set stretchval 100 - set whichstretch 1 +proc ::dialog_font::create_dialog {mygfxstub} { + variable gfxstub $mygfxstub + toplevel .font -class DialogWindow + if {$::windowingsystem eq "aqua"} {.font configure -menu .menubar} + ::pd_bindings::dialog_bindings .font "font" + # replace standard bindings to work around the gfxstub stuff + bind .font "::dialog_font::cancel $mygfxstub" + bind .font "::dialog_font::ok $mygfxstub" + bind .font <$::pd_bindings::modifier-Key-w> "::dialog_font::cancel $mygfxstub" + bind .font "::dialog_font::arrow_fontchange -1" + bind .font "::dialog_font::arrow_fontchange 1" - toplevel $mytoplevel - wm title $mytoplevel {Patch Font} - wm protocol $mytoplevel WM_DELETE_WINDOW "::dialog_font::cancel $mytoplevel" - - pdtk_panelkeybindings $mytoplevel font - - frame $mytoplevel.buttonframe - pack $mytoplevel.buttonframe -side bottom -fill x -pady 2m - button $mytoplevel.buttonframe.cancel -text "Cancel" \ - -command "::dialog_font::cancel $mytoplevel" - button $mytoplevel.buttonframe.ok -text "OK" \ - -command "::dialog_font::ok $mytoplevel" - pack $mytoplevel.buttonframe.cancel -side left -expand 1 - pack $mytoplevel.buttonframe.ok -side left -expand 1 + frame .font.buttonframe + pack .font.buttonframe -side bottom -fill x -pady 2m + button .font.buttonframe.ok -text [_ "OK"] \ + -command "::dialog_font::ok $mygfxstub" + pack .font.buttonframe.ok -side left -expand 1 - frame $mytoplevel.radiof - pack $mytoplevel.radiof -side left + labelframe .font.fontsize -text [_ "Font Size"] -padx 5 -pady 4 -borderwidth 1 \ + -width [::msgcat::mcmax "Font Size"] -labelanchor n + pack .font.fontsize -side left -padx 5 - label $mytoplevel.radiof.label -text {Font Size:} - pack $mytoplevel.radiof.label -side top - - radiobutton $mytoplevel.radiof.radio8 -value 8 -variable ::dialog_font::fontsize -text "8" \ - -command "::dialog_font::apply $mytoplevel 8" - radiobutton $mytoplevel.radiof.radio10 -value 10 -variable ::dialog_font::fontsize -text "10" \ - -command "::dialog_font::apply $mytoplevel 10" - radiobutton $mytoplevel.radiof.radio12 -value 12 -variable ::dialog_font::fontsize -text "12" \ - -command "::dialog_font::apply $mytoplevel 12" - radiobutton $mytoplevel.radiof.radio16 -value 16 -variable ::dialog_font::fontsize -text "16" \ - -command "::dialog_font::apply $mytoplevel 16" - radiobutton $mytoplevel.radiof.radio24 -value 24 -variable ::dialog_font::fontsize -text "24" \ - -command "::dialog_font::apply $mytoplevel 24" - radiobutton $mytoplevel.radiof.radio36 -value 36 -variable ::dialog_font::fontsize -text "36" \ - -command "::dialog_font::apply $mytoplevel 36" - pack $mytoplevel.radiof.radio8 -side top -anchor w - pack $mytoplevel.radiof.radio10 -side top -anchor w - pack $mytoplevel.radiof.radio12 -side top -anchor w - pack $mytoplevel.radiof.radio16 -side top -anchor w - pack $mytoplevel.radiof.radio24 -side top -anchor w - pack $mytoplevel.radiof.radio36 -side top -anchor w - - set current_radiobutton [format "$mytoplevel.radiof.radio%d" $initsize] - $current_radiobutton select + # this is whacky Tcl at its finest, but I couldn't resist... + foreach size $::dialog_font::sizes { + radiobutton .font.fontsize.radio$size -value $size -text $size \ + -variable ::dialog_font::fontsize \ + -command [format {::dialog_font::apply $::dialog_font::canvaswindow %s} $size] + pack .font.fontsize.radio$size -side top -anchor w + } - frame $mytoplevel.stretchf - pack $mytoplevel.stretchf -side left - - label $mytoplevel.stretchf.label -text "Stretch:" - pack $mytoplevel.stretchf.label -side top - - entry $mytoplevel.stretchf.entry -textvariable stretchval -width 5 - pack $mytoplevel.stretchf.entry -side left + labelframe .font.stretch -text [_ "Stretch"] -padx 5 -pady 5 -borderwidth 1 \ + -width [::msgcat::mcmax "Stretch"] -labelanchor n + pack .font.stretch -side left -padx 5 -fill y - radiobutton $mytoplevel.stretchf.radio1 \ - -value 1 -variable whichstretch -text "X and Y" - radiobutton $mytoplevel.stretchf.radio2 \ - -value 2 -variable whichstretch -text "X only" - radiobutton $mytoplevel.stretchf.radio3 \ - -value 3 -variable whichstretch -text "Y only" + entry .font.stretch.entry -textvariable ::dialog_font::stretchval -width 5 + pack .font.stretch.entry -side top -pady 5 - pack $mytoplevel.stretchf.radio1 -side top -anchor w - pack $mytoplevel.stretchf.radio2 -side top -anchor w - pack $mytoplevel.stretchf.radio3 -side top -anchor w + radiobutton .font.stretch.radio1 -text [_ "X and Y"] \ + -value 1 -variable ::dialog_font::whichstretch + radiobutton .font.stretch.radio2 -text [_ "X only"] \ + -value 2 -variable ::dialog_font::whichstretch + radiobutton .font.stretch.radio3 -text [_ "Y only"] \ + -value 3 -variable ::dialog_font::whichstretch + pack .font.stretch.radio1 -side top -anchor w + pack .font.stretch.radio2 -side top -anchor w + pack .font.stretch.radio3 -side top -anchor w } diff --git a/pd/tcl/dialog_gatom.tcl b/pd/tcl/dialog_gatom.tcl index e377657f..b59751bf 100644 --- a/pd/tcl/dialog_gatom.tcl +++ b/pd/tcl/dialog_gatom.tcl @@ -4,24 +4,15 @@ package provide dialog_gatom 0.1 package require wheredoesthisgo namespace eval ::dialog_gatom:: { - namespace export pdtk_gatom_dialog + namespace export pdtk_gatom_dialog } -# hashtable for communicating the position of the radiobuttons (Tk's +# array for communicating the position of the radiobuttons (Tk's # radiobutton widget requires this to be global) -global gatomlabel_position +array set gatomlabel_radio {} ############ pdtk_gatom_dialog -- run a gatom dialog ######### -# dialogs like this one can come up in many copies; but in TK the easiest -# way to get data from an "entry", etc., is to set an associated variable -# name. This is especially true for grouped "radio buttons". So we have -# to synthesize variable names for each instance of the dialog. The dialog -# gets a TK pathname $id, from which it strips the leading "." to make a -# variable suffix $vid. Then you can get the actual value out by asking for -# [eval concat $$variablename]. There should be an easier way but I don't see -# it yet. - proc ::dialog_gatom::escape {sym} { if {[string length $sym] == 0} { set ret "-" @@ -44,164 +35,128 @@ proc ::dialog_gatom::unescape {sym} { return $ret } -proc gatom_apply {mytoplevel} { - # TODO kludge!! until a common approach to ::pd_bindings::panel_bindings - # is sorted out - ::dialog_gatom::apply $mytoplevel -} - proc ::dialog_gatom::apply {mytoplevel} { - global gatomlabel_position - + global gatomlabel_radio + pdsend "$mytoplevel param \ [$mytoplevel.width.entry get] \ [$mytoplevel.limits.lower.entry get] \ [$mytoplevel.limits.upper.entry get] \ [::dialog_gatom::escape [$mytoplevel.gatomlabel.name.entry get]] \ - $gatomlabel_position($mytoplevel) \ + $gatomlabel_radio($mytoplevel) \ [::dialog_gatom::escape [$mytoplevel.s_r.send.entry get]] \ [::dialog_gatom::escape [$mytoplevel.s_r.receive.entry get]]" } - -proc gatom_cancel {mytoplevel} { - # TODO kludge!! until a common approach to ::pd_bindings::panel_bindings - # is sorted out - ::dialog_gatom::cancel $mytoplevel -} - proc ::dialog_gatom::cancel {mytoplevel} { pdsend "$mytoplevel cancel" } - -proc gatom_ok {mytoplevel} { - # TODO kludge!! until a common approach to ::pd_bindings::panel_bindings - # is sorted out - ::dialog_gatom::ok $mytoplevel -} proc ::dialog_gatom::ok {mytoplevel} { ::dialog_gatom::apply $mytoplevel ::dialog_gatom::cancel $mytoplevel } # set up the panel with the info from pd -proc ::dialog_gatom::pdtk_gatom_dialog {mytoplevel initwidth initlower \ - initupper initgatomlabel_position initgatomlabel initsend initreceive} { - global gatomlabel_position - set gatomlabel_position($mytoplevel) $initgatomlabel_position +proc ::dialog_gatom::pdtk_gatom_dialog {mytoplevel initwidth initlower initupper \ + initgatomlabel_radio \ + initgatomlabel initsend initreceive} { + global gatomlabel_radio + set gatomlabel_radio($mytoplevel) $initgatomlabel_radio if {[winfo exists $mytoplevel]} { - wm deiconify $mytoplevel - raise $mytoplevel + wm deiconify $mytoplevel + raise $mytoplevel } else { - create_panel $mytoplevel + create_dialog $mytoplevel } $mytoplevel.width.entry insert 0 $initwidth $mytoplevel.limits.lower.entry insert 0 $initlower $mytoplevel.limits.upper.entry insert 0 $initupper if {$initgatomlabel ne "-"} { - $mytoplevel.gatomlabel.name.entry insert 0 $initgatomlabel + $mytoplevel.gatomlabel.name.entry insert 0 $initgatomlabel } - set gatomlabel_position($mytoplevel) $initgatomlabel_position - if {$initsend ne "-"} { - $mytoplevel.s_r.send.entry insert 0 $initsend + set gatomlabel_radio($mytoplevel) $initgatomlabel_radio + if {$initsend ne "-"} { + $mytoplevel.s_r.send.entry insert 0 $initsend } if {$initreceive ne "-"} { - $mytoplevel.s_r.receive.entry insert 0 $initreceive + $mytoplevel.s_r.receive.entry insert 0 $initreceive } } -proc ::dialog_gatom::create_panel {mytoplevel} { - global gatomlabel_position +proc ::dialog_gatom::create_dialog {mytoplevel} { + global gatomlabel_radio - toplevel $mytoplevel - wm title $mytoplevel "atom box properties" - wm resizable $mytoplevel 0 0 - catch { # not all platforms/Tcls versions have these options - wm attributes $mytoplevel -topmost 1 - #wm attributes $mytoplevel -transparent 1 - #$mytoplevel configure -highlightthickness 1 - } - wm protocol $mytoplevel WM_DELETE_WINDOW "::dialog_gatom::cancel $mytoplevel" - - ::pd_bindings::panel_bindings $mytoplevel "gatom" + toplevel $mytoplevel -class DialogWindow + wm title $mytoplevel [_ "Atom Box Properties"] + if {$::windowingsystem eq "aqua"} {$mytoplevel configure -menu .menubar} + ::pd_bindings::dialog_bindings $mytoplevel "gatom" frame $mytoplevel.width -height 7 pack $mytoplevel.width -side top - label $mytoplevel.width.label -text "width" + label $mytoplevel.width.label -text [_ "Width:"] entry $mytoplevel.width.entry -width 4 - pack $mytoplevel.width.label $mytoplevel.width.entry -side left + pack $mytoplevel.width.label $mytoplevel.width.entry -side left - labelframe $mytoplevel.limits -text "limits" -padx 15 -pady 4 -borderwidth 1 \ - -font highlight_font + labelframe $mytoplevel.limits -text [_ "Limits"] -padx 15 -pady 4 -borderwidth 1 pack $mytoplevel.limits -side top -fill x frame $mytoplevel.limits.lower pack $mytoplevel.limits.lower -side left - label $mytoplevel.limits.lower.label -text "lower" - entry $mytoplevel.limits.lower.entry -width 8 + label $mytoplevel.limits.lower.label -text [_ "Lower:"] + entry $mytoplevel.limits.lower.entry -width 7 pack $mytoplevel.limits.lower.label $mytoplevel.limits.lower.entry -side left frame $mytoplevel.limits.upper pack $mytoplevel.limits.upper -side left - frame $mytoplevel.limits.upper.spacer -width 20 - label $mytoplevel.limits.upper.label -text "upper" - entry $mytoplevel.limits.upper.entry -width 8 - pack $mytoplevel.limits.upper.spacer $mytoplevel.limits.upper.label \ - $mytoplevel.limits.upper.entry -side left - - frame $mytoplevel.spacer1 -height 7 - pack $mytoplevel.spacer1 -side top - - labelframe $mytoplevel.gatomlabel -text "label" -padx 5 -pady 4 -borderwidth 1 \ - -font highlight_font - pack $mytoplevel.gatomlabel -side top -fill x + label $mytoplevel.limits.upper.label -text [_ "Upper:"] + entry $mytoplevel.limits.upper.entry -width 7 + pack $mytoplevel.limits.upper.label $mytoplevel.limits.upper.entry -side left + + labelframe $mytoplevel.gatomlabel -text [_ "Label"] -padx 5 -pady 5 -borderwidth 1 + pack $mytoplevel.gatomlabel -side top -fill x -pady 5 frame $mytoplevel.gatomlabel.name pack $mytoplevel.gatomlabel.name -side top entry $mytoplevel.gatomlabel.name.entry -width 33 pack $mytoplevel.gatomlabel.name.entry -side left frame $mytoplevel.gatomlabel.radio pack $mytoplevel.gatomlabel.radio -side top - radiobutton $mytoplevel.gatomlabel.radio.left -value 0 -text "left " \ - -variable gatomlabel_position($mytoplevel) -justify left -takefocus 0 - radiobutton $mytoplevel.gatomlabel.radio.right -value 1 -text "right" \ - -variable gatomlabel_position($mytoplevel) -justify left -takefocus 0 - radiobutton $mytoplevel.gatomlabel.radio.top -value 2 -text "top" \ - -variable gatomlabel_position($mytoplevel) -justify left -takefocus 0 - radiobutton $mytoplevel.gatomlabel.radio.bottom -value 3 -text "bottom" \ - -variable gatomlabel_position($mytoplevel) -justify left -takefocus 0 + radiobutton $mytoplevel.gatomlabel.radio.left -value 0 -text [_ "Left "] \ + -variable gatomlabel_radio($mytoplevel) -justify left -takefocus 0 + radiobutton $mytoplevel.gatomlabel.radio.right -value 1 -text [_ "Right"] \ + -variable gatomlabel_radio($mytoplevel) -justify left -takefocus 0 + radiobutton $mytoplevel.gatomlabel.radio.top -value 2 -text [_ "Top"] \ + -variable gatomlabel_radio($mytoplevel) -justify left -takefocus 0 + radiobutton $mytoplevel.gatomlabel.radio.bottom -value 3 -text [_ "Bottom"] \ + -variable gatomlabel_radio($mytoplevel) -justify left -takefocus 0 pack $mytoplevel.gatomlabel.radio.left -side left -anchor w pack $mytoplevel.gatomlabel.radio.right -side right -anchor w pack $mytoplevel.gatomlabel.radio.top -side top -anchor w pack $mytoplevel.gatomlabel.radio.bottom -side bottom -anchor w - frame $mytoplevel.spacer2 -height 7 - pack $mytoplevel.spacer2 -side top - - labelframe $mytoplevel.s_r -text "messages" -padx 5 -pady 4 -borderwidth 1 \ - -font highlight_font + labelframe $mytoplevel.s_r -text [_ "Messages"] -padx 5 -pady 5 -borderwidth 1 pack $mytoplevel.s_r -side top -fill x frame $mytoplevel.s_r.send pack $mytoplevel.s_r.send -side top -anchor e - label $mytoplevel.s_r.send.label -text "send symbol" + label $mytoplevel.s_r.send.label -text [_ "Send symbol:"] entry $mytoplevel.s_r.send.entry -width 21 pack $mytoplevel.s_r.send.entry $mytoplevel.s_r.send.label -side right frame $mytoplevel.s_r.receive pack $mytoplevel.s_r.receive -side top -anchor e - label $mytoplevel.s_r.receive.label -text "receive symbol" + label $mytoplevel.s_r.receive.label -text [_ "Receive symbol:"] entry $mytoplevel.s_r.receive.entry -width 21 pack $mytoplevel.s_r.receive.entry $mytoplevel.s_r.receive.label -side right frame $mytoplevel.buttonframe -pady 5 pack $mytoplevel.buttonframe -side top -fill x -pady 2m - button $mytoplevel.buttonframe.cancel -text {Cancel} \ + button $mytoplevel.buttonframe.cancel -text [_ "Cancel"] \ -command "::dialog_gatom::cancel $mytoplevel" pack $mytoplevel.buttonframe.cancel -side left -expand 1 - button $mytoplevel.buttonframe.apply -text {Apply} \ + button $mytoplevel.buttonframe.apply -text [_ "Apply"] \ -command "::dialog_gatom::apply $mytoplevel" pack $mytoplevel.buttonframe.apply -side left -expand 1 - button $mytoplevel.buttonframe.ok -text {OK} \ + button $mytoplevel.buttonframe.ok -text [_ "OK"] \ -command "::dialog_gatom::ok $mytoplevel" pack $mytoplevel.buttonframe.ok -side left -expand 1 diff --git a/pd/tcl/dialog_iemgui.tcl b/pd/tcl/dialog_iemgui.tcl index 5aabf4c2..34ed4ccb 100644 --- a/pd/tcl/dialog_iemgui.tcl +++ b/pd/tcl/dialog_iemgui.tcl @@ -8,15 +8,15 @@ namespace eval ::dialog_iemgui:: { variable define_min_flashhold 50 variable define_min_flashbreak 10 variable define_min_fontsize 4 - + namespace export pdtk_iemgui_dialog } -# TODO rename $mytoplevel to $mytoplevel +# TODO convert Init/No Init and Steady on click/Jump on click to checkbuttons proc ::dialog_iemgui::clip_dim {mytoplevel} { set vid [string trimleft $mytoplevel .] - + set var_iemgui_wdt [concat iemgui_wdt_$vid] global $var_iemgui_wdt set var_iemgui_min_wdt [concat iemgui_min_wdt_$vid] @@ -38,7 +38,7 @@ proc ::dialog_iemgui::clip_dim {mytoplevel} { proc ::dialog_iemgui::clip_num {mytoplevel} { set vid [string trimleft $mytoplevel .] - + set var_iemgui_num [concat iemgui_num_$vid] global $var_iemgui_num @@ -54,14 +54,14 @@ proc ::dialog_iemgui::clip_num {mytoplevel} { proc ::dialog_iemgui::sched_rng {mytoplevel} { set vid [string trimleft $mytoplevel .] - + set var_iemgui_min_rng [concat iemgui_min_rng_$vid] global $var_iemgui_min_rng set var_iemgui_max_rng [concat iemgui_max_rng_$vid] global $var_iemgui_max_rng set var_iemgui_rng_sch [concat iemgui_rng_sch_$vid] global $var_iemgui_rng_sch - + variable define_min_flashhold variable define_min_flashbreak @@ -91,7 +91,7 @@ proc ::dialog_iemgui::sched_rng {mytoplevel} { proc ::dialog_iemgui::verify_rng {mytoplevel} { set vid [string trimleft $mytoplevel .] - + set var_iemgui_min_rng [concat iemgui_min_rng_$vid] global $var_iemgui_min_rng set var_iemgui_max_rng [concat iemgui_max_rng_$vid] @@ -103,7 +103,7 @@ proc ::dialog_iemgui::verify_rng {mytoplevel} { if {[eval concat $$var_iemgui_max_rng] == 0.0 && [eval concat $$var_iemgui_min_rng] == 0.0} { set $var_iemgui_max_rng 1.0 $mytoplevel.rng.max_ent configure -textvariable $var_iemgui_max_rng - } + } if {[eval concat $$var_iemgui_max_rng] > 0} { if {[eval concat $$var_iemgui_min_rng] <= 0} { set $var_iemgui_min_rng [expr [eval concat $$var_iemgui_max_rng] * 0.01] @@ -120,12 +120,12 @@ proc ::dialog_iemgui::verify_rng {mytoplevel} { proc ::dialog_iemgui::clip_fontsize {mytoplevel} { set vid [string trimleft $mytoplevel .] - + set var_iemgui_gn_fs [concat iemgui_gn_fs_$vid] global $var_iemgui_gn_fs variable define_min_fontsize - + if {[eval concat $$var_iemgui_gn_fs] < $define_min_fontsize} { set $var_iemgui_gn_fs $define_min_fontsize $mytoplevel.label.fs_ent configure -textvariable $var_iemgui_gn_fs @@ -134,7 +134,7 @@ proc ::dialog_iemgui::clip_fontsize {mytoplevel} { proc ::dialog_iemgui::set_col_example {mytoplevel} { set vid [string trimleft $mytoplevel .] - + set var_iemgui_bcol [concat iemgui_bcol_$vid] global $var_iemgui_bcol set var_iemgui_fcol [concat iemgui_fcol_$vid] @@ -143,28 +143,28 @@ proc ::dialog_iemgui::set_col_example {mytoplevel} { global $var_iemgui_lcol $mytoplevel.colors.sections.lb_bk configure \ - -background [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ - -activebackground [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ - -foreground [format "#%6.6x" [eval concat $$var_iemgui_lcol]] \ - -activeforeground [format "#%6.6x" [eval concat $$var_iemgui_lcol]] + -background [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ + -activebackground [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ + -foreground [format "#%6.6x" [eval concat $$var_iemgui_lcol]] \ + -activeforeground [format "#%6.6x" [eval concat $$var_iemgui_lcol]] if { [eval concat $$var_iemgui_fcol] >= 0 } { - $mytoplevel.colors.sections.fr_bk configure \ - -background [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ - -activebackground [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ - -foreground [format "#%6.6x" [eval concat $$var_iemgui_fcol]] \ - -activeforeground [format "#%6.6x" [eval concat $$var_iemgui_fcol]] + $mytoplevel.colors.sections.fr_bk configure \ + -background [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ + -activebackground [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ + -foreground [format "#%6.6x" [eval concat $$var_iemgui_fcol]] \ + -activeforeground [format "#%6.6x" [eval concat $$var_iemgui_fcol]] } else { - $mytoplevel.colors.sections.fr_bk configure \ - -background [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ - -activebackground [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ - -foreground [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ - -activeforeground [format "#%6.6x" [eval concat $$var_iemgui_bcol]]} + $mytoplevel.colors.sections.fr_bk configure \ + -background [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ + -activebackground [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ + -foreground [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ + -activeforeground [format "#%6.6x" [eval concat $$var_iemgui_bcol]]} } proc ::dialog_iemgui::preset_col {mytoplevel presetcol} { set vid [string trimleft $mytoplevel .] - + set var_iemgui_l2_f1_b0 [concat iemgui_l2_f1_b0_$vid] global $var_iemgui_l2_f1_b0 set var_iemgui_bcol [concat iemgui_bcol_$vid] @@ -182,7 +182,7 @@ proc ::dialog_iemgui::preset_col {mytoplevel presetcol} { proc ::dialog_iemgui::choose_col_bkfrlb {mytoplevel} { set vid [string trimleft $mytoplevel .] - + set var_iemgui_l2_f1_b0 [concat iemgui_l2_f1_b0_$vid] global $var_iemgui_l2_f1_b0 set var_iemgui_bcol [concat iemgui_bcol_$vid] @@ -195,39 +195,39 @@ proc ::dialog_iemgui::choose_col_bkfrlb {mytoplevel} { if {[eval concat $$var_iemgui_l2_f1_b0] == 0} { set $var_iemgui_bcol [expr [eval concat $$var_iemgui_bcol] & 0xFCFCFC] set helpstring [tk_chooseColor -title [_ "Background color"] -initialcolor [format "#%6.6x" [eval concat $$var_iemgui_bcol]]] - if { $helpstring != "" } { - set $var_iemgui_bcol [string replace $helpstring 0 0 "0x"] - set $var_iemgui_bcol [expr [eval concat $$var_iemgui_bcol] & 0xFCFCFC] } + if { $helpstring ne "" } { + set $var_iemgui_bcol [string replace $helpstring 0 0 "0x"] + set $var_iemgui_bcol [expr [eval concat $$var_iemgui_bcol] & 0xFCFCFC] } } if {[eval concat $$var_iemgui_l2_f1_b0] == 1} { set $var_iemgui_fcol [expr [eval concat $$var_iemgui_fcol] & 0xFCFCFC] set helpstring [tk_chooseColor -title [_ "Foreground color"] -initialcolor [format "#%6.6x" [eval concat $$var_iemgui_fcol]]] - if { $helpstring != "" } { - set $var_iemgui_fcol [string replace $helpstring 0 0 "0x"] - set $var_iemgui_fcol [expr [eval concat $$var_iemgui_fcol] & 0xFCFCFC] } + if { $helpstring ne "" } { + set $var_iemgui_fcol [string replace $helpstring 0 0 "0x"] + set $var_iemgui_fcol [expr [eval concat $$var_iemgui_fcol] & 0xFCFCFC] } } if {[eval concat $$var_iemgui_l2_f1_b0] == 2} { set $var_iemgui_lcol [expr [eval concat $$var_iemgui_lcol] & 0xFCFCFC] set helpstring [tk_chooseColor -title [_ "Label color"] -initialcolor [format "#%6.6x" [eval concat $$var_iemgui_lcol]]] - if { $helpstring != "" } { - set $var_iemgui_lcol [string replace $helpstring 0 0 "0x"] - set $var_iemgui_lcol [expr [eval concat $$var_iemgui_lcol] & 0xFCFCFC] } + if { $helpstring ne "" } { + set $var_iemgui_lcol [string replace $helpstring 0 0 "0x"] + set $var_iemgui_lcol [expr [eval concat $$var_iemgui_lcol] & 0xFCFCFC] } } ::dialog_iemgui::set_col_example $mytoplevel } proc ::dialog_iemgui::lilo {mytoplevel} { set vid [string trimleft $mytoplevel .] - + set var_iemgui_lin0_log1 [concat iemgui_lin0_log1_$vid] global $var_iemgui_lin0_log1 set var_iemgui_lilo0 [concat iemgui_lilo0_$vid] global $var_iemgui_lilo0 set var_iemgui_lilo1 [concat iemgui_lilo1_$vid] global $var_iemgui_lilo1 - + ::dialog_iemgui::sched_rng $mytoplevel - + if {[eval concat $$var_iemgui_lin0_log1] == 0} { set $var_iemgui_lin0_log1 1 $mytoplevel.para.lilo configure -text [eval concat $$var_iemgui_lilo1] @@ -241,21 +241,21 @@ proc ::dialog_iemgui::lilo {mytoplevel} { proc ::dialog_iemgui::toggle_font {mytoplevel gn_f} { set vid [string trimleft $mytoplevel .] - + set var_iemgui_gn_f [concat iemgui_gn_f_$vid] global $var_iemgui_gn_f set $var_iemgui_gn_f $gn_f - + switch -- $gn_f { - 0 { set current_font $::font_family} - 1 { set current_font "Helvetica" } - 2 { set current_font "Times" } + 0 { set current_font $::font_family} + 1 { set current_font "Helvetica" } + 2 { set current_font "Times" } } set current_font_spec "{$current_font} 12 $::font_weight" - + $mytoplevel.label.fontpopup_label configure -text $current_font \ - -font $current_font_spec + -font $current_font_spec $mytoplevel.label.name_entry configure -font $current_font_spec $mytoplevel.colors.sections.fr_bk configure -font $current_font_spec $mytoplevel.colors.sections.lb_bk configure -font $current_font_spec @@ -263,37 +263,37 @@ proc ::dialog_iemgui::toggle_font {mytoplevel gn_f} { proc ::dialog_iemgui::lb {mytoplevel} { set vid [string trimleft $mytoplevel .] - + set var_iemgui_loadbang [concat iemgui_loadbang_$vid] global $var_iemgui_loadbang - + if {[eval concat $$var_iemgui_loadbang] == 0} { set $var_iemgui_loadbang 1 - $mytoplevel.para.lb configure -text "init" + $mytoplevel.para.lb configure -text [_ "Init"] } else { set $var_iemgui_loadbang 0 - $mytoplevel.para.lb configure -text "no init" + $mytoplevel.para.lb configure -text [_ "No init"] } } proc ::dialog_iemgui::stdy_jmp {mytoplevel} { set vid [string trimleft $mytoplevel .] - + set var_iemgui_steady [concat iemgui_steady_$vid] global $var_iemgui_steady if {[eval concat $$var_iemgui_steady]} { set $var_iemgui_steady 0 - $mytoplevel.para.stdy_jmp configure -text "jump on click" + $mytoplevel.para.stdy_jmp configure -text [_ "Jump on click"] } else { set $var_iemgui_steady 1 - $mytoplevel.para.stdy_jmp configure -text "steady on click" + $mytoplevel.para.stdy_jmp configure -text [_ "Steady on click"] } } proc ::dialog_iemgui::apply {mytoplevel} { set vid [string trimleft $mytoplevel .] - + set var_iemgui_wdt [concat iemgui_wdt_$vid] global $var_iemgui_wdt set var_iemgui_min_wdt [concat iemgui_min_wdt_$vid] @@ -349,75 +349,65 @@ proc ::dialog_iemgui::apply {mytoplevel} { if {[eval concat $$var_iemgui_snd] == ""} {set hhhsnd "empty"} else {set hhhsnd [eval concat $$var_iemgui_snd]} if {[eval concat $$var_iemgui_rcv] == ""} {set hhhrcv "empty"} else {set hhhrcv [eval concat $$var_iemgui_rcv]} if {[eval concat $$var_iemgui_gui_nam] == ""} {set hhhgui_nam "empty" - } else { - set hhhgui_nam [eval concat $$var_iemgui_gui_nam]} - + } else { + set hhhgui_nam [eval concat $$var_iemgui_gui_nam]} + if {[string index $hhhsnd 0] == "$"} { - set hhhsnd [string replace $hhhsnd 0 0 #] } + set hhhsnd [string replace $hhhsnd 0 0 #] } if {[string index $hhhrcv 0] == "$"} { - set hhhrcv [string replace $hhhrcv 0 0 #] } + set hhhrcv [string replace $hhhrcv 0 0 #] } if {[string index $hhhgui_nam 0] == "$"} { - set hhhgui_nam [string replace $hhhgui_nam 0 0 #] } + set hhhgui_nam [string replace $hhhgui_nam 0 0 #] } set hhhsnd [unspace_text $hhhsnd] set hhhrcv [unspace_text $hhhrcv] set hhhgui_nam [unspace_text $hhhgui_nam] pdsend [concat $mytoplevel dialog \ - [eval concat $$var_iemgui_wdt] \ - [eval concat $$var_iemgui_hgt] \ - [eval concat $$var_iemgui_min_rng] \ - [eval concat $$var_iemgui_max_rng] \ - [eval concat $$var_iemgui_lin0_log1] \ - [eval concat $$var_iemgui_loadbang] \ - [eval concat $$var_iemgui_num] \ - $hhhsnd \ - $hhhrcv \ - $hhhgui_nam \ - [eval concat $$var_iemgui_gn_dx] \ - [eval concat $$var_iemgui_gn_dy] \ - [eval concat $$var_iemgui_gn_f] \ - [eval concat $$var_iemgui_gn_fs] \ - [eval concat $$var_iemgui_bcol] \ - [eval concat $$var_iemgui_fcol] \ - [eval concat $$var_iemgui_lcol] \ - [eval concat $$var_iemgui_steady]] + [eval concat $$var_iemgui_wdt] \ + [eval concat $$var_iemgui_hgt] \ + [eval concat $$var_iemgui_min_rng] \ + [eval concat $$var_iemgui_max_rng] \ + [eval concat $$var_iemgui_lin0_log1] \ + [eval concat $$var_iemgui_loadbang] \ + [eval concat $$var_iemgui_num] \ + $hhhsnd \ + $hhhrcv \ + $hhhgui_nam \ + [eval concat $$var_iemgui_gn_dx] \ + [eval concat $$var_iemgui_gn_dy] \ + [eval concat $$var_iemgui_gn_f] \ + [eval concat $$var_iemgui_gn_fs] \ + [eval concat $$var_iemgui_bcol] \ + [eval concat $$var_iemgui_fcol] \ + [eval concat $$var_iemgui_lcol] \ + [eval concat $$var_iemgui_steady]] } -proc iemgui_cancel {mytoplevel} { - # TODO kludge!! until a common approach to ::pd_bindings::panel_bindings - # is sorted out - ::dialog_iemgui::cancel $mytoplevel -} proc ::dialog_iemgui::cancel {mytoplevel} { pdsend "$mytoplevel cancel" } -proc iemgui_ok {mytoplevel} { - # TODO kludge!! until a common approach to ::pd_bindings::panel_bindings - # is sorted out - ::dialog_iemgui::ok $mytoplevel -} proc ::dialog_iemgui::ok {mytoplevel} { ::dialog_iemgui::apply $mytoplevel ::dialog_iemgui::cancel $mytoplevel } proc ::dialog_iemgui::pdtk_iemgui_dialog {mytoplevel mainheader dim_header \ - wdt min_wdt wdt_label \ - hgt min_hgt hgt_label \ - rng_header min_rng min_rng_label max_rng \ - max_rng_label rng_sched \ - lin0_log1 lilo0_label lilo1_label \ - loadbang steady num_label num \ - snd rcv \ - gui_name \ - gn_dx gn_dy gn_f gn_fs \ - bcol fcol lcol} { - + wdt min_wdt wdt_label \ + hgt min_hgt hgt_label \ + rng_header min_rng min_rng_label max_rng \ + max_rng_label rng_sched \ + lin0_log1 lilo0_label lilo1_label \ + loadbang steady num_label num \ + snd rcv \ + gui_name \ + gn_dx gn_dy gn_f gn_fs \ + bcol fcol lcol} { + set vid [string trimleft $mytoplevel .] - + set var_iemgui_wdt [concat iemgui_wdt_$vid] global $var_iemgui_wdt set var_iemgui_min_wdt [concat iemgui_min_wdt_$vid] @@ -466,7 +456,7 @@ proc ::dialog_iemgui::pdtk_iemgui_dialog {mytoplevel mainheader dim_header \ global $var_iemgui_fcol set var_iemgui_lcol [concat iemgui_lcol_$vid] global $var_iemgui_lcol - + set $var_iemgui_wdt $wdt set $var_iemgui_min_wdt $min_wdt set $var_iemgui_hgt $hgt @@ -481,18 +471,18 @@ proc ::dialog_iemgui::pdtk_iemgui_dialog {mytoplevel mainheader dim_header \ set $var_iemgui_num $num set $var_iemgui_steady $steady if {$snd == "empty"} {set $var_iemgui_snd [format ""] - } else {set $var_iemgui_snd [format "%s" $snd]} + } else {set $var_iemgui_snd [format "%s" $snd]} if {$rcv == "empty"} {set $var_iemgui_rcv [format ""] - } else {set $var_iemgui_rcv [format "%s" $rcv]} + } else {set $var_iemgui_rcv [format "%s" $rcv]} if {$gui_name == "empty"} {set $var_iemgui_gui_nam [format ""] - } else {set $var_iemgui_gui_nam [format "%s" $gui_name]} + } else {set $var_iemgui_gui_nam [format "%s" $gui_name]} if {[string index [eval concat $$var_iemgui_snd] 0] == "#"} { - set $var_iemgui_snd [string replace [eval concat $$var_iemgui_snd] 0 0 $] } + set $var_iemgui_snd [string replace [eval concat $$var_iemgui_snd] 0 0 $] } if {[string index [eval concat $$var_iemgui_rcv] 0] == "#"} { - set $var_iemgui_rcv [string replace [eval concat $$var_iemgui_rcv] 0 0 $] } + set $var_iemgui_rcv [string replace [eval concat $$var_iemgui_rcv] 0 0 $] } if {[string index [eval concat $$var_iemgui_gui_nam] 0] == "#"} { - set $var_iemgui_gui_nam [string replace [eval concat $$var_iemgui_gui_nam] 0 0 $] } + set $var_iemgui_gui_nam [string replace [eval concat $$var_iemgui_gui_nam] 0 0 $] } set $var_iemgui_gn_dx $gn_dx set $var_iemgui_gn_dy $gn_dy set $var_iemgui_gn_f $gn_f @@ -503,13 +493,11 @@ proc ::dialog_iemgui::pdtk_iemgui_dialog {mytoplevel mainheader dim_header \ set $var_iemgui_lcol $lcol set $var_iemgui_l2_f1_b0 0 - - toplevel $mytoplevel + + toplevel $mytoplevel -class DialogWindow wm title $mytoplevel [format [_ "%s Properties"] $mainheader] - wm resizable $mytoplevel 0 0 - wm protocol $mytoplevel WM_DELETE_WINDOW [concat ::dialog_iemgui::cancel $mytoplevel] - - ::pd_bindings::panel_bindings $mytoplevel "iemgui" + if {$::windowingsystem eq "aqua"} {$mytoplevel configure -menu .menubar} + ::pd_bindings::dialog_bindings $mytoplevel "iemgui" frame $mytoplevel.dim pack $mytoplevel.dim -side top @@ -521,9 +509,9 @@ proc ::dialog_iemgui::pdtk_iemgui_dialog {mytoplevel mainheader dim_header \ entry $mytoplevel.dim.h_ent -textvariable $var_iemgui_hgt -width 5 pack $mytoplevel.dim.head -side top pack $mytoplevel.dim.w_lab $mytoplevel.dim.w_ent $mytoplevel.dim.dummy1 -side left - if { $hgt_label != "empty" } { + if { $hgt_label ne "empty" } { pack $mytoplevel.dim.h_lab $mytoplevel.dim.h_ent -side left} - + frame $mytoplevel.rng pack $mytoplevel.rng -side top label $mytoplevel.rng.head -text $rng_header @@ -532,45 +520,45 @@ proc ::dialog_iemgui::pdtk_iemgui_dialog {mytoplevel mainheader dim_header \ label $mytoplevel.rng.dummy1 -text " " -width 1 label $mytoplevel.rng.max_lab -text [_ $max_rng_label] -width 8 entry $mytoplevel.rng.max_ent -textvariable $var_iemgui_max_rng -width 9 - if { $rng_header != "empty" } { + if { $rng_header ne "empty" } { pack $mytoplevel.rng.head -side top - if { $min_rng_label != "empty" } { + if { $min_rng_label ne "empty" } { pack $mytoplevel.rng.min_lab $mytoplevel.rng.min_ent -side left} - if { $max_rng_label != "empty" } { + if { $max_rng_label ne "empty" } { pack $mytoplevel.rng.dummy1 \ - $mytoplevel.rng.max_lab $mytoplevel.rng.max_ent -side left} } + $mytoplevel.rng.max_lab $mytoplevel.rng.max_ent -side left} } if { [eval concat $$var_iemgui_lin0_log1] >= 0 || [eval concat $$var_iemgui_loadbang] >= 0 || [eval concat $$var_iemgui_num] > 0 || [eval concat $$var_iemgui_steady] >= 0 } { label $mytoplevel.space1 -text "" pack $mytoplevel.space1 -side top } - + frame $mytoplevel.para pack $mytoplevel.para -side top label $mytoplevel.para.dummy2 -text "" -width 1 label $mytoplevel.para.dummy3 -text "" -width 1 if {[eval concat $$var_iemgui_lin0_log1] == 0} { button $mytoplevel.para.lilo -text [_ [eval concat $$var_iemgui_lilo0]] -width 5 \ - -command "::dialog_iemgui::lilo $mytoplevel" } + -command "::dialog_iemgui::lilo $mytoplevel" } if {[eval concat $$var_iemgui_lin0_log1] == 1} { button $mytoplevel.para.lilo -text [_ [eval concat $$var_iemgui_lilo1]] -width 5 \ - -command "::dialog_iemgui::lilo $mytoplevel" } + -command "::dialog_iemgui::lilo $mytoplevel" } if {[eval concat $$var_iemgui_loadbang] == 0} { - button $mytoplevel.para.lb -text [_ "no init"] \ - -width [::msgcat::mcmax "no init"] \ - -command "::dialog_iemgui::lb $mytoplevel" } + button $mytoplevel.para.lb -text [_ "No init"] \ + -width [::msgcat::mcmax "No init"] \ + -command "::dialog_iemgui::lb $mytoplevel" } if {[eval concat $$var_iemgui_loadbang] == 1} { button $mytoplevel.para.lb -text [_ "Save"] \ - -width [::msgcat::mcmax "Save"] \ - -command "::dialog_iemgui::lb $mytoplevel" } + -width [::msgcat::mcmax "Save"] \ + -command "::dialog_iemgui::lb $mytoplevel" } label $mytoplevel.para.num_lab -text [_ $num_label] -width 9 entry $mytoplevel.para.num_ent -textvariable $var_iemgui_num -width 4 if {[eval concat $$var_iemgui_steady] == 0} { button $mytoplevel.para.stdy_jmp -command "::dialog_iemgui::stdy_jmp $mytoplevel" \ - -text [_ "jump on click"] -width 12 } + -text [_ "Jump on click"] -width [::msgcat::mcmax "Jump on click"] } if {[eval concat $$var_iemgui_steady] == 1} { button $mytoplevel.para.stdy_jmp -command "::dialog_iemgui::stdy_jmp $mytoplevel" \ - -text [_ "steady on click"] -width 12 } + -text [_ "Steady on click"] -width [::msgcat::mcmax "Steady on click"] } if {[eval concat $$var_iemgui_lin0_log1] >= 0} { pack $mytoplevel.para.lilo -side left -expand 1} if {[eval concat $$var_iemgui_loadbang] >= 0} { @@ -579,192 +567,196 @@ proc ::dialog_iemgui::pdtk_iemgui_dialog {mytoplevel mainheader dim_header \ pack $mytoplevel.para.dummy3 $mytoplevel.para.num_lab $mytoplevel.para.num_ent -side left -expand 1} if {[eval concat $$var_iemgui_steady] >= 0} { pack $mytoplevel.para.dummy3 $mytoplevel.para.stdy_jmp -side left -expand 1} - - frame $mytoplevel.spacer0 -height 4 - pack $mytoplevel.spacer0 -side top - labelframe $mytoplevel.s_r -borderwidth 1 -pady 4 -text [_ "Messages"] \ - -font highlight_font - pack $mytoplevel.s_r -side top -fill x -ipadx 5 + frame $mytoplevel.spacer0 -height 4 + pack $mytoplevel.spacer0 -side top + + labelframe $mytoplevel.s_r -borderwidth 1 -pady 4 -text [_ "Messages"] + pack $mytoplevel.s_r -side top -fill x -ipadx 5 frame $mytoplevel.s_r.send pack $mytoplevel.s_r.send -side top - label $mytoplevel.s_r.send.lab -text [_ "Send symbol"] -width 12 -justify right + label $mytoplevel.s_r.send.lab -text [_ "Send symbol:"] -width 12 -justify right entry $mytoplevel.s_r.send.ent -textvariable $var_iemgui_snd -width 22 - if { $snd != "nosndno" } { + if { $snd ne "nosndno" } { pack $mytoplevel.s_r.send.lab $mytoplevel.s_r.send.ent -side left} frame $mytoplevel.s_r.receive pack $mytoplevel.s_r.receive -side top - label $mytoplevel.s_r.receive.lab -text [_ "Receive symbol"] -width 12 -justify right + label $mytoplevel.s_r.receive.lab -text [_ "Receive symbol:"] -width 12 -justify right entry $mytoplevel.s_r.receive.ent -textvariable $var_iemgui_rcv -width 22 - if { $rcv != "norcvno" } { + if { $rcv ne "norcvno" } { pack $mytoplevel.s_r.receive.lab $mytoplevel.s_r.receive.ent -side left} - # get the current font name from the int given from C-space (gn_f) - set current_font $::font_family + # get the current font name from the int given from C-space (gn_f) + set current_font $::font_family if {[eval concat $$var_iemgui_gn_f] == 1} \ - { set current_font "Helvetica" } + { set current_font "Helvetica" } if {[eval concat $$var_iemgui_gn_f] == 2} \ - { set current_font "Times" } - - frame $mytoplevel.spacer1 -height 7 - pack $mytoplevel.spacer1 -side top - - labelframe $mytoplevel.label -borderwidth 1 -text [_ "Label"] -pady 4 \ - -font highlight_font - pack $mytoplevel.label -side top -fill x + { set current_font "Times" } + + frame $mytoplevel.spacer1 -height 7 + pack $mytoplevel.spacer1 -side top + + labelframe $mytoplevel.label -borderwidth 1 -text [_ "Label"] -pady 4 + pack $mytoplevel.label -side top -fill x entry $mytoplevel.label.name_entry -textvariable $var_iemgui_gui_nam -width 30 \ - -font [list $current_font 12 $::font_weight] + -font [list $current_font 12 $::font_weight] pack $mytoplevel.label.name_entry -side top -expand yes -fill both -padx 5 frame $mytoplevel.label.xy -padx 27 -pady 1 pack $mytoplevel.label.xy -side top - label $mytoplevel.label.xy.x_lab -text [_ "X offset"] -width 6 + label $mytoplevel.label.xy.x_lab -text [_ "X offset"] \ + -width [::msgcat::mcmax "X offset"] entry $mytoplevel.label.xy.x_entry -textvariable $var_iemgui_gn_dx -width 5 label $mytoplevel.label.xy.dummy1 -text " " -width 2 - label $mytoplevel.label.xy.y_lab -text [_ "Y offset"] -width 6 + label $mytoplevel.label.xy.y_lab -text [_ "Y offset"] \ + -width [::msgcat::mcmax "Y offset"] entry $mytoplevel.label.xy.y_entry -textvariable $var_iemgui_gn_dy -width 5 pack $mytoplevel.label.xy.x_lab $mytoplevel.label.xy.x_entry $mytoplevel.label.xy.dummy1 \ - $mytoplevel.label.xy.y_lab $mytoplevel.label.xy.y_entry -side left -anchor e + $mytoplevel.label.xy.y_lab $mytoplevel.label.xy.y_entry -side left -anchor e - label $mytoplevel.label.fontpopup_label -text $current_font \ - -relief groove -font [list $current_font 12 $::font_weight] -padx 5 + label $mytoplevel.label.fontpopup_label -text $current_font \ + -relief groove -font [list $current_font 12 $::font_weight] -padx 5 pack $mytoplevel.label.fontpopup_label -side left -anchor w -expand yes -fill x - label $mytoplevel.label.fontsize_label -text [_ "size:"] -width 4 + label $mytoplevel.label.fontsize_label -text [_ "Size:"] \ + -width [::msgcat::mcmax "Size:"] entry $mytoplevel.label.fontsize_entry -textvariable $var_iemgui_gn_fs -width 5 - pack $mytoplevel.label.fontsize_entry $mytoplevel.label.fontsize_label \ - -side right -anchor e -padx 5 -pady 5 - menu $mytoplevel.popup - $mytoplevel.popup add command \ - -label $::font_family \ - -font [format {{%s} 12 %s} $::font_family $::font_weight] \ - -command "::dialog_iemgui::toggle_font $mytoplevel 0" - $mytoplevel.popup add command \ - -label "Helvetica" \ - -font [format {Helvetica 12 %s} $::font_weight] \ - -command "::dialog_iemgui::toggle_font $mytoplevel 1" - $mytoplevel.popup add command \ - -label "Times" \ - -font [format {Times 12 %s} $::font_weight] \ - -command "::dialog_iemgui::toggle_font $mytoplevel 2" - bind $mytoplevel.label.fontpopup_label