Not logged in
Hex Artifact Content

Artifact 64b9b5f8fcc980381147e4a021545d102289e300:


0000: 0a 0a 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 23 23 23 23 0a 23 0a 23 20 20 20 20 73 75 70  #####.#.#    sup
0060: 65 72 67 72 69 64 3a 20 61 75 74 6f 6d 61 74 69  ergrid: automati
0070: 63 61 6c 6c 79 20 67 72 69 64 73 20 61 6c 6c 20  cally grids all 
0080: 74 68 65 20 77 69 64 67 65 74 73 20 6f 66 20 61  the widgets of a
0090: 20 66 72 61 6d 65 20 61 6e 64 20 73 75 62 66 72   frame and subfr
00a0: 61 6d 65 73 20 62 61 73 65 64 20 0a 23 20 20 20  ames based .#   
00b0: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 20 69              in i
00c0: 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 6e 63 6c 75  nformation inclu
00d0: 64 65 64 20 61 74 20 77 69 64 67 65 74 20 63 72  ded at widget cr
00e0: 65 61 74 69 6f 6e 20 75 73 69 6e 67 20 2d 67 72  eation using -gr
00f0: 69 64 20 67 72 69 64 69 6e 66 6f 0a 23 0a 23 20  id gridinfo.#.# 
0100: 20 20 20 20 20 54 68 65 20 69 6e 66 6f 72 6d 61       The informa
0110: 74 69 6f 6e 20 69 73 20 69 6e 63 6c 75 64 65 64  tion is included
0120: 20 61 73 20 61 20 6c 69 73 74 20 77 69 74 68 20   as a list with 
0130: 73 68 6f 72 74 20 74 79 70 69 6e 67 2e 0a 23 20  short typing..# 
0140: 20 20 20 20 20 73 75 70 65 72 67 72 69 64 20 74       supergrid t
0150: 72 69 65 73 20 74 6f 20 62 65 20 63 6c 65 76 65  ries to be cleve
0160: 72 20 62 79 20 61 75 74 6f 6d 61 74 69 63 61 6c  r by automatical
0170: 6c 79 20 61 73 73 69 67 6e 69 6e 67 20 74 68 65  ly assigning the
0180: 20 77 65 69 67 68 74 73 20 74 6f 20 74 68 65 0a   weights to the.
0190: 23 20 20 20 20 20 20 63 6f 6c 75 6d 6e 73 20 61  #      columns a
01a0: 6e 64 20 72 6f 77 73 0a 23 0a 23 20 20 20 20 65  nd rows.#.#    e
01b0: 78 61 6d 70 6c 65 73 3a 0a 23 0a 23 20 20 20 20  xamples:.#.#    
01c0: 20 20 20 20 20 20 20 20 20 20 6c 61 62 65 6c 20            label 
01d0: 2e 6c 33 20 2d 67 72 69 64 20 30 20 20 20 20 20  .l3 -grid 0     
01e0: 20 20 20 67 72 69 64 20 74 68 69 73 20 6c 61 62     grid this lab
01f0: 65 6c 20 69 6e 20 63 6f 6c 75 6d 6e 20 30 0a 23  el in column 0.#
0200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 61                la
0210: 62 65 6c 20 2e 6c 33 20 2d 67 72 69 64 20 22 31  bel .l3 -grid "1
0220: 20 33 22 20 20 20 20 67 72 69 64 20 74 68 69 73   3"    grid this
0230: 20 6c 61 62 65 6c 20 69 6e 20 63 6f 6c 75 6d 6e   label in column
0240: 20 31 20 77 69 74 68 20 63 6f 6c 75 6d 6e 73 70   1 with columnsp
0250: 61 6e 20 33 0a 23 20 20 20 20 20 20 20 20 20 20  an 3.#          
0260: 20 20 20 20 6c 61 62 65 6c 20 2e 6c 33 20 2d 67      label .l3 -g
0270: 72 69 64 20 22 31 20 70 78 33 22 20 20 67 72 69  rid "1 px3"  gri
0280: 64 20 74 68 69 73 20 6c 61 62 65 6c 20 69 6e 20  d this label in 
0290: 63 6f 6c 75 6d 6e 20 31 20 77 69 74 68 20 70 61  column 1 with pa
02a0: 64 78 20 33 0a 23 20 20 20 20 20 20 20 20 20 20  dx 3.#          
02b0: 20 20 20 20 6c 61 62 65 6c 20 2e 6c 33 20 2d 67      label .l3 -g
02c0: 72 69 64 20 22 31 20 70 79 32 22 20 20 67 72 69  rid "1 py2"  gri
02d0: 64 20 74 68 69 73 20 6c 61 62 65 6c 20 69 6e 20  d this label in 
02e0: 63 6f 6c 75 6d 6e 20 31 20 77 69 74 68 20 70 61  column 1 with pa
02f0: 64 79 20 32 0a 23 20 20 20 20 20 20 20 20 20 20  dy 2.#          
0300: 20 20 20 20 6c 61 62 65 6c 20 2e 6c 33 20 2d 67      label .l3 -g
0310: 72 69 64 20 22 31 20 6e 77 22 20 20 20 67 72 69  rid "1 nw"   gri
0320: 64 20 74 68 69 73 20 6c 61 62 65 6c 20 69 6e 20  d this label in 
0330: 63 6f 6c 75 6d 6e 20 31 20 77 69 74 68 20 73 74  column 1 with st
0340: 69 63 6b 79 20 6e 77 0a 23 20 20 20 20 20 20 20  icky nw.#       
0350: 20 20 20 20 20 20 20 6c 61 62 65 6c 20 2e 6c 33         label .l3
0360: 20 2d 67 72 69 64 20 22 31 20 6e 77 77 65 22 20   -grid "1 nwwe" 
0370: 67 72 69 64 20 74 68 69 73 20 6c 61 62 65 6c 20  grid this label 
0380: 69 6e 20 63 6f 6c 75 6d 6e 20 31 20 77 69 74 68  in column 1 with
0390: 20 73 74 69 63 6b 79 20 6e 77 0a 23 20 20 20 20   sticky nw.#    
03a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
03b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
03c0: 20 20 20 62 75 74 20 77 65 69 67 68 74 20 31 20     but weight 1 
03d0: 69 6e 20 63 6f 6c 75 6d 6e 0a 23 20 20 20 20 20  in column.#     
03e0: 20 20 20 20 20 20 20 20 20 6c 61 62 65 6c 20 2e           label .
03f0: 6c 33 20 2d 67 72 69 64 20 22 30 20 75 63 61 22  l3 -grid "0 uca"
0400: 20 20 67 72 69 64 20 74 68 69 73 20 6c 61 62 65    grid this labe
0410: 6c 20 69 6e 20 63 6f 6c 75 6d 6e 20 30 20 77 69  l in column 0 wi
0420: 74 68 20 2d 75 6e 69 66 6f 72 6d 20 61 0a 23 20  th -uniform a.# 
0430: 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 23 0a               .#.
0440: 23 20 20 20 20 4c 69 6d 69 74 61 74 69 6f 6e 73  #    Limitations
0450: 3a 20 41 20 77 69 64 67 65 74 20 63 61 6e 6e 6f  : A widget canno
0460: 74 20 62 65 20 67 72 69 64 64 65 64 20 77 69 74  t be gridded wit
0470: 68 20 72 6f 77 63 6f 6e 66 69 67 75 72 65 20 3e  h rowconfigure >
0480: 20 31 0a 23 0a 23 20 20 20 20 55 73 61 67 65 3a   1.#.#    Usage:
0490: 0a 23 0a 23 20 20 20 20 20 20 41 64 64 20 6f 70  .#.#      Add op
04a0: 74 69 6f 6e 20 2d 67 72 69 64 20 74 6f 20 61 6c  tion -grid to al
04b0: 6c 20 77 69 64 67 65 74 73 20 6f 66 20 61 20 66  l widgets of a f
04c0: 72 61 6d 65 20 61 6e 64 20 73 75 62 66 72 61 6d  rame and subfram
04d0: 65 73 0a 23 20 20 20 20 20 20 75 73 65 3a 20 73  es.#      use: s
04e0: 75 70 65 72 67 72 69 64 3a 3a 67 6f 0a 23 0a 23  upergrid::go.#.#
04f0: 20 20 20 20 41 64 64 69 74 69 6f 6e 61 6c 20 63      Additional c
0500: 6f 6d 6d 61 6e 64 73 3a 0a 23 0a 23 20 20 20 20  ommands:.#.#    
0510: 73 75 70 65 72 67 72 69 64 3a 3a 67 72 69 64 69  supergrid::gridi
0520: 6e 66 6f 20 7b 20 77 20 67 72 69 64 76 61 6c 20  nfo { w gridval 
0530: 7d 20 45 6e 74 65 72 73 20 74 68 65 20 67 72 69  } Enters the gri
0540: 64 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 6f  d information fo
0550: 72 20 77 69 64 67 65 74 20 77 0a 23 0a 23 20 20  r widget w.#.#  
0560: 20 20 67 72 69 64 69 6e 66 6f 3a 0a 23 20 20 20    gridinfo:.#   
0570: 20 20 20 54 68 69 73 20 69 73 20 61 20 54 43 4c     This is a TCL
0580: 20 6c 69 73 74 20 74 68 61 74 20 63 61 6e 20 63   list that can c
0590: 6f 6e 74 61 69 6e 20 74 68 65 20 66 6f 6c 6c 6f  ontain the follo
05a0: 77 69 6e 67 20 69 74 65 6d 73 3a 0a 23 20 20 20  wing items:.#   
05b0: 20 20 20 20 20 20 2d 4f 6e 65 20 64 69 67 69 74        -One digit
05c0: 20 20 20 69 74 20 69 73 20 74 68 65 20 63 6f 6c     it is the col
05d0: 75 6d 6e 20 6e 75 6d 62 65 72 0a 23 20 20 20 20  umn number.#    
05e0: 20 20 20 20 20 2d 74 77 6f 20 64 69 67 69 74 73       -two digits
05f0: 20 20 74 68 65 20 66 69 72 73 74 20 6f 6e 65 20    the first one 
0600: 69 73 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6e 75  is the column nu
0610: 6d 62 65 72 2c 20 74 68 65 20 32 6e 64 20 69 73  mber, the 2nd is
0620: 20 74 68 65 20 0a 23 20 20 20 20 20 20 20 20 20   the .#         
0630: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c               col
0640: 75 6d 6e 73 70 61 6e 20 28 6f 70 74 69 6f 6e 61  umnspan (optiona
0650: 6c 29 0a 23 20 20 20 20 20 20 20 20 20 2d 61 6e  l).#         -an
0660: 79 20 6f 66 20 27 6e 73 65 77 27 20 74 68 65 20  y of 'nsew' the 
0670: 73 74 69 63 6b 79 20 6f 70 74 69 6f 6e 20 28 6f  sticky option (o
0680: 70 74 69 6f 6e 61 6c 29 0a 23 20 20 20 20 20 20  ptional).#      
0690: 20 20 20 2d 70 78 7b 64 69 67 69 74 7d 20 6f 72     -px{digit} or
06a0: 20 70 79 7b 64 69 67 69 74 7d 20 74 68 65 20 2d   py{digit} the -
06b0: 70 61 64 78 20 2d 70 61 64 79 20 28 6f 70 74 69  padx -pady (opti
06c0: 6f 6e 61 6c 29 0a 23 20 20 20 20 20 20 20 20 20  onal).#         
06d0: 2d 75 63 75 6e 69 66 6f 72 6d 67 72 6f 75 70 20  -ucuniformgroup 
06e0: 65 71 75 69 76 61 6c 65 6e 74 20 74 6f 3a 20 2d  equivalent to: -
06f0: 75 6e 69 66 6f 72 6d 20 75 6e 69 66 6f 72 6d 67  uniform uniformg
0700: 72 6f 75 70 20 69 6e 20 63 75 72 72 65 6e 74 20  roup in current 
0710: 63 6f 6c 75 6d 6e 0a 23 20 20 20 20 20 20 20 20  column.#        
0720: 20 2d 75 72 75 6e 69 66 6f 72 6d 67 72 6f 75 70   -uruniformgroup
0730: 20 65 71 75 69 76 61 6c 65 6e 74 20 74 6f 3a 20   equivalent to: 
0740: 2d 75 6e 69 66 6f 72 6d 20 75 6e 69 66 6f 72 6d  -uniform uniform
0750: 67 72 6f 75 70 20 69 6e 20 63 75 72 72 65 6e 74  group in current
0760: 20 72 6f 77 0a 23 0a 23 20 20 20 20 4e 6f 74 65   row.#.#    Note
0770: 3a 20 4d 6f 64 69 66 79 20 74 68 65 20 73 75 70  : Modify the sup
0780: 65 72 67 72 69 64 20 64 65 66 69 6e 69 74 69 6f  ergrid definitio
0790: 6e 20 74 6f 20 61 64 64 20 6e 65 77 20 63 75 73  n to add new cus
07a0: 74 6f 6d 20 77 69 64 67 65 74 73 0a 23 0a 23 20  tom widgets.#.# 
07b0: 20 20 20 56 61 72 69 61 62 6c 65 20 55 73 65 47     Variable UseG
07c0: 50 72 65 66 69 78 3a 20 69 66 20 73 65 74 20 74  Prefix: if set t
07d0: 6f 20 6f 6e 65 20 70 72 65 66 69 78 2c 20 69 74  o one prefix, it
07e0: 20 69 73 20 6e 65 63 65 73 73 61 72 79 20 74 6f   is necessary to
07f0: 20 61 64 64 20 74 68 61 74 20 70 72 65 66 69 78   add that prefix
0800: 0a 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .#              
0810: 20 20 20 20 20 20 20 20 20 20 20 74 6f 20 74 68             to th
0820: 65 20 77 69 64 67 65 74 73 20 6e 61 6d 65 73 0a  e widgets names.
0830: 23 20 20 20 20 20 20 20 20 20 20 65 78 61 6d 70  #          examp
0840: 6c 65 3a 20 20 20 69 66 20 55 73 65 47 50 72 65  le:   if UseGPre
0850: 66 69 78 20 69 73 20 67 5f 20 74 68 65 6e 20 75  fix is g_ then u
0860: 73 65 20 67 5f 6c 61 62 65 6c 20 2e 6c 33 20 2d  se g_label .l3 -
0870: 67 72 69 64 20 30 0a 23 0a 23 23 23 23 23 23 23  grid 0.#.#######
0880: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0890: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
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 0a 0a 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 23 23 23 23 23 23 23 23 23  ################
08f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0900: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0910: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23  ##############.#
0920: 20 20 54 68 69 73 20 73 6f 66 74 77 61 72 65 20    This software 
0930: 69 73 20 63 6f 70 79 72 69 67 68 74 65 64 20 62  is copyrighted b
0940: 79 20 52 61 6d 6f 6e 20 52 69 62 c3 b3 20 28 52  y Ramon Rib.. (R
0950: 41 4d 53 41 4e 29 20 72 61 6d 73 61 6e 40 63 69  AMSAN) ramsan@ci
0960: 6d 6e 65 2e 75 70 63 2e 65 73 2e 0a 23 20 20 28  mne.upc.es..#  (
0970: 68 74 74 70 3a 2f 2f 67 69 64 2e 63 69 6d 6e 65  http://gid.cimne
0980: 2e 75 70 63 2e 65 73 2f 72 61 6d 73 61 6e 29 20  .upc.es/ramsan) 
0990: 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 65  The following te
09a0: 72 6d 73 20 61 70 70 6c 79 20 74 6f 20 61 6c 6c  rms apply to all
09b0: 20 66 69 6c 65 73 20 0a 23 20 20 61 73 73 6f 63   files .#  assoc
09c0: 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 73  iated with the s
09d0: 6f 66 74 77 61 72 65 20 75 6e 6c 65 73 73 20 65  oftware unless e
09e0: 78 70 6c 69 63 69 74 6c 79 20 64 69 73 63 6c 61  xplicitly discla
09f0: 69 6d 65 64 20 69 6e 20 69 6e 64 69 76 69 64 75  imed in individu
0a00: 61 6c 20 66 69 6c 65 73 2e 0a 0a 23 20 20 54 68  al files...#  Th
0a10: 65 20 61 75 74 68 6f 72 73 20 68 65 72 65 62 79  e authors hereby
0a20: 20 67 72 61 6e 74 20 70 65 72 6d 69 73 73 69 6f   grant permissio
0a30: 6e 20 74 6f 20 75 73 65 2c 20 63 6f 70 79 2c 20  n to use, copy, 
0a40: 6d 6f 64 69 66 79 2c 20 64 69 73 74 72 69 62 75  modify, distribu
0a50: 74 65 2c 0a 23 20 20 61 6e 64 20 6c 69 63 65 6e  te,.#  and licen
0a60: 73 65 20 74 68 69 73 20 73 6f 66 74 77 61 72 65  se this software
0a70: 20 61 6e 64 20 69 74 73 20 64 6f 63 75 6d 65 6e   and its documen
0a80: 74 61 74 69 6f 6e 20 66 6f 72 20 61 6e 79 20 70  tation for any p
0a90: 75 72 70 6f 73 65 2c 20 70 72 6f 76 69 64 65 64  urpose, provided
0aa0: 0a 23 20 20 74 68 61 74 20 65 78 69 73 74 69 6e  .#  that existin
0ab0: 67 20 63 6f 70 79 72 69 67 68 74 20 6e 6f 74 69  g copyright noti
0ac0: 63 65 73 20 61 72 65 20 72 65 74 61 69 6e 65 64  ces are retained
0ad0: 20 69 6e 20 61 6c 6c 20 63 6f 70 69 65 73 20 61   in all copies a
0ae0: 6e 64 20 74 68 61 74 20 74 68 69 73 0a 23 20 20  nd that this.#  
0af0: 6e 6f 74 69 63 65 20 69 73 20 69 6e 63 6c 75 64  notice is includ
0b00: 65 64 20 76 65 72 62 61 74 69 6d 20 69 6e 20 61  ed verbatim in a
0b10: 6e 79 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73  ny distributions
0b20: 2e 20 4e 6f 20 77 72 69 74 74 65 6e 20 61 67 72  . No written agr
0b30: 65 65 6d 65 6e 74 2c 0a 23 20 20 6c 69 63 65 6e  eement,.#  licen
0b40: 73 65 2c 20 6f 72 20 72 6f 79 61 6c 74 79 20 66  se, or royalty f
0b50: 65 65 20 69 73 20 72 65 71 75 69 72 65 64 20 66  ee is required f
0b60: 6f 72 20 61 6e 79 20 6f 66 20 74 68 65 20 61 75  or any of the au
0b70: 74 68 6f 72 69 7a 65 64 20 75 73 65 73 2e 0a 23  thorized uses..#
0b80: 20 20 4d 6f 64 69 66 69 63 61 74 69 6f 6e 73 20    Modifications 
0b90: 74 6f 20 74 68 69 73 20 73 6f 66 74 77 61 72 65  to this software
0ba0: 20 6d 61 79 20 62 65 20 63 6f 70 79 72 69 67 68   may be copyrigh
0bb0: 74 65 64 20 62 79 20 74 68 65 69 72 20 61 75 74  ted by their aut
0bc0: 68 6f 72 73 0a 23 20 20 61 6e 64 20 6e 65 65 64  hors.#  and need
0bd0: 20 6e 6f 74 20 66 6f 6c 6c 6f 77 20 74 68 65 20   not follow the 
0be0: 6c 69 63 65 6e 73 69 6e 67 20 74 65 72 6d 73 20  licensing terms 
0bf0: 64 65 73 63 72 69 62 65 64 20 68 65 72 65 2c 20  described here, 
0c00: 70 72 6f 76 69 64 65 64 20 74 68 61 74 0a 23 20  provided that.# 
0c10: 20 74 68 65 20 6e 65 77 20 74 65 72 6d 73 20 61   the new terms a
0c20: 72 65 20 63 6c 65 61 72 6c 79 20 69 6e 64 69 63  re clearly indic
0c30: 61 74 65 64 20 6f 6e 20 74 68 65 20 66 69 72 73  ated on the firs
0c40: 74 20 70 61 67 65 20 6f 66 20 65 61 63 68 20 66  t page of each f
0c50: 69 6c 65 20 77 68 65 72 65 0a 23 20 20 74 68 65  ile where.#  the
0c60: 79 20 61 70 70 6c 79 2e 0a 0a 23 20 20 49 4e 20  y apply...#  IN 
0c70: 4e 4f 20 45 56 45 4e 54 20 53 48 41 4c 4c 20 54  NO EVENT SHALL T
0c80: 48 45 20 41 55 54 48 4f 52 53 20 4f 52 20 44 49  HE AUTHORS OR DI
0c90: 53 54 52 49 42 55 54 4f 52 53 20 42 45 20 4c 49  STRIBUTORS BE LI
0ca0: 41 42 4c 45 20 54 4f 20 41 4e 59 20 50 41 52 54  ABLE TO ANY PART
0cb0: 59 0a 23 20 20 46 4f 52 20 44 49 52 45 43 54 2c  Y.#  FOR DIRECT,
0cc0: 20 49 4e 44 49 52 45 43 54 2c 20 53 50 45 43 49   INDIRECT, SPECI
0cd0: 41 4c 2c 20 49 4e 43 49 44 45 4e 54 41 4c 2c 20  AL, INCIDENTAL, 
0ce0: 4f 52 20 43 4f 4e 53 45 51 55 45 4e 54 49 41 4c  OR CONSEQUENTIAL
0cf0: 20 44 41 4d 41 47 45 53 0a 23 20 20 41 52 49 53   DAMAGES.#  ARIS
0d00: 49 4e 47 20 4f 55 54 20 4f 46 20 54 48 45 20 55  ING OUT OF THE U
0d10: 53 45 20 4f 46 20 54 48 49 53 20 53 4f 46 54 57  SE OF THIS SOFTW
0d20: 41 52 45 2c 20 49 54 53 20 44 4f 43 55 4d 45 4e  ARE, ITS DOCUMEN
0d30: 54 41 54 49 4f 4e 2c 20 4f 52 20 41 4e 59 0a 23  TATION, OR ANY.#
0d40: 20 20 44 45 52 49 56 41 54 49 56 45 53 20 54 48    DERIVATIVES TH
0d50: 45 52 45 4f 46 2c 20 45 56 45 4e 20 49 46 20 54  EREOF, EVEN IF T
0d60: 48 45 20 41 55 54 48 4f 52 53 20 48 41 56 45 20  HE AUTHORS HAVE 
0d70: 42 45 45 4e 20 41 44 56 49 53 45 44 20 4f 46 20  BEEN ADVISED OF 
0d80: 54 48 45 0a 23 20 20 50 4f 53 53 49 42 49 4c 49  THE.#  POSSIBILI
0d90: 54 59 20 4f 46 20 53 55 43 48 20 44 41 4d 41 47  TY OF SUCH DAMAG
0da0: 45 2e 0a 0a 23 20 20 54 48 45 20 41 55 54 48 4f  E...#  THE AUTHO
0db0: 52 53 20 41 4e 44 20 44 49 53 54 52 49 42 55 54  RS AND DISTRIBUT
0dc0: 4f 52 53 20 53 50 45 43 49 46 49 43 41 4c 4c 59  ORS SPECIFICALLY
0dd0: 20 44 49 53 43 4c 41 49 4d 20 41 4e 59 20 57 41   DISCLAIM ANY WA
0de0: 52 52 41 4e 54 49 45 53 2c 0a 23 20 20 49 4e 43  RRANTIES,.#  INC
0df0: 4c 55 44 49 4e 47 2c 20 42 55 54 20 4e 4f 54 20  LUDING, BUT NOT 
0e00: 4c 49 4d 49 54 45 44 20 54 4f 2c 20 54 48 45 20  LIMITED TO, THE 
0e10: 49 4d 50 4c 49 45 44 20 57 41 52 52 41 4e 54 49  IMPLIED WARRANTI
0e20: 45 53 20 4f 46 20 4d 45 52 43 48 41 4e 54 41 42  ES OF MERCHANTAB
0e30: 49 4c 49 54 59 2c 0a 23 20 20 46 49 54 4e 45 53  ILITY,.#  FITNES
0e40: 53 20 46 4f 52 20 41 20 50 41 52 54 49 43 55 4c  S FOR A PARTICUL
0e50: 41 52 20 50 55 52 50 4f 53 45 2c 20 41 4e 44 20  AR PURPOSE, AND 
0e60: 4e 4f 4e 2d 49 4e 46 52 49 4e 47 45 4d 45 4e 54  NON-INFRINGEMENT
0e70: 2e 20 20 54 48 49 53 20 53 4f 46 54 57 41 52 45  .  THIS SOFTWARE
0e80: 0a 23 20 20 49 53 20 50 52 4f 56 49 44 45 44 20  .#  IS PROVIDED 
0e90: 4f 4e 20 41 4e 20 22 41 53 20 49 53 22 20 42 41  ON AN "AS IS" BA
0ea0: 53 49 53 2c 20 41 4e 44 20 54 48 45 20 41 55 54  SIS, AND THE AUT
0eb0: 48 4f 52 53 20 41 4e 44 20 44 49 53 54 52 49 42  HORS AND DISTRIB
0ec0: 55 54 4f 52 53 20 48 41 56 45 0a 23 20 20 4e 4f  UTORS HAVE.#  NO
0ed0: 20 4f 42 4c 49 47 41 54 49 4f 4e 20 54 4f 20 50   OBLIGATION TO P
0ee0: 52 4f 56 49 44 45 20 4d 41 49 4e 54 45 4e 41 4e  ROVIDE MAINTENAN
0ef0: 43 45 2c 20 53 55 50 50 4f 52 54 2c 20 55 50 44  CE, SUPPORT, UPD
0f00: 41 54 45 53 2c 20 45 4e 48 41 4e 43 45 4d 45 4e  ATES, ENHANCEMEN
0f10: 54 53 2c 20 4f 52 0a 23 20 20 4d 4f 44 49 46 49  TS, OR.#  MODIFI
0f20: 43 41 54 49 4f 4e 53 2e 0a 23 23 23 23 23 23 23  CATIONS..#######
0f30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0f40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0f50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0f60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0f70: 23 23 23 23 23 23 23 23 23 0a 0a 0a 70 61 63 6b  #########...pack
0f80: 61 67 65 20 72 65 71 75 69 72 65 20 54 63 6c 20  age require Tcl 
0f90: 38 2e 33 0a 70 61 63 6b 61 67 65 20 72 65 71 75  8.3.package requ
0fa0: 69 72 65 20 54 6b 20 38 2e 33 0a 70 61 63 6b 61  ire Tk 8.3.packa
0fb0: 67 65 20 70 72 6f 76 69 64 65 20 73 75 70 65 72  ge provide super
0fc0: 67 72 69 64 20 31 2e 32 0a 0a 6e 61 6d 65 73 70  grid 1.2..namesp
0fd0: 61 63 65 20 65 76 61 6c 20 73 75 70 65 72 67 72  ace eval supergr
0fe0: 69 64 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c  id {.    variabl
0ff0: 65 20 55 73 65 47 50 72 65 66 69 78 20 22 22 0a  e UseGPrefix "".
1000: 20 20 20 20 76 61 72 69 61 62 6c 65 20 77 69 64      variable wid
1010: 67 65 74 73 20 5b 6c 69 73 74 20 6c 61 62 65 6c  gets [list label
1020: 20 65 6e 74 72 79 20 62 75 74 74 6f 6e 20 63 68   entry button ch
1030: 65 63 6b 62 75 74 74 6f 6e 20 72 61 64 69 6f 62  eckbutton radiob
1040: 75 74 74 6f 6e 20 66 72 61 6d 65 20 63 61 6e 76  utton frame canv
1050: 61 73 20 5c 0a 09 09 20 20 20 20 20 20 20 20 20  as \...         
1060: 20 73 63 72 6f 6c 6c 62 61 72 20 74 65 78 74 20   scrollbar text 
1070: 6c 69 73 74 62 6f 78 20 6d 65 6e 75 62 75 74 74  listbox menubutt
1080: 6f 6e 20 73 63 61 6c 65 5d 0a 20 20 20 20 76 61  on scale].    va
1090: 72 69 61 62 6c 65 20 77 69 64 67 65 74 73 32 20  riable widgets2 
10a0: 5b 6c 69 73 74 20 70 61 6e 65 64 77 69 6e 64 6f  [list panedwindo
10b0: 77 20 54 69 74 6c 65 46 72 61 6d 65 20 53 70 69  w TitleFrame Spi
10c0: 6e 42 6f 78 20 43 6f 6d 62 6f 42 6f 78 20 64 61  nBox ComboBox da
10d0: 74 65 3a 3a 64 61 74 65 66 69 65 6c 64 20 5c 0a  te::datefield \.
10e0: 09 09 20 20 20 20 20 20 20 20 20 20 20 53 63 72  ..           Scr
10f0: 6f 6c 6c 65 64 57 69 6e 64 6f 77 20 50 61 6e 65  olledWindow Pane
1100: 64 57 69 6e 64 6f 77 20 42 75 74 74 6f 6e 42 6f  dWindow ButtonBo
1110: 78 20 4d 61 69 6e 46 72 61 6d 65 20 42 75 74 74  x MainFrame Butt
1120: 6f 6e 20 4c 61 62 65 6c 20 4e 6f 74 65 42 6f 6f  on Label NoteBoo
1130: 6b 20 5c 0a 09 09 20 20 20 20 20 20 20 20 20 20  k \...          
1140: 20 53 65 70 61 72 61 74 6f 72 20 45 6e 74 72 79   Separator Entry
1150: 20 74 72 65 65 63 74 72 6c 20 68 75 67 65 63 6f   treectrl hugeco
1160: 6d 62 6f 20 6c 61 62 65 6c 66 72 61 6d 65 20 73  mbo labelframe s
1170: 70 69 6e 62 6f 78 5d 0a 20 20 20 20 76 61 72 69  pinbox].    vari
1180: 61 62 6c 65 20 77 69 64 67 65 74 73 33 20 5b 6c  able widgets3 [l
1190: 69 73 74 20 74 74 6b 3a 3a 62 75 74 74 6f 6e 20  ist ttk::button 
11a0: 74 74 6b 3a 3a 63 68 65 63 6b 62 75 74 74 6f 6e  ttk::checkbutton
11b0: 20 74 74 6b 3a 3a 63 6f 6d 62 6f 62 6f 78 20 74   ttk::combobox t
11c0: 74 6b 3a 3a 65 6e 74 72 79 20 5c 0a 09 09 20 20  tk::entry \...  
11d0: 20 20 20 20 20 20 20 20 20 74 74 6b 3a 3a 66 72           ttk::fr
11e0: 61 6d 65 20 74 74 6b 3a 3a 6c 61 62 65 6c 20 74  ame ttk::label t
11f0: 74 6b 3a 3a 6c 61 62 65 6c 66 72 61 6d 65 20 74  tk::labelframe t
1200: 74 6b 3a 3a 6d 65 6e 75 62 75 74 74 6f 6e 20 74  tk::menubutton t
1210: 74 6b 3a 3a 6e 6f 74 65 62 6f 6f 6b 20 5c 0a 09  tk::notebook \..
1220: 09 20 20 20 20 20 20 20 20 20 20 20 74 74 6b 3a  .           ttk:
1230: 3a 70 61 6e 65 64 77 69 6e 64 6f 77 20 74 74 6b  :panedwindow ttk
1240: 3a 3a 70 72 6f 67 72 65 73 73 62 61 72 20 74 74  ::progressbar tt
1250: 6b 3a 3a 72 61 64 69 6f 62 75 74 74 6f 6e 20 74  k::radiobutton t
1260: 74 6b 3a 3a 73 63 61 6c 65 20 74 74 6b 3a 3a 73  tk::scale ttk::s
1270: 63 72 6f 6c 6c 62 61 72 20 5c 0a 09 09 20 20 20  crollbar \...   
1280: 20 20 20 20 20 20 20 20 74 74 6b 3a 3a 73 65 70          ttk::sep
1290: 61 72 61 74 6f 72 20 74 74 6b 3a 3a 73 69 7a 65  arator ttk::size
12a0: 67 72 69 70 20 74 74 6b 3a 3a 74 72 65 65 76 69  grip ttk::treevi
12b0: 65 77 5d 0a 20 20 20 20 69 66 20 7b 20 5b 69 6e  ew].    if { [in
12c0: 66 6f 20 63 6f 6d 6d 61 6e 64 20 74 74 6b 3a 3a  fo command ttk::
12d0: 73 70 69 6e 62 6f 78 5d 20 6e 65 20 22 22 20 7d  spinbox] ne "" }
12e0: 20 7b 0a 09 6c 61 70 70 65 6e 64 20 77 69 64 67   {..lappend widg
12f0: 65 74 73 33 20 74 74 6b 3a 3a 73 70 69 6e 62 6f  ets3 ttk::spinbo
1300: 78 0a 20 20 20 20 7d 0a 20 20 20 20 76 61 72 69  x.    }.    vari
1310: 61 62 6c 65 20 53 75 62 47 72 69 64 43 6c 61 73  able SubGridClas
1320: 73 65 73 20 5b 6c 69 73 74 20 46 72 61 6d 65 20  ses [list Frame 
1330: 54 46 72 61 6d 65 20 4c 61 62 65 6c 66 72 61 6d  TFrame Labelfram
1340: 65 20 54 4c 61 62 65 6c 66 72 61 6d 65 5d 20 0a  e TLabelframe] .
1350: 20 20 20 20 76 61 72 69 61 62 6c 65 20 48 6f 72      variable Hor
1360: 69 7a 6f 6e 74 61 6c 43 6c 61 73 73 65 73 20 5b  izontalClasses [
1370: 6c 69 73 74 20 45 6e 74 72 79 20 54 45 6e 74 72  list Entry TEntr
1380: 79 20 54 65 78 74 20 43 61 6e 76 61 73 20 4c 69  y Text Canvas Li
1390: 73 74 62 6f 78 20 50 61 6e 65 64 57 69 6e 64 6f  stbox PanedWindo
13a0: 77 20 54 50 61 6e 65 64 77 69 6e 64 6f 77 20 5c  w TPanedwindow \
13b0: 0a 09 20 20 20 20 54 69 74 6c 65 46 72 61 6d 65  ..    TitleFrame
13c0: 20 43 6f 6d 62 6f 42 6f 78 20 54 43 6f 6d 62 6f   ComboBox TCombo
13d0: 62 6f 78 20 4e 6f 74 65 42 6f 6f 6b 20 54 4e 6f  box NoteBook TNo
13e0: 74 65 62 6f 6f 6b 20 4d 61 69 6e 46 72 61 6d 65  tebook MainFrame
13f0: 20 53 63 72 6f 6c 6c 65 64 57 69 6e 64 6f 77 20   ScrolledWindow 
1400: 5c 0a 09 20 20 20 20 50 61 6e 65 64 77 69 6e 64  \..    Panedwind
1410: 6f 77 20 54 50 61 6e 65 64 77 69 6e 64 6f 77 20  ow TPanedwindow 
1420: 54 72 65 65 43 74 72 6c 20 54 72 65 65 76 69 65  TreeCtrl Treevie
1430: 77 20 4c 61 62 65 6c 66 72 61 6d 65 20 54 4c 61  w Labelframe TLa
1440: 62 65 6c 66 72 61 6d 65 20 53 70 69 6e 62 6f 78  belframe Spinbox
1450: 20 54 53 70 69 6e 62 6f 78 20 48 75 67 65 63 6f   TSpinbox Hugeco
1460: 6d 62 6f 5d 0a 20 20 20 20 76 61 72 69 61 62 6c  mbo].    variabl
1470: 65 20 56 65 72 74 69 63 61 6c 43 6c 61 73 73 65  e VerticalClasse
1480: 73 20 5b 6c 69 73 74 20 54 65 78 74 20 43 61 6e  s [list Text Can
1490: 76 61 73 20 4c 69 73 74 62 6f 78 20 50 61 6e 65  vas Listbox Pane
14a0: 64 57 69 6e 64 6f 77 20 54 50 61 6e 65 64 77 69  dWindow TPanedwi
14b0: 6e 64 6f 77 20 54 69 74 6c 65 46 72 61 6d 65 20  ndow TitleFrame 
14c0: 5c 0a 09 20 20 20 20 4e 6f 74 65 42 6f 6f 6b 20  \..    NoteBook 
14d0: 54 4e 6f 74 65 62 6f 6f 6b 20 4d 61 69 6e 46 72  TNotebook MainFr
14e0: 61 6d 65 20 53 63 72 6f 6c 6c 65 64 57 69 6e 64  ame ScrolledWind
14f0: 6f 77 20 70 61 6e 65 64 77 69 6e 64 6f 77 20 50  ow panedwindow P
1500: 61 6e 65 64 77 69 6e 64 6f 77 20 54 50 61 6e 65  anedwindow TPane
1510: 64 77 69 6e 64 6f 77 20 5c 0a 09 20 20 20 20 54  dwindow \..    T
1520: 72 65 65 43 74 72 6c 20 54 72 65 65 76 69 65 77  reeCtrl Treeview
1530: 20 4c 61 62 65 6c 66 72 61 6d 65 20 54 4c 61 62   Labelframe TLab
1540: 65 6c 66 72 61 6d 65 20 4e 6f 74 65 42 6f 6f 6b  elframe NoteBook
1550: 20 54 4e 6f 74 65 62 6f 6f 6b 5d 0a 20 20 20 20   TNotebook].    
1560: 76 61 72 69 61 62 6c 65 20 53 63 72 6f 6c 6c 43  variable ScrollC
1570: 6c 61 73 73 65 73 20 5b 6c 69 73 74 20 53 63 72  lasses [list Scr
1580: 6f 6c 6c 62 61 72 20 54 53 63 72 6f 6c 6c 62 61  ollbar TScrollba
1590: 72 5d 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  r].    variable 
15a0: 44 69 73 63 61 72 64 43 6c 61 73 73 65 73 20 5b  DiscardClasses [
15b0: 6c 69 73 74 20 54 6f 70 6c 65 76 65 6c 20 4d 65  list Toplevel Me
15c0: 6e 75 5d 0a 20 20 20 20 76 61 72 69 61 62 6c 65  nu].    variable
15d0: 20 44 69 73 63 61 72 64 57 69 64 67 65 74 73 20   DiscardWidgets 
15e0: 7b 5e 5c 2e 23 42 57 69 64 67 65 74 7d 0a 0a 20  {^\.#BWidget}.. 
15f0: 20 20 20 76 61 72 69 61 62 6c 65 20 64 61 74 61     variable data
1600: 0a 7d 0a 0a 70 72 6f 63 20 73 75 70 65 72 67 72  .}..proc supergr
1610: 69 64 3a 3a 69 6e 69 74 20 7b 7d 20 7b 0a 20 20  id::init {} {.  
1620: 20 20 76 61 72 69 61 62 6c 65 20 77 69 64 67 65    variable widge
1630: 74 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  ts.    variable 
1640: 77 69 64 67 65 74 73 32 0a 20 20 20 20 76 61 72  widgets2.    var
1650: 69 61 62 6c 65 20 77 69 64 67 65 74 73 33 0a 20  iable widgets3. 
1660: 20 20 20 76 61 72 69 61 62 6c 65 20 64 61 74 61     variable data
1670: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 55 73  .    variable Us
1680: 65 47 50 72 65 66 69 78 0a 0a 20 20 20 20 69 66  eGPrefix..    if
1690: 20 7b 20 24 55 73 65 47 50 72 65 66 69 78 20 21   { $UseGPrefix !
16a0: 3d 20 22 22 20 7d 20 7b 0a 09 69 66 20 7b 20 5b  = "" } {..if { [
16b0: 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 3a 3a  info commands ::
16c0: 24 55 73 65 47 50 72 65 66 69 78 5b 6c 69 6e 64  $UseGPrefix[lind
16d0: 65 78 20 24 77 69 64 67 65 74 73 20 30 5d 5d 20  ex $widgets 0]] 
16e0: 21 3d 20 22 22 20 7d 20 7b 20 72 65 74 75 72 6e  != "" } { return
16f0: 20 7d 0a 09 73 65 74 20 70 72 65 66 69 78 20 3a   }..set prefix :
1700: 3a 24 55 73 65 47 50 72 65 66 69 78 0a 09 73 65  :$UseGPrefix..se
1710: 74 20 62 6f 64 79 20 7b 0a 09 20 20 20 20 73 65  t body {..    se
1720: 74 20 69 70 6f 73 20 5b 6c 73 65 61 72 63 68 20  t ipos [lsearch 
1730: 24 61 72 67 73 20 2d 67 72 69 64 5d 0a 09 20 20  $args -grid]..  
1740: 20 20 69 66 20 7b 20 24 69 70 6f 73 20 21 3d 20    if { $ipos != 
1750: 2d 31 20 7d 20 7b 0a 09 09 73 65 74 20 73 75 70  -1 } {...set sup
1760: 65 72 67 72 69 64 3a 3a 64 61 74 61 28 24 77 29  ergrid::data($w)
1770: 20 5b 6c 69 6e 64 65 78 20 24 61 72 67 73 20 5b   [lindex $args [
1780: 65 78 70 72 20 24 69 70 6f 73 2b 31 5d 5d 0a 09  expr $ipos+1]]..
1790: 09 73 65 74 20 61 72 67 73 20 5b 6c 72 65 70 6c  .set args [lrepl
17a0: 61 63 65 20 24 61 72 67 73 20 24 69 70 6f 73 20  ace $args $ipos 
17b0: 5b 65 78 70 72 20 24 69 70 6f 73 2b 31 5d 5d 0a  [expr $ipos+1]].
17c0: 09 20 20 20 20 7d 0a 09 20 20 20 20 72 65 74 75  .    }..    retu
17d0: 72 6e 20 5b 65 76 61 6c 20 5b 73 74 72 69 6e 67  rn [eval [string
17e0: 20 72 61 6e 67 65 20 5b 6c 69 6e 64 65 78 20 5b   range [lindex [
17f0: 69 6e 66 6f 20 6c 65 76 65 6c 20 30 5d 20 30 5d  info level 0] 0]
1800: 20 4c 45 4e 47 54 48 20 65 6e 64 5d 20 5c 0a 09   LENGTH end] \..
1810: 09 20 20 20 20 20 20 20 20 24 77 20 24 61 72 67  .        $w $arg
1820: 73 5d 0a 09 7d 0a 09 72 65 67 73 75 62 20 4c 45  s]..}..regsub LE
1830: 4e 47 54 48 20 24 62 6f 64 79 20 5b 73 74 72 69  NGTH $body [stri
1840: 6e 67 20 6c 65 6e 67 74 68 20 24 55 73 65 47 50  ng length $UseGP
1850: 72 65 66 69 78 5d 20 62 6f 64 79 0a 20 20 20 20  refix] body.    
1860: 7d 20 65 6c 73 65 20 7b 0a 09 69 66 20 7b 20 5b  } else {..if { [
1870: 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 3a 3a  info commands ::
1880: 5b 6c 69 6e 64 65 78 20 24 77 69 64 67 65 74 73  [lindex $widgets
1890: 20 30 5d 5f 73 75 70 65 72 67 72 69 64 5d 20 21   0]_supergrid] !
18a0: 3d 20 22 22 20 7d 20 7b 20 72 65 74 75 72 6e 20  = "" } { return 
18b0: 7d 0a 09 73 65 74 20 70 72 65 66 69 78 20 3a 3a  }..set prefix ::
18c0: 0a 09 73 65 74 20 62 6f 64 79 20 7b 0a 09 20 20  ..set body {..  
18d0: 20 20 73 65 74 20 69 70 6f 73 20 5b 6c 73 65 61    set ipos [lsea
18e0: 72 63 68 20 24 61 72 67 73 20 2d 67 72 69 64 5d  rch $args -grid]
18f0: 0a 09 20 20 20 20 69 66 20 7b 20 24 69 70 6f 73  ..    if { $ipos
1900: 20 21 3d 20 2d 31 20 7d 20 7b 0a 09 09 73 65 74   != -1 } {...set
1910: 20 73 75 70 65 72 67 72 69 64 3a 3a 64 61 74 61   supergrid::data
1920: 28 24 77 29 20 5b 6c 69 6e 64 65 78 20 24 61 72  ($w) [lindex $ar
1930: 67 73 20 5b 65 78 70 72 20 24 69 70 6f 73 2b 31  gs [expr $ipos+1
1940: 5d 5d 0a 09 09 73 65 74 20 61 72 67 73 20 5b 6c  ]]...set args [l
1950: 72 65 70 6c 61 63 65 20 24 61 72 67 73 20 24 69  replace $args $i
1960: 70 6f 73 20 5b 65 78 70 72 20 24 69 70 6f 73 2b  pos [expr $ipos+
1970: 31 5d 5d 0a 09 20 20 20 20 7d 0a 09 20 20 20 20  1]]..    }..    
1980: 72 65 74 75 72 6e 20 5b 65 76 61 6c 20 5b 6c 69  return [eval [li
1990: 6e 64 65 78 20 5b 69 6e 66 6f 20 6c 65 76 65 6c  ndex [info level
19a0: 20 30 5d 20 30 5d 5f 73 75 70 65 72 67 72 69 64   0] 0]_supergrid
19b0: 20 24 77 20 24 61 72 67 73 5d 0a 09 7d 0a 20 20   $w $args]..}.  
19c0: 20 20 7d 0a 20 20 20 20 66 6f 72 65 61 63 68 20    }.    foreach 
19d0: 69 20 24 77 69 64 67 65 74 73 20 7b 0a 09 69 66  i $widgets {..if
19e0: 20 7b 20 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64   { [info command
19f0: 73 20 3a 3a 24 69 5d 20 3d 3d 20 22 22 20 7d 20  s ::$i] == "" } 
1a00: 7b 20 61 75 74 6f 5f 6c 6f 61 64 20 3a 3a 24 69  { auto_load ::$i
1a10: 20 7d 0a 09 69 66 20 7b 20 5b 69 6e 66 6f 20 63   }..if { [info c
1a20: 6f 6d 6d 61 6e 64 73 20 3a 3a 24 69 5d 20 3d 3d  ommands ::$i] ==
1a30: 20 22 22 20 7d 20 7b 20 65 72 72 6f 72 20 22 63   "" } { error "c
1a40: 6f 6d 6d 61 6e 64 20 3a 3a 24 69 20 64 6f 65 73  ommand ::$i does
1a50: 20 6e 6f 74 20 65 78 69 73 74 22 20 7d 0a 09 69   not exist" }..i
1a60: 66 20 7b 20 24 55 73 65 47 50 72 65 66 69 78 20  f { $UseGPrefix 
1a70: 3d 3d 20 22 22 20 7d 20 7b 20 72 65 6e 61 6d 65  == "" } { rename
1a80: 20 24 70 72 65 66 69 78 24 69 20 24 70 72 65 66   $prefix$i $pref
1a90: 69 78 24 7b 69 7d 5f 73 75 70 65 72 67 72 69 64  ix${i}_supergrid
1aa0: 20 7d 0a 09 70 72 6f 63 20 24 70 72 65 66 69 78   }..proc $prefix
1ab0: 24 69 20 7b 20 77 20 61 72 67 73 20 7d 20 24 62  $i { w args } $b
1ac0: 6f 64 79 0a 20 20 20 20 7d 0a 20 20 20 20 66 6f  ody.    }.    fo
1ad0: 72 65 61 63 68 20 69 20 24 77 69 64 67 65 74 73  reach i $widgets
1ae0: 32 20 7b 0a 09 69 66 20 7b 20 5b 69 6e 66 6f 20  2 {..if { [info 
1af0: 63 6f 6d 6d 61 6e 64 73 20 3a 3a 24 69 5d 20 3d  commands ::$i] =
1b00: 3d 20 22 22 20 7d 20 7b 20 61 75 74 6f 5f 6c 6f  = "" } { auto_lo
1b10: 61 64 20 3a 3a 24 69 20 7d 0a 09 69 66 20 7b 20  ad ::$i }..if { 
1b20: 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 3a  [info commands :
1b30: 3a 24 69 5d 20 3d 3d 20 22 22 20 7d 20 7b 20 63  :$i] == "" } { c
1b40: 6f 6e 74 69 6e 75 65 20 7d 0a 09 69 66 20 7b 20  ontinue }..if { 
1b50: 24 55 73 65 47 50 72 65 66 69 78 20 3d 3d 20 22  $UseGPrefix == "
1b60: 22 20 7d 20 7b 20 72 65 6e 61 6d 65 20 24 70 72  " } { rename $pr
1b70: 65 66 69 78 24 69 20 24 70 72 65 66 69 78 24 7b  efix$i $prefix${
1b80: 69 7d 5f 73 75 70 65 72 67 72 69 64 20 7d 0a 09  i}_supergrid }..
1b90: 70 72 6f 63 20 24 70 72 65 66 69 78 24 69 20 7b  proc $prefix$i {
1ba0: 20 77 20 61 72 67 73 20 7d 20 24 62 6f 64 79 0a   w args } $body.
1bb0: 20 20 20 20 7d 0a 20 20 20 20 66 6f 72 65 61 63      }.    foreac
1bc0: 68 20 69 20 24 77 69 64 67 65 74 73 33 20 7b 0a  h i $widgets3 {.
1bd0: 09 69 66 20 7b 20 5b 69 6e 66 6f 20 63 6f 6d 6d  .if { [info comm
1be0: 61 6e 64 73 20 3a 3a 24 69 5d 20 3d 3d 20 22 22  ands ::$i] == ""
1bf0: 20 7d 20 7b 20 61 75 74 6f 5f 6c 6f 61 64 20 3a   } { auto_load :
1c00: 3a 24 69 20 7d 0a 09 69 66 20 7b 20 5b 69 6e 66  :$i }..if { [inf
1c10: 6f 20 63 6f 6d 6d 61 6e 64 73 20 3a 3a 24 69 5d  o commands ::$i]
1c20: 20 3d 3d 20 22 22 20 7d 20 7b 20 65 72 72 6f 72   == "" } { error
1c30: 20 22 63 6f 6d 6d 61 6e 64 20 3a 3a 24 69 20 64   "command ::$i d
1c40: 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 22 20 7d  oes not exist" }
1c50: 0a 09 69 66 20 7b 20 24 55 73 65 47 50 72 65 66  ..if { $UseGPref
1c60: 69 78 20 3d 3d 20 22 22 20 7d 20 7b 20 72 65 6e  ix == "" } { ren
1c70: 61 6d 65 20 24 70 72 65 66 69 78 24 69 20 24 70  ame $prefix$i $p
1c80: 72 65 66 69 78 24 7b 69 7d 5f 73 75 70 65 72 67  refix${i}_superg
1c90: 72 69 64 20 7d 0a 09 70 72 6f 63 20 24 70 72 65  rid }..proc $pre
1ca0: 66 69 78 24 69 20 7b 20 77 20 61 72 67 73 20 7d  fix$i { w args }
1cb0: 20 24 62 6f 64 79 0a 20 20 20 20 7d 0a 7d 0a 0a   $body.    }.}..
1cc0: 70 72 6f 63 20 73 75 70 65 72 67 72 69 64 3a 3a  proc supergrid::
1cd0: 67 72 69 64 69 6e 66 6f 20 7b 20 77 20 67 72 69  gridinfo { w gri
1ce0: 64 76 61 6c 20 7d 20 7b 0a 20 20 20 20 76 61 72  dval } {.    var
1cf0: 69 61 62 6c 65 20 64 61 74 61 0a 0a 20 20 20 20  iable data..    
1d00: 73 65 74 20 64 61 74 61 28 24 77 29 20 24 67 72  set data($w) $gr
1d10: 69 64 76 61 6c 0a 7d 0a 0a 70 72 6f 63 20 73 75  idval.}..proc su
1d20: 70 65 72 67 72 69 64 3a 3a 67 6f 20 7b 20 66 20  pergrid::go { f 
1d30: 7b 20 69 73 72 65 63 75 72 73 69 76 65 20 30 20  { isrecursive 0 
1d40: 7d 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62  } } {.    variab
1d50: 6c 65 20 53 75 62 47 72 69 64 43 6c 61 73 73 65  le SubGridClasse
1d60: 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 48  s.    variable H
1d70: 6f 72 69 7a 6f 6e 74 61 6c 43 6c 61 73 73 65 73  orizontalClasses
1d80: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 56 65  .    variable Ve
1d90: 72 74 69 63 61 6c 43 6c 61 73 73 65 73 0a 20 20  rticalClasses.  
1da0: 20 20 76 61 72 69 61 62 6c 65 20 53 63 72 6f 6c    variable Scrol
1db0: 6c 43 6c 61 73 73 65 73 0a 20 20 20 20 76 61 72  lClasses.    var
1dc0: 69 61 62 6c 65 20 44 69 73 63 61 72 64 43 6c 61  iable DiscardCla
1dd0: 73 73 65 73 0a 20 20 20 20 76 61 72 69 61 62 6c  sses.    variabl
1de0: 65 20 44 69 73 63 61 72 64 57 69 64 67 65 74 73  e DiscardWidgets
1df0: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 64 61  .    variable da
1e00: 74 61 0a 0a 20 20 20 20 69 66 20 7b 20 21 5b 69  ta..    if { ![i
1e10: 6e 66 6f 20 65 78 69 73 74 73 20 64 61 74 61 5d  nfo exists data]
1e20: 20 7d 20 7b 0a 09 65 72 72 6f 72 20 22 65 72 72   } {..error "err
1e30: 6f 72 3a 20 62 65 66 6f 72 65 20 72 75 6e 6e 69  or: before runni
1e40: 6e 67 20 73 75 70 65 72 67 72 69 64 3a 3a 67 6f  ng supergrid::go
1e50: 20 69 74 20 69 73 20 6e 65 63 65 73 73 61 72 79   it is necessary
1e60: 20 74 6f 20 75 73 65 20 2d 67 72 69 64 20 69 6e   to use -grid in
1e70: 20 77 69 64 67 65 74 73 22 0a 20 20 20 20 7d 0a   widgets".    }.
1e80: 0a 23 20 20 20 20 20 66 6f 72 65 61 63 68 20 22  .#     foreach "
1e90: 63 6f 6c 73 20 72 6f 77 73 22 20 5b 67 72 69 64  cols rows" [grid
1ea0: 20 73 69 7a 65 20 24 66 5d 20 62 72 65 61 6b 0a   size $f] break.
1eb0: 23 20 20 20 20 20 66 6f 72 20 7b 20 73 65 74 20  #     for { set 
1ec0: 69 20 30 20 7d 20 7b 20 24 69 20 3c 20 24 63 6f  i 0 } { $i < $co
1ed0: 6c 73 20 7d 20 7b 20 69 6e 63 72 20 69 20 7d 20  ls } { incr i } 
1ee0: 7b 0a 23 20 20 20 20 20 20 20 20 20 67 72 69 64  {.#         grid
1ef0: 20 63 6f 6c 75 6d 6e 63 6f 6e 66 69 67 75 72 65   columnconfigure
1f00: 20 24 66 20 24 69 20 2d 77 65 69 67 68 74 20 30   $f $i -weight 0
1f10: 20 2d 6d 69 6e 73 69 7a 65 20 30 20 2d 70 61 64   -minsize 0 -pad
1f20: 20 30 0a 23 20 20 20 20 20 7d 0a 23 20 20 20 20   0.#     }.#    
1f30: 20 66 6f 72 20 7b 20 73 65 74 20 69 20 30 20 7d   for { set i 0 }
1f40: 20 7b 20 24 69 20 3c 20 24 72 6f 77 73 20 7d 20   { $i < $rows } 
1f50: 7b 20 69 6e 63 72 20 69 20 7d 20 7b 0a 23 20 20  { incr i } {.#  
1f60: 20 20 20 20 20 20 20 67 72 69 64 20 72 6f 77 63         grid rowc
1f70: 6f 6e 66 69 67 75 72 65 20 24 66 20 24 69 20 2d  onfigure $f $i -
1f80: 77 65 69 67 68 74 20 30 20 2d 6d 69 6e 73 69 7a  weight 0 -minsiz
1f90: 65 20 30 20 2d 70 61 64 20 30 0a 23 20 20 20 20  e 0 -pad 0.#    
1fa0: 20 7d 0a 0a 20 20 20 20 73 65 74 20 6e 65 65 64   }..    set need
1fb0: 73 77 65 69 67 68 74 78 20 30 0a 20 20 20 20 73  sweightx 0.    s
1fc0: 65 74 20 6e 65 65 64 73 77 65 69 67 68 74 79 20  et needsweighty 
1fd0: 30 0a 20 20 20 20 0a 20 20 20 20 23 20 64 6f 69  0.    .    # doi
1fe0: 6e 67 20 66 69 72 73 74 20 70 61 73 73 2c 20 68  ng first pass, h
1ff0: 6f 72 69 7a 6f 6e 74 61 6c 20 77 65 69 67 68 74  orizontal weight
2000: 73 20 6f 6e 6c 79 20 61 70 70 6c 69 65 64 20 66  s only applied f
2010: 6f 72 20 63 6f 6c 75 6d 6e 73 70 61 6e 20 31 0a  or columnspan 1.
2020: 20 20 20 20 73 65 74 20 6d 61 78 63 6f 6c 75 6d      set maxcolum
2030: 6e 73 70 61 6e 20 30 0a 20 20 20 20 73 65 74 20  nspan 0.    set 
2040: 63 75 72 72 65 6e 74 63 6f 6c 20 2d 31 0a 20 20  currentcol -1.  
2050: 20 20 73 65 74 20 63 75 72 72 65 6e 74 72 6f 77    set currentrow
2060: 20 30 0a 0a 20 20 20 20 66 6f 72 65 61 63 68 20   0..    foreach 
2070: 69 20 5b 77 69 6e 66 6f 20 63 68 69 6c 64 72 65  i [winfo childre
2080: 6e 20 24 66 5d 20 7b 0a 09 69 66 20 7b 20 5b 6c  n $f] {..if { [l
2090: 73 65 61 72 63 68 20 24 44 69 73 63 61 72 64 43  search $DiscardC
20a0: 6c 61 73 73 65 73 20 5b 77 69 6e 66 6f 20 63 6c  lasses [winfo cl
20b0: 61 73 73 20 24 69 5d 5d 20 21 3d 20 2d 31 20 7d  ass $i]] != -1 }
20c0: 20 7b 0a 09 20 20 20 20 63 6f 6e 74 69 6e 75 65   {..    continue
20d0: 0a 09 7d 0a 09 69 66 20 7b 20 5b 72 65 67 65 78  ..}..if { [regex
20e0: 70 20 24 44 69 73 63 61 72 64 57 69 64 67 65 74  p $DiscardWidget
20f0: 73 20 24 69 5d 20 7d 20 7b 20 63 6f 6e 74 69 6e  s $i] } { contin
2100: 75 65 20 7d 0a 09 69 66 20 7b 20 21 5b 69 6e 66  ue }..if { ![inf
2110: 6f 20 65 78 69 73 74 73 20 64 61 74 61 28 24 69  o exists data($i
2120: 29 5d 20 7d 20 7b 0a 09 20 20 20 20 69 66 20 7b  )] } {..    if {
2130: 20 5b 77 69 6e 66 6f 20 74 6f 70 6c 65 76 65 6c   [winfo toplevel
2140: 20 24 69 5d 20 6e 65 20 5b 77 69 6e 66 6f 20 74   $i] ne [winfo t
2150: 6f 70 6c 65 76 65 6c 20 24 66 5d 20 7d 20 7b 20  oplevel $f] } { 
2160: 63 6f 6e 74 69 6e 75 65 20 7d 0a 09 20 20 20 20  continue }..    
2170: 65 72 72 6f 72 20 22 65 72 72 6f 72 3a 20 62 65  error "error: be
2180: 66 6f 72 65 20 72 75 6e 6e 69 6e 67 20 73 75 70  fore running sup
2190: 65 72 67 72 69 64 3a 3a 67 6f 20 69 74 20 69 73  ergrid::go it is
21a0: 20 6e 65 63 65 73 73 61 72 79 20 74 6f 20 75 73   necessary to us
21b0: 65 20 2d 67 72 69 64 20 69 6e 20 77 69 64 67 65  e -grid in widge
21c0: 74 20 24 69 22 0a 09 7d 0a 09 69 66 20 7b 20 24  t $i"..}..if { $
21d0: 64 61 74 61 28 24 69 29 20 3d 3d 20 22 6e 6f 22  data($i) == "no"
21e0: 20 7d 20 7b 20 63 6f 6e 74 69 6e 75 65 20 7d 0a   } { continue }.
21f0: 0a 09 73 65 74 20 6e 65 65 64 73 77 65 69 67 68  ..set needsweigh
2200: 74 78 4c 20 30 3b 20 73 65 74 20 6e 65 65 64 73  txL 0; set needs
2210: 77 65 69 67 68 74 79 4c 20 30 0a 09 69 66 20 7b  weightyL 0..if {
2220: 20 5b 6c 73 65 61 72 63 68 20 24 53 75 62 47 72   [lsearch $SubGr
2230: 69 64 43 6c 61 73 73 65 73 20 5b 77 69 6e 66 6f  idClasses [winfo
2240: 20 63 6c 61 73 73 20 24 69 5d 5d 20 21 3d 20 2d   class $i]] != -
2250: 31 20 7d 20 7b 0a 09 20 20 20 20 69 66 20 7b 20  1 } {..    if { 
2260: 5b 63 61 74 63 68 20 7b 0a 09 09 66 6f 72 65 61  [catch {...forea
2270: 63 68 20 22 6e 65 65 64 73 77 65 69 67 68 74 78  ch "needsweightx
2280: 4c 20 6e 65 65 64 73 77 65 69 67 68 74 79 4c 22  L needsweightyL"
2290: 20 5b 67 6f 20 24 69 20 31 5d 20 62 72 65 61 6b   [go $i 1] break
22a0: 0a 09 20 20 20 20 7d 5d 20 7d 20 7b 0a 09 09 73  ..    }] } {...s
22b0: 65 74 20 6e 65 65 64 73 77 65 69 67 68 74 78 4c  et needsweightxL
22c0: 20 31 0a 09 09 73 65 74 20 6e 65 65 64 73 77 65   1...set needswe
22d0: 69 67 68 74 79 4c 20 31 0a 09 20 20 20 20 7d 0a  ightyL 1..    }.
22e0: 09 7d 0a 09 73 65 74 20 63 6f 6c 20 2d 31 0a 09  .}..set col -1..
22f0: 73 65 74 20 63 6f 6c 75 6d 6e 73 70 61 6e 20 31  set columnspan 1
2300: 0a 09 73 65 74 20 73 74 69 63 6b 79 20 22 22 0a  ..set sticky "".
2310: 09 73 65 74 20 70 61 64 78 20 30 0a 09 73 65 74  .set padx 0..set
2320: 20 70 61 64 79 20 30 0a 09 73 65 74 20 75 6e 69   pady 0..set uni
2330: 66 6f 72 6d 63 20 22 22 0a 09 73 65 74 20 75 6e  formc ""..set un
2340: 69 66 6f 72 6d 72 20 22 22 0a 09 66 6f 72 65 61  iformr ""..forea
2350: 63 68 20 69 74 65 6d 20 24 64 61 74 61 28 24 69  ch item $data($i
2360: 29 20 7b 0a 09 20 20 20 20 69 66 20 7b 20 5b 73  ) {..    if { [s
2370: 74 72 69 6e 67 20 69 73 20 69 6e 74 65 67 65 72  tring is integer
2380: 20 2d 73 74 72 69 63 74 20 24 69 74 65 6d 5d 20   -strict $item] 
2390: 7d 20 7b 0a 09 09 69 66 20 7b 20 24 63 6f 6c 20  } {...if { $col 
23a0: 3d 3d 20 2d 31 20 7d 20 7b 0a 09 09 20 20 20 20  == -1 } {...    
23b0: 73 65 74 20 63 6f 6c 20 24 69 74 65 6d 0a 09 09  set col $item...
23c0: 7d 20 65 6c 73 65 20 7b 20 0a 09 09 20 20 20 20  } else { ...    
23d0: 73 65 74 20 63 6f 6c 75 6d 6e 73 70 61 6e 20 24  set columnspan $
23e0: 69 74 65 6d 0a 09 09 7d 0a 09 20 20 20 20 7d 20  item...}..    } 
23f0: 65 6c 73 65 69 66 20 7b 20 5b 73 74 72 69 6e 67  elseif { [string
2400: 20 6d 61 74 63 68 20 70 78 2a 20 24 69 74 65 6d   match px* $item
2410: 5d 20 7d 20 7b 0a 09 09 73 65 74 20 70 61 64 78  ] } {...set padx
2420: 20 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20 24   [string range $
2430: 69 74 65 6d 20 32 20 65 6e 64 5d 0a 09 20 20 20  item 2 end]..   
2440: 20 7d 20 65 6c 73 65 69 66 20 7b 20 5b 73 74 72   } elseif { [str
2450: 69 6e 67 20 6d 61 74 63 68 20 70 79 2a 20 24 69  ing match py* $i
2460: 74 65 6d 5d 20 7d 20 7b 0a 09 09 73 65 74 20 70  tem] } {...set p
2470: 61 64 79 20 5b 73 74 72 69 6e 67 20 72 61 6e 67  ady [string rang
2480: 65 20 24 69 74 65 6d 20 32 20 65 6e 64 5d 0a 09  e $item 2 end]..
2490: 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 5b      } elseif { [
24a0: 73 74 72 69 6e 67 20 6d 61 74 63 68 20 75 63 2a  string match uc*
24b0: 20 24 69 74 65 6d 5d 20 7d 20 7b 0a 09 09 73 65   $item] } {...se
24c0: 74 20 75 6e 69 66 6f 72 6d 63 20 5b 73 74 72 69  t uniformc [stri
24d0: 6e 67 20 72 61 6e 67 65 20 24 69 74 65 6d 20 32  ng range $item 2
24e0: 20 65 6e 64 5d 0a 09 20 20 20 20 7d 20 65 6c 73   end]..    } els
24f0: 65 69 66 20 7b 20 5b 73 74 72 69 6e 67 20 6d 61  eif { [string ma
2500: 74 63 68 20 75 72 2a 20 24 69 74 65 6d 5d 20 7d  tch ur* $item] }
2510: 20 7b 0a 09 09 73 65 74 20 75 6e 69 66 6f 72 6d   {...set uniform
2520: 72 20 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20  r [string range 
2530: 24 69 74 65 6d 20 32 20 65 6e 64 5d 0a 09 20 20  $item 2 end]..  
2540: 20 20 7d 20 65 6c 73 65 20 7b 20 73 65 74 20 73    } else { set s
2550: 74 69 63 6b 79 20 24 69 74 65 6d 20 7d 0a 09 7d  ticky $item }..}
2560: 0a 09 69 66 20 7b 20 24 63 6f 6c 20 3d 3d 20 2d  ..if { $col == -
2570: 31 20 7d 20 7b 0a 09 20 20 20 20 65 72 72 6f 72  1 } {..    error
2580: 20 22 65 72 72 6f 72 20 62 61 64 20 77 69 64 67   "error bad widg
2590: 65 74 20 6e 61 6d 65 20 27 24 69 27 20 66 6f 72  et name '$i' for
25a0: 20 73 75 70 65 72 67 72 69 64 22 0a 09 7d 0a 09   supergrid"..}..
25b0: 69 66 20 7b 20 24 63 6f 6c 20 3c 3d 20 24 63 75  if { $col <= $cu
25c0: 72 72 65 6e 74 63 6f 6c 20 7d 20 7b 20 69 6e 63  rrentcol } { inc
25d0: 72 20 63 75 72 72 65 6e 74 72 6f 77 20 7d 0a 09  r currentrow }..
25e0: 73 65 74 20 63 75 72 72 65 6e 74 63 6f 6c 20 24  set currentcol $
25f0: 63 6f 6c 0a 0a 09 69 66 20 7b 20 24 63 6f 6c 75  col...if { $colu
2600: 6d 6e 73 70 61 6e 20 3e 20 24 6d 61 78 63 6f 6c  mnspan > $maxcol
2610: 75 6d 6e 73 70 61 6e 20 7d 20 7b 20 73 65 74 20  umnspan } { set 
2620: 6d 61 78 63 6f 6c 75 6d 6e 73 70 61 6e 20 24 63  maxcolumnspan $c
2630: 6f 6c 75 6d 6e 73 70 61 6e 20 7d 0a 09 69 66 20  olumnspan }..if 
2640: 7b 20 5b 6c 73 65 61 72 63 68 20 24 48 6f 72 69  { [lsearch $Hori
2650: 7a 6f 6e 74 61 6c 43 6c 61 73 73 65 73 20 5b 77  zontalClasses [w
2660: 69 6e 66 6f 20 63 6c 61 73 73 20 24 69 5d 5d 20  info class $i]] 
2670: 21 3d 20 2d 31 20 7d 20 7b 0a 09 20 20 20 20 73  != -1 } {..    s
2680: 65 74 20 6e 65 65 64 73 77 65 69 67 68 74 78 4c  et needsweightxL
2690: 20 31 0a 09 7d 0a 09 69 66 20 7b 20 5b 6c 73 65   1..}..if { [lse
26a0: 61 72 63 68 20 24 56 65 72 74 69 63 61 6c 43 6c  arch $VerticalCl
26b0: 61 73 73 65 73 20 5b 77 69 6e 66 6f 20 63 6c 61  asses [winfo cla
26c0: 73 73 20 24 69 5d 5d 20 21 3d 20 2d 31 20 7d 20  ss $i]] != -1 } 
26d0: 7b 0a 09 20 20 20 20 73 65 74 20 6e 65 65 64 73  {..    set needs
26e0: 77 65 69 67 68 74 79 4c 20 31 0a 09 7d 0a 09 69  weightyL 1..}..i
26f0: 66 20 7b 20 5b 6c 73 65 61 72 63 68 20 24 53 63  f { [lsearch $Sc
2700: 72 6f 6c 6c 43 6c 61 73 73 65 73 20 5b 77 69 6e  rollClasses [win
2710: 66 6f 20 63 6c 61 73 73 20 24 69 5d 5d 20 21 3d  fo class $i]] !=
2720: 20 2d 31 20 7d 20 7b 0a 09 20 20 20 20 73 77 69   -1 } {..    swi
2730: 74 63 68 20 5b 24 69 20 63 67 65 74 20 2d 6f 72  tch [$i cget -or
2740: 69 65 6e 74 5d 20 7b 0a 09 09 68 6f 72 69 7a 6f  ient] {...horizo
2750: 6e 74 61 6c 20 7b 20 73 65 74 20 6e 65 65 64 73  ntal { set needs
2760: 77 65 69 67 68 74 78 4c 20 31 20 7d 0a 09 09 76  weightxL 1 }...v
2770: 65 72 74 69 63 61 6c 20 7b 20 73 65 74 20 6e 65  ertical { set ne
2780: 65 64 73 77 65 69 67 68 74 79 4c 20 31 20 7d 0a  edsweightyL 1 }.
2790: 09 20 20 20 20 7d 0a 09 7d 0a 0a 09 73 65 74 20  .    }..}...set 
27a0: 72 73 74 69 63 6b 79 20 22 22 0a 09 66 6f 72 65  rsticky ""..fore
27b0: 61 63 68 20 6a 20 22 65 20 77 20 6e 20 73 22 20  ach j "e w n s" 
27c0: 7b 0a 09 20 20 20 20 73 65 74 20 63 28 24 6a 29  {..    set c($j)
27d0: 20 5b 6c 6c 65 6e 67 74 68 20 5b 72 65 67 65 78   [llength [regex
27e0: 70 20 2d 69 6e 6c 69 6e 65 20 2d 61 6c 6c 20 24  p -inline -all $
27f0: 6a 20 24 73 74 69 63 6b 79 5d 5d 0a 09 7d 0a 09  j $sticky]]..}..
2800: 73 77 69 74 63 68 20 24 63 28 77 29 20 7b 0a 09  switch $c(w) {..
2810: 20 20 20 20 32 20 7b 0a 09 09 73 77 69 74 63 68      2 {...switch
2820: 20 24 63 28 65 29 20 7b 0a 09 09 20 20 20 20 30   $c(e) {...    0
2830: 20 2d 20 32 20 7b 0a 09 09 20 20 20 20 20 20 20   - 2 {...       
2840: 20 65 72 72 6f 72 20 22 69 6e 76 61 6c 69 64 20   error "invalid 
2850: 73 74 69 63 6b 79 20 27 24 73 74 69 63 6b 79 22  sticky '$sticky"
2860: 0a 09 09 20 20 20 20 7d 0a 09 09 7d 0a 09 09 73  ...    }...}...s
2870: 65 74 20 6e 65 65 64 73 77 65 69 67 68 74 78 4c  et needsweightxL
2880: 20 31 0a 09 09 61 70 70 65 6e 64 20 72 73 74 69   1...append rsti
2890: 63 6b 79 20 77 0a 09 20 20 20 20 7d 0a 09 20 20  cky w..    }..  
28a0: 20 20 31 20 7b 0a 09 09 73 77 69 74 63 68 20 24    1 {...switch $
28b0: 63 28 65 29 20 7b 0a 09 09 20 20 20 20 32 20 7b  c(e) {...    2 {
28c0: 20 73 65 74 20 6e 65 65 64 73 77 65 69 67 68 74   set needsweight
28d0: 78 4c 20 31 20 3b 20 61 70 70 65 6e 64 20 72 73  xL 1 ; append rs
28e0: 74 69 63 6b 79 20 65 20 7d 0a 09 09 20 20 20 20  ticky e }...    
28f0: 31 20 7b 20 73 65 74 20 6e 65 65 64 73 77 65 69  1 { set needswei
2900: 67 68 74 78 4c 20 31 20 3b 20 61 70 70 65 6e 64  ghtxL 1 ; append
2910: 20 72 73 74 69 63 6b 79 20 77 65 20 7d 0a 09 09   rsticky we }...
2920: 20 20 20 20 30 20 7b 20 73 65 74 20 6e 65 65 64      0 { set need
2930: 73 77 65 69 67 68 74 78 4c 20 30 20 3b 20 61 70  sweightxL 0 ; ap
2940: 70 65 6e 64 20 72 73 74 69 63 6b 79 20 77 20 7d  pend rsticky w }
2950: 0a 09 09 7d 0a 09 20 20 20 20 7d 0a 09 20 20 20  ...}..    }..   
2960: 20 30 20 7b 0a 09 09 73 77 69 74 63 68 20 24 63   0 {...switch $c
2970: 28 65 29 20 7b 0a 09 09 20 20 20 20 32 20 7b 20  (e) {...    2 { 
2980: 65 72 72 6f 72 20 22 69 6e 76 61 6c 69 64 20 73  error "invalid s
2990: 74 69 63 6b 79 20 27 24 73 74 69 63 6b 79 22 20  ticky '$sticky" 
29a0: 7d 0a 09 09 20 20 20 20 31 20 7b 20 73 65 74 20  }...    1 { set 
29b0: 6e 65 65 64 73 77 65 69 67 68 74 78 4c 20 30 20  needsweightxL 0 
29c0: 3b 20 61 70 70 65 6e 64 20 72 73 74 69 63 6b 79  ; append rsticky
29d0: 20 65 20 7d 0a 09 09 20 20 20 20 30 20 7b 20 69   e }...    0 { i
29e0: 66 20 7b 20 24 6e 65 65 64 73 77 65 69 67 68 74  f { $needsweight
29f0: 78 4c 20 7d 20 7b 20 61 70 70 65 6e 64 20 72 73  xL } { append rs
2a00: 74 69 63 6b 79 20 65 77 20 7d 20 7d 0a 09 09 7d  ticky ew } }...}
2a10: 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 73 77 69 74  ..    }..}..swit
2a20: 63 68 20 24 63 28 6e 29 20 7b 0a 09 20 20 20 20  ch $c(n) {..    
2a30: 32 20 7b 0a 09 09 73 77 69 74 63 68 20 24 63 28  2 {...switch $c(
2a40: 73 29 20 7b 0a 09 09 20 20 20 20 30 20 2d 20 32  s) {...    0 - 2
2a50: 20 7b 0a 09 09 20 20 20 20 20 20 20 20 65 72 72   {...        err
2a60: 6f 72 20 22 69 6e 76 61 6c 69 64 20 73 74 69 63  or "invalid stic
2a70: 6b 79 20 27 24 73 74 69 63 6b 79 22 0a 09 09 20  ky '$sticky"... 
2a80: 20 20 20 7d 0a 09 09 7d 0a 09 09 73 65 74 20 6e     }...}...set n
2a90: 65 65 64 73 77 65 69 67 68 74 79 4c 20 31 0a 09  eedsweightyL 1..
2aa0: 09 61 70 70 65 6e 64 20 72 73 74 69 63 6b 79 20  .append rsticky 
2ab0: 6e 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 31 20  n..    }..    1 
2ac0: 7b 0a 09 09 73 77 69 74 63 68 20 24 63 28 73 29  {...switch $c(s)
2ad0: 20 7b 0a 09 09 20 20 20 20 32 20 7b 20 73 65 74   {...    2 { set
2ae0: 20 6e 65 65 64 73 77 65 69 67 68 74 79 4c 20 31   needsweightyL 1
2af0: 20 3b 20 61 70 70 65 6e 64 20 72 73 74 69 63 6b   ; append rstick
2b00: 79 20 73 20 7d 0a 09 09 20 20 20 20 31 20 7b 20  y s }...    1 { 
2b10: 73 65 74 20 6e 65 65 64 73 77 65 69 67 68 74 79  set needsweighty
2b20: 4c 20 31 20 3b 20 61 70 70 65 6e 64 20 72 73 74  L 1 ; append rst
2b30: 69 63 6b 79 20 6e 73 20 7d 0a 09 09 20 20 20 20  icky ns }...    
2b40: 30 20 7b 20 73 65 74 20 6e 65 65 64 73 77 65 69  0 { set needswei
2b50: 67 68 74 79 4c 20 30 20 3b 20 61 70 70 65 6e 64  ghtyL 0 ; append
2b60: 20 72 73 74 69 63 6b 79 20 6e 20 7d 0a 09 09 7d   rsticky n }...}
2b70: 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 30 20 7b  ..    }..    0 {
2b80: 0a 09 09 73 77 69 74 63 68 20 24 63 28 73 29 20  ...switch $c(s) 
2b90: 7b 0a 09 09 20 20 20 20 32 20 7b 20 65 72 72 6f  {...    2 { erro
2ba0: 72 20 22 69 6e 76 61 6c 69 64 20 73 74 69 63 6b  r "invalid stick
2bb0: 79 20 27 24 73 74 69 63 6b 79 22 20 7d 0a 09 09  y '$sticky" }...
2bc0: 20 20 20 20 31 20 7b 20 73 65 74 20 6e 65 65 64      1 { set need
2bd0: 73 77 65 69 67 68 74 79 4c 20 30 20 3b 20 61 70  sweightyL 0 ; ap
2be0: 70 65 6e 64 20 72 73 74 69 63 6b 79 20 73 20 7d  pend rsticky s }
2bf0: 0a 09 09 20 20 20 20 30 20 7b 20 69 66 20 7b 20  ...    0 { if { 
2c00: 24 6e 65 65 64 73 77 65 69 67 68 74 79 4c 20 7d  $needsweightyL }
2c10: 20 7b 20 61 70 70 65 6e 64 20 72 73 74 69 63 6b   { append rstick
2c20: 79 20 6e 73 20 7d 20 7d 0a 09 09 7d 0a 09 20 20  y ns } }...}..  
2c30: 20 20 7d 0a 09 7d 0a 09 67 72 69 64 20 24 69 20    }..}..grid $i 
2c40: 2d 72 6f 77 20 24 63 75 72 72 65 6e 74 72 6f 77  -row $currentrow
2c50: 20 2d 63 6f 6c 75 6d 6e 20 24 63 75 72 72 65 6e   -column $curren
2c60: 74 63 6f 6c 20 2d 63 6f 6c 75 6d 6e 73 70 61 6e  tcol -columnspan
2c70: 20 24 63 6f 6c 75 6d 6e 73 70 61 6e 20 2d 70 61   $columnspan -pa
2c80: 64 78 20 24 70 61 64 78 20 5c 0a 09 20 20 20 20  dx $padx \..    
2c90: 2d 70 61 64 79 20 24 70 61 64 79 20 2d 73 74 69  -pady $pady -sti
2ca0: 63 6b 79 20 24 72 73 74 69 63 6b 79 0a 0a 09 69  cky $rsticky...i
2cb0: 66 20 7b 20 24 63 6f 6c 75 6d 6e 73 70 61 6e 20  f { $columnspan 
2cc0: 3d 3d 20 31 20 26 26 20 24 6e 65 65 64 73 77 65  == 1 && $needswe
2cd0: 69 67 68 74 78 4c 20 7d 20 7b 0a 09 20 20 20 20  ightxL } {..    
2ce0: 67 72 69 64 20 63 6f 6c 75 6d 6e 63 6f 6e 66 69  grid columnconfi
2cf0: 67 75 72 65 20 24 66 20 24 63 75 72 72 65 6e 74  gure $f $current
2d00: 63 6f 6c 20 2d 77 65 69 67 68 74 20 31 0a 09 7d  col -weight 1..}
2d10: 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 67 72 69   else {..    gri
2d20: 64 20 63 6f 6c 75 6d 6e 63 6f 6e 66 69 67 75 72  d columnconfigur
2d30: 65 20 24 66 20 24 63 75 72 72 65 6e 74 63 6f 6c  e $f $currentcol
2d40: 20 2d 77 65 69 67 68 74 20 30 0a 09 7d 0a 09 69   -weight 0..}..i
2d50: 66 20 7b 20 24 75 6e 69 66 6f 72 6d 63 20 21 3d  f { $uniformc !=
2d60: 20 22 22 20 7d 20 7b 20 67 72 69 64 20 63 6f 6c   "" } { grid col
2d70: 75 6d 6e 63 6f 6e 66 69 67 75 72 65 20 24 66 20  umnconfigure $f 
2d80: 24 63 75 72 72 65 6e 74 63 6f 6c 20 2d 75 6e 69  $currentcol -uni
2d90: 66 6f 72 6d 20 24 75 6e 69 66 6f 72 6d 63 20 7d  form $uniformc }
2da0: 0a 0a 09 69 66 20 7b 20 24 6e 65 65 64 73 77 65  ...if { $needswe
2db0: 69 67 68 74 79 4c 20 7d 20 7b 0a 09 20 20 20 20  ightyL } {..    
2dc0: 67 72 69 64 20 72 6f 77 63 6f 6e 66 69 67 75 72  grid rowconfigur
2dd0: 65 20 24 66 20 24 63 75 72 72 65 6e 74 72 6f 77  e $f $currentrow
2de0: 20 20 2d 77 65 69 67 68 74 20 31 0a 09 7d 20 65    -weight 1..} e
2df0: 6c 73 65 20 7b 0a 09 20 20 20 20 67 72 69 64 20  lse {..    grid 
2e00: 72 6f 77 63 6f 6e 66 69 67 75 72 65 20 24 66 20  rowconfigure $f 
2e10: 24 63 75 72 72 65 6e 74 72 6f 77 20 20 2d 77 65  $currentrow  -we
2e20: 69 67 68 74 20 30 0a 09 7d 0a 09 69 66 20 7b 20  ight 0..}..if { 
2e30: 24 75 6e 69 66 6f 72 6d 72 20 21 3d 20 22 22 20  $uniformr != "" 
2e40: 7d 20 7b 20 67 72 69 64 20 72 6f 77 63 6f 6e 66  } { grid rowconf
2e50: 69 67 75 72 65 20 24 66 20 24 63 75 72 72 65 6e  igure $f $curren
2e60: 74 72 6f 77 20 2d 75 6e 69 66 6f 72 6d 20 24 75  trow -uniform $u
2e70: 6e 69 66 6f 72 6d 72 20 7d 0a 0a 09 69 66 20 7b  niformr }...if {
2e80: 20 24 6e 65 65 64 73 77 65 69 67 68 74 78 4c 20   $needsweightxL 
2e90: 7d 20 7b 73 65 74 20 6e 65 65 64 73 77 65 69 67  } {set needsweig
2ea0: 68 74 78 20 31 7d 0a 09 69 66 20 7b 20 24 6e 65  htx 1}..if { $ne
2eb0: 65 64 73 77 65 69 67 68 74 79 4c 20 7d 20 7b 20  edsweightyL } { 
2ec0: 73 65 74 20 6e 65 65 64 73 77 65 69 67 68 74 79  set needsweighty
2ed0: 20 31 7d 0a 0a 20 20 20 20 7d 0a 20 20 20 20 23   1}..    }.    #
2ee0: 20 64 6f 69 6e 67 20 73 65 63 6f 6e 64 20 70 61   doing second pa
2ef0: 73 73 2c 20 68 6f 72 69 7a 6f 6e 74 61 6c 20 77  ss, horizontal w
2f00: 65 69 67 68 74 73 20 61 70 70 6c 69 65 64 20 66  eights applied f
2f10: 6f 72 20 63 6f 6c 75 6d 6e 73 70 61 6e 20 3e 31  or columnspan >1
2f20: 0a 20 20 20 20 23 20 6e 65 65 64 20 74 6f 20 62  .    # need to b
2f30: 65 20 64 6f 6e 65 20 61 73 20 6d 61 6e 79 20 74  e done as many t
2f40: 69 6d 65 73 20 61 73 20 63 6f 6c 75 6d 6e 73 70  imes as columnsp
2f50: 61 6e 20 74 6f 20 66 69 6e 64 20 74 68 65 20 62  an to find the b
2f60: 65 73 74 20 72 65 73 69 7a 69 6e 67 0a 20 20 20  est resizing.   
2f70: 20 66 6f 72 20 7b 20 73 65 74 20 73 70 61 6e 20   for { set span 
2f80: 32 20 7d 20 7b 20 24 73 70 61 6e 20 3c 3d 20 24  2 } { $span <= $
2f90: 6d 61 78 63 6f 6c 75 6d 6e 73 70 61 6e 7d 20 7b  maxcolumnspan} {
2fa0: 20 69 6e 63 72 20 73 70 61 6e 20 7d 20 7b 0a 09   incr span } {..
2fb0: 73 65 74 20 63 75 72 72 65 6e 74 63 6f 6c 20 2d  set currentcol -
2fc0: 31 0a 09 73 65 74 20 63 75 72 72 65 6e 74 72 6f  1..set currentro
2fd0: 77 20 30 0a 09 66 6f 72 65 61 63 68 20 69 20 5b  w 0..foreach i [
2fe0: 77 69 6e 66 6f 20 63 68 69 6c 64 72 65 6e 20 24  winfo children $
2ff0: 66 5d 20 7b 0a 09 20 20 20 20 69 66 20 7b 20 5b  f] {..    if { [
3000: 6c 73 65 61 72 63 68 20 24 44 69 73 63 61 72 64  lsearch $Discard
3010: 43 6c 61 73 73 65 73 20 5b 77 69 6e 66 6f 20 63  Classes [winfo c
3020: 6c 61 73 73 20 24 69 5d 5d 20 21 3d 20 2d 31 20  lass $i]] != -1 
3030: 7d 20 7b 0a 09 09 63 6f 6e 74 69 6e 75 65 0a 09  } {...continue..
3040: 20 20 20 20 7d 0a 09 20 20 20 20 69 66 20 7b 20      }..    if { 
3050: 5b 72 65 67 65 78 70 20 24 44 69 73 63 61 72 64  [regexp $Discard
3060: 57 69 64 67 65 74 73 20 24 69 5d 20 7d 20 7b 20  Widgets $i] } { 
3070: 63 6f 6e 74 69 6e 75 65 20 7d 0a 09 20 20 20 20  continue }..    
3080: 73 65 74 20 6e 65 65 64 73 77 65 69 67 68 74 78  set needsweightx
3090: 4c 20 30 3b 20 73 65 74 20 6e 65 65 64 73 77 65  L 0; set needswe
30a0: 69 67 68 74 79 4c 20 30 0a 09 20 20 20 20 69 66  ightyL 0..    if
30b0: 20 7b 20 5b 6c 73 65 61 72 63 68 20 24 53 75 62   { [lsearch $Sub
30c0: 47 72 69 64 43 6c 61 73 73 65 73 20 5b 77 69 6e  GridClasses [win
30d0: 66 6f 20 63 6c 61 73 73 20 24 69 5d 5d 20 21 3d  fo class $i]] !=
30e0: 20 2d 31 20 7d 20 7b 0a 09 09 69 66 20 7b 20 5b   -1 } {...if { [
30f0: 63 61 74 63 68 20 7b 0a 09 09 20 20 20 20 66 6f  catch {...    fo
3100: 72 65 61 63 68 20 22 6e 65 65 64 73 77 65 69 67  reach "needsweig
3110: 68 74 78 4c 20 6e 65 65 64 73 77 65 69 67 68 74  htxL needsweight
3120: 79 4c 22 20 5b 67 6f 20 24 69 20 31 5d 20 62 72  yL" [go $i 1] br
3130: 65 61 6b 0a 09 09 7d 5d 20 7d 20 7b 0a 09 09 20  eak...}] } {... 
3140: 20 20 20 73 65 74 20 6e 65 65 64 73 77 65 69 67     set needsweig
3150: 68 74 78 4c 20 31 0a 09 09 20 20 20 20 73 65 74  htxL 1...    set
3160: 20 6e 65 65 64 73 77 65 69 67 68 74 79 4c 20 31   needsweightyL 1
3170: 0a 09 09 7d 0a 09 20 20 20 20 7d 0a 0a 09 20 20  ...}..    }...  
3180: 20 20 73 65 74 20 63 6f 6c 20 2d 31 0a 09 20 20    set col -1..  
3190: 20 20 73 65 74 20 63 6f 6c 75 6d 6e 73 70 61 6e    set columnspan
31a0: 20 31 0a 09 20 20 20 20 73 65 74 20 73 74 69 63   1..    set stic
31b0: 6b 79 20 22 22 0a 09 20 20 20 20 73 65 74 20 70  ky ""..    set p
31c0: 61 64 78 20 30 0a 09 20 20 20 20 73 65 74 20 70  adx 0..    set p
31d0: 61 64 79 20 30 0a 09 20 20 20 20 73 65 74 20 75  ady 0..    set u
31e0: 6e 69 66 6f 72 6d 63 20 22 22 0a 09 20 20 20 20  niformc ""..    
31f0: 73 65 74 20 75 6e 69 66 6f 72 6d 72 20 22 22 0a  set uniformr "".
3200: 09 20 20 20 20 66 6f 72 65 61 63 68 20 69 74 65  .    foreach ite
3210: 6d 20 24 64 61 74 61 28 24 69 29 20 7b 0a 09 09  m $data($i) {...
3220: 69 66 20 7b 20 5b 73 74 72 69 6e 67 20 69 73 20  if { [string is 
3230: 69 6e 74 65 67 65 72 20 2d 73 74 72 69 63 74 20  integer -strict 
3240: 24 69 74 65 6d 5d 20 7d 20 7b 0a 09 09 20 20 20  $item] } {...   
3250: 20 69 66 20 7b 20 24 63 6f 6c 20 3d 3d 20 2d 31   if { $col == -1
3260: 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 20 73   } {...        s
3270: 65 74 20 63 6f 6c 20 24 69 74 65 6d 0a 09 09 20  et col $item... 
3280: 20 20 20 7d 20 65 6c 73 65 20 7b 20 0a 09 09 20     } else { ... 
3290: 20 20 20 20 20 20 20 73 65 74 20 63 6f 6c 75 6d         set colum
32a0: 6e 73 70 61 6e 20 24 69 74 65 6d 0a 09 09 20 20  nspan $item...  
32b0: 20 20 7d 0a 09 09 7d 20 65 6c 73 65 69 66 20 7b    }...} elseif {
32c0: 20 5b 73 74 72 69 6e 67 20 6d 61 74 63 68 20 70   [string match p
32d0: 78 2a 20 24 69 74 65 6d 5d 20 7d 20 7b 0a 09 09  x* $item] } {...
32e0: 20 20 20 20 73 65 74 20 70 61 64 78 20 5b 73 74      set padx [st
32f0: 72 69 6e 67 20 72 61 6e 67 65 20 24 69 20 32 20  ring range $i 2 
3300: 65 6e 64 5d 0a 09 09 7d 20 65 6c 73 65 69 66 20  end]...} elseif 
3310: 7b 20 5b 73 74 72 69 6e 67 20 6d 61 74 63 68 20  { [string match 
3320: 70 79 2a 20 24 69 74 65 6d 5d 20 7d 20 7b 0a 09  py* $item] } {..
3330: 09 20 20 20 20 73 65 74 20 70 61 64 79 20 5b 73  .    set pady [s
3340: 74 72 69 6e 67 20 72 61 6e 67 65 20 24 69 20 32  tring range $i 2
3350: 20 65 6e 64 5d 0a 09 09 7d 20 65 6c 73 65 69 66   end]...} elseif
3360: 20 7b 20 5b 73 74 72 69 6e 67 20 6d 61 74 63 68   { [string match
3370: 20 75 63 2a 20 24 69 74 65 6d 5d 20 7d 20 7b 0a   uc* $item] } {.
3380: 09 09 20 20 20 20 73 65 74 20 75 6e 69 66 6f 72  ..    set unifor
3390: 6d 63 20 5b 73 74 72 69 6e 67 20 72 61 6e 67 65  mc [string range
33a0: 20 24 69 20 32 20 65 6e 64 5d 0a 09 09 7d 20 65   $i 2 end]...} e
33b0: 6c 73 65 69 66 20 7b 20 5b 73 74 72 69 6e 67 20  lseif { [string 
33c0: 6d 61 74 63 68 20 75 72 2a 20 24 69 74 65 6d 5d  match ur* $item]
33d0: 20 7d 20 7b 0a 09 09 20 20 20 20 73 65 74 20 75   } {...    set u
33e0: 6e 69 66 6f 72 6d 72 20 5b 73 74 72 69 6e 67 20  niformr [string 
33f0: 72 61 6e 67 65 20 24 69 20 32 20 65 6e 64 5d 0a  range $i 2 end].
3400: 09 09 7d 20 65 6c 73 65 20 7b 20 73 65 74 20 73  ..} else { set s
3410: 74 69 63 6b 79 20 24 69 74 65 6d 20 7d 0a 09 20  ticky $item }.. 
3420: 20 20 20 7d 0a 09 20 20 20 20 69 66 20 7b 20 24     }..    if { $
3430: 63 6f 6c 20 3c 3d 20 24 63 75 72 72 65 6e 74 63  col <= $currentc
3440: 6f 6c 20 7d 20 7b 20 69 6e 63 72 20 63 75 72 72  ol } { incr curr
3450: 65 6e 74 72 6f 77 20 7d 0a 09 20 20 20 20 73 65  entrow }..    se
3460: 74 20 63 75 72 72 65 6e 74 63 6f 6c 20 24 63 6f  t currentcol $co
3470: 6c 0a 0a 09 20 20 20 20 69 66 20 7b 20 5b 6c 73  l...    if { [ls
3480: 65 61 72 63 68 20 24 48 6f 72 69 7a 6f 6e 74 61  earch $Horizonta
3490: 6c 43 6c 61 73 73 65 73 20 5b 77 69 6e 66 6f 20  lClasses [winfo 
34a0: 63 6c 61 73 73 20 24 69 5d 5d 20 21 3d 20 2d 31  class $i]] != -1
34b0: 20 7d 20 7b 0a 09 09 73 65 74 20 6e 65 65 64 73   } {...set needs
34c0: 77 65 69 67 68 74 78 4c 20 31 0a 09 20 20 20 20  weightxL 1..    
34d0: 7d 0a 09 20 20 20 20 69 66 20 7b 20 5b 6c 73 65  }..    if { [lse
34e0: 61 72 63 68 20 24 56 65 72 74 69 63 61 6c 43 6c  arch $VerticalCl
34f0: 61 73 73 65 73 20 5b 77 69 6e 66 6f 20 63 6c 61  asses [winfo cla
3500: 73 73 20 24 69 5d 5d 20 21 3d 20 2d 31 20 7d 20  ss $i]] != -1 } 
3510: 7b 0a 09 09 73 65 74 20 6e 65 65 64 73 77 65 69  {...set needswei
3520: 67 68 74 79 4c 20 31 0a 09 20 20 20 20 7d 0a 09  ghtyL 1..    }..
3530: 20 20 20 20 69 66 20 7b 20 5b 6c 73 65 61 72 63      if { [lsearc
3540: 68 20 24 53 63 72 6f 6c 6c 43 6c 61 73 73 65 73  h $ScrollClasses
3550: 20 5b 77 69 6e 66 6f 20 63 6c 61 73 73 20 24 69   [winfo class $i
3560: 5d 5d 20 21 3d 20 2d 31 20 7d 20 7b 0a 09 09 73  ]] != -1 } {...s
3570: 77 69 74 63 68 20 5b 24 69 20 63 67 65 74 20 2d  witch [$i cget -
3580: 6f 72 69 65 6e 74 5d 20 7b 0a 09 09 20 20 20 20  orient] {...    
3590: 68 6f 72 69 7a 6f 6e 74 61 6c 20 7b 20 73 65 74  horizontal { set
35a0: 20 6e 65 65 64 73 77 65 69 67 68 74 78 4c 20 31   needsweightxL 1
35b0: 20 7d 0a 09 09 20 20 20 20 76 65 72 74 69 63 61   }...    vertica
35c0: 6c 20 7b 20 73 65 74 20 6e 65 65 64 73 77 65 69  l { set needswei
35d0: 67 68 74 79 4c 20 31 20 7d 0a 09 09 7d 0a 09 20  ghtyL 1 }...}.. 
35e0: 20 20 20 7d 0a 0a 09 20 20 20 20 73 65 74 20 72     }...    set r
35f0: 73 74 69 63 6b 79 20 22 22 0a 09 20 20 20 20 66  sticky ""..    f
3600: 6f 72 65 61 63 68 20 69 20 22 65 20 77 20 6e 20  oreach i "e w n 
3610: 73 22 20 7b 0a 09 09 73 65 74 20 63 28 24 69 29  s" {...set c($i)
3620: 20 5b 6c 6c 65 6e 67 74 68 20 5b 72 65 67 65 78   [llength [regex
3630: 70 20 2d 69 6e 6c 69 6e 65 20 2d 61 6c 6c 20 24  p -inline -all $
3640: 69 20 24 73 74 69 63 6b 79 5d 5d 0a 09 20 20 20  i $sticky]]..   
3650: 20 7d 0a 09 20 20 20 20 73 77 69 74 63 68 20 24   }..    switch $
3660: 63 28 77 29 20 7b 0a 09 09 32 20 7b 0a 09 09 20  c(w) {...2 {... 
3670: 20 20 20 73 77 69 74 63 68 20 24 63 28 65 29 20     switch $c(e) 
3680: 7b 0a 09 09 20 20 20 20 20 20 20 20 30 20 2d 20  {...        0 - 
3690: 32 20 7b 0a 09 09 20 20 20 20 20 20 20 20 20 20  2 {...          
36a0: 20 20 65 72 72 6f 72 20 22 69 6e 76 61 6c 69 64    error "invalid
36b0: 20 73 74 69 63 6b 79 20 27 24 73 74 69 63 6b 79   sticky '$sticky
36c0: 22 0a 09 09 20 20 20 20 20 20 20 20 7d 0a 09 09  "...        }...
36d0: 20 20 20 20 7d 0a 09 09 20 20 20 20 73 65 74 20      }...    set 
36e0: 6e 65 65 64 73 77 65 69 67 68 74 78 4c 20 31 0a  needsweightxL 1.
36f0: 09 09 20 20 20 20 61 70 70 65 6e 64 20 72 73 74  ..    append rst
3700: 69 63 6b 79 20 77 0a 09 09 7d 0a 09 09 31 20 7b  icky w...}...1 {
3710: 0a 09 09 20 20 20 20 73 77 69 74 63 68 20 24 63  ...    switch $c
3720: 28 65 29 20 7b 0a 09 09 20 20 20 20 20 20 20 20  (e) {...        
3730: 32 20 7b 20 73 65 74 20 6e 65 65 64 73 77 65 69  2 { set needswei
3740: 67 68 74 78 4c 20 31 20 3b 20 61 70 70 65 6e 64  ghtxL 1 ; append
3750: 20 72 73 74 69 63 6b 79 20 65 20 7d 0a 09 09 20   rsticky e }... 
3760: 20 20 20 20 20 20 20 31 20 7b 20 73 65 74 20 6e         1 { set n
3770: 65 65 64 73 77 65 69 67 68 74 78 4c 20 31 20 3b  eedsweightxL 1 ;
3780: 20 61 70 70 65 6e 64 20 72 73 74 69 63 6b 79 20   append rsticky 
3790: 77 65 20 7d 0a 09 09 20 20 20 20 20 20 20 20 30  we }...        0
37a0: 20 7b 20 73 65 74 20 6e 65 65 64 73 77 65 69 67   { set needsweig
37b0: 68 74 78 4c 20 30 20 3b 20 61 70 70 65 6e 64 20  htxL 0 ; append 
37c0: 72 73 74 69 63 6b 79 20 77 20 7d 0a 09 09 20 20  rsticky w }...  
37d0: 20 20 7d 0a 09 09 7d 0a 09 09 30 20 7b 0a 09 09    }...}...0 {...
37e0: 20 20 20 20 73 77 69 74 63 68 20 24 63 28 65 29      switch $c(e)
37f0: 20 7b 0a 09 09 20 20 20 20 20 20 20 20 32 20 7b   {...        2 {
3800: 20 65 72 72 6f 72 20 22 69 6e 76 61 6c 69 64 20   error "invalid 
3810: 73 74 69 63 6b 79 20 27 24 73 74 69 63 6b 79 22  sticky '$sticky"
3820: 20 7d 0a 09 09 20 20 20 20 20 20 20 20 31 20 7b   }...        1 {
3830: 20 73 65 74 20 6e 65 65 64 73 77 65 69 67 68 74   set needsweight
3840: 78 4c 20 30 20 3b 20 61 70 70 65 6e 64 20 72 73  xL 0 ; append rs
3850: 74 69 63 6b 79 20 65 20 7d 0a 09 09 20 20 20 20  ticky e }...    
3860: 20 20 20 20 30 20 7b 20 69 66 20 7b 20 24 6e 65      0 { if { $ne
3870: 65 64 73 77 65 69 67 68 74 78 4c 20 7d 20 7b 20  edsweightxL } { 
3880: 61 70 70 65 6e 64 20 72 73 74 69 63 6b 79 20 65  append rsticky e
3890: 77 20 7d 20 7d 0a 09 09 20 20 20 20 7d 0a 09 09  w } }...    }...
38a0: 7d 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 73 77  }..    }..    sw
38b0: 69 74 63 68 20 24 63 28 6e 29 20 7b 0a 09 09 32  itch $c(n) {...2
38c0: 20 7b 0a 09 09 20 20 20 20 73 77 69 74 63 68 20   {...    switch 
38d0: 24 63 28 73 29 20 7b 0a 09 09 20 20 20 20 20 20  $c(s) {...      
38e0: 20 20 30 20 2d 20 32 20 7b 0a 09 09 20 20 20 20    0 - 2 {...    
38f0: 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 22 69          error "i
3900: 6e 76 61 6c 69 64 20 73 74 69 63 6b 79 20 27 24  nvalid sticky '$
3910: 73 74 69 63 6b 79 22 0a 09 09 20 20 20 20 20 20  sticky"...      
3920: 20 20 7d 0a 09 09 20 20 20 20 7d 0a 09 09 20 20    }...    }...  
3930: 20 20 73 65 74 20 6e 65 65 64 73 77 65 69 67 68    set needsweigh
3940: 74 79 4c 20 31 0a 09 09 20 20 20 20 61 70 70 65  tyL 1...    appe
3950: 6e 64 20 72 73 74 69 63 6b 79 20 6e 0a 09 09 7d  nd rsticky n...}
3960: 0a 09 09 31 20 7b 0a 09 09 20 20 20 20 73 77 69  ...1 {...    swi
3970: 74 63 68 20 24 63 28 73 29 20 7b 0a 09 09 20 20  tch $c(s) {...  
3980: 20 20 20 20 20 20 32 20 7b 20 73 65 74 20 6e 65        2 { set ne
3990: 65 64 73 77 65 69 67 68 74 79 4c 20 31 20 3b 20  edsweightyL 1 ; 
39a0: 61 70 70 65 6e 64 20 72 73 74 69 63 6b 79 20 73  append rsticky s
39b0: 20 7d 0a 09 09 20 20 20 20 20 20 20 20 31 20 7b   }...        1 {
39c0: 20 73 65 74 20 6e 65 65 64 73 77 65 69 67 68 74   set needsweight
39d0: 79 4c 20 31 20 3b 20 61 70 70 65 6e 64 20 72 73  yL 1 ; append rs
39e0: 74 69 63 6b 79 20 6e 73 20 7d 0a 09 09 20 20 20  ticky ns }...   
39f0: 20 20 20 20 20 30 20 7b 20 73 65 74 20 6e 65 65       0 { set nee
3a00: 64 73 77 65 69 67 68 74 79 4c 20 30 20 3b 20 61  dsweightyL 0 ; a
3a10: 70 70 65 6e 64 20 72 73 74 69 63 6b 79 20 6e 20  ppend rsticky n 
3a20: 7d 0a 09 09 20 20 20 20 7d 0a 09 09 7d 0a 09 09  }...    }...}...
3a30: 30 20 7b 0a 09 09 20 20 20 20 73 77 69 74 63 68  0 {...    switch
3a40: 20 24 63 28 73 29 20 7b 0a 09 09 20 20 20 20 20   $c(s) {...     
3a50: 20 20 20 32 20 7b 20 65 72 72 6f 72 20 22 69 6e     2 { error "in
3a60: 76 61 6c 69 64 20 73 74 69 63 6b 79 20 27 24 73  valid sticky '$s
3a70: 74 69 63 6b 79 22 20 7d 0a 09 09 20 20 20 20 20  ticky" }...     
3a80: 20 20 20 31 20 7b 20 73 65 74 20 6e 65 65 64 73     1 { set needs
3a90: 77 65 69 67 68 74 79 4c 20 30 20 3b 20 61 70 70  weightyL 0 ; app
3aa0: 65 6e 64 20 72 73 74 69 63 6b 79 20 73 20 7d 0a  end rsticky s }.
3ab0: 09 09 20 20 20 20 20 20 20 20 30 20 7b 20 69 66  ..        0 { if
3ac0: 20 7b 20 24 6e 65 65 64 73 77 65 69 67 68 74 79   { $needsweighty
3ad0: 4c 20 7d 20 7b 20 61 70 70 65 6e 64 20 72 73 74  L } { append rst
3ae0: 69 63 6b 79 20 6e 73 20 7d 20 7d 0a 09 09 20 20  icky ns } }...  
3af0: 20 20 7d 0a 09 09 7d 0a 09 20 20 20 20 7d 0a 0a    }...}..    }..
3b00: 09 20 20 20 20 69 66 20 7b 20 24 63 6f 6c 75 6d  .    if { $colum
3b10: 6e 73 70 61 6e 20 3d 3d 20 24 73 70 61 6e 20 26  nspan == $span &
3b20: 26 20 24 6e 65 65 64 73 77 65 69 67 68 74 78 4c  & $needsweightxL
3b30: 20 7d 20 7b 0a 09 09 73 65 74 20 66 6f 75 6e 64   } {...set found
3b40: 20 30 0a 09 09 66 6f 72 20 7b 20 73 65 74 20 6a   0...for { set j
3b50: 20 24 63 75 72 72 65 6e 74 63 6f 6c 20 7d 20 7b   $currentcol } {
3b60: 20 24 6a 20 3c 20 5b 65 78 70 72 20 24 63 75 72   $j < [expr $cur
3b70: 72 65 6e 74 63 6f 6c 2b 24 63 6f 6c 75 6d 6e 73  rentcol+$columns
3b80: 70 61 6e 5d 20 7d 20 7b 20 69 6e 63 72 20 6a 20  pan] } { incr j 
3b90: 7d 20 7b 0a 09 09 20 20 20 20 69 66 20 7b 20 5b  } {...    if { [
3ba0: 67 72 69 64 20 63 6f 6c 75 6d 6e 63 6f 6e 66 69  grid columnconfi
3bb0: 67 75 72 65 20 24 66 20 24 6a 20 2d 77 65 69 67  gure $f $j -weig
3bc0: 68 74 5d 20 3e 20 30 20 7d 20 7b 0a 09 09 20 20  ht] > 0 } {...  
3bd0: 20 20 20 20 20 20 73 65 74 20 66 6f 75 6e 64 20        set found 
3be0: 31 0a 09 09 20 20 20 20 20 20 20 20 62 72 65 61  1...        brea
3bf0: 6b 0a 09 09 20 20 20 20 7d 0a 09 09 7d 0a 09 09  k...    }...}...
3c00: 69 66 20 7b 20 21 24 66 6f 75 6e 64 20 7d 20 7b  if { !$found } {
3c10: 0a 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .#              
3c20: 20 20 20 20 20 20 67 72 69 64 20 63 6f 6c 75 6d        grid colum
3c30: 6e 63 6f 6e 66 69 67 75 72 65 20 24 66 20 5b 65  nconfigure $f [e
3c40: 78 70 72 20 24 63 75 72 72 65 6e 74 63 6f 6c 2b  xpr $currentcol+
3c50: 24 63 6f 6c 75 6d 6e 73 70 61 6e 2d 31 5d 20 2d  $columnspan-1] -
3c60: 77 65 69 67 68 74 20 31 0a 09 09 20 20 20 20 66  weight 1...    f
3c70: 6f 72 20 7b 20 73 65 74 20 6a 20 24 63 75 72 72  or { set j $curr
3c80: 65 6e 74 63 6f 6c 20 7d 20 7b 20 24 6a 20 3c 20  entcol } { $j < 
3c90: 5b 65 78 70 72 20 24 63 75 72 72 65 6e 74 63 6f  [expr $currentco
3ca0: 6c 2b 24 63 6f 6c 75 6d 6e 73 70 61 6e 5d 20 7d  l+$columnspan] }
3cb0: 20 7b 20 69 6e 63 72 20 6a 20 7d 20 7b 0a 09 09   { incr j } {...
3cc0: 20 20 20 20 20 20 20 20 67 72 69 64 20 63 6f 6c          grid col
3cd0: 75 6d 6e 63 6f 6e 66 69 67 75 72 65 20 24 66 20  umnconfigure $f 
3ce0: 24 6a 20 2d 77 65 69 67 68 74 20 31 0a 09 09 20  $j -weight 1... 
3cf0: 20 20 20 7d 0a 09 09 7d 0a 09 20 20 20 20 7d 0a     }...}..    }.
3d00: 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20  .}.    }.    if 
3d10: 7b 20 21 24 69 73 72 65 63 75 72 73 69 76 65 20  { !$isrecursive 
3d20: 7d 20 7b 20 63 6c 65 61 6e 64 61 74 61 20 24 66  } { cleandata $f
3d30: 20 7d 0a 20 20 20 20 69 66 20 7b 20 21 24 6e 65   }.    if { !$ne
3d40: 65 64 73 77 65 69 67 68 74 78 20 7d 20 7b 0a 09  edsweightx } {..
3d50: 67 72 69 64 20 63 6f 6c 75 6d 6e 63 6f 6e 66 69  grid columnconfi
3d60: 67 75 72 65 20 24 66 20 5b 6c 69 6e 64 65 78 20  gure $f [lindex 
3d70: 5b 67 72 69 64 20 73 69 7a 65 20 24 66 5d 20 30  [grid size $f] 0
3d80: 5d 20 2d 77 65 69 67 68 74 20 31 0a 20 20 20 20  ] -weight 1.    
3d90: 7d 0a 20 20 20 20 69 66 20 7b 20 21 24 6e 65 65  }.    if { !$nee
3da0: 64 73 77 65 69 67 68 74 79 20 7d 20 7b 0a 09 67  dsweighty } {..g
3db0: 72 69 64 20 72 6f 77 63 6f 6e 66 69 67 75 72 65  rid rowconfigure
3dc0: 20 24 66 20 5b 6c 69 6e 64 65 78 20 5b 67 72 69   $f [lindex [gri
3dd0: 64 20 73 69 7a 65 20 24 66 5d 20 31 5d 20 2d 77  d size $f] 1] -w
3de0: 65 69 67 68 74 20 31 0a 20 20 20 20 7d 0a 20 20  eight 1.    }.  
3df0: 20 20 72 65 74 75 72 6e 20 5b 6c 69 73 74 20 24    return [list $
3e00: 6e 65 65 64 73 77 65 69 67 68 74 78 20 24 6e 65  needsweightx $ne
3e10: 65 64 73 77 65 69 67 68 74 79 5d 0a 7d 0a 0a 70  edsweighty].}..p
3e20: 72 6f 63 20 73 75 70 65 72 67 72 69 64 3a 3a 63  roc supergrid::c
3e30: 6c 65 61 6e 64 61 74 61 20 7b 20 66 20 7d 20 7b  leandata { f } {
3e40: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 53 75  .    variable Su
3e50: 62 47 72 69 64 43 6c 61 73 73 65 73 0a 20 20 20  bGridClasses.   
3e60: 20 76 61 72 69 61 62 6c 65 20 44 69 73 63 61 72   variable Discar
3e70: 64 43 6c 61 73 73 65 73 0a 20 20 20 20 76 61 72  dClasses.    var
3e80: 69 61 62 6c 65 20 44 69 73 63 61 72 64 57 69 64  iable DiscardWid
3e90: 67 65 74 73 0a 20 20 20 20 76 61 72 69 61 62 6c  gets.    variabl
3ea0: 65 20 64 61 74 61 0a 0a 20 20 20 20 66 6f 72 65  e data..    fore
3eb0: 61 63 68 20 69 20 5b 77 69 6e 66 6f 20 63 68 69  ach i [winfo chi
3ec0: 6c 64 72 65 6e 20 24 66 5d 20 7b 0a 09 69 66 20  ldren $f] {..if 
3ed0: 7b 20 5b 6c 73 65 61 72 63 68 20 24 44 69 73 63  { [lsearch $Disc
3ee0: 61 72 64 43 6c 61 73 73 65 73 20 5b 77 69 6e 66  ardClasses [winf
3ef0: 6f 20 63 6c 61 73 73 20 24 69 5d 5d 20 21 3d 20  o class $i]] != 
3f00: 2d 31 20 7d 20 7b 0a 09 20 20 20 20 63 6f 6e 74  -1 } {..    cont
3f10: 69 6e 75 65 0a 09 7d 0a 09 69 66 20 7b 20 5b 72  inue..}..if { [r
3f20: 65 67 65 78 70 20 24 44 69 73 63 61 72 64 57 69  egexp $DiscardWi
3f30: 64 67 65 74 73 20 24 69 5d 20 7d 20 7b 20 63 6f  dgets $i] } { co
3f40: 6e 74 69 6e 75 65 20 7d 0a 09 69 66 20 7b 20 5b  ntinue }..if { [
3f50: 6c 73 65 61 72 63 68 20 24 53 75 62 47 72 69 64  lsearch $SubGrid
3f60: 43 6c 61 73 73 65 73 20 5b 77 69 6e 66 6f 20 63  Classes [winfo c
3f70: 6c 61 73 73 20 24 69 5d 5d 20 21 3d 20 2d 31 20  lass $i]] != -1 
3f80: 7d 20 7b 0a 09 20 20 20 20 63 61 74 63 68 20 7b  } {..    catch {
3f90: 20 63 6c 65 61 6e 64 61 74 61 20 24 69 20 7d 0a   cleandata $i }.
3fa0: 09 7d 0a 09 63 61 74 63 68 20 7b 20 75 6e 73 65  .}..catch { unse
3fb0: 74 20 64 61 74 61 28 24 69 29 20 7d 0a 20 20 20  t data($i) }.   
3fc0: 20 7d 0a 7d 0a 23 23 23 23 23 23 23 23 23 23 23   }.}.###########
3fd0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3fe0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3ff0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4000: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4010: 23 23 23 23 23 0a 23 20 69 74 20 69 73 20 6e 65  #####.# it is ne
4020: 63 65 73 73 61 72 79 20 74 6f 20 69 6e 69 74 20  cessary to init 
4030: 74 68 65 20 67 61 6d 65 0a 23 23 23 23 23 23 23  the game.#######
4040: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4050: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4060: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4070: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4080: 23 23 23 23 23 23 23 23 23 0a 0a 73 75 70 65 72  #########..super
4090: 67 72 69 64 3a 3a 69 6e 69 74 0a 0a 23 23 23 23  grid::init..####
40a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
40b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
40c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
40d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
40e0: 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 74  ############.# t
40f0: 68 61 74 27 73 20 61 6c 6c 0a 23 23 23 23 23 23  hat's all.######
4100: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4110: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4120: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4130: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4140: 23 23 23 23 23 23 23 23 23 23 0a 0a 0a 0a 23 20  ##########....# 
4150: 23 20 73 69 6d 70 6c 65 20 65 78 61 6d 70 6c 65  # simple example
4160: 0a 0a 23 20 74 6f 70 6c 65 76 65 6c 20 2e 74 0a  ..# toplevel .t.
4170: 23 20 6c 61 62 65 6c 20 2e 74 2e 6c 20 2d 74 65  # label .t.l -te
4180: 78 74 20 22 48 65 6c 6c 6f 20 77 6f 72 6c 64 21  xt "Hello world!
4190: 22 20 2d 67 72 69 64 20 22 30 20 32 22 0a 23 20  " -grid "0 2".# 
41a0: 62 75 74 74 6f 6e 20 2e 74 2e 62 20 2d 74 65 78  button .t.b -tex
41b0: 74 20 4f 4b 20 2d 77 69 64 74 68 20 38 20 2d 67  t OK -width 8 -g
41c0: 72 69 64 20 22 30 20 70 78 33 22 0a 23 20 62 75  rid "0 px3".# bu
41d0: 74 74 6f 6e 20 2e 74 2e 62 31 20 2d 74 65 78 74  tton .t.b1 -text
41e0: 20 43 61 6e 63 65 6c 20 2d 77 69 64 74 68 20 38   Cancel -width 8
41f0: 20 2d 63 6f 6d 6d 61 6e 64 20 65 78 69 74 20 2d   -command exit -
4200: 67 72 69 64 20 22 31 20 70 78 33 22 0a 23 20 73  grid "1 px3".# s
4210: 75 70 65 72 67 72 69 64 3a 3a 67 6f 20 2e 74 0a  upergrid::go .t.
4220: 0a 23 20 23 20 6d 6f 72 65 20 63 6f 6d 70 6c 65  .# # more comple
4230: 78 20 65 78 61 6d 70 6c 65 0a 0a 23 20 62 75 74  x example..# but
4240: 74 6f 6e 20 2e 74 69 74 6c 65 20 2d 74 65 78 74  ton .title -text
4250: 20 22 54 68 65 20 54 43 4c 2d 54 4b 20 70 6f 6c   "The TCL-TK pol
4260: 6c 22 20 2d 66 6f 6e 74 20 5b 6c 69 73 74 20 48  l" -font [list H
4270: 65 6c 76 65 74 69 63 61 20 31 36 20 62 6f 6c 64  elvetica 16 bold
4280: 5d 20 5c 0a 23 20 20 20 20 20 2d 61 63 74 69 76  ] \.#     -activ
4290: 65 66 6f 72 65 67 72 6f 75 6e 64 20 72 65 64 20  eforeground red 
42a0: 2d 62 64 20 30 20 2d 67 72 69 64 20 22 30 20 35  -bd 0 -grid "0 5
42b0: 22 0a 0a 23 20 6c 61 62 65 6c 20 2e 71 20 2d 74  "..# label .q -t
42c0: 65 78 74 20 22 44 6f 20 79 6f 75 20 6c 69 6b 65  ext "Do you like
42d0: 20 54 43 4c 3f 22 20 2d 67 72 69 64 20 22 30 20   TCL?" -grid "0 
42e0: 32 22 0a 23 20 72 61 64 69 6f 62 75 74 74 6f 6e  2".# radiobutton
42f0: 20 2e 72 31 20 2d 74 65 78 74 20 59 65 73 20 2d   .r1 -text Yes -
4300: 76 61 72 20 6b 6b 32 20 2d 76 61 6c 75 65 20 79  var kk2 -value y
4310: 20 2d 67 72 69 64 20 32 0a 23 20 72 61 64 69 6f   -grid 2.# radio
4320: 62 75 74 74 6f 6e 20 2e 72 32 20 2d 74 65 78 74  button .r2 -text
4330: 20 4e 6f 20 2d 76 61 72 20 6b 6b 32 20 20 2d 76   No -var kk2  -v
4340: 61 6c 75 65 20 6e 20 2d 67 72 69 64 20 33 0a 23  alue n -grid 3.#
4350: 20 72 61 64 69 6f 62 75 74 74 6f 6e 20 2e 72 33   radiobutton .r3
4360: 20 2d 74 65 78 74 20 22 59 65 73 20 77 69 74 68   -text "Yes with
4370: 20 53 75 70 65 72 67 72 69 64 22 20 2d 76 61 72   Supergrid" -var
4380: 20 6b 6b 32 20 2d 76 61 6c 75 65 20 79 73 67 20   kk2 -value ysg 
4390: 2d 67 72 69 64 20 34 0a 23 20 73 65 74 20 6b 6b  -grid 4.# set kk
43a0: 32 20 79 73 67 0a 0a 23 20 6c 61 62 65 6c 20 2e  2 ysg..# label .
43b0: 6e 20 2d 74 65 78 74 20 22 45 6e 74 65 72 20 74  n -text "Enter t
43c0: 68 65 20 62 65 73 74 20 6e 65 77 73 20 67 72 6f  he best news gro
43d0: 75 70 3a 22 20 2d 67 72 69 64 20 22 30 20 32 20  up:" -grid "0 2 
43e0: 65 22 0a 23 20 65 6e 74 72 79 20 2e 65 20 2d 67  e".# entry .e -g
43f0: 72 69 64 20 22 32 20 33 22 20 3b 20 2e 65 20 69  rid "2 3" ; .e i
4400: 6e 73 20 65 6e 64 20 63 6f 6d 70 2e 6c 61 6e 67  ns end comp.lang
4410: 2e 74 63 6c 0a 0a 23 20 6c 61 62 65 6c 20 2e 77  .tcl..# label .w
4420: 20 2d 74 65 78 74 20 22 57 68 6f 20 61 72 65 20   -text "Who are 
4430: 79 6f 75 3f 22 20 2d 67 72 69 64 20 30 0a 23 20  you?" -grid 0.# 
4440: 74 6b 5f 6f 70 74 69 6f 6e 4d 65 6e 75 20 2e 6f  tk_optionMenu .o
4450: 6d 20 6b 6b 20 42 65 67 69 6e 6e 65 72 20 41 64  m kk Beginner Ad
4460: 76 61 6e 63 65 64 20 45 78 70 65 72 74 0a 23 20  vanced Expert.# 
4470: 73 75 70 65 72 67 72 69 64 3a 3a 67 72 69 64 69  supergrid::gridi
4480: 6e 66 6f 20 2e 6f 6d 20 22 31 20 32 22 0a 0a 23  nfo .om "1 2"..#
4490: 20 66 72 61 6d 65 20 2e 66 20 2d 72 65 6c 69 65   frame .f -relie
44a0: 66 20 72 61 69 73 65 64 20 2d 62 64 20 32 20 2d  f raised -bd 2 -
44b0: 67 72 69 64 20 22 30 20 35 22 20 0a 23 20 6c 61  grid "0 5" .# la
44c0: 62 65 6c 20 2e 66 2e 6c 20 2d 74 65 78 74 20 22  bel .f.l -text "
44d0: 45 6e 74 65 72 20 79 6f 75 72 20 69 6d 70 72 65  Enter your impre
44e0: 73 73 69 6f 6e 73 3a 22 20 2d 67 72 69 64 20 22  ssions:" -grid "
44f0: 30 20 32 20 77 22 0a 23 20 74 65 78 74 20 2e 66  0 2 w".# text .f
4500: 2e 74 20 2d 78 73 63 72 6f 6c 6c 20 22 2e 66 2e  .t -xscroll ".f.
4510: 73 68 20 73 65 74 22 20 2d 79 73 63 72 6f 6c 6c  sh set" -yscroll
4520: 20 22 2e 66 2e 73 76 20 73 65 74 22 20 5c 0a 23   ".f.sv set" \.#
4530: 20 20 20 20 20 2d 77 69 64 74 68 20 32 30 20 2d       -width 20 -
4540: 68 65 69 67 68 74 20 34 20 2d 67 72 69 64 20 30  height 4 -grid 0
4550: 0a 23 20 73 63 72 6f 6c 6c 62 61 72 20 2e 66 2e  .# scrollbar .f.
4560: 73 76 20 2d 6f 72 69 65 6e 74 20 76 65 72 74 69  sv -orient verti
4570: 63 61 6c 20 2d 63 6f 6d 6d 61 6e 64 20 22 2e 66  cal -command ".f
4580: 2e 74 20 79 76 69 65 77 22 20 2d 67 72 69 64 20  .t yview" -grid 
4590: 31 0a 23 20 73 63 72 6f 6c 6c 62 61 72 20 2e 66  1.# scrollbar .f
45a0: 2e 73 68 20 2d 6f 72 69 65 6e 74 20 68 6f 72 69  .sh -orient hori
45b0: 7a 6f 6e 74 61 6c 20 2d 63 6f 6d 6d 61 6e 64 20  zontal -command 
45c0: 22 2e 66 2e 74 20 78 76 69 65 77 22 20 2d 67 72  ".f.t xview" -gr
45d0: 69 64 20 30 0a 0a 23 20 66 72 61 6d 65 20 2e 66  id 0..# frame .f
45e0: 32 20 2d 72 65 6c 69 65 66 20 72 61 69 73 65 64  2 -relief raised
45f0: 20 2d 62 64 20 32 20 2d 67 72 69 64 20 22 30 20   -bd 2 -grid "0 
4600: 35 22 0a 0a 23 20 66 72 61 6d 65 20 2e 62 75 74  5"..# frame .but
4610: 73 20 2d 67 72 69 64 20 22 30 20 35 22 0a 23 20  s -grid "0 5".# 
4620: 62 75 74 74 6f 6e 20 2e 62 75 74 73 2e 6f 6b 20  button .buts.ok 
4630: 2d 74 65 78 74 20 4f 4b 20 2d 77 69 64 74 68 20  -text OK -width 
4640: 38 20 2d 67 72 69 64 20 22 30 20 70 78 32 20 70  8 -grid "0 px2 p
4650: 79 33 22 0a 23 20 62 75 74 74 6f 6e 20 2e 62 75  y3".# button .bu
4660: 74 73 2e 63 61 6e 63 65 6c 20 2d 74 65 78 74 20  ts.cancel -text 
4670: 43 61 6e 63 65 6c 20 2d 77 69 64 74 68 20 38 20  Cancel -width 8 
4680: 2d 63 6f 6d 6d 61 6e 64 20 65 78 69 74 20 2d 67  -command exit -g
4690: 72 69 64 20 22 31 20 70 78 32 22 0a 0a 23 20 73  rid "1 px2"..# s
46a0: 75 70 65 72 67 72 69 64 3a 3a 67 6f 20 2e 0a 0a  upergrid::go ...
46b0: 23 20 70 72 6f 63 20 66 6c 61 73 68 20 7b 20 62  # proc flash { b
46c0: 20 7d 20 7b 0a 23 20 20 20 20 20 24 62 20 66 6c   } {.#     $b fl
46d0: 61 73 68 0a 23 20 20 20 20 20 61 66 74 65 72 20  ash.#     after 
46e0: 35 30 30 20 66 6c 61 73 68 20 24 62 0a 23 20 7d  500 flash $b.# }
46f0: 0a 23 20 66 6c 61 73 68 20 2e 74 69 74 6c 65 0a  .# flash .title.