Bwidget Source Code
Hex Artifact Content
Not logged in
Bounty program for improvements to Tcl and certain Tcl packages.
Tcl 2019 Conference, Houston/TX, US, Nov 4-8
Send your abstracts to [email protected]
or submit via the online form by Sep 9.

Artifact e9ff9e976f6457ac73c3f169bb02ac7f0629b2fa:


0000: 69 66 20 7b 20 5b 6c 73 65 61 72 63 68 20 5b 70  if { [lsearch [p
0010: 61 63 6b 61 67 65 20 6e 61 6d 65 73 5d 20 74 63  ackage names] tc
0020: 6c 74 65 73 74 5d 20 3d 3d 20 2d 31 20 7d 20 7b  ltest] == -1 } {
0030: 0a 09 70 61 63 6b 61 67 65 20 72 65 71 75 69 72  ..package requir
0040: 65 20 74 63 6c 74 65 73 74 0a 09 6e 61 6d 65 73  e tcltest..names
0050: 70 61 63 65 20 69 6d 70 6f 72 74 20 74 63 6c 74  pace import tclt
0060: 65 73 74 3a 3a 2a 0a 7d 0a 6c 61 70 70 65 6e 64  est::*.}.lappend
0070: 20 61 75 74 6f 5f 70 61 74 68 20 2f 68 6f 6d 65   auto_path /home
0080: 2f 65 72 69 63 6d 2f 62 77 69 64 67 65 74 0a 70  /ericm/bwidget.p
0090: 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 42  ackage require B
00a0: 57 69 64 67 65 74 0a 0a 6f 70 74 69 6f 6e 20 61  Widget..option a
00b0: 64 64 20 2a 45 6e 74 72 79 2e 62 6f 72 64 65 72  dd *Entry.border
00c0: 57 69 64 74 68 20 32 0a 6f 70 74 69 6f 6e 20 61  Width 2.option a
00d0: 64 64 20 2a 45 6e 74 72 79 2e 68 69 67 68 6c 69  dd *Entry.highli
00e0: 67 68 74 54 68 69 63 6b 6e 65 73 73 20 32 0a 6f  ghtThickness 2.o
00f0: 70 74 69 6f 6e 20 61 64 64 20 2a 45 6e 74 72 79  ption add *Entry
0100: 2e 66 6f 6e 74 20 7b 48 65 6c 76 65 74 69 63 61  .font {Helvetica
0110: 20 2d 31 32 7d 0a 6f 70 74 69 6f 6e 20 61 64 64   -12}.option add
0120: 20 2a 45 6e 74 72 79 2e 72 65 6c 69 65 66 20 73   *Entry.relief s
0130: 75 6e 6b 65 6e 0a 0a 45 6e 74 72 79 20 2e 65 0a  unken..Entry .e.
0140: 70 61 63 6b 20 2e 65 0a 75 70 64 61 74 65 0a 73  pack .e.update.s
0150: 65 74 20 69 20 30 0a 66 6f 72 65 61 63 68 20 74  et i 0.foreach t
0160: 65 73 74 20 7b 0a 20 20 20 20 7b 2d 62 61 63 6b  est {.    {-back
0170: 67 72 6f 75 6e 64 20 23 66 66 30 30 30 30 20 23  ground #ff0000 #
0180: 66 66 30 30 30 30 20 6e 6f 6e 2d 65 78 69 73 74  ff0000 non-exist
0190: 65 6e 74 20 5c 0a 09 20 20 20 20 7b 75 6e 6b 6e  ent \..    {unkn
01a0: 6f 77 6e 20 63 6f 6c 6f 72 20 6e 61 6d 65 20 22  own color name "
01b0: 6e 6f 6e 2d 65 78 69 73 74 65 6e 74 22 7d 7d 0a  non-existent"}}.
01c0: 20 20 20 20 7b 2d 62 64 20 34 20 34 20 62 61 64      {-bd 4 4 bad
01d0: 20 56 61 6c 75 65 20 7b 62 61 64 20 73 63 72 65   Value {bad scre
01e0: 65 6e 20 64 69 73 74 61 6e 63 65 20 22 62 61 64  en distance "bad
01f0: 56 61 6c 75 65 22 7d 7d 0a 20 20 20 20 7b 2d 62  Value"}}.    {-b
0200: 67 20 23 66 66 30 30 30 30 20 23 66 66 30 30 30  g #ff0000 #ff000
0210: 30 20 6e 6f 6e 2d 65 78 69 73 74 65 6e 74 20 7b  0 non-existent {
0220: 75 6e 6b 6e 6f 77 6e 20 63 6f 6c 6f 72 20 6e 61  unknown color na
0230: 6d 65 20 22 6e 6f 6e 2d 65 78 69 73 74 65 6e 74  me "non-existent
0240: 22 7d 7d 0a 20 20 20 20 7b 2d 62 6f 72 64 65 72  "}}.    {-border
0250: 77 69 64 74 68 20 31 2e 33 20 31 20 62 61 64 56  width 1.3 1 badV
0260: 61 6c 75 65 20 7b 62 61 64 20 73 63 72 65 65 6e  alue {bad screen
0270: 20 64 69 73 74 61 6e 63 65 20 22 62 61 64 56 61   distance "badVa
0280: 6c 75 65 22 7d 7d 0a 20 20 20 20 7b 2d 63 6f 6d  lue"}}.    {-com
0290: 6d 61 6e 64 20 66 6f 6f 20 66 6f 6f 20 7b 7d 20  mand foo foo {} 
02a0: 7b 7d 7d 0a 20 20 20 20 7b 2d 64 69 73 61 62 6c  {}}.    {-disabl
02b0: 65 64 66 6f 72 65 67 72 6f 75 6e 64 20 62 6c 75  edforeground blu
02c0: 65 20 62 6c 75 65 20 6e 6f 6e 2d 65 78 69 73 74  e blue non-exist
02d0: 65 6e 74 20 5c 0a 09 20 20 20 20 7b 75 6e 6b 6e  ent \..    {unkn
02e0: 6f 77 6e 20 63 6f 6c 6f 72 20 6e 61 6d 65 20 22  own color name "
02f0: 6e 6f 6e 2d 65 78 69 73 74 65 6e 74 22 7d 7d 0a  non-existent"}}.
0300: 20 20 20 20 7b 2d 65 64 69 74 61 62 6c 65 20 66      {-editable f
0310: 61 6c 73 65 20 30 20 73 68 61 7a 62 6f 74 20 7b  alse 0 shazbot {
0320: 65 78 70 65 63 74 65 64 20 62 6f 6f 6c 65 61 6e  expected boolean
0330: 20 76 61 6c 75 65 20 62 75 74 20 67 6f 74 20 22   value but got "
0340: 73 68 61 7a 62 6f 74 22 7d 7d 0a 20 20 20 20 7b  shazbot"}}.    {
0350: 2d 65 78 70 6f 72 74 73 65 6c 65 63 74 69 6f 6e  -exportselection
0360: 20 79 65 73 20 31 20 78 79 7a 7a 79 20 7b 65 78   yes 1 xyzzy {ex
0370: 70 65 63 74 65 64 20 62 6f 6f 6c 65 61 6e 20 76  pected boolean v
0380: 61 6c 75 65 20 62 75 74 20 67 6f 74 20 22 78 79  alue but got "xy
0390: 7a 7a 79 22 7d 7d 0a 20 20 20 20 7b 2d 66 67 20  zzy"}}.    {-fg 
03a0: 23 31 31 30 30 32 32 20 23 31 31 30 30 32 32 20  #110022 #110022 
03b0: 62 6f 67 75 73 20 7b 75 6e 6b 6e 6f 77 6e 20 63  bogus {unknown c
03c0: 6f 6c 6f 72 20 6e 61 6d 65 20 22 62 6f 67 75 73  olor name "bogus
03d0: 22 7d 7d 0a 20 20 20 20 7b 2d 66 6f 6e 74 20 7b  "}}.    {-font {
03e0: 48 65 6c 76 65 74 69 63 61 20 31 32 20 69 74 61  Helvetica 12 ita
03f0: 6c 69 63 7d 20 7b 48 65 6c 76 65 74 69 63 61 20  lic} {Helvetica 
0400: 31 32 20 69 74 61 6c 69 63 7d 20 7b 7d 20 5c 0a  12 italic} {} \.
0410: 09 20 20 20 20 7b 66 6f 6e 74 20 22 22 20 64 6f  .    {font "" do
0420: 65 73 6e 27 74 20 65 78 69 73 74 7d 7d 0a 20 20  esn't exist}}.  
0430: 20 20 7b 2d 66 6f 72 65 67 72 6f 75 6e 64 20 23    {-foreground #
0440: 31 31 30 30 32 32 20 23 31 31 30 30 32 32 20 62  110022 #110022 b
0450: 6f 67 75 73 20 7b 75 6e 6b 6e 6f 77 6e 20 63 6f  ogus {unknown co
0460: 6c 6f 72 20 6e 61 6d 65 20 22 62 6f 67 75 73 22  lor name "bogus"
0470: 7d 7d 0a 20 20 20 20 7b 2d 68 69 67 68 6c 69 67  }}.    {-highlig
0480: 68 74 62 61 63 6b 67 72 6f 75 6e 64 20 23 31 32  htbackground #12
0490: 33 34 35 36 20 23 31 32 33 34 35 36 20 75 67 6c  3456 #123456 ugl
04a0: 79 20 7b 75 6e 6b 6e 6f 77 6e 20 63 6f 6c 6f 72  y {unknown color
04b0: 20 6e 61 6d 65 20 22 75 67 6c 79 22 7d 7d 0a 20   name "ugly"}}. 
04c0: 20 20 20 7b 2d 68 69 67 68 6c 69 67 68 74 63 6f     {-highlightco
04d0: 6c 6f 72 20 23 31 32 33 34 35 36 20 23 31 32 33  lor #123456 #123
04e0: 34 35 36 20 62 6f 67 75 73 20 7b 75 6e 6b 6e 6f  456 bogus {unkno
04f0: 77 6e 20 63 6f 6c 6f 72 20 6e 61 6d 65 20 22 62  wn color name "b
0500: 6f 67 75 73 22 7d 7d 0a 20 20 20 20 7b 2d 68 69  ogus"}}.    {-hi
0510: 67 68 6c 69 67 68 74 74 68 69 63 6b 6e 65 73 73  ghlightthickness
0520: 20 36 20 36 20 62 6f 67 75 73 20 7b 62 61 64 20   6 6 bogus {bad 
0530: 73 63 72 65 65 6e 20 64 69 73 74 61 6e 63 65 20  screen distance 
0540: 22 62 6f 67 75 73 22 7d 7d 0a 20 20 20 20 7b 2d  "bogus"}}.    {-
0550: 68 69 67 68 6c 69 67 68 74 74 68 69 63 6b 6e 65  highlightthickne
0560: 73 73 20 2d 32 20 30 20 7b 7d 20 7b 7d 7d 0a 20  ss -2 0 {} {}}. 
0570: 20 20 20 7b 2d 69 6e 73 65 72 74 62 61 63 6b 67     {-insertbackg
0580: 72 6f 75 6e 64 20 23 31 31 30 30 32 32 20 23 31  round #110022 #1
0590: 31 30 30 32 32 20 62 6f 67 75 73 20 7b 75 6e 6b  10022 bogus {unk
05a0: 6e 6f 77 6e 20 63 6f 6c 6f 72 20 6e 61 6d 65 20  nown color name 
05b0: 22 62 6f 67 75 73 22 7d 7d 0a 20 20 20 20 7b 2d  "bogus"}}.    {-
05c0: 69 6e 73 65 72 74 62 6f 72 64 65 72 77 69 64 74  insertborderwidt
05d0: 68 20 31 2e 33 20 31 20 32 2e 36 78 20 7b 62 61  h 1.3 1 2.6x {ba
05e0: 64 20 73 63 72 65 65 6e 20 64 69 73 74 61 6e 63  d screen distanc
05f0: 65 20 22 32 2e 36 78 22 7d 7d 0a 20 20 20 20 7b  e "2.6x"}}.    {
0600: 2d 69 6e 73 65 72 74 6f 66 66 74 69 6d 65 20 31  -insertofftime 1
0610: 30 30 20 31 30 30 20 33 2e 32 20 7b 65 78 70 65  00 100 3.2 {expe
0620: 63 74 65 64 20 69 6e 74 65 67 65 72 20 62 75 74  cted integer but
0630: 20 67 6f 74 20 22 33 2e 32 22 7d 7d 0a 20 20 20   got "3.2"}}.   
0640: 20 7b 2d 69 6e 73 65 72 74 6f 6e 74 69 6d 65 20   {-insertontime 
0650: 31 30 30 20 31 30 30 20 33 2e 32 20 7b 65 78 70  100 100 3.2 {exp
0660: 65 63 74 65 64 20 69 6e 74 65 67 65 72 20 62 75  ected integer bu
0670: 74 20 67 6f 74 20 22 33 2e 32 22 7d 7d 0a 20 20  t got "3.2"}}.  
0680: 20 20 7b 2d 6a 75 73 74 69 66 79 20 72 69 67 68    {-justify righ
0690: 74 20 72 69 67 68 74 20 62 6f 67 75 73 20 5c 0a  t right bogus \.
06a0: 09 20 20 20 20 7b 62 61 64 20 6a 75 73 74 69 66  .    {bad justif
06b0: 69 63 61 74 69 6f 6e 20 22 62 6f 67 75 73 22 3a  ication "bogus":
06c0: 20 6d 75 73 74 20 62 65 20 6c 65 66 74 2c 20 72   must be left, r
06d0: 69 67 68 74 2c 20 6f 72 20 63 65 6e 74 65 72 7d  ight, or center}
06e0: 7d 0a 20 20 20 20 7b 2d 72 65 6c 69 65 66 20 67  }.    {-relief g
06f0: 72 6f 6f 76 65 20 67 72 6f 6f 76 65 20 31 2e 35  roove groove 1.5
0700: 20 5c 0a 09 20 20 20 20 7b 62 61 64 20 72 65 6c   \..    {bad rel
0710: 69 65 66 20 22 31 2e 35 22 3a 20 6d 75 73 74 20  ief "1.5": must 
0720: 62 65 20 66 6c 61 74 2c 20 67 72 6f 6f 76 65 2c  be flat, groove,
0730: 20 72 61 69 73 65 64 2c 20 72 69 64 67 65 2c 5c   raised, ridge,\
0740: 0a 09 20 20 20 20 73 6f 6c 69 64 2c 20 6f 72 20  ..    solid, or 
0750: 73 75 6e 6b 65 6e 7d 7d 0a 20 20 20 20 7b 2d 73  sunken}}.    {-s
0760: 65 6c 65 63 74 62 61 63 6b 67 72 6f 75 6e 64 20  electbackground 
0770: 23 31 31 30 30 32 32 20 23 31 31 30 30 32 32 20  #110022 #110022 
0780: 62 6f 67 75 73 20 7b 75 6e 6b 6e 6f 77 6e 20 63  bogus {unknown c
0790: 6f 6c 6f 72 20 6e 61 6d 65 20 22 62 6f 67 75 73  olor name "bogus
07a0: 22 7d 7d 0a 20 20 20 20 7b 2d 73 65 6c 65 63 74  "}}.    {-select
07b0: 62 6f 72 64 65 72 77 69 64 74 68 20 31 2e 33 20  borderwidth 1.3 
07c0: 31 20 62 61 64 56 61 6c 75 65 20 7b 62 61 64 20  1 badValue {bad 
07d0: 73 63 72 65 65 6e 20 64 69 73 74 61 6e 63 65 20  screen distance 
07e0: 22 62 61 64 56 61 6c 75 65 22 7d 7d 0a 20 20 20  "badValue"}}.   
07f0: 20 7b 2d 73 65 6c 65 63 74 66 6f 72 65 67 72 6f   {-selectforegro
0800: 75 6e 64 20 23 36 35 34 33 32 31 20 23 36 35 34  und #654321 #654
0810: 33 32 31 20 62 6f 67 75 73 20 7b 75 6e 6b 6e 6f  321 bogus {unkno
0820: 77 6e 20 63 6f 6c 6f 72 20 6e 61 6d 65 20 22 62  wn color name "b
0830: 6f 67 75 73 22 7d 7d 0a 20 20 20 20 7b 2d 73 68  ogus"}}.    {-sh
0840: 6f 77 20 2a 20 2a 20 7b 7d 20 7b 7d 7d 0a 20 20  ow * * {} {}}.  
0850: 20 20 7b 2d 73 74 61 74 65 20 6e 6f 72 6d 61 6c    {-state normal
0860: 20 6e 6f 72 6d 61 6c 20 62 6f 67 75 73 20 5c 0a   normal bogus \.
0870: 09 20 20 20 20 7b 62 61 64 20 73 74 61 74 65 20  .    {bad state 
0880: 22 62 6f 67 75 73 22 3a 20 6d 75 73 74 20 62 65  "bogus": must be
0890: 20 64 69 73 61 62 6c 65 64 20 6f 72 20 6e 6f 72   disabled or nor
08a0: 6d 61 6c 7d 7d 0a 20 20 20 20 7b 2d 74 61 6b 65  mal}}.    {-take
08b0: 66 6f 63 75 73 20 22 61 6e 79 20 73 74 72 69 6e  focus "any strin
08c0: 67 22 20 22 61 6e 79 20 73 74 72 69 6e 67 22 20  g" "any string" 
08d0: 7b 7d 20 7b 7d 7d 0a 20 20 20 20 7b 2d 74 65 78  {} {}}.    {-tex
08e0: 74 20 66 6f 6f 62 61 72 20 66 6f 6f 62 61 72 20  t foobar foobar 
08f0: 7b 7d 20 7b 7d 7d 0a 20 20 20 20 7b 2d 74 65 78  {} {}}.    {-tex
0900: 74 76 61 72 69 61 62 6c 65 20 69 20 69 20 7b 7d  tvariable i i {}
0910: 20 7b 7d 7d 0a 20 20 20 20 7b 2d 77 69 64 74 68   {}}.    {-width
0920: 20 34 30 32 20 34 30 32 20 33 70 20 7b 65 78 70   402 402 3p {exp
0930: 65 63 74 65 64 20 69 6e 74 65 67 65 72 20 62 75  ected integer bu
0940: 74 20 67 6f 74 20 22 33 70 22 7d 7d 0a 20 20 20  t got "3p"}}.   
0950: 20 7b 2d 78 73 63 72 6f 6c 6c 63 6f 6d 6d 61 6e   {-xscrollcomman
0960: 64 20 7b 53 6f 6d 65 20 63 6f 6d 6d 61 6e 64 7d  d {Some command}
0970: 20 7b 53 6f 6d 65 20 63 6f 6d 6d 61 6e 64 7d 20   {Some command} 
0980: 7b 7d 20 7b 7d 7d 0a 7d 20 7b 0a 20 20 20 20 73  {} {}}.} {.    s
0990: 65 74 20 6e 61 6d 65 20 5b 6c 69 6e 64 65 78 20  et name [lindex 
09a0: 24 74 65 73 74 20 30 5d 0a 20 20 20 20 74 65 73  $test 0].    tes
09b0: 74 20 65 6e 74 72 79 2d 31 2e 24 69 20 7b 63 6f  t entry-1.$i {co
09c0: 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69  nfiguration opti
09d0: 6f 6e 73 7d 20 7b 0a 20 20 20 20 20 20 20 20 2e  ons} {.        .
09e0: 65 20 63 6f 6e 66 69 67 75 72 65 20 24 6e 61 6d  e configure $nam
09f0: 65 20 5b 6c 69 6e 64 65 78 20 24 74 65 73 74 20  e [lindex $test 
0a00: 31 5d 0a 20 20 20 20 20 20 20 20 6c 69 73 74 20  1].        list 
0a10: 5b 6c 69 6e 64 65 78 20 5b 2e 65 20 63 6f 6e 66  [lindex [.e conf
0a20: 69 67 75 72 65 20 24 6e 61 6d 65 5d 20 34 5d 20  igure $name] 4] 
0a30: 5b 2e 65 20 63 67 65 74 20 24 6e 61 6d 65 5d 0a  [.e cget $name].
0a40: 20 20 20 20 7d 20 5b 6c 69 73 74 20 5b 6c 69 6e      } [list [lin
0a50: 64 65 78 20 24 74 65 73 74 20 32 5d 20 5b 6c 69  dex $test 2] [li
0a60: 6e 64 65 78 20 24 74 65 73 74 20 32 5d 5d 0a 20  ndex $test 2]]. 
0a70: 20 20 20 69 6e 63 72 20 69 0a 7d 0a 64 65 73 74     incr i.}.dest
0a80: 72 6f 79 20 2e 65 0a 0a 74 65 73 74 20 45 6e 74  roy .e..test Ent
0a90: 72 79 2d 32 2e 31 20 7b 45 6e 74 72 79 7d 20 7b  ry-2.1 {Entry} {
0aa0: 0a 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68  .    list [catch
0ab0: 20 7b 45 6e 74 72 79 7d 20 6d 73 67 5d 20 24 6d   {Entry} msg] $m
0ac0: 73 67 0a 7d 20 7b 31 20 7b 77 72 6f 6e 67 20 23  sg.} {1 {wrong #
0ad0: 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 65   args: should be
0ae0: 20 22 45 6e 74 72 79 20 70 61 74 68 20 2e 2e 2e   "Entry path ...
0af0: 22 7d 7d 0a 74 65 73 74 20 45 6e 74 72 79 2d 32  "}}.test Entry-2
0b00: 2e 32 20 7b 45 6e 74 72 79 7d 20 7b 0a 20 20 20  .2 {Entry} {.   
0b10: 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 45 6e   list [catch {En
0b20: 74 72 79 20 67 6f 72 70 7d 20 6d 73 67 5d 20 24  try gorp} msg] $
0b30: 6d 73 67 0a 7d 20 7b 31 20 7b 62 61 64 20 77 69  msg.} {1 {bad wi
0b40: 6e 64 6f 77 20 70 61 74 68 20 6e 61 6d 65 20 22  ndow path name "
0b50: 67 6f 72 70 22 7d 7d 0a 74 65 73 74 20 45 6e 74  gorp"}}.test Ent
0b60: 72 79 2d 32 2e 33 20 7b 45 6e 74 72 79 20 70 72  ry-2.3 {Entry pr
0b70: 6f 63 65 64 75 72 65 7d 20 7b 0a 20 20 20 20 45  ocedure} {.    E
0b80: 6e 74 72 79 20 2e 65 0a 20 20 20 20 73 65 74 20  ntry .e.    set 
0b90: 72 65 73 20 5b 6c 69 73 74 20 5b 77 69 6e 66 6f  res [list [winfo
0ba0: 20 65 78 69 73 74 73 20 2e 65 5d 20 5b 77 69 6e   exists .e] [win
0bb0: 66 6f 20 63 6c 61 73 73 20 2e 65 5d 20 5b 69 6e  fo class .e] [in
0bc0: 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 2e 65 5d 5d  fo commands .e]]
0bd0: 0a 20 20 20 20 64 65 73 74 72 6f 79 20 2e 65 0a  .    destroy .e.
0be0: 20 20 20 20 73 65 74 20 72 65 73 0a 7d 20 7b 31      set res.} {1
0bf0: 20 45 6e 74 72 79 20 2e 65 7d 0a 74 65 73 74 20   Entry .e}.test 
0c00: 45 6e 74 72 79 2d 32 2e 34 20 7b 45 6e 74 72 20  Entry-2.4 {Entr 
0c10: 70 72 6f 63 65 64 75 72 65 7d 20 7b 0a 20 20 20  procedure} {.   
0c20: 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 45 6e   list [catch {En
0c30: 74 72 79 20 2e 65 20 2d 67 6f 72 70 20 66 6f 6f  try .e -gorp foo
0c40: 7d 20 6d 73 67 5d 20 24 6d 73 67 20 5b 77 69 6e  } msg] $msg [win
0c50: 66 6f 20 65 78 69 73 74 73 20 2e 65 5d 20 5c 0a  fo exists .e] \.
0c60: 20 20 20 20 20 20 20 20 20 20 20 20 5b 69 6e 66              [inf
0c70: 6f 20 63 6f 6d 6d 61 6e 64 73 20 2e 65 5d 0a 7d  o commands .e].}
0c80: 20 7b 31 20 7b 75 6e 6b 6e 6f 77 6e 20 6f 70 74   {1 {unknown opt
0c90: 69 6f 6e 20 22 2d 67 6f 72 70 22 7d 20 30 20 7b  ion "-gorp"} 0 {
0ca0: 7d 7d 0a 20 20 20 20 0a 74 65 73 74 20 45 6e 74  }}.    .test Ent
0cb0: 72 79 2d 33 2e 31 20 7b 64 69 73 61 62 6c 65 64  ry-3.1 {disabled
0cc0: 20 73 74 61 74 65 20 67 72 61 79 73 20 77 69 64   state grays wid
0cd0: 67 65 74 7d 20 7b 0a 20 20 20 20 45 6e 74 72 79  get} {.    Entry
0ce0: 20 2e 65 20 2d 64 69 73 61 62 6c 65 64 66 6f 72   .e -disabledfor
0cf0: 65 67 72 6f 75 6e 64 20 62 6c 75 65 20 2d 66 6f  eground blue -fo
0d00: 72 65 67 72 6f 75 6e 64 20 72 65 64 20 2d 73 74  reground red -st
0d10: 61 74 65 20 6e 6f 72 6d 61 6c 0a 20 20 20 20 73  ate normal.    s
0d20: 65 74 20 72 65 73 20 5b 6c 69 73 74 20 5b 2e 65  et res [list [.e
0d30: 20 63 67 65 74 20 2d 66 6f 72 65 67 72 6f 75 6e   cget -foregroun
0d40: 64 5d 20 5b 2e 65 20 63 67 65 74 20 2d 64 69 73  d] [.e cget -dis
0d50: 61 62 6c 65 64 66 6f 72 65 67 72 6f 75 6e 64 5d  abledforeground]
0d60: 20 5c 0a 09 20 20 20 20 5b 2e 65 3a 63 6d 64 20   \..    [.e:cmd 
0d70: 63 67 65 74 20 2d 66 6f 72 65 67 72 6f 75 6e 64  cget -foreground
0d80: 5d 5d 0a 20 20 20 20 2e 65 20 63 6f 6e 66 69 67  ]].    .e config
0d90: 75 72 65 20 2d 73 74 61 74 65 20 64 69 73 61 62  ure -state disab
0da0: 6c 65 64 0a 20 20 20 20 6c 61 70 70 65 6e 64 20  led.    lappend 
0db0: 72 65 73 20 5b 2e 65 3a 63 6d 64 20 63 67 65 74  res [.e:cmd cget
0dc0: 20 2d 66 6f 72 65 67 72 6f 75 6e 64 5d 0a 20 20   -foreground].  
0dd0: 20 20 2e 65 20 63 6f 6e 66 69 67 75 72 65 20 2d    .e configure -
0de0: 73 74 61 74 65 20 6e 6f 72 6d 61 6c 0a 20 20 20  state normal.   
0df0: 20 6c 61 70 70 65 6e 64 20 72 65 73 20 5b 2e 65   lappend res [.e
0e00: 3a 63 6d 64 20 63 67 65 74 20 2d 66 6f 72 65 67  :cmd cget -foreg
0e10: 72 6f 75 6e 64 5d 0a 20 20 20 20 64 65 73 74 72  round].    destr
0e20: 6f 79 20 2e 65 0a 20 20 20 20 73 65 74 20 72 65  oy .e.    set re
0e30: 73 0a 7d 20 7b 72 65 64 20 62 6c 75 65 20 72 65  s.} {red blue re
0e40: 64 20 62 6c 75 65 20 72 65 64 7d 0a 74 65 73 74  d blue red}.test
0e50: 20 45 6e 74 72 79 2d 33 2e 32 20 7b 63 68 61 6e   Entry-3.2 {chan
0e60: 67 69 6e 67 20 64 69 73 61 62 6c 65 64 66 6f 72  ging disabledfor
0e70: 65 67 72 6f 75 6e 64 20 6f 66 20 61 6e 20 65 6e  eground of an en
0e80: 61 62 6c 65 64 20 65 6e 74 72 79 7d 20 7b 0a 20  abled entry} {. 
0e90: 20 20 20 45 6e 74 72 79 20 2e 65 20 2d 64 69 73     Entry .e -dis
0ea0: 61 62 6c 65 64 66 6f 72 65 67 72 6f 75 6e 64 20  abledforeground 
0eb0: 62 6c 75 65 20 2d 66 6f 72 65 67 72 6f 75 6e 64  blue -foreground
0ec0: 20 72 65 64 20 2d 73 74 61 74 65 20 6e 6f 72 6d   red -state norm
0ed0: 61 6c 0a 20 20 20 20 73 65 74 20 72 65 73 20 5b  al.    set res [
0ee0: 6c 69 73 74 20 5b 2e 65 20 63 67 65 74 20 2d 66  list [.e cget -f
0ef0: 6f 72 65 67 72 6f 75 6e 64 5d 20 5b 2e 65 20 63  oreground] [.e c
0f00: 67 65 74 20 2d 64 69 73 61 62 6c 65 64 66 6f 72  get -disabledfor
0f10: 65 67 72 6f 75 6e 64 5d 20 5c 0a 09 20 20 20 20  eground] \..    
0f20: 5b 2e 65 3a 63 6d 64 20 63 67 65 74 20 2d 66 6f  [.e:cmd cget -fo
0f30: 72 65 67 72 6f 75 6e 64 5d 5d 0a 20 20 20 20 2e  reground]].    .
0f40: 65 20 63 6f 6e 66 69 67 75 72 65 20 2d 64 69 73  e configure -dis
0f50: 61 62 6c 65 64 66 6f 72 65 67 72 6f 75 6e 64 20  abledforeground 
0f60: 67 72 65 65 6e 0a 20 20 20 20 6c 61 70 70 65 6e  green.    lappen
0f70: 64 20 72 65 73 20 5b 2e 65 3a 63 6d 64 20 63 67  d res [.e:cmd cg
0f80: 65 74 20 2d 66 6f 72 65 67 72 6f 75 6e 64 5d 0a  et -foreground].
0f90: 20 20 20 20 64 65 73 74 72 6f 79 20 2e 65 0a 20      destroy .e. 
0fa0: 20 20 20 73 65 74 20 72 65 73 0a 7d 20 7b 72 65     set res.} {re
0fb0: 64 20 62 6c 75 65 20 72 65 64 20 72 65 64 7d 0a  d blue red red}.
0fc0: 74 65 73 74 20 45 6e 74 72 79 2d 33 2e 33 20 7b  test Entry-3.3 {
0fd0: 63 68 61 6e 67 69 6e 67 20 6e 6f 72 6d 61 6c 20  changing normal 
0fe0: 66 6f 72 65 67 72 6f 75 6e 64 20 6f 66 20 61 20  foreground of a 
0ff0: 64 69 73 61 62 6c 65 64 20 65 6e 74 72 79 7d 20  disabled entry} 
1000: 7b 0a 20 20 20 20 45 6e 74 72 79 20 2e 65 20 2d  {.    Entry .e -
1010: 64 69 73 61 62 6c 65 64 66 6f 72 65 67 72 6f 75  disabledforegrou
1020: 6e 64 20 62 6c 75 65 20 2d 66 6f 72 65 67 72 6f  nd blue -foregro
1030: 75 6e 64 20 72 65 64 20 2d 73 74 61 74 65 20 64  und red -state d
1040: 69 73 61 62 6c 65 64 0a 20 20 20 20 73 65 74 20  isabled.    set 
1050: 72 65 73 20 5b 6c 69 73 74 20 5b 2e 65 20 63 67  res [list [.e cg
1060: 65 74 20 2d 66 6f 72 65 67 72 6f 75 6e 64 5d 20  et -foreground] 
1070: 5b 2e 65 20 63 67 65 74 20 2d 64 69 73 61 62 6c  [.e cget -disabl
1080: 65 64 66 6f 72 65 67 72 6f 75 6e 64 5d 20 5c 0a  edforeground] \.
1090: 09 20 20 20 20 5b 2e 65 3a 63 6d 64 20 63 67 65  .    [.e:cmd cge
10a0: 74 20 2d 66 6f 72 65 67 72 6f 75 6e 64 5d 5d 0a  t -foreground]].
10b0: 20 20 20 20 2e 65 20 63 6f 6e 66 69 67 75 72 65      .e configure
10c0: 20 2d 66 6f 72 65 67 72 6f 75 6e 64 20 67 72 65   -foreground gre
10d0: 65 6e 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 72  en.    lappend r
10e0: 65 73 20 5b 2e 65 3a 63 6d 64 20 63 67 65 74 20  es [.e:cmd cget 
10f0: 2d 66 6f 72 65 67 72 6f 75 6e 64 5d 0a 20 20 20  -foreground].   
1100: 20 64 65 73 74 72 6f 79 20 2e 65 0a 20 20 20 20   destroy .e.    
1110: 73 65 74 20 72 65 73 0a 7d 20 7b 72 65 64 20 62  set res.} {red b
1120: 6c 75 65 20 62 6c 75 65 20 62 6c 75 65 7d 0a 74  lue blue blue}.t
1130: 65 73 74 20 45 6e 74 72 79 2d 33 2e 34 20 7b 63  est Entry-3.4 {c
1140: 68 61 6e 67 69 6e 67 20 64 69 73 61 62 6c 65 64  hanging disabled
1150: 20 66 6f 72 65 67 72 6f 75 6e 64 20 6f 66 20 61   foreground of a
1160: 20 64 69 73 61 62 6c 65 64 20 65 6e 74 72 79 7d   disabled entry}
1170: 20 7b 0a 20 20 20 20 45 6e 74 72 79 20 2e 65 20   {.    Entry .e 
1180: 2d 64 69 73 61 62 6c 65 64 66 6f 72 65 67 72 6f  -disabledforegro
1190: 75 6e 64 20 62 6c 75 65 20 2d 66 6f 72 65 67 72  und blue -foregr
11a0: 6f 75 6e 64 20 72 65 64 20 2d 73 74 61 74 65 20  ound red -state 
11b0: 64 69 73 61 62 6c 65 64 0a 20 20 20 20 73 65 74  disabled.    set
11c0: 20 72 65 73 20 5b 6c 69 73 74 20 5b 2e 65 20 63   res [list [.e c
11d0: 67 65 74 20 2d 66 6f 72 65 67 72 6f 75 6e 64 5d  get -foreground]
11e0: 20 5b 2e 65 20 63 67 65 74 20 2d 64 69 73 61 62   [.e cget -disab
11f0: 6c 65 64 66 6f 72 65 67 72 6f 75 6e 64 5d 20 5c  ledforeground] \
1200: 0a 09 20 20 20 20 5b 2e 65 3a 63 6d 64 20 63 67  ..    [.e:cmd cg
1210: 65 74 20 2d 66 6f 72 65 67 72 6f 75 6e 64 5d 5d  et -foreground]]
1220: 0a 20 20 20 20 2e 65 20 63 6f 6e 66 69 67 75 72  .    .e configur
1230: 65 20 2d 64 69 73 61 62 6c 65 64 66 6f 72 65 67  e -disabledforeg
1240: 72 6f 75 6e 64 20 67 72 65 65 6e 0a 20 20 20 20  round green.    
1250: 6c 61 70 70 65 6e 64 20 72 65 73 20 5b 2e 65 3a  lappend res [.e:
1260: 63 6d 64 20 63 67 65 74 20 2d 66 6f 72 65 67 72  cmd cget -foregr
1270: 6f 75 6e 64 5d 0a 20 20 20 20 64 65 73 74 72 6f  ound].    destro
1280: 79 20 2e 65 0a 20 20 20 20 73 65 74 20 72 65 73  y .e.    set res
1290: 0a 7d 20 7b 72 65 64 20 62 6c 75 65 20 62 6c 75  .} {red blue blu
12a0: 65 20 67 72 65 65 6e 7d 0a 0a 74 65 73 74 20 45  e green}..test E
12b0: 6e 74 72 79 2d 34 2e 31 20 7b 65 64 69 74 61 62  ntry-4.1 {editab
12c0: 6c 65 20 66 6c 61 67 20 65 6e 61 62 6c 65 73 2f  le flag enables/
12d0: 64 69 73 61 62 6c 65 73 20 65 64 69 74 69 6e 67  disables editing
12e0: 7d 20 7b 0a 20 20 20 20 45 6e 74 72 79 20 2e 65  } {.    Entry .e
12f0: 20 2d 65 64 69 74 61 62 6c 65 20 74 72 75 65 0a   -editable true.
1300: 20 20 20 20 73 65 74 20 72 65 73 20 5b 65 78 70      set res [exp
1310: 72 20 7b 5b 6c 73 65 61 72 63 68 20 5b 62 69 6e  r {[lsearch [bin
1320: 64 74 61 67 73 20 2e 65 5d 20 42 77 44 69 73 61  dtags .e] BwDisa
1330: 62 6c 65 64 45 6e 74 72 79 5d 20 3d 3d 20 2d 31  bledEntry] == -1
1340: 7d 5d 0a 20 20 20 20 2e 65 20 63 6f 6e 66 69 67  }].    .e config
1350: 75 72 65 20 2d 65 64 69 74 61 62 6c 65 20 66 61  ure -editable fa
1360: 6c 73 65 0a 20 20 20 20 6c 61 70 70 65 6e 64 20  lse.    lappend 
1370: 72 65 73 20 5b 65 78 70 72 20 7b 5b 6c 73 65 61  res [expr {[lsea
1380: 72 63 68 20 5b 62 69 6e 64 74 61 67 73 20 2e 65  rch [bindtags .e
1390: 5d 20 42 77 44 69 73 61 62 6c 65 64 45 6e 74 72  ] BwDisabledEntr
13a0: 79 5d 20 21 3d 20 2d 31 7d 5d 0a 20 20 20 20 64  y] != -1}].    d
13b0: 65 73 74 72 6f 79 20 2e 65 0a 20 20 20 20 73 65  estroy .e.    se
13c0: 74 20 72 65 73 0a 7d 20 7b 31 20 31 7d 0a 74 65  t res.} {1 1}.te
13d0: 73 74 20 45 6e 74 72 79 2d 34 2e 32 20 7b 65 64  st Entry-4.2 {ed
13e0: 69 74 61 62 6c 65 20 66 6c 61 67 20 64 6f 65 73  itable flag does
13f0: 20 6e 6f 74 20 69 6d 70 61 63 74 20 66 6f 72 65   not impact fore
1400: 67 72 6f 75 6e 64 20 63 6f 6c 6f 72 7d 20 7b 0a  ground color} {.
1410: 20 20 20 20 45 6e 74 72 79 20 2e 65 20 2d 65 64      Entry .e -ed
1420: 69 74 61 62 6c 65 20 31 20 2d 66 6f 72 65 67 72  itable 1 -foregr
1430: 6f 75 6e 64 20 72 65 64 20 2d 64 69 73 61 62 6c  ound red -disabl
1440: 65 64 66 6f 72 65 67 72 6f 75 6e 64 20 62 6c 75  edforeground blu
1450: 65 20 2d 73 74 61 74 65 20 6e 6f 72 6d 61 6c 0a  e -state normal.
1460: 20 20 20 20 73 65 74 20 72 65 73 20 5b 6c 69 73      set res [lis
1470: 74 20 5b 2e 65 3a 63 6d 64 20 63 67 65 74 20 2d  t [.e:cmd cget -
1480: 66 6f 72 65 67 72 6f 75 6e 64 5d 5d 0a 20 20 20  foreground]].   
1490: 20 2e 65 20 63 6f 6e 66 69 67 75 72 65 20 2d 65   .e configure -e
14a0: 64 69 74 61 62 6c 65 20 66 61 6c 73 65 0a 20 20  ditable false.  
14b0: 20 20 6c 61 70 70 65 6e 64 20 72 65 73 20 5b 2e    lappend res [.
14c0: 65 3a 63 6d 64 20 63 67 65 74 20 2d 66 6f 72 65  e:cmd cget -fore
14d0: 67 72 6f 75 6e 64 5d 0a 20 20 20 20 64 65 73 74  ground].    dest
14e0: 72 6f 79 20 2e 65 0a 20 20 20 20 73 65 74 20 72  roy .e.    set r
14f0: 65 73 0a 7d 20 7b 72 65 64 20 72 65 64 7d 0a 74  es.} {red red}.t
1500: 65 73 74 20 45 6e 74 72 79 2d 34 2e 33 20 7b 65  est Entry-4.3 {e
1510: 64 69 74 61 62 6c 65 20 66 6c 61 67 20 63 68 61  ditable flag cha
1520: 6e 67 65 73 20 63 75 72 73 6f 72 7d 20 7b 0a 20  nges cursor} {. 
1530: 20 20 20 45 6e 74 72 79 20 2e 65 20 2d 65 64 69     Entry .e -edi
1540: 74 61 62 6c 65 20 31 0a 20 20 20 20 73 65 74 20  table 1.    set 
1550: 72 65 73 20 5b 6c 69 73 74 20 5b 2e 65 3a 63 6d  res [list [.e:cm
1560: 64 20 63 67 65 74 20 2d 63 75 72 73 6f 72 5d 5d  d cget -cursor]]
1570: 0a 20 20 20 20 2e 65 20 63 6f 6e 66 69 67 75 72  .    .e configur
1580: 65 20 2d 65 64 69 74 61 62 6c 65 20 30 0a 20 20  e -editable 0.  
1590: 20 20 6c 61 70 70 65 6e 64 20 72 65 73 20 5b 2e    lappend res [.
15a0: 65 3a 63 6d 64 20 63 67 65 74 20 2d 63 75 72 73  e:cmd cget -curs
15b0: 6f 72 5d 0a 20 20 20 20 64 65 73 74 72 6f 79 20  or].    destroy 
15c0: 2e 65 0a 20 20 20 20 73 65 74 20 72 65 73 0a 7d  .e.    set res.}
15d0: 20 5b 6c 69 73 74 20 78 74 65 72 6d 20 6c 65 66   [list xterm lef
15e0: 74 5f 70 74 72 5d 0a 0a 74 65 73 74 20 45 6e 74  t_ptr]..test Ent
15f0: 72 79 2d 35 2e 31 20 7b 2d 74 65 78 74 20 66 6c  ry-5.1 {-text fl
1600: 61 67 20 67 65 74 73 20 65 6e 74 72 79 20 74 65  ag gets entry te
1610: 78 74 7d 20 7b 0a 20 20 20 20 45 6e 74 72 79 20  xt} {.    Entry 
1620: 2e 65 0a 20 20 20 20 2e 65 20 64 65 6c 65 74 65  .e.    .e delete
1630: 20 30 20 65 6e 64 0a 20 20 20 20 2e 65 20 69 6e   0 end.    .e in
1640: 73 65 72 74 20 65 6e 64 20 66 6f 6f 62 61 72 0a  sert end foobar.
1650: 20 20 20 20 73 65 74 20 72 65 73 20 5b 2e 65 20      set res [.e 
1660: 63 67 65 74 20 2d 74 65 78 74 5d 0a 20 20 20 20  cget -text].    
1670: 64 65 73 74 72 6f 79 20 2e 65 0a 20 20 20 20 73  destroy .e.    s
1680: 65 74 20 72 65 73 0a 7d 20 66 6f 6f 62 61 72 0a  et res.} foobar.
1690: 74 65 73 74 20 45 6e 74 72 79 2d 35 2e 32 20 7b  test Entry-5.2 {
16a0: 2d 74 65 78 74 20 66 6c 61 67 20 73 65 74 73 20  -text flag sets 
16b0: 65 6e 74 72 79 20 74 65 78 74 7d 20 7b 0a 20 20  entry text} {.  
16c0: 20 20 45 6e 74 72 79 20 2e 65 0a 20 20 20 20 2e    Entry .e.    .
16d0: 65 20 64 65 6c 65 74 65 20 30 20 65 6e 64 0a 20  e delete 0 end. 
16e0: 20 20 20 2e 65 20 63 6f 6e 66 69 67 75 72 65 20     .e configure 
16f0: 2d 74 65 78 74 20 62 61 72 62 61 7a 0a 20 20 20  -text barbaz.   
1700: 20 73 65 74 20 72 65 73 20 5b 2e 65 20 67 65 74   set res [.e get
1710: 5d 0a 20 20 20 20 64 65 73 74 72 6f 79 20 2e 65  ].    destroy .e
1720: 0a 20 20 20 20 73 65 74 20 72 65 73 0a 7d 20 62  .    set res.} b
1730: 61 72 62 61 7a 0a 0a 74 65 73 74 20 45 6e 74 72  arbaz..test Entr
1740: 79 2d 36 2e 31 20 7b 2d 63 6f 6d 6d 61 6e 64 20  y-6.1 {-command 
1750: 77 6f 72 6b 73 7d 20 7b 0a 20 20 20 20 73 65 74  works} {.    set
1760: 20 3a 3a 66 6f 6f 20 30 0a 20 20 20 20 45 6e 74   ::foo 0.    Ent
1770: 72 79 20 2e 65 20 2d 63 6f 6d 6d 61 6e 64 20 7b  ry .e -command {
1780: 69 6e 63 72 20 3a 3a 66 6f 6f 7d 0a 20 20 20 20  incr ::foo}.    
1790: 45 6e 74 72 79 3a 3a 69 6e 76 6f 6b 65 20 2e 65  Entry::invoke .e
17a0: 0a 20 20 20 20 64 65 73 74 72 6f 79 20 2e 65 0a  .    destroy .e.
17b0: 20 20 20 20 73 65 74 20 3a 3a 66 6f 6f 0a 7d 20      set ::foo.} 
17c0: 31 0a 0a 74 63 6c 74 65 73 74 3a 3a 63 6c 65 61  1..tcltest::clea
17d0: 6e 75 70 54 65 73 74 73 0a 65 78 69 74 0a        nupTests.exit.