| 1 | # tk.tcl -- |
| 2 | # |
| 3 | # Initialization script normally executed in the interpreter for each |
| 4 | # Tk-based application. Arranges class bindings for widgets. |
| 5 | # |
| 6 | # $Header: /user6/ouster/wish/scripts/RCS/tk.tcl,v 1.19 92/08/08 14:50:08 ouster Exp $ SPRITE (Berkeley) |
| 7 | # |
| 8 | # Copyright 1992 Regents of the University of California |
| 9 | # Permission to use, copy, modify, and distribute this |
| 10 | # software and its documentation for any purpose and without |
| 11 | # fee is hereby granted, provided that this copyright |
| 12 | # notice appears in all copies. The University of California |
| 13 | # makes no representations about the suitability of this |
| 14 | # software for any purpose. It is provided "as is" without |
| 15 | # express or implied warranty. |
| 16 | |
| 17 | # Insist on running with a compatible version of Tcl. |
| 18 | |
| 19 | if "[info tclversion] != {6.4}" { |
| 20 | error "wrong version of Tcl loaded ([info tclversion]): need 6.4" |
| 21 | } |
| 22 | |
| 23 | # Initialize the auto-load path to include Tk's directory as well as |
| 24 | # Tcl's directory: |
| 25 | |
| 26 | set auto_path "$tk_library [info library]" |
| 27 | |
| 28 | # ---------------------------------------------------------------------- |
| 29 | # Class bindings for various flavors of button widgets. |
| 30 | # ---------------------------------------------------------------------- |
| 31 | |
| 32 | bind Button <Any-Enter> {tk_butEnter %W} |
| 33 | bind Button <Any-Leave> {tk_butLeave %W} |
| 34 | bind Button <1> {tk_butDown %W} |
| 35 | bind Button <ButtonRelease-1> {tk_butUp %W} |
| 36 | bind Button <2> {tk_butDown %W} |
| 37 | bind Button <ButtonRelease-2> {tk_butUp %W} |
| 38 | bind Button <3> {tk_butDown %W} |
| 39 | bind Button <ButtonRelease-3> {tk_butUp %W} |
| 40 | |
| 41 | bind CheckButton <Any-Enter> {tk_butEnter %W} |
| 42 | bind CheckButton <Any-Leave> {tk_butLeave %W} |
| 43 | bind CheckButton <1> {tk_butDown %W} |
| 44 | bind CheckButton <ButtonRelease-1> {tk_butUp %W} |
| 45 | bind CheckButton <2> {tk_butDown %W} |
| 46 | bind CheckButton <ButtonRelease-2> {tk_butUp %W} |
| 47 | bind CheckButton <3> {tk_butDown %W} |
| 48 | bind CheckButton <ButtonRelease-3> {tk_butUp %W} |
| 49 | |
| 50 | bind RadioButton <Any-Enter> {tk_butEnter %W} |
| 51 | bind RadioButton <Any-Leave> {tk_butLeave %W} |
| 52 | bind RadioButton <1> {tk_butDown %W} |
| 53 | bind RadioButton <ButtonRelease-1> {tk_butUp %W} |
| 54 | bind RadioButton <2> {tk_butDown %W} |
| 55 | bind RadioButton <ButtonRelease-2> {tk_butUp %W} |
| 56 | bind RadioButton <3> {tk_butDown %W} |
| 57 | bind RadioButton <ButtonRelease-3> {tk_butUp %W} |
| 58 | |
| 59 | # ---------------------------------------------------------------------- |
| 60 | # Class bindings for entry widgets. |
| 61 | # ---------------------------------------------------------------------- |
| 62 | |
| 63 | bind Entry <1> { |
| 64 | %W cursor @%x |
| 65 | %W select from @%x |
| 66 | if {[lindex [%W config -state] 4] == "normal"} {focus %W} |
| 67 | } |
| 68 | bind Entry <B1-Motion> {%W select to @%x} |
| 69 | bind Entry <Shift-1> {%W select adjust @%x} |
| 70 | bind Entry <Shift-B1-Motion> {%W select to @%x} |
| 71 | bind Entry <2> {%W scan mark %x} |
| 72 | bind Entry <B2-Motion> {%W scan dragto %x} |
| 73 | bind Entry <Any-KeyPress> { |
| 74 | tk_entryCutPress %W |
| 75 | if {"%A" != ""} { |
| 76 | %W insert cursor %A |
| 77 | tk_entrySeeCaret %W |
| 78 | } |
| 79 | } |
| 80 | bind Entry <Delete> {tk_entryDelPress %W} |
| 81 | bind Entry <BackSpace> {tk_entryDelPress %W} |
| 82 | bind Entry <Control-h> {tk_entryDelPress %W} |
| 83 | bind Entry <Control-d> {tk_entryCutPress %W} |
| 84 | bind Entry <Control-u> {tk_entryDelLine %W} |
| 85 | bind Entry <Control-x> {tk_entryCutPress %W} |
| 86 | bind Entry <Control-y> {tk_entryCopyPress %W} |
| 87 | bind Entry <Control-v> {tk_entryCopyPress %W} |
| 88 | bind Entry <Control-w> {tk_entryBackword %W; tk_entrySeeCaret %W} |
| 89 | tk_bindForTraversal Entry |
| 90 | |
| 91 | # ---------------------------------------------------------------------- |
| 92 | # Class bindings for listbox widgets. |
| 93 | # ---------------------------------------------------------------------- |
| 94 | |
| 95 | bind Listbox <1> {%W select from [%W nearest %y]} |
| 96 | bind Listbox <B1-Motion> {%W select to [%W nearest %y]} |
| 97 | bind Listbox <Shift-1> {%W select adjust [%W nearest %y]} |
| 98 | bind Listbox <Shift-B1-Motion> {%W select to [%W nearest %y]} |
| 99 | bind Listbox <2> {%W scan mark %x %y} |
| 100 | bind Listbox <B2-Motion> {%W scan dragto %x %y} |
| 101 | bind Listbox <3> {%W select from [%W nearest %y]} |
| 102 | bind Listbox <B3-Motion> {%W select to [%W nearest %y]} |
| 103 | bind Listbox <Shift-3> {%W select adjust [%W nearest %y]} |
| 104 | bind Listbox <Shift-B3-Motion> {%W select to [%W nearest %y]} |
| 105 | |
| 106 | # ---------------------------------------------------------------------- |
| 107 | # Class bindings for scrollbar widgets. |
| 108 | # ---------------------------------------------------------------------- |
| 109 | |
| 110 | # ---------------------------------------------------------------------- |
| 111 | # Class bindings for scale widgets. |
| 112 | # ---------------------------------------------------------------------- |
| 113 | |
| 114 | # ---------------------------------------------------------------------- |
| 115 | # Class bindings for menubutton widgets. |
| 116 | # ---------------------------------------------------------------------- |
| 117 | |
| 118 | bind Menubutton <Enter> {tk_mbButtonEnter %W %m} |
| 119 | bind Menubutton <Any-Leave> {tk_mbButtonLeave %W} |
| 120 | bind Menubutton <1> {tk_mbButtonDown %W %X %Y} |
| 121 | bind Menubutton <Any-ButtonRelease-1> {tk_mbButtonUp %W %X %Y} |
| 122 | bind Menubutton <B1-Enter> {tk_mbButton1Enter %W %m} |
| 123 | bind Menubutton <2> {tk_mbButtonDown %W %X %Y} |
| 124 | bind Menubutton <ButtonRelease-2> {tk_mbButtonUp %W %X %Y} |
| 125 | bind Menubutton <3> {tk_mbButtonDown %W %X %Y} |
| 126 | bind Menubutton <ButtonRelease-3> {tk_mbButtonUp %W %X %Y} |
| 127 | |
| 128 | # ---------------------------------------------------------------------- |
| 129 | # Class bindings for menu widgets. |
| 130 | # ---------------------------------------------------------------------- |
| 131 | |
| 132 | bind Menu <Any-Enter> {tk_menuEnter %W %y} |
| 133 | bind Menu <Any-Leave> {tk_menuLeave %W} |
| 134 | bind Menu <Any-Motion> {tk_menuMotion %W %y} |
| 135 | bind Menu <ButtonRelease-1> {tk_menuUp %W %y} |
| 136 | bind Menu <ButtonRelease-2> {tk_menuUp %W %y} |
| 137 | bind Menu <ButtonRelease-3> {tk_menuUp %W %y} |
| 138 | |
| 139 | bind Menu <Escape> {tk_mbUnpost %W} |
| 140 | bind Menu <Any-KeyPress> {tk_traverseWithinMenu %W %A} |
| 141 | bind Menu <Left> {tk_nextMenu %W -1} |
| 142 | bind Menu <Right> {tk_nextMenu %W 1} |
| 143 | bind Menu <Up> {tk_nextMenuEntry %W -1} |
| 144 | bind Menu <Down> {tk_nextMenuEntry %W 1} |
| 145 | bind Menu <Return> {tk_invokeMenu %W} |
| 146 | |
| 147 | # ---------------------------------------------------------------------- |
| 148 | # Class bindings for text widgets. |
| 149 | # ---------------------------------------------------------------------- |
| 150 | |
| 151 | #bind Text <1> {tk_textDown %W %x %y} |
| 152 | #bind Text <Double-1> {tk_textDoubleDown %W %x %y} |
| 153 | #bind Text <Triple-1> {tk_textTripleDown %W %x %y} |
| 154 | #bind Text <B1-Motion> {tk_textSelectTo %W %x %y} |
| 155 | #bind Text <Shift-1> {tk_textAdjustTo %W %x %y} |
| 156 | #bind Text <Shift-B1-Motion> {tk_textSelectTo %W %x %y} |
| 157 | bind Text <2> {%W scan mark %y} |
| 158 | bind Text <B2-Motion> {%W scan dragto %y} |
| 159 | bind Text <Any-KeyPress> {tk_textKeyPress %W %A} |
| 160 | bind Text <Return> {tk_textReturnPress %W} |
| 161 | bind Text <BackSpace> {tk_textDelPress %W} |
| 162 | bind Text <Delete> {tk_textDelPress %W} |
| 163 | bind Text <Control-h> {tk_textDelPress %W} |
| 164 | bind Text <Control-d> {tk_textCutPress %W} |
| 165 | bind Text <Control-v> {tk_textCopyPress %W} |
| 166 | tk_bindForTraversal Text |
| 167 | |
| 168 | # Initialize the elements of tk_priv that require initialization. |