0000: 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 .###############
0010: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0020: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0030: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0040: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0050: 23 0a 23 20 54 68 69 73 20 69 73 20 74 68 65 20 #.# This is the
0060: 6d 61 63 72 6f 73 20 64 6f 63 75 6d 65 6e 74 2c macros document,
0070: 20 79 6f 75 20 63 61 6e 20 61 64 64 20 79 6f 75 you can add you
0080: 72 20 6f 77 6e 20 6d 61 63 72 6f 73 20 68 65 72 r own macros her
0090: 65 0a 0a 0a 23 20 54 68 65 20 66 6f 72 6d 61 74 e...# The format
00a0: 20 69 73 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e is the followin
00b0: 67 3a 0a 23 0a 23 20 69 66 20 6d 61 63 72 6f 20 g:.#.# if macro
00c0: 6e 61 6d 65 20 69 73 20 69 6e 73 69 64 65 20 76 name is inside v
00d0: 61 72 69 61 62 6c 65 20 27 6d 61 63 72 6f 6e 61 ariable 'macrona
00e0: 6d 65 27 2c 20 64 61 74 61 20 74 6f 20 66 69 6c me', data to fil
00f0: 6c 20 69 73 20 74 68 65 20 66 6f 6c 6c 6f 77 69 l is the followi
0100: 6e 67 3a 0a 23 0a 23 20 73 65 74 20 6d 61 63 72 ng:.#.# set macr
0110: 6f 64 61 74 61 28 24 6d 61 63 72 6f 6e 61 6d 65 odata($macroname
0120: 2c 69 6e 6d 65 6e 75 29 20 31 20 20 2e 2d 20 63 ,inmenu) 1 .- c
0130: 61 6e 20 62 65 20 30 20 6f 72 20 31 2e 20 49 66 an be 0 or 1. If
0140: 20 31 2c 20 69 74 20 61 70 70 65 61 72 73 20 69 1, it appears i
0150: 6e 20 0a 23 20 20 20 20 20 20 20 20 20 20 20 20 n .#
0160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0170: 20 20 20 20 20 20 20 20 20 20 20 20 52 61 6d 44 RamD
0180: 65 62 75 67 67 65 72 20 6d 65 6e 75 0a 23 20 73 ebugger menu.# s
0190: 65 74 20 6d 61 63 72 6f 64 61 74 61 28 24 6d 61 et macrodata($ma
01a0: 63 72 6f 6e 61 6d 65 2c 61 63 63 65 6c 65 72 61 croname,accelera
01b0: 74 6f 72 29 20 3c 43 6f 6e 74 72 6f 6c 2d 75 3e tor) <Control-u>
01c0: 20 2e 2d 20 45 6e 74 65 72 20 6f 6e 65 20 61 63 .- Enter one ac
01d0: 63 65 6c 65 72 61 74 6f 72 20 74 68 61 74 0a 23 celerator that.#
01e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0210: 20 20 20 20 20 20 77 69 6c 6c 20 62 65 20 61 70 will be ap
0220: 70 6c 69 65 64 20 67 6c 6f 62 61 6c 6c 79 0a 23 plied globally.#
0230: 20 73 65 74 20 6d 61 63 72 6f 64 61 74 61 28 24 set macrodata($
0240: 6d 61 63 72 6f 6e 61 6d 65 2c 68 65 6c 70 29 20 macroname,help)
0250: 74 65 78 74 20 2e 2d 20 45 6e 74 65 72 20 74 68 text .- Enter th
0260: 65 20 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 e description of
0270: 20 74 68 65 20 6d 61 63 72 6f 0a 23 0a 23 20 70 the macro.#.# p
0280: 72 6f 63 20 24 6d 61 63 72 6f 6e 61 6d 65 20 7b roc $macroname {
0290: 20 77 20 7d 20 7b 20 2e 2e 2e 20 7d 20 2e 2d 20 w } { ... } .-
02a0: 41 72 67 75 6d 65 6e 74 20 77 20 69 73 20 74 68 Argument w is th
02b0: 65 20 70 61 74 68 20 6f 66 20 74 68 65 20 65 64 e path of the ed
02c0: 69 74 6f 72 20 74 65 78 74 20 77 69 64 67 65 74 itor text widget
02d0: 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 .###############
02e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
02f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0300: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0310: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0320: 23 0a 0a 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 #.....##########
0330: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0340: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0350: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0360: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0370: 23 23 23 23 23 23 0a 23 20 20 20 20 70 72 6f 63 ######.# proc
0380: 20 74 6f 75 70 70 65 72 0a 23 23 23 23 23 23 23 toupper.#######
0390: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
03a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
03b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
03c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
03d0: 23 23 23 23 23 23 23 23 23 0a 0a 73 65 74 20 22 #########..set "
03e0: 6d 61 63 72 6f 64 61 74 61 28 54 6f 20 75 70 70 macrodata(To upp
03f0: 65 72 2c 69 6e 6d 65 6e 75 29 22 20 31 0a 73 65 er,inmenu)" 1.se
0400: 74 20 22 6d 61 63 72 6f 64 61 74 61 28 54 6f 20 t "macrodata(To
0410: 75 70 70 65 72 2c 61 63 63 65 6c 65 72 61 74 6f upper,accelerato
0420: 72 29 22 20 22 3c 43 6f 6e 74 72 6f 6c 2d 75 3e r)" "<Control-u>
0430: 3c 43 6f 6e 74 72 6f 6c 2d 75 3e 22 0a 73 65 74 <Control-u>".set
0440: 20 22 6d 61 63 72 6f 64 61 74 61 28 54 6f 20 75 "macrodata(To u
0450: 70 70 65 72 2c 68 65 6c 70 29 22 20 22 54 68 69 pper,help)" "Thi
0460: 73 20 63 6f 6d 6d 61 6e 64 73 20 63 6f 6e 76 65 s commands conve
0470: 72 74 73 20 74 6f 20 75 70 70 65 72 63 61 73 65 rts to uppercase
0480: 20 74 68 65 20 65 64 69 74 6f 72 20 73 65 6c 65 the editor sele
0490: 63 74 69 6f 6e 22 0a 0a 70 72 6f 63 20 22 54 6f ction"..proc "To
04a0: 20 75 70 70 65 72 22 20 7b 20 77 20 7d 20 7b 0a upper" { w } {.
04b0: 0a 20 20 20 20 73 65 74 20 72 61 6e 67 65 20 5b . set range [
04c0: 24 77 20 74 61 67 20 6e 65 78 74 72 61 6e 67 65 $w tag nextrange
04d0: 20 73 65 6c 20 31 2e 30 20 65 6e 64 5d 0a 20 20 sel 1.0 end].
04e0: 20 20 69 66 20 7b 20 24 72 61 6e 67 65 20 65 71 if { $range eq
04f0: 20 22 22 20 7d 20 7b 20 62 65 6c 6c 3b 20 72 65 "" } { bell; re
0500: 74 75 72 6e 20 7d 0a 0a 20 20 20 20 73 65 74 20 turn }.. set
0510: 74 78 74 20 5b 24 77 20 67 65 74 20 7b 2a 7d 24 txt [$w get {*}$
0520: 72 61 6e 67 65 5d 0a 20 20 20 20 24 77 20 64 65 range]. $w de
0530: 6c 65 74 65 20 7b 2a 7d 24 72 61 6e 67 65 0a 20 lete {*}$range.
0540: 20 20 20 24 77 20 69 6e 73 65 72 74 20 5b 6c 69 $w insert [li
0550: 6e 64 65 78 20 24 72 61 6e 67 65 20 30 5d 20 5b ndex $range 0] [
0560: 73 74 72 69 6e 67 20 74 6f 75 70 70 65 72 20 24 string toupper $
0570: 74 78 74 5d 0a 20 20 20 20 24 77 20 74 61 67 20 txt]. $w tag
0580: 61 64 64 20 73 65 6c 20 7b 2a 7d 24 72 61 6e 67 add sel {*}$rang
0590: 65 0a 20 20 20 20 6d 63 3a 3a 73 65 74 5f 69 73 e. mc::set_is
05a0: 5f 6d 6f 64 69 66 69 65 64 0a 7d 0a 0a 23 23 23 _modified.}..###
05b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
05c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
05d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
05e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
05f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 #############.#
0600: 20 20 20 70 72 6f 63 20 74 6f 6c 6f 77 65 72 0a proc tolower.
0610: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0620: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0630: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0640: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0650: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0660: 0a 0a 73 65 74 20 22 6d 61 63 72 6f 64 61 74 61 ..set "macrodata
0670: 28 54 6f 20 6c 6f 77 65 72 2c 69 6e 6d 65 6e 75 (To lower,inmenu
0680: 29 22 20 31 0a 73 65 74 20 22 6d 61 63 72 6f 64 )" 1.set "macrod
0690: 61 74 61 28 54 6f 20 6c 6f 77 65 72 2c 61 63 63 ata(To lower,acc
06a0: 65 6c 65 72 61 74 6f 72 29 22 20 22 3c 43 6f 6e elerator)" "<Con
06b0: 74 72 6f 6c 2d 75 3e 3c 43 6f 6e 74 72 6f 6c 2d trol-u><Control-
06c0: 6c 3e 22 0a 73 65 74 20 22 6d 61 63 72 6f 64 61 l>".set "macroda
06d0: 74 61 28 54 6f 20 6c 6f 77 65 72 2c 68 65 6c 70 ta(To lower,help
06e0: 29 22 20 22 54 68 69 73 20 63 6f 6d 6d 61 6e 64 )" "This command
06f0: 73 20 63 6f 6e 76 65 72 74 73 20 74 6f 20 6c 6f s converts to lo
0700: 77 65 72 63 61 73 65 20 74 68 65 20 65 64 69 74 wercase the edit
0710: 6f 72 20 73 65 6c 65 63 74 69 6f 6e 22 0a 0a 70 or selection"..p
0720: 72 6f 63 20 22 54 6f 20 6c 6f 77 65 72 22 20 7b roc "To lower" {
0730: 20 77 20 7d 20 7b 0a 0a 20 20 20 20 73 65 74 20 w } {.. set
0740: 72 61 6e 67 65 20 5b 24 77 20 74 61 67 20 6e 65 range [$w tag ne
0750: 78 74 72 61 6e 67 65 20 73 65 6c 20 31 2e 30 20 xtrange sel 1.0
0760: 65 6e 64 5d 0a 20 20 20 20 69 66 20 7b 20 24 72 end]. if { $r
0770: 61 6e 67 65 20 65 71 20 22 22 20 7d 20 7b 20 62 ange eq "" } { b
0780: 65 6c 6c 3b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 ell; return }..
0790: 20 20 20 73 65 74 20 74 78 74 20 5b 24 77 20 67 set txt [$w g
07a0: 65 74 20 7b 2a 7d 24 72 61 6e 67 65 5d 0a 20 20 et {*}$range].
07b0: 20 20 24 77 20 64 65 6c 65 74 65 20 7b 2a 7d 24 $w delete {*}$
07c0: 72 61 6e 67 65 0a 20 20 20 20 24 77 20 69 6e 73 range. $w ins
07d0: 65 72 74 20 5b 6c 69 6e 64 65 78 20 24 72 61 6e ert [lindex $ran
07e0: 67 65 20 30 5d 20 5b 73 74 72 69 6e 67 20 74 6f ge 0] [string to
07f0: 6c 6f 77 65 72 20 24 74 78 74 5d 0a 20 20 20 20 lower $txt].
0800: 24 77 20 74 61 67 20 61 64 64 20 73 65 6c 20 7b $w tag add sel {
0810: 2a 7d 24 72 61 6e 67 65 0a 20 20 20 20 6d 63 3a *}$range. mc:
0820: 3a 73 65 74 5f 69 73 5f 6d 6f 64 69 66 69 65 64 :set_is_modified
0830: 0a 7d 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 .}..############
0840: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0850: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0860: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0870: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0880: 23 23 23 23 0a 23 20 20 20 20 70 72 6f 63 20 74 ####.# proc t
0890: 6f 74 69 74 6c 65 0a 23 23 23 23 23 23 23 23 23 otitle.#########
08a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
08b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
08c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
08d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
08e0: 23 23 23 23 23 23 23 0a 0a 73 65 74 20 22 6d 61 #######..set "ma
08f0: 63 72 6f 64 61 74 61 28 54 6f 20 74 69 74 6c 65 crodata(To title
0900: 2c 69 6e 6d 65 6e 75 29 22 20 31 0a 73 65 74 20 ,inmenu)" 1.set
0910: 22 6d 61 63 72 6f 64 61 74 61 28 54 6f 20 74 69 "macrodata(To ti
0920: 74 6c 65 2c 61 63 63 65 6c 65 72 61 74 6f 72 29 tle,accelerator)
0930: 22 20 22 3c 43 6f 6e 74 72 6f 6c 2d 75 3e 3c 43 " "<Control-u><C
0940: 6f 6e 74 72 6f 6c 2d 74 3e 22 0a 73 65 74 20 22 ontrol-t>".set "
0950: 6d 61 63 72 6f 64 61 74 61 28 54 6f 20 74 69 74 macrodata(To tit
0960: 6c 65 2c 68 65 6c 70 29 22 20 22 54 68 69 73 20 le,help)" "This
0970: 63 6f 6d 6d 61 6e 64 73 20 63 6f 6e 76 65 72 74 commands convert
0980: 73 20 74 6f 20 6c 6f 77 65 72 63 61 73 65 20 74 s to lowercase t
0990: 68 65 20 65 64 69 74 6f 72 20 73 65 6c 65 63 74 he editor select
09a0: 69 6f 6e 20 28 66 69 72 73 74 20 6c 65 74 74 65 ion (first lette
09b0: 72 20 75 70 70 65 72 63 61 73 65 29 22 0a 0a 70 r uppercase)"..p
09c0: 72 6f 63 20 22 54 6f 20 74 69 74 6c 65 22 20 7b roc "To title" {
09d0: 20 77 20 7d 20 7b 0a 0a 20 20 20 20 73 65 74 20 w } {.. set
09e0: 72 61 6e 67 65 20 5b 24 77 20 74 61 67 20 6e 65 range [$w tag ne
09f0: 78 74 72 61 6e 67 65 20 73 65 6c 20 31 2e 30 20 xtrange sel 1.0
0a00: 65 6e 64 5d 0a 20 20 20 20 69 66 20 7b 20 24 72 end]. if { $r
0a10: 61 6e 67 65 20 65 71 20 22 22 20 7d 20 7b 20 62 ange eq "" } { b
0a20: 65 6c 6c 3b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 ell; return }..
0a30: 20 20 20 73 65 74 20 74 78 74 20 5b 24 77 20 67 set txt [$w g
0a40: 65 74 20 7b 2a 7d 24 72 61 6e 67 65 5d 0a 20 20 et {*}$range].
0a50: 20 20 24 77 20 64 65 6c 65 74 65 20 7b 2a 7d 24 $w delete {*}$
0a60: 72 61 6e 67 65 0a 20 20 20 20 24 77 20 69 6e 73 range. $w ins
0a70: 65 72 74 20 5b 6c 69 6e 64 65 78 20 24 72 61 6e ert [lindex $ran
0a80: 67 65 20 30 5d 20 5b 73 74 72 69 6e 67 20 74 6f ge 0] [string to
0a90: 74 69 74 6c 65 20 24 74 78 74 5d 0a 20 20 20 20 title $txt].
0aa0: 24 77 20 74 61 67 20 61 64 64 20 73 65 6c 20 7b $w tag add sel {
0ab0: 2a 7d 24 72 61 6e 67 65 0a 20 20 20 20 6d 63 3a *}$range. mc:
0ac0: 3a 73 65 74 5f 69 73 5f 6d 6f 64 69 66 69 65 64 :set_is_modified
0ad0: 0a 7d 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 .}..############
0ae0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0af0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0b00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0b10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0b20: 23 23 23 23 0a 23 20 20 20 20 70 72 6f 63 20 69 ####.# proc i
0b30: 6e 73 65 72 74 20 72 65 63 74 61 6e 67 75 6c 61 nsert rectangula
0b40: 72 20 74 65 78 74 0a 23 23 23 23 23 23 23 23 23 r text.#########
0b50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0b60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0b70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0b80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0b90: 23 23 23 23 23 23 23 0a 0a 73 65 74 20 22 6d 61 #######..set "ma
0ba0: 63 72 6f 64 61 74 61 28 49 6e 73 65 72 74 20 72 crodata(Insert r
0bb0: 65 63 74 61 6e 67 75 6c 61 72 20 74 65 78 74 2c ectangular text,
0bc0: 69 6e 6d 65 6e 75 29 22 20 31 0a 73 65 74 20 22 inmenu)" 1.set "
0bd0: 6d 61 63 72 6f 64 61 74 61 28 49 6e 73 65 72 74 macrodata(Insert
0be0: 20 72 65 63 74 61 6e 67 75 6c 61 72 20 74 65 78 rectangular tex
0bf0: 74 2c 61 63 63 65 6c 65 72 61 74 6f 72 29 22 20 t,accelerator)"
0c00: 22 22 0a 73 65 74 20 22 6d 61 63 72 6f 64 61 74 "".set "macrodat
0c10: 61 28 49 6e 73 65 72 74 20 72 65 63 74 61 6e 67 a(Insert rectang
0c20: 75 6c 61 72 20 74 65 78 74 2c 68 65 6c 70 29 22 ular text,help)"
0c30: 20 22 49 6e 73 65 72 74 73 20 74 65 78 74 20 66 "Inserts text f
0c40: 72 6f 6d 20 63 6c 69 62 6f 61 72 64 20 74 6f 20 rom cliboard to
0c50: 65 76 65 72 79 20 72 6f 77 20 6f 66 20 74 68 65 every row of the
0c60: 20 73 65 6c 65 63 74 69 6f 6e 22 0a 0a 70 72 6f selection"..pro
0c70: 63 20 22 49 6e 73 65 72 74 20 72 65 63 74 61 6e c "Insert rectan
0c80: 67 75 6c 61 72 20 74 65 78 74 22 20 7b 20 77 20 gular text" { w
0c90: 7d 20 7b 0a 0a 20 20 20 20 73 65 74 20 74 78 74 } {.. set txt
0ca0: 20 5b 63 6c 69 70 62 6f 61 72 64 20 67 65 74 5d [clipboard get]
0cb0: 0a 20 20 20 20 73 65 74 20 72 61 6e 67 65 20 5b . set range [
0cc0: 24 77 20 74 61 67 20 6e 65 78 74 72 61 6e 67 65 $w tag nextrange
0cd0: 20 73 65 6c 20 31 2e 30 20 65 6e 64 5d 0a 20 20 sel 1.0 end].
0ce0: 20 20 69 66 20 7b 20 24 72 61 6e 67 65 20 3d 3d if { $range ==
0cf0: 20 22 22 20 7d 20 7b 20 62 65 6c 6c 3b 20 72 65 "" } { bell; re
0d00: 74 75 72 6e 20 7d 0a 20 20 20 20 73 63 61 6e 20 turn }. scan
0d10: 5b 6c 69 6e 64 65 78 20 24 72 61 6e 67 65 20 30 [lindex $range 0
0d20: 5d 20 22 25 64 2e 25 64 22 20 6c 31 20 63 31 0a ] "%d.%d" l1 c1.
0d30: 20 20 20 20 73 63 61 6e 20 5b 6c 69 6e 64 65 78 scan [lindex
0d40: 20 24 72 61 6e 67 65 20 31 5d 20 22 25 64 2e 25 $range 1] "%d.%
0d50: 64 22 20 6c 32 20 63 32 0a 20 20 20 20 69 66 20 d" l2 c2. if
0d60: 7b 20 24 63 32 20 3c 20 24 63 31 20 7d 20 7b 20 { $c2 < $c1 } {
0d70: 73 65 74 20 74 6d 70 20 24 63 31 20 3b 20 73 65 set tmp $c1 ; se
0d80: 74 20 63 31 20 24 63 32 20 3b 20 73 65 74 20 63 t c1 $c2 ; set c
0d90: 32 20 24 74 6d 70 20 7d 0a 20 20 20 20 69 66 20 2 $tmp }. if
0da0: 7b 20 24 6c 32 20 3c 20 24 6c 31 20 7d 20 7b 20 { $l2 < $l1 } {
0db0: 73 65 74 20 74 6d 70 20 24 6c 31 20 3b 20 73 65 set tmp $l1 ; se
0dc0: 74 20 6c 31 20 24 6c 32 20 3b 20 73 65 74 20 6c t l1 $l2 ; set l
0dd0: 32 20 24 74 6d 70 20 7d 0a 0a 20 20 20 20 66 6f 2 $tmp }.. fo
0de0: 72 20 7b 20 73 65 74 20 69 20 24 6c 31 20 7d 20 r { set i $l1 }
0df0: 7b 20 24 69 20 3c 3d 20 24 6c 32 20 7d 20 7b 20 { $i <= $l2 } {
0e00: 69 6e 63 72 20 69 20 7d 20 7b 0a 09 24 77 20 64 incr i } {..$w d
0e10: 65 6c 65 74 65 20 24 69 2e 24 63 31 20 24 69 2e elete $i.$c1 $i.
0e20: 24 63 32 0a 09 24 77 20 69 6e 73 65 72 74 20 24 $c2..$w insert $
0e30: 69 2e 24 63 31 20 24 74 78 74 0a 20 20 20 20 7d i.$c1 $txt. }
0e40: 0a 20 20 20 20 6d 63 3a 3a 73 65 74 5f 69 73 5f . mc::set_is_
0e50: 6d 6f 64 69 66 69 65 64 0a 7d 0a 0a 23 23 23 23 modified.}..####
0e60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0e70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0e80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0e90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0ea0: 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 20 ############.#
0eb0: 20 20 70 72 6f 63 20 4b 69 6c 6c 20 72 65 63 74 proc Kill rect
0ec0: 61 6e 67 75 6c 61 72 20 74 65 78 74 0a 23 23 23 angular text.###
0ed0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0ee0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0ef0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0f00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0f10: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 0a 73 #############..s
0f20: 65 74 20 22 6d 61 63 72 6f 64 61 74 61 28 4b 69 et "macrodata(Ki
0f30: 6c 6c 20 72 65 63 74 61 6e 67 75 6c 61 72 20 74 ll rectangular t
0f40: 65 78 74 2c 69 6e 6d 65 6e 75 29 22 20 31 0a 73 ext,inmenu)" 1.s
0f50: 65 74 20 22 6d 61 63 72 6f 64 61 74 61 28 4b 69 et "macrodata(Ki
0f60: 6c 6c 20 72 65 63 74 61 6e 67 75 6c 61 72 20 74 ll rectangular t
0f70: 65 78 74 2c 61 63 63 65 6c 65 72 61 74 6f 72 29 ext,accelerator)
0f80: 22 20 22 22 0a 73 65 74 20 22 6d 61 63 72 6f 64 " "".set "macrod
0f90: 61 74 61 28 4b 69 6c 6c 20 72 65 63 74 61 6e 67 ata(Kill rectang
0fa0: 75 6c 61 72 20 74 65 78 74 2c 68 65 6c 70 29 22 ular text,help)"
0fb0: 20 22 4b 69 6c 6c 73 20 61 6c 6c 20 74 65 78 74 "Kills all text
0fc0: 20 63 6f 6e 74 61 69 6e 65 64 20 69 6e 20 74 68 contained in th
0fd0: 65 20 72 65 63 74 61 6e 67 75 6c 61 72 20 70 61 e rectangular pa
0fe0: 72 74 20 6f 66 20 74 68 65 20 73 65 6c 65 63 74 rt of the select
0ff0: 69 6f 6e 22 0a 0a 70 72 6f 63 20 22 4b 69 6c 6c ion"..proc "Kill
1000: 20 72 65 63 74 61 6e 67 75 6c 61 72 20 74 65 78 rectangular tex
1010: 74 22 20 7b 20 77 20 7d 20 7b 0a 0a 20 20 20 20 t" { w } {..
1020: 73 65 74 20 72 61 6e 67 65 20 5b 24 77 20 74 61 set range [$w ta
1030: 67 20 6e 65 78 74 72 61 6e 67 65 20 73 65 6c 20 g nextrange sel
1040: 31 2e 30 20 65 6e 64 5d 0a 20 20 20 20 69 66 20 1.0 end]. if
1050: 7b 20 24 72 61 6e 67 65 20 3d 3d 20 22 22 20 7d { $range == "" }
1060: 20 7b 20 62 65 6c 6c 3b 20 72 65 74 75 72 6e 20 { bell; return
1070: 7d 0a 20 20 20 20 73 63 61 6e 20 5b 6c 69 6e 64 }. scan [lind
1080: 65 78 20 24 72 61 6e 67 65 20 30 5d 20 22 25 64 ex $range 0] "%d
1090: 2e 25 64 22 20 6c 31 20 63 31 0a 20 20 20 20 73 .%d" l1 c1. s
10a0: 63 61 6e 20 5b 6c 69 6e 64 65 78 20 24 72 61 6e can [lindex $ran
10b0: 67 65 20 31 5d 20 22 25 64 2e 25 64 22 20 6c 32 ge 1] "%d.%d" l2
10c0: 20 63 32 0a 20 20 20 20 69 66 20 7b 20 24 63 32 c2. if { $c2
10d0: 20 3c 20 24 63 31 20 7d 20 7b 20 73 65 74 20 74 < $c1 } { set t
10e0: 6d 70 20 24 63 31 20 3b 20 73 65 74 20 63 31 20 mp $c1 ; set c1
10f0: 24 63 32 20 3b 20 73 65 74 20 63 32 20 24 74 6d $c2 ; set c2 $tm
1100: 70 20 7d 0a 20 20 20 20 69 66 20 7b 20 24 6c 32 p }. if { $l2
1110: 20 3c 20 24 6c 31 20 7d 20 7b 20 73 65 74 20 74 < $l1 } { set t
1120: 6d 70 20 24 6c 31 20 3b 20 73 65 74 20 6c 31 20 mp $l1 ; set l1
1130: 24 6c 32 20 3b 20 73 65 74 20 6c 32 20 24 74 6d $l2 ; set l2 $tm
1140: 70 20 7d 0a 0a 20 20 20 20 66 6f 72 20 7b 20 73 p }.. for { s
1150: 65 74 20 69 20 24 6c 31 20 7d 20 7b 20 24 69 20 et i $l1 } { $i
1160: 3c 3d 20 24 6c 32 20 7d 20 7b 20 69 6e 63 72 20 <= $l2 } { incr
1170: 69 20 7d 20 7b 0a 09 24 77 20 64 65 6c 65 74 65 i } {..$w delete
1180: 20 24 69 2e 24 63 31 20 24 69 2e 24 63 32 0a 20 $i.$c1 $i.$c2.
1190: 20 20 20 7d 0a 20 20 20 20 6d 63 3a 3a 73 65 74 }. mc::set
11a0: 5f 69 73 5f 6d 6f 64 69 66 69 65 64 0a 7d 0a 0a _is_modified.}..
11b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
11c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
11d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
11e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
11f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1200: 0a 23 20 20 20 20 70 72 6f 63 20 4d 61 63 72 6f .# proc Macro
1210: 20 72 65 67 73 75 62 0a 23 23 23 23 23 23 23 23 regsub.########
1220: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1230: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1240: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1250: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1260: 23 23 23 23 23 23 23 23 0a 0a 73 65 74 20 22 6d ########..set "m
1270: 61 63 72 6f 64 61 74 61 28 4d 61 63 72 6f 20 72 acrodata(Macro r
1280: 65 67 73 75 62 2c 69 6e 6d 65 6e 75 29 22 20 31 egsub,inmenu)" 1
1290: 0a 73 65 74 20 22 6d 61 63 72 6f 64 61 74 61 28 .set "macrodata(
12a0: 4d 61 63 72 6f 20 72 65 67 73 75 62 2c 61 63 63 Macro regsub,acc
12b0: 65 6c 65 72 61 74 6f 72 29 22 20 22 22 0a 73 65 elerator)" "".se
12c0: 74 20 22 6d 61 63 72 6f 64 61 74 61 28 4d 61 63 t "macrodata(Mac
12d0: 72 6f 20 72 65 67 73 75 62 2c 68 65 6c 70 29 22 ro regsub,help)"
12e0: 20 22 54 68 69 73 20 63 6f 6d 6d 61 6e 64 73 20 "This commands
12f0: 61 70 70 6c 69 65 73 20 61 20 75 73 65 72 2d 64 applies a user-d
1300: 65 66 69 6e 65 64 20 72 65 67 73 75 62 20 74 6f efined regsub to
1310: 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 74 65 the selected te
1320: 78 74 22 0a 0a 70 72 6f 63 20 22 4d 61 63 72 6f xt"..proc "Macro
1330: 20 72 65 67 73 75 62 22 20 7b 20 77 20 7d 20 7b regsub" { w } {
1340: 0a 0a 20 20 20 20 73 65 74 20 72 61 6e 67 65 20 .. set range
1350: 5b 24 77 20 74 61 67 20 6e 65 78 74 72 61 6e 67 [$w tag nextrang
1360: 65 20 73 65 6c 20 31 2e 30 20 65 6e 64 5d 0a 20 e sel 1.0 end].
1370: 20 20 20 69 66 20 7b 20 24 72 61 6e 67 65 20 3d if { $range =
1380: 3d 20 22 22 20 7d 20 7b 20 0a 09 57 61 72 6e 57 = "" } { ..WarnW
1390: 69 6e 20 22 53 65 6c 65 63 74 20 61 20 72 65 67 in "Select a reg
13a0: 69 6f 6e 20 74 6f 20 6d 6f 64 69 66 79 22 0a 09 ion to modify"..
13b0: 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 return. }..
13c0: 20 20 73 65 74 20 66 20 5b 44 69 61 6c 6f 67 57 set f [DialogW
13d0: 69 6e 3a 3a 49 6e 69 74 20 24 77 20 22 4d 61 63 in::Init $w "Mac
13e0: 72 6f 20 72 65 67 73 75 62 22 20 73 65 70 61 72 ro regsub" separ
13f0: 61 74 6f 72 20 22 22 5d 0a 20 20 20 20 73 65 74 ator ""]. set
1400: 20 77 66 20 5b 77 69 6e 66 6f 20 74 6f 70 6c 65 wf [winfo tople
1410: 76 65 6c 20 24 66 5d 0a 0a 20 20 20 20 6c 61 62 vel $f].. lab
1420: 65 6c 20 24 66 2e 6c 20 2d 74 65 78 74 20 22 45 el $f.l -text "E
1430: 6e 74 65 72 20 61 20 72 65 67 73 75 62 20 74 6f nter a regsub to
1440: 20 62 65 20 61 70 70 6c 69 65 64 20 74 6f 20 76 be applied to v
1450: 61 72 69 61 62 6c 65 20 27 73 65 6c 27 3a 22 20 ariable 'sel':"
1460: 2d 67 72 69 64 20 22 30 20 70 78 33 20 70 79 35 -grid "0 px3 py5
1470: 22 0a 20 20 20 20 74 65 78 74 20 24 66 2e 74 20 ". text $f.t
1480: 2d 77 72 61 70 20 77 6f 72 64 20 2d 77 69 64 74 -wrap word -widt
1490: 68 20 38 30 20 2d 68 65 69 67 68 74 20 34 20 2d h 80 -height 4 -
14a0: 67 72 69 64 20 30 0a 20 20 20 20 24 66 2e 74 20 grid 0. $f.t
14b0: 69 6e 73 65 72 74 20 65 6e 64 20 7b 72 65 67 73 insert end {regs
14c0: 75 62 20 2d 61 6c 6c 20 7b 74 65 78 74 31 7d 20 ub -all {text1}
14d0: 24 73 65 6c 20 7b 74 65 78 74 32 7d 20 73 65 6c $sel {text2} sel
14e0: 7d 0a 20 20 20 20 24 66 2e 74 20 74 61 67 20 61 }. $f.t tag a
14f0: 64 64 20 73 65 6c 20 31 2e 30 20 65 6e 64 2d 31 dd sel 1.0 end-1
1500: 63 0a 20 20 20 20 74 6b 54 61 62 54 6f 57 69 6e c. tkTabToWin
1510: 64 6f 77 20 24 66 2e 74 0a 0a 20 20 20 20 62 69 dow $f.t.. bi
1520: 6e 64 20 24 77 66 20 3c 52 65 74 75 72 6e 3e 20 nd $wf <Return>
1530: 22 44 69 61 6c 6f 67 57 69 6e 3a 3a 49 6e 76 6f "DialogWin::Invo
1540: 6b 65 4f 4b 22 0a 0a 20 20 20 20 73 75 70 65 72 keOK".. super
1550: 67 72 69 64 3a 3a 67 6f 20 24 66 0a 0a 20 20 20 grid::go $f..
1560: 20 73 65 74 20 61 63 74 69 6f 6e 20 5b 44 69 61 set action [Dia
1570: 6c 6f 67 57 69 6e 3a 3a 43 72 65 61 74 65 57 69 logWin::CreateWi
1580: 6e 64 6f 77 5d 0a 20 20 20 20 73 65 74 20 72 65 ndow]. set re
1590: 67 20 5b 24 66 2e 74 20 67 65 74 20 31 2e 30 20 g [$f.t get 1.0
15a0: 65 6e 64 2d 31 63 5d 0a 20 20 20 20 44 69 61 6c end-1c]. Dial
15b0: 6f 67 57 69 6e 3a 3a 44 65 73 74 72 6f 79 57 69 ogWin::DestroyWi
15c0: 6e 64 6f 77 0a 20 20 20 20 69 66 20 7b 20 24 61 ndow. if { $a
15d0: 63 74 69 6f 6e 20 3d 3d 20 30 20 7d 20 7b 20 72 ction == 0 } { r
15e0: 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 73 65 74 eturn }.. set
15f0: 20 73 65 6c 20 5b 65 76 61 6c 20 24 77 20 67 65 sel [eval $w ge
1600: 74 20 24 72 61 6e 67 65 5d 0a 20 20 20 20 73 65 t $range]. se
1610: 74 20 65 72 72 20 5b 63 61 74 63 68 20 7b 20 65 t err [catch { e
1620: 76 61 6c 20 24 72 65 67 20 7d 20 65 72 72 73 74 val $reg } errst
1630: 72 69 6e 67 5d 0a 20 20 20 20 69 66 20 7b 20 24 ring]. if { $
1640: 65 72 72 20 7d 20 7b 0a 09 57 61 72 6e 57 69 6e err } {..WarnWin
1650: 20 22 45 72 72 6f 72 20 61 70 70 6c 79 69 6e 67 "Error applying
1660: 20 72 65 67 73 75 62 3a 20 24 65 72 72 73 74 72 regsub: $errstr
1670: 69 6e 67 22 0a 09 72 65 74 75 72 6e 0a 20 20 20 ing"..return.
1680: 20 7d 0a 20 20 20 20 65 76 61 6c 20 24 77 20 64 }. eval $w d
1690: 65 6c 65 74 65 20 24 72 61 6e 67 65 0a 20 20 20 elete $range.
16a0: 20 24 77 20 69 6e 73 65 72 74 20 5b 6c 69 6e 64 $w insert [lind
16b0: 65 78 20 24 72 61 6e 67 65 20 30 5d 20 24 73 65 ex $range 0] $se
16c0: 6c 0a 20 20 20 20 65 76 61 6c 20 24 77 20 74 61 l. eval $w ta
16d0: 67 20 61 64 64 20 73 65 6c 20 24 72 61 6e 67 65 g add sel $range
16e0: 0a 20 20 20 20 6d 63 3a 3a 73 65 74 5f 69 73 5f . mc::set_is_
16f0: 6d 6f 64 69 66 69 65 64 0a 7d 0a 0a 23 23 23 23 modified.}..####
1700: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1710: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1720: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1730: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1740: 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 20 ############.#
1750: 20 20 70 72 6f 63 20 43 6f 6d 6d 65 6e 74 20 68 proc Comment h
1760: 65 61 64 65 72 0a 23 23 23 23 23 23 23 23 23 23 eader.##########
1770: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1780: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1790: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
17a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
17b0: 23 23 23 23 23 23 0a 0a 73 65 74 20 22 6d 61 63 ######..set "mac
17c0: 72 6f 64 61 74 61 28 43 6f 6d 6d 65 6e 74 20 68 rodata(Comment h
17d0: 65 61 64 65 72 2c 69 6e 6d 65 6e 75 29 22 20 31 eader,inmenu)" 1
17e0: 0a 73 65 74 20 22 6d 61 63 72 6f 64 61 74 61 28 .set "macrodata(
17f0: 43 6f 6d 6d 65 6e 74 20 68 65 61 64 65 72 2c 61 Comment header,a
1800: 63 63 65 6c 65 72 61 74 6f 72 29 22 20 22 22 0a ccelerator)" "".
1810: 73 65 74 20 22 6d 61 63 72 6f 64 61 74 61 28 43 set "macrodata(C
1820: 6f 6d 6d 65 6e 74 20 68 65 61 64 65 72 2c 68 65 omment header,he
1830: 6c 70 29 22 20 22 54 68 69 73 20 63 6f 6d 6d 61 lp)" "This comma
1840: 6e 64 73 20 69 6e 73 65 72 74 73 20 61 20 63 6f nds inserts a co
1850: 6d 6d 65 6e 74 20 6d 65 6e 75 20 66 6f 72 20 54 mment menu for T
1860: 43 4c 22 0a 0a 70 72 6f 63 20 22 43 6f 6d 6d 65 CL"..proc "Comme
1870: 6e 74 20 68 65 61 64 65 72 22 20 7b 20 77 20 7d nt header" { w }
1880: 20 7b 0a 20 20 20 20 0a 20 20 20 20 73 77 69 74 {. . swit
1890: 63 68 20 5b 6d 63 3a 3a 67 69 76 65 5f 61 63 74 ch [mc::give_act
18a0: 69 76 65 5f 66 69 6c 65 5f 74 79 70 65 5d 20 7b ive_file_type] {
18b0: 0a 09 22 43 2f 43 2b 2b 22 20 7b 20 6c 61 73 73 .."C/C++" { lass
18c0: 69 67 6e 20 5b 6c 69 73 74 20 22 2f 2f 22 20 22 ign [list "//" "
18d0: 22 5d 20 70 72 65 66 69 78 20 73 75 66 66 69 78 "] prefix suffix
18e0: 20 7d 0a 09 22 58 4d 4c 22 20 7b 20 6c 61 73 73 }.."XML" { lass
18f0: 69 67 6e 20 5b 6c 69 73 74 20 22 3c 21 2d 2d 20 ign [list "<!--
1900: 22 20 22 20 2d 2d 3e 22 5d 20 70 72 65 66 69 78 " " -->"] prefix
1910: 20 73 75 66 66 69 78 20 7d 0a 09 64 65 66 61 75 suffix }..defau
1920: 6c 74 20 7b 20 6c 61 73 73 69 67 6e 20 5b 6c 69 lt { lassign [li
1930: 73 74 20 22 23 22 20 22 22 5d 20 70 72 65 66 69 st "#" ""] prefi
1940: 78 20 73 75 66 66 69 78 20 7d 0a 20 20 20 20 7d x suffix }. }
1950: 0a 20 20 20 20 73 65 74 20 6f 70 74 69 6f 6e 73 . set options
1960: 5f 64 65 66 28 65 78 74 65 6e 73 69 6f 6e 73 2c _def(extensions,
1970: 43 2f 43 2b 2b 29 20 22 2e 63 20 2e 63 70 70 20 C/C++) ".c .cpp
1980: 2e 63 63 20 2e 68 22 0a 20 20 20 20 73 65 74 20 .cc .h". set
1990: 6f 70 74 69 6f 6e 73 5f 64 65 66 28 65 78 74 65 options_def(exte
19a0: 6e 73 69 6f 6e 73 2c 58 4d 4c 29 20 22 2e 78 6d nsions,XML) ".xm
19b0: 6c 20 2e 73 70 64 20 2e 78 73 6c 20 2e 78 73 6c l .spd .xsl .xsl
19c0: 74 20 2e 73 76 67 20 28 78 6d 6c 29 2a 22 0a 0a t .svg (xml)*"..
19d0: 20 20 20 20 0a 20 20 20 20 24 77 20 6d 61 72 6b . $w mark
19e0: 20 73 65 74 20 69 6e 73 65 72 74 20 22 69 6e 73 set insert "ins
19f0: 65 72 74 20 6c 69 6e 65 73 74 61 72 74 22 0a 20 ert linestart".
1a00: 20 20 20 24 77 20 69 6e 73 65 72 74 20 69 6e 73 $w insert ins
1a10: 65 72 74 20 22 24 70 72 65 66 69 78 5b 73 74 72 ert "$prefix[str
1a20: 69 6e 67 20 72 65 70 65 61 74 20 23 20 38 30 5d ing repeat # 80]
1a30: 24 73 75 66 66 69 78 5c 6e 22 0a 20 20 20 20 73 $suffix\n". s
1a40: 65 74 20 69 64 78 20 5b 24 77 20 69 6e 64 65 78 et idx [$w index
1a50: 20 69 6e 73 65 72 74 5d 0a 20 20 20 20 24 77 20 insert]. $w
1a60: 69 6e 73 65 72 74 20 69 6e 73 65 72 74 20 22 24 insert insert "$
1a70: 70 72 65 66 69 78 20 20 20 20 43 6f 6d 6d 65 6e prefix Commen
1a80: 74 24 73 75 66 66 69 78 5c 6e 22 0a 20 20 20 20 t$suffix\n".
1a90: 24 77 20 69 6e 73 65 72 74 20 69 6e 73 65 72 74 $w insert insert
1aa0: 20 22 24 70 72 65 66 69 78 5b 73 74 72 69 6e 67 "$prefix[string
1ab0: 20 72 65 70 65 61 74 20 23 20 38 30 5d 24 73 75 repeat # 80]$su
1ac0: 66 66 69 78 5c 6e 22 0a 20 20 20 20 24 77 20 74 ffix\n". $w t
1ad0: 61 67 20 61 64 64 20 73 65 6c 20 22 24 69 64 78 ag add sel "$idx
1ae0: 2b 5b 65 78 70 72 20 7b 34 2b 5b 73 74 72 69 6e +[expr {4+[strin
1af0: 67 20 6c 65 6e 67 74 68 20 24 70 72 65 66 69 78 g length $prefix
1b00: 5d 7d 5d 63 22 20 22 24 69 64 78 2b 5b 65 78 70 ]}]c" "$idx+[exp
1b10: 72 20 7b 31 31 2b 5b 73 74 72 69 6e 67 20 6c 65 r {11+[string le
1b20: 6e 67 74 68 20 24 70 72 65 66 69 78 5d 7d 5d 63 ngth $prefix]}]c
1b30: 22 0a 20 20 20 20 24 77 20 6d 61 72 6b 20 73 65 ". $w mark se
1b40: 74 20 69 6e 73 65 72 74 20 24 69 64 78 2b 5b 65 t insert $idx+[e
1b50: 78 70 72 20 7b 31 31 2b 5b 73 74 72 69 6e 67 20 xpr {11+[string
1b60: 6c 65 6e 67 74 68 20 24 70 72 65 66 69 78 5d 7d length $prefix]}
1b70: 5d 63 0a 20 20 20 20 6d 63 3a 3a 73 65 74 5f 69 ]c. mc::set_i
1b80: 73 5f 6d 6f 64 69 66 69 65 64 0a 7d 0a 0a 23 23 s_modified.}..##
1b90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1ba0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1bb0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1bc0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1bd0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 ##############.#
1be0: 20 20 20 20 70 72 6f 63 20 4d 61 72 6b 20 74 72 proc Mark tr
1bf0: 61 6e 73 6c 61 74 69 6f 6e 20 73 74 72 69 6e 67 anslation string
1c00: 73 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 s.##############
1c10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1c20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1c30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1c40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1c50: 23 23 0a 0a 73 65 74 20 22 6d 61 63 72 6f 64 61 ##..set "macroda
1c60: 74 61 28 4d 61 72 6b 20 74 72 61 6e 73 6c 61 74 ta(Mark translat
1c70: 69 6f 6e 20 73 74 72 69 6e 67 73 2c 69 6e 6d 65 ion strings,inme
1c80: 6e 75 29 22 20 30 0a 23 20 72 65 63 6f 6d 65 6e nu)" 0.# recomen
1c90: 64 65 64 3a 20 3c 46 38 3e 0a 73 65 74 20 22 6d ded: <F8>.set "m
1ca0: 61 63 72 6f 64 61 74 61 28 4d 61 72 6b 20 74 72 acrodata(Mark tr
1cb0: 61 6e 73 6c 61 74 69 6f 6e 20 73 74 72 69 6e 67 anslation string
1cc0: 73 2c 61 63 63 65 6c 65 72 61 74 6f 72 29 22 20 s,accelerator)"
1cd0: 22 22 0a 73 65 74 20 22 6d 61 63 72 6f 64 61 74 "".set "macrodat
1ce0: 61 28 4d 61 72 6b 20 74 72 61 6e 73 6c 61 74 69 a(Mark translati
1cf0: 6f 6e 20 73 74 72 69 6e 67 73 2c 68 65 6c 70 29 on strings,help)
1d00: 22 20 22 4d 61 72 6b 20 74 72 61 6e 73 6c 61 74 " "Mark translat
1d10: 69 6f 6e 20 73 74 72 69 6e 67 73 20 66 6f 72 20 ion strings for
1d20: 47 69 44 22 0a 0a 70 72 6f 63 20 22 4d 61 72 6b GiD"..proc "Mark
1d30: 20 74 72 61 6e 73 6c 61 74 69 6f 6e 20 73 74 72 translation str
1d40: 69 6e 67 73 22 20 7b 20 77 20 7d 20 7b 0a 0a 20 ings" { w } {..
1d50: 20 20 20 73 65 74 20 74 72 61 6e 73 5f 63 6d 64 set trans_cmd
1d60: 20 22 3d 22 0a 20 20 20 20 73 65 74 20 72 65 78 "=". set rex
1d70: 20 7b 28 3f 3a 2d 74 65 78 74 7c 2d 6c 61 62 65 {(?:-text|-labe
1d80: 6c 7c 2d 68 65 6c 70 74 65 78 74 29 5c 73 2b 28 l|-helptext)\s+(
1d90: 5b 5e 5c 5b 24 5c 73 5d 5c 53 2b 7c 5c 22 5b 5e [^\[$\s]\S+|\"[^
1da0: 5c 22 5d 2b 5c 22 7c 7b 5b 5e 5c 7d 5d 2b 7d 29 \"]+\"|{[^\}]+})
1db0: 7d 0a 20 20 20 20 73 65 74 20 72 65 78 5f 62 65 }. set rex_be
1dc0: 66 6f 72 65 20 22 28 5c 5b 5c 5b 5c 5d 5c 5c 73 fore "(\[\[\]\\s
1dd0: 2a 24 74 72 61 6e 73 5f 63 6d 64 5c 5c 73 2b 5c *$trans_cmd\\s+\
1de0: 24 7c 2d 63 6f 6d 6d 61 6e 64 5c 5c 73 2b 5c 24 $|-command\\s+\$
1df0: 7c 5e 5c 5c 73 2a 62 69 6e 64 5c 5c 73 2b 29 22 |^\\s*bind\\s+)"
1e00: 0a 20 20 20 20 73 65 74 20 72 65 78 5f 63 6d 64 . set rex_cmd
1e10: 20 7b 28 2d 63 6f 6d 6d 61 6e 64 5c 73 2b 24 7c {(-command\s+$|
1e20: 5e 5c 73 2a 62 69 6e 64 5c 73 2b 29 7d 0a 0a 20 ^\s*bind\s+)}..
1e30: 20 20 20 64 65 73 74 72 6f 79 20 24 77 2e 5f 74 destroy $w._t
1e40: 0a 20 20 20 20 73 65 74 20 74 6f 70 20 5b 74 6f . set top [to
1e50: 70 6c 65 76 65 6c 20 24 77 2e 5f 74 5d 0a 20 20 plevel $w._t].
1e60: 20 20 77 6d 20 6f 76 65 72 72 69 64 65 72 65 64 wm overridered
1e70: 69 72 65 63 74 20 24 74 6f 70 20 31 0a 20 20 20 irect $top 1.
1e80: 20 6c 61 62 65 6c 20 24 74 6f 70 2e 6c 20 2d 62 label $top.l -b
1e90: 67 20 77 68 69 74 65 20 2d 66 67 20 62 6c 61 63 g white -fg blac
1ea0: 6b 20 2d 62 64 20 31 20 2d 72 65 6c 69 65 66 20 k -bd 1 -relief
1eb0: 72 61 69 73 65 64 20 2d 77 69 64 74 68 20 32 35 raised -width 25
1ec0: 0a 20 20 20 20 73 65 74 20 6c 61 62 65 6c 74 65 . set labelte
1ed0: 78 74 28 74 72 61 6e 73 29 20 22 59 20 6d 6f 64 xt(trans) "Y mod
1ee0: 69 66 79 20 73 74 72 69 6e 67 5c 6e 53 20 6d 6f ify string\nS mo
1ef0: 64 69 66 79 20 61 6e 64 20 73 74 6f 70 5c 6e 4e dify and stop\nN
1f00: 2c 20 46 38 20 64 6f 20 6e 6f 74 20 6d 6f 64 69 , F8 do not modi
1f10: 66 79 5c 6e 45 53 43 20 73 74 6f 70 22 0a 20 20 fy\nESC stop".
1f20: 20 20 73 65 74 20 6c 61 62 65 6c 74 65 78 74 28 set labeltext(
1f30: 65 72 72 29 20 22 59 2c 20 4e 2c 20 46 38 20 63 err) "Y, N, F8 c
1f40: 6f 6e 74 69 6e 75 65 5c 6e 45 53 43 20 73 74 6f ontinue\nESC sto
1f50: 70 22 0a 0a 20 20 20 20 70 61 63 6b 20 24 74 6f p".. pack $to
1f60: 70 2e 6c 0a 20 20 20 20 62 69 6e 64 20 24 74 6f p.l. bind $to
1f70: 70 2e 6c 20 3c 4b 65 79 50 72 65 73 73 3e 20 7b p.l <KeyPress> {
1f80: 73 65 74 20 4d 61 72 6b 5f 74 72 61 6e 73 6c 61 set Mark_transla
1f90: 74 69 6f 6e 5f 73 74 72 69 6e 67 73 5f 76 61 72 tion_strings_var
1fa0: 20 25 4b 3b 20 62 72 65 61 6b 7d 0a 20 20 20 20 %K; break}.
1fb0: 62 69 6e 64 20 24 74 6f 70 2e 6c 20 3c 42 75 74 bind $top.l <But
1fc0: 74 6f 6e 50 72 65 73 73 2d 31 3e 20 7b 73 65 74 tonPress-1> {set
1fd0: 20 4d 61 72 6b 5f 74 72 61 6e 73 6c 61 74 69 6f Mark_translatio
1fe0: 6e 5f 73 74 72 69 6e 67 73 5f 76 61 72 20 45 73 n_strings_var Es
1ff0: 63 61 70 65 7d 0a 20 20 20 20 66 6f 63 75 73 20 cape}. focus
2000: 24 74 6f 70 2e 6c 0a 20 20 20 20 77 6d 20 77 69 $top.l. wm wi
2010: 74 68 64 72 61 77 20 24 74 6f 70 0a 20 20 20 20 thdraw $top.
2020: 24 77 20 74 61 67 20 63 6f 6e 66 69 67 75 72 65 $w tag configure
2030: 20 6d 61 72 6b 65 72 72 73 74 72 69 6e 67 73 20 markerrstrings
2040: 2d 62 61 63 6b 67 72 6f 75 6e 64 20 72 65 64 20 -background red
2050: 2d 66 6f 72 65 67 72 6f 75 6e 64 20 62 6c 61 63 -foreground blac
2060: 6b 0a 20 20 20 20 24 77 20 74 61 67 20 63 6f 6e k. $w tag con
2070: 66 69 67 75 72 65 20 6d 61 72 6b 74 72 61 6e 73 figure marktrans
2080: 73 74 72 69 6e 67 73 20 2d 62 61 63 6b 67 72 6f strings -backgro
2090: 75 6e 64 20 6f 72 61 6e 67 65 31 20 2d 66 6f 72 und orange1 -for
20a0: 65 67 72 6f 75 6e 64 20 62 6c 61 63 6b 0a 0a 20 eground black..
20b0: 20 20 20 77 68 69 6c 65 20 31 20 7b 0a 09 73 65 while 1 {..se
20c0: 74 20 74 79 70 65 5f 69 64 78 31 20 74 72 61 6e t type_idx1 tran
20d0: 73 0a 09 73 65 74 20 74 79 70 65 5f 69 64 78 32 s..set type_idx2
20e0: 20 74 72 61 6e 73 0a 09 73 65 74 20 69 64 78 31 trans..set idx1
20f0: 20 69 6e 73 65 72 74 0a 09 77 68 69 6c 65 20 31 insert..while 1
2100: 20 7b 0a 09 20 20 20 20 73 65 74 20 69 64 78 31 {.. set idx1
2110: 20 5b 24 77 20 73 65 61 72 63 68 20 2d 72 65 67 [$w search -reg
2120: 65 78 70 20 2d 63 6f 75 6e 74 20 3a 3a 6c 65 6e exp -count ::len
2130: 31 20 24 72 65 78 20 24 69 64 78 31 20 65 6e 64 1 $rex $idx1 end
2140: 5d 0a 09 20 20 20 20 69 66 20 7b 20 24 69 64 78 ].. if { $idx
2150: 31 20 65 71 20 22 22 20 7d 20 7b 20 62 72 65 61 1 eq "" } { brea
2160: 6b 20 7d 0a 09 20 20 20 20 73 65 74 20 62 65 66 k }.. set bef
2170: 6f 72 65 20 5b 24 77 20 67 65 74 20 22 24 69 64 ore [$w get "$id
2180: 78 31 20 6c 69 6e 65 73 74 61 72 74 22 20 24 69 x1 linestart" $i
2190: 64 78 31 5d 0a 09 20 20 20 20 73 65 74 20 63 75 dx1].. set cu
21a0: 72 72 20 5b 24 77 20 67 65 74 20 24 69 64 78 31 rr [$w get $idx1
21b0: 20 22 24 69 64 78 31 2b 24 7b 3a 3a 6c 65 6e 31 "$idx1+${::len1
21c0: 7d 63 22 5d 0a 09 20 20 20 20 72 65 67 65 78 70 }c"].. regexp
21d0: 20 2d 69 6e 64 69 63 65 73 20 24 72 65 78 20 24 -indices $rex $
21e0: 63 75 72 72 20 7b 7d 20 73 31 0a 09 20 20 20 20 curr {} s1..
21f0: 69 66 20 7b 20 21 5b 72 65 67 65 78 70 20 24 72 if { ![regexp $r
2200: 65 78 5f 62 65 66 6f 72 65 20 24 62 65 66 6f 72 ex_before $befor
2210: 65 5d 20 7d 20 7b 0a 09 09 73 65 74 20 69 64 78 e] } {...set idx
2220: 31 5f 65 6e 64 20 22 24 69 64 78 31 2b 5b 65 78 1_end "$idx1+[ex
2230: 70 72 20 7b 5b 6c 69 6e 64 65 78 20 24 73 31 20 pr {[lindex $s1
2240: 31 5d 2b 31 7d 5d 63 22 0a 09 09 73 65 74 20 69 1]+1}]c"...set i
2250: 64 78 31 20 22 24 69 64 78 31 2b 5b 6c 69 6e 64 dx1 "$idx1+[lind
2260: 65 78 20 24 73 31 20 30 5d 63 22 0a 09 09 62 72 ex $s1 0]c"...br
2270: 65 61 6b 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 eak.. }..
2280: 73 65 74 20 69 64 78 31 20 22 24 69 64 78 31 2b set idx1 "$idx1+
2290: 24 7b 3a 3a 6c 65 6e 31 7d 63 22 0a 09 7d 0a 09 ${::len1}c"..}..
22a0: 73 65 74 20 69 64 78 32 20 69 6e 73 65 72 74 0a set idx2 insert.
22b0: 09 77 68 69 6c 65 20 31 20 7b 0a 09 20 20 20 20 .while 1 {..
22c0: 73 65 74 20 72 65 74 20 5b 24 77 20 74 61 67 20 set ret [$w tag
22d0: 6e 65 78 74 72 61 6e 67 65 20 67 72 65 79 20 24 nextrange grey $
22e0: 69 64 78 32 5d 0a 09 20 20 20 20 69 66 20 7b 20 idx2].. if {
22f0: 24 72 65 74 20 65 71 20 22 22 20 7d 20 7b 0a 09 $ret eq "" } {..
2300: 09 73 65 74 20 69 64 78 32 20 22 22 0a 09 09 62 .set idx2 ""...b
2310: 72 65 61 6b 0a 09 20 20 20 20 7d 0a 09 20 20 20 reak.. }..
2320: 20 66 6f 72 65 61 63 68 20 22 69 64 78 32 20 69 foreach "idx2 i
2330: 64 78 32 5f 65 6e 64 22 20 24 72 65 74 20 62 72 dx2_end" $ret br
2340: 65 61 6b 0a 09 20 20 20 20 73 65 74 20 74 78 74 eak.. set txt
2350: 20 5b 24 77 20 67 65 74 20 24 69 64 78 32 20 24 [$w get $idx2 $
2360: 69 64 78 32 5f 65 6e 64 5d 0a 09 20 20 20 20 73 idx2_end].. s
2370: 65 74 20 74 78 74 5f 62 65 66 6f 72 65 20 5b 24 et txt_before [$
2380: 77 20 67 65 74 20 22 24 69 64 78 32 20 6c 69 6e w get "$idx2 lin
2390: 65 73 74 61 72 74 22 20 24 69 64 78 32 5d 0a 09 estart" $idx2]..
23a0: 20 20 20 20 69 66 20 7b 20 5b 73 74 72 69 6e 67 if { [string
23b0: 20 6c 65 6e 67 74 68 20 24 74 78 74 5d 20 3e 20 length $txt] >
23c0: 32 20 7d 20 7b 0a 09 09 69 66 20 7b 20 5b 72 65 2 } {...if { [re
23d0: 67 65 78 70 20 24 72 65 78 5f 62 65 66 6f 72 65 gexp $rex_before
23e0: 20 24 74 78 74 5f 62 65 66 6f 72 65 5d 20 7d 20 $txt_before] }
23f0: 7b 0a 09 09 20 20 20 20 69 66 20 7b 20 21 5b 72 {... if { ![r
2400: 65 67 65 78 70 20 2d 2d 20 24 72 65 78 5f 63 6d egexp -- $rex_cm
2410: 64 20 24 74 78 74 5f 62 65 66 6f 72 65 5d 20 26 d $txt_before] &
2420: 26 20 5c 0a 09 09 20 20 20 20 20 20 20 20 5b 72 & \... [r
2430: 65 67 65 78 70 20 7b 5b 5e 5c 5c 5d 5c 24 7d 20 egexp {[^\\]\$}
2440: 24 74 78 74 5d 20 7d 20 7b 0a 09 09 20 20 20 20 $txt] } {...
2450: 20 20 20 20 73 65 74 20 74 79 70 65 5f 69 64 78 set type_idx
2460: 32 20 65 72 72 0a 09 09 20 20 20 20 20 20 20 20 2 err...
2470: 62 72 65 61 6b 0a 09 09 20 20 20 20 7d 0a 09 09 break... }...
2480: 7d 20 65 6c 73 65 20 7b 20 62 72 65 61 6b 20 7d } else { break }
2490: 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 73 65 74 .. }.. set
24a0: 20 69 64 78 32 20 24 69 64 78 32 5f 65 6e 64 0a idx2 $idx2_end.
24b0: 09 7d 0a 09 69 66 20 7b 20 24 69 64 78 31 20 65 .}..if { $idx1 e
24c0: 71 20 22 22 20 26 26 20 24 69 64 78 32 20 65 71 q "" && $idx2 eq
24d0: 20 22 22 20 7d 20 7b 0a 09 20 20 20 20 62 65 6c "" } {.. bel
24e0: 6c 0a 09 20 20 20 20 62 72 65 61 6b 0a 09 7d 0a l.. break..}.
24f0: 09 69 66 20 7b 20 24 69 64 78 31 20 6e 65 20 22 .if { $idx1 ne "
2500: 22 20 26 26 20 28 24 69 64 78 32 20 65 71 20 22 " && ($idx2 eq "
2510: 22 20 7c 7c 20 5b 24 77 20 63 6f 6d 70 61 72 65 " || [$w compare
2520: 20 24 69 64 78 31 20 3c 20 24 69 64 78 32 5d 29 $idx1 < $idx2])
2530: 20 7d 20 7b 0a 09 20 20 20 20 66 6f 72 65 61 63 } {.. foreac
2540: 68 20 22 69 6e 69 20 65 6e 64 20 74 79 70 65 22 h "ini end type"
2550: 20 5b 6c 69 73 74 20 24 69 64 78 31 20 24 69 64 [list $idx1 $id
2560: 78 31 5f 65 6e 64 20 24 74 79 70 65 5f 69 64 78 x1_end $type_idx
2570: 31 5d 20 62 72 65 61 6b 0a 09 7d 20 65 6c 73 65 1] break..} else
2580: 20 7b 0a 09 20 20 20 20 66 6f 72 65 61 63 68 20 {.. foreach
2590: 22 69 6e 69 20 65 6e 64 20 74 79 70 65 22 20 5b "ini end type" [
25a0: 6c 69 73 74 20 24 69 64 78 32 20 24 69 64 78 32 list $idx2 $idx2
25b0: 5f 65 6e 64 20 24 74 79 70 65 5f 69 64 78 32 5d _end $type_idx2]
25c0: 20 62 72 65 61 6b 0a 09 7d 0a 09 69 66 20 7b 20 break..}..if {
25d0: 24 74 79 70 65 20 65 71 20 22 74 72 61 6e 73 22 $type eq "trans"
25e0: 20 7d 20 7b 0a 09 20 20 20 20 24 77 20 74 61 67 } {.. $w tag
25f0: 20 61 64 64 20 6d 61 72 6b 74 72 61 6e 73 73 74 add marktransst
2600: 72 69 6e 67 73 20 24 69 6e 69 20 24 65 6e 64 0a rings $ini $end.
2610: 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 24 .} else {.. $
2620: 77 20 74 61 67 20 61 64 64 20 6d 61 72 6b 65 72 w tag add marker
2630: 72 73 74 72 69 6e 67 73 20 24 69 6e 69 20 24 65 rstrings $ini $e
2640: 6e 64 0a 09 7d 0a 09 24 74 6f 70 2e 6c 20 63 6f nd..}..$top.l co
2650: 6e 66 69 67 75 72 65 20 2d 74 65 78 74 20 24 6c nfigure -text $l
2660: 61 62 65 6c 74 65 78 74 28 24 74 79 70 65 29 0a abeltext($type).
2670: 09 24 77 20 73 65 65 20 24 69 6e 69 0a 09 75 70 .$w see $ini..up
2680: 64 61 74 65 20 69 64 6c 65 74 61 73 6b 73 0a 09 date idletasks..
2690: 66 6f 72 65 61 63 68 20 22 74 78 20 74 79 20 74 foreach "tx ty t
26a0: 77 20 74 68 22 20 5b 24 77 20 62 62 6f 78 20 24 w th" [$w bbox $
26b0: 69 6e 69 5d 20 62 72 65 61 6b 0a 09 77 6d 20 64 ini] break..wm d
26c0: 65 69 63 6f 6e 69 66 79 20 24 74 6f 70 0a 09 73 eiconify $top..s
26d0: 65 74 20 74 78 20 5b 65 78 70 72 20 7b 24 74 78 et tx [expr {$tx
26e0: 2b 5b 77 69 6e 66 6f 20 72 6f 6f 74 78 20 24 77 +[winfo rootx $w
26f0: 5d 7d 5d 0a 09 73 65 74 20 74 79 20 5b 65 78 70 ]}]..set ty [exp
2700: 72 20 7b 24 74 79 2b 24 74 68 2b 5b 77 69 6e 66 r {$ty+$th+[winf
2710: 6f 20 72 6f 6f 74 79 20 24 77 5d 2b 31 30 7d 5d o rooty $w]+10}]
2720: 0a 09 77 6d 20 67 65 6f 6d 65 74 72 79 20 24 74 ..wm geometry $t
2730: 6f 70 20 2b 24 74 78 2b 24 74 79 0a 09 67 72 61 op +$tx+$ty..gra
2740: 62 20 24 74 6f 70 2e 6c 0a 09 66 6f 63 75 73 20 b $top.l..focus
2750: 2d 66 6f 72 63 65 20 24 74 6f 70 2e 6c 0a 09 76 -force $top.l..v
2760: 77 61 69 74 20 4d 61 72 6b 5f 74 72 61 6e 73 6c wait Mark_transl
2770: 61 74 69 6f 6e 5f 73 74 72 69 6e 67 73 5f 76 61 ation_strings_va
2780: 72 0a 09 73 65 74 20 73 74 6f 70 61 66 74 65 72 r..set stopafter
2790: 20 30 0a 09 73 77 69 74 63 68 20 2d 2d 20 24 3a 0..switch -- $:
27a0: 3a 4d 61 72 6b 5f 74 72 61 6e 73 6c 61 74 69 6f :Mark_translatio
27b0: 6e 5f 73 74 72 69 6e 67 73 5f 76 61 72 20 7b 0a n_strings_var {.
27c0: 09 20 20 20 20 79 20 2d 20 59 20 7b 0a 09 09 69 . y - Y {...i
27d0: 66 20 7b 20 24 74 79 70 65 20 65 71 20 22 74 72 f { $type eq "tr
27e0: 61 6e 73 22 20 7d 20 7b 0a 09 09 20 20 20 20 73 ans" } {... s
27f0: 65 74 20 77 68 61 74 20 63 68 61 6e 67 65 0a 09 et what change..
2800: 09 7d 20 65 6c 73 65 20 7b 20 73 65 74 20 77 68 .} else { set wh
2810: 61 74 20 63 6f 6e 74 20 7d 0a 09 20 20 20 20 7d at cont }.. }
2820: 0a 09 20 20 20 20 73 20 2d 20 53 20 7b 0a 09 09 .. s - S {...
2830: 69 66 20 7b 20 24 74 79 70 65 20 65 71 20 22 74 if { $type eq "t
2840: 72 61 6e 73 22 20 7d 20 7b 0a 09 09 20 20 20 20 rans" } {...
2850: 73 65 74 20 77 68 61 74 20 63 68 61 6e 67 65 0a set what change.
2860: 09 09 7d 20 65 6c 73 65 20 7b 20 73 65 74 20 77 ..} else { set w
2870: 68 61 74 20 63 6f 6e 74 20 7d 0a 09 09 73 65 74 hat cont }...set
2880: 20 73 74 6f 70 61 66 74 65 72 20 31 0a 09 20 20 stopafter 1..
2890: 20 20 7d 0a 09 20 20 20 20 6e 20 2d 20 4e 20 2d }.. n - N -
28a0: 20 46 38 20 7b 20 73 65 74 20 77 68 61 74 20 63 F8 { set what c
28b0: 6f 6e 74 20 7d 0a 09 20 20 20 20 64 65 66 61 75 ont }.. defau
28c0: 6c 74 20 7b 20 73 65 74 20 77 68 61 74 20 65 6e lt { set what en
28d0: 64 20 7d 0a 09 7d 0a 09 73 77 69 74 63 68 20 24 d }..}..switch $
28e0: 77 68 61 74 20 7b 0a 09 20 20 20 20 63 68 61 6e what {.. chan
28f0: 67 65 20 7b 0a 09 09 73 65 74 20 64 61 74 61 20 ge {...set data
2900: 5b 24 77 20 67 65 74 20 24 69 6e 69 20 24 65 6e [$w get $ini $en
2910: 64 5d 0a 09 09 72 65 67 73 75 62 20 2d 61 6c 6c d]...regsub -all
2920: 20 7b 28 5b 5e 5c 5c 5d 29 5c 24 28 5c 77 2b 7c {([^\\])\$(\w+|
2930: 7b 5b 5e 5c 7d 5d 2b 7d 29 7d 20 24 64 61 74 61 {[^\}]+})} $data
2940: 20 7b 5c 31 25 73 7d 20 64 61 74 61 5f 6e 65 77 {\1%s} data_new
2950: 0a 09 09 73 65 74 20 64 61 74 61 5f 6e 65 77 20 ...set data_new
2960: 22 5c 5b 24 74 72 61 6e 73 5f 63 6d 64 20 24 64 "\[$trans_cmd $d
2970: 61 74 61 5f 6e 65 77 22 0a 09 09 73 65 74 20 72 ata_new"...set r
2980: 65 78 5f 76 61 72 20 7b 5b 5e 5c 5c 5d 5c 24 28 ex_var {[^\\]\$(
2990: 5c 77 2b 7c 7b 5b 5e 5c 7d 5d 2b 7d 29 7d 0a 09 \w+|{[^\}]+})}..
29a0: 09 66 6f 72 65 61 63 68 20 22 2d 20 76 22 20 5b .foreach "- v" [
29b0: 72 65 67 65 78 70 20 2d 69 6e 6c 69 6e 65 20 2d regexp -inline -
29c0: 61 6c 6c 20 24 72 65 78 5f 76 61 72 20 24 64 61 all $rex_var $da
29d0: 74 61 5d 20 7b 0a 09 09 20 20 20 20 61 70 70 65 ta] {... appe
29e0: 6e 64 20 64 61 74 61 5f 6e 65 77 20 22 20 5c 24 nd data_new " \$
29f0: 24 76 22 0a 09 09 7d 0a 09 09 61 70 70 65 6e 64 $v"...}...append
2a00: 20 64 61 74 61 5f 6e 65 77 20 22 5c 5d 22 0a 09 data_new "\]"..
2a10: 09 24 77 20 64 65 6c 65 74 65 20 24 69 6e 69 20 .$w delete $ini
2a20: 24 65 6e 64 0a 09 09 24 77 20 69 6e 73 65 72 74 $end...$w insert
2a30: 20 24 69 6e 69 20 24 64 61 74 61 5f 6e 65 77 0a $ini $data_new.
2a40: 09 09 24 77 20 6d 61 72 6b 20 73 65 74 20 69 6e ..$w mark set in
2a50: 73 65 72 74 20 22 24 69 6e 69 2b 5b 73 74 72 69 sert "$ini+[stri
2a60: 6e 67 20 6c 65 6e 67 74 68 20 24 64 61 74 61 5f ng length $data_
2a70: 6e 65 77 5d 63 22 0a 09 09 69 66 20 7b 20 24 73 new]c"...if { $s
2a80: 74 6f 70 61 66 74 65 72 20 7d 20 7b 20 62 72 65 topafter } { bre
2a90: 61 6b 20 7d 0a 09 20 20 20 20 7d 0a 09 20 20 20 ak }.. }..
2aa0: 20 63 6f 6e 74 20 7b 0a 09 09 24 77 20 74 61 67 cont {...$w tag
2ab0: 20 72 65 6d 6f 76 65 20 6d 61 72 6b 74 72 61 6e remove marktran
2ac0: 73 73 74 72 69 6e 67 73 20 24 69 6e 69 20 24 65 sstrings $ini $e
2ad0: 6e 64 0a 09 09 24 77 20 74 61 67 20 72 65 6d 6f nd...$w tag remo
2ae0: 76 65 20 6d 61 72 6b 65 72 72 73 74 72 69 6e 67 ve markerrstring
2af0: 73 20 31 2e 30 20 65 6e 64 0a 09 09 24 77 20 6d s 1.0 end...$w m
2b00: 61 72 6b 20 73 65 74 20 69 6e 73 65 72 74 20 24 ark set insert $
2b10: 65 6e 64 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 end.. }..
2b20: 65 6e 64 20 7b 0a 09 09 24 77 20 6d 61 72 6b 20 end {...$w mark
2b30: 73 65 74 20 69 6e 73 65 72 74 20 24 69 6e 69 0a set insert $ini.
2b40: 09 09 62 72 65 61 6b 0a 09 20 20 20 20 7d 0a 09 ..break.. }..
2b50: 7d 0a 09 77 6d 20 77 69 74 68 64 72 61 77 20 24 }..wm withdraw $
2b60: 74 6f 70 0a 20 20 20 20 7d 0a 20 20 20 20 64 65 top. }. de
2b70: 73 74 72 6f 79 20 24 74 6f 70 0a 20 20 20 20 24 stroy $top. $
2b80: 77 20 74 61 67 20 72 65 6d 6f 76 65 20 6d 61 72 w tag remove mar
2b90: 6b 74 72 61 6e 73 73 74 72 69 6e 67 73 20 31 2e ktransstrings 1.
2ba0: 30 20 65 6e 64 0a 20 20 20 20 24 77 20 74 61 67 0 end. $w tag
2bb0: 20 72 65 6d 6f 76 65 20 6d 61 72 6b 65 72 72 73 remove markerrs
2bc0: 74 72 69 6e 67 73 20 31 2e 30 20 65 6e 64 0a 20 trings 1.0 end.
2bd0: 20 20 20 66 6f 63 75 73 20 24 77 0a 7d 0a 0a 23 focus $w.}..#
2be0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
2bf0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
2c00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
2c10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
2c20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a ###############.
2c30: 23 20 20 20 20 70 72 6f 63 20 43 6f 6e 76 65 72 # proc Conver
2c40: 74 20 47 69 44 20 68 65 6c 70 20 53 74 72 69 6e t GiD help Strin
2c50: 67 73 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 gs.#############
2c60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
2c70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
2c80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
2c90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
2ca0: 23 23 23 0a 0a 73 65 74 20 22 6d 61 63 72 6f 64 ###..set "macrod
2cb0: 61 74 61 28 43 6f 6e 76 65 72 74 20 47 69 44 20 ata(Convert GiD
2cc0: 68 65 6c 70 20 53 74 72 69 6e 67 73 2c 69 6e 6d help Strings,inm
2cd0: 65 6e 75 29 22 20 30 0a 23 20 72 65 63 6f 6d 6d enu)" 0.# recomm
2ce0: 65 6e 64 65 64 3a 20 3c 43 6f 6e 74 72 6f 6c 2d ended: <Control-
2cf0: 46 38 3e 0a 73 65 74 20 22 6d 61 63 72 6f 64 61 F8>.set "macroda
2d00: 74 61 28 43 6f 6e 76 65 72 74 20 47 69 44 20 68 ta(Convert GiD h
2d10: 65 6c 70 20 53 74 72 69 6e 67 73 2c 61 63 63 65 elp Strings,acce
2d20: 6c 65 72 61 74 6f 72 29 22 20 22 22 0a 73 65 74 lerator)" "".set
2d30: 20 22 6d 61 63 72 6f 64 61 74 61 28 43 6f 6e 76 "macrodata(Conv
2d40: 65 72 74 20 47 69 44 20 68 65 6c 70 20 53 74 72 ert GiD help Str
2d50: 69 6e 67 73 2c 68 65 6c 70 29 22 20 22 43 6f 6e ings,help)" "Con
2d60: 76 65 72 74 20 47 69 44 20 68 65 6c 70 20 53 74 vert GiD help St
2d70: 72 69 6e 67 73 22 0a 0a 70 72 6f 63 20 22 43 6f rings"..proc "Co
2d80: 6e 76 65 72 74 20 47 69 44 20 68 65 6c 70 20 53 nvert GiD help S
2d90: 74 72 69 6e 67 73 22 20 7b 20 77 20 7d 20 7b 0a trings" { w } {.
2da0: 0a 20 20 20 20 73 65 74 20 74 72 61 6e 73 5f 63 . set trans_c
2db0: 6d 64 20 22 3d 22 0a 20 20 20 20 73 65 74 20 72 md "=". set r
2dc0: 61 6e 67 65 20 5b 24 77 20 74 61 67 20 6e 65 78 ange [$w tag nex
2dd0: 74 72 61 6e 67 65 20 73 65 6c 20 31 2e 30 20 65 trange sel 1.0 e
2de0: 6e 64 5d 0a 20 20 20 20 69 66 20 7b 20 24 72 61 nd]. if { $ra
2df0: 6e 67 65 20 3d 3d 20 22 22 20 7d 20 7b 20 0a 09 nge == "" } { ..
2e00: 57 61 72 6e 57 69 6e 20 22 53 65 6c 65 63 74 20 WarnWin "Select
2e10: 61 20 72 65 67 69 6f 6e 20 74 6f 20 6d 6f 64 69 a region to modi
2e20: 66 79 22 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 fy"..return.
2e30: 7d 0a 20 20 20 20 73 65 74 20 64 61 74 61 20 5b }. set data [
2e40: 65 76 61 6c 20 24 77 20 67 65 74 20 24 72 61 6e eval $w get $ran
2e50: 67 65 5d 0a 0a 20 20 20 20 72 65 67 73 75 62 20 ge].. regsub
2e60: 2d 6c 69 6e 65 20 2d 61 6c 6c 20 7b 5e 28 5c 73 -line -all {^(\s
2e70: 2a 2e 29 5c 22 7d 20 24 64 61 74 61 20 7b 5c 31 *.)\"} $data {\1
2e80: 7d 20 64 61 74 61 0a 20 20 20 20 72 65 67 73 75 } data. regsu
2e90: 62 20 2d 6c 69 6e 65 20 2d 61 6c 6c 20 7b 5c 73 b -line -all {\s
2ea0: 2a 5c 22 5c 73 2a 5c 5c 24 7d 20 24 64 61 74 61 *\"\s*\\$} $data
2eb0: 20 7b 5c 5c 7d 20 64 61 74 61 0a 0a 20 20 20 20 {\\} data..
2ec0: 65 76 61 6c 20 24 77 20 64 65 6c 65 74 65 20 24 eval $w delete $
2ed0: 72 61 6e 67 65 0a 20 20 20 20 24 77 20 69 6e 73 range. $w ins
2ee0: 65 72 74 20 5b 6c 69 6e 64 65 78 20 24 72 61 6e ert [lindex $ran
2ef0: 67 65 20 30 5d 20 22 5c 5b 24 74 72 61 6e 73 5f ge 0] "\[$trans_
2f00: 63 6d 64 20 24 64 61 74 61 5c 5d 22 0a 20 20 20 cmd $data\]".
2f10: 20 6d 63 3a 3a 73 65 74 5f 69 73 5f 6d 6f 64 69 mc::set_is_modi
2f20: 66 69 65 64 0a 7d 0a 0a 23 23 23 23 23 23 23 23 fied.}..########
2f30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
2f40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
2f50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
2f60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
2f70: 23 23 23 23 23 23 23 23 0a 23 20 20 20 20 70 72 ########.# pr
2f80: 6f 63 20 42 61 63 6b 67 72 6f 75 6e 64 20 63 6f oc Background co
2f90: 6c 6f 72 20 72 65 67 69 6f 6e 0a 23 23 23 23 23 lor region.#####
2fa0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
2fb0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
2fc0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
2fd0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
2fe0: 23 23 23 23 23 23 23 23 23 23 23 0a 0a 73 65 74 ###########..set
2ff0: 20 22 6d 61 63 72 6f 64 61 74 61 28 42 61 63 6b "macrodata(Back
3000: 67 72 6f 75 6e 64 20 63 6f 6c 6f 72 20 72 65 67 ground color reg
3010: 69 6f 6e 2c 69 6e 6d 65 6e 75 29 22 20 31 0a 73 ion,inmenu)" 1.s
3020: 65 74 20 22 6d 61 63 72 6f 64 61 74 61 28 42 61 et "macrodata(Ba
3030: 63 6b 67 72 6f 75 6e 64 20 63 6f 6c 6f 72 20 72 ckground color r
3040: 65 67 69 6f 6e 2c 61 63 63 65 6c 65 72 61 74 6f egion,accelerato
3050: 72 29 22 20 22 3c 43 6f 6e 74 72 6f 6c 2d 75 3e r)" "<Control-u>
3060: 3c 43 6f 6e 74 72 6f 6c 2d 62 3e 22 0a 73 65 74 <Control-b>".set
3070: 20 22 6d 61 63 72 6f 64 61 74 61 28 42 61 63 6b "macrodata(Back
3080: 67 72 6f 75 6e 64 20 63 6f 6c 6f 72 20 72 65 67 ground color reg
3090: 69 6f 6e 2c 68 65 6c 70 29 22 20 22 41 70 70 6c ion,help)" "Appl
30a0: 79 20 63 6f 6c 6f 72 20 74 6f 20 74 68 65 20 73 y color to the s
30b0: 65 6c 65 63 74 65 64 20 74 65 78 74 20 72 65 67 elected text reg
30c0: 69 6f 6e 20 62 61 63 6b 67 72 6f 75 6e 64 20 28 ion background (
30d0: 54 6f 20 75 6e 61 70 70 6c 79 2c 20 75 73 65 20 To unapply, use
30e0: 66 75 6e 63 74 69 6f 6e 20 77 69 74 68 6f 75 74 function without
30f0: 20 73 65 6c 65 63 74 69 6f 6e 29 22 0a 0a 70 72 selection)"..pr
3100: 6f 63 20 22 42 61 63 6b 67 72 6f 75 6e 64 20 63 oc "Background c
3110: 6f 6c 6f 72 20 72 65 67 69 6f 6e 22 20 7b 20 77 olor region" { w
3120: 20 7d 20 7b 0a 0a 20 20 20 20 73 65 74 20 72 61 } {.. set ra
3130: 6e 67 65 20 5b 24 77 20 74 61 67 20 6e 65 78 74 nge [$w tag next
3140: 72 61 6e 67 65 20 73 65 6c 20 31 2e 30 20 65 6e range sel 1.0 en
3150: 64 5d 0a 20 20 20 20 69 66 20 7b 20 24 72 61 6e d]. if { $ran
3160: 67 65 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 69 66 ge == "" } {..if
3170: 20 7b 20 5b 6c 73 65 61 72 63 68 20 5b 24 77 20 { [lsearch [$w
3180: 74 61 67 20 6e 61 6d 65 73 20 69 6e 73 65 72 74 tag names insert
3190: 5d 20 62 61 63 6b 67 72 6f 75 6e 64 5f 63 6f 6c ] background_col
31a0: 6f 72 5f 2a 5d 20 3d 3d 20 2d 31 20 7d 20 7b 0a or_*] == -1 } {.
31b0: 09 20 20 20 20 57 61 72 6e 57 69 6e 20 22 53 65 . WarnWin "Se
31c0: 6c 65 63 74 20 61 20 72 65 67 69 6f 6e 20 74 6f lect a region to
31d0: 20 61 70 70 6c 79 20 63 6f 6c 6f 72 20 6f 72 20 apply color or
31e0: 70 75 74 20 74 68 65 20 63 75 72 73 6f 72 20 69 put the cursor i
31f0: 6e 20 61 20 72 65 67 69 6f 6e 20 74 6f 20 75 6e n a region to un
3200: 61 70 70 6c 79 22 0a 09 20 20 20 20 72 65 74 75 apply".. retu
3210: 72 6e 0a 09 7d 0a 09 64 69 61 6c 6f 67 77 69 6e rn..}..dialogwin
3220: 5f 73 6e 69 74 20 24 77 2e 5f 61 73 6b 20 2d 74 _snit $w._ask -t
3230: 69 74 6c 65 20 22 55 6e 61 70 70 6c 79 20 62 61 itle "Unapply ba
3240: 63 6b 67 72 6f 75 6e 64 20 63 6f 6c 6f 72 22 20 ckground color"
3250: 5c 0a 09 20 20 20 20 2d 65 6e 74 72 79 74 65 78 \.. -entrytex
3260: 74 20 22 44 6f 20 79 6f 75 20 77 61 6e 74 20 74 t "Do you want t
3270: 6f 20 75 6e 61 70 70 6c 79 20 62 61 63 6b 67 72 o unapply backgr
3280: 6f 75 6e 64 20 63 6f 6c 6f 72 20 74 6f 20 63 75 ound color to cu
3290: 72 72 65 6e 74 20 72 65 67 69 6f 6e 3f 22 20 5c rrent region?" \
32a0: 0a 09 20 20 20 20 2d 6d 6f 72 65 62 75 74 74 6f .. -morebutto
32b0: 6e 73 20 5b 6c 69 73 74 20 22 55 6e 61 70 70 6c ns [list "Unappl
32c0: 79 20 61 6c 6c 22 5d 0a 09 73 65 74 20 61 63 74 y all"]..set act
32d0: 69 6f 6e 20 5b 24 77 2e 5f 61 73 6b 20 63 72 65 ion [$w._ask cre
32e0: 61 74 65 77 69 6e 64 6f 77 5d 0a 09 64 65 73 74 atewindow]..dest
32f0: 72 6f 79 20 24 77 2e 5f 61 73 6b 0a 09 69 66 20 roy $w._ask..if
3300: 7b 20 24 61 63 74 69 6f 6e 20 3c 3d 20 30 20 7d { $action <= 0 }
3310: 20 7b 20 20 72 65 74 75 72 6e 20 7d 0a 09 69 66 { return }..if
3320: 20 7b 20 24 61 63 74 69 6f 6e 20 3d 3d 20 31 20 { $action == 1
3330: 7d 20 7b 0a 09 20 20 20 20 66 6f 72 65 61 63 68 } {.. foreach
3340: 20 74 61 67 20 5b 24 77 20 74 61 67 20 6e 61 6d tag [$w tag nam
3350: 65 73 20 69 6e 73 65 72 74 5d 20 7b 0a 09 09 69 es insert] {...i
3360: 66 20 7b 20 21 5b 73 74 72 69 6e 67 20 6d 61 74 f { ![string mat
3370: 63 68 20 62 61 63 6b 67 72 6f 75 6e 64 5f 63 6f ch background_co
3380: 6c 6f 72 5f 2a 20 24 74 61 67 5d 20 7d 20 7b 20 lor_* $tag] } {
3390: 63 6f 6e 74 69 6e 75 65 20 7d 0a 09 09 66 6f 72 continue }...for
33a0: 65 61 63 68 20 22 69 64 78 31 20 69 64 78 32 22 each "idx1 idx2"
33b0: 20 5b 24 77 20 74 61 67 20 72 61 6e 67 65 73 20 [$w tag ranges
33c0: 24 74 61 67 5d 20 7b 0a 09 09 20 20 20 20 69 66 $tag] {... if
33d0: 20 7b 20 5b 24 77 20 63 6f 6d 70 61 72 65 20 69 { [$w compare i
33e0: 6e 73 65 72 74 20 3e 3d 20 24 69 64 78 31 5d 20 nsert >= $idx1]
33f0: 26 26 20 5c 0a 09 09 20 20 20 20 20 20 20 20 5b && \... [
3400: 24 77 20 63 6f 6d 70 61 72 65 20 69 6e 73 65 72 $w compare inser
3410: 74 20 3c 20 24 69 64 78 32 5d 20 7d 20 7b 0a 09 t < $idx2] } {..
3420: 09 20 20 20 20 20 20 20 20 24 77 20 74 61 67 20 . $w tag
3430: 72 65 6d 6f 76 65 20 24 74 61 67 20 24 69 64 78 remove $tag $idx
3440: 31 20 24 69 64 78 32 0a 09 09 20 20 20 20 7d 0a 1 $idx2... }.
3450: 09 09 7d 0a 09 20 20 20 20 7d 0a 09 7d 20 65 6c ..}.. }..} el
3460: 73 65 69 66 20 7b 20 24 61 63 74 69 6f 6e 20 3d seif { $action =
3470: 3d 20 32 20 7d 20 7b 0a 09 20 20 20 20 66 6f 72 = 2 } {.. for
3480: 65 61 63 68 20 74 61 67 20 5b 24 77 20 74 61 67 each tag [$w tag
3490: 20 6e 61 6d 65 73 5d 20 7b 0a 09 09 69 66 20 7b names] {...if {
34a0: 20 21 5b 73 74 72 69 6e 67 20 6d 61 74 63 68 20 ![string match
34b0: 62 61 63 6b 67 72 6f 75 6e 64 5f 63 6f 6c 6f 72 background_color
34c0: 5f 2a 20 24 74 61 67 5d 20 7d 20 7b 20 63 6f 6e _* $tag] } { con
34d0: 74 69 6e 75 65 20 7d 0a 09 09 24 77 20 74 61 67 tinue }...$w tag
34e0: 20 64 65 6c 65 74 65 20 24 74 61 67 0a 09 20 20 delete $tag..
34f0: 20 20 7d 0a 09 7d 0a 09 72 65 74 75 72 6e 0a 20 }..}..return.
3500: 20 20 20 7d 0a 20 20 20 20 73 65 74 20 63 6f 6c }. set col
3510: 6f 72 20 5b 74 6b 5f 63 68 6f 6f 73 65 43 6f 6c or [tk_chooseCol
3520: 6f 72 20 2d 69 6e 69 74 69 61 6c 63 6f 6c 6f 72 or -initialcolor
3530: 20 67 72 65 79 32 30 5d 0a 20 20 20 20 69 66 20 grey20]. if
3540: 7b 20 24 63 6f 6c 6f 72 20 65 71 20 22 22 20 7d { $color eq "" }
3550: 20 7b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20 { return }..
3560: 20 24 77 20 74 61 67 20 61 64 64 20 62 61 63 6b $w tag add back
3570: 67 72 6f 75 6e 64 5f 63 6f 6c 6f 72 5f 24 63 6f ground_color_$co
3580: 6c 6f 72 20 5b 6c 69 6e 64 65 78 20 24 72 61 6e lor [lindex $ran
3590: 67 65 20 30 5d 20 5b 6c 69 6e 64 65 78 20 24 72 ge 0] [lindex $r
35a0: 61 6e 67 65 20 31 5d 0a 20 20 20 20 24 77 20 74 ange 1]. $w t
35b0: 61 67 20 63 6f 6e 66 69 67 75 72 65 20 62 61 63 ag configure bac
35c0: 6b 67 72 6f 75 6e 64 5f 63 6f 6c 6f 72 5f 24 63 kground_color_$c
35d0: 6f 6c 6f 72 20 2d 62 61 63 6b 67 72 6f 75 6e 64 olor -background
35e0: 20 24 63 6f 6c 6f 72 0a 20 20 20 20 24 77 20 74 $color. $w t
35f0: 61 67 20 6c 6f 77 65 72 20 62 61 63 6b 67 72 6f ag lower backgro
3600: 75 6e 64 5f 63 6f 6c 6f 72 5f 24 63 6f 6c 6f 72 und_color_$color
3610: 20 73 65 6c 0a 7d 0a 0a 23 23 23 23 23 23 23 23 sel.}..########
3620: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
3630: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
3640: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
3650: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
3660: 23 23 23 23 23 23 23 23 0a 23 20 20 20 20 70 72 ########.# pr
3670: 6f 63 20 54 6f 67 67 6c 65 20 64 65 62 75 67 20 oc Toggle debug
3680: 6c 69 6e 65 73 0a 23 23 23 23 23 23 23 23 23 23 lines.##########
3690: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
36a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
36b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
36c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
36d0: 23 23 23 23 23 23 0a 0a 70 72 6f 63 20 61 63 74 ######..proc act
36e0: 69 76 61 74 65 5f 64 65 61 63 74 69 76 61 74 65 ivate_deactivate
36f0: 5f 64 65 62 75 67 5f 6c 69 6e 65 73 20 7b 20 77 _debug_lines { w
3700: 20 61 63 74 69 76 61 74 65 5f 64 65 61 63 74 69 activate_deacti
3710: 76 61 74 65 5f 74 6f 67 67 6c 65 20 7d 20 7b 0a vate_toggle } {.
3720: 20 20 20 20 0a 20 20 20 20 6c 61 73 73 69 67 6e . lassign
3730: 20 5b 24 77 20 74 61 67 20 72 61 6e 67 65 73 20 [$w tag ranges
3740: 73 65 6c 5d 20 69 64 78 20 69 64 78 5f 65 6e 64 sel] idx idx_end
3750: 0a 20 20 20 20 69 66 20 7b 20 24 69 64 78 20 65 . if { $idx e
3760: 71 20 22 22 20 7d 20 7b 0a 09 6c 61 73 73 69 67 q "" } {..lassig
3770: 6e 20 5b 6c 69 73 74 20 22 69 6e 73 65 72 74 20 n [list "insert
3780: 6c 69 6e 65 73 74 61 72 74 22 20 22 69 6e 73 65 linestart" "inse
3790: 72 74 20 6c 69 6e 65 65 6e 64 22 5d 20 69 64 78 rt lineend"] idx
37a0: 20 69 64 78 5f 65 6e 64 0a 20 20 20 20 7d 0a 20 idx_end. }.
37b0: 20 20 20 6c 61 73 73 69 67 6e 20 22 30 20 30 22 lassign "0 0"
37c0: 20 6e 75 6d 5f 63 68 61 6e 67 65 73 20 6e 75 6d num_changes num
37d0: 5f 66 6f 75 6e 64 0a 20 20 20 20 77 68 69 6c 65 _found. while
37e0: 20 7b 20 5b 73 65 74 20 69 64 78 20 5b 24 77 20 { [set idx [$w
37f0: 73 65 61 72 63 68 20 2d 72 65 67 65 78 70 20 2d search -regexp -
3800: 63 6f 75 6e 74 20 3a 3a 63 6f 75 6e 74 20 7b 5c count ::count {\
3810: 6d 28 70 72 69 6e 74 66 5f 5c 77 2b 29 7d 20 24 m(printf_\w+)} $
3820: 69 64 78 20 24 69 64 78 5f 65 6e 64 5d 5d 20 6e idx $idx_end]] n
3830: 65 20 22 22 20 7d 20 7b 0a 09 73 65 74 20 6e 61 e "" } {..set na
3840: 6d 65 20 5b 24 77 20 67 65 74 20 24 69 64 78 20 me [$w get $idx
3850: 22 24 69 64 78 20 2b 20 24 3a 3a 63 6f 75 6e 74 "$idx + $::count
3860: 20 63 22 5d 0a 09 73 65 74 20 72 65 70 6c 61 63 c"]..set replac
3870: 65 20 31 0a 09 73 77 69 74 63 68 20 24 61 63 74 e 1..switch $act
3880: 69 76 61 74 65 5f 64 65 61 63 74 69 76 61 74 65 ivate_deactivate
3890: 5f 74 6f 67 67 6c 65 20 7b 0a 09 20 20 20 20 61 _toggle {.. a
38a0: 63 74 69 76 61 74 65 20 7b 0a 09 09 69 66 20 7b ctivate {...if {
38b0: 20 21 5b 72 65 67 65 78 70 20 7b 28 2e 2a 29 5f ![regexp {(.*)_
38c0: 4f 46 46 7d 20 24 6e 61 6d 65 5d 20 7d 20 7b 20 OFF} $name] } {
38d0: 73 65 74 20 72 65 70 6c 61 63 65 20 30 20 7d 0a set replace 0 }.
38e0: 09 20 20 20 20 7d 0a 09 20 20 20 20 64 65 61 63 . }.. deac
38f0: 74 69 76 61 74 65 20 7b 0a 09 09 69 66 20 7b 20 tivate {...if {
3900: 5b 72 65 67 65 78 70 20 7b 28 2e 2a 29 5f 4f 46 [regexp {(.*)_OF
3910: 46 7d 20 24 6e 61 6d 65 5d 20 7d 20 7b 20 73 65 F} $name] } { se
3920: 74 20 72 65 70 6c 61 63 65 20 30 20 7d 0a 09 20 t replace 0 }..
3930: 20 20 20 7d 0a 09 20 20 20 20 74 6f 67 67 6c 65 }.. toggle
3940: 20 7b 0a 09 09 23 20 6e 6f 74 68 69 6e 67 0a 09 {...# nothing..
3950: 20 20 20 20 7d 0a 09 20 20 20 20 64 65 66 61 75 }.. defau
3960: 6c 74 20 7b 0a 09 09 65 72 72 6f 72 20 22 65 72 lt {...error "er
3970: 72 6f 72 20 69 6e 20 61 63 74 69 76 61 74 65 5f ror in activate_
3980: 64 65 61 63 74 69 76 61 74 65 5f 64 65 62 75 67 deactivate_debug
3990: 5f 6c 69 6e 65 73 22 0a 09 20 20 20 20 7d 0a 09 _lines".. }..
39a0: 7d 0a 09 69 66 20 7b 20 24 72 65 70 6c 61 63 65 }..if { $replace
39b0: 20 7d 20 7b 0a 09 69 66 20 7b 20 21 5b 72 65 67 } {..if { ![reg
39c0: 65 78 70 20 7b 28 2e 2a 29 5f 4f 46 46 7d 20 24 exp {(.*)_OFF} $
39d0: 6e 61 6d 65 20 7b 7d 20 6e 61 6d 65 5d 20 7d 20 name {} name] }
39e0: 7b 0a 09 20 20 20 20 73 65 74 20 6e 61 6d 65 20 {.. set name
39f0: 24 7b 6e 61 6d 65 7d 5f 4f 46 46 0a 09 7d 0a 09 ${name}_OFF..}..
3a00: 24 77 20 72 65 70 6c 61 63 65 20 24 69 64 78 20 $w replace $idx
3a10: 22 24 69 64 78 20 2b 20 24 3a 3a 63 6f 75 6e 74 "$idx + $::count
3a20: 20 63 22 20 24 6e 61 6d 65 0a 09 69 6e 63 72 20 c" $name..incr
3a30: 6e 75 6d 5f 63 68 61 6e 67 65 73 0a 20 20 20 20 num_changes.
3a40: 7d 0a 09 73 65 74 20 69 64 78 20 5b 24 77 20 69 }..set idx [$w i
3a50: 6e 64 65 78 20 22 24 69 64 78 20 2b 20 24 3a 3a ndex "$idx + $::
3a60: 63 6f 75 6e 74 20 63 22 5d 0a 09 69 6e 63 72 20 count c"]..incr
3a70: 6e 75 6d 5f 66 6f 75 6e 64 0a 20 20 20 20 7d 0a num_found. }.
3a80: 20 20 20 20 69 66 20 7b 20 24 6e 75 6d 5f 66 6f if { $num_fo
3a90: 75 6e 64 20 3d 3d 20 30 20 7d 20 7b 0a 09 74 6b und == 0 } {..tk
3aa0: 5f 6d 65 73 73 61 67 65 42 6f 78 20 2d 6d 65 73 _messageBox -mes
3ab0: 73 61 67 65 20 22 43 75 72 72 65 6e 74 20 6c 69 sage "Current li
3ac0: 6e 65 20 73 68 6f 75 6c 64 20 63 6f 6e 74 61 69 ne should contai
3ad0: 6e 20 61 20 63 6f 6d 6d 61 6e 64 20 73 69 6d 69 n a command simi
3ae0: 6c 61 72 20 74 6f 20 5c 22 70 72 69 6e 74 66 5f lar to \"printf_
3af0: 64 65 62 75 67 2e 2e 2e 5c 22 22 0a 20 20 20 20 debug...\"".
3b00: 7d 0a 20 20 20 20 6d 63 3a 3a 73 65 74 5f 69 73 }. mc::set_is
3b10: 5f 6d 6f 64 69 66 69 65 64 0a 7d 0a 0a 73 65 74 _modified.}..set
3b20: 20 22 6d 61 63 72 6f 64 61 74 61 28 41 63 74 69 "macrodata(Acti
3b30: 76 61 74 65 20 64 65 62 75 67 20 6c 69 6e 65 73 vate debug lines
3b40: 2c 69 6e 6d 65 6e 75 29 22 20 31 0a 23 20 72 65 ,inmenu)" 1.# re
3b50: 63 6f 6d 6d 65 6e 64 65 64 3a 20 3c 43 6f 6e 74 commended: <Cont
3b60: 72 6f 6c 2d 53 68 69 66 74 2d 46 38 3e 0a 73 65 rol-Shift-F8>.se
3b70: 74 20 22 6d 61 63 72 6f 64 61 74 61 28 41 63 74 t "macrodata(Act
3b80: 69 76 61 74 65 20 64 65 62 75 67 20 6c 69 6e 65 ivate debug line
3b90: 73 2c 61 63 63 65 6c 65 72 61 74 6f 72 29 22 20 s,accelerator)"
3ba0: 22 3c 43 6f 6e 74 72 6f 6c 2d 53 68 69 66 74 2d "<Control-Shift-
3bb0: 46 38 3e 22 0a 73 65 74 20 22 6d 61 63 72 6f 64 F8>".set "macrod
3bc0: 61 74 61 28 41 63 74 69 76 61 74 65 20 64 65 62 ata(Activate deb
3bd0: 75 67 20 6c 69 6e 65 73 2c 68 65 6c 70 29 22 20 ug lines,help)"
3be0: 22 63 6f 6e 76 65 72 74 20 43 20 66 75 6e 63 74 "convert C funct
3bf0: 69 6f 6e 73 3a 20 70 72 69 6e 74 66 5f 64 65 62 ions: printf_deb
3c00: 75 67 20 74 6f 20 70 72 69 6e 74 66 5f 64 65 62 ug to printf_deb
3c10: 75 67 5f 4f 46 46 20 61 6e 64 20 76 69 63 65 76 ug_OFF and vicev
3c20: 65 72 73 61 22 0a 0a 70 72 6f 63 20 22 41 63 74 ersa"..proc "Act
3c30: 69 76 61 74 65 20 64 65 62 75 67 20 6c 69 6e 65 ivate debug line
3c40: 73 22 20 7b 20 77 20 7d 20 7b 0a 0a 20 20 20 20 s" { w } {..
3c50: 73 65 74 20 77 67 20 24 77 2e 67 0a 20 20 20 20 set wg $w.g.
3c60: 64 65 73 74 72 6f 79 20 24 77 67 0a 20 20 20 20 destroy $wg.
3c70: 64 69 61 6c 6f 67 77 69 6e 5f 73 6e 69 74 20 24 dialogwin_snit $
3c80: 77 67 20 2d 74 69 74 6c 65 20 5b 5f 20 22 45 6e wg -title [_ "En
3c90: 74 65 72 20 61 63 74 69 6f 6e 22 5d 20 2d 65 6e ter action"] -en
3ca0: 74 72 79 6c 61 62 65 6c 20 5b 5f 20 22 41 63 74 trylabel [_ "Act
3cb0: 69 6f 6e 22 5d 3a 20 5c 0a 09 2d 65 6e 74 72 79 ion"]: \..-entry
3cc0: 74 79 70 65 20 6e 6f 6e 65 64 69 74 61 62 6c 65 type noneditable
3cd0: 5f 65 6e 74 72 79 20 2d 65 6e 74 72 79 76 61 6c _entry -entryval
3ce0: 75 65 73 20 5b 6c 69 73 74 20 61 63 74 69 76 61 ues [list activa
3cf0: 74 65 20 64 65 61 63 74 69 76 61 74 65 20 74 6f te deactivate to
3d00: 67 67 6c 65 5d 20 5c 0a 09 2d 65 6e 74 72 79 64 ggle] \..-entryd
3d10: 65 66 61 75 6c 74 20 61 63 74 69 76 61 74 65 0a efault activate.
3d20: 20 20 20 20 73 65 74 20 61 63 74 69 6f 6e 20 5b set action [
3d30: 24 77 67 20 63 72 65 61 74 65 77 69 6e 64 6f 77 $wg createwindow
3d40: 5d 0a 20 20 20 20 73 65 74 20 74 78 74 20 5b 24 ]. set txt [$
3d50: 77 67 20 67 69 76 65 65 6e 74 72 79 76 61 6c 75 wg giveentryvalu
3d60: 65 5d 0a 20 20 20 20 64 65 73 74 72 6f 79 20 24 e]. destroy $
3d70: 77 67 0a 20 20 20 20 69 66 20 7b 20 24 61 63 74 wg. if { $act
3d80: 69 6f 6e 20 3c 3d 20 30 20 7d 20 7b 20 20 72 65 ion <= 0 } { re
3d90: 74 75 72 6e 20 7d 0a 20 20 20 20 61 63 74 69 76 turn }. activ
3da0: 61 74 65 5f 64 65 61 63 74 69 76 61 74 65 5f 64 ate_deactivate_d
3db0: 65 62 75 67 5f 6c 69 6e 65 73 20 24 77 20 24 74 ebug_lines $w $t
3dc0: 78 74 0a 7d 0a 0a 73 65 74 20 22 6d 61 63 72 6f xt.}..set "macro
3dd0: 64 61 74 61 28 54 6f 67 67 6c 65 20 64 65 62 75 data(Toggle debu
3de0: 67 20 6c 69 6e 65 73 2c 69 6e 6d 65 6e 75 29 22 g lines,inmenu)"
3df0: 20 31 0a 23 20 72 65 63 6f 6d 6d 65 6e 64 65 64 1.# recommended
3e00: 3a 20 3c 53 68 69 66 74 2d 46 38 3e 0a 73 65 74 : <Shift-F8>.set
3e10: 20 22 6d 61 63 72 6f 64 61 74 61 28 54 6f 67 67 "macrodata(Togg
3e20: 6c 65 20 64 65 62 75 67 20 6c 69 6e 65 73 2c 61 le debug lines,a
3e30: 63 63 65 6c 65 72 61 74 6f 72 29 22 20 22 3c 53 ccelerator)" "<S
3e40: 68 69 66 74 2d 46 38 3e 22 0a 73 65 74 20 22 6d hift-F8>".set "m
3e50: 61 63 72 6f 64 61 74 61 28 54 6f 67 67 6c 65 20 acrodata(Toggle
3e60: 64 65 62 75 67 20 6c 69 6e 65 73 2c 68 65 6c 70 debug lines,help
3e70: 29 22 20 22 63 6f 6e 76 65 72 74 20 43 20 66 75 )" "convert C fu
3e80: 6e 63 74 69 6f 6e 73 3a 20 70 72 69 6e 74 66 5f nctions: printf_
3e90: 64 65 62 75 67 20 74 6f 20 70 72 69 6e 74 66 5f debug to printf_
3ea0: 64 65 62 75 67 5f 4f 46 46 20 61 6e 64 20 76 69 debug_OFF and vi
3eb0: 63 65 76 65 72 73 61 22 0a 0a 70 72 6f 63 20 22 ceversa"..proc "
3ec0: 54 6f 67 67 6c 65 20 64 65 62 75 67 20 6c 69 6e Toggle debug lin
3ed0: 65 73 22 20 7b 20 77 20 7d 20 7b 0a 20 20 20 20 es" { w } {.
3ee0: 61 63 74 69 76 61 74 65 5f 64 65 61 63 74 69 76 activate_deactiv
3ef0: 61 74 65 5f 64 65 62 75 67 5f 6c 69 6e 65 73 20 ate_debug_lines
3f00: 24 77 20 74 6f 67 67 6c 65 0a 7d 0a 0a 23 23 23 $w toggle.}..###
3f10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
3f20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
3f30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
3f40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
3f50: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 #############.#
3f60: 20 20 20 70 72 6f 63 20 44 65 62 75 67 20 47 69 proc Debug Gi
3f70: 44 20 50 6f 73 74 0a 23 23 23 23 23 23 23 23 23 D Post.#########
3f80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
3f90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
3fa0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
3fb0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
3fc0: 23 23 23 23 23 23 23 0a 0a 23 20 70 61 63 6b 61 #######..# packa
3fd0: 67 65 20 72 65 71 75 69 72 65 20 63 6f 6d 6d 52 ge require commR
3fe0: 0a 23 20 73 65 74 20 74 6b 63 6f 6e 5f 63 6f 6d .# set tkcon_com
3ff0: 6d 72 5f 69 64 20 5b 63 6f 6d 6d 52 3a 3a 72 65 mr_id [commR::re
4000: 67 69 73 74 65 72 20 74 6b 63 6f 6e 20 31 5d 0a gister tkcon 1].
4010: 0a 70 72 6f 63 20 64 64 70 20 7b 20 61 72 67 73 .proc ddp { args
4020: 20 7d 20 7b 0a 20 20 20 20 67 6c 6f 62 61 6c 20 } {. global
4030: 64 65 62 75 67 5f 63 6f 6d 6d 72 5f 69 64 0a 20 debug_commr_id.
4040: 20 20 20 0a 20 20 20 20 69 66 20 7b 20 21 5b 69 . if { ![i
4050: 6e 66 6f 20 65 78 69 73 74 73 20 64 65 62 75 67 nfo exists debug
4060: 5f 63 6f 6d 6d 72 5f 69 64 5d 20 7d 20 7b 0a 09 _commr_id] } {..
4070: 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 package require
4080: 63 6f 6d 6d 52 0a 09 73 65 74 20 64 65 62 75 67 commR..set debug
4090: 5f 63 6f 6d 6d 72 5f 69 64 20 5b 63 6f 6d 6d 52 _commr_id [commR
40a0: 3a 3a 72 65 67 69 73 74 65 72 20 64 65 62 75 67 ::register debug
40b0: 5f 47 69 44 50 6f 73 74 20 31 5d 0a 20 20 20 20 _GiDPost 1].
40c0: 7d 0a 20 20 20 20 66 6f 72 20 7b 20 73 65 74 20 }. for { set
40d0: 69 20 31 32 33 35 30 20 7d 20 7b 20 24 69 20 3c i 12350 } { $i <
40e0: 20 31 32 33 36 30 20 7d 20 7b 20 69 6e 63 72 20 12360 } { incr
40f0: 69 20 7d 20 7b 0a 09 73 65 74 20 65 72 72 20 5b i } {..set err [
4100: 63 61 74 63 68 20 7b 20 63 6f 6d 6d 52 3a 3a 63 catch { commR::c
4110: 6f 6d 6d 20 73 65 6e 64 20 24 69 20 5b 6c 69 73 omm send $i [lis
4120: 74 20 63 6f 6d 6d 52 3a 3a 67 69 76 65 6e 61 6d t commR::givenam
4130: 65 20 24 64 65 62 75 67 5f 63 6f 6d 6d 72 5f 69 e $debug_commr_i
4140: 64 5d 20 7d 20 72 65 74 5d 0a 09 69 66 20 7b 20 d] } ret]..if {
4150: 21 24 65 72 72 20 26 26 20 24 72 65 74 20 65 71 !$err && $ret eq
4160: 20 22 47 69 44 50 6f 73 74 22 20 7d 20 7b 0a 09 "GiDPost" } {..
4170: 20 20 20 20 62 72 65 61 6b 0a 09 7d 0a 20 20 20 break..}.
4180: 20 7d 0a 20 20 20 20 63 6f 6d 6d 52 3a 3a 63 6f }. commR::co
4190: 6d 6d 20 73 65 6e 64 20 24 69 20 7b 2a 7d 24 61 mm send $i {*}$a
41a0: 72 67 73 0a 7d 0a 0a 70 72 6f 63 20 73 65 6e 64 rgs.}..proc send
41b0: 5f 64 72 61 77 5f 70 6f 69 6e 74 5f 74 6f 5f 67 _draw_point_to_g
41c0: 69 64 70 6f 73 74 20 7b 20 74 78 74 20 7d 20 7b idpost { txt } {
41d0: 0a 20 20 20 20 69 66 20 7b 20 21 5b 72 65 67 65 . if { ![rege
41e0: 78 70 20 7b 28 5b 2d 2b 2e 5c 64 65 45 5d 2b 29 xp {([-+.\deE]+)
41f0: 2c 28 5b 2d 2b 2e 5c 64 65 45 5d 2b 29 2c 28 5b ,([-+.\deE]+),([
4200: 2d 2b 2e 5c 64 65 45 5d 2b 29 7d 20 24 74 78 74 -+.\deE]+)} $txt
4210: 20 7b 7d 20 70 78 20 70 79 20 70 7a 5d 20 7d 20 {} px py pz] }
4220: 7b 20 63 6f 6e 74 69 6e 75 65 20 7d 0a 20 20 20 { continue }.
4230: 20 64 64 70 20 5b 6c 69 73 74 20 64 72 61 77 5f ddp [list draw_
4240: 70 6f 73 74 3a 3a 64 72 61 77 5f 73 69 67 6e 61 post::draw_signa
4250: 6c 5f 70 6f 69 6e 74 20 30 20 5b 6c 69 73 74 20 l_point 0 [list
4260: 24 70 78 20 24 70 79 20 24 70 7a 5d 5d 0a 7d 0a $px $py $pz]].}.
4270: 0a 70 72 6f 63 20 73 65 6e 64 5f 64 72 61 77 5f .proc send_draw_
4280: 62 6f 78 5f 74 6f 5f 67 69 64 70 6f 73 74 20 7b box_to_gidpost {
4290: 20 74 78 74 20 7d 20 7b 0a 20 20 20 20 69 66 20 txt } {. if
42a0: 7b 20 21 5b 72 65 67 65 78 70 20 7b 70 30 3d 28 { ![regexp {p0=(
42b0: 5c 53 2b 29 5c 73 2b 4c 3d 28 5c 53 2b 29 7d 20 \S+)\s+L=(\S+)}
42c0: 24 74 78 74 20 7b 7d 20 70 30 20 4c 5d 20 7d 20 $txt {} p0 L] }
42d0: 7b 20 63 6f 6e 74 69 6e 75 65 20 7d 0a 20 20 20 { continue }.
42e0: 20 0a 20 20 20 20 73 65 74 20 70 30 20 5b 73 70 . set p0 [sp
42f0: 6c 69 74 20 24 70 30 20 22 2c 22 5d 0a 20 20 20 lit $p0 ","].
4300: 20 73 65 74 20 4c 20 5b 73 70 6c 69 74 20 24 4c set L [split $L
4310: 20 22 2c 22 5d 0a 20 20 20 20 69 66 20 7b 20 5b ","]. if { [
4320: 6c 6c 65 6e 67 74 68 20 24 4c 5d 20 3d 3d 20 31 llength $L] == 1
4330: 20 7d 20 7b 0a 09 73 65 74 20 4c 20 5b 6c 72 65 } {..set L [lre
4340: 70 65 61 74 20 33 20 24 4c 5d 0a 20 20 20 20 7d peat 3 $L]. }
4350: 0a 20 20 20 20 73 65 74 20 65 6e 74 4c 69 73 74 . set entList
4360: 20 22 22 0a 20 20 20 20 66 6f 72 65 61 63 68 20 "". foreach
4370: 69 20 5b 6c 69 73 74 20 70 6f 69 6e 74 20 61 72 i [list point ar
4380: 69 73 74 65 20 66 61 63 65 5d 20 7b 0a 09 73 65 iste face] {..se
4390: 74 20 72 65 78 20 5b 66 6f 72 6d 61 74 20 7b 69 t rex [format {i
43a0: 64 78 5f 25 73 5b 5e 3d 5d 2a 3d 28 5c 64 2b 29 dx_%s[^=]*=(\d+)
43b0: 7d 20 24 69 5d 0a 09 69 66 20 7b 20 5b 72 65 67 } $i]..if { [reg
43c0: 65 78 70 20 24 72 65 78 20 24 74 78 74 20 7b 7d exp $rex $txt {}
43d0: 20 6e 75 6d 5d 20 7d 20 7b 0a 09 20 20 20 20 6c num] } {.. l
43e0: 61 70 70 65 6e 64 20 65 6e 74 4c 69 73 74 20 24 append entList $
43f0: 69 20 24 6e 75 6d 0a 09 7d 0a 20 20 20 20 7d 0a i $num..}. }.
4400: 20 20 20 20 64 64 70 20 5b 6c 69 73 74 20 64 72 ddp [list dr
4410: 61 77 5f 70 6f 73 74 3a 3a 64 72 61 77 5f 70 6f aw_post::draw_po
4420: 69 6e 74 5f 6c 69 6e 65 5f 69 6e 64 69 63 61 74 int_line_indicat
4430: 6f 72 20 2d 64 72 61 77 5f 61 72 72 6f 77 5f 74 or -draw_arrow_t
4440: 6f 5f 63 65 6e 74 65 72 20 30 20 62 6f 78 5f 61 o_center 0 box_a
4450: 78 65 73 20 24 70 30 20 24 4c 20 24 65 6e 74 4c xes $p0 $L $entL
4460: 69 73 74 5d 0a 7d 0a 20 20 20 20 0a 73 65 74 20 ist].}. .set
4470: 22 6d 61 63 72 6f 64 61 74 61 28 44 65 62 75 67 "macrodata(Debug
4480: 20 62 6f 78 20 47 69 44 20 50 6f 73 74 2c 69 6e box GiD Post,in
4490: 6d 65 6e 75 29 22 20 30 0a 23 20 72 65 63 6f 6d menu)" 0.# recom
44a0: 6d 65 6e 64 65 64 3a 20 3c 43 6f 6e 74 72 6f 6c mended: <Control
44b0: 2d 75 3e 3c 46 31 3e 0a 73 65 74 20 22 6d 61 63 -u><F1>.set "mac
44c0: 72 6f 64 61 74 61 28 44 65 62 75 67 20 62 6f 78 rodata(Debug box
44d0: 20 47 69 44 20 50 6f 73 74 2c 61 63 63 65 6c 65 GiD Post,accele
44e0: 72 61 74 6f 72 29 22 20 22 22 0a 73 65 74 20 22 rator)" "".set "
44f0: 6d 61 63 72 6f 64 61 74 61 28 44 65 62 75 67 20 macrodata(Debug
4500: 62 6f 78 20 47 69 44 20 50 6f 73 74 2c 68 65 6c box GiD Post,hel
4510: 70 29 22 20 22 44 72 61 77 20 61 20 64 65 62 75 p)" "Draw a debu
4520: 67 20 62 6f 78 20 69 6e 20 61 6e 20 6f 70 65 6e g box in an open
4530: 20 47 69 44 50 6f 73 74 22 0a 0a 70 72 6f 63 20 GiDPost"..proc
4540: 22 44 65 62 75 67 20 62 6f 78 20 47 69 44 20 50 "Debug box GiD P
4550: 6f 73 74 22 20 7b 20 77 20 7d 20 7b 0a 0a 20 20 ost" { w } {..
4560: 20 20 73 65 74 20 72 61 6e 67 65 20 5b 24 77 20 set range [$w
4570: 74 61 67 20 6e 65 78 74 72 61 6e 67 65 20 73 65 tag nextrange se
4580: 6c 20 31 2e 30 20 65 6e 64 5d 0a 20 20 20 20 69 l 1.0 end]. i
4590: 66 20 7b 20 24 72 61 6e 67 65 20 6e 65 20 22 22 f { $range ne ""
45a0: 20 7d 20 7b 0a 09 73 65 74 20 74 78 74 20 5b 24 } {..set txt [$
45b0: 77 20 67 65 74 20 7b 2a 7d 24 72 61 6e 67 65 5d w get {*}$range]
45c0: 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 . } else {.
45d0: 20 20 20 20 20 73 65 74 20 74 78 74 20 22 22 0a set txt "".
45e0: 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 24 }. if { $
45f0: 72 61 6e 67 65 20 65 71 20 22 22 20 7c 7c 20 5b range eq "" || [
4600: 72 65 67 65 78 70 20 7b 69 64 78 5f 70 6f 69 6e regexp {idx_poin
4610: 74 7c 69 64 78 5f 61 72 69 73 74 65 7c 69 64 78 t|idx_ariste|idx
4620: 5f 66 61 63 65 7d 20 24 74 78 74 5d 20 7d 20 7b _face} $txt] } {
4630: 0a 09 73 65 74 20 77 67 20 24 77 2e 67 0a 09 64 ..set wg $w.g..d
4640: 65 73 74 72 6f 79 20 24 77 67 0a 09 64 69 61 6c estroy $wg..dial
4650: 6f 67 77 69 6e 5f 73 6e 69 74 20 24 77 67 20 2d ogwin_snit $wg -
4660: 74 69 74 6c 65 20 5b 5f 20 22 45 6e 74 65 72 20 title [_ "Enter
4670: 76 61 72 69 61 62 6c 65 22 5d 20 2d 65 6e 74 72 variable"] -entr
4680: 79 6c 61 62 65 6c 20 5b 5f 20 22 45 6e 74 65 72 ylabel [_ "Enter
4690: 20 76 61 72 69 61 62 6c 65 20 6e 61 6d 65 22 5d variable name"]
46a0: 3a 20 5c 0a 09 20 20 20 20 2d 65 6e 74 72 79 74 : \.. -entryt
46b0: 79 70 65 20 65 6e 74 72 79 20 2d 65 6e 74 72 79 ype entry -entry
46c0: 76 61 6c 75 65 73 20 5b 6c 69 73 74 20 74 68 69 values [list thi
46d0: 73 5d 20 2d 65 6e 74 72 79 64 65 66 61 75 6c 74 s] -entrydefault
46e0: 20 22 74 68 69 73 20 24 74 78 74 22 0a 09 73 65 "this $txt"..se
46f0: 74 20 61 63 74 69 6f 6e 20 5b 24 77 67 20 63 72 t action [$wg cr
4700: 65 61 74 65 77 69 6e 64 6f 77 5d 0a 09 73 65 74 eatewindow]..set
4710: 20 74 78 74 20 5b 73 74 72 69 6e 67 20 74 72 69 txt [string tri
4720: 6d 20 5b 24 77 67 20 67 69 76 65 65 6e 74 72 79 m [$wg giveentry
4730: 76 61 6c 75 65 5d 5d 0a 09 64 65 73 74 72 6f 79 value]]..destroy
4740: 20 24 77 67 0a 09 69 66 20 7b 20 24 61 63 74 69 $wg..if { $acti
4750: 6f 6e 20 3c 3d 20 30 20 7d 20 7b 20 20 72 65 74 on <= 0 } { ret
4760: 75 72 6e 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 urn }. }.
4770: 6c 61 73 73 69 67 6e 20 5b 73 70 6c 69 74 20 24 lassign [split $
4780: 74 78 74 5d 20 76 61 72 31 20 76 61 72 32 0a 20 txt] var1 var2.
4790: 20 20 20 69 66 20 7b 20 24 76 61 72 32 20 6e 65 if { $var2 ne
47a0: 20 22 22 20 7d 20 7b 0a 09 73 65 74 20 66 6f 72 "" } {..set for
47b0: 6d 61 74 20 22 5c 22 24 76 61 72 32 3d 25 64 5c mat "\"$var2=%d\
47c0: 22 2c 24 76 61 72 32 22 20 20 20 0a 20 20 20 20 ",$var2" .
47d0: 7d 20 65 6c 73 65 20 7b 0a 09 73 65 74 20 66 6f } else {..set fo
47e0: 72 6d 61 74 20 22 5c 22 5c 22 22 0a 20 20 20 20 rmat "\"\"".
47f0: 7d 0a 20 20 20 20 73 65 74 20 65 76 20 5b 52 61 }. set ev [Ra
4800: 6d 44 65 62 75 67 67 65 72 3a 3a 72 65 76 61 6c mDebugger::reval
4810: 20 24 76 61 72 31 5d 0a 20 20 20 20 69 66 20 7b $var1]. if {
4820: 20 5b 72 65 67 65 78 70 20 7b 50 6f 69 6e 74 41 [regexp {PointA
4830: 72 69 73 74 65 46 61 63 65 7d 20 24 65 76 5d 20 risteFace} $ev]
4840: 7d 20 7b 0a 09 73 65 74 20 65 76 20 5b 52 61 6d } {..set ev [Ram
4850: 44 65 62 75 67 67 65 72 3a 3a 72 65 76 61 6c 20 Debugger::reval
4860: 22 62 70 72 69 6e 74 66 5f 64 65 62 75 67 5f 70 "bprintf_debug_p
4870: 61 66 28 5c 22 44 45 42 55 47 20 50 41 46 5c 22 af(\"DEBUG PAF\"
4880: 2c 2a 24 76 61 72 31 2c 24 66 6f 72 6d 61 74 29 ,*$var1,$format)
4890: 22 5d 0a 20 20 20 20 7d 20 65 6c 73 65 69 66 20 "]. } elseif
48a0: 7b 20 5b 72 65 67 65 78 70 20 7b 6d 65 73 68 5f { [regexp {mesh_
48b0: 74 72 65 65 5f 66 75 6c 6c 5f 6c 65 61 76 65 7d tree_full_leave}
48c0: 20 24 65 76 5d 20 7d 20 7b 0a 09 73 77 69 74 63 $ev] } {..switc
48d0: 68 20 2d 2d 20 24 76 61 72 32 20 7b 0a 09 20 20 h -- $var2 {..
48e0: 20 20 22 69 64 78 5f 70 6f 69 6e 74 22 20 7b 20 "idx_point" {
48f0: 73 65 74 20 63 6d 64 20 22 62 70 72 69 6e 74 66 set cmd "bprintf
4900: 5f 64 65 62 75 67 5f 62 6f 78 50 28 5c 22 44 45 _debug_boxP(\"DE
4910: 42 55 47 20 42 4f 58 5c 22 2c 24 76 61 72 31 2c BUG BOX\",$var1,
4920: 24 76 61 72 32 29 22 20 7d 0a 09 20 20 20 20 22 $var2)" }.. "
4930: 69 64 78 5f 61 72 69 73 74 65 22 20 7b 20 73 65 idx_ariste" { se
4940: 74 20 63 6d 64 20 22 62 70 72 69 6e 74 66 5f 64 t cmd "bprintf_d
4950: 65 62 75 67 5f 62 6f 78 41 28 5c 22 44 45 42 55 ebug_boxA(\"DEBU
4960: 47 20 42 4f 58 5c 22 2c 24 76 61 72 31 2c 24 76 G BOX\",$var1,$v
4970: 61 72 32 29 22 20 7d 0a 09 20 20 20 20 22 69 64 ar2)" }.. "id
4980: 78 5f 66 61 63 65 22 20 7b 20 73 65 74 20 63 6d x_face" { set cm
4990: 64 20 22 62 70 72 69 6e 74 66 5f 64 65 62 75 67 d "bprintf_debug
49a0: 5f 62 6f 78 46 28 5c 22 44 45 42 55 47 20 42 4f _boxF(\"DEBUG BO
49b0: 58 5c 22 2c 24 76 61 72 31 2c 24 76 61 72 32 29 X\",$var1,$var2)
49c0: 22 20 7d 0a 09 20 20 20 20 22 64 65 66 61 75 6c " }.. "defaul
49d0: 74 22 20 7b 20 20 20 73 65 74 20 63 6d 64 20 22 t" { set cmd "
49e0: 62 70 72 69 6e 74 66 5f 64 65 62 75 67 5f 62 6f bprintf_debug_bo
49f0: 78 28 5c 22 44 45 42 55 47 20 42 4f 58 5c 22 2c x(\"DEBUG BOX\",
4a00: 24 76 61 72 31 2c 5c 22 5c 22 29 22 20 7d 0a 09 $var1,\"\")" }..
4a10: 7d 0a 09 73 65 74 20 65 76 20 5b 52 61 6d 44 65 }..set ev [RamDe
4a20: 62 75 67 67 65 72 3a 3a 72 65 76 61 6c 20 24 63 bugger::reval $c
4a30: 6d 64 5d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b md]. } else {
4a40: 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 20 ..return. }.
4a50: 20 20 20 73 65 6e 64 5f 64 72 61 77 5f 62 6f 78 send_draw_box
4a60: 5f 74 6f 5f 67 69 64 70 6f 73 74 20 24 65 76 0a _to_gidpost $ev.
4a70: 7d 0a 0a 73 65 74 20 22 6d 61 63 72 6f 64 61 74 }..set "macrodat
4a80: 61 28 44 65 62 75 67 20 70 6f 69 6e 74 20 47 69 a(Debug point Gi
4a90: 44 20 50 6f 73 74 2c 69 6e 6d 65 6e 75 29 22 20 D Post,inmenu)"
4aa0: 30 0a 23 20 72 65 63 6f 6d 6d 65 6e 64 65 64 3a 0.# recommended:
4ab0: 20 3c 43 6f 6e 74 72 6f 6c 2d 75 3e 3c 46 32 3e <Control-u><F2>
4ac0: 0a 73 65 74 20 22 6d 61 63 72 6f 64 61 74 61 28 .set "macrodata(
4ad0: 44 65 62 75 67 20 70 6f 69 6e 74 20 47 69 44 20 Debug point GiD
4ae0: 50 6f 73 74 2c 61 63 63 65 6c 65 72 61 74 6f 72 Post,accelerator
4af0: 29 22 20 22 22 0a 73 65 74 20 22 6d 61 63 72 6f )" "".set "macro
4b00: 64 61 74 61 28 44 65 62 75 67 20 70 6f 69 6e 74 data(Debug point
4b10: 20 47 69 44 20 50 6f 73 74 2c 68 65 6c 70 29 22 GiD Post,help)"
4b20: 20 22 44 72 61 77 20 61 20 64 65 62 75 67 20 70 "Draw a debug p
4b30: 6f 69 6e 74 20 69 6e 20 61 6e 20 6f 70 65 6e 20 oint in an open
4b40: 47 69 44 50 6f 73 74 22 0a 0a 70 72 6f 63 20 22 GiDPost"..proc "
4b50: 44 65 62 75 67 20 70 6f 69 6e 74 20 47 69 44 20 Debug point GiD
4b60: 50 6f 73 74 22 20 7b 20 77 20 7d 20 7b 0a 0a 20 Post" { w } {..
4b70: 20 20 20 73 65 74 20 72 61 6e 67 65 20 5b 24 77 set range [$w
4b80: 20 74 61 67 20 6e 65 78 74 72 61 6e 67 65 20 73 tag nextrange s
4b90: 65 6c 20 31 2e 30 20 65 6e 64 5d 0a 20 20 20 20 el 1.0 end].
4ba0: 69 66 20 7b 20 24 72 61 6e 67 65 20 65 71 20 22 if { $range eq "
4bb0: 22 20 7d 20 7b 0a 09 73 65 74 20 77 67 20 24 77 " } {..set wg $w
4bc0: 2e 67 0a 09 64 65 73 74 72 6f 79 20 24 77 67 0a .g..destroy $wg.
4bd0: 09 64 69 61 6c 6f 67 77 69 6e 5f 73 6e 69 74 20 .dialogwin_snit
4be0: 24 77 67 20 2d 74 69 74 6c 65 20 5b 5f 20 22 45 $wg -title [_ "E
4bf0: 6e 74 65 72 20 76 61 72 69 61 62 6c 65 22 5d 20 nter variable"]
4c00: 2d 65 6e 74 72 79 6c 61 62 65 6c 20 5b 5f 20 22 -entrylabel [_ "
4c10: 45 6e 74 65 72 20 76 61 72 69 61 62 6c 65 20 6e Enter variable n
4c20: 61 6d 65 22 5d 3a 20 5c 0a 09 20 20 20 20 2d 65 ame"]: \.. -e
4c30: 6e 74 72 79 74 79 70 65 20 65 6e 74 72 79 20 2d ntrytype entry -
4c40: 65 6e 74 72 79 76 61 6c 75 65 73 20 5b 6c 69 73 entryvalues [lis
4c50: 74 20 74 68 69 73 5d 0a 09 73 65 74 20 61 63 74 t this]..set act
4c60: 69 6f 6e 20 5b 24 77 67 20 63 72 65 61 74 65 77 ion [$wg createw
4c70: 69 6e 64 6f 77 5d 0a 09 73 65 74 20 74 78 74 20 indow]..set txt
4c80: 5b 24 77 67 20 67 69 76 65 65 6e 74 72 79 76 61 [$wg giveentryva
4c90: 6c 75 65 5d 0a 09 64 65 73 74 72 6f 79 20 24 77 lue]..destroy $w
4ca0: 67 0a 09 69 66 20 7b 20 24 61 63 74 69 6f 6e 20 g..if { $action
4cb0: 3c 3d 20 30 20 7d 20 7b 20 20 72 65 74 75 72 6e <= 0 } { return
4cc0: 20 7d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a }. } else {.
4cd0: 09 73 65 74 20 74 78 74 20 5b 24 77 20 67 65 74 .set txt [$w get
4ce0: 20 7b 2a 7d 24 72 61 6e 67 65 5d 0a 20 20 20 20 {*}$range].
4cf0: 7d 0a 20 20 20 20 73 65 74 20 65 76 20 5b 52 61 }. set ev [Ra
4d00: 6d 44 65 62 75 67 67 65 72 3a 3a 72 65 76 61 6c mDebugger::reval
4d10: 20 24 74 78 74 5d 0a 20 20 20 20 69 66 20 7b 20 $txt]. if {
4d20: 5b 72 65 67 65 78 70 20 7b 50 6f 69 6e 74 41 72 [regexp {PointAr
4d30: 69 73 74 65 46 61 63 65 7d 20 24 65 76 5d 20 7d isteFace} $ev] }
4d40: 20 7b 0a 09 73 65 74 20 65 76 20 5b 52 61 6d 44 {..set ev [RamD
4d50: 65 62 75 67 67 65 72 3a 3a 72 65 76 61 6c 20 22 ebugger::reval "
4d60: 62 70 72 69 6e 74 66 5f 64 65 62 75 67 5f 70 61 bprintf_debug_pa
4d70: 66 28 5c 22 44 45 42 55 47 20 50 41 46 5c 22 2c f(\"DEBUG PAF\",
4d80: 2a 24 74 78 74 2c 5c 22 5c 22 29 22 5d 0a 20 20 *$txt,\"\")"].
4d90: 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 5b 72 65 } elseif { [re
4da0: 67 65 78 70 20 7b 6d 65 73 68 5f 74 72 65 65 5f gexp {mesh_tree_
4db0: 66 75 6c 6c 5f 6c 65 61 76 65 7d 20 24 65 76 5d full_leave} $ev]
4dc0: 20 7d 20 7b 0a 09 73 65 74 20 65 76 20 5b 52 61 } {..set ev [Ra
4dd0: 6d 44 65 62 75 67 67 65 72 3a 3a 72 65 76 61 6c mDebugger::reval
4de0: 20 22 62 70 72 69 6e 74 66 5f 64 65 62 75 67 5f "bprintf_debug_
4df0: 62 6f 78 28 5c 22 44 45 42 55 47 20 42 4f 58 5c box(\"DEBUG BOX\
4e00: 22 2c 24 74 78 74 2c 5c 22 5c 22 29 22 5d 0a 20 ",$txt,\"\")"].
4e10: 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 72 65 74 } else {..ret
4e20: 75 72 6e 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 urn. }. se
4e30: 6e 64 5f 64 72 61 77 5f 70 6f 69 6e 74 5f 74 6f nd_draw_point_to
4e40: 5f 67 69 64 70 6f 73 74 20 24 65 76 0a 7d 0a 0a _gidpost $ev.}..
4e50: 73 65 74 20 22 6d 61 63 72 6f 64 61 74 61 28 4f set "macrodata(O
4e60: 70 65 6e 20 63 6f 6d 6d 65 6e 74 20 66 69 6c 65 pen comment file
4e70: 2c 69 6e 6d 65 6e 75 29 22 20 31 0a 73 65 74 20 ,inmenu)" 1.set
4e80: 22 6d 61 63 72 6f 64 61 74 61 28 4f 70 65 6e 20 "macrodata(Open
4e90: 63 6f 6d 6d 65 6e 74 20 66 69 6c 65 2c 61 63 63 comment file,acc
4ea0: 65 6c 65 72 61 74 6f 72 29 22 20 3c 43 6f 6e 74 elerator)" <Cont
4eb0: 72 6f 6c 2d 75 3e 3c 43 6f 6e 74 72 6f 6c 2d 6f rol-u><Control-o
4ec0: 3e 0a 73 65 74 20 22 6d 61 63 72 6f 64 61 74 61 >.set "macrodata
4ed0: 28 4f 70 65 6e 20 63 6f 6d 6d 65 6e 74 20 66 69 (Open comment fi
4ee0: 6c 65 2c 68 65 6c 70 29 22 20 22 47 65 74 20 74 le,help)" "Get t
4ef0: 68 65 20 74 65 78 74 20 75 6e 64 65 72 20 74 68 he text under th
4f00: 65 20 63 75 72 73 6f 72 20 61 6e 64 20 74 72 79 e cursor and try
4f10: 20 74 6f 20 6f 70 65 6e 20 74 68 69 73 20 66 69 to open this fi
4f20: 6c 65 20 6e 61 6d 65 22 0a 0a 70 72 6f 63 20 22 le name"..proc "
4f30: 4f 70 65 6e 20 63 6f 6d 6d 65 6e 74 20 66 69 6c Open comment fil
4f40: 65 22 20 7b 20 77 20 7d 20 7b 0a 20 20 20 20 6f e" { w } {. o
4f50: 70 65 6e 5f 63 6f 6d 6d 65 6e 74 5f 66 69 6c 65 pen_comment_file
4f60: 20 24 77 20 6f 70 65 6e 0a 7d 0a 0a 73 65 74 20 $w open.}..set
4f70: 22 6d 61 63 72 6f 64 61 74 61 28 45 64 69 74 20 "macrodata(Edit
4f80: 63 6f 6d 6d 65 6e 74 20 66 69 6c 65 2c 69 6e 6d comment file,inm
4f90: 65 6e 75 29 22 20 31 0a 73 65 74 20 22 6d 61 63 enu)" 1.set "mac
4fa0: 72 6f 64 61 74 61 28 45 64 69 74 20 63 6f 6d 6d rodata(Edit comm
4fb0: 65 6e 74 20 66 69 6c 65 2c 61 63 63 65 6c 65 72 ent file,acceler
4fc0: 61 74 6f 72 29 22 20 3c 43 6f 6e 74 72 6f 6c 2d ator)" <Control-
4fd0: 75 3e 3c 43 6f 6e 74 72 6f 6c 2d 53 68 69 66 74 u><Control-Shift
4fe0: 2d 4f 3e 0a 73 65 74 20 22 6d 61 63 72 6f 64 61 -O>.set "macroda
4ff0: 74 61 28 45 64 69 74 20 63 6f 6d 6d 65 6e 74 20 ta(Edit comment
5000: 66 69 6c 65 2c 68 65 6c 70 29 22 20 22 47 65 74 file,help)" "Get
5010: 20 74 68 65 20 74 65 78 74 20 75 6e 64 65 72 20 the text under
5020: 74 68 65 20 63 75 72 73 6f 72 20 61 6e 64 20 74 the cursor and t
5030: 72 79 20 74 6f 20 65 64 69 74 20 74 68 69 73 20 ry to edit this
5040: 66 69 6c 65 20 6e 61 6d 65 22 0a 0a 70 72 6f 63 file name"..proc
5050: 20 22 45 64 69 74 20 63 6f 6d 6d 65 6e 74 20 66 "Edit comment f
5060: 69 6c 65 22 20 7b 20 77 20 7d 20 7b 0a 20 20 20 ile" { w } {.
5070: 20 6f 70 65 6e 5f 63 6f 6d 6d 65 6e 74 5f 66 69 open_comment_fi
5080: 6c 65 20 24 77 20 65 64 69 74 0a 7d 0a 0a 70 72 le $w edit.}..pr
5090: 6f 63 20 6f 70 65 6e 5f 63 6f 6d 6d 65 6e 74 5f oc open_comment_
50a0: 66 69 6c 65 20 7b 20 77 20 6f 70 65 6e 5f 65 64 file { w open_ed
50b0: 69 74 20 7d 20 7b 0a 0a 20 20 20 20 73 65 74 20 it } {.. set
50c0: 6c 69 6e 65 31 20 5b 24 77 20 67 65 74 20 22 69 line1 [$w get "i
50d0: 6e 73 65 72 74 20 6c 69 6e 65 73 74 61 72 74 22 nsert linestart"
50e0: 20 69 6e 73 65 72 74 5d 0a 20 20 20 20 73 65 74 insert]. set
50f0: 20 6c 69 6e 65 32 20 5b 24 77 20 67 65 74 20 69 line2 [$w get i
5100: 6e 73 65 72 74 20 22 69 6e 73 65 72 74 20 6c 69 nsert "insert li
5110: 6e 65 65 6e 64 22 5d 0a 20 20 20 20 0a 20 20 20 neend"]. .
5120: 20 6c 61 73 73 69 67 6e 20 22 22 20 74 78 74 31 lassign "" txt1
5130: 20 74 78 74 32 0a 20 20 20 20 69 66 20 7b 20 21 txt2. if { !
5140: 5b 72 65 67 65 78 70 20 7b 22 28 5b 5e 22 5d 2a [regexp {"([^"]*
5150: 29 24 7d 20 24 6c 69 6e 65 31 20 7b 7d 20 74 78 )$} $line1 {} tx
5160: 74 31 5d 20 7c 7c 20 21 5b 72 65 67 65 78 70 20 t1] || ![regexp
5170: 7b 5e 28 5b 5e 22 5d 2a 29 22 7d 20 24 6c 69 6e {^([^"]*)"} $lin
5180: 65 32 20 7b 7d 20 74 78 74 32 5d 20 7d 20 7b 0a e2 {} txt2] } {.
5190: 09 72 65 67 65 78 70 20 7b 5c 53 2a 24 7d 20 24 .regexp {\S*$} $
51a0: 6c 69 6e 65 31 20 74 78 74 31 0a 09 72 65 67 65 line1 txt1..rege
51b0: 78 70 20 7b 5e 5c 53 2a 7d 20 24 6c 69 6e 65 32 xp {^\S*} $line2
51c0: 20 74 78 74 32 0a 20 20 20 20 7d 0a 20 20 20 20 txt2. }.
51d0: 73 65 74 20 66 69 6c 65 20 22 24 74 78 74 31 24 set file "$txt1$
51e0: 74 78 74 32 22 0a 20 20 20 20 69 66 20 7b 20 24 txt2". if { $
51f0: 66 69 6c 65 20 65 71 20 22 22 20 7d 20 7b 0a 09 file eq "" } {..
5200: 57 61 72 6e 57 69 6e 20 22 74 68 65 72 65 20 69 WarnWin "there i
5210: 73 20 6e 6f 20 66 69 6c 65 20 6e 61 6d 65 20 75 s no file name u
5220: 6e 64 65 72 20 74 68 65 20 63 75 72 73 6f 72 22 nder the cursor"
5230: 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 20 ..return. }.
5240: 20 20 20 73 65 74 20 70 61 67 65 20 22 22 0a 20 set page "".
5250: 20 20 20 72 65 67 65 78 70 20 7b 28 5b 5e 23 5d regexp {([^#]
5260: 2a 29 23 28 2e 2a 29 7d 20 24 66 69 6c 65 20 7b *)#(.*)} $file {
5270: 7d 20 66 69 6c 65 20 70 61 67 65 0a 20 20 20 20 } file page.
5280: 0a 20 20 20 20 73 65 74 20 63 75 72 72 65 6e 74 . set current
5290: 66 69 6c 65 20 5b 6d 63 3a 3a 67 69 76 65 5f 63 file [mc::give_c
52a0: 75 72 72 65 6e 74 66 69 6c 65 5d 0a 20 20 20 20 urrentfile].
52b0: 0a 20 20 20 20 69 66 20 7b 20 21 5b 66 69 6c 65 . if { ![file
52c0: 20 65 78 69 73 74 73 20 24 66 69 6c 65 5d 20 26 exists $file] &
52d0: 26 20 5b 66 69 6c 65 20 65 78 69 73 74 73 20 5b & [file exists [
52e0: 66 69 6c 65 20 6a 6f 69 6e 20 5b 66 69 6c 65 20 file join [file
52f0: 64 69 72 6e 61 6d 65 20 24 63 75 72 72 65 6e 74 dirname $current
5300: 66 69 6c 65 5d 20 24 66 69 6c 65 5d 5d 20 7d 20 file] $file]] }
5310: 7b 0a 09 73 65 74 20 66 69 6c 65 20 5b 66 69 6c {..set file [fil
5320: 65 20 6a 6f 69 6e 20 5b 66 69 6c 65 20 64 69 72 e join [file dir
5330: 6e 61 6d 65 20 24 63 75 72 72 65 6e 74 66 69 6c name $currentfil
5340: 65 5d 20 24 66 69 6c 65 5d 0a 20 20 20 20 7d 0a e] $file]. }.
5350: 20 20 20 20 69 66 20 7b 20 21 5b 66 69 6c 65 20 if { ![file
5360: 65 78 69 73 74 73 20 24 66 69 6c 65 5d 20 7d 20 exists $file] }
5370: 7b 0a 09 73 65 74 20 70 77 64 20 5b 70 77 64 5d {..set pwd [pwd]
5380: 0a 09 63 64 20 5b 66 69 6c 65 20 64 69 72 6e 61 ..cd [file dirna
5390: 6d 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5d me $currentfile]
53a0: 0a 09 73 65 74 20 65 72 72 20 5b 63 61 74 63 68 ..set err [catch
53b0: 20 7b 20 65 78 65 63 20 66 6f 73 73 69 6c 20 69 { exec fossil i
53c0: 6e 66 6f 20 7d 20 72 65 74 5d 0a 09 63 64 20 24 nfo } ret]..cd $
53d0: 70 77 64 0a 09 69 66 20 7b 20 21 24 65 72 72 20 pwd..if { !$err
53e0: 26 26 20 5b 72 65 67 65 78 70 20 2d 6c 69 6e 65 && [regexp -line
53f0: 20 7b 6c 6f 63 61 6c 2d 72 6f 6f 74 3a 5c 73 2b {local-root:\s+
5400: 28 2e 2a 29 7d 20 24 72 65 74 20 7b 7d 20 64 69 (.*)} $ret {} di
5410: 72 5d 20 7d 20 7b 0a 09 20 20 20 20 69 66 20 7b r] } {.. if {
5420: 20 5b 66 69 6c 65 20 65 78 69 73 74 73 20 5b 66 [file exists [f
5430: 69 6c 65 20 6a 6f 69 6e 20 5b 73 74 72 69 6e 67 ile join [string
5440: 20 74 72 69 6d 20 24 64 69 72 5d 20 24 66 69 6c trim $dir] $fil
5450: 65 5d 5d 20 7d 20 7b 0a 09 09 73 65 74 20 66 69 e]] } {...set fi
5460: 6c 65 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 5b 73 le [file join [s
5470: 74 72 69 6e 67 20 74 72 69 6d 20 24 64 69 72 5d tring trim $dir]
5480: 20 24 66 69 6c 65 5d 0a 09 20 20 20 20 7d 0a 09 $file].. }..
5490: 7d 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b }. }. if {
54a0: 20 21 5b 66 69 6c 65 20 65 78 69 73 74 73 20 24 ![file exists $
54b0: 66 69 6c 65 5d 20 7d 20 7b 0a 09 57 61 72 6e 57 file] } {..WarnW
54c0: 69 6e 20 22 27 24 66 69 6c 65 27 20 64 6f 65 73 in "'$file' does
54d0: 20 6e 6f 74 20 65 78 69 73 74 22 0a 09 72 65 74 not exist"..ret
54e0: 75 72 6e 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 urn. }. if
54f0: 20 7b 20 24 6f 70 65 6e 5f 65 64 69 74 20 65 71 { $open_edit eq
5500: 20 22 65 64 69 74 22 20 26 26 20 5b 73 74 72 69 "edit" && [stri
5510: 6e 67 20 74 6f 6c 6f 77 65 72 20 5b 66 69 6c 65 ng tolower [file
5520: 20 65 78 74 65 6e 73 69 6f 6e 20 24 66 69 6c 65 extension $file
5530: 5d 5d 20 65 71 20 22 2e 73 76 67 22 20 26 26 20 ]] eq ".svg" &&
5540: 5b 61 75 74 6f 5f 65 78 65 63 6f 6b 20 69 6e 6b [auto_execok ink
5550: 73 63 61 70 65 5d 20 6e 65 20 22 22 20 7d 20 7b scape] ne "" } {
5560: 0a 09 73 65 74 20 65 72 72 20 5b 63 61 74 63 68 ..set err [catch
5570: 20 7b 20 6d 63 3a 3a 65 78 65 63 75 74 65 20 65 { mc::execute e
5580: 78 65 63 20 69 6e 6b 73 63 61 70 65 20 24 66 69 xec inkscape $fi
5590: 6c 65 20 26 20 7d 20 72 65 74 5d 0a 09 69 66 20 le & } ret]..if
55a0: 7b 20 24 65 72 72 20 7d 20 7b 0a 09 20 20 20 20 { $err } {..
55b0: 57 61 72 6e 57 69 6e 20 22 46 61 69 6c 65 64 20 WarnWin "Failed
55c0: 65 78 65 63 75 74 69 6e 67 20 27 24 65 78 65 20 executing '$exe
55d0: 2d 6e 6f 74 65 62 6f 6f 6b 6e 61 6d 65 20 24 66 -notebookname $f
55e0: 69 6c 65 20 2d 70 61 67 65 20 24 70 61 67 65 27 ile -page $page'
55f0: 20 28 24 72 65 74 29 22 0a 09 7d 0a 09 72 65 74 ($ret)"..}..ret
5600: 75 72 6e 0a 20 20 20 20 7d 20 65 6c 73 65 69 66 urn. } elseif
5610: 20 7b 20 5b 73 74 72 69 6e 67 20 74 6f 6c 6f 77 { [string tolow
5620: 65 72 20 5b 66 69 6c 65 20 65 78 74 65 6e 73 69 er [file extensi
5630: 6f 6e 20 24 66 69 6c 65 5d 5d 20 65 71 20 22 2e on $file]] eq ".
5640: 77 6e 6c 22 20 26 26 20 24 70 61 67 65 20 6e 65 wnl" && $page ne
5650: 20 22 22 20 7d 20 7b 0a 09 66 6f 72 65 61 63 68 "" } {..foreach
5660: 20 65 78 65 20 5b 6c 69 73 74 20 6c 6f 67 6e 6f exe [list logno
5670: 74 65 72 20 64 6c 6f 67 6e 6f 74 65 72 5d 20 7b ter dlognoter] {
5680: 0a 09 20 20 20 20 69 66 20 7b 20 5b 61 75 74 6f .. if { [auto
5690: 5f 65 78 65 63 6f 6b 20 24 65 78 65 5d 20 6e 65 _execok $exe] ne
56a0: 20 22 22 20 7d 20 7b 0a 09 09 73 65 74 20 65 72 "" } {...set er
56b0: 72 20 5b 63 61 74 63 68 20 7b 20 6d 63 3a 3a 65 r [catch { mc::e
56c0: 78 65 63 75 74 65 20 65 78 65 63 20 24 65 78 65 xecute exec $exe
56d0: 20 2d 6e 6f 74 65 62 6f 6f 6b 6e 61 6d 65 20 24 -notebookname $
56e0: 66 69 6c 65 20 2d 70 61 67 65 20 24 70 61 67 65 file -page $page
56f0: 20 26 20 7d 20 72 65 74 5d 0a 09 09 69 66 20 7b & } ret]...if {
5700: 20 24 65 72 72 20 7d 20 7b 0a 09 09 20 20 20 20 $err } {...
5710: 57 61 72 6e 57 69 6e 20 22 46 61 69 6c 65 64 20 WarnWin "Failed
5720: 65 78 65 63 75 74 69 6e 67 20 27 24 65 78 65 20 executing '$exe
5730: 2d 6e 6f 74 65 62 6f 6f 6b 6e 61 6d 65 20 24 66 -notebookname $f
5740: 69 6c 65 20 2d 70 61 67 65 20 24 70 61 67 65 27 ile -page $page'
5750: 20 28 24 72 65 74 29 22 0a 09 09 7d 0a 09 09 72 ($ret)"...}...r
5760: 65 74 75 72 6e 0a 09 20 20 20 20 7d 0a 09 7d 0a eturn.. }..}.
5770: 09 73 65 74 20 65 72 72 20 5b 63 61 74 63 68 20 .set err [catch
5780: 7b 0a 09 09 70 61 63 6b 61 67 65 20 72 65 71 75 {...package requ
5790: 69 72 65 20 72 65 67 69 73 74 72 79 0a 09 09 73 ire registry...s
57a0: 65 74 20 6b 65 79 31 20 7b 48 4b 45 59 5f 43 55 et key1 {HKEY_CU
57b0: 52 52 45 4e 54 5f 55 53 45 52 5c 53 6f 66 74 77 RRENT_USER\Softw
57c0: 61 72 65 5c 43 6f 6d 70 61 73 73 5c 4c 6f 67 6e are\Compass\Logn
57d0: 6f 74 65 72 7d 0a 09 09 73 65 74 20 76 65 72 73 oter}...set vers
57e0: 69 6f 6e 20 5b 72 65 67 69 73 74 72 79 20 67 65 ion [registry ge
57f0: 74 20 24 6b 65 79 31 20 43 75 72 72 65 6e 74 56 t $key1 CurrentV
5800: 65 72 73 69 6f 6e 5d 0a 09 09 73 65 74 20 6b 65 ersion]...set ke
5810: 79 32 20 7b 48 4b 45 59 5f 43 55 52 52 45 4e 54 y2 {HKEY_CURRENT
5820: 5f 55 53 45 52 5c 53 6f 66 74 77 61 72 65 5c 43 _USER\Software\C
5830: 6f 6d 70 61 73 73 7d 0a 09 09 61 70 70 65 6e 64 ompass}...append
5840: 20 6b 65 79 32 20 22 5c 5c 22 20 24 76 65 72 73 key2 "\\" $vers
5850: 69 6f 6e 0a 09 09 73 65 74 20 70 61 74 68 20 5b ion...set path [
5860: 72 65 67 69 73 74 72 79 20 67 65 74 20 24 6b 65 registry get $ke
5870: 79 32 20 49 6e 73 74 61 6c 6c 50 61 74 68 5d 0a y2 InstallPath].
5880: 09 09 73 65 74 20 65 78 65 20 5b 66 69 6c 65 20 ..set exe [file
5890: 6a 6f 69 6e 20 24 70 61 74 68 20 4c 6f 67 6e 6f join $path Logno
58a0: 74 65 72 2e 65 78 65 5d 0a 09 09 6d 63 3a 3a 65 ter.exe]...mc::e
58b0: 78 65 63 75 74 65 20 65 78 65 63 20 24 65 78 65 xecute exec $exe
58c0: 20 2d 6e 6f 74 65 62 6f 6f 6b 6e 61 6d 65 20 24 -notebookname $
58d0: 66 69 6c 65 20 2d 70 61 67 65 20 24 70 61 67 65 file -page $page
58e0: 20 26 0a 09 20 20 20 20 7d 20 72 65 74 5d 0a 09 &.. } ret]..
58f0: 69 66 20 7b 20 24 65 72 72 20 7d 20 7b 0a 09 20 if { $err } {..
5900: 20 20 20 57 61 72 6e 57 69 6e 20 22 46 61 69 6c WarnWin "Fail
5910: 65 64 20 65 78 65 63 75 74 69 6e 67 20 6c 6f 67 ed executing log
5920: 6e 6f 74 65 72 20 28 24 72 65 74 29 22 0a 09 7d noter ($ret)"..}
5930: 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 73 . } else {..s
5940: 65 74 20 65 72 72 20 5b 63 61 74 63 68 20 7b 20 et err [catch {
5950: 6d 63 3a 3a 65 78 65 63 75 74 65 20 73 74 61 72 mc::execute star
5960: 74 20 24 66 69 6c 65 20 7d 20 72 65 74 5d 0a 09 t $file } ret]..
5970: 69 66 20 7b 20 24 65 72 72 20 7d 20 7b 0a 09 20 if { $err } {..
5980: 20 20 20 57 61 72 6e 57 69 6e 20 22 46 61 69 6c WarnWin "Fail
5990: 65 64 20 65 78 65 63 75 74 69 6e 67 20 27 24 66 ed executing '$f
59a0: 69 6c 65 27 20 28 24 72 65 74 29 22 0a 09 7d 0a ile' ($ret)"..}.
59b0: 20 20 20 20 7d 0a 7d 0a 0a 0a 0a 0a }.}.....