summaryrefslogtreecommitdiff
path: root/tix/demos/samples/SHList.tcl
diff options
context:
space:
mode:
Diffstat (limited to 'tix/demos/samples/SHList.tcl')
-rw-r--r--tix/demos/samples/SHList.tcl107
1 files changed, 107 insertions, 0 deletions
diff --git a/tix/demos/samples/SHList.tcl b/tix/demos/samples/SHList.tcl
new file mode 100644
index 00000000000..d416071ee28
--- /dev/null
+++ b/tix/demos/samples/SHList.tcl
@@ -0,0 +1,107 @@
+# Tix Demostration Program
+#
+# This sample program is structured in such a way so that it can be
+# executed from the Tix demo program "widget": it must have a
+# procedure called "RunSample". It should also have the "if" statment
+# at the end of this file so that it can be run as a standalone
+# program using tixwish.
+
+# This file demonstrates the use of the tixScrolledHList widget.
+#
+
+proc RunSample {w} {
+
+ # We create the frame and the ScrolledHList widget
+ # at the top of the dialog box
+ #
+ frame $w.top -relief raised -bd 1
+
+ # Put a simple hierachy into the HList (two levels). Use colors and
+ # separator widgets (frames) to make the list look fancy
+ #
+ tixScrolledHList $w.top.a
+ pack $w.top.a -expand yes -fill both -padx 10 -pady 10 -side left
+
+
+ # This is our little relational database
+ #
+ set bosses {
+ {jeff "Jeff Waxman"}
+ {john "John Lee"}
+ {peter "Peter Kenson"}
+ }
+
+ set employees {
+ {alex john "Alex Kellman"}
+ {alan john "Alan Adams"}
+ {andy peter "Andreas Crawford"}
+ {doug jeff "Douglas Bloom"}
+ {jon peter "Jon Baraki"}
+ {chris jeff "Chris Geoffrey"}
+ {chuck jeff "Chuck McLean"}
+ }
+
+ set hlist [$w.top.a subwidget hlist]
+
+ # Let configure the appearance of the HList subwidget
+ #
+ $hlist config -separator "." -width 25 -drawbranch 0 -indent 10
+
+ set index 0
+ foreach line $bosses {
+ if {$index != 0} {
+ frame $hlist.sep$index -bd 2 -height 2 -width 150 -relief sunken \
+ -bg [$hlist cget -bg]
+
+ $hlist addchild {} -itemtype window \
+ -window $hlist.sep$index -state disabled
+ }
+ $hlist add [lindex $line 0] -itemtype text \
+ -text [lindex $line 1]
+ incr index
+ }
+
+ foreach line $employees {
+ # "." is the separator character we chose above
+ #
+ set entrypath [lindex $line 1].[lindex $line 0]
+ # ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^
+ # parent entryPath / child's name
+
+ $hlist add $entrypath -text [lindex $line 2]
+
+ # [Hint] Make sure the [lindex $line 1].[lindex $line 0] you choose
+ # are unique names. If you cannot be sure of this (because of
+ # the structure of your database, e.g.) you can use the
+ # "addchild" widget command instead:
+ #
+ # $hlist addchild [lindex $line 1] -text [lindex $line 2]
+ # ^^^^^^^^^^^^^^^^
+ # parent entryPath
+
+ }
+
+ # Use a ButtonBox to hold the buttons.
+ #
+ tixButtonBox $w.box -orientation horizontal
+ $w.box add ok -text Ok -underline 0 -command "destroy $w" \
+ -width 6
+ $w.box add cancel -text Cancel -underline 0 -command "destroy $w" \
+ -width 6
+
+ pack $w.box -side bottom -fill x
+ pack $w.top -side top -fill both -expand yes
+}
+
+
+# This "if" statement makes it possible to run this script file inside or
+# outside of the main demo program "widget".
+#
+if {![info exists tix_demo_running]} {
+ wm withdraw .
+ set w .demo
+ toplevel $w
+ RunSample $w
+ bind .demo <Destroy> exit
+}
+