section3_7.html
section3_6.html
subsubsection3_6_1_4.html
tableofcontents3_1.html
Next:
section3_7.html
Selecting Files and
Up:
section3_6.html
Hierarchical Listbox
Previous:
subsubsection3_6_1_4.html
Handling the Selection
Creating Collapsible Tree Structures with TixTree
The TixTree widget is based on the TixScrolledHList widget; you can
use it to create a collapsible hierarchical structure so that the
user can conveniently navigate through a large number of list
entries. As shown in figure 4-7, the TixTree puts
the little ``
+
'' and ``
-
'' icons next to the branches of
an HList entry that has descendants. These two icons are knows as
the open and close icons, respectively. When the user presses the
open icon next to an entry, its immediate children of an entry will
be displayed. Conversely, when the user presses the close icon, the
entry's children will become hidden.
Program 4-6 shows how to create a collapsible tree. We
first create a TixTree widget. Then we add the entries in your
hierarchical structure into its
hlist
subwidget using the add
method of this subwidget. When we are finished with adding the entries,
we just call the
autosetmode
method of the TixTree widget, which
will automatically adds the open and close icons next to the entries who
have children.
set folder [tix getimage folder]
tixTree .tree -command Command -options {
hlist.separator  /
hlist.itemType   imagetext
hlist.drawBranch true
hlist.indent     18
}
pack .tree -expand yes -fill both
set hlist [.tree subwidget hlist]
foreach directory {/ /usr /usr/bin /usr/local /etc /etc/rc.d} {
$hlist add $directory -image $folder -text $directory
}
.tree autosetmode
proc Command {entry} {
puts "you have selected $entry"
}
(Figure 4-6) Creating a Collapsible Hierarchy
Note that in program 4-6 we use the
-command
option of the TixTree
widget, not the
-command
option of its
hlist
subwidget. This
is because the TixTree actually used the
-command
option of its
hlist
subwidget to process some low-level events. In general, if
both a mega-widget and its subwidget have the options of the same name,
you would always use the option that belongs to the mega-widget.
http://tix.sourceforge.net
http://tix.sourceforge.net
