# -*-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 }