986 lines
38 KiB
Racket
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)))
|