123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280 |
- # -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*-
- #
- # $Id: MkChoose.tcl,v 1.4 2004/03/28 02:44:56 hobbs Exp $
- #
- # MkChoose.tcl --
- #
- # This file implements the "Choosers" page in the widget demo
- #
- # This file has not been properly documented. It is NOT intended
- # to be used as an introductory demo program about Tix
- # programming. For such demos, please see the files in the
- # demos/samples directory or go to the "Samples" page in the
- # "widget demo"
- #
- #
- # Copyright (c) 1996, Expert Interface Technologies
- #
- # See the file "license.terms" for information on usage and redistribution
- # of this file, and for a DISCLAIMER OF ALL WARRANTIES.
- #
- proc MkChoosers {nb page} {
- set w [$nb subwidget $page]
- set name [tixOptionName $w]
- option add *$name*TixLabelFrame*label.padX 4
- tixLabelFrame $w.til -label "Chooser Widgets"
- tixLabelFrame $w.cbx -label "tixComboBox"
- tixLabelFrame $w.ctl -label "tixControl"
- tixLabelFrame $w.sel -label "tixSelect"
- tixLabelFrame $w.opt -label "tixOptionMenu"
- tixLabelFrame $w.fil -label "tixFileEntry"
- tixLabelFrame $w.fbx -label "tixFileSelectBox"
- tixLabelFrame $w.tbr -label "Tool Bar"
- MkTitle [$w.til subwidget frame]
- MkCombo [$w.cbx subwidget frame]
- MkControl [$w.ctl subwidget frame]
- MkSelect [$w.sel subwidget frame]
- MkOptMenu [$w.opt subwidget frame]
- MkFileBox [$w.fbx subwidget frame]
- MkFileEnt [$w.fil subwidget frame]
- MkToolBar [$w.tbr subwidget frame]
-
- #
- # First column: comBox and selector
- tixForm $w.cbx -top 0 -left 0 -right %33
- tixForm $w.sel -left 0 -right &$w.cbx -top $w.cbx
- tixForm $w.opt -left 0 -right &$w.cbx -top $w.sel -bottom -1
- #
- # Second column: title .. etc
- tixForm $w.til -left $w.cbx -right %66 -top 0
- tixForm $w.ctl -left $w.cbx -right &$w.til -top $w.til
- tixForm $w.fil -left $w.cbx -right &$w.til -top $w.ctl
- tixForm $w.tbr -left $w.cbx -right &$w.til -top $w.fil -bottom -1
- #
- # Third column: file selection
- tixForm $w.fbx -left %66 -right -1 -top 0
- }
- #----------------------------------------------------------------------
- # ComboBox
- #----------------------------------------------------------------------
- proc MkCombo {w} {
- set name [tixOptionName $w]
- option add *$name*TixComboBox*label.width 10
- option add *$name*TixComboBox*label.anchor e
- option add *$name*TixComboBox*entry.width 14
-
- tixComboBox $w.static -label "Static" \
- -editable false
- tixComboBox $w.editable -label "Editable" \
- -editable true
- tixComboBox $w.history -label "History" \
- -editable true -history true -anchor e
-
- $w.static insert end January
- $w.static insert end February
- $w.static insert end March
- $w.static insert end April
- $w.static insert end May
- $w.static insert end June
- $w.static insert end July
- $w.static insert end August
- $w.static insert end September
- $w.static insert end October
- $w.static insert end November
- $w.static insert end December
- $w.editable insert end "America"
- $w.editable insert end "Britain"
- $w.editable insert end "China"
- $w.editable insert end "Denmark"
- $w.editable insert end "Egypt"
- $w.history insert end "/usr/bin/mail"
- $w.history insert end "/etc/profile"
- $w.history insert end "/home/d/doe/Mail/letter"
- pack $w.static $w.editable $w.history -side top -padx 5 -pady 3
- }
- #----------------------------------------------------------------------
- # The Control widgets
- #----------------------------------------------------------------------
- set states {Alabama "New York" Pennsylvania Washington}
- proc stCmd {w by value} {
- global states
- set index [lsearch $states $value]
- set len [llength $states]
- set index [expr {$index + $by}]
- if {$index < 0} {
- set index [expr {$len -1}]
- }
- if {$index >= $len} {
- set index 0
- }
- return [lindex $states $index]
- }
- proc stValidate {w value} {
- global states
- if {[lsearch $states $value] == -1} {
- return [lindex $states 0]
- } else {
- return $value
- }
- }
- proc MkControl {w} {
- set name [tixOptionName $w]
- option add *$name*TixControl*label.width 10
- option add *$name*TixControl*label.anchor e
- option add *$name*TixControl*entry.width 13
- tixControl $w.simple -label Numbers
- tixControl $w.spintext -label States \
- -incrcmd [list stCmd $w.spintext 1] \
- -decrcmd [list stCmd $w.spintext -1] \
- -validatecmd [list stValidate .d] \
- -value "Alabama"
- pack $w.simple $w.spintext -side top -padx 5 -pady 3
- }
- #----------------------------------------------------------------------
- # The Select Widgets
- #----------------------------------------------------------------------
- proc MkSelect {w} {
- set name [tixOptionName $w]
- option add *$name*TixSelect*label.anchor c
- option add *$name*TixSelect*orientation vertical
- option add *$name*TixSelect*labelSide top
- tixSelect $w.sel1 -label "Mere Mortals" -allowzero true -radio true
- tixSelect $w.sel2 -label "Geeks" -allowzero true -radio false
- $w.sel1 add eat -text Eat
- $w.sel1 add work -text Work
- $w.sel1 add play -text Play
- $w.sel1 add party -text Party
- $w.sel1 add sleep -text Sleep
- $w.sel2 add eat -text Eat
- $w.sel2 add prog1 -text Program
- $w.sel2 add prog2 -text Program
- $w.sel2 add prog3 -text Program
- $w.sel2 add sleep -text Sleep
- pack $w.sel1 $w.sel2 -side left -padx 5 -pady 3 -fill x
- }
- #----------------------------------------------------------------------
- # The OptMenu Widget
- #----------------------------------------------------------------------
- proc MkOptMenu {w} {
- set name [tixOptionName $w]
- option add *$name*TixOptionMenu*label.anchor e
- tixOptionMenu $w.menu -label "File Format : " \
- -options {
- menubutton.width 15
- }
- $w.menu add command text -label "Plain Text"
- $w.menu add command post -label "PostScript"
- $w.menu add command format -label "Formatted Text"
- $w.menu add command html -label "HTML"
- $w.menu add separator sep
- $w.menu add command tex -label "LaTeX"
- $w.menu add command rtf -label "Rich Text Format"
- pack $w.menu -padx 5 -pady 3 -fill x
- }
- #----------------------------------------------------------------------
- # FileEntry
- #----------------------------------------------------------------------
- proc MkFileEnt {w} {
- set name [tixOptionName $w]
- message $w.msg \
- -relief flat -width 240 -anchor n\
- -text {Press the "open file" icon button and a\
- TixFileSelectDialog will popup.}
- tixFileEntry $w.ent -label "Select a file : "
- pack $w.msg -side top -expand yes -fill both -padx 3 -pady 3
- pack $w.ent -side top -fill x -padx 3 -pady 3
- }
- proc MkFileBox {w} {
- set name [tixOptionName $w]
- message $w.msg \
- -relief flat -width 240 -anchor n\
- -text {The TixFileSelectBox is Motif-style file selection\
- box with various enhancements. For example, you can adjust the\
- size of the two listboxes and your past selections are recorded.}
- tixFileSelectBox $w.box
- pack $w.msg -side top -expand yes -fill both -padx 3 -pady 3
- pack $w.box -side top -fill x -padx 3 -pady 3
- }
- #----------------------------------------------------------------------
- # Tool Bar
- #----------------------------------------------------------------------
- proc MkToolBar {w} {
- set name [tixOptionName $w]
- option add $name*TixSelect*frame.borderWidth 1
- message $w.msg -relief flat -width 240 -anchor n\
- -text {The Select widget is also good for arranging buttons\
- in a tool bar.}
- frame $w.bar -bd 2 -relief raised
- tixSelect $w.font -allowzero true -radio false -label {}
- tixSelect $w.para -allowzero false -radio true -label {}
- $w.font add bold -bitmap [tix getbitmap bold]
- $w.font add italic -bitmap [tix getbitmap italic]
- $w.font add underline -bitmap [tix getbitmap underlin]
- $w.font add capital -bitmap [tix getbitmap capital]
- $w.para add left -bitmap [tix getbitmap leftj]
- $w.para add right -bitmap [tix getbitmap rightj]
- $w.para add center -bitmap [tix getbitmap centerj]
- $w.para add justify -bitmap [tix getbitmap justify]
- pack $w.msg -side top -expand yes -fill both -padx 3 -pady 3
- pack $w.bar -side top -fill x -padx 3 -pady 3
- pack $w.para $w.font -in $w.bar -side left -padx 4 -pady 3
- }
- #----------------------------------------------------------------------
- # Title
- #----------------------------------------------------------------------
- proc MkTitle {w} {
- set name [tixOptionName $w]
- option add $name*TixSelect*frame.borderWidth 1
- message $w.msg \
- -relief flat -width 240 -anchor n\
- -text {There are many types of "choose" widgets that allow\
- the user to input different type of information.}
- pack $w.msg -side top -expand yes -fill both -padx 3 -pady 3
- }
|