Not logged in
Hex Artifact Content

Artifact 745ff90c955dd65ee53dc2f0dc4fdc273210caff:

  • File scripts/Macros_default.tcl — part of check-in [27f608b0a8] at 2014-01-03 19:41:02 on branch trunk — Opening lognoter as help for source files in windows with Control-u Control-o (user: ramsan size: 22972)

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                  }.}.....