From dfc6abcb14f64c5aea32f406de845e5eee45f5f8 Mon Sep 17 00:00:00 2001 From: Phil Nguyen Date: Tue, 29 Jul 2014 12:45:16 -0400 Subject: [PATCH] Add more typed bindings for framework and for GUI original commit: 2cfe0ddcdbb91f01c76707f576038d0bd6fd7bc0 --- .../typed-racket/types/abbrev.rkt | 4 +- .../typed-racket-more/typed/framework.rkt | 796 +++++++- .../typed/private/framework-types.rkt | 1652 ++++++++++++++++- .../typed/racket/private/gui-types.rkt | 73 +- 4 files changed, 2445 insertions(+), 80 deletions(-) diff --git a/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/types/abbrev.rkt b/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/types/abbrev.rkt index 6bd29c8f..fcda24d1 100644 --- a/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/types/abbrev.rkt +++ b/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/types/abbrev.rkt @@ -51,7 +51,7 @@ ;; Convenient constructors (define -App make-App) (define -mpair make-MPair) -(define -Param make-Param) +(define (-Param t1 [t2 t1]) (make-Param t1 t2)) (define -box make-Box) (define -channel make-Channel) (define -async-channel make-Async-Channel) @@ -69,6 +69,8 @@ (define (-opt t) (Un (-val #f) t)) +(define (-ne-lst t) (-pair t (-lst t))) + ;; Convenient constructor for Values ;; (wraps arg types with Result) (define/cond-contract (-values args) diff --git a/pkgs/typed-racket-pkgs/typed-racket-more/typed/framework.rkt b/pkgs/typed-racket-pkgs/typed-racket-more/typed/framework.rkt index 94a5cd4c..230e15dc 100644 --- a/pkgs/typed-racket-pkgs/typed-racket-more/typed/framework.rkt +++ b/pkgs/typed-racket-pkgs/typed-racket-more/typed/framework.rkt @@ -3,8 +3,11 @@ ;; A typed wrapper for the framework library (require framework + framework/splash (for-syntax (only-in (rep type-rep) - make-Instance)) + make-Instance + make-HeterogeneousVector + [make-Opaque -opq])) "racket/private/gui-types.rkt" (for-syntax (submod "racket/private/gui-types.rkt" #%type-decl)) "private/framework-types.rkt" @@ -14,30 +17,795 @@ (begin-for-syntax (define -Button% (parse-type #'Button%)) - (define -Event% (parse-type #'Event%))) + (define -Event% (parse-type #'Event%)) + (define -Color% (parse-type #'Color%)) + (define -Style-Delta% (parse-type #'Style-Delta%)) + (define -Area-Container<%> (parse-type #'Area-Container<%>)) + (define -Panel% (parse-type #'Panel%)) + (define -Vertical-Panel% (parse-type #'Vertical-Panel%)) + (define -Snip-Class% (parse-type #'Snip-Class%)) + (define -Keymap% (parse-type #'Keymap%)) + (define -Top-Level-Window<%> (parse-type #'Top-Level-Window<%>)) + (define -Dialog% (parse-type #'Dialog%)) + (define -Frame% (parse-type #'Frame%)) + (define -Menu% (parse-type #'Menu%)) + (define -Menu-Item% (parse-type #'Menu-Item%)) + (define -Bitmap% (parse-type #'Bitmap%)) + (define -Menu-Item-Container<%> (parse-type #'Menu-Item-Container<%>)) + (define -Window<%> (parse-type #'Window<%>)) + (define -Cursor% (parse-type #'Cursor%)) + (define -Popup-Menu% (parse-type #'Popup-Menu%)) + (define -Editor<%> (parse-type #'Editor<%>)) + (define -Snip% (parse-type #'Snip%)) + (define -Area-Container-Window<%> (parse-type #'Area-Container-Window<%>)) + (define -Text% (parse-type #'Text%)) + (define -Editor-Wordbreak-Map% (parse-type #'Editor-Wordbreak-Map%)) + (define -DC<%> (parse-type #'DC<%>)) + (define -Canvas% (parse-type #'Canvas%)) + (define -Key-Event% (parse-type #'Key-Event%)) + (define -Mouse-Event% (parse-type #'Mouse-Event%)) + (define -Radio-Box% (parse-type #'Radio-Box%)) + (define -Check-Box% (parse-type #'Check-Box%)) + (define -Choice% (parse-type #'Choice%)) + (define -List-Box% (parse-type #'List-Box%)) + (define -Area<%> (parse-type #'Area<%>)) + (define -Frame:Editor<%> (parse-type #'Frame:Editor<%>)) + + (define -Color-Prefs:Color-Scheme-Style-Name (-opq #'color-prefs:color-scheme-style-name?)) + (define -Color-Prefs:Known-Color-Scheme-Name (-opq #'color-prefs:known-color-scheme-name?)) + (define -Color-Model:Xyz (-opq #'color-model:xyz?)) + (define -Eventspace (-opq #'eventspace?)) + (define -Handler:Handler (-opq #'handler:handler?)) + (define -Printable Univ) ; FIXME printable/c from 27 + (define -Exn:Unknown-Preference (-opq #'exn:unknown-preference?)) + (define -Preferences:Snapshot (-opq #'preferences:snapshot?)) + (define -Continuation-Mark-Set (-opq #'continuation-mark-set?)) + (define -Struct Univ) ; FIXME + (define -Text:Range (-opq #'text:range?)) + + ; Frequently reused instances + (define -Color%-Instance (make-Instance -Color%)) + (define -Mouse-Event%-Instance (make-Instance -Mouse-Event%)) + (define -Key-Event%-Instance (make-Instance -Key-Event%)) + (define -Canvas%-Instance (make-Instance -Canvas%)) + (define -Vertical-Panel%-Instance (make-Instance -Vertical-Panel%)) + (define -Area-Container<%>-Instance (make-Instance -Area-Container<%>)) + (define -Area-Container-Window<%>-Instance (make-Instance -Area-Container-Window<%>)) + (define -Snip%-Instance (make-Instance -Snip%)) + (define -Editor<%>-Instance (make-Instance -Editor<%>)) + (define -Cursor%-Instance (make-Instance -Cursor%)) + (define -Menu%-Instance (make-Instance -Menu%)) + (define -Frame:Editor<%>-Instance (make-Instance -Frame:Editor<%>)) + (define -Button%-Instance (make-Instance -Button%)) + (define -Event%-Instance (make-Instance -Event%)) + (define -Bitmap%-Instance (make-Instance -Bitmap%)) + (define -Top-Level-Window<%>-Instance (make-Instance -Top-Level-Window<%>)) + (define -Dialog%-Instance (make-Instance -Dialog%)) + (define -Frame%-Instance (make-Instance -Frame%)) + (define -Style-Delta%-Instance (make-Instance -Style-Delta%)) + (define -Keymap%-Instance (make-Instance -Keymap%)) + (define -Area<%>-Instance (make-Instance -Area<%>)) + (define -Window<%>-Instance (make-Instance -Window<%>)) + (define -DC<%>-Instance (make-Instance -DC<%>))) (type-environment - ;; 8 Canvas - [canvas:basic% (parse-type #'Canvas:Basic%)] + [application:current-app-name (-Param -String)] + ;; 3 Autosave + [autosave:autosavable<%> (parse-type #'Autosave:Autosavable<%>)] + [autosave:register + ((make-Instance (parse-type #'Editor<%>-And-Autosave:Autosavable<%>)) . -> . -Void)] + [autosave:toc-path -Path] + [autosave:restore-autosave-files/gui (-> -Void)] + ;; 4 Canvas + [canvas:basic<%> (parse-type #'Canvas:Basic<%>)] + [canvas:basic-mixin (parse-type #'Canvas:Basic-Mixin)] + [canvas:color<%> (parse-type #'Canvas:Color<%>)] + [canvas:color-mixin (parse-type #'Canvas:Color-Mixin)] + [canvas:delegate<%> (parse-type #'Canvas:Delegate<%>)] + [canvas:delegate-mixin (parse-type #'Canvas:Delegate-Mixin)] + [canvas:info<%> (parse-type #'Canvas:Info<%>)] + [canvas:info-mixin (parse-type #'Canvas:Info-Mixin)] + [canvas:wide-snip<%> (parse-type #'Canvas:Wide-Snip<%>)] [canvas:wide-snip-mixin (parse-type #'Canvas:Wide-Snip-Mixin)] - ;; 11 Editor + [canvas:basic% (parse-type #'Canvas:Basic%)] + [canvas:color% (parse-type #'Canvas:Color%)] + [canvas:info% (parse-type #'Canvas:Info%)] + [canvas:delegate% (parse-type #'Canvas:Delegate%)] + [canvas:wide-snip% (parse-type #'Canvas:Wide-Snip%)] + ;; 5 Color Model + [color-model:rgb->xyz (-Nat -Nat -Nat . -> . -Color-Model:Xyz)] + [color-model:rgb-color-distance + (-Nat -Nat -Nat -Nat -Nat -Nat . -> . -NonNegReal)] + [color-model:xyz->rgb + (-NonNegReal -NonNegReal -NonNegReal . -> . (-Tuple (list -Nat -Nat -Nat)))] + [#:opaque Color-Model:Xyz color-model:xyz?] + [color-model:xyz-x (-Color-Model:Xyz . -> . -NonNegReal)] + [color-model:xyz-y (-Color-Model:Xyz . -> . -NonNegReal)] + [color-model:xyz-z (-Color-Model:Xyz . -> . -NonNegReal)] + ;; 6 Color Prefs + [color-prefs:set-default/color-scheme + (-Symbol (Un -Color%-Instance -String) (Un -Color%-Instance -String) + . -> . -Void)] + [color-prefs:register-color-preference + (->optkey + -Symbol -String (Un -Color%-Instance -Style-Delta%-Instance) + [(Un -String -Color%-Instance -False)] + #:background (-opt -Color%-Instance) #f + -Void)] + [color-prefs:add-background-preferences-panel (-> -Void)] + [color-prefs:add-to-preferences-panel + (-String (-Vertical-Panel%-Instance . -> . -Void) . -> . -Void)] + [color-prefs:build-color-selection-panel + (->optkey + -Area-Container<%>-Instance -Symbol -String -String + [] + #:background -Boolean #f + -Void)] + [color-prefs:marshall-style-delta + (-Style-Delta%-Instance . -> . -Printable)] + [color-prefs:unmarshall-style-delta + (-Printable . -> . (-opt -Style-Delta%-Instance))] + [color-prefs:white-on-black (-> -Void)] + [color-prefs:black-on-white (-> -Void)] + [color-prefs:add-color-scheme-entry + (->optkey + -Symbol (Un -String -Color%-Instance) (Un -String -Color%-Instance) + [] + #:style (-opt -String) #f + #:bold? -Boolean #f + #:underline? -Boolean #f + #:italic? -Boolean #f + #:background (Un -False -String -Color%-Instance) #f + -Void)] + [color-prefs:add-color-scheme-preferences-panel + (->optkey + [] + #:extras ((make-Instance -Panel%) . -> . Univ) #f + -Void)] + [color-prefs:register-info-based-color-schemes (-> -Void)] + [color-prefs:set-current-color-scheme (-Symbol . -> . -Void)] + [color-prefs:get-current-color-scheme-name (-> -Color-Prefs:Color-Scheme-Style-Name)] + [#:opaque Color-Prefs:Known-Color-Scheme-Name color-prefs:known-color-scheme-name?] + [#:opaque Color-Prefs:Color-Scheme-Style-Name color-prefs:color-scheme-style-name?] + [color-prefs:lookup-in-color-scheme + ;; TODO less precise than doc + (-Color-Prefs:Known-Color-Scheme-Name . -> . (Un -Style-Delta%-Instance -Color%-Instance))] + [color-prefs:set-in-color-scheme + (-Color-Prefs:Known-Color-Scheme-Name + (Un -Style-Delta%-Instance + -Color%-Instance) + . -> . -Void)] + [color-prefs:register-color-scheme-entry-change-callback + (->opt + -Color-Prefs:Known-Color-Scheme-Name + ((Un -Style-Delta%-Instance -Color%-Instance) . -> . Univ) + [-Boolean] + -Void)] + [color-prefs:get-color-scheme-names + (-> (-values (list (-set Univ) (-set Univ))))] ; TODO doc doesn't say set of what + ;; 7 Color + [color:text<%> (parse-type #'Color:Text<%>)] + [color:text-mixin (parse-type #'Color:Text-Mixin)] + [color:text% (parse-type #'Color:Text%)] + [color:text-mode<%> (parse-type #'Color:Text-Mode<%>)] + [color:text-mode-mixin (parse-type #'Color:Text-Mode-Mixin)] + [color:text-mode% (parse-type #'Color:Text-Mode%)] + [color:get-parenthesis-colors-table + (-> (-lst (-Tuple (list -Symbol + -String + (-vec -Color%-Instance) + (Un (-val 'low) (-val 'high))))))] + [color:misspelled-text-color-style-name (-> -String)] + ;; 8 Comment Box + [comment-box:snip% (parse-type #'Comment-Box:Snip%)] + [comment-box:snipclass (make-Instance -Snip-Class%)] + ;; 9 Decorated Editor Snip + ; TODO: all syntax, and docs suggests they're deprecated? + ;; 10 Editor Snip + [editor-snip:decorated<%> (parse-type #'Editor-Snip:Decorated<%>)] + [editor-snip:decorated-mixin (parse-type #'Editor-Snip:Decorated-Mixin)] + [editor-snip:decorated% (parse-type #'Editor-Snip:Decorated%)] + [editor-snip:decorated-snipclass% (parse-type #'Editor-Snip:Decorated-Snipclass%)] + ;; 11 Editor + [editor:basic<%> (parse-type #'Editor:Basic<%>)] + [editor:basic-mixin (parse-type #'Editor:Basic-Mixin)] + [editor:standard-style-list<%> (parse-type #'Editor:Standard-Style-List<%>)] + [editor:standard-style-list-mixin (parse-type #'Editor:Standard-Style-List-Mixin)] + [editor:keymap<%> (parse-type #'Editor:Keymap<%>)] + [editor:keymap-mixin (parse-type #'Editor:Keymap-Mixin)] + [editor:autowrap<%> (parse-type #'Editor:Autowrap<%>)] + [editor:autowrap-mixin (parse-type #'Editor:Autowrap-Mixin)] + [editor:file<%> (parse-type #'Editor:File<%>)] + [editor:file-mixin (parse-type #'Editor:File-Mixin)] + [editor:backup-autosave<%> (parse-type #'Editor:Backup-Autosave<%>)] + [editor:backup-autosave-mixin (parse-type #'Editor:Backup-Autosave-Mixin)] + [editor:info<%> (parse-type #'Editor:Info<%>)] + [editor:info-mixin (parse-type #'Editor:Info-Mixin)] + [editor:set-current-preferred-font-size (-Nat . -> . -Void)] + [editor:get-current-preferred-font-size (-> -Nat)] + [editor:font-size-pref->current-font-size + ((make-HeterogeneousVector (list (-HT (-ne-lst (-Tuple (list -Nat -Nat))) -Nat) + -Nat)) + . -> . + -Nat)] + [editor:get-change-font-size-when-monitors-change? (-> -Boolean)] + [editor:set-change-font-size-when-monitors-change? (-Boolean . -> . -Void)] + [editor:set-default-font-color + (->opt + -Color%-Instance + [(-opt -Color%-Instance)] + -Void)] + [editor:get-default-color-style-name (-> -String)] + [editor:set-standard-style-list-delta + (-String -Style-Delta%-Instance . -> . -Void)] + [editor:set-standard-style-list-pref-callbacks (-> Univ)] [editor:get-standard-style-list (-> (make-Instance (parse-type #'Style-List%)))] + [editor:add-after-user-keymap + (-Keymap%-Instance (-lst -Keymap%-Instance) + . -> . (-lst -Keymap%-Instance))] + ;; 12 Exit + [exit:exiting? (-> -Boolean)] + [exit:set-exiting (-Boolean . -> . -Void)] + [exit:insert-on-callback ((-> -Void) . -> . (-> -Void))] + [exit:insert-can?-callback ((-> -Boolean) . -> . (-> -Void))] + [exit:can-exit? (-> -Boolean)] + [exit:on-exit (-> -Void)] + [exit:exit (-> -Void)] + [exit:user-oks-exit (-> -Boolean)] + ;; 13 Finder + [finder:dialog-parent-parameter + (-Param (Un -False -Dialog%-Instance -Frame%-Instance))] + [finder:default-extension (-Param -String)] + [finder:default-filters + (-Param (-lst (-Tuple (list -String -String))))] + + [finder:common-put-file (->opt + [-String + (-opt -Path) + -Boolean + -String + (-opt -Byte-Regexp) + -String + (-opt -Top-Level-Window<%>-Instance)] + (-opt -Path))] + [finder:common-get-file (->opt + [(-opt -Path) + -String + (-opt -Byte-Regexp) + -String + (-opt -Top-Level-Window<%>-Instance)] + (-opt -Path))] + [finder:std-put-file (->opt + [-String + (-opt -Path) + -Boolean + -String + (-opt -Byte-Regexp) + -String + (-opt -Top-Level-Window<%>-Instance)] + (-opt -Path))] + [finder:std-get-file (->opt + [(-opt -Path) + -String + (-opt -Byte-Regexp) + -String + (-opt -Top-Level-Window<%>-Instance)] + (-opt -Path))] + [finder:put-file (->opt + [-String + (-opt -Path) + -Boolean + -String + (-opt -Byte-Regexp) + -String + (-opt -Top-Level-Window<%>-Instance)] + (-opt -Path))] + [finder:get-file (->opt + [(-opt -Path) + -String + (Un -Byte-Regexp -String -False) + -String + (-opt -Top-Level-Window<%>-Instance)] + (-opt -Path))] ;; 14 Frame + [frame:basic<%> (parse-type #'Frame:Basic<%>)] [frame:basic-mixin (parse-type #'Frame:Basic-Mixin)] + [frame:focus-table<%> (parse-type #'Frame:Focus-Table<%>)] [frame:focus-table-mixin (parse-type #'Frame:Focus-Table-Mixin)] + [frame:size-pref<%> (parse-type #'Frame:Size-Pref<%>)] [frame:size-pref-mixin (parse-type #'Frame:Size-Pref-Mixin)] + [frame:register-group<%> (parse-type #'Frame:Register-Group<%>)] [frame:register-group-mixin (parse-type #'Frame:Register-Group-Mixin)] + [frame:status-line<%> (parse-type #'Frame:Status-Line<%>)] [frame:status-line-mixin (parse-type #'Frame:Status-Line-Mixin)] - ;; 16 + [frame:info<%> (parse-type #'Frame:Info<%>)] + [frame:info-mixin (parse-type #'Frame:Info-Mixin)] + [frame:text-info<%> (parse-type #'Frame:Text-Info<%>)] + [frame:text-info-mixin (parse-type #'Frame:Text-Info-Mixin)] + [frame:pasteboard-info<%> (parse-type #'Frame:Pasteboard-Info<%>)] + [frame:pasteboard-info-mixin (parse-type #'Frame:Pasteboard-Info-Mixin)] + [frame:standard-menus<%> (parse-type #'Frame:Standard-Menus<%>)] + [frame:standard-menus-mixin (parse-type #'Frame:Standard-Menus-Mixin)] + [frame:editor<%> -Frame:Editor<%>] + [frame:editor-mixin (parse-type #'Frame:Editor-Mixin)] + [frame:text<%> (parse-type #'Frame:Text<%>)] + [frame:text-mixin (parse-type #'Frame:Text-Mixin)] + [frame:pasteboard<%> (parse-type #'Frame:Pasteboard<%>)] + [frame:pasteboard-mixin (parse-type #'Frame:Pasteboard-Mixin)] + [frame:delegate<%> (parse-type #'Frame:Delegate<%>)] + [frame:delegate-mixin (parse-type #'Frame:Delegate-Mixin)] + [frame:searchable<%> (parse-type #'Frame:Searchable<%>)] + [frame:searchable-mixin (parse-type #'Frame:Searchable-Mixin)] + [frame:searchable-text<%> (parse-type #'Frame:Searchable-Text<%>)] + [frame:searchable-text-mixin (parse-type #'Frame:Searchable-Text-Mixin)] + [frame:basic% (parse-type #'Frame:Basic%)] + [frame:size-pref% (parse-type #'Frame:Size-Pref%)] + [frame:info% (parse-type #'Frame:Info%)] + [frame:text-info% (parse-type #'Frame:Info%)] + [frame:pasteboard-info% (parse-type #'Frame:Pasteboard-Info%)] + [frame:status-line% (parse-type #'Frame:Status-Line%)] + [frame:standard-menus% (parse-type #'Frame:Standard-Menus%)] + [frame:editor% (parse-type #'Frame:Editor%)] + [frame:text% (parse-type #'Frame:Text%)] + [frame:searchable% (parse-type #'Frame:Searchable%)] + [frame:delegate% (parse-type #'Frame:Delegate%)] + [frame:pasteboard% (parse-type #'Frame:Pasteboard%)] + [frame:setup-size-pref + (->optkey + -Symbol -NonNegReal -NonNegReal + [] + #:maximized? -Boolean #f + #:position-preferences (-opt -Symbol) #f + -Void)] + [frame:add-snip-menu-items (->opt -Menu%-Instance + -Menu-Item% ; FIXME (subclass?/c menu-item%) + [((make-Instance -Menu-Item%) . -> . -Void)] + -Void)] + [frame:reorder-menus (-Frame%-Instance . -> . -Void)] + [frame:remove-empty-menus (-Frame%-Instance . -> . -Void)] + [frame:current-icon + (-Param (Un -False -Bitmap%-Instance (-pair -Bitmap%-Instance -Bitmap%-Instance)))] + [frame:lookup-focus-table + (->opt [-Eventspace] (-lst (make-Instance (parse-type #'Frame:Focus-Table<%>))))] + ;; 15 Group + [group:% (parse-type #'Group:%)] + [group:get-the-frame-group (-> (make-Instance (parse-type #'Group:%)))] + [group:on-close-action (-> -Void)] + [group:can-close-check (-> -Boolean)] + [group:add-to-windows-menu ((-Menu%-Instance . -> . Univ) . -> . Univ)] + [group:create-windows-menu + ((make-Instance -Menu-Item-Container<%>) . -> . -Menu%-Instance)] + ;; 16 GUI Utilities + [gui-utils:trim-string (-String -PosInt . -> . -String)] + [gui-utils:quote-literal-label + (->optkey -String [] #:quote-amp? Univ #f -String)] + [gui-utils:format-literal-label ((list -String) Univ . ->* . -String)] + [gui-utils:cancel-on-right? (-> -Boolean)] [gui-utils:ok/cancel-buttons - (-> (make-Instance (parse-type #'Horizontal-Panel%)) - (-> (make-Instance -Button%) (make-Instance -Event%) -Void) - (-> (make-Instance -Button%) (make-Instance -Event%) -Void) - (-values (list Univ Univ)))] - ;; 27 + (->optkey + -Area-Container<%>-Instance + (-Button%-Instance -Event%-Instance . -> . Univ) + (-Button%-Instance -Event%-Instance . -> . Univ) + [-String -String] + #:confirm-style (-lst -Symbol) #f + (-values (list -Button%-Instance -Button%-Instance)))] + [gui-utils:next-untitled-name (-> -String)] + [gui-utils:cursor-delay (cl-> [{} -Real] + [{-Real} -Void])] + [gui-utils:show-busy-cursor (->opt (-> Univ) [-Integer] Univ)] + [gui-utils:delay-action (-Real (-> -Void) (-> -Void) . -> . (-> -Void))] + [gui-utils:local-busy-cursor + (->opt -Window<%>-Instance (-> Univ) [-Integer] Univ)] + [gui-utils:unsaved-warning + (->opt -String -String + [-Boolean + (Un -False -Frame%-Instance -Dialog%-Instance) + -Boolean] + (Un (-val 'continue) (-val 'save) (-val 'cancel)))] + + [gui-utils:get-choice + (->opt -String -String -String + [-String + Univ + (Un -False -Frame%-Instance -Dialog%-Instance) + (Un (-val 'app) (-val 'caution) (-val 'stop)) + (-opt (cl-> [{-Boolean} -Void] + [{} -Boolean])) + -String] + Univ)] + [gui-utils:get-clicked-clickback-delta + (->opt [-Style-Delta%-Instance] -Boolean)] + [gui-utils:get-clickback-delta + (->opt [-Style-Delta%-Instance] -Boolean)] + ;; 17 Handler + [#:opaque Handler:Handler handler:handler?] + [handler:handler-name (-Handler:Handler . -> . -String)] + [handler:handler-extension + (-Handler:Handler . -> . (Un (-Path . -> . -Boolean) (-lst -String)))] + [handler:handler-handler + (-Handler:Handler . -> . (-Path . -> . -Frame:Editor<%>-Instance))] + [handler:insert-format-handler + (-String + (Un -String (-lst -String) (-Path . -> . -Boolean)) + (-Path . -> . (-opt -Frame:Editor<%>-Instance)) + . -> . -Void)] + [handler:find-named-format-handler + (-String . -> . (-Path . -> . -Frame:Editor<%>-Instance))] + [handler:find-format-handler + (-Path . -> . (-Path . -> . -Frame:Editor<%>-Instance))] + [handler:edit-file + ((-opt -Frame:Editor<%>-Instance) + [(-> -Frame:Editor<%>-Instance)] + . ->opt . (-opt -Frame:Editor<%>-Instance))] + [handler:current-create-new-window + (-Param ((-opt -Path) . -> . -Frame%-Instance))] + [handler:open-file ([(Un -False -Path -String)] + . ->opt . (-opt (make-Instance (parse-type #'Frame:Basic<%>))))] + [handler:install-recent-items (-Menu%-Instance . -> . -Void)] + [handler:set-recent-items-frame-superclass + ;; FIXME (implementation?/c frame:standard-menus<%>) + ((parse-type #'Frame:Standard-Menus<%>) . -> . -Void)] + [handler:add-to-recent (-Path . -> . -Void)] + [handler:set-recent-position (-Path -Nat -Nat . -> . -Void)] + [handler:size-recently-opened-files (-Nat . -> . -Void)] + ;; 18 Icon + [icon:get-paren-highlight-bitmap (-> -Bitmap%-Instance)] + [icon:get-eof-bitmap (-> -Bitmap%-Instance)] + [icon:get-autowrap-bitmap (-> -Bitmap%-Instance)] + [icon:get-lock-bitmap (-> -Bitmap%-Instance)] + [icon:get-unlock-bitmap (-> -Bitmap%-Instance)] + [icon:get-anchor-bitmap (-> -Bitmap%-Instance)] + [icon:get-left/right-cursor (-> -Cursor%-Instance)] + [icon:get-up/down-cursor (-> -Cursor%-Instance)] + [icon:get-gc-on-bitmap (-> -Bitmap%-Instance)] + [icon:get-gc-off-bitmap (-> -Bitmap%-Instance)] + ;; 19 Keymap + [keymap:aug-keymap<%> (parse-type #'Keymap:Aug-Keymap<%>)] + [keymap:aug-keymap-mixin (parse-type #'Keymap:Aug-Keymap-Mixin)] + [keymap:aug-keymap% (parse-type #'Keymap:Aug-Keymap%)] + [keymap:remove-user-keybindings-file (Univ . -> . Univ)] + [keymap:add-user-keybindings-file (Univ . -> . Univ)] + [keymap:add-to-right-button-menu + (-Param ((make-Instance -Popup-Menu%) + -Editor<%>-Instance + -Event%-Instance + . -> . -Void))] + [keymap:add-to-right-button-menu/before + (-Param ((make-Instance -Popup-Menu%) + -Editor<%>-Instance + -Event%-Instance + . -> . -Void))] + [keymap:call/text-keymap-initializer ((-> Univ) . -> . Univ)] + [keymap:canonicalize-keybinding-string (-String . -> . -String)] + [keymap:get-editor (-> -Keymap%-Instance)] + [keymap:get-file (-> -Keymap%-Instance)] + [keymap:get-user (-> -Keymap%-Instance)] + [keymap:get-global (-> -Keymap%-Instance)] + [keymap:get-search (-> -Keymap%-Instance)] + [keymap:make-meta-prefix-list (-String [-Boolean] . ->opt . (-lst -String))] + [keymap:send-map-function-meta + (-Keymap%-Instance + -String + -String + [-Boolean] + #:alt-as-meta-keymap (-opt -Keymap%-Instance) #f + . ->optkey . -Void)] + [keymap:setup-editor (-Keymap%-Instance . -> . -Void)] + [keymap:setup-file (-Keymap%-Instance . -> . -Void)] + [keymap:setup-global (-Keymap%-Instance . -> . -Void)] + [keymap:setup-search (-Keymap%-Instance . -> . -Void)] + [keymap:set-chained-keymaps ((make-Instance (parse-type #'Keymap:Aug-Keymap<%>)) + (-lst -Keymap%-Instance) + . -> . -Void)] + [keymap:remove-chained-keymap (-Editor<%>-Instance + (make-Instance (parse-type #'Keymap:Aug-Keymap<%>)) + . -> . -Void)] + [keymap:region-click (Univ + Univ + (-NonNegReal -Boolean -NonNegReal -NonNegReal . -> . Univ) + . -> . Univ)] + ;; 20 Menu + [menu:can-restore<%> (parse-type #'Menu:Can-Restore<%>)] + [menu:can-restore-mixin (parse-type #'Menu:Can-Restore-Mixin)] + [menu:can-restore-underscore<%> (parse-type #'Menu:Can-Restore-Underscore<%>)] + [menu:can-restore-underscore-mixin (parse-type #'Menu:Can-Restore-Underscore-Mixin)] + [menu:can-restore-menu-item% (parse-type #'Menu:Can-Restore-Menu-Item%)] + [menu:can-restore-checkable-menu-item% (parse-type #'Menu:Can-Restore-Checkable-Menu-Item%)] + [menu:can-restore-underscore-menu% (parse-type #'Menu:Can-Restore-Underscore-Menu%)] + ;; 21 Mode + [mode:surrogate-text<%> (parse-type #'Mode:Surrogate-Text<%>)] + [mode:surrogate-text% (parse-type #'Mode:Surrogate-Text%)] + [mode:host-text<%> (parse-type #'Mode:Host-Text<%>)] + [mode:host-text-mixin (parse-type #'Mode:Host-Text-Mixin)] + ;; 22 Number Snip + [number-snip:snip-class% (parse-type #'Number-Snip:Snip-Class%)] + [number-snip:make-repeating-decimal-snip (-Real -Boolean . -> . -Snip%-Instance)] + [number-snip:make-fraction-snip (-Real -Boolean . -> . -Snip%-Instance)] + ;; 23 Panel + [panel:single<%> (parse-type #'Panel:Single<%>)] + [panel:single-mixin (parse-type #'Panel:Single-Mixin)] + [panel:single-window<%> (parse-type #'Panel:Single-Window<%>)] + [panel:single-window-mixin (parse-type #'Panel:Single-Window-Mixin)] + [panel:single% (parse-type #'Panel:Single%)] + [panel:single-pane% (parse-type #'Panel:Single-Pane%)] + [panel:dragable<%> (parse-type #'Panel:Dragable<%>)] + [panel:vertical-dragable<%> (parse-type #'Panel:Vertical-Dragable<%>)] + [panel:horizontal-dragable<%> (parse-type #'Panel:Horizontal-Dragable<%>)] + [panel:dragable-mixin (parse-type #'Panel:Dragable-Mixin)] + [panel:vertical-dragable-mixin (parse-type #'Panel:Vertical-Dragable-Mixin)] + [panel:horizontal-dragable-mixin (parse-type #'Panel:Horizontal-Dragable-Mixin)] + [panel:vertical-dragable% (parse-type #'Panel:Vertical-Dragable%)] + [panel:horizontal-dragable% (parse-type #'Panel:Horizontal-Dragable%)] + [panel:splitter<%> (parse-type #'Panel:Splitter<%>)] + [panel:splitter-mixin (parse-type #'Panel:Splitter-Mixin)] + [panel:discrete-sizes<%> (parse-type #'Panel:Discrete-Sizes<%>)] + [panel:discrete-child<%> (parse-type #'Panel:Discrete-Child<%>)] + [panel:discrete-sizes-mixin (parse-type #'Panel:Discrete-Sizes-Mixin)] + [panel:horizontal-discrete-sizes% (parse-type #'Panel:Horizontal-Discrete-Sizes%)] + [panel:vertical-discrete-sizes% (parse-type #'Panel:Vertical-Discrete-Sizes%)] + [panel:dragable-container-size + ((-lst (-Tuple (list -Real -Real -Boolean -Boolean))) + -Real + -Boolean + . -> . (-values (list -Real -Real)))] + [panel:dragable-place-children + ((-lst (-Tuple (list -Real -Real -Boolean -Boolean))) + -Real + -Real + (-lst -Real #|between/c 0 1|#) + -Real + -Boolean + . -> . (-values (list (-lst (-Tuple (list -Nat -Nat -Nat -Nat))) + (-lst (-Tuple (list -Nat -Nat))))))] + ;; 24 Pasteboard + [pasteboard:basic% (parse-type #'Pasteboard:Basic%)] + [pasteboard:standard-style-list% (parse-type #'Pasteboard:Standard-Style-List%)] + [pasteboard:keymap% (parse-type #'Pasteboard:Keymap%)] + [pasteboard:file% (parse-type #'Pasteboard:File%)] + [pasteboard:backup-autosave% (parse-type #'Pasteboard:Backup-Autosave%)] + [pasteboard:info% (parse-type #'Pasteboard:Info%)] + ;; 25 Path Utils + [path-utils:generate-autosave-name ((Un -False -Pathlike -SomeSystemPath) . -> . -String)] + [path-utils:generate-backup-name (-Path . -> . -Path)] + ;; 26 Preferences + [preferences:put-preferences/gui ((-lst -Symbol) (-lst Univ) . -> . Univ)] + [preferences:get-preference/gui (-Symbol [(-> -Void)] . ->opt . Univ)] + [preferences:add-panel + ((Un -String (-ne-lst -String)) + (-Area-Container-Window<%>-Instance . -> . -Area-Container-Window<%>-Instance) + . -> . Univ)] + [preferences:add-editor-checkbox-panel (-> -Void)] + [preferences:add-general-checkbox-panel (-> -Void)] + [preferences:add-warnings-checkbox-panel (-> -Void)] + [preferences:add-scheme-checkbox-panel (-> -Void)] + [preferences:add-to-warnings-checkbox-panel + ((-Vertical-Panel%-Instance . -> . -Void) . -> . -Void)] + [preferences:add-to-scheme-checkbox-panel + ((-Vertical-Panel%-Instance . -> . -Void) . -> . -Void)] + [preferences:add-to-editor-checkbox-panel + ((-Vertical-Panel%-Instance . -> . -Void) . -> . -Void)] + [preferences:add-to-general-checkbox-panel + ((-Vertical-Panel%-Instance . -> . -Void) . -> . -Void)] + [preferences:add-font-panel (-> -Void)] + [preferences:show-dialog (-> -Void)] + [preferences:hide-dialog (-> -Void)] + [preferences:add-on-close-dialog-callback ((-> -Void) . -> . -Void)] + [preferences:add-can-close-dialog-callback ((-> -Boolean) . -> . -Void)] + [preferences:add-check + (-Area-Container<%>-Instance + -Symbol + -String + [(-Boolean . -> . Univ) + (Univ . -> . -Boolean)] + . ->opt . -Void)] + ;; 27 Preferences, Textual [preferences:get (-> -Symbol -Sexp)] [preferences:set (-> -Symbol -Sexp -Void)] - [preferences:set-default (-> -Symbol -Sexp (-> Univ -Boolean) -Void)] - ;; 28 - [racket:text% (parse-type #'Text:Basic<%>)]) + [preferences:add-callback (-Symbol (-Symbol Univ . -> . Univ) [-Boolean] . ->opt . (-> -Void))] + [preferences:set-default + (->optkey + -Symbol -Sexp (-> Univ -Boolean) + [] + #:aliases (-lst -Symbol) #f + #:rewrite-aliases (-lst (-> Univ Univ)) #f + -Void)] + [preferences:default-set? (-Symbol . -> . -Boolean)] + [preferences:set-un/marshall + (-Symbol (Univ . -> . -Printable) (-Printable . -> . Univ) . -> . -Void)] + [preferences:restore-defaults (-> -Void)] + [preferences:register-save-callback ((-Boolean . -> . Univ) . -> . -Symbol)] + [preferences:unregister-save-callback (-Symbol . -> . -Void)] + [exn:make-unknown-preference (-String -Continuation-Mark-Set . -> . -Exn:Unknown-Preference)] + [#:opaque Exn:Unknown-Preference exn:unknown-preference?] + [exn:struct:unknown-preference -Struct] + [preferences:low-level-put-preferences + (-Param ((-lst -Symbol) (-lst Univ) . -> . Univ))] + [preferences:low-level-get-preference + (-Param (-Symbol [(-> Univ)] . ->opt . Univ))] + [#:opaque Preferences:Snapshot preferences:snapshot?] + [preferences:restore-prefs-snapshot (-Preferences:Snapshot . -> . -Void)] + [preferences:get-prefs-snapshot (-> -Preferences:Snapshot)] + ;; 28 Racket + [racket:sexp-snip<%> (parse-type #'Racket:Sexp-Snip<%>)] + [racket:sexp-snip% (parse-type #'Racket:Sexp-Snip%)] + [racket:text<%> (parse-type #'Racket:Text<%>)] + [racket:text-mixin (parse-type #'Racket:Text-Mixin)] + [racket:text-mode<%> (parse-type #'Racket:Text-Mode<%>)] + [racket:text-mode-mixin (parse-type #'Racket:Text-Mode-Mixin)] + [racket:set-mode-mixin (parse-type #'Racket:Set-Mode-Mixin)] + [racket:text% (parse-type #'Racket:Text%)] + [racket:text-mode% (parse-type #'Racket:Text-Mode%)] + [racket:text-balanced? ((make-Instance -Text%) [-Nat (-opt -Nat)] . ->opt . -Boolean)] + [racket:add-preferences-panel (-> -Void)] + [racket:get-keymap (-> -Keymap%-Instance)] + [racket:add-coloring-preferences-panel (-> Univ)] + [racket:get-color-prefs-table + (-> (-lst (-Tuple (list -Symbol -Color%-Instance -String))))] + [racket:get-white-on-black-color-prefs-table + (-> (-lst (-Tuple (list -Symbol -Color%-Instance -String))))] + [racket:short-sym->pref-name (-Symbol . -> . -Symbol)] + [racket:short-sym->style-name (-String . -> . -Symbol)] + [racket:get-wordbreak-map (-> (make-Instance -Editor-Wordbreak-Map%))] + [racket:init-wordbreak-map (-Keymap%-Instance . -> . -Void)] + [racket:setup-keymap (-Keymap%-Instance . -> . -Void)] + ;; 29 Text + [text:basic<%> (parse-type #'Text:Basic<%>)] + [text:basic-mixin (parse-type #'Text:Basic-Mixin)] + [text:line-spacing<%> (parse-type #'Text:Line-Spacing<%>)] + [text:line-spacing-mixin (parse-type #'Text:Line-Spacing-Mixin)] + [text:first-line<%> (parse-type #'Text:First-Line<%>)] + [text:first-line-mixin (parse-type #'Text:First-Line-Mixin)] + [text:foreground-color<%> (parse-type #'Text:Foreground-Color<%>)] + [text:foreground-color-mixin (parse-type #'Text:Foreground-Color-Mixin)] + [text:hide-caret/selection<%> (parse-type #'Text:Hide-Caret/Selection<%>)] + [text:hide-caret/selection-mixin (parse-type #'Text:Hide-Caret/Selection-Mixin)] + [text:nbsp->space<%> (parse-type #'Text:Nbsp->Space<%>)] + [text:nbsp->space-mixin (parse-type #'Text:Nbsp->Space-Mixin)] + [text:column-guide<%> (parse-type #'Text:Column-Guide<%>)] + [text:column-guide-mixin (parse-type #'Text:Column-Guide-Mixin)] + [text:normalize-paste<%> (parse-type #'Text:Normalize-Paste<%>)] + [text:normalize-paste-mixin (parse-type #'Text:Normalize-Paste-Mixin)] + [text:searching<%> (parse-type #'Text:Searching<%>)] + [text:searching-mixin (parse-type #'Text:Searching-Mixin)] + [text:return<%> (parse-type #'Text:Return<%>)] + [text:return-mixin (parse-type #'Text:Return-Mixin)] + [text:wide-snip<%> (parse-type #'Text:Wide-Snip<%>)] + [text:wide-snip-mixin (parse-type #'Text:Wide-Snip-Mixin)] + [text:delegate<%> (parse-type #'Text:Delegate<%>)] + [text:1-pixel-string-snip% (parse-type #'Text:1-Pixel-String-Snip%)] + [text:1-pixel-tab-snip% (parse-type #'Text:1-Pixel-Tab-Snip%)] + [text:delegate-mixin (parse-type #'Text:Delegate-Mixin)] + [text:info<%> (parse-type #'Text:Info<%>)] + [text:info-mixin (parse-type #'Text:Info-Mixin)] + [text:clever-file-format<%> (parse-type #'Text:Clever-File-Format<%>)] + [text:clever-file-format-mixin (parse-type #'Text:Clever-File-Format-Mixin)] + [text:crlf-line-endings<%> (parse-type #'Text:Crlf-Line-Endings<%>)] + [text:crlf-line-endings-mixin (parse-type #'Text:Crlf-Line-Endings-Mixin)] + [text:file<%> (parse-type #'Text:File<%>)] + [text:file-mixin (parse-type #'Text:File-Mixin)] + [text:ports<%> (parse-type #'Text:Ports<%>)] + [text:ports-mixin (parse-type #'Text:Ports-Mixin)] + [text:input-box<%> (parse-type #'Text:Input-Box<%>)] + [text:input-box-mixin (parse-type #'Text:Input-Box-Mixin)] + [text:autocomplete<%> (parse-type #'Text:Autocomplete<%>)] + [text:autocomplete-mixin (parse-type #'Text:Autocomplete-Mixin)] + [text:basic% (parse-type #'Text:Basic%)] + [text:line-spacing% (parse-type #'Text:Line-Spacing%)] + [text:hide-caret/selection% (parse-type #'Text:Hide-Caret/Selection%)] + [text:nbsp->space% (parse-type #'Text:Nbsp->Space%)] + [text:normalize-paste% (parse-type #'Text:Normalize-Paste%)] + [text:delegate% (parse-type #'Text:Delegate%)] + [text:wide-snip% (parse-type #'Text:Wide-Snip%)] + [text:standard-style-list% (parse-type #'Text:Standard-Style-List%)] + [text:input-box% (parse-type #'Text:Input-Box%)] + [text:keymap% (parse-type #'Text:Keymap%)] + [text:return% (parse-type #'Text:Return%)] + [text:autowrap% (parse-type #'Text:Autowrap%)] + [text:file% (parse-type #'Text:File%)] + [text:clever-file-format% (parse-type #'Text:Clever-File-Format%)] + [text:backup-autosave% (parse-type #'Text:Backup-Autosave%)] + [text:searching% (parse-type #'Text:Searching%)] + [text:info% (parse-type #'Text:Info%)] + [text:line-numbers<%> (parse-type #'Text:Line-Numbers<%>)] + [text:line-numbers-mixin (parse-type #'Text:Line-Numbers-Mixin)] + [#:opaque Text:Range text:range?] + [text:range-start (-Text:Range . -> . -Nat)] + [text:range-end (-Text:Range . -> . -Nat)] + [text:range-caret-space? (-Text:Range . -> . -Boolean)] + [text:range-style (-Text:Range . -> . -Nat)] ; FIXME: doc says nat... + [text:range-color (-Text:Range . -> . (Un -String -Color%-Instance))] + [text:autocomplete-append-after (-Param -String)] + [text:autocomplete-limit (-Param -PosInt)] + [text:get-completions/manuals ((-opt (-lst -Symbol)) . -> . (-lst -String))] + [text:lookup-port-name ((-opt (make-Instance (parse-type #'Editor:Basic<%>))) . -> . -Symbol)] + ;; 30 Splash + [start-splash + ((Un -Pathlike + -Bitmap%-Instance + (make-HeterogeneousVector + (list + (Un (-DC<%>-Instance . -> . -Void) + (-DC<%>-Instance -Nat -Nat -Nat -Nat . -> . -Void)) + -Nat + -Nat))) + -String + -Nat + [] + #:allow-funny? -Boolean #f + #:frame-icon (Un -False + -Bitmap%-Instance + (-pair -Bitmap%-Instance -Bitmap%-Instance)) #f + . ->optkey . -Void)] + [shutdown-splash (-> -Void)] + [close-splash (-> -Void)] + [add-splash-icon (-Bitmap%-Instance -Nat -Nat . -> . -Void)] + [get-splash-bitmap (-> (-opt -Bitmap%-Instance))] + [set-splash-bitmap (-Bitmap%-Instance . -> . -Void)] + [get-splash-canvas (-> -Canvas%-Instance)] + [get-splash-eventspace (-> -Eventspace)] + [get-splash-paint-callback + (-> (-DC<%>-Instance -Nat -Nat -Nat -Nat . -> . -Void))] + [set-splash-paint-callback + ((-> (-DC<%>-Instance -Nat -Nat -Nat -Nat . -> . -Void)) . -> . -Void)] + [set-splash-progress-bar?! (-Boolean . -> . -Void)] + [set-splash-char-observer ((-Key-Event%-Instance . -> . Univ) . -> . -Void)] + [set-splash-event-callback ((-Mouse-Event%-Instance . -> . Univ) . -> . -Void)] + [get-splash-event-callback (-> (-Mouse-Event%-Instance . -> . Univ))] + [set-refresh-splash-on-gauge-change?! ((-Nat -Nat . -> . Univ) . -> . -Void)] + [get-splash-width (-> -Nat)] + [get-splash-height (-> -Nat)] + [refresh-splash (-> -Void)] + ;; 31 Test + [test:button-push ((Un -String -Button%-Instance) . -> . -Void)] + [test:set-radio-box! + ((Un -String -Regexp (make-Instance -Radio-Box%)) (Un -String -Nat) . -> . -Void)] + [test:set-radio-box-item! ((Un -String -Regexp) . -> . -Void)] + [test:set-check-box! ((Un -String (make-Instance -Check-Box%)) -Boolean . -> . -Void)] + [test:set-choice! ((Un -String (make-Instance -Choice%)) + (Un -String -PosInt) + . -> . -Void)] + [test:set-list-box! ((Un -String (make-Instance -List-Box%)) + (Un -String -Nat) + . -> . -Void)] + [test:keystroke ((Un -Char -Symbol) + [(-lst (Un (-val 'alt) (-val 'control) (-val 'meta) (-val 'shift) + (-val 'noalt) (-val 'nocontrol) (-val 'nometa) (-val 'noshift)))] + . ->opt . -Void)] + [test:menu-select ((list -String) (-lst -String) . ->* . -Void)] + [test:mouse-click ((Un (-val 'left) (-val 'middle) (-val 'right)) + -Int + -Int + [(-lst (Un (-val 'alt) (-val 'control) (-val 'meta) (-val 'shift) + (-val 'noalt) (-val 'nocontrol) (-val 'nometa) (-val 'noshift)))] + . ->opt . -Void)] + [test:run-interval (cl-> [{-Real} -Void] + [{} -Real])] + [test:current-get-eventspaces (-Param (-> (-lst -Eventspace)))] + [test:new-window (-Window<%>-Instance . -> . -Void)] + [test:close-top-level-window (-Top-Level-Window<%>-Instance . -> . -Void)] + [test:top-level-focus-window-has? ((-Area<%>-Instance . -> . -Boolean) . -> . -Boolean)] + [test:number-pending-actions (-> -Nat)] + [test:reraise-error (-> -Void)] + [test:run-one ((-> -Void) . -> . -Void)] + [test:use-focus-table (-Param (Un -Boolean (-val 'debug)))] + [test:get-active-top-level-window (-> (Un -False -Frame%-Instance -Dialog%-Instance))] + [label-of-enabled/shown-button-in-top-level-window? (-String . -> . -Boolean)] + [enabled-shown-button? (-Button%-Instance . -> . -Boolean)] + [button-in-top-level-focusd-window? (-Button%-Instance . -> . -Boolean)] + ;; 32 Version + [version:add-spec (Univ Univ . -> . -Void)] + [version:version (-> -String)] + ;; 33 Backwards Compatibility + [scheme:text<%> (parse-type #'Racket:Text<%>)] + [scheme:text-mixin (parse-type #'Racket:Text-Mixin)] + [scheme:text% (parse-type #'Racket:Text%)] + [scheme:text-mode<%> (parse-type #'Racket:Text-Mode<%>)] + [scheme:text-mode-mixin (parse-type #'Racket:Text-Mode-Mixin)] + [scheme:text-mode% (parse-type #'Racket:Text-Mode%)] + [scheme:set-mode-mixin (parse-type #'Racket:Set-Mode-Mixin)] + [scheme:sexp-snip% (parse-type #'Racket:Sexp-Snip%)] + ; other ones not obvious. Maybe just drop compatibility for now? ^^ + ;; 34 Signatures + ;; 35 Unit + ) diff --git a/pkgs/typed-racket-pkgs/typed-racket-more/typed/private/framework-types.rkt b/pkgs/typed-racket-pkgs/typed-racket-more/typed/private/framework-types.rkt index cb4dd7d3..9fc9c842 100644 --- a/pkgs/typed-racket-pkgs/typed-racket-more/typed/private/framework-types.rkt +++ b/pkgs/typed-racket-pkgs/typed-racket-more/typed/private/framework-types.rkt @@ -4,25 +4,109 @@ (require "../racket/private/gui-types.rkt") +;; Frequently reused types +(define-type Style-Delta%-Instance (Instance Style-Delta%)) +(define-type Snip%-Instance (Instance Snip%)) +(define-type Color%-Instance (Instance Color%)) +(define-type Frame:Basic<%>-Instance (Instance Frame:Basic<%>)) +(define-type Canvas%-Instance (Instance Canvas%)) +(define-type Menu%-Instance (Instance Menu%)) +(define-type Key-Event%-Instance (Instance Key-Event%)) +(define-type Mouse-Event%-Instance (Instance Mouse-Event%)) +(define-type Control-Event%-Instance (Instance Control-Event%)) +(define-type Menu-Item%-Instance (Instance Menu-Item%)) +(define-type Canvas:Basic<%>-Instance (Instance Canvas:Basic<%>)) +(define-type Text%-Instance (Instance Text%)) +(define-type Editor-Canvas%-Instance (Instance Editor-Canvas%)) +(define-type Editor<%>-Instance (Instance Editor<%>)) +(define-type Area-Container<%>-Instance (Instance Area-Container<%>)) +(define-type Dialog%-Instance (Instance Dialog%)) + +;; 3 Autosave +(provide Autosave:Autosavable<%> + Editor<%>-And-Autosave:Autosavable<%>) + +(define-type Autosave:Autosavable<%> + (Class [do-autosave (-> (Option Path))])) + +(define-type Editor<%>-And-Autosave:Autosavable<%> + (Class #:implements Autosave:Autosavable<%> + #:implements Editor<%>)) + ;; 4 Canvas (provide Canvas:Basic<%> + Canvas:Basic-Mixin Canvas:Basic% + Canvas:Color<%> + Canvas:Color-Mixin + Canvas:Color% + Canvas:Delegate<%> + Canvas:Delegate-Mixin + Canvas:Delegate% + Canvas:Info<%> + Canvas:Info-Mixin + Canvas:Info% Canvas:Wide-Snip<%> - Canvas:Wide-Snip-Mixin) + Canvas:Wide-Snip-Mixin + Canvas:Wide-Snip%) + +;; TODO: I'm not sure about interface for classes (define-type Canvas:Basic<%> (Class #:implements Editor-Canvas%)) +(define-type Canvas:Basic-Mixin + (All (r #:row) + (Class #:row-var r #:implements Editor-Canvas%) + -> + (Class #:row-var r #:implements Canvas:Basic<%>))) + (define-type Canvas:Basic% (Class #:implements Canvas:Basic<%> - (init [parent (Instance Dialog%)] + (init [parent Dialog%-Instance] [editor (Instance Text:Basic<%>)]))) +(define-type Canvas:Color<%> + (Class #:implements Canvas:Basic<%>)) + +(define-type Canvas:Color-Mixin + (All (r #:row) + (Class #:row-var r #:implements Canvas:Basic<%>) + -> + (Class #:row-var r #:implements Canvas:Color<%>))) + +(define-type Canvas:Color% + (Class #:implements Canvas:Color<%>)) + +(define-type Canvas:Delegate<%> + (Class #:implements Canvas:Basic<%>)) + +(define-type Canvas:Delegate-Mixin + (All (r #:row) + (Class #:row-var r #:implements Canvas:Basic<%>) + -> + (Class #:row-var r #:implements Canvas:Delegate<%>))) + +(define-type Canvas:Delegate% + (Class #:implements Canvas:Delegate<%>)) + +(define-type Canvas:Info<%> + (Class #:implements Canvas:Basic<%>)) + +(define-type Canvas:Info-Mixin + (All (r #:row) + (Class #:row-var r #:implements Canvas:Basic<%>) + -> + (Class #:row-var r #:implements Canvas:Info<%>))) + +(define-type Canvas:Info% + (Class #:implements Canvas:Info<%>)) + (define-type Canvas:Wide-Snip<%> (Class #:implements Canvas:Basic<%> [recalc-snips (-> Void)] - [add-wide-snip ((Instance Snip%) -> Void)] - [add-tall-snip ((Instance Snip%) -> Void)])) + [add-wide-snip (Snip%-Instance -> Void)] + [add-tall-snip (Snip%-Instance -> Void)])) (define-type Canvas:Wide-Snip-Mixin (All (r #:row) @@ -30,68 +114,345 @@ -> (Class #:row-var r #:implements Canvas:Wide-Snip<%>))) +(define-type Canvas:Wide-Snip% + (Class #:implements Canvas:Wide-Snip<%>)) + +;; 7 Color +(provide Color:Text<%> + Color:Text% + Color:Text-Mixin + Color:Text-Mode<%> + Color:Text-Mode% + Color:Text-Mode-Mixin) + +(define-type Color:Text<%> + (Class #:implements Text:Basic<%> + [start-colorer ((Symbol -> String) + (U (Input-Port + -> (Values Any + Symbol + (Option Symbol) + (Option Positive-Integer) + (Option Positive-Integer))) + (Input-Port + Positive-Integer + Any ; TODO (not/c dont-stop?) + -> (Values Any + Symbol + (Option Symbol) + (Option Positive-Integer) + (Option Positive-Integer) + Positive-Integer + Any))) + (Listof (List Symbol Symbol)) + -> Void)] + [stop-colorer ([] [Boolean] . ->* . Void)] + [force-stop-colorer (Boolean -> Void)] + [is-stopped? (-> Boolean)] + [is-frozen? (-> Boolean)] + [freeze-colorer (-> Void)] + [thaw-colorer ([] [Boolean Boolean] . ->* . Void)] + [reset-region (Natural (U Natural 'end) -> Void)] + [reset-regions ((Listof (List Natural (U Natural 'end))) -> Void)] + [get-spell-check-strings (-> Boolean)] + [set-spell-check-strings (Boolean -> Void)] + [get-spell-check-text (-> Boolean)] + [set-spell-check-text (Boolean -> Void)] + [set-spell-current-dict ((Option String) -> Void)] + [get-spell-current-dict (-> (Option String))] + [get-spell-suggestions (Natural -> (Option (List Natural Natural (Listof String))))] + [get-regions (-> (Listof (List Natural (U Natural 'end))))] + [skip-whitespace (Natural (U 'forward 'backward) Boolean -> Natural)] + [backward-match (Natural Natural -> (U Natural))] + [backward-containing-sexp (Natural Natural -> (Option Natural))] + [forward-match (Natural Natural -> (Option Natural))] + [insert-close-paren ([Natural Char Boolean Boolean] + [(U #f 'adjacent 'forward)] + . ->* . Void)] + [classify-position (Natural -> (Option Symbol))] + [get-token-range (Natural -> (Values (Option Natural) (Option Natural)))] + [on-lexer-valid (Boolean -> Any)] + [is-lexer-valid? (-> Boolean)])) + +(define-type Color:Text-Mixin + (All (r #:row) + (Class #:row-var r #:implements Text:Basic<%>) + -> + (Class #:row-var r #:implements Color:Text<%>))) + +(define-type Color:Text% + (Class #:implements Color:Text<%>)) + +(define-type Color:Text-Mode<%> (Class)) + +(define-type Color:Text-Mode-Mixin + (All (r #:row) + (Class #:row-var r #:implements Mode:Surrogate-Text<%>) + -> + (Class #:row-var r #:implements Color:Text-Mode<%>))) + +(define-type Color:Text-Mode% + (Class #:implements Color:Text-Mode<%>)) + +;; 8 Comment Box +(provide Comment-Box:Snip%) +(define-type Comment-Box:Snip% + ;; TODO: refine return type? + (Class #:implements Editor-Snip:Decorated% + #:implements Readable-Snip<%>)) + +;; 10 Editor Snip +(provide Editor-Snip:Decorated<%> + Editor-Snip:Decorated% + Editor-Snip:Decorated-Mixin + Editor-Snip:Decorated-Snipclass%) + +(define-type Editor-Snip:Decorated<%> + (Class #:implements Editor-Snip% + [get-corner-bitmap (-> (Option (Instance Bitmap%)))] + [get-color (-> (U String Color%-Instance))] + [get-menu (-> (Option (Instance Popup-Menu%)))] + [get-position (-> (U 'top-right 'left-top))] + [reset-min-sizes (-> Void)])) + +(define-type Editor-Snip:Decorated-Mixin + (All (r #:row) + (Class #:row-var r #:implements Snip%) + -> + (Class #:row-var r #:implements Editor-Snip:Decorated<%> + [get-corner-bitmap (-> #f)] + [get-color (-> (U "white" "black"))] + [get-menu (-> #f)] + [get-position (-> 'top-right)]))) + +(define-type Editor-Snip:Decorated% + (Class #:implements Editor-Snip:Decorated<%> + [make-snip (-> (Instance Editor-Snip:Decorated%))] + [make-editor (-> Editor<%>-Instance)] + [copy (-> (Instance Editor-Snip:Decorated<%> #|FIXME Editor-Snip:Decorated%|#))])) + +(define-type Editor-Snip:Decorated-Snipclass% + (Class #:implements Snip-Class% + [make-snip ((Instance Editor-Stream-In%) -> (Instance Editor-Snip:Decorated<%>))] + [read ((Instance Editor-Stream-In%) -> (Instance Editor-Snip:Decorated<%>))])) + ;; 11 Editor (provide Editor:Basic<%> + Editor:Basic-Mixin + Editor:Standard-Style-List<%> + Editor:Standard-Style-List-Mixin Editor:Keymap<%> - Editor:File<%>) + Editor:Keymap-Mixin + Editor:Autowrap<%> + Editor:Autowrap-Mixin + Editor:File<%> + Editor:File-Mixin + Editor:Backup-Autosave<%> + Editor:Backup-Autosave-Mixin + Editor:Info<%> + Editor:Info-Mixin) (define-type Editor:Basic<%> (Class #:implements Editor<%> [has-focus? (-> Boolean)] - ;; FIXME - )) + [local-edit-sequence? (-> Boolean)] + [run-after-edit-sequence ([(-> Void)] + [(Option Symbol)] + . ->* . + Void)] + [get-top-level-window (-> (Option (Instance Top-Level-Window<%>)))] + [save-file-out-of-date? (-> Boolean)] + [save-file/gui-error ([] + [(Option String) + (U 'guess 'standard 'text 'text-force-cr 'same 'copy) + Boolean] + . ->* . + Boolean)] + [load-file/gui-error ([] + [(Option String) + (U 'guess 'standard 'text 'text-force-cr 'same 'copy) + Boolean] + . ->* . + Boolean)] + [on-close (-> Void)] + [can-close? (-> Boolean)] + [close (-> Boolean)] + [get-filename/untitled-name (-> String)] + [get-pos/text (Mouse-Event%-Instance -> (Values (Option Natural) + (Option Editor<%>-Instance)))] + [get-pos/text-dc-location (Integer Integer -> (Values (Option Natural) + (Option Editor<%>-Instance)))])) + +(define-type Editor:Basic-Mixin + (All (r #:row) + (Class #:row-var r #:implements Editor<%>) + -> + (Class #:row-var r #:implements Editor:Basic<%>))) + +(define-type Editor:Standard-Style-List<%> + (Class #:implements Editor<%>)) + +(define-type Editor:Standard-Style-List-Mixin + (All (r #:row) + (Class #:row-var r #:implements Editor<%>) + -> + (Class #:row-var r #:implements Editor:Standard-Style-List<%>))) (define-type Editor:Keymap<%> (Class #:implements Editor:Basic<%> - ;; FIXME - )) + [get-keymaps (-> (Listof (Instance Keymap%)))])) + +(define-type Editor:Keymap-Mixin + (All (r #:row) + (Class #:row-var r #:implements Editor:Basic<%>) + -> + (Class #:row-var r #:implements Editor:Keymap<%>))) + +(define-type Editor:Autowrap<%> + (Class #:implements Editor:Basic<%>)) + +(define-type Editor:Autowrap-Mixin + (All (r #:row) + (Class #:row-var r #:implements Editor:Basic<%>) + -> + (Class #:row-var r #:implements Editor:Autowrap<%>))) (define-type Editor:File<%> (Class #:implements Editor:Keymap<%> - ;; FIXME + [get-can-close-parent (-> (U #f (Instance Frame%) Dialog%-Instance))] [update-frame-filename (-> Void)] [allow-close-with-no-filename? (-> Boolean)] [user-saves-or-not-modified? (#t -> Boolean)] ; FIXME: fishy docs )) +(define-type Editor:File-Mixin + (All (r #:row) + (Class #:row-var r #:implements Editor:Keymap<%>) + -> + (Class #:row-var r #:implements Editor:File<%>))) + +(define-type Editor:Backup-Autosave<%> + (Class #:implements Editor:Basic<%> + [backup? (-> Boolean)] + [autosave? (-> Boolean)] + [do-autosave (-> (Option Path))] + [remove-autosave (-> Void)])) + +(define-type Editor:Backup-Autosave-Mixin + (All (r #:row) + (Class #:row-var r #:implements Editor:Basic<%>) + -> + (Class #:row-var r + #:implements Editor:Backup-Autosave<%> + #:implements Autosave:Autosavable<%>))) + +(define-type Editor:Info<%> + (Class #:implements Editor:Basic<%>)) + +(define-type Editor:Info-Mixin + (All (r #:row) + (Class #:row-var r #:implements Editor:Basic<%>) + -> + (Class #:row-var r #:implements Editor:Info<%>))) + ;; 14 Frame (provide Frame:Basic<%> - Frame:Focus-Table<%> - Frame:Size-Pref<%> - Frame:Register-Group<%> - Frame:Status-Line<%> + Frame:Basic% Frame:Basic-Mixin + Frame:Focus-Table<%> Frame:Focus-Table-Mixin + Frame:Size-Pref<%> + Frame:Size-Pref% Frame:Size-Pref-Mixin + Frame:Register-Group<%> Frame:Register-Group-Mixin - Frame:Status-Line-Mixin) + Frame:Status-Line<%> + Frame:Status-Line% + Frame:Status-Line-Mixin + Frame:Info<%> + Frame:Info% + Frame:Info-Mixin + Frame:Text-Info<%> + Frame:Text-Info% + Frame:Text-Info-Mixin + Frame:Pasteboard-Info<%> + Frame:Pasteboard-Info% + Frame:Pasteboard-Info-Mixin + Frame:Standard-Menus<%> + Frame:Standard-Menus% + Frame:Standard-Menus-Mixin + Frame:Editor<%> + Frame:Editor% + Frame:Editor-Mixin + Frame:Text<%> + Frame:Text% + Frame:Text-Mixin + Frame:Pasteboard<%> + Frame:Pasteboard% + Frame:Pasteboard-Mixin + Frame:Delegate<%> + Frame:Delegate% + Frame:Delegate-Mixin + Frame:Searchable<%> + Frame:Searchable% + Frame:Searchable-Mixin + Frame:Searchable-Text<%> + Frame:Searchable-Text-Mixin) (define-type Frame:Basic<%> (Class #:implements Frame% - ;; this method has a tricky type - [get-area-container% (-> Any)] - [get-area-container (-> (Instance Area-Container<%>))] - [get-menu-bar% (-> Any)] + [get-area-container% (-> Area-Container<%> #|FIXME (implementation?/c area-container<%>)|#)] + [get-area-container (-> Area-Container<%>-Instance)] + [get-menu-bar% (-> ClassTop #|FIXME (subclass?/c menu-bar%)|#)] [make-root-area-container - (Any (Instance Area-Container<%>) -> (Instance Area-Container<%>))] + (Area-Container<%> #|FIXME (implementation?/c area-container<%>)|# + Area-Container<%>-Instance + -> Area-Container<%>-Instance)] [close (-> Void)] [editing-this-file? (Path -> Boolean)] - [get-filename - (case-> - (-> (Option Path)) - ((Option (Boxof Boolean)) -> (Option Path)))] + [get-filename ([] [(Option (Boxof Boolean))] . ->* . (Option Path))] [make-visible (String -> Void)])) +(define-type Frame:Basic-Mixin + (All (r #:row) + (Class #:row-var r #:implements Frame%) + -> + (Class #:row-var r #:implements Frame:Basic<%>))) + (define-type Frame:Focus-Table<%> (Class #:implements Frame%)) +(define-type Frame:Focus-Table-Mixin + (All (r #:row) + (Class #:row-var r #:implements Frame%) + -> + (Class #:row-var r #:implements Frame:Focus-Table<%>))) + (define-type Frame:Size-Pref<%> (Class #:implements Frame:Basic<%> [adjust-size-when-monitor-setup-changes? (-> Boolean)])) +(define-type Frame:Size-Pref-Mixin + (All (r #:row) + (Class #:row-var r #:implements Frame%) + -> + (Class #:row-var r #:implements Frame:Size-Pref<%> + (init [size-preferences Symbol] + [position-preferences-key (Option Symbol) #:optional] + [width (Option Natural)] + [height (Option Natural)] + [x (Option Integer)] + [y (Option Integer)])))) + (define-type Frame:Register-Group<%> (Class #:implements Frame%)) +(define-type Frame:Register-Group-Mixin + (All (r #:row) + (Class #:row-var r #:implements Frame:Basic<%>) + -> + (Class #:row-var r #:implements Frame:Register-Group<%>))) + (define-type Frame:Status-Line<%> ;; Note: if you change this next line to ;; #:implements Frame%, then the mixin using this @@ -105,58 +466,940 @@ [update-status-line (Symbol (Option String) -> Void)])) -(define-type Frame:Basic-Mixin - (All (r #:row) - (Class #:row-var r #:implements Frame%) - -> - (Class #:row-var r #:implements Frame:Basic<%>))) - -(define-type Frame:Focus-Table-Mixin - (All (r #:row) - (Class #:row-var r #:implements Frame%) - -> - (Class #:row-var r #:implements Frame:Focus-Table<%>))) - -(define-type Frame:Size-Pref-Mixin - (All (r #:row) - (Class #:row-var r #:implements Frame%) - -> - (Class #:row-var r #:implements Frame:Size-Pref<%> - (init [size-preferences Symbol] - [position-preferences-key (Option Symbol) #:optional] - [width (Option Natural)] - [height (Option Natural)] - [x (Option Integer)] - [y (Option Integer)])))) - -(define-type Frame:Register-Group-Mixin - (All (r #:row) - (Class #:row-var r #:implements Frame:Basic<%>) - -> - (Class #:row-var r #:implements Frame:Focus-Table<%>))) - (define-type Frame:Status-Line-Mixin (All (r #:row) (Class #:row-var r #:implements Frame:Basic<%>) -> (Class #:row-var r #:implements Frame:Status-Line<%>))) +(define-type Frame:Info<%> + (Class #:implements Frame:Basic<%> + [determine-width + (String Editor-Canvas%-Instance Text%-Instance -> Integer)] + [lock-status-changed (-> Void)] + [udpate-info (-> Void)] + [set-info-canvas ((Option (Instance Canvas:Basic%)) -> Void)] + [get-info-canvas (-> (Option (Instance Canvas:Basic%)))] + [get-info-editor (-> (Option Editor<%>-Instance))] + [get-info-panel (-> (Instance Horizontal-Panel%))] + [show-info (-> Void)] + [hide-info (-> Void)] + [is-info-hidden? (-> Boolean)])) + +(define-type Frame:Info-Mixin + (All (r #:row) + (Class #:row-var r #:implements Frame:Basic<%>) + -> + (Class #:row-var r #:implements Frame:Info<%>))) + +(define-type Frame:Text-Info<%> + (Class #:implements Frame:Info<%> + [set-macro-recording (Boolean -> Void)] + [overwrite-status-changed (-> Void)] + [anchor-status-changed (-> Void)] + [editor-position-changed (-> Void)] + [add-line-number-menu-items ((Instance Menu-Item-Container<%>) -> Void)])) + +(define-type Frame:Text-Info-Mixin + (All (r #:row) + (Class #:row-var r #:implements Frame:Info<%>) + -> + (Class #:row-var r #:implements Frame:Text-Info<%>))) + +(define-type Frame:Pasteboard-Info<%> + (Class #:implements Frame:Info<%>)) + +(define-type Frame:Pasteboard-Info-Mixin + (All (r #:row) + (Class #:row-var r #:implements Frame:Basic<%>) + -> + (Class #:row-var r #:implements Frame:Pasteboard-Info<%>))) + +(define-type Frame:Standard-Menus<%> + (Class #:implements Frame:Basic<%> + [on-close (-> Void)] + [get-menu% (-> (Instance Menu:Can-Restore-Underscore-Menu%))] + [get-menu-item% (-> (Instance Menu:Can-Restore-Menu-Item%))] + [get-checkable-menu-item% + (-> (Instance Menu:Can-Restore-Checkable-Menu-Item%))] + [get-file-menu (-> Menu%-Instance)] + [get-edit-menu (-> Menu%-Instance)] + [get-help-menu (-> Menu%-Instance)] + [file-menu:get-new-item (-> (Option Menu-Item%-Instance))] + [file-menu:create-new? (-> Boolean)] + [file-menu:new-callback + (Menu-Item%-Instance Control-Event%-Instance -> Void)] + [file-menu:new-on-demand (Menu-Item%-Instance -> Void)] + [file-menu:new-string (-> String)] + [file-menu:new-help-string (-> String)] + [file-menu:between-new-and-open (Menu-Item%-Instance -> Void)] + [file-menu:get-open-item (-> (Option Menu-Item%-Instance))] + [file-menu:create-open? (-> Boolean)] + [file-menu:open-callback + (Menu-Item%-Instance Control-Event%-Instance -> Void)] + [file-menu:open-on-demand (Menu-Item%-Instance -> Void)] + [file-menu:open-string (-> String)] + [file-menu:open-help-string (-> String)] + [file-menu:get-open-recent-item (-> (Option Menu-Item%-Instance))] + [file-menu:create-open-recent? (-> Boolean)] + [file-menu:open-recent-callback + (Menu-Item%-Instance Control-Event%-Instance -> Void)] + [file-menu:open-recent-on-demand (Menu-Item%-Instance -> Void)] + [file-menu:open-recent-string (-> String)] + [file-menu:open-recent-help-string (-> String)] + [file-menu:between-open-and-revert (Menu-Item%-Instance -> Void)] + [file-menu:get-revert-item (-> (Option Menu-Item%-Instance))] + [file-menu:create-revert? (-> Boolean)] + [file-menu:revert-callback + (Menu-Item%-Instance Control-Event%-Instance -> Void)] + [file-menu:revert-on-demand (Menu-Item%-Instance -> Void)] + [file-menu:revert-string (-> String)] + [file-menu:revert-help-string (-> String)] + [file-menu:between-revert-and-save (Menu-Item%-Instance -> Void)] + [file-menu:get-save-item (-> (Option Menu-Item%-Instance))] + [file-menu:create-save? (-> Boolean)] + [file-menu:save-callback + (Menu-Item%-Instance Control-Event%-Instance -> Void)] + [file-menu:save-on-demand (Menu-Item%-Instance -> Void)] + [file-menu:save-string (-> String)] + [file-menu:save-help-string (-> String)] + [file-menu:get-save-as-item (-> (Option Menu-Item%-Instance))] + [file-menu:create-save-as? (-> Boolean)] + [file-menu:save-as-callback + (Menu-Item%-Instance Control-Event%-Instance -> Void)] + [file-menu:save-as-on-demand (Menu-Item%-Instance -> Void)] + [file-menu:save-as-string (-> String)] + [file-menu:save-as-help-string (-> String)] + [file-menu:between-save-as-and-print (Menu-Item%-Instance -> Void)] + [file-menu:get-print-item (-> (Option Menu-Item%-Instance))] + [file-menu:create-print? (-> Boolean)] + [file-menu:print-callback + (Menu-Item%-Instance Control-Event%-Instance -> Void)] + [file-menu:print-on-demand (Menu-Item%-Instance -> Void)] + [file-menu:print-string (-> String)] + [file-menu:print-help-string (-> String)] + [file-menu:between-print-and-close (Menu-Item%-Instance -> Void)] + [file-menu:get-close-item (-> (Option Menu-Item%-Instance))] + [file-menu:create-close? (-> Boolean)] + [file-menu:close-callback + (Menu-Item%-Instance Control-Event%-Instance -> Void)] + [file-menu:close-on-demand (Menu-Item%-Instance -> Void)] + [file-menu:close-string (-> String)] + [file-menu:close-help-string (-> String)] + [file-menu:between-close-and-quit (Menu-Item%-Instance -> Void)] + [file-menu:get-quit-item (-> (Option Menu-Item%-Instance))] + [file-menu:create-quit? (-> Boolean)] + [file-menu:quit-callback + (Menu-Item%-Instance Control-Event%-Instance -> Void)] + [file-menu:quit-on-demand (Menu-Item%-Instance -> Void)] + [file-menu:quit-string (-> String)] + [file-menu:quit-help-string (-> String)] + [file-menu:after-quit (Menu-Item%-Instance -> Void)] + [edit-menu:get-undo-item (-> (Option Menu-Item%-Instance))] + [edit-menu:create-undo? (-> Boolean)] + [edit-menu:undo-callback + (Menu-Item%-Instance Control-Event%-Instance -> Void)] + [edit-menu:undo-on-demand (Menu-Item%-Instance -> Void)] + [edit-menu:undo-string (-> String)] + [edit-menu:undo-help-string (-> String)] + [edit-menu:get-redo-item (-> (Option Menu-Item%-Instance))] + [edit-menu:create-redo? (-> Boolean)] + [edit-menu:redo-callback + (Menu-Item%-Instance Control-Event%-Instance -> Void)] + [edit-menu:redo-on-demand (Menu-Item%-Instance -> Void)] + [edit-menu:redo-string (-> String)] + [edit-menu:redo-help-string (-> String)] + [edit-menu:between-redo-and-cut (Menu-Item%-Instance -> Void)] + [edit-menu:get-cut-item (-> (Option Menu-Item%-Instance))] + [edit-menu:create-cut? (-> Boolean)] + [edit-menu:cut-callback + (Menu-Item%-Instance Control-Event%-Instance -> Void)] + [edit-menu:cut-on-demand (Menu-Item%-Instance -> Void)] + [edit-menu:cut-string (-> String)] + [edit-menu:cut-help-string (-> String)] + [edit-menu:between-cut-and-copy (Menu-Item%-Instance -> Void)] + [edit-menu:get-copy-item (-> (Option Menu-Item%-Instance))] + [edit-menu:create-copy? (-> Boolean)] + [edit-menu:copy-callback + (Menu-Item%-Instance Control-Event%-Instance -> Void)] + [edit-menu:copy-on-demand (Menu-Item%-Instance -> Void)] + [edit-menu:copy-string (-> String)] + [edit-menu:copy-help-string (-> String)] + [edit-menu:between-copy-and-paste (Menu-Item%-Instance -> Void)] + [edit-menu:get-paste-item (-> (Option Menu-Item%-Instance))] + [edit-menu:create-paste? (-> Boolean)] + [edit-menu:paste-callback + (Menu-Item%-Instance Control-Event%-Instance -> Void)] + [edit-menu:paste-on-demand (Menu-Item%-Instance -> Void)] + [edit-menu:paste-string (-> String)] + [edit-menu:paste-help-string (-> String)] + [edit-menu:between-paste-and-clear (Menu-Item%-Instance -> Void)] + [edit-menu:get-clear-item (-> (Option Menu-Item%-Instance))] + [edit-menu:create-clear? (-> Boolean)] + [edit-menu:clear-callback + (Menu-Item%-Instance Control-Event%-Instance -> Void)] + [edit-menu:clear-on-demand (Menu-Item%-Instance -> Void)] + [edit-menu:clear-string (-> String)] + [edit-menu:clear-help-string (-> String)] + [edit-menu:between-clear-and-select-all (Menu-Item%-Instance -> Void)] + [edit-menu:get-select-all-item (-> (Option Menu-Item%-Instance))] + [edit-menu:create-select-all? (-> Boolean)] + [edit-menu:select-all-callback + (Menu-Item%-Instance Control-Event%-Instance -> Void)] + [edit-menu:select-all-on-demand (Menu-Item%-Instance -> Void)] + [edit-menu:select-all-string (-> String)] + [edit-menu:select-all-help-string (-> String)] + [edit-menu:between-select-all-and-find (Menu-Item%-Instance -> Void)] + [edit-menu:get-find-item (-> (Option Menu-Item%-Instance))] + [edit-menu:create-find? (-> Boolean)] + [edit-menu:find-callback + (Menu-Item%-Instance Control-Event%-Instance -> Void)] + [edit-menu:find-on-demand (Menu-Item%-Instance -> Void)] + [edit-menu:find-string (-> String)] + [edit-menu:find-help-string (-> String)] + [edit-menu:get-find-from-selection-item (-> (Option Menu-Item%-Instance))] + [edit-menu:create-find-from-selection? (-> Boolean)] + [edit-menu:find-from-selection-callback + (Menu-Item%-Instance Control-Event%-Instance -> Void)] + [edit-menu:find-from-selection-on-demand (Menu-Item%-Instance -> Void)] + [edit-menu:find-from-selection-string (-> String)] + [edit-menu:find-from-selection-help-string (-> String)] + [edit-menu:get-find-next-item (-> (Option Menu-Item%-Instance))] + [edit-menu:create-find-next? (-> Boolean)] + [edit-menu:find-next-callback + (Menu-Item%-Instance Control-Event%-Instance -> Void)] + [edit-menu:find-next-on-demand (Menu-Item%-Instance -> Void)] + [edit-menu:find-next-string (-> String)] + [edit-menu:find-next-help-string (-> String)] + [edit-menu:get-find-previous-item (-> (Option Menu-Item%-Instance))] + [edit-menu:create-find-previous? (-> Boolean)] + [edit-menu:find-previous-callback + (Menu-Item%-Instance Control-Event%-Instance -> Void)] + [edit-menu:find-previous-on-demand (Menu-Item%-Instance -> Void)] + [edit-menu:find-previous-string (-> String)] + [edit-menu:find-previous-help-string (-> String)] + [edit-menu:get-show/hide-replace-item (-> (Option Menu-Item%-Instance))] + [edit-menu:create-show/hide-replace? (-> Boolean)] + [edit-menu:show/hide-replace-callback + (Menu-Item%-Instance Control-Event%-Instance -> Void)] + [edit-menu:show/hide-replace-on-demand (Menu-Item%-Instance -> Void)] + [edit-menu:show/hide-replace-string (-> String)] + [edit-menu:show/hide-replace-help-string (-> String)] + [edit-menu:get-replace-item (-> (Option Menu-Item%-Instance))] + [edit-menu:create-replace? (-> Boolean)] + [edit-menu:replace-callback + (Menu-Item%-Instance Control-Event%-Instance -> Void)] + [edit-menu:replace-on-demand (Menu-Item%-Instance -> Void)] + [edit-menu:replace-string (-> String)] + [edit-menu:replace-help-string (-> String)] + [edit-menu:get-replace-all-item (-> (Option Menu-Item%-Instance))] + [edit-menu:create-replace-all? (-> Boolean)] + [edit-menu:replace-all-callback + (Menu-Item%-Instance Control-Event%-Instance -> Void)] + [edit-menu:replace-all-on-demand (Menu-Item%-Instance -> Void)] + [edit-menu:replace-all-string (-> String)] + [edit-menu:replace-all-help-string (-> String)] + [edit-menu:get-find-case-sensitive-item (-> (Option Menu-Item%-Instance))] + [edit-menu:create-find-case-sensitive? (-> Boolean)] + [edit-menu:find-case-sensitive-callback + (Menu-Item%-Instance Control-Event%-Instance -> Void)] + [edit-menu:find-case-sensitive-on-demand (Menu-Item%-Instance -> Void)] + [edit-menu:find-case-sensitive-string (-> String)] + [edit-menu:find-case-sensitive-help-string (-> String)] + [edit-menu:between-find-and-preferences (Menu-Item%-Instance -> Void)] + [edit-menu:get-preferences-item (-> (Option Menu-Item%-Instance))] + [edit-menu:create-preferences? (-> Boolean)] + [edit-menu:preferences-callback + (Menu-Item%-Instance Control-Event%-Instance -> Void)] + [edit-menu:preferences-on-demand (Menu-Item%-Instance -> Void)] + [edit-menu:preferences-string (-> String)] + [edit-menu:preferences-help-string (-> String)] + [edit-menu:after-preferences (Menu-Item%-Instance -> Void)] + [help-menu:before-about (Menu-Item%-Instance -> Void)] + [help-menu:get-about-item (-> (Option Menu-Item%-Instance))] + [help-menu:create-about? (-> Boolean)] + [help-menu:about-callback + (Menu-Item%-Instance Control-Event%-Instance -> Void)] + [help-menu:about-on-demand (Menu-Item%-Instance -> Void)] + [help-menu:about-string (-> String)] + [help-menu:about-help-string (-> String)] + [help-menu:after-about (Menu-Item%-Instance -> Void)])) + +(define-type Frame:Standard-Menus-Mixin + (All (r #:row) + (Class #:row-var r #:implements Frame:Basic<%>) + -> + (Class #:row-var r #:implements Frame:Standard-Menus<%>))) + +(define-type Frame:Editor<%> + (Class #:implements Frame:Standard-Menus<%> + [get-entire-label (-> String)] + [get-label-prefix (-> String)] + [set-label-prefix (String -> Void)] + [get-canvas% (-> ClassTop #|FIXME (subclass?/c editor-canvas%)|#)] + [get-canvas<%> (-> (Instance Canvas:Basic%))] + [get-editor% (-> Editor<%> #|FIXME (implementation?/c editor<%>)|#)] + [get-editor<%> (-> Any #|FIXME interface?|#)] + [make-editor (-> Editor<%>-Instance)] + [revert (-> Void)] + [save ([] + [(U 'guess 'standard 'text 'text-force-cr 'same 'copy)] + . ->* . Boolean)] + [save-as ([] + [(U 'guess 'standard 'text 'text-force-cr 'same 'copy)] + . ->* . Boolean)] + [get-canvas (-> Canvas%-Instance)] + [get-editor (-> Editor<%>-Instance)])) + +(define-type Frame:Editor-Mixin + (All (r #:row) + (Class #:row-var r #:implements Frame:Standard-Menus<%>) + -> + (Class #:row-var r #:implements Frame:Editor<%> + (init [filename String] + [editor% Editor:Basic<%> #|FIXME (implementation?/c editor:basic<%>)|#] + [parent (Option (Instance Frame%)) #:optional] + [width (Option Natural)] + [height (Option Natural)] + [x (Option Integer)] + [y (Option Integer)] + [style (Listof (U 'no-resize-border 'no-caption + 'no-system-menu 'hide-menu-bar + 'mdi-parent 'mdi-child + 'toolbar-button 'float 'metal))] + [enabled Any] + [border Natural] + [spacing Natural] + [alignment (List (U 'left 'center 'right) + (U 'top 'center 'bottom))] + [min-width Natural] + [min-height Natural] + [stretchable-width Any] + [stretchable-height Any])))) + +(define-type Frame:Text<%> + (Class #:implements Frame:Editor<%>)) + +(define-type Frame:Text-Mixin + (All (r #:row) + (Class #:row-var r #:implements Frame:Editor<%>) + -> + (Class #:row-var r #:implements Frame:Text<%> + (init [editor% Text% #|FIXME (extends text%)|#])))) + +(define-type Frame:Pasteboard<%> + (Class #:implements Frame:Editor<%>)) + +(define-type Frame:Pasteboard-Mixin + (All (r #:row) + (Class #:row-var r #:implements Frame:Editor<%>) + -> + (Class #:row-var r #:implements Frame:Pasteboard<%> + (init [editor% Pasteboard% #|FIXME (extends pasteboard%)|#])))) + +(define-type Frame:Delegate<%> + (Class #:implements Frame:Status-Line<%> + #:implements Frame:Text<%> + [get-delegated-text (-> (Option (Instance Text:Delegate<%>)))] + [set-delegated-text ((Option (Instance Text:Delegate<%>)) -> Void)] + [delegated-text-shown? (-> Boolean)] + [hide-delegated-text (-> Void)] + [show-delegated-text (-> Void)] + [delegate-moved (-> Void)])) + +(define-type Frame:Delegate-Mixin + (All (r #:row) + (Class #:row-var r + #:implements Frame:Status-Line<%> + #:implements Frame:Text<%>) + -> + (Class #:row-var r #:implements Frame:Delegate<%>))) + +(define-type Frame:Searchable<%> + (Class #:implements Frame:Basic<%> + [search ((U 'forward 'backward) -> Void)] + [search-replace (-> Boolean)] + [replace-all (-> Void)] + [get-text-to-search (-> Text%-Instance)] + [set-text-to-search + ((Option (Instance Text% #|FIXME (subclass?/c text%)|#)) -> Void)] + [search-hidden? (-> Boolean)] + [hide-search (-> Void)] + [unhide-search ([Boolean] + [#:new-search-string-from-selection? Boolean] + . ->* . Void)] + [unhide-search-and-toggle-focus ([] + [#:new-search-string-from-selection? Boolean] + . ->* . Void)] + [get-case-sensitive-search? (-> Boolean)] + [search-hits-changed (-> Void)])) + +(define-type Frame:Searchable-Mixin + (All (r #:row) + (Class #:row-var r #:implements Frame:Standard-Menus<%>) + -> + (Class #:row-var r #:implements Frame:Searchable<%> + [edit-menu:find-callback (-> Boolean)] + [edit-menu:create-find? (-> #t)] + ; FIXME: doc says "Overrides " from here on + [edit-menu:find-again-callback + (Menu-Item%-Instance Control-Event%-Instance -> Void)] + [edit-menu:create-find-again? (-> #t)] + [edit-menu:find-again-backwards-callback + (Menu-Item%-Instance Control-Event%-Instance -> Void)] + [edit-menu:create-find-again-backwards? (-> #t)] + ; end bug doc saying "Overrides " + [edit-menu:create-replace-all? (-> #t)] + [edit-menu:create-find-case-sensitive? (-> #t)]))) + +(define-type Frame:Searchable-Text<%> + (Class #:implements Frame:Searchable<%> + #:implements Frame:Text<%>)) + +(define-type Frame:Searchable-Text-Mixin + (All (r #:row) + (Class #:row-var r + #:implements Frame:Text<%> + #:implements Frame:Searchable<%>) + -> + (Class #:row-var r #:implements Frame:Searchable-Text<%>))) + +;; FIXME: not sure about types for these classes +(define-type Frame:Basic% + (Class #:implements Frame:Register-Group<%>)) +(define-type Frame:Size-Pref% + (Class #:implements Frame:Size-Pref<%>)) +(define-type Frame:Info% + (Class #:implements Frame:Info<%>)) +(define-type Frame:Text-Info% + (Class #:implements Frame:Text-Info<%>)) +(define-type Frame:Pasteboard-Info% + (Class #:implements Frame:Pasteboard-Info<%>)) +(define-type Frame:Status-Line% + (Class #:implements Frame:Status-Line<%>)) +(define-type Frame:Standard-Menus% + (Class #:implements Frame:Standard-Menus<%>)) +(define-type Frame:Editor% + (Class #:implements Frame:Editor<%>)) +(define-type Frame:Text% + (Class #:implements Frame:Text<%>)) +(define-type Frame:Searchable% + (Class #:implements Frame:Searchable<%>)) +(define-type Frame:Delegate% + (Class #:implements Frame:Delegate<%>)) +(define-type Frame:Pasteboard% + (Class #:implements Frame:Pasteboard<%>)) + +;; 15 Group +(provide Group:%) + +(define-type Group:% + (Class [get-mdi-parent (-> (Option (Instance Frame%)))] + [get-frames (-> (Listof Frame:Basic<%>-Instance))] + [frame-label-changed (Frame:Basic<%>-Instance -> Void)] + [frame-shown/hidden (-> Void)] + [for-each-frame ((Frame:Basic<%>-Instance -> Void) -> Void)] + [get-active-frame (-> Frame:Basic<%>-Instance)] + [set-active-frame (Frame:Basic<%>-Instance -> Void)] + [insert-frame (Frame:Basic<%>-Instance -> Void)] + [remove-frame (Frame:Basic<%>-Instance -> Void)] + [clear (-> Boolean)] + [on-close-all (-> Void)] + [can-close-all? (-> Boolean)] + [locate-file ((Option Frame:Basic<%>-Instance) -> Path)])) + +;; 19 Keymap +(provide Keymap:Aug-Keymap<%> + Keymap:Aug-Keymap% + Keymap:Aug-Keymap-Mixin) + +(define-type Keymap:Aug-Keymap<%> + (Class #:implements Keymap% + [get-chained-keymaps (-> (Listof (Instance Keymap%)))] + [get-map-function-table (-> (HashTable String String))] + [get-map-function-table/ht ((HashTable String String) -> (HashTable String String))])) + +(define-type Keymap:Aug-Keymap-Mixin + (All (r #:row) + (Class #:row-var r #:implements Keymap%) + -> + (Class #:row-var r #:implements Keymap:Aug-Keymap<%>))) + +(define-type Keymap:Aug-Keymap% + (Class #:implements Keymap:Aug-Keymap<%>)) + +;; 20 Menu +(provide Menu:Can-Restore<%> + Menu:Can-Restore-Mixin + Menu:Can-Restore-Underscore<%> + Menu:Can-Restore-Underscore-Mixin + Menu:Can-Restore-Menu-Item% + Menu:Can-Restore-Checkable-Menu-Item% + Menu:Can-Restore-Underscore-Menu%) + +(define-type Menu:Can-Restore<%> + (Class #:implements Selectable-Menu-Item<%> + [restore-keybinding (-> Void)])) + +(define-type Menu:Can-Restore-Mixin + (All (r #:row) + (Class #:row-var r #:implements Selectable-Menu-Item<%>) + -> + (Class #:row-var r #:implements Menu:Can-Restore<%>))) + +(define-type Menu:Can-Restore-Underscore<%> + (Class #:implements Labelled-Menu-Item<%> + [erase-underscores (-> Void)] + [restore-underscores (-> Void)])) + +(define-type Menu:Can-Restore-Underscore-Mixin + (All (r #:row) + (Class #:row-var r #:implements Labelled-Menu-Item<%>) + -> + (Class #:row-var r #:implements Menu:Can-Restore-Underscore<%>))) + +;; FIXME not sure about types for classes +(define-type Menu:Can-Restore-Menu-Item% + (Class #:implements Menu:Can-Restore<%>)) +(define-type Menu:Can-Restore-Checkable-Menu-Item% + (Class #:implements Menu:Can-Restore<%>)) +(define-type Menu:Can-Restore-Underscore-Menu% + (Class #:implements Menu:Can-Restore<%>)) + +;; 21 Mode +(provide Mode:Surrogate-Text<%> + Mode:Surrogate-Text% + Mode:Host-Text<%> + Mode:Host-Text-Mixin) + +(define-type File-Format (U 'guess 'same 'copy 'standard 'text 'text-force-cr)) +(define-type Image-Kind (U 'unknown 'unknown/mask 'unknown/alpha + 'gif 'gif/mask 'gif/alpha + 'jpeg 'png 'png/mask 'png/alpha + 'xbm 'xpm 'bmp 'pict)) +(define-type Draw-Caret (U 'no-caret 'show-inactive-caret 'show-caret (Pairof Natural Natural))) +(define-type Edit-Op (U 'undo 'redo 'clear 'cut 'copy 'paste + 'kill 'select-all 'insert-text-box + 'insert-pasteboard-box 'insert-image)) + +(define-type Mode:Surrogate-Text<%> + (Class [on-enable-surrogate (Text%-Instance -> Any)] + [on-disable-surrogate (Text%-Instance -> Any)])) + +(define-type Mode:Surrogate-Text% + (Class #:implements Mode:Surrogate-Text<%> + [on-change (Text%-Instance (-> Void) -> Void)] + [on-char (Text%-Instance (-> Void) Key-Event%-Instance -> Void)] + [on-default-char (Text%-Instance (-> Void) Key-Event%-Instance -> Void)] + [on-default-client (Text%-Instance (-> Any) Any -> Any)] + [on-display-size (Text%-Instance (-> Void) -> Void)] + [on-edit-sequence (Text%-Instance (-> Void) -> Void)] + [on-event (Text%-Instance (-> Void) Mouse-Event%-Instance -> Void)] + [on-focus (Text%-Instance (-> Void) Any -> Void)] + [on-load-file (Text%-Instance (-> Void) Path File-Format -> Void)] + [on-local-char (Text%-Instance (-> Void) Key-Event%-Instance -> Void)] + [on-local-event (Text%-Instance (-> Void) Mouse-Event%-Instance -> Void)] + [on-new-box (Text%-Instance (-> Snip%-Instance) (U 'text 'pasteboard) -> Snip%-Instance)] + #;[on-new-image-snip ; TODO: reeanable when Image-Snip% is available + (Text%-Instance (-> (Instance Image-Snip%)) Path Image-Kind Any Any -> (Instance Image-Snip%))] + [on-paint + (Text%-Instance (-> Void) Any (Instance DC<%>) Real Real Real Real Real Real Draw-Caret -> Void)] + [on-save-file (Text%-Instance (-> Void) Path File-Format -> Void)] + [on-snip-modified (Text%-Instance (-> Void) Snip%-Instance Any -> Void)] + [on-change-style (Text%-Instance (-> Any) Natural Natural -> Any)] + [on-delete (Text%-Instance (-> Void) Natural Natural -> Void)] + [on-insert (Text%-Instance (-> Void) Natural Natural -> Void)] + [on-new-string-snip + (Text%-Instance (-> (Instance String-Snip%)) -> (Instance String-Snip%))] + [on-new-tab-snip (Text%-Instance (-> (Instance Tab-Snip%)) -> (Instance Tab-Snip%))] + [on-set-size-constraint (Text%-Instance (-> Void) -> Void)] + [after-change-style (Text%-Instance (-> Void) Natural Natural -> Void)] + [after-delete (Text%-Instance (-> Void) Natural Natural -> Void)] + [after-insert (Text%-Instance (-> Void) Natural Natural -> Void)] + [after-set-position (Text%-Instance (-> Void) -> Void)] + [after-set-size-constraint (Text%-Instance (-> Void) -> Void)] + [after-edit-sequence (Text%-Instance (-> Void) -> Void)] + [after-load-file (Text%-Instance (-> Void) Any -> Void)] + [after-save-file (Text%-Instance (-> Void) Any -> Void)] + [can-change-style? (Text%-Instance (-> Boolean) Natural Natural -> Boolean)] + [can-delete? (Text%-Instance (-> Boolean) Natural Natural -> Boolean)] + [can-insert? (Text%-Instance (-> Boolean) Natural Natural -> Boolean)] + [can-set-size-constraint? (Text%-Instance (-> Boolean) -> Boolean)] + [can-do-edit-operation? ([Text%-Instance (-> Boolean) Edit-Op] + [Any] + . ->* . Boolean)] + [can-load-file? (Text%-Instance (-> Boolean) Path File-Format -> Boolean)] + [can-save-file? (Text%-Instance (-> Boolean) Path File-Format -> Boolean)] + [put-file + (Text%-Instance + (-> (Option Path-String)) + (Option Path-String) (Option Path-String) + -> (Option Path-String))])) + +(define-type Mode:Host-Text<%> + (Class [get-surrogate (-> (Option (Instance Mode:Surrogate-Text<%>)))] + [set-surrogate ((Option (Instance Mode:Surrogate-Text<%>)) -> Void)])) + +(define-type Mode:Host-Text-Mixin + (All (r #:row) + (Class #:row-var r) + -> + (Class #:row-var r #:implements Mode:Host-Text<%>))) + +;; 22 Number Snip +(provide Number-Snip:Snip-Class%) + +(define-type Number-Snip:Snip-Class% + (Class #:implements Snip-Class%)) + +;; 23 Panel +(provide Panel:Single<%> + Panel:Single% + Panel:Single-Mixin + Panel:Single-Window<%> + Panel:Single-Window-Mixin + Panel:Single-Pane% + Panel:Dragable<%> + Panel:Dragable-Mixin + Panel:Vertical-Dragable<%> + Panel:Vertical-Dragable% + Panel:Vertical-Dragable-Mixin + Panel:Horizontal-Dragable<%> + Panel:Horizontal-Dragable% + Panel:Horizontal-Dragable-Mixin + Panel:Splitter<%> + Panel:Splitter-Mixin + Panel:Discrete-Sizes<%> + Panel:Discrete-Sizes-Mixin + Panel:Horizontal-Discrete-Sizes% + Panel:Vertical-Discrete-Sizes% + Panel:Discrete-Child<%>) + +(define-type Panel:Single<%> + (Class #:implements Area-Container<%> + [active-child (case-> + [(Instance Area<%>) -> Void] + [-> (Instance Area<%>)])])) + +(define-type Panel:Single-Mixin + (All (r #:row) + (Class #:row-var r #:implements Area-Container<%>) + -> + (Class #:row-var r #:implements Panel:Single<%>))) + +(define-type Panel:Single-Window<%> + (Class #:implements Panel:Single<%> + #:implements Window<%>)) + +(define-type Panel:Single-Window-Mixin + (All (r #:row) + (Class #:row-var r + #:implements Panel:Single<%> + #:implements Window<%>) + -> + (Class #:row-var r #:implements Panel:Single-Window<%>))) + +(define-type Panel:Single% + (Class #:implements Panel:Single<%>)) + +(define-type Panel:Single-Pane% + (Class #:implements Panel:Single<%>)) + +(define-type Panel:Dragable<%> + (Class #:implements Window<%> + #:implements Area-Container<%> + [after-percentage-change (-> Void)] + [get-default-percentages + (Positive-Integer -> (Listof Nonnegative-Real #|FIXME (between/c 0 1)|#))] + [right-click-in-gap + (Mouse-Event%-Instance (Instance Subarea<%>) (Instance Subarea<%>) -> Void)] + [set-percentages ((Listof Real) -> Void)] + [get-percentages (-> (Listof Real))] + [get-vertical? (-> Boolean)] + [set-orientation (Boolean -> Void)])) + +(define-type Panel:Vertical-Dragable<%> + (Class #:implements Panel:Dragable<%>)) + +(define-type Panel:Horizontal-Dragable<%> + (Class #:implements Panel:Dragable<%>)) + +(define-type Panel:Dragable-Mixin + (All (r #:row) + (Class #:row-var r + #:implements Window<%> + #:implements Area-Container<%>) + -> + (Class #:row-var r #:implements Panel:Dragable<%>))) + +(define-type Panel:Vertical-Dragable-Mixin + (All (r #:row) + (Class #:row-var r #:implements Panel:Dragable<%>) + -> + (Class #:row-var r #:implements Panel:Vertical-Dragable<%>))) + +(define-type Panel:Horizontal-Dragable-Mixin + (All (r #:row) + (Class #:row-var r #:implements Panel:Dragable<%>) + -> + (Class #:row-var r #:implements Panel:Horizontal-Dragable<%>))) + +(define-type Panel:Vertical-Dragable% + (Class #:implements Panel:Vertical-Dragable<%>)) + +(define-type Panel:Horizontal-Dragable% + (Class #:implements Panel:Horizontal-Dragable<%>)) + +(define-type Panel:Splitter<%> + (Class [split-vertical ((Instance Canvas<%>) + ((Instance Panel:Splitter<%>) -> (Instance Canvas<%>)) + -> (Instance Canvas<%>))] + [split-horizontal ((Instance Canvas<%>) + ((Instance Panel:Splitter<%>) -> (Instance Canvas<%>)) + -> (Instance Canvas<%>))] + [collapse ((Instance Canvas<%>) -> Void)])) + +(define-type Panel:Splitter-Mixin + (All (r #:row) + (Class #:row-var r + #:implements Area-Container<%> + #:implements Panel:Dragable<%>) + -> + (Class #:row-var r #:implements Panel:Splitter<%>))) + +(define-type Panel:Discrete-Sizes<%> + (Class [set-orientation (Boolean -> Void)] + [get-orientation (-> Boolean)])) + +(define-type Panel:Discrete-Child<%> + (Class [get-discrete-widths (-> (Listof Natural))] + [get-discrete-heights (-> (Listof Natural))])) + +(define-type Panel:Discrete-Sizes-Mixin + (All (r #:row) + (Class #:row-var r #:implements Panel%) + -> + (Class #:row-var r + #:implements Panel:Discrete-Sizes<%> + #:implements Panel:Discrete-Child<%>))) + +(define-type Panel:Horizontal-Discrete-Sizes% + (Class #:implements Panel:Discrete-Sizes<%>)) + +(define-type Panel:Vertical-Discrete-Sizes% + (Class #:implements Panel:Discrete-Sizes<%>)) + +;; 24 Pasteboard +(provide Pasteboard:Basic% + Pasteboard:Standard-Style-List% + Pasteboard:Keymap% + Pasteboard:File% + Pasteboard:Backup-Autosave% + Pasteboard:Info%) + +(define-type Pasteboard:Basic% + (Class #:implements Editor:Basic<%>)) + +(define-type Pasteboard:Standard-Style-List% + (Class #:implements Editor:Standard-Style-List<%>)) + +(define-type Pasteboard:Keymap% + (Class #:implements Editor:Keymap<%>)) + +(define-type Pasteboard:File% + (Class #:implements Editor:File<%>)) + +(define-type Pasteboard:Backup-Autosave% + (Class #:implements Editor:Backup-Autosave<%>)) + +(define-type Pasteboard:Info% + (Class #:implements Editor:Info<%>)) + +;; 28 Racket +(provide Racket:Sexp-Snip<%> + Racket:Sexp-Snip% + Racket:Text<%> + Racket:Text% + Racket:Text-Mixin + Racket:Text-Mode<%> + Racket:Text-Mode% + Racket:Text-Mode-Mixin + Racket:Set-Mode-Mixin) + +(define-type Racket:Sexp-Snip<%> + (Class [get-saved-snips (-> (Listof Snip%-Instance))])) + +(define-type Racket:Sexp-Snip% + (Class #:implements Snip% + #:implements Racket:Sexp-Snip<%> + #:implements Readable-Snip<%>)) + +(define-type Racket:Text<%> + (Class #:implements Text:Basic<%> + #:implements Mode:Host-Text<%> + #:implements Color:Text<%> + [get-limit (-> Integer)] + [balance-parens (Key-Event%-Instance -> Void)] + [tabify-on-return? (-> Boolean)] + [tabify ([] [Integer] . ->* . Void)] + [tabify-selection ([] [Integer Integer] . ->* . Void)] + [tabify-all (-> Void)] + [insert-return (-> Void)] + [box-comment-out-selection ((U 'start Integer) (U 'end Integer) -> Void)] + [comment-out-selection (Integer Integer -> Void)] + [uncomment-selection (Integer Integer -> Void)] + [get-forward-sexp (Integer -> (Option Integer))] + [remove-sexp (Integer -> Void)] + [forward-sexp (Integer -> Void)] + [flash-forward-sexp (Integer -> Void)] + [get-backward-sexp (Integer -> (Option Integer))] + [flash-backward-sexp (Integer -> Void)] + [backward-sexp (Integer -> Void)] + [find-up-sexp (Integer -> (Option Integer))] + [up-sexp (Integer -> Void)] + [find-down-sexp (Integer -> (Option Integer))] + [down-sexp (Integer -> Void)] + [remove-parens-forward (Integer -> Void)] + [select-forward-sexp (-> Void)] + [select-backward-sexp (-> Void)] + [select-up-sexp (-> Void)] + [select-down-sexp (-> Void)] + [transpose-sexp (Integer -> Void)] + [mark-matching-parenthesis (Positive-Integer -> Void)] + [get-tab-size (-> Integer)] + [set-tab-size (Integer -> Void)] + [introduce-let-ans (Integer -> Void)] + [move-sexp-out (Integer -> Void)])) + +(define-type Racket:Text-Mixin + (All (r #:row) + (Class #:row-var r + #:implements Text:Basic<%> + #:implements Mode:Host-Text<%> + #:implements Color:Text<%> + #:implements Text:Autocomplete<%>) + -> + (Class #:row-var r #:implements Racket:Text<%>))) + +(define-type Racket:Text-Mode<%> (Class)) + +(define-type Racket:Text-Mode-Mixin + (All (r #:row) + (Class #:row-var r + #:implements Color:Text-Mode<%> + #:implements Mode:Surrogate-Text<%>) + -> + (Class #:row-var r #:implements Racket:Text-Mode<%>))) + +(define-type Racket:Set-Mode-Mixin + (All (r #:row) + (Class #:row-var r + #:implements Racket:Text<%> + #:implements Mode:Host-Text<%>) + -> + (Class #:row-var r #:implements Racket:Text-Mode<%>))) + +(define-type Racket:Text% + (Class #:implements Racket:Text-Mode<%> + #:implements Racket:Text<%> + #:implements Text:Autocomplete<%> + #:implements Mode:Host-Text<%>)) + +(define-type Racket:Text-Mode% + (Class #:implements Racket:Text-Mode<%>)) + ;; 29 Text (provide Text:Basic<%> - Text:File<%>) + Text:Basic% + Text:Basic-Mixin + Text:Line-Spacing<%> + Text:Line-Spacing% + Text:Line-Spacing-Mixin + Text:First-Line<%> + Text:First-Line-Mixin + Text:Foreground-Color<%> + Text:Foreground-Color-Mixin + Text:Hide-Caret/Selection<%> + Text:Hide-Caret/Selection% + Text:Hide-Caret/Selection-Mixin + Text:Nbsp->Space<%> + Text:Nbsp->Space% + Text:Nbsp->Space-Mixin + Text:Column-Guide<%> + Text:Column-Guide-Mixin + Text:Normalize-Paste<%> + Text:Normalize-Paste% + Text:Normalize-Paste-Mixin + Text:Searching<%> + Text:Searching% + Text:Searching-Mixin + Text:Return<%> + Text:Return% + Text:Return-Mixin + Text:Wide-Snip<%> + Text:Wide-Snip% + Text:Wide-Snip-Mixin + Text:Delegate<%> + Text:Delegate% + Text:Delegate-Mixin + Text:Info<%> + Text:Info% + Text:Info-Mixin + Text:Clever-File-Format<%> + Text:Clever-File-Format% + Text:Clever-File-Format-Mixin + Text:Crlf-Line-Endings<%> + Text:Crlf-Line-Endings-Mixin + Text:File<%> + Text:File% + Text:File-Mixin + Text:Ports<%> + Text:Ports-Mixin + Text:Input-Box<%> + Text:Input-Box% + Text:Input-Box-Mixin + Text:Autocomplete<%> + Text:Autocomplete-Mixin + Text:Line-Numbers<%> + Text:Line-Numbers-Mixin + Text:1-Pixel-String-Snip% + Text:1-Pixel-Tab-Snip% + Text:Standard-Style-List% + Text:Keymap% + Text:Autowrap% + Text:Backup-Autosave%) (define-type Text:Basic<%> (Class #:implements Text% - ;; highlight-range - ;; unhighlight-range - ;; unhighlight-ranges/key + [highlight-range + ([Natural Natural (U String Color%-Instance)] + [Boolean + (U 'high 'low) + (U 'rectangle 'ellipse 'hollow-ellipse 'dot) + #:adjust-on-insert/delete Boolean + #:key Any] + . ->* . ; FIXME: result type depends on `adjust-on-insert/delete` + (U Void (-> Void)))] + [unhighlight-range ([Natural Natural (U String Color%-Instance)] + [Boolean (U 'rectangle 'ellipse 'hollow-ellipse)] + . ->* . Void)] [unhighlight-ranges/key (Any -> Void)] - ;; unhighlight-ranges - ;; get-highlighted-ranges + [unhighlight-ranges ((Natural + Natural + Color%-Instance + Boolean + (U 'rectangle 'ellipse 'hollow-ellipse) + (U Boolean Natural) + Any + -> Boolean) + -> Void)] + [get-highlighted-ranges (-> (Listof Any #|FIXME Text:Range?|#))] [get-styles-fixed (-> Boolean)] - ;; get-fixed-style + [get-fixed-style (-> (Instance Style<%>))] [set-styles-fixed (Boolean -> Void)] - ;; move/copy-to-edit + [move/copy-to-edit ([Text%-Instance Integer Integer Integer] + [#:try-to-move? Boolean] + . ->* . Void)] [initial-autowrap-bitmap (-> (Option (Instance Bitmap%)))] [get-port-name @@ -165,9 +1408,294 @@ [get-edition-number (-> Natural)] [get-start-of-line (Natural -> Natural)])) +(define-type Text:Basic-Mixin + (All (r #:row) + (Class #:row-var r + #:implements Text% + #:implements Editor:Basic<%>) + -> + (Class #:row-var r #:implements Text:Basic<%>))) + +(define-type Text:Line-Spacing<%> + (Class #:implements Text:Basic<%>)) + +(define-type Text:Line-Spacing-Mixin + (All (r #:row) + (Class #:row-var r #:implements Text:Basic<%>) + -> + (Class #:row-var r #:implements Text:Line-Spacing<%>))) + +(define-type Text:First-Line<%> + (Class #:implements Text% + [highlight-first-line (Boolean -> Void)] + [first-line-currently-drawn-specially? (-> Boolean)] + [get-first-line-height (-> Natural)] + [is-special-first-line? (String -> Boolean)])) + +(define-type Text:First-Line-Mixin + (All (r #:row) + (Class #:row-var r #:implements Text%) + -> + (Class #:row-var r #:implements Text:First-Line<%>))) + +(define-type Text:Foreground-Color<%> + (Class #:implements Text:Basic<%> + #:implements Editor:Standard-Style-List<%>)) + +(define-type Text:Foreground-Color-Mixin + (All (r #:row) + (Class #:row-var r + #:implements Text:Basic<%> + #:implements Editor:Standard-Style-List<%>) + -> + (Class #:row-var r #:implements Text:Foreground-Color<%>))) + +(define-type Text:Hide-Caret/Selection<%> + (Class #:implements Text:Basic<%>)) + +(define-type Text:Hide-Caret/Selection-Mixin + (All (r #:row) + (Class #:row-var r #:implements Text:Basic<%>) + -> + (Class #:row-var r #:implements Text:Hide-Caret/Selection<%>))) + +(define-type Text:Nbsp->Space<%> + (Class #:implements Text%)) + +(define-type Text:Nbsp->Space-Mixin + (All (r #:row) + (Class #:row-var r #:implements Text%) + -> + (Class #:row-var r #:implements Text:Nbsp->Space<%>))) + +(define-type Text:Column-Guide<%> + (Class #:implements Text%)) + +(define-type Text:Column-Guide-Mixin + (All (r #:row) + (Class #:row-var r #:implements Text%) + -> + (Class #:row-var r #:implements Text:Column-Guide<%>))) + +(define-type Text:Normalize-Paste<%> + (Class #:implements Text:Basic<%> + [ask-normalize? (-> Boolean)] + [string-normalize (String -> String)])) + +(define-type Text:Normalize-Paste-Mixin + (All (r #:row) + (Class #:row-var r #:implements Text:Basic<%>) + -> + (Class #:row-var r #:implements Text:Normalize-Paste<%>))) + +(define-type Text:Searching<%> + (Class #:implements Text:Basic<%> + #:implements Editor:Keymap<%> + [set-searching-state + ((Option String) Boolean Boolean Boolean -> Void)] + [set-search-anchor ((Option Natural) -> Void)] + [get-search-hit-count (-> Natural)] + [get-replace-search-hit (-> (Option Natural))] + [set-replace-start ((Option Natural) -> Void)] + [get-search-bubbles (-> (Listof (List (Pairof Natural Natural) + (U 'normal-search-color + 'dark-search-color + 'light-search-color))))])) + +(define-type Text:Searching-Mixin + (All (r #:row) + (Class #:row-var r + #:implements Text:Basic<%> + #:implements Editor:Keymap<%>) + -> + (Class #:row-var r #:implements Text:Searching<%>))) + +(define-type Text:Return<%> + (Class #:implements Text%)) + +(define-type Text:Return-Mixin + (All (r #:row) + (Class #:row-var r #:implements Text%) + -> + (Class (init [return (-> Boolean)]) + #:row-var r #:implements Text:Return<%>))) + +(define-type Text:Wide-Snip<%> + (Class #:implements Text:Basic<%> + [add-wide-snip (Snip%-Instance -> Void)] + [add-tall-snip (Snip%-Instance -> Void)])) + +(define-type Text:Wide-Snip-Mixin + (All (r #:row) + (Class #:row-var r #:implements Text:Basic<%>) + -> + (Class #:row-var r #:implements Text:Wide-Snip<%>))) + +(define-type Text:Delegate<%> + (Class #:implements Text:Basic<%> + [get-delegate (-> (Option Text%-Instance))] + [set-delegate ((Option Text%-Instance) -> Void)])) + +(define-type Text:1-Pixel-String-Snip% + (Class #:implements String-Snip%)) ; FIXME: ok? + +(define-type Text:1-Pixel-Tab-Snip% + (Class #:implements Tab-Snip%)) ; FIXME: ok? + +(define-type Text:Delegate-Mixin + (All (r #:row) + (Class #:row-var r #:implements Text:Basic<%>) + -> + (Class #:row-var r #:implements Text:Delegate<%>))) + +(define-type Text:Info<%> + (Class #:implements Text:Basic<%>)) + +(define-type Text:Info-Mixin + (All (r #:row) + (Class #:row-var r + #:implements Text:Basic<%> + #:implements Editor:Keymap<%>) + -> + (Class #:row-var r #:implements Text:Info<%>))) + +(define-type Text:Clever-File-Format<%> + (Class #:implements Text%)) + +(define-type Text:Clever-File-Format-Mixin + (All (r #:row) + (Class #:row-var r #:implements Text%) + -> + (Class #:row-var r #:implements Text:Clever-File-Format<%>))) + +(define-type Text:Crlf-Line-Endings<%> + (Class #:implements Text%)) + +(define-type Text:Crlf-Line-Endings-Mixin + (All (r #:row) + (Class #:row-var r #:implements Text%) + -> + (Class #:row-var r #:implements Text:Crlf-Line-Endings<%>))) + (define-type Text:File<%> (Class #:implements Text:Basic<%> #:implements Editor:File<%> [get-read-write? (-> Boolean)] [while-unlocked ((-> Any) -> Any)])) +(define-type Text:File-Mixin + (All (r #:row) + (Class #:row-var r + #:implements Text:Basic<%> + #:implements Editor:File<%>) + -> + (Class #:row-var r #:implements Text:File<%>))) + +(define-type Text:Ports<%> + (Class [delete/io (Integer Integer -> Void)] + [do-submission (-> Void)] + [get-insertion-point (-> Integer)] + [set-insertion-point (Integer -> Void)] + [get-unread-start-point (-> Integer)] + [set-unread-start-point (Integer -> Void)] + [set-allow-edits (Boolean -> Void)] + [get-allow-edits (-> Boolean)] + [insert-between ((U Snip%-Instance String) -> Void)] + [insert-before ((U Snip%-Instance String) -> Void)] + [submit-to-port? (Key-Event%-Instance -> Boolean)] + [on-sumit (-> Void)] + [send-eof-to-in-port (-> Void)] + [send-eof-to-box-in-port (-> Void)] + [reset-input-box (-> Void)] + [clear-output-ports (-> Void)] + [clear-input-port (-> Void)] + [clear-box-input-port (-> Void)] + [get-out-style-delta (-> (U Style-Delta%-Instance String))] + [get-err-style-delta (-> (U Style-Delta%-Instance String))] + [get-value-style-delta (-> (U Style-Delta%-Instance String))] + [get-in-port (-> Input-Port)] + [get-in-box-port (-> Input-Port)] + [get-out-port (-> Output-Port)] + [get-err-port (-> Output-Port)] + [get-value-port (-> Output-Port)] + [after-io-insertion (-> Void)] + [get-box-input-editor-snip% (-> Snip% #|Fixme (Subclass?/C editor-snip%)|#)] + [get-box-input-text% (-> (Instance Text:Input-Box<%>))])) + +(define-type Text:Ports-Mixin + (All (r #:row) + (Class #:row-var r #:implements Text:Wide-Snip<%>) + -> + (Class #:row-var r #:implements Text:Ports<%>))) + +(define-type Text:Input-Box<%> + (Class #:implements Text%)) + +(define-type Text:Input-Box-Mixin + (All (r #:row) + (Class #:row-var r #:implements Text%) + -> + (Class #:row-var r #:implements Text:Input-Box<%>))) + +(define-type Text:Autocomplete<%> + (Class #:implements Text% + [auto-complete (-> Void)] + [get-autocomplete-border-color (-> (U String Color%-Instance))] + [get-autocomplete-background-color (-> (U String Color%-Instance))] + [get-autocomplete-selected-color (-> (U String Color%-Instance))] + [completion-mode-key-event? (Key-Event%-Instance -> Boolean)] + [get-all-words (-> (Listof String))] + [get-word-at (Positive-Integer -> String)])) + +(define-type Text:Autocomplete-Mixin + (All (r #:row) + (Class #:row-var r #:implements Text%) + -> + (Class #:row-var r #:implements Text:Autocomplete<%>))) + +;; FIXME: Not sure about these classes' types +(define-type Text:Basic% + (Class #:implements Text:Basic<%>)) +(define-type Text:Line-Spacing% + (Class #:implements Text:Line-Spacing<%>)) +(define-type Text:Hide-Caret/Selection% + (Class #:implements Text:Hide-Caret/Selection<%>)) +(define-type Text:Nbsp->Space% + (Class #:implements Text:Nbsp->Space<%>)) +(define-type Text:Normalize-Paste% + (Class #:implements Text:Normalize-Paste<%>)) +(define-type Text:Delegate% + (Class #:implements Text:Delegate<%>)) +(define-type Text:Wide-Snip% + (Class #:implements Text:Wide-Snip<%>)) +(define-type Text:Standard-Style-List% + (Class #:implements Editor:Standard-Style-List<%>)) +(define-type Text:Input-Box% + (Class #:implements Text:Input-Box<%>)) +(define-type Text:Keymap% + (Class #:implements Editor:Keymap<%>)) +(define-type Text:Return% + (Class #:implements Text:Return<%>)) +(define-type Text:Autowrap% + (Class #:implements Editor:Autowrap<%>)) +(define-type Text:File% + (Class #:implements Text:File<%>)) +(define-type Text:Clever-File-Format% + (Class #:implements Text:Clever-File-Format<%>)) +(define-type Text:Backup-Autosave% + (Class #:implements Editor:Backup-Autosave<%>)) +(define-type Text:Searching% + (Class #:implements Text:Searching<%>)) +(define-type Text:Info% + (Class #:implements Text:Info<%>)) + +(define-type Text:Line-Numbers<%> + (Class [show-line-numbers! (Boolean -> Void)] + [show-line-numbers? (-> Boolean)] + [set-line-numbers-color (String -> Void)])) + +(define-type Text:Line-Numbers-Mixin + (All (r #:row) + (Class #:row-var r #:implements Text%) + -> + (Class #:row-var r #:implements Text:Line-Numbers<%>))) diff --git a/pkgs/typed-racket-pkgs/typed-racket-more/typed/racket/private/gui-types.rkt b/pkgs/typed-racket-pkgs/typed-racket-more/typed/racket/private/gui-types.rkt index e311102b..602e69bf 100644 --- a/pkgs/typed-racket-pkgs/typed-racket-more/typed/racket/private/gui-types.rkt +++ b/pkgs/typed-racket-pkgs/typed-racket-more/typed/racket/private/gui-types.rkt @@ -677,6 +677,10 @@ (define-type Canvas<%> (Class #:implements Subwindow<%> + [accept-tab-focus (case-> [-> Boolean] + [Any -> Void])] + [flush (-> Void)] + [get-canvas-background (-> (Option (Instance Color%)))] [get-dc (-> (Instance DC<%>))] [min-client-height (case-> (-> Natural) @@ -685,7 +689,13 @@ (case-> (-> Natural) (Natural -> Void))] [on-char ((Instance Key-Event%) -> Void)] - [on-event ((Instance Mouse-Event%) -> Void)])) + [on-event ((Instance Mouse-Event%) -> Void)] + [on-paint (-> Void)] + [on-tab-in (-> Void)] + [resume-flush (-> Void)] + [set-canvas-background ((Instance Color%) -> Void)] + [set-resize-corner (Any -> Void)] + [suspend-flush (-> Void)])) (define-type Canvas% (Class #:implements Canvas<%> @@ -2452,14 +2462,19 @@ ;; racket/snip -(provide Snip% +(provide Readable-Snip<%> + Snip% Snip-Admin% Snip-Class% Snip-Class-List<%> String-Snip% Style<%> Style-Delta% - Style-List%) + Style-List% + Tab-Snip%) + +(define-type Readable-Snip<%> + (Class [read-special (Any (Option Natural) (Option Natural) (Option Natural) -> Any)])) (define-type Snip-Edit-Operation (U 'undo 'redo 'clear 'cut 'copy @@ -2749,3 +2764,55 @@ [insert (case-> (String Natural -> Void) (String Natural Natural -> Void))] [read (Natural (Instance Editor-Stream-In%) -> Void)])) + +(define-type Tab-Snip% + (Class #:implements String-Snip%)) + +;; 7 Editor Classes +(provide Editor-Snip% + Editor-Wordbreak-Map%) +(define-type Editor-Snip% + (Class #:implements Snip% + (init [editor (Option (Instance Editor<%>)) #:optional] + [with-border? Any #:optional] + [left-margin Natural #:optional] + [top-margin Natural #:optional] + [right-margin Natural #:optional] + [bottom-margin Natural #:optional] + [left-inset Natural #:optional] + [top-inset Natural #:optional] + [right-inset Natural #:optional] + [bottom-inset Natural #:optional] + [min-width Nonnegative-Real #:optional] + [max-width Nonnegative-Real #:optional] + [min-height Nonnegative-Real #:optional] + [max-height Nonnegative-Real #:optional]) + [border-visible? (-> Boolean)] + [get-align-top-line (-> Boolean)] + [get-editor (-> (U #f (Instance Text%) (Instance Pasteboard%)))] + [get-inset ((Boxof Natural) (Boxof Natural) (Boxof Natural) (Boxof Natural) -> Void)] + [get-margin ((Boxof Natural) (Boxof Natural) (Boxof Natural) (Boxof Natural) -> Void)] + [get-max-height (-> (U Nonnegative-Real 'none))] + [get-max-width (-> (U Nonnegative-Real 'none))] + [get-min-height (-> (U Nonnegative-Real 'none))] + [get-min-width (-> (U Nonnegative-Real 'none))] + [get-tight-text-fit (-> Boolean)] + [resize (Nonnegative-Real Nonnegative-Real -> Boolean)] + [set-align-top-line (Any -> Void)] + [set-editor ((U (Instance Text%) (Instance Pasteboard%) #f) -> Void)] + [set-inset (Natural Natural Natural Natural -> Void)] + [set-margin (Natural Natural Natural Natural -> Void)] + [set-max-height ((U Nonnegative-Real 'none) -> Void)] + [set-max-width ((U Nonnegative-Real 'none) -> Void)] + [set-min-height ((U Nonnegative-Real 'none) -> Void)] + [set-min-width ((U Nonnegative-Real 'none) -> Void)] + [set-tight-text-fit (Any -> Void)] + [show-border (Any -> Void)] + [style-background-used? (-> Boolean)] + [use-style-background (Any -> Void)])) + +(define-type Wordbreak-Map-Value (U 'caret 'line 'selection 'user1 'user2)) +(define-type Editor-Wordbreak-Map% + (Class + [get-map (Char -> (Listof Wordbreak-Map-Value))] + [set-map (Char (Listof Wordbreak-Map-Value) -> Void)]))