racket/collects/framework/private/standard-menus.rkt

986 lines
38 KiB
Racket

(define standard-menus<%>
(interface
(basic<%>)
get-menu%
get-menu-item%
get-checkable-menu-item%
get-file-menu
get-edit-menu
get-help-menu
file-menu:new-callback
file-menu:get-new-item
file-menu:new-string
file-menu:new-help-string
file-menu:new-on-demand
file-menu:create-new?
file-menu:between-new-and-open
file-menu:open-callback
file-menu:get-open-item
file-menu:open-string
file-menu:open-help-string
file-menu:open-on-demand
file-menu:create-open?
file-menu:open-recent-callback
file-menu:get-open-recent-item
file-menu:open-recent-string
file-menu:open-recent-help-string
file-menu:open-recent-on-demand
file-menu:create-open-recent?
file-menu:between-open-and-revert
file-menu:revert-callback
file-menu:get-revert-item
file-menu:revert-string
file-menu:revert-help-string
file-menu:revert-on-demand
file-menu:create-revert?
file-menu:between-revert-and-save
file-menu:save-callback
file-menu:get-save-item
file-menu:save-string
file-menu:save-help-string
file-menu:save-on-demand
file-menu:create-save?
file-menu:save-as-callback
file-menu:get-save-as-item
file-menu:save-as-string
file-menu:save-as-help-string
file-menu:save-as-on-demand
file-menu:create-save-as?
file-menu:between-save-as-and-print
file-menu:print-callback
file-menu:get-print-item
file-menu:print-string
file-menu:print-help-string
file-menu:print-on-demand
file-menu:create-print?
file-menu:between-print-and-close
file-menu:close-callback
file-menu:get-close-item
file-menu:close-string
file-menu:close-help-string
file-menu:close-on-demand
file-menu:create-close?
file-menu:between-close-and-quit
file-menu:quit-callback
file-menu:get-quit-item
file-menu:quit-string
file-menu:quit-help-string
file-menu:quit-on-demand
file-menu:create-quit?
file-menu:after-quit
edit-menu:undo-callback
edit-menu:get-undo-item
edit-menu:undo-string
edit-menu:undo-help-string
edit-menu:undo-on-demand
edit-menu:create-undo?
edit-menu:redo-callback
edit-menu:get-redo-item
edit-menu:redo-string
edit-menu:redo-help-string
edit-menu:redo-on-demand
edit-menu:create-redo?
edit-menu:between-redo-and-cut
edit-menu:cut-callback
edit-menu:get-cut-item
edit-menu:cut-string
edit-menu:cut-help-string
edit-menu:cut-on-demand
edit-menu:create-cut?
edit-menu:between-cut-and-copy
edit-menu:copy-callback
edit-menu:get-copy-item
edit-menu:copy-string
edit-menu:copy-help-string
edit-menu:copy-on-demand
edit-menu:create-copy?
edit-menu:between-copy-and-paste
edit-menu:paste-callback
edit-menu:get-paste-item
edit-menu:paste-string
edit-menu:paste-help-string
edit-menu:paste-on-demand
edit-menu:create-paste?
edit-menu:between-paste-and-clear
edit-menu:clear-callback
edit-menu:get-clear-item
edit-menu:clear-string
edit-menu:clear-help-string
edit-menu:clear-on-demand
edit-menu:create-clear?
edit-menu:between-clear-and-select-all
edit-menu:select-all-callback
edit-menu:get-select-all-item
edit-menu:select-all-string
edit-menu:select-all-help-string
edit-menu:select-all-on-demand
edit-menu:create-select-all?
edit-menu:between-select-all-and-find
edit-menu:find-callback
edit-menu:get-find-item
edit-menu:find-string
edit-menu:find-help-string
edit-menu:find-on-demand
edit-menu:create-find?
edit-menu:find-next-callback
edit-menu:get-find-next-item
edit-menu:find-next-string
edit-menu:find-next-help-string
edit-menu:find-next-on-demand
edit-menu:create-find-next?
edit-menu:find-previous-callback
edit-menu:get-find-previous-item
edit-menu:find-previous-string
edit-menu:find-previous-help-string
edit-menu:find-previous-on-demand
edit-menu:create-find-previous?
edit-menu:show/hide-replace-callback
edit-menu:get-show/hide-replace-item
edit-menu:show/hide-replace-string
edit-menu:show/hide-replace-help-string
edit-menu:show/hide-replace-on-demand
edit-menu:create-show/hide-replace?
edit-menu:replace-callback
edit-menu:get-replace-item
edit-menu:replace-string
edit-menu:replace-help-string
edit-menu:replace-on-demand
edit-menu:create-replace?
edit-menu:replace-all-callback
edit-menu:get-replace-all-item
edit-menu:replace-all-string
edit-menu:replace-all-help-string
edit-menu:replace-all-on-demand
edit-menu:create-replace-all?
edit-menu:find-case-sensitive-callback
edit-menu:get-find-case-sensitive-item
edit-menu:find-case-sensitive-string
edit-menu:find-case-sensitive-help-string
edit-menu:find-case-sensitive-on-demand
edit-menu:create-find-case-sensitive?
edit-menu:between-find-and-preferences
edit-menu:preferences-callback
edit-menu:get-preferences-item
edit-menu:preferences-string
edit-menu:preferences-help-string
edit-menu:preferences-on-demand
edit-menu:create-preferences?
edit-menu:after-preferences
help-menu:before-about
help-menu:about-callback
help-menu:get-about-item
help-menu:about-string
help-menu:about-help-string
help-menu:about-on-demand
help-menu:create-about?
help-menu:after-about))
(define standard-menus-mixin
(mixin
(basic<%>)
(standard-menus<%>)
(inherit on-menu-char on-traverse-char)
(define remove-prefs-callback
(preferences:add-callback
'framework:menu-bindings
(λ (p v)
(let loop ((menu (get-menu-bar)))
(when (is-a? menu menu:can-restore<%>)
(if v (send menu restore-keybinding) (send menu set-shortcut #f)))
(when (is-a? menu menu:can-restore-underscore<%>)
(if v
(send menu restore-underscores)
(send menu erase-underscores)))
(when (is-a? menu menu-item-container<%>)
(for-each loop (send menu get-items)))))))
(inherit get-menu-bar show can-close? get-edit-target-object)
(define/augment
on-close
(λ () (remove-prefs-callback) (inner (void) on-close)))
(define/public get-menu% (λ () menu:can-restore-underscore-menu%))
(define/public get-menu-item% (λ () menu:can-restore-menu-item%))
(define/public
get-checkable-menu-item%
(λ () menu:can-restore-checkable-menu-item%))
(define/public get-file-menu (λ () file-menu))
(define/public get-edit-menu (λ () edit-menu))
(define/public get-help-menu (λ () help-menu))
(define/public
file-menu:new-callback
(λ (item control) (handler:edit-file #f) #t))
(define/public (file-menu:get-new-item) file-menu:new-item)
(define/public (file-menu:new-string) (string-constant new-menu-item))
(define/public (file-menu:new-help-string) (string-constant new-info))
(define/public file-menu:new-on-demand (λ (menu-item) (void)))
(define/public (file-menu:create-new?) #t)
(define/public file-menu:between-new-and-open (λ (menu) (void)))
(define/public
file-menu:open-callback
(λ (item control) (handler:open-file) #t))
(define/public (file-menu:get-open-item) file-menu:open-item)
(define/public (file-menu:open-string) (string-constant open-menu-item))
(define/public (file-menu:open-help-string) (string-constant open-info))
(define/public file-menu:open-on-demand (λ (menu-item) (void)))
(define/public (file-menu:create-open?) #t)
(define/public file-menu:open-recent-callback (λ (x y) (void)))
(define/public (file-menu:get-open-recent-item) file-menu:open-recent-item)
(define/public
(file-menu:open-recent-string)
(string-constant open-recent-menu-item))
(define/public
(file-menu:open-recent-help-string)
(string-constant open-recent-info))
(define/public
file-menu:open-recent-on-demand
(λ (menu) (handler:install-recent-items menu)))
(define/public (file-menu:create-open-recent?) #t)
(define/public file-menu:between-open-and-revert (λ (menu) (void)))
(define/public file-menu:revert-callback (λ (item control) (void)))
(define/public (file-menu:get-revert-item) file-menu:revert-item)
(define/public (file-menu:revert-string) (string-constant revert-menu-item))
(define/public (file-menu:revert-help-string) (string-constant revert-info))
(define/public file-menu:revert-on-demand (λ (menu-item) (void)))
(define/public (file-menu:create-revert?) #f)
(define/public file-menu:between-revert-and-save (λ (menu) (void)))
(define/public file-menu:save-callback (λ (item control) (void)))
(define/public (file-menu:get-save-item) file-menu:save-item)
(define/public (file-menu:save-string) (string-constant save-menu-item))
(define/public (file-menu:save-help-string) (string-constant save-info))
(define/public file-menu:save-on-demand (λ (menu-item) (void)))
(define/public (file-menu:create-save?) #f)
(define/public file-menu:save-as-callback (λ (item control) (void)))
(define/public (file-menu:get-save-as-item) file-menu:save-as-item)
(define/public
(file-menu:save-as-string)
(string-constant save-as-menu-item))
(define/public
(file-menu:save-as-help-string)
(string-constant save-as-info))
(define/public file-menu:save-as-on-demand (λ (menu-item) (void)))
(define/public (file-menu:create-save-as?) #f)
(define/public file-menu:between-save-as-and-print (λ (menu) (void)))
(define/public file-menu:print-callback (λ (item control) (void)))
(define/public (file-menu:get-print-item) file-menu:print-item)
(define/public (file-menu:print-string) (string-constant print-menu-item))
(define/public (file-menu:print-help-string) (string-constant print-info))
(define/public file-menu:print-on-demand (λ (menu-item) (void)))
(define/public (file-menu:create-print?) #f)
(define/public
file-menu:between-print-and-close
(λ (menu) (make-object separator-menu-item% menu)))
(define/public
file-menu:close-callback
(λ (item control) (when (can-close?) (on-close) (show #f)) #t))
(define/public (file-menu:get-close-item) file-menu:close-item)
(define/public (file-menu:close-string) (string-constant close-menu-item))
(define/public (file-menu:close-help-string) (string-constant close-info))
(define/public file-menu:close-on-demand (λ (menu-item) (void)))
(define/public (file-menu:create-close?) #t)
(define/public file-menu:between-close-and-quit (λ (menu) (void)))
(define/public
file-menu:quit-callback
(λ (item control) (when (exit:user-oks-exit) (exit:exit))))
(define/public (file-menu:get-quit-item) file-menu:quit-item)
(define/public
(file-menu:quit-string)
(if (eq? (system-type) 'windows)
(string-constant quit-menu-item-windows)
(string-constant quit-menu-item-others)))
(define/public (file-menu:quit-help-string) (string-constant quit-info))
(define/public file-menu:quit-on-demand (λ (menu-item) (void)))
(define/public (file-menu:create-quit?) (not (eq? (system-type) 'macosx)))
(define/public file-menu:after-quit (λ (menu) (void)))
(define/public
edit-menu:undo-callback
(λ (menu evt)
(let ((edit (get-edit-target-object)))
(when (and edit (is-a? edit editor<%>))
(send edit do-edit-operation 'undo)))
#t))
(define/public (edit-menu:get-undo-item) edit-menu:undo-item)
(define/public (edit-menu:undo-string) (string-constant undo-menu-item))
(define/public (edit-menu:undo-help-string) (string-constant undo-info))
(define/public
edit-menu:undo-on-demand
(λ (item)
(let* ((editor (get-edit-target-object))
(enable?
(and editor
(is-a? editor editor<%>)
(send editor can-do-edit-operation? 'undo))))
(send item enable enable?))))
(define/public (edit-menu:create-undo?) #t)
(define/public
edit-menu:redo-callback
(λ (menu evt)
(let ((edit (get-edit-target-object)))
(when (and edit (is-a? edit editor<%>))
(send edit do-edit-operation 'redo)))
#t))
(define/public (edit-menu:get-redo-item) edit-menu:redo-item)
(define/public (edit-menu:redo-string) (string-constant redo-menu-item))
(define/public (edit-menu:redo-help-string) (string-constant redo-info))
(define/public
edit-menu:redo-on-demand
(λ (item)
(let* ((editor (get-edit-target-object))
(enable?
(and editor
(is-a? editor editor<%>)
(send editor can-do-edit-operation? 'redo))))
(send item enable enable?))))
(define/public (edit-menu:create-redo?) #t)
(define/public
edit-menu:between-redo-and-cut
(λ (menu) (make-object separator-menu-item% menu)))
(define/public
edit-menu:cut-callback
(λ (menu evt)
(let ((edit (get-edit-target-object)))
(when (and edit (is-a? edit editor<%>))
(send edit do-edit-operation 'cut)))
#t))
(define/public (edit-menu:get-cut-item) edit-menu:cut-item)
(define/public (edit-menu:cut-string) (string-constant cut-menu-item))
(define/public (edit-menu:cut-help-string) (string-constant cut-info))
(define/public
edit-menu:cut-on-demand
(λ (item)
(let* ((editor (get-edit-target-object))
(enable?
(and editor
(is-a? editor editor<%>)
(send editor can-do-edit-operation? 'cut))))
(send item enable enable?))))
(define/public (edit-menu:create-cut?) #t)
(define/public edit-menu:between-cut-and-copy (λ (menu) (void)))
(define/public
edit-menu:copy-callback
(λ (menu evt)
(let ((edit (get-edit-target-object)))
(when (and edit (is-a? edit editor<%>))
(send edit do-edit-operation 'copy)))
#t))
(define/public (edit-menu:get-copy-item) edit-menu:copy-item)
(define/public (edit-menu:copy-string) (string-constant copy-menu-item))
(define/public (edit-menu:copy-help-string) (string-constant copy-info))
(define/public
edit-menu:copy-on-demand
(λ (item)
(let* ((editor (get-edit-target-object))
(enable?
(and editor
(is-a? editor editor<%>)
(send editor can-do-edit-operation? 'copy))))
(send item enable enable?))))
(define/public (edit-menu:create-copy?) #t)
(define/public edit-menu:between-copy-and-paste (λ (menu) (void)))
(define/public
edit-menu:paste-callback
(λ (menu evt)
(let ((edit (get-edit-target-object)))
(when (and edit (is-a? edit editor<%>))
(send edit do-edit-operation 'paste)))
#t))
(define/public (edit-menu:get-paste-item) edit-menu:paste-item)
(define/public (edit-menu:paste-string) (string-constant paste-menu-item))
(define/public (edit-menu:paste-help-string) (string-constant paste-info))
(define/public
edit-menu:paste-on-demand
(λ (item)
(let* ((editor (get-edit-target-object))
(enable?
(and editor
(is-a? editor editor<%>)
(send editor can-do-edit-operation? 'paste))))
(send item enable enable?))))
(define/public (edit-menu:create-paste?) #t)
(define/public edit-menu:between-paste-and-clear (λ (menu) (void)))
(define/public
edit-menu:clear-callback
(λ (menu evt)
(let ((edit (get-edit-target-object)))
(when (and edit (is-a? edit editor<%>))
(send edit do-edit-operation 'clear)))
#t))
(define/public (edit-menu:get-clear-item) edit-menu:clear-item)
(define/public
(edit-menu:clear-string)
(if (eq? (system-type) 'windows)
(string-constant clear-menu-item-windows)
(string-constant clear-menu-item-windows)))
(define/public (edit-menu:clear-help-string) (string-constant clear-info))
(define/public
edit-menu:clear-on-demand
(λ (item)
(let* ((editor (get-edit-target-object))
(enable?
(and editor
(is-a? editor editor<%>)
(send editor can-do-edit-operation? 'clear))))
(send item enable enable?))))
(define/public (edit-menu:create-clear?) #t)
(define/public edit-menu:between-clear-and-select-all (λ (menu) (void)))
(define/public
edit-menu:select-all-callback
(λ (menu evt)
(let ((edit (get-edit-target-object)))
(when (and edit (is-a? edit editor<%>))
(send edit do-edit-operation 'select-all)))
#t))
(define/public (edit-menu:get-select-all-item) edit-menu:select-all-item)
(define/public
(edit-menu:select-all-string)
(string-constant select-all-menu-item))
(define/public
(edit-menu:select-all-help-string)
(string-constant select-all-info))
(define/public
edit-menu:select-all-on-demand
(λ (item)
(let* ((editor (get-edit-target-object))
(enable?
(and editor
(is-a? editor editor<%>)
(send editor can-do-edit-operation? 'select-all))))
(send item enable enable?))))
(define/public (edit-menu:create-select-all?) #t)
(define/public
edit-menu:between-select-all-and-find
(λ (menu) (make-object separator-menu-item% menu)))
(define/public edit-menu:find-callback (λ (item control) (void)))
(define/public (edit-menu:get-find-item) edit-menu:find-item)
(define/public (edit-menu:find-string) (string-constant find-menu-item))
(define/public (edit-menu:find-help-string) (string-constant find-info))
(define/public
edit-menu:find-on-demand
(λ (item)
(send item enable
(let
((target (get-edit-target-object)))
(and target (is-a? target editor<%>))))))
(define/public (edit-menu:create-find?) #f)
(define/public edit-menu:find-next-callback (λ (item control) (void)))
(define/public (edit-menu:get-find-next-item) edit-menu:find-next-item)
(define/public
(edit-menu:find-next-string)
(string-constant find-next-menu-item))
(define/public
(edit-menu:find-next-help-string)
(string-constant find-next-info))
(define/public
edit-menu:find-next-on-demand
(λ (item)
(send item enable
(let
((target (get-edit-target-object)))
(and target (is-a? target editor<%>))))))
(define/public (edit-menu:create-find-next?) #f)
(define/public edit-menu:find-previous-callback (λ (item control) (void)))
(define/public
(edit-menu:get-find-previous-item)
edit-menu:find-previous-item)
(define/public
(edit-menu:find-previous-string)
(string-constant find-previous-menu-item))
(define/public
(edit-menu:find-previous-help-string)
(string-constant find-previous-info))
(define/public
edit-menu:find-previous-on-demand
(λ (item)
(send item enable
(let
((target (get-edit-target-object)))
(and target (is-a? target editor<%>))))))
(define/public (edit-menu:create-find-previous?) #f)
(define/public
edit-menu:show/hide-replace-callback
(λ (item control) (void)))
(define/public
(edit-menu:get-show/hide-replace-item)
edit-menu:show/hide-replace-item)
(define/public
(edit-menu:show/hide-replace-string)
(string-constant show-replace-menu-item))
(define/public
(edit-menu:show/hide-replace-help-string)
(string-constant show/hide-replace-info))
(define/public edit-menu:show/hide-replace-on-demand (λ (menu-item) (void)))
(define/public (edit-menu:create-show/hide-replace?) #f)
(define/public edit-menu:replace-callback (λ (item control) (void)))
(define/public (edit-menu:get-replace-item) edit-menu:replace-item)
(define/public
(edit-menu:replace-string)
(string-constant replace-menu-item))
(define/public
(edit-menu:replace-help-string)
(string-constant replace-info))
(define/public edit-menu:replace-on-demand (λ (menu-item) (void)))
(define/public (edit-menu:create-replace?) #f)
(define/public edit-menu:replace-all-callback (λ (item control) (void)))
(define/public (edit-menu:get-replace-all-item) edit-menu:replace-all-item)
(define/public
(edit-menu:replace-all-string)
(string-constant replace-all-menu-item))
(define/public
(edit-menu:replace-all-help-string)
(string-constant replace-all-info))
(define/public edit-menu:replace-all-on-demand (λ (menu-item) (void)))
(define/public (edit-menu:create-replace-all?) #f)
(define/public
edit-menu:find-case-sensitive-callback
(λ (item control) (void)))
(define/public
(edit-menu:get-find-case-sensitive-item)
edit-menu:find-case-sensitive-item)
(define/public
(edit-menu:find-case-sensitive-string)
(string-constant find-case-sensitive-menu-item))
(define/public
(edit-menu:find-case-sensitive-help-string)
(string-constant find-case-sensitive-info))
(define/public
edit-menu:find-case-sensitive-on-demand
(λ (item)
(send item enable
(let
((target (get-edit-target-object)))
(and target (is-a? target editor<%>))))))
(define/public (edit-menu:create-find-case-sensitive?) #f)
(define/public
edit-menu:between-find-and-preferences
(λ (menu)
(unless (current-eventspace-has-standard-menus?)
(make-object separator-menu-item% menu))))
(define/public
edit-menu:preferences-callback
(λ (item control) (preferences:show-dialog) #t))
(define/public (edit-menu:get-preferences-item) edit-menu:preferences-item)
(define/public
(edit-menu:preferences-string)
(string-constant preferences-menu-item))
(define/public
(edit-menu:preferences-help-string)
(string-constant preferences-info))
(define/public edit-menu:preferences-on-demand (λ (menu-item) (void)))
(define/public
(edit-menu:create-preferences?)
(not (current-eventspace-has-standard-menus?)))
(define/public edit-menu:after-preferences (λ (menu) (void)))
(define/public help-menu:before-about (λ (menu) (void)))
(define/public help-menu:about-callback (λ (item control) (void)))
(define/public (help-menu:get-about-item) help-menu:about-item)
(define/public (help-menu:about-string) (string-constant about-menu-item))
(define/public (help-menu:about-help-string) (string-constant about-info))
(define/public help-menu:about-on-demand (λ (menu-item) (void)))
(define/public (help-menu:create-about?) #f)
(define/public help-menu:after-about (λ (menu) (void)))
(super-instantiate ())
(define file-menu
(make-object (get-menu%)
(string-constant file-menu-label)
(get-menu-bar)))
(define edit-menu
(make-object (get-menu%)
(string-constant edit-menu-label)
(get-menu-bar)))
(define help-menu
(make-object (get-menu%)
(string-constant help-menu-label)
(get-menu-bar)))
(define file-menu:new-item
(and (file-menu:create-new?)
(new
(get-menu-item%)
(label (file-menu:new-string))
(parent file-menu)
(callback
(let ((file-menu:new-callback
(λ (item evt) (file-menu:new-callback item evt))))
file-menu:new-callback))
(shortcut #\n)
(shortcut-prefix (get-default-shortcut-prefix))
(help-string (file-menu:new-help-string))
(demand-callback
(λ (menu-item) (file-menu:new-on-demand menu-item))))))
(file-menu:between-new-and-open (get-file-menu))
(define file-menu:open-item
(and (file-menu:create-open?)
(new
(get-menu-item%)
(label (file-menu:open-string))
(parent file-menu)
(callback
(let ((file-menu:open-callback
(λ (item evt) (file-menu:open-callback item evt))))
file-menu:open-callback))
(shortcut #\o)
(shortcut-prefix (get-default-shortcut-prefix))
(help-string (file-menu:open-help-string))
(demand-callback
(λ (menu-item) (file-menu:open-on-demand menu-item))))))
(define file-menu:open-recent-item
(and (file-menu:create-open-recent?)
(new
(get-menu%)
(label (file-menu:open-recent-string))
(parent file-menu)
(help-string (file-menu:open-recent-help-string))
(demand-callback
(λ (menu-item) (file-menu:open-recent-on-demand menu-item))))))
(file-menu:between-open-and-revert (get-file-menu))
(define file-menu:revert-item
(and (file-menu:create-revert?)
(new
(get-menu-item%)
(label (file-menu:revert-string))
(parent file-menu)
(callback
(let ((file-menu:revert-callback
(λ (item evt) (file-menu:revert-callback item evt))))
file-menu:revert-callback))
(shortcut #f)
(shortcut-prefix (get-default-shortcut-prefix))
(help-string (file-menu:revert-help-string))
(demand-callback
(λ (menu-item) (file-menu:revert-on-demand menu-item))))))
(file-menu:between-revert-and-save (get-file-menu))
(define file-menu:save-item
(and (file-menu:create-save?)
(new
(get-menu-item%)
(label (file-menu:save-string))
(parent file-menu)
(callback
(let ((file-menu:save-callback
(λ (item evt) (file-menu:save-callback item evt))))
file-menu:save-callback))
(shortcut #\s)
(shortcut-prefix (get-default-shortcut-prefix))
(help-string (file-menu:save-help-string))
(demand-callback
(λ (menu-item) (file-menu:save-on-demand menu-item))))))
(define file-menu:save-as-item
(and (file-menu:create-save-as?)
(new
(get-menu-item%)
(label (file-menu:save-as-string))
(parent file-menu)
(callback
(let ((file-menu:save-as-callback
(λ (item evt) (file-menu:save-as-callback item evt))))
file-menu:save-as-callback))
(shortcut #\s)
(shortcut-prefix (cons 'shift (get-default-shortcut-prefix)))
(help-string (file-menu:save-as-help-string))
(demand-callback
(λ (menu-item) (file-menu:save-as-on-demand menu-item))))))
(file-menu:between-save-as-and-print (get-file-menu))
(define file-menu:print-item
(and (file-menu:create-print?)
(new
(get-menu-item%)
(label (file-menu:print-string))
(parent file-menu)
(callback
(let ((file-menu:print-callback
(λ (item evt) (file-menu:print-callback item evt))))
file-menu:print-callback))
(shortcut #\p)
(shortcut-prefix (get-default-shortcut-prefix))
(help-string (file-menu:print-help-string))
(demand-callback
(λ (menu-item) (file-menu:print-on-demand menu-item))))))
(file-menu:between-print-and-close (get-file-menu))
(define file-menu:close-item
(and (file-menu:create-close?)
(new
(get-menu-item%)
(label (file-menu:close-string))
(parent file-menu)
(callback
(let ((file-menu:close-callback
(λ (item evt) (file-menu:close-callback item evt))))
file-menu:close-callback))
(shortcut #\w)
(shortcut-prefix (get-default-shortcut-prefix))
(help-string (file-menu:close-help-string))
(demand-callback
(λ (menu-item) (file-menu:close-on-demand menu-item))))))
(file-menu:between-close-and-quit (get-file-menu))
(define file-menu:quit-item
(and (file-menu:create-quit?)
(new
(get-menu-item%)
(label (file-menu:quit-string))
(parent file-menu)
(callback
(let ((file-menu:quit-callback
(λ (item evt) (file-menu:quit-callback item evt))))
file-menu:quit-callback))
(shortcut #\q)
(shortcut-prefix (get-default-shortcut-prefix))
(help-string (file-menu:quit-help-string))
(demand-callback
(λ (menu-item) (file-menu:quit-on-demand menu-item))))))
(file-menu:after-quit (get-file-menu))
(define edit-menu:undo-item
(and (edit-menu:create-undo?)
(new
(get-menu-item%)
(label (edit-menu:undo-string))
(parent edit-menu)
(callback
(let ((edit-menu:undo-callback
(λ (item evt) (edit-menu:undo-callback item evt))))
edit-menu:undo-callback))
(shortcut #\z)
(shortcut-prefix (get-default-shortcut-prefix))
(help-string (edit-menu:undo-help-string))
(demand-callback
(λ (menu-item) (edit-menu:undo-on-demand menu-item))))))
(define edit-menu:redo-item
(and (edit-menu:create-redo?)
(new
(get-menu-item%)
(label (edit-menu:redo-string))
(parent edit-menu)
(callback
(let ((edit-menu:redo-callback
(λ (item evt) (edit-menu:redo-callback item evt))))
edit-menu:redo-callback))
(shortcut (if (eq? (system-type) 'windows) #\y #\z))
(shortcut-prefix
(if (eq? (system-type) 'windows)
(get-default-shortcut-prefix)
(cons 'shift (get-default-shortcut-prefix))))
(help-string (edit-menu:redo-help-string))
(demand-callback
(λ (menu-item) (edit-menu:redo-on-demand menu-item))))))
(edit-menu:between-redo-and-cut (get-edit-menu))
(define edit-menu:cut-item
(and (edit-menu:create-cut?)
(new
(get-menu-item%)
(label (edit-menu:cut-string))
(parent edit-menu)
(callback
(let ((edit-menu:cut-callback
(λ (item evt) (edit-menu:cut-callback item evt))))
edit-menu:cut-callback))
(shortcut #\x)
(shortcut-prefix (get-default-shortcut-prefix))
(help-string (edit-menu:cut-help-string))
(demand-callback
(λ (menu-item) (edit-menu:cut-on-demand menu-item))))))
(edit-menu:between-cut-and-copy (get-edit-menu))
(define edit-menu:copy-item
(and (edit-menu:create-copy?)
(new
(get-menu-item%)
(label (edit-menu:copy-string))
(parent edit-menu)
(callback
(let ((edit-menu:copy-callback
(λ (item evt) (edit-menu:copy-callback item evt))))
edit-menu:copy-callback))
(shortcut #\c)
(shortcut-prefix (get-default-shortcut-prefix))
(help-string (edit-menu:copy-help-string))
(demand-callback
(λ (menu-item) (edit-menu:copy-on-demand menu-item))))))
(edit-menu:between-copy-and-paste (get-edit-menu))
(define edit-menu:paste-item
(and (edit-menu:create-paste?)
(new
(get-menu-item%)
(label (edit-menu:paste-string))
(parent edit-menu)
(callback
(let ((edit-menu:paste-callback
(λ (item evt) (edit-menu:paste-callback item evt))))
edit-menu:paste-callback))
(shortcut #\v)
(shortcut-prefix (get-default-shortcut-prefix))
(help-string (edit-menu:paste-help-string))
(demand-callback
(λ (menu-item) (edit-menu:paste-on-demand menu-item))))))
(edit-menu:between-paste-and-clear (get-edit-menu))
(define edit-menu:clear-item
(and (edit-menu:create-clear?)
(new
(get-menu-item%)
(label (edit-menu:clear-string))
(parent edit-menu)
(callback
(let ((edit-menu:clear-callback
(λ (item evt) (edit-menu:clear-callback item evt))))
edit-menu:clear-callback))
(shortcut #f)
(shortcut-prefix (get-default-shortcut-prefix))
(help-string (edit-menu:clear-help-string))
(demand-callback
(λ (menu-item) (edit-menu:clear-on-demand menu-item))))))
(edit-menu:between-clear-and-select-all (get-edit-menu))
(define edit-menu:select-all-item
(and (edit-menu:create-select-all?)
(new
(get-menu-item%)
(label (edit-menu:select-all-string))
(parent edit-menu)
(callback
(let ((edit-menu:select-all-callback
(λ (item evt) (edit-menu:select-all-callback item evt))))
edit-menu:select-all-callback))
(shortcut #\a)
(shortcut-prefix (get-default-shortcut-prefix))
(help-string (edit-menu:select-all-help-string))
(demand-callback
(λ (menu-item) (edit-menu:select-all-on-demand menu-item))))))
(edit-menu:between-select-all-and-find (get-edit-menu))
(define edit-menu:find-item
(and (edit-menu:create-find?)
(new
(get-menu-item%)
(label (edit-menu:find-string))
(parent edit-menu)
(callback
(let ((edit-menu:find-callback
(λ (item evt) (edit-menu:find-callback item evt))))
edit-menu:find-callback))
(shortcut #\f)
(shortcut-prefix (get-default-shortcut-prefix))
(help-string (edit-menu:find-help-string))
(demand-callback
(λ (menu-item) (edit-menu:find-on-demand menu-item))))))
(define edit-menu:find-next-item
(and (edit-menu:create-find-next?)
(new
(get-menu-item%)
(label (edit-menu:find-next-string))
(parent edit-menu)
(callback
(let ((edit-menu:find-next-callback
(λ (item evt) (edit-menu:find-next-callback item evt))))
edit-menu:find-next-callback))
(shortcut #\g)
(shortcut-prefix (get-default-shortcut-prefix))
(help-string (edit-menu:find-next-help-string))
(demand-callback
(λ (menu-item) (edit-menu:find-next-on-demand menu-item))))))
(define edit-menu:find-previous-item
(and (edit-menu:create-find-previous?)
(new
(get-menu-item%)
(label (edit-menu:find-previous-string))
(parent edit-menu)
(callback
(let ((edit-menu:find-previous-callback
(λ (item evt) (edit-menu:find-previous-callback item evt))))
edit-menu:find-previous-callback))
(shortcut #\g)
(shortcut-prefix (cons 'shift (get-default-shortcut-prefix)))
(help-string (edit-menu:find-previous-help-string))
(demand-callback
(λ (menu-item) (edit-menu:find-previous-on-demand menu-item))))))
(define edit-menu:show/hide-replace-item
(and (edit-menu:create-show/hide-replace?)
(new
(get-menu-item%)
(label (edit-menu:show/hide-replace-string))
(parent edit-menu)
(callback
(let ((edit-menu:show/hide-replace-callback
(λ (item evt)
(edit-menu:show/hide-replace-callback item evt))))
edit-menu:show/hide-replace-callback))
(shortcut #\r)
(shortcut-prefix (cons 'shift (get-default-shortcut-prefix)))
(help-string (edit-menu:show/hide-replace-help-string))
(demand-callback
(λ (menu-item)
(edit-menu:show/hide-replace-on-demand menu-item))))))
(define edit-menu:replace-item
(and (edit-menu:create-replace?)
(new
(get-menu-item%)
(label (edit-menu:replace-string))
(parent edit-menu)
(callback
(let ((edit-menu:replace-callback
(λ (item evt) (edit-menu:replace-callback item evt))))
edit-menu:replace-callback))
(shortcut #\r)
(shortcut-prefix (get-default-shortcut-prefix))
(help-string (edit-menu:replace-help-string))
(demand-callback
(λ (menu-item) (edit-menu:replace-on-demand menu-item))))))
(define edit-menu:replace-all-item
(and (edit-menu:create-replace-all?)
(new
(get-menu-item%)
(label (edit-menu:replace-all-string))
(parent edit-menu)
(callback
(let ((edit-menu:replace-all-callback
(λ (item evt) (edit-menu:replace-all-callback item evt))))
edit-menu:replace-all-callback))
(shortcut #f)
(shortcut-prefix (get-default-shortcut-prefix))
(help-string (edit-menu:replace-all-help-string))
(demand-callback
(λ (menu-item) (edit-menu:replace-all-on-demand menu-item))))))
(define edit-menu:find-case-sensitive-item
(and (edit-menu:create-find-case-sensitive?)
(new
(get-checkable-menu-item%)
(label (edit-menu:find-case-sensitive-string))
(parent edit-menu)
(callback
(let ((edit-menu:find-case-sensitive-callback
(λ (item evt)
(edit-menu:find-case-sensitive-callback item evt))))
edit-menu:find-case-sensitive-callback))
(shortcut #f)
(shortcut-prefix (get-default-shortcut-prefix))
(help-string (edit-menu:find-case-sensitive-help-string))
(demand-callback
(λ (menu-item)
(edit-menu:find-case-sensitive-on-demand menu-item))))))
(edit-menu:between-find-and-preferences (get-edit-menu))
(define edit-menu:preferences-item
(and (edit-menu:create-preferences?)
(new
(get-menu-item%)
(label (edit-menu:preferences-string))
(parent edit-menu)
(callback
(let ((edit-menu:preferences-callback
(λ (item evt) (edit-menu:preferences-callback item evt))))
edit-menu:preferences-callback))
(shortcut (case (system-type) ((macosx) #\,) (else #\;)))
(shortcut-prefix (get-default-shortcut-prefix))
(help-string (edit-menu:preferences-help-string))
(demand-callback
(λ (menu-item) (edit-menu:preferences-on-demand menu-item))))))
(edit-menu:after-preferences (get-edit-menu))
(help-menu:before-about (get-help-menu))
(define help-menu:about-item
(and (help-menu:create-about?)
(new
(get-menu-item%)
(label (help-menu:about-string))
(parent help-menu)
(callback
(let ((help-menu:about-callback
(λ (item evt) (help-menu:about-callback item evt))))
help-menu:about-callback))
(shortcut #f)
(shortcut-prefix (get-default-shortcut-prefix))
(help-string (help-menu:about-help-string))
(demand-callback
(λ (menu-item) (help-menu:about-on-demand menu-item))))))
(help-menu:after-about (get-help-menu))
(reorder-menus this)))