You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

281 lines
9.0 KiB

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