1# optMenu.tcl -- 2# 3# This file defines the procedure tk_optionMenu, which creates 4# an option button and its associated menu. 5# 6# RCS: @(#) $Id$ 7# 8# Copyright (c) 1994 The Regents of the University of California. 9# Copyright (c) 1994 Sun Microsystems, Inc. 10# 11# See the file "license.terms" for information on usage and redistribution 12# of this file, and for a DISCLAIMER OF ALL WARRANTIES. 13# 14 15# ::tk_optionMenu -- 16# This procedure creates an option button named $w and an associated 17# menu. Together they provide the functionality of Motif option menus: 18# they can be used to select one of many values, and the current value 19# appears in the global variable varName, as well as in the text of 20# the option menubutton. The name of the menu is returned as the 21# procedure's result, so that the caller can use it to change configuration 22# options on the menu or otherwise manipulate it. 23# 24# Arguments: 25# w - The name to use for the menubutton. 26# varName - Global variable to hold the currently selected value. 27# firstValue - First of legal values for option (must be >= 1). 28# args - Any number of additional values. 29 30proc ::tk_optionMenu {w varName firstValue args} { 31 upvar #0 $varName var 32 33 if {![info exists var]} { 34 set var $firstValue 35 } 36 menubutton $w -textvariable $varName -indicatoron 1 -menu $w.menu \ 37 -relief raised -highlightthickness 1 -anchor c \ 38 -direction flush 39 menu $w.menu -tearoff 0 40 $w.menu add radiobutton -label $firstValue -variable $varName 41 foreach i $args { 42 $w.menu add radiobutton -label $i -variable $varName 43 } 44 return $w.menu 45} 46