|
|
1.1 root 1: # entry.tcl --
2: #
3: # This file contains Tcl procedures used to manage Tk entries.
4: #
5: # $Header: /user6/ouster/wish/scripts/RCS/entry.tcl,v 1.2 92/05/23 16:40:57 ouster Exp $ SPRITE (Berkeley)
6: #
7: # Copyright 1992 Regents of the University of California
8: # Permission to use, copy, modify, and distribute this
9: # software and its documentation for any purpose and without
10: # fee is hereby granted, provided that this copyright
11: # notice appears in all copies. The University of California
12: # makes no representations about the suitability of this
13: # software for any purpose. It is provided "as is" without
14: # express or implied warranty.
15: #
16:
17: # The procedure below is invoked to backspace over one character
18: # in an entry widget. The name of the widget is passed as argument.
19:
20: proc tk_entryBackspace w {
21: set x [expr {[$w index cursor] - 1}]
22: if {$x != -1} {$w delete $x}
23: }
24:
25: # The procedure below is invoked to backspace over one word in an
26: # entry widget. The name of the widget is passed as argument.
27:
28: proc tk_entryBackword w {
29: set string [$w get]
30: set curs [expr [$w index cursor]-1]
31: if {$curs < 0} return
32: for {set x $curs} {$x > 0} {incr x -1} {
33: if {([string first [string index $string $x] " \t"] < 0)
34: && ([string first [string index $string [expr $x-1]] " \t"]
35: >= 0)} {
36: break
37: }
38: }
39: $w delete $x $curs
40: }
41:
42: # The procedure below is invoked after insertions. If the caret is not
43: # visible in the window then the procedure adjusts the entry's view to
44: # bring the caret back into the window again.
45:
46: proc tk_entrySeeCaret w {
47: set c [$w index cursor]
48: set left [$w index @0]
49: if {$left > $c} {
50: $w view $c
51: return
52: }
53: while {[$w index @[expr [winfo width $w]-5]] < $c} {
54: set left [expr $left+1]
55: $w view $left
56: }
57: }
58:
59: proc tk_entryCopyPress {w} {
60: set sel ""
61: catch {set sel [selection -window $w get]}
62: $w insert cursor $sel
63: tk_entrySeeCaret $w
64: }
65:
66: proc tk_entryCutPress {w} {
67: catch {$w delete sel.first sel.last}
68: tk_entrySeeCaret $w
69: }
70:
71: proc tk_entryDelLine {w} {
72: $w delete 0 end
73: }
74:
75: proc tk_entryDelPress {w} {
76: tk_entryBackspace $w
77: tk_entrySeeCaret $w
78: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.