Spaces:
Running
Running
File size: 3,588 Bytes
ba2f5d6 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*-
#
# $Id: Control.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 file demonstrates the use of the tixControl widget -- it is an
# entry widget with up/down arrow buttons. You can use the arrow buttons
# to adjust the value inside the entry widget.
#
# This example program uses three Control widgets. One lets you select
# integer values; one lets you select floating point values and the last
# one lets you select a few names.
#
proc RunSample {w} {
# Create the tixControls on the top of the dialog box
#
frame $w.top -border 1 -relief raised
# $w.top.a allows only integer values
#
# [Hint] The -options switch sets the options of the subwidgets.
# [Hint] We set the label.width subwidget option of the Controls to
# be 16 so that their labels appear to be aligned.
#
global demo_maker demo_thrust demo_num_engins
set demo_maker P&W
set demo_thrust 20000.0
set demo_num_engins 2
tixControl $w.top.a -label "Number of Engines: " -integer true \
-variable demo_num_engins -min 1 -max 4\
-options {
entry.width 10
label.width 20
label.anchor e
}
tixControl $w.top.b -label "Thrust: " -integer false \
-min 10000.0 -max 60000.0 -step 500\
-variable demo_thrust \
-options {
entry.width 10
label.width 20
label.anchor e
}
tixControl $w.top.c -label "Engin Maker: " \
-incrcmd "ctl:adjust_maker $w.top.c +1" \
-decrcmd "ctl:adjust_maker $w.top.c -1" \
-validatecmd "ctl:validate_maker $w.top.c" \
-value "P&W" \
-options {
entry.width 10
label.width 20
label.anchor e
}
pack $w.top.a $w.top.b $w.top.c -side top -anchor w
# Use a ButtonBox to hold the buttons.
#
tixButtonBox $w.box -orientation horizontal
$w.box add ok -text Ok -underline 0 -command "ctl:okcmd $w" \
-width 6
$w.box add cancel -text Cancel -underline 0 -command "destroy $w" \
-width 6
pack $w.box -side bottom -fill x
pack $w.top -side top -fill both -expand yes
}
set ctl_makers {GE P&W "Rolls Royce"}
# This procedure gets called when the user presses the up/down arrow buttons.
# We return the "previous" or "next" engin maker according to the "$by"
# argument
#
proc ctl:adjust_maker {w by value} {
global ctl_makers
set index [lsearch $ctl_makers $value]
set len [llength $ctl_makers]
set index [expr $index $by]
if {$index < 0} {
set index [expr $len -1]
}
if {$index >= $len} {
set index 0
}
return [lindex $ctl_makers $index]
}
proc ctl:validate_maker {w value} {
global ctl_makers
if {[lsearch $ctl_makers $value] == -1} {
return [lindex $ctl_makers 0]
} else {
return $value
}
}
proc ctl:okcmd {w} {
global demo_maker demo_thrust demo_num_engins
tixDemo:Status "You selected $demo_num_engins engin(s) of thrust $demo_thrust made \
by $demo_maker"
destroy $w
}
# This "if" statement makes it possible to run this script file inside or
# outside of the main demo program "widget".
#
if {![info exists tix_demo_running]} {
wm withdraw .
set w .demo
toplevel $w; wm transient $w ""
RunSample $w
bind $w <Destroy> exit
}
|