Spaces:
Running
Running
# -*-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 | |
} | |