## DESCRIPTION

d.menu allows the user to create a menu containing a TITLE and options, and to display this menu in the active frame on the graphics monitor. After the menu is displayed in the active frame, the mouse must be used to select one of the menu options. The number associated with the selected menu option is then printed to standard output (`stdout`) and the program exits. This program provides GRASS macro writers with a mouse interface for user interaction.

Parameters can be stated on the command line, from within standard input (`stdin`), or from within a script file (as illustrated below).

The user can specify the menu's background, text, and line colors (bcolor, tcolor, and dcolor) and the menu size (size) on the command line. If the user sets at least one of these values on the command line, any remaining values that are not specified will be set (automatically) to their default values.

## NOTES

### Menu Information:

After the user has (optionally) specified menu colors and size, the program expects the user to enter information about the menu's location and content. The menu will be placed in the lower right corner of the active display frame by default if the user does not position it elsewhere using the `.T` or `.L` commands.

The user specifies the menu contents by entering a menu TITLE followed by the option choices to appear in the menu when displayed. The user must enter a menu TITLE and at least one menu option. All `.dot` commands are optional.

#
  Comment line. (ignored)
.B value
  Specifies the menu's background color.
.C value
  Specifies the menu's text color.
.D value
  Specifies the menu's dividing line color.
.F value
  Specifies the menu's font. May be any of the standard GRASS fonts. (see d.font)
.S value
  Specifies the menu's font size. (as a percentage of the active frame's height).
.T value
  Specifies the menu's distance from the active display frame's top edge (as a percentage of the active frame's height).
.L value
  Specifies the menu's distance from the active display frame's left edge (as a percentage of the active frame's width).
menu TITLE
  A TITLE that describes the type of options listed in the menu, and that will appear at the top of the menu when it is displayed.
option name(s)
  The options that will appear in the menu when displayed. Each menu option should appear on a separate line. The user may enter as many options as desired, but must enter at least one menu option.

Note: The user should choose a menu size and location that will allow all menu options to be displayed in the active frame.

If the user enters the menu TITLE and option(s) from standard input (i.e., at the keyboard rather than from a file), the user should enter control-d to end input and display the menu in the active frame on the graphics monitor. (Note: The d.menu program can also be incorporated into UNIX Bourne shell script macros. The below example shows how this might be done.)

## EXAMPLES

### Example 1

    a=`d.menu << EOF
    # set the background color
    .B brown
    # set the text color
    .C yellow
    # set the text size in % of entire screen height
    .S 3
    # set the top edge
    .T 10
    # set the LEFT edge
    .L 10
    # The menu Title
    Sample Menu
    # the options
    option 1
    option 2
    option 3
    option 4
    option 5
    option 6
    EOF
    `

    echo "You have just chosen option $a"

### Example 2

In the following example, the shell script menu2 calls the shell script color.select which contains d.menu commands to display a menu in the current frame on the graphics monitor. After the user selects an option from the display menu, the selection number is available for use by menu2.

#### Contents of file menu2:

    #! /bin/csh -f
    set option = 0
    set colors = (red green blue black white )
    @ option = `color.select`

    if ($option <= 5) then
         set color = $colors[$option]
         echo $color

    endif
    exit

#### Contents of file color.select:

    #! /bin/csh -f
    d.menu bcolor=red tcolor=green dcolor=yellow size=5 << EOF
    .T 25
    .L 25
    Color Choices
    Option 1
    Option 2
    Option 3
    Option 4
    Option 5
    EOF

If the user runs menu2, a menu will be displayed on the graphics monitor that has red background, green text, with menu options divided by yellow lines, and a text size of 5% of the active display frame height. The mouse cursor will become active, allowing the user to select (by pointing with the mouse) one of the displayed menu options. Here, these menu options are called Option 1, Option 2, and Option 3, etc. The first line of text (here, the words Color Choices) contains the TITLE of the menu; this line is not a menu option that can be chosen by the user with the mouse. When the user presses one of the mouse buttons while pointing to the desired menu choice, the number of the option chosen will be available for capture by the shell script menu2. menu2 is a simple example that takes this information and only echoes it to the screen.

## NOTES

Although the user can vary text size, all text within the same menu is displayed in a single text size (and font). If the user specifies that items included in the menu's text be displayed in different sizes, all text will be displayed in the size stated last.

## SEE ALSO

d.ask
d.font
d.frame
d.grid
d.legend
d.paint.labels
d.text
d.title

## AUTHOR

James Westervelt, U.S. Army Construction Engineering Research Laboratory

Last changed: $Date: 2006/07/07 09:56:35 $