| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- # -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*-
- #
- # $Id: ChkList.tcl,v 1.3 2001/12/09 05:31:07 idiscovery Exp $
- #
- # 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 program demonstrates the use of the tixCheckList widget.
- #
- proc RunSample {w} {
- set top [frame $w.f -bd 1 -relief raised]
- set box [tixButtonBox $w.b -bd 1 -relief raised]
- pack $box -side bottom -fill both
- pack $top -side top -fill both -expand yes
- #------------------------------------------------------------
- # Create the 1st CheckList (Multiple Selection)
- #
- set f [frame $top.f1]
- pack $f -side left -expand yes -fill both -padx 4
- set l [label $f.l -text "Choose languages: "]
- pack $l -side top -fill x -padx 4 -pady 4
- set c1 [tixCheckList $f.c -scrollbar auto]
- pack $c1 -expand yes -fill both -padx 4 -pady 4
- set b1 [button $f.btn -text "Results >>" -command "ChkList_Result $c1"]
- pack $b1 -anchor c
- #------------------------------------------------------------
- # Create the 2nd CheckList (Single Selection, using the -radio option)
- #
- set f [frame $top.f2]
- pack $f -side left -expand yes -fill both -padx 4
- set l [label $f.l -text "Choose one language: "]
- pack $l -side top -fill x -padx 4 -pady 4
- set c2 [tixCheckList $f.c -scrollbar auto -radio true]
- pack $c2 -expand yes -fill both -padx 4 -pady 4
- # Fill up the two checklists with languages
- #
- set names(1) "Ada"
- set names(2) "BCPL"
- set names(3) "C"
- set names(4) "Dylan"
- set names(5) "Eiffel"
- set names(6) "Fortran"
- set names(7) "Incr Tcl"
- set names(8) "Python"
- set names(9) "Scheme"
- set names(0) "TCL"
- set h1 [$c1 subwidget hlist]
- set h2 [$c2 subwidget hlist]
- foreach ent {1 2 3 4 5 6 7 8 9 0} {
- $h1 add $ent -itemtype imagetext -text $names($ent)
- }
- foreach ent {1 2 3 4 5 6 7 8 9 0} {
- $h2 add $ent -itemtype imagetext -text $names($ent)
- $c2 setstatus $ent off
- }
- $c1 setstatus 1 on
- $c1 setstatus 2 on
- $c1 setstatus 3 default
- $c1 setstatus 4 off
- $c1 setstatus 5 off
- $c1 setstatus 6 on
- $c1 setstatus 7 off
- $c1 setstatus 8 on
- $c1 setstatus 9 on
- $c1 setstatus 0 default
- #------------------------------------------------------------
- # Create the 3nd CheckList (a tree). Also, we disable some
- # sub-selections if the top-level selections are not selected.
- # i.e., if the user doesn't like any functional languages,
- # make sure he doesn't select Lisp.
- #
- set f [frame $top.f3]
- pack $f -side left -expand yes -fill both -padx 4
- set l [label $f.l -text "Choose languages: "]
- pack $l -side top -fill x -padx 4 -pady 4
- set c3 [tixCheckList $f.c -scrollbar auto -options {
- hlist.indicator 1
- hlist.indent 20
- }]
- pack $c3 -expand yes -fill both -padx 4 -pady 4
- set h3 [$c3 subwidget hlist]
- $h3 add 0 -itemtype imagetext -text "Functional Languages"
- $h3 add 1 -itemtype imagetext -text "Imperative Languages"
- $h3 add 0.0 -itemtype imagetext -text Lisp
- $h3 add 0.1 -itemtype imagetext -text Scheme
- $h3 add 1.0 -itemtype imagetext -text C
- $h3 add 1.1 -itemtype imagetext -text Python
- $c3 setstatus 0 on
- $c3 setstatus 1 on
- $c3 setstatus 0.0 off
- $c3 setstatus 0.1 off
- $c3 setstatus 1.0 on
- $c3 setstatus 1.1 off
- $c3 config -browsecmd "ChkList:Monitor $c3"
- $c3 config -command "ChkList:Monitor $c3"
- $c3 autosetmode
- global chklist tixOption
- set chklist(disabled) [tixDisplayStyle imagetext -fg $tixOption(disabled_fg) \
- -refwindow [$c3 subwidget hlist]]
- set chklist(normal) [tixDisplayStyle imagetext -fg black \
- -refwindow [$c3 subwidget hlist]]
- # Create the buttons
- #
- $box add ok -text Ok -command "destroy $w" -width 6
- $box add cancel -text Cancel -command "destroy $w" -width 6
- }
- proc ChkList_Result {clist} {
- tixDemo:Status "Selected items: [$clist getselection on]"
- tixDemo:Status "Unselected items: [$clist getselection off]"
- tixDemo:Status "Default items: [$clist getselection default]"
- }
- # This function monitors if any of the two "general groups"
- # (functional and imperative languages) are de-selected. If so, it
- # sets all the sub-selections to non-selectable by setting their -state
- # to disabled.
- #
- proc ChkList:Monitor {c3 ent} {
- global chklist
- set h [$c3 subwidget hlist]
- if {[$c3 getstatus 0] == "on"} {
- set state normal
- } else {
- set state disabled
- }
- $h entryconfig 0.0 -state $state -style $chklist($state)
- $h entryconfig 0.1 -state $state -style $chklist($state)
- if {[$c3 getstatus 1] == "on"} {
- set state normal
- } else {
- set state disabled
- }
- $h entryconfig 1.0 -state $state -style $chklist($state)
- $h entryconfig 1.1 -state $state -style $chklist($state)
- }
- if {![info exists tix_demo_running]} {
- wm withdraw .
- set w .demo
- toplevel $w; wm transient $w ""
- RunSample $w
- bind $w <Destroy> exit
- }
|