tk 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +2 -0
  3. data/MANUAL_tcltklib.eng +0 -2
  4. data/MANUAL_tcltklib.ja +0 -2
  5. data/README.ActiveTcl +1 -1
  6. data/README.md +43 -0
  7. data/ext/tk/extconf.rb +4 -2
  8. data/ext/tk/old-extconf.rb +0 -1
  9. data/ext/tk/tcltklib.c +46 -148
  10. data/ext/tk/tkutil/extconf.rb +0 -2
  11. data/ext/tk/tkutil/tkutil.c +6 -9
  12. data/lib/multi-tk.rb +95 -315
  13. data/lib/remote-tk.rb +6 -23
  14. data/lib/tk.rb +41 -122
  15. data/lib/tk/bgerror.rb +2 -2
  16. data/lib/tk/bindtag.rb +1 -1
  17. data/lib/tk/canvas.rb +6 -14
  18. data/lib/tk/canvastag.rb +8 -16
  19. data/lib/tk/font.rb +1 -1
  20. data/lib/tk/fontchooser.rb +1 -1
  21. data/lib/tk/image.rb +1 -1
  22. data/lib/tk/menu.rb +4 -4
  23. data/lib/tk/msgcat.rb +5 -5
  24. data/lib/tk/namespace.rb +12 -32
  25. data/lib/tk/optiondb.rb +3 -73
  26. data/lib/tk/scale.rb +2 -2
  27. data/lib/tk/scrollable.rb +4 -2
  28. data/lib/tk/selection.rb +5 -4
  29. data/lib/tk/text.rb +8 -16
  30. data/lib/tk/textmark.rb +1 -1
  31. data/lib/tk/texttag.rb +7 -15
  32. data/lib/tk/timer.rb +2 -2
  33. data/lib/tk/tk_mac.rb +18 -18
  34. data/lib/tk/validation.rb +4 -35
  35. data/lib/tk/variable.rb +7 -5
  36. data/lib/tk/virtevent.rb +1 -1
  37. data/lib/tkextlib/blt/barchart.rb +0 -17
  38. data/lib/tkextlib/blt/bitmap.rb +1 -1
  39. data/lib/tkextlib/blt/component.rb +34 -34
  40. data/lib/tkextlib/blt/dragdrop.rb +6 -6
  41. data/lib/tkextlib/blt/graph.rb +0 -17
  42. data/lib/tkextlib/blt/stripchart.rb +0 -17
  43. data/lib/tkextlib/blt/tabset.rb +16 -31
  44. data/lib/tkextlib/blt/tree.rb +5 -5
  45. data/lib/tkextlib/blt/treeview.rb +14 -14
  46. data/lib/tkextlib/blt/watch.rb +1 -1
  47. data/lib/tkextlib/bwidget/labelentry.rb +6 -14
  48. data/lib/tkextlib/bwidget/listbox.rb +13 -29
  49. data/lib/tkextlib/bwidget/notebook.rb +6 -14
  50. data/lib/tkextlib/bwidget/spinbox.rb +6 -14
  51. data/lib/tkextlib/bwidget/tree.rb +19 -35
  52. data/lib/tkextlib/itcl/incr_tcl.rb +2 -2
  53. data/lib/tkextlib/itk/incr_tk.rb +7 -29
  54. data/lib/tkextlib/iwidgets/calendar.rb +0 -15
  55. data/lib/tkextlib/iwidgets/entryfield.rb +0 -21
  56. data/lib/tkextlib/iwidgets/notebook.rb +2 -2
  57. data/lib/tkextlib/iwidgets/scrolledcanvas.rb +6 -14
  58. data/lib/tkextlib/iwidgets/tabnotebook.rb +2 -2
  59. data/lib/tkextlib/tcllib/ctext.rb +2 -2
  60. data/lib/tkextlib/tcllib/plotchart.rb +5 -5
  61. data/lib/tkextlib/tcllib/validator.rb +6 -6
  62. data/lib/tkextlib/tile.rb +1 -1
  63. data/lib/tkextlib/tile/style.rb +1 -1
  64. data/lib/tkextlib/tile/treeview.rb +13 -20
  65. data/lib/tkextlib/tkDND/tkdnd.rb +6 -22
  66. data/lib/tkextlib/tkHTML/htmlwidget.rb +1 -1
  67. data/lib/tkextlib/tktable/tktable.rb +1 -1
  68. data/lib/tkextlib/treectrl/tktreectrl.rb +12 -20
  69. data/lib/tkextlib/vu/pie.rb +1 -1
  70. data/sample/binding_sample.rb +2 -2
  71. data/sample/cmd_res_test.rb +1 -1
  72. data/sample/demos-en/widget +21 -21
  73. data/sample/demos-jp/widget +4 -4
  74. data/sample/multi-ip_sample.rb +0 -3
  75. data/sample/multi-ip_sample2.rb +1 -1
  76. data/sample/resource.en +3 -3
  77. data/sample/resource.ja +3 -3
  78. data/sample/tcltklib/sample1.rb +2 -2
  79. data/sample/tkballoonhelp.rb +2 -2
  80. data/sample/tkextlib/tkHTML/ss.rb +0 -6
  81. data/sample/tkmulticolumnlist.rb +2 -2
  82. data/sample/tkmultilistframe.rb +2 -2
  83. data/sample/tkoptdb.rb +14 -16
  84. data/tk.gemspec +4 -4
  85. metadata +6 -13
  86. data/ChangeLog.tkextlib +0 -949
  87. data/old-README.tcltklib.ja +0 -159
  88. data/sample/binstr_usage.rb +0 -46
  89. data/sample/remote-ip_sample2.rb +0 -57
  90. data/sample/safe-tk.rb +0 -132
  91. data/sample/tkoptdb-safeTk.rb +0 -74
  92. data/sample/tktree.rb +0 -104
  93. data/sample/tktree.tcl +0 -305
@@ -1,104 +0,0 @@
1
- # frozen_string_literal: false
2
- ##########################################################################
3
- # TkTree widget class
4
- #
5
- # see <http://wiki.tcl.tk/10615>
6
- #
7
- # Note: optional argument '-font' of the Tcl library is changed to
8
- # 'itemfont' on this Ruby library, because of avoiding font
9
- # operation trouble in 'initialize' method ( see the following
10
- # test script ).
11
- #
12
- ##########################################################################
13
- require 'tk'
14
-
15
- class TkTree < TkCanvas
16
- TCL_SCRIPT_PATH = File.join(File.dirname(__FILE__), 'tktree.tcl')
17
-
18
- def create_self(keys)
19
- args = [@path]
20
- if keys.kind_of?(Hash)
21
- font = keys.delete('itemfont')
22
- # font = hash_kv(font) if font.kind_of?(Hash)
23
- keys['font'] = font if font
24
- # args.concat(hash_kv(keys))
25
- args << keys
26
- end
27
- begin
28
- tk_call('::tktree::treecreate', *args)
29
- rescue NameError, RuntimeError
30
- Tk.load_tclscript(TkTree::TCL_SCRIPT_PATH)
31
- tk_call('::tktree::treecreate', *args)
32
- end
33
- end
34
-
35
- def newitem(itempath, keys = nil)
36
- if keys.kind_of?(Hash)
37
- keys = _symbolkey2str(keys)
38
- font = keys.delete('itemfont')
39
- # font = hash_kv(font) if font.kind_of?(Hash)
40
- keys['font'] = font if font
41
- # tk_call('::tktree::newitem', @path, itempath, *hash_kv(keys))
42
- tk_call('::tktree::newitem', @path, itempath, keys)
43
- else
44
- tk_call('::tktree::newitem', @path, itempath)
45
- end
46
- end
47
-
48
- def delitem(itempath)
49
- tk_call('::tktree::delitem', @path, itempath)
50
- end
51
-
52
- def labelat(xpos, ypos)
53
- tk_call('::tktree::delitem', @path, xpos, ypos)
54
- end
55
-
56
- def getselection
57
- tk_call('::tktree::getselection', @path)
58
- end
59
-
60
- def setselection(itempath)
61
- tk_call('::tktree::getselection', @path, itempath)
62
- end
63
- end
64
-
65
-
66
- ##########################################################################
67
- # test script
68
- ##########################################################################
69
- if __FILE__ == $0
70
- TkLabel.new(:text=><<EOL, :relief=>:ridge, :justify=>:left).pack
71
-
72
- This is a sample to use a Tcl library script on Ruby/Tk.
73
- This sample loads tktree.tcl (see <http://wiki.tcl.tk/10615>)
74
- and calls functions of the Tcl script.
75
- EOL
76
-
77
- items = %w(/group1/item1 /group1/item2 /group1/subgroup/item1 /group2/item1 /item1)
78
-
79
- tr1 = TkTree.new.pack(:expand=>true, :fill=>:both)
80
- tr1.focus
81
-
82
- items.each{|item|
83
- tr1.newitem(item,
84
- :command=>proc{Tk.messageBox(:message=>"#{item} executed")})
85
- }
86
-
87
- f = TkFrame.new.pack(:expand=>true, :fill=>:both)
88
- tr2 = TkTree.new(f, :bg=>'black', #:itemfont=>{:family=>'Times', :size=>14},
89
- :textcolor=>'red', :bd=>4, :relief=>:ridge,
90
- :selectbackground=>'darkBlue', :selectforeground=>'yellow',
91
- :selectborderwidth=>3, :linecolor=>'yellow') {
92
- yscrollbar(TkScrollbar.new(f, :width=>10).pack(:side=>:right, :fill=>:y))
93
- xscrollbar(TkScrollbar.new(f, :width=>10).pack(:side=>:bottom, :fill=>:x))
94
- pack(:expand=>true, :fill=>:both)
95
- }
96
-
97
- items.each{|item|
98
- tr2.newitem(item, :textcolor=>'green', :image=>'',
99
- :itemfont=>{:family=>'Times', :size=>10},
100
- :command=>proc{Tk.messageBox(:message=>"#{item} executed")})
101
- }
102
-
103
- Tk.mainloop
104
- end
@@ -1,305 +0,0 @@
1
- #
2
- # This Tcl/Tk script is quoted from <http://wiki.tcl.tk/10615>.
3
- #
4
- package require Tk
5
- namespace eval ::tktree {
6
-
7
- # Images used for open and close state of subgroups
8
- set ::tktree::imgcollapse [image create photo .tktreeopenbm -data {
9
- R0lGODdhCQAJAIAAAAEBAf///ywAAAAACQAJAAACEISPoRvG614D80x5ZXyogwIAOw==}]
10
- set ::tktree::imgexpand [image create photo .tktreeclosebm -data {
11
- R0lGODdhCQAJAIAAAAEBAf///ywAAAAACQAJAAACEYSPoRu28KCSDSJLc44s3lMAADs=}]
12
- ###Default images for groups and children
13
- set ::tktree::imgsubgroups [image create photo .tktreeimgfolder -data {
14
- R0lGODlhEAANAKIAANnZ2Xh4eLi4uPj4APj4+AAAAP///////yH5BAEAAAAA
15
- LAAAAAAQAA0AAANkCIChiqDLITgyEgi6GoIjIyMYugCBpMsaWBA0giMjIzgy
16
- UYBBMjIoIyODEgVBODIygiMjE1gQJIMyMjIoI1GAQSMjODIyghMFQSgjI4My
17
- MhJYEDSCIyMjODJRgKHLXAiApcsMmAA7}]
18
- set ::tktree::imgchildren [image create photo .tktreeimgfile -data {
19
- R0lGODlhDQAQAKIAANnZ2Xh4ePj4+Li4uAAAAP///////////yH5BAEAAAAA
20
- LAAAAAANABAAAANSGLoLgACBoqsRCBAoujqCASGDojtESCEihCREIjgUKLo8
21
- hCGCpCsySIGiy0MYIki6IoMUKLo8hCGCpCsySIGiy0MYKLo8hIGiy0MYOLo8
22
- SLrMCQA7}]
23
-
24
- #### Swtich all subgroups of a layer to open or close
25
- proc ::tktree::switchlayer {win opn {layer /}} {
26
- variable cfg
27
- foreach child $cfg($win,$layer:subgroups) {
28
- set cfg($win,$child:open) $opn
29
- switchlayer $win $opn $child
30
- }
31
- buildwhenidle $win
32
- }
33
-
34
- #### will open or close the item given
35
- proc ::tktree::switchstate {win item} {
36
- set ::tktree::cfg($win,$item:open) [expr ! $::tktree::cfg($win,$item:open)]
37
- buildwhenidle $win
38
- }
39
-
40
- #### Select the next item up or down
41
- proc ::tktree::updown {win down} {
42
- variable cfg
43
- set index [lsearch -exact $cfg($win,sortlist) $cfg($win,selection)]
44
- if {$down} {incr index} {incr index -1}
45
- if {$index < 0} {set index end} elseif {$index >= [llength $cfg($win,sortlist)]} {set index 0}
46
- setselection $win [lindex $cfg($win,sortlist) $index]
47
- }
48
-
49
- #### left-right button binding commands
50
- proc ::tktree::leftright {win right} {
51
- variable cfg
52
- set item $cfg($win,selection)
53
- set index [lsearch -exact $cfg($win,sortlist) $item]
54
- set parentindex [lsearch -exact $cfg($win,sortlist) [file dirname $item]]
55
- if {$parentindex == -1} {set parentindex [expr $index - 1]}
56
- if {$cfg($win,$item:group)} {
57
- if {$right} {
58
- if {$cfg($win,$item:open)} {incr index} {set cfg($win,$item:open) 1}
59
- } else {
60
- if {$cfg($win,$item:open)} {set cfg($win,$item:open) 0} {set index $parentindex}
61
- }
62
- } else {
63
- if {$right} {incr index} {set index $parentindex}
64
- }
65
- if {$index < 0} {set index end} elseif {$index >= [llength $cfg($win,sortlist)]} {set index 0}
66
- setselection $win [lindex $cfg($win,sortlist) $index]
67
- buildwhenidle $win
68
- }
69
-
70
- #### will return the pathname of the item at x and y cooridinates
71
- proc ::tktree::labelat {win x y} {
72
- set x [$win canvasx $x]; set y [$win canvasy $y]
73
- foreach m [$win find overlapping $x $y $x $y] {
74
- if {[info exists ::tktree::cfg($win,tag:$m)]} {return $::tktree::cfg($win,tag:$m)}
75
- }
76
- return ""
77
- }
78
-
79
- #### will return the path of the current selection in the given tree widget
80
- proc ::tktree::getselection {win} {
81
- return $::tktree::cfg($win,selection)
82
- }
83
-
84
- #### adjust the scrollview to show the selected item as needed
85
- proc ::tktree::scrolladjust {win tag} {
86
- update
87
- set item [$win bbox $tag]
88
- set region [$win cget -scrollregion]
89
- foreach {axis idx1 idx2} {yview 1 3 xview 0 2} {
90
- set range [expr abs([lindex $region $idx2]) - abs([lindex $region $idx1])]
91
- set itemtop [lindex $item $idx1]; set itembot [lindex $item $idx2]
92
- set viewtop [expr $range * [lindex [$win $axis] 0]]
93
- set viewbot [expr $range * [lindex [$win $axis] 1]]
94
- if {$itembot > $viewbot} {$win $axis moveto [expr ($itembot. - $viewbot + $viewtop) / $range]}
95
- if {$itemtop < $viewtop} {$win $axis moveto [expr $itemtop. / $range]}
96
- }
97
- }
98
-
99
- #### will set the current selection to the given item on the given tree
100
- proc ::tktree::setselection {win item} {
101
- variable cfg
102
- if {![llength $cfg($win,sortlist)]} {return}
103
- if {$item eq ""} {set item [lindex $cfg($win,sortlist) 0]}
104
- if {![info exists cfg($win,$item:tag)]} {set item [lindex $cfg($win,sortlist) 0]}
105
- if {[$win gettags $cfg($win,$item:tag)] ne ""} {
106
- $win select from $cfg($win,$item:tag) 0
107
- $win select to $cfg($win,$item:tag) end
108
- set cfg($win,selection) $item
109
- scrolladjust $win $cfg($win,$item:tag)
110
- } {
111
- setselection $win "/[lindex $cfg($win,/:sortlist) 0]"
112
- }
113
- }
114
-
115
- #### will delete the item given from the tree given
116
- proc ::tktree::delitem {win item} {
117
- variable cfg
118
- if {$item eq "/"} {
119
- array unset cfg $win,* ; catch {destroy $win}
120
- } {
121
- set group [file dirname $item]
122
- if {$cfg($win,$item:group)} {set type subgroups} {set type children}
123
- set index [lsearch -exact $cfg($win,$group:$type) $item]
124
- set cfg($win,$group:$type) [lreplace $cfg($win,$group:$type) $index $index]
125
- array unset cfg $win,$item*
126
- buildwhenidle $win
127
- }
128
- }
129
-
130
- #### create a new item in the tree and rebuild the widget
131
- proc ::tktree::newitem {win item args} {
132
- variable cfg
133
- if {[string index $item 0] ne "/"} {set item /$item}
134
- if {[string index $item end] eq "/"} {
135
- set subgroup 1
136
- set type subgroups
137
- set item [string range $item 0 end-1]
138
- set cfg($win,$item:command) [list ::tktree::switchstate $win $item]
139
- } {
140
- set subgroup 0
141
- set type children
142
- set cfg($win,$item:command) {}
143
- }
144
- #Build parent group if needed
145
- set group [file dirname $item]
146
- if {![info exists cfg($win,$group:open)]} {newitem $win "$group\/"}
147
- lappend cfg($win,$group:$type) $item
148
- #Configure the new item
149
- set cfg($win,$item:group) $subgroup
150
- set cfg($win,$item:subgroups) {}
151
- set cfg($win,$item:children) {}
152
- set cfg($win,$item:sortlist) {}
153
- set cfg($win,$item:tags) {}
154
- set cfg($win,$item:open) 0
155
- set cfg($win,$item:image) {}
156
- set cfg($win,$item:textcolor) $cfg($win,textcolor)
157
- set cfg($win,$item:font) $cfg($win,font)
158
- if {$cfg($win,images)} {set cfg($win,$item:image) [eval list \$::tktree::img$type]}
159
- foreach {confitem confval} $args {
160
- switch -exact -- $confitem {
161
- -textcolor {set cfg($win,$item:textcolor) $confval}
162
- -command {set cfg($win,$item:command) $confval}
163
- -image {set cfg($win,$item:image) $confval}
164
- -font {set cfg($win,$item:font) $confval}
165
- }
166
- }
167
- buildwhenidle $win
168
- }
169
-
170
- #### Draw the given layer of the tree on the canvas starting at xposition
171
- proc ::tktree::buildlayer {win layer xpos} {
172
- variable cfg
173
- #Record y positions for vertical line later on
174
- set ystart $cfg($win,y); set yend $cfg($win,y)
175
- if {$layer eq "/"} {set cfg($win,sortlist) ""}
176
- foreach child $cfg($win,$layer:sortlist) {
177
- lappend cfg($win,sortlist) $child
178
- #Check spacing required for images
179
- set imgwidth 0; set imgheight 0
180
- if {[string length $cfg($win,$child:image)]} {
181
- set imgwidth [expr ([image width $cfg($win,$child:image)] + 2) / 2]
182
- set imgheight [expr ([image height $cfg($win,$child:image)] + 2) / 2]
183
- }
184
- #find X-axis points for image, horiz line, and text
185
- if {$imgwidth} {
186
- set centerX [expr $imgwidth + $xpos + 7]
187
- set rightX [expr $xpos + 7]
188
- set textX [expr ($imgwidth * 2) + $xpos + 10]
189
- } {
190
- set centerX [expr $xpos + 10]
191
- set rightX [expr $centerX + 4]
192
- set textX [expr $rightX + 1]
193
- }
194
- #Find the proper amount to increment the y axis
195
- set fontheight [lindex [font metrics $cfg($win,$child:font)] 5]
196
- set yincr [expr ($fontheight + 1) / 2]
197
- if {$imgheight > $yincr} {set yincr $imgheight}
198
- incr cfg($win,y) $yincr
199
- #Draw the horizonal line
200
- $win create line $xpos $cfg($win,y) $rightX $cfg($win,y) -fill $cfg($win,linecolor)
201
- set yend $cfg($win,y)
202
- #Draw the image, if it exists
203
- if {$imgwidth} {
204
- set it [$win create image $centerX $cfg($win,y) -image $cfg($win,$child:image)]
205
- $win bind $it <1> [list ::tktree::setselection $win $child]
206
- }
207
- #Draw text and store tags for reference
208
- set cfg($win,$child:tag) [$win create text $textX $cfg($win,y) \
209
- -text [file tail $child] -font $cfg($win,$child:font) -anchor w -tags x -fill $cfg($win,$child:textcolor)]
210
- set cfg($win,tag:$cfg($win,$child:tag)) $child
211
- #Command binding
212
- $win bind $cfg($win,$child:tag) <1> [list ::tktree::setselection $win $child]
213
- $win bind $cfg($win,$child:tag) <Double-1> $cfg($win,$child:command)
214
- #next step up on the y axis
215
- incr cfg($win,y) $yincr
216
- #If its a group, add open-close functionality
217
- if {$cfg($win,$child:group)} {
218
- if {$cfg($win,$child:open)} {set img collapse} {set img expand}
219
- set ocimg [$win create image $xpos [expr $cfg($win,y) - $yincr] -image [eval list \$::tktree::img$img]]
220
- $win bind $ocimg <1> [list ::tktree::switchstate $win $child]
221
- if {$cfg($win,$child:open)} {buildlayer $win $child $centerX}
222
- }
223
- }
224
- #Vertical line
225
- $win lower [$win create line $xpos [expr $ystart - 7] $xpos $yend -fill $cfg($win,linecolor)]
226
- }
227
-
228
- #### sort the layer by subgroups then children
229
- proc ::tktree::sortlayer {win {layer /}} {
230
- variable cfg
231
- set cfg($win,$layer:subgroups) [lsort -dictionary $cfg($win,$layer:subgroups)]
232
- set cfg($win,$layer:children) [lsort -dictionary $cfg($win,$layer:children)]
233
- set cfg($win,$layer:sortlist) [join [list $cfg($win,$layer:subgroups) $cfg($win,$layer:children)]]
234
- foreach group $cfg($win,$layer:subgroups) {sortlayer $win $group}
235
- }
236
-
237
- #### build the tree at the given path
238
- proc ::tktree::buildtree {win} {
239
- variable cfg
240
- $win delete all
241
- sortlayer $win
242
- set xpos 5
243
- set cfg($win,y) 5
244
- #Draw global expand/contract button, if needed
245
- if {[string length $cfg($win,/:subgroups)] && $cfg($win,expandall)} {
246
- set exp 0
247
- foreach subgroup $cfg($win,/:subgroups) {incr exp $cfg($win,$subgroup:open)}
248
- if {$exp} {set type collapse} {set type expand}
249
- set ocimg [$win create image 1 1 -image [eval list \$::tktree::img$type] -anchor w]
250
- $win bind $ocimg <1> [list ::tktree::switchlayer $win [expr ! $exp]]
251
- }
252
- #Build the layers and set initial selection
253
- buildlayer $win / $xpos
254
- $win config -scrollregion [$win bbox all]
255
- setselection $win $cfg($win,selection)
256
- }
257
-
258
- #### internal use - set up a handle to build the tree when everything is idle
259
- proc ::tktree::buildwhenidle {win} {
260
- catch {after cancel $::tktree::cfg($win,buildHandle)}
261
- set ::tktree::cfg($win,buildHandle) [after idle [list ::tktree::buildtree $win]]
262
- }
263
-
264
- #### will create a new tree widget at the given path
265
- proc ::tktree::treecreate {win args} {
266
- variable cfg
267
- #Default configuration for new tree
268
- set cfg($win,selection) {}
269
- set cfg($win,selidx) {}
270
- set cfg($win,/:subgroups) {}
271
- set cfg($win,/:children) {}
272
- set cfg($win,/:open) 1
273
- set cfg($win,images) 1
274
- set cfg($win,expandall) 1
275
- set cfg($win,linecolor) black
276
- set cfg($win,textcolor) black
277
- set cfg($win,font) {-family Helvetica -size 10}
278
- #Parse and setup custom configuration options
279
- set canvascfg ""
280
- foreach {item val} $args {
281
- switch -- $item {
282
- -linecolor {set cfg($win,linecolor) $val}
283
- -textcolor {set cfg($win,textcolor) $val}
284
- -font {set cfg($win,font) $val}
285
- -images {set cfg($win,images) $val}
286
- -expandall {set cfg($win,expandall) $val}
287
- default {lappend canvascfg $item $val}
288
- }
289
- }
290
- #Build the canvas
291
- eval {canvas $win -takefocus 1} $canvascfg
292
- bind $win <Destroy> [list ::tktree::delitem $win /]
293
- bind $win <1> [list focus $win]
294
- bind $win <Return> {eval $::tktree::cfg(%W,[::tktree::getselection %W]:command)}
295
- bind $win <space> {eval $::tktree::cfg(%W,[::tktree::getselection %W]:command)}
296
- bind $win <Up> [list ::tktree::updown $win 0]
297
- bind $win <Down> [list ::tktree::updown $win 1]
298
- bind $win <Left> [list ::tktree::leftright $win 0]
299
- bind $win <Right> [list ::tktree::leftright $win 1]
300
-
301
- #Build the tree when idle
302
- buildwhenidle $win
303
- }
304
- }
305
-