{"size": 2300, "ext": "scrbl", "max_stars_repo_path": "gui-doc/scribblings/gui/menu-item-class.scrbl", "max_stars_repo_name": "jjsimpso/gui", "max_stars_repo_stars_event_min_datetime": "2015-03-17T22:11:52.000Z", "max_stars_repo_stars_event_max_datetime": "2022-03-12T15:09:34.000Z", "max_issues_repo_path": "gui-doc/scribblings/gui/menu-item-class.scrbl", "max_issues_repo_name": "jjsimpso/gui", "max_issues_repo_issues_event_min_datetime": "2015-01-09T15:53:25.000Z", "max_issues_repo_issues_event_max_datetime": "2022-03-31T16:21:29.000Z", "max_forks_repo_path": "gui-doc/scribblings/gui/menu-item-class.scrbl", "max_forks_repo_name": "jjsimpso/gui", "max_forks_repo_forks_event_min_datetime": "2015-01-08T13:03:07.000Z", "max_forks_repo_forks_event_max_datetime": "2022-03-26T21:49:09.000Z"}
{"max_stars_count": 65, "max_issues_count": 231, "max_forks_count": 89, "avg_line_length": 46.9387755102, "max_line_length": 87, "alphanum_fraction": 0.5752173913}
#lang scribble/doc
@(require "common.rkt")

@defclass/title[menu-item% object% (selectable-menu-item<%>)]{

A @racket[menu-item%] is a plain string-labelled menu item. Its
 parent must be a @racket[menu%] or @racket[popup-menu%]. When the
 user selects the menu item, its callback procedure is called.


@defconstructor[([label label-string?]
                 [parent (or/c (is-a?/c menu%) (is-a?/c popup-menu%))]
                 [callback ((is-a?/c menu-item%) (is-a?/c control-event%) . -> . any)]
                 [shortcut (or/c char? symbol? #f) #f]
                 [help-string (or/c label-string? #f) #f]
                 [demand-callback ((is-a?/c menu-item%) . -> . any) 
                           (lambda (i) (void))]
                 [shortcut-prefix (and/c (listof (or/c 'alt 'cmd 'meta 'ctl 
                                                       'shift 'option))
                                         (λ (x) (implies (equal? 'unix (system-type))
                                                         (not (and (member 'alt x)
                                                                   (member 'meta x)))))
                                         (λ (x) (equal? x (remove-duplicates x))))
                                  (get-default-shortcut-prefix)])]{

Creates a new menu item in @racket[parent]. The item is initially
 shown, appended to the end of its parent. The @racket[callback]
 procedure is called (with the event type @indexed-racket['menu]) when
 the user selects the menu item (either via a menu bar,
 @xmethod[window<%> popup-menu], or @xmethod[editor-admin%
 popup-menu]).

See @method[labelled-menu-item<%> set-label] for information about
mnemonic @litchar{&}s in @racket[label].

If @racket[shortcut] is not @racket[#f], the item has a shortcut. See
@method[selectable-menu-item<%> get-shortcut] for more information.
The @racket[shortcut-prefix] argument determines the set of modifier
keys for the shortcut; see @method[selectable-menu-item<%>
get-shortcut-prefix].

If @racket[help] is not @racket[#f], the item has a help string. See
@method[labelled-menu-item<%> get-help-string] for more information.

The @racket[demand-callback] procedure is called by the default
@method[menu-item-container<%> on-demand] method with the object itself.

}}
