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.