| # optMenu.tcl -- |
| # |
| # This file defines the procedure tk_optionMenu, which creates |
| # an option button and its associated menu. |
| # |
| # RCS: @(#) $Id: optMenu.tcl,v 1.4 2001/08/01 16:21:11 dgp Exp $ |
| # |
| # Copyright (c) 1994 The Regents of the University of California. |
| # Copyright (c) 1994 Sun Microsystems, Inc. |
| # |
| # See the file "license.terms" for information on usage and redistribution |
| # of this file, and for a DISCLAIMER OF ALL WARRANTIES. |
| # |
| |
| # ::tk_optionMenu -- |
| # This procedure creates an option button named $w and an associated |
| # menu. Together they provide the functionality of Motif option menus: |
| # they can be used to select one of many values, and the current value |
| # appears in the global variable varName, as well as in the text of |
| # the option menubutton. The name of the menu is returned as the |
| # procedure's result, so that the caller can use it to change configuration |
| # options on the menu or otherwise manipulate it. |
| # |
| # Arguments: |
| # w - The name to use for the menubutton. |
| # varName - Global variable to hold the currently selected value. |
| # firstValue - First of legal values for option (must be >= 1). |
| # args - Any number of additional values. |
| |
| proc ::tk_optionMenu {w varName firstValue args} { |
| upvar #0 $varName var |
| |
| if {![info exists var]} { |
| set var $firstValue |
| } |
| menubutton $w -textvariable $varName -indicatoron 1 -menu $w.menu \ |
| -relief raised -bd 2 -highlightthickness 2 -anchor c \ |
| -direction flush |
| menu $w.menu -tearoff 0 |
| $w.menu add radiobutton -label $firstValue -variable $varName |
| foreach i $args { |
| $w.menu add radiobutton -label $i -variable $varName |
| } |
| return $w.menu |
| } |