Allow #lang typed/racket/gui and add base module

This aligns the library structure of typed/racket/gui
to racket/gui.
This commit is contained in:
Asumu Takikawa 2015-03-12 15:26:16 -04:00
parent 197cdeac9b
commit 1999d0251b
4 changed files with 367 additions and 330 deletions

View File

@ -1,4 +1,4 @@
#lang typed/racket/base
(require typed/racket/gui)
(provide (all-from-out typed/racket/gui))
(require typed/racket/gui/base)
(provide (all-from-out typed/racket/gui/base))

View File

@ -1,333 +1,29 @@
#lang s-exp typed-racket/base-env/extra-env-lang
#lang racket/base
;; This module provides a base type environment including
;; most GUI library bindings
;; Defines a language analogous to #lang racket/gui but typed
(require racket/require
(subtract-in racket/gui/base
racket/draw
(except-in racket/snip get-the-snip-class-list))
(for-syntax (only-in (rep type-rep)
make-Instance
make-Opaque))
"draw.rkt"
"snip.rkt"
"private/gui-types.rkt"
(for-syntax (submod "private/gui-types.rkt" #%type-decl)))
(require "gui/base.rkt"
typed/racket)
(provide (all-from-out "draw.rkt")
(all-from-out "snip.rkt")
(all-from-out "private/gui-types.rkt"))
(provide (all-from-out "gui/base.rkt")
(all-from-out typed/racket))
(begin-for-syntax
(define -Eventspace (make-Opaque #'eventspace?))
(define -Color% (parse-type #'Color%))
(define -Color%-Obj (make-Instance -Color%)))
;; language definition
(module reader syntax/module-reader
#:read read
#:read-syntax read-syntax
#:language 'typed/racket/gui
#:language-info #(typed-racket/language-info get-info ())
#:info make-info
(type-environment
[button% (parse-type #'Button%)]
[canvas% (parse-type #'Canvas%)]
[check-box% (parse-type #'Check-Box%)]
[checkable-menu-item% (parse-type #'Checkable-Menu-Item%)]
[choice% (parse-type #'Choice%)]
[clipboard-client% (parse-type #'Clipboard-Client%)]
[combo-field% (parse-type #'Combo-Field%)]
[column-control-event% (parse-type #'Column-Control-Event%)]
[control-event% (parse-type #'Control-Event%)]
[cursor% (parse-type #'Cursor%)]
[dialog% (parse-type #'Dialog%)]
[event% (parse-type #'Event%)]
[frame% (parse-type #'Frame%)]
[gauge% (parse-type #'Gauge%)]
[group-box-panel% (parse-type #'Group-Box-Panel%)]
[grow-box-spacer-pane% (parse-type #'Grow-Box-Spacer-Pane%)]
[horizontal-pane% (parse-type #'Horizontal-Pane%)]
[horizontal-panel% (parse-type #'Horizontal-Panel%)]
[key-event% (parse-type #'Key-Event%)]
[list-box% (parse-type #'List-Box%)]
[menu% (parse-type #'Menu%)]
[menu-bar% (parse-type #'Menu-Bar%)]
[menu-item% (parse-type #'Menu-Item%)]
[message% (parse-type #'Message%)]
[mouse-event% (parse-type #'Mouse-Event%)]
[pane% (parse-type #'Pane%)]
[panel% (parse-type #'Panel%)]
[popup-menu% (parse-type #'Popup-Menu%)]
[printer-dc% (parse-type #'Printer-DC%)]
[radio-box% (parse-type #'Radio-Box%)]
[separator-menu-item% (parse-type #'Separator-Menu-Item%)]
[scroll-event% (parse-type #'Scroll-Event%)]
[slider% (parse-type #'Slider%)]
[tab-panel% (parse-type #'Tab-Panel%)]
[text-field% (parse-type #'Text-Field%)]
[timer% (parse-type #'Timer%)]
[vertical-pane% (parse-type #'Vertical-Pane%)]
[vertical-panel% (parse-type #'Vertical-Panel%)]
[the-font-list (make-Instance (parse-type #'Font-List%))]
[get-face-list
(->optkey [(one-of/c 'mono 'all)]
#:all-variants? Univ #f
(-lst -String))]
[editor-canvas% (parse-type #'Editor-Canvas%)]
[message-box (-> -String -String (one-of/c 'ok 'cancel 'yes 'no))]
[open-input-text-editor
(->optkey (make-Instance (parse-type #'Text%))
[-Integer
(Un (-val 'end) -Integer)
(-> (make-Instance (parse-type #'Snip%))
(make-Instance (parse-type #'Snip%)))
(make-Instance (parse-type #'Text%))
-Boolean]
#:lock-while-reading? Univ #f
-Input-Port)]
;; Editor classes
[editor-admin% (parse-type #'Editor-Admin%)]
[editor-canvas% (parse-type #'Editor-Canvas%)]
[editor-data% (parse-type #'Editor-Data%)]
[editor-data-class% (parse-type #'Editor-Data-Class%)]
[editor-stream-in% (parse-type #'Editor-Stream-In%)]
[editor-stream-in-base% (parse-type #'Editor-Stream-In-Base%)]
[editor-stream-out% (parse-type #'Editor-Stream-Out%)]
[editor-stream-out-base% (parse-type #'Editor-Stream-Out-Base%)]
[keymap% (parse-type #'Keymap%)]
[pasteboard% (parse-type #'Pasteboard%)]
[text% (parse-type #'Text%)]
;; 4.1 Dialogs
[get-file
(->optkey [(Un (-val #f) -String)
(Un (-val #f)
(make-Instance (parse-type #'Frame%))
(make-Instance (parse-type #'Dialog%)))
(Un (-val #f) -Pathlike)
(Un (-val #f) -Pathlike)
(Un (-val #f) -String)
(-lst (one-of/c 'packages 'enter-packages 'common))
(-lst (-lst* -String -String))]
#:dialog-mixin (Un) #f
(Un (-val #f) -Path))]
[get-file-list
(->optkey [(Un (-val #f) -String)
(Un (-val #f)
(make-Instance (parse-type #'Frame%))
(make-Instance (parse-type #'Dialog%)))
(Un (-val #f) -Pathlike)
(Un (-val #f) -Pathlike)
(Un (-val #f) -String)
(-lst (one-of/c 'packages 'enter-packages 'common))
(-lst (-lst* -String -String))]
#:dialog-mixin (Un) #f
(Un (-val #f) (-lst -Path)))]
[put-file
(->optkey [(Un (-val #f) -String)
(Un (-val #f)
(make-Instance (parse-type #'Frame%))
(make-Instance (parse-type #'Dialog%)))
(Un (-val #f) -Pathlike)
(Un (-val #f) -Pathlike)
(Un (-val #f) -String)
(-lst (one-of/c 'packages 'enter-packages 'common))
(-lst (-lst* -String -String))]
#:dialog-mixin (Un) #f
(Un (-val #f) -Path))]
[get-directory
(->optkey [(Un (-val #f) -String)
(Un (-val #f)
(make-Instance (parse-type #'Frame%))
(make-Instance (parse-type #'Dialog%)))
(Un (-val #f) -Pathlike)
(-lst (one-of/c 'enter-packages 'common))]
;; FIXME: better type for this argument
#:dialog-mixin (Un) #f
(Un (-val #f) -Path))]
[message-box
(->optkey -String -String
[(Un (-val #f)
(make-Instance (parse-type #'Frame%))
(make-Instance (parse-type #'Dialog%)))
(-lst (one-of/c 'ok 'ok-cancel 'yes-no
'caution 'stop 'no-icon))]
#:dialog-mixin (Un) #f
(one-of/c 'ok 'cancel 'yes 'no))]
[message-box/custom
(->optkey -String -String
(Un -String (make-Instance (parse-type #'Bitmap%)) (-val #f))
(Un -String (make-Instance (parse-type #'Bitmap%)) (-val #f))
(Un -String (make-Instance (parse-type #'Bitmap%)) (-val #f))
[(Un (-val #f)
(make-Instance (parse-type #'Frame%))
(make-Instance (parse-type #'Dialog%)))
(-lst (one-of/c 'stop 'caution 'no-icon 'number-order
'disallow-close 'no-default
'default=1 'default=2 'default=3))
Univ]
#:dialog-mixin (Un) #f
Univ)]
[message+check-box
(->optkey -String -String -String
[(Un (-val #f)
(make-Instance (parse-type #'Frame%))
(make-Instance (parse-type #'Dialog%)))
(-lst (one-of/c 'ok 'ok-cancel 'yes-no
'caution 'stop 'no-icon 'checked))]
#:dialog-mixin (Un) #f
(-values (list (one-of/c 'ok 'cancel 'yes 'no)
-Boolean)))]
[message+check-box
(->optkey -String -String -String
[(Un (-val #f)
(make-Instance (parse-type #'Frame%))
(make-Instance (parse-type #'Dialog%)))
(-lst (one-of/c 'ok 'ok-cancel 'yes-no
'caution 'stop 'no-icon 'checked))]
#:dialog-mixin (Un) #f
(-values (list (one-of/c 'ok 'cancel 'yes 'no)
-Boolean)))]
[message+check-box/custom
(->optkey -String -String -String
(Un -String (make-Instance (parse-type #'Bitmap%)) (-val #f))
(Un -String (make-Instance (parse-type #'Bitmap%)) (-val #f))
(Un -String (make-Instance (parse-type #'Bitmap%)) (-val #f))
[(Un (-val #f)
(make-Instance (parse-type #'Frame%))
(make-Instance (parse-type #'Dialog%)))
(-lst (one-of/c 'stop 'caution 'no-icon 'number-order
'disallow-close 'no-default
'default=1 'default=2 'default=3))
Univ]
#:dialog-mixin (Un) #f
Univ)]
[get-text-from-user
(->optkey -String -String
[(Un (-val #f)
(make-Instance (parse-type #'Frame%))
(make-Instance (parse-type #'Dialog%)))
(-lst (one-of/c 'password 'disallow-invalid))]
#:validate (-> -String -Boolean) #f
#:dialog-mixin (Un) #f
(Un (-val #f) -String))]
[get-choices-from-user
(->optkey -String -String (-lst -String)
[(Un (-val #f)
(make-Instance (parse-type #'Frame%))
(make-Instance (parse-type #'Dialog%)))
(-lst -Integer)
(-lst (one-of/c 'single 'multiple 'extended))]
(Un (-val #f) (-lst -Nat)))]
[get-choices-from-user
(->optkey [(Un (-val #f) -String)
(Un (-val #f)
(make-Instance (parse-type #'Frame%))
(make-Instance (parse-type #'Dialog%)))
(Un -Color%-Obj
(-val #f))
(-lst (-val 'alpha))]
(Un (-val #f) -Color%-Obj))]
[get-font-from-user
(->optkey [(Un (-val #f) -String)
(Un (-val #f)
(make-Instance (parse-type #'Frame%))
(make-Instance (parse-type #'Dialog%)))
(Un (make-Instance (parse-type #'Font%)) (-val #f))
-Null]
(Un (-val #f) (make-Instance (parse-type #'Font%))))]
[can-get-page-setup-from-user? (-> -Boolean)]
;; 4.2 Eventspaces
[#:opaque Eventspace eventspace?]
[make-eventspace (-> -Eventspace)]
[current-eventspace (-Param -Eventspace -Eventspace)]
[event-dispatch-handler (-Param (-> -Eventspace Univ) (-> -Eventspace Univ))]
[eventspace-event-evt
(cl->* (-> (-evt -Eventspace))
(-> -Eventspace (-evt -Eventspace)))]
[eventspace-shutdown? (-> -Eventspace -Boolean)]
[eventspace-handler-thread (-> -Eventspace (-opt -Thread))]
[check-for-break (-> -Boolean)]
[get-top-level-windows
(-> (-lst (Un (make-Instance (parse-type #'Frame%))
(make-Instance (parse-type #'Dialog%)))))]
[get-top-level-focus-window
(-> (Un (-val #f)
(make-Instance (parse-type #'Frame%))
(make-Instance (parse-type #'Dialog%))))]
[get-top-level-edit-target-window
(-> (Un (-val #f)
(make-Instance (parse-type #'Frame%))
(make-Instance (parse-type #'Dialog%))))]
[special-control-key
(cl->* (-> Univ -Void) (-> -Boolean))]
[special-option-key
(cl->* (-> Univ -Void) (-> -Boolean))]
[queue-callback (->opt (-> Univ) [Univ] -Void)]
[yield
(-poly (a)
(cl->* (-> -Boolean)
(-> (-val 'wait) (-val #t))
(-> (-evt a) a)))]
[sleep/yield (-> -NonNegReal -Void)]
;; 4.4 Global Graphics
[flush-display (-> -Void)]
[get-display-count (-> -PosInt)]
[get-display-depth (-> -Nat)]
[get-display-left-top-inset
(cl->* (->key #:monitor -Nat #f
(-values (list (Un (-val #f) -Nat)
(Un (-val #f) -Nat))))
(->key Univ #:monitor -Nat #f
(-values (list (Un (-val #f) -Nat)
(Un (-val #f) -Nat)))))]
[get-display-size
(cl->* (->key #:monitor -Nat #f
(-values (list (Un (-val #f) -Nat)
(Un (-val #f) -Nat))))
(->key Univ #:monitor -Nat #f
(-values (list (Un (-val #f) -Nat)
(Un (-val #f) -Nat)))))]
[is-color-display? (-> -Boolean)]
;; 4.5 Fonts
[menu-control-font (make-Instance (parse-type #'Font%))]
[normal-control-font (make-Instance (parse-type #'Font%))]
[small-control-font (make-Instance (parse-type #'Font%))]
[tiny-control-font (make-Instance (parse-type #'Font%))]
[view-control-font (make-Instance (parse-type #'Font%))]
;; 4.6 Miscellaneous
[begin-busy-cursor (-> -Void)]
[bell (-> -Void)]
[dimension-integer? (-> Univ -Boolean)]
[end-busy-cursor (-> -Void)]
[file-creator-and-type
(cl->* (-> -Path (-values (list -Bytes -Bytes)))
(-> -Path -Bytes -Bytes -Void))]
[find-graphical-system-path
(-> (one-of/c 'init-file 'x-display) (-opt -Path))]
[get-default-shortcut-prefix
(-> (Un (-lst* (-val 'ctl))
(-lst* (-val 'cmd))
(-lst (one-of/c 'alt 'cmd 'meta 'ctl 'shift 'option))))]
[get-panel-background (-> -Color%-Obj)]
[get-highlight-background-color (-> -Color%-Obj)]
[get-highlight-text-color (-> (-opt -Color%-Obj))]
; get-window-text-extent
; graphical-read-eval-print-loop
; textual-read-eval-print-loop
; get-current-mouse-state
[hide-cursor-until-moved (-> -Void)]
[is-busy? (-> -Boolean)]
[label->plain-label (-> -String -String)]
; make-gl-bitmap
[make-gui-empty-namespace (-> -Namespace)]
[make-gui-namespace (-> -Namespace)]
; make-screen-bitmap
; play-sound
; position-integer?
; positive-dimension-integer?
; register-collecting-blit
; unregister-collecting-blit
; send-message-to-window
; spacing-integer?
[system-position-ok-before-cancel? (-> -Boolean)]
; the-clipboard
; the-x-selection-clipboard
; label-string?
; key-code-symbol?
;; 8 Editor functions
[get-the-snip-class-list (-> (make-Instance (parse-type #'Snip-Class-List<%>)))])
;; see typed/racket/lang/reader.rkt
(define (make-info key default use-default)
(case key
[(drscheme:toolbar-buttons)
(with-handlers ([exn:fail:filesystem? (lambda _ '())])
(collection-path "optimization-coach")
(list (dynamic-require 'optimization-coach/tool
'optimization-coach-drracket-button)))]
[else (use-default key default)]))
(require typed-racket/typed-reader))

View File

@ -0,0 +1,333 @@
#lang s-exp typed-racket/base-env/extra-env-lang
;; This module provides a base type environment including
;; most GUI library bindings
(require racket/require
(subtract-in racket/gui/base
racket/draw
(except-in racket/snip get-the-snip-class-list))
(for-syntax (only-in (rep type-rep)
make-Instance
make-Opaque))
"../draw.rkt"
"../snip.rkt"
"../private/gui-types.rkt"
(for-syntax (submod "../private/gui-types.rkt" #%type-decl)))
(provide (all-from-out "../draw.rkt")
(all-from-out "../snip.rkt")
(all-from-out "../private/gui-types.rkt"))
(begin-for-syntax
(define -Eventspace (make-Opaque #'eventspace?))
(define -Color% (parse-type #'Color%))
(define -Color%-Obj (make-Instance -Color%)))
(type-environment
[button% (parse-type #'Button%)]
[canvas% (parse-type #'Canvas%)]
[check-box% (parse-type #'Check-Box%)]
[checkable-menu-item% (parse-type #'Checkable-Menu-Item%)]
[choice% (parse-type #'Choice%)]
[clipboard-client% (parse-type #'Clipboard-Client%)]
[combo-field% (parse-type #'Combo-Field%)]
[column-control-event% (parse-type #'Column-Control-Event%)]
[control-event% (parse-type #'Control-Event%)]
[cursor% (parse-type #'Cursor%)]
[dialog% (parse-type #'Dialog%)]
[event% (parse-type #'Event%)]
[frame% (parse-type #'Frame%)]
[gauge% (parse-type #'Gauge%)]
[group-box-panel% (parse-type #'Group-Box-Panel%)]
[grow-box-spacer-pane% (parse-type #'Grow-Box-Spacer-Pane%)]
[horizontal-pane% (parse-type #'Horizontal-Pane%)]
[horizontal-panel% (parse-type #'Horizontal-Panel%)]
[key-event% (parse-type #'Key-Event%)]
[list-box% (parse-type #'List-Box%)]
[menu% (parse-type #'Menu%)]
[menu-bar% (parse-type #'Menu-Bar%)]
[menu-item% (parse-type #'Menu-Item%)]
[message% (parse-type #'Message%)]
[mouse-event% (parse-type #'Mouse-Event%)]
[pane% (parse-type #'Pane%)]
[panel% (parse-type #'Panel%)]
[popup-menu% (parse-type #'Popup-Menu%)]
[printer-dc% (parse-type #'Printer-DC%)]
[radio-box% (parse-type #'Radio-Box%)]
[separator-menu-item% (parse-type #'Separator-Menu-Item%)]
[scroll-event% (parse-type #'Scroll-Event%)]
[slider% (parse-type #'Slider%)]
[tab-panel% (parse-type #'Tab-Panel%)]
[text-field% (parse-type #'Text-Field%)]
[timer% (parse-type #'Timer%)]
[vertical-pane% (parse-type #'Vertical-Pane%)]
[vertical-panel% (parse-type #'Vertical-Panel%)]
[the-font-list (make-Instance (parse-type #'Font-List%))]
[get-face-list
(->optkey [(one-of/c 'mono 'all)]
#:all-variants? Univ #f
(-lst -String))]
[editor-canvas% (parse-type #'Editor-Canvas%)]
[message-box (-> -String -String (one-of/c 'ok 'cancel 'yes 'no))]
[open-input-text-editor
(->optkey (make-Instance (parse-type #'Text%))
[-Integer
(Un (-val 'end) -Integer)
(-> (make-Instance (parse-type #'Snip%))
(make-Instance (parse-type #'Snip%)))
(make-Instance (parse-type #'Text%))
-Boolean]
#:lock-while-reading? Univ #f
-Input-Port)]
;; Editor classes
[editor-admin% (parse-type #'Editor-Admin%)]
[editor-canvas% (parse-type #'Editor-Canvas%)]
[editor-data% (parse-type #'Editor-Data%)]
[editor-data-class% (parse-type #'Editor-Data-Class%)]
[editor-stream-in% (parse-type #'Editor-Stream-In%)]
[editor-stream-in-base% (parse-type #'Editor-Stream-In-Base%)]
[editor-stream-out% (parse-type #'Editor-Stream-Out%)]
[editor-stream-out-base% (parse-type #'Editor-Stream-Out-Base%)]
[keymap% (parse-type #'Keymap%)]
[pasteboard% (parse-type #'Pasteboard%)]
[text% (parse-type #'Text%)]
;; 4.1 Dialogs
[get-file
(->optkey [(Un (-val #f) -String)
(Un (-val #f)
(make-Instance (parse-type #'Frame%))
(make-Instance (parse-type #'Dialog%)))
(Un (-val #f) -Pathlike)
(Un (-val #f) -Pathlike)
(Un (-val #f) -String)
(-lst (one-of/c 'packages 'enter-packages 'common))
(-lst (-lst* -String -String))]
#:dialog-mixin (Un) #f
(Un (-val #f) -Path))]
[get-file-list
(->optkey [(Un (-val #f) -String)
(Un (-val #f)
(make-Instance (parse-type #'Frame%))
(make-Instance (parse-type #'Dialog%)))
(Un (-val #f) -Pathlike)
(Un (-val #f) -Pathlike)
(Un (-val #f) -String)
(-lst (one-of/c 'packages 'enter-packages 'common))
(-lst (-lst* -String -String))]
#:dialog-mixin (Un) #f
(Un (-val #f) (-lst -Path)))]
[put-file
(->optkey [(Un (-val #f) -String)
(Un (-val #f)
(make-Instance (parse-type #'Frame%))
(make-Instance (parse-type #'Dialog%)))
(Un (-val #f) -Pathlike)
(Un (-val #f) -Pathlike)
(Un (-val #f) -String)
(-lst (one-of/c 'packages 'enter-packages 'common))
(-lst (-lst* -String -String))]
#:dialog-mixin (Un) #f
(Un (-val #f) -Path))]
[get-directory
(->optkey [(Un (-val #f) -String)
(Un (-val #f)
(make-Instance (parse-type #'Frame%))
(make-Instance (parse-type #'Dialog%)))
(Un (-val #f) -Pathlike)
(-lst (one-of/c 'enter-packages 'common))]
;; FIXME: better type for this argument
#:dialog-mixin (Un) #f
(Un (-val #f) -Path))]
[message-box
(->optkey -String -String
[(Un (-val #f)
(make-Instance (parse-type #'Frame%))
(make-Instance (parse-type #'Dialog%)))
(-lst (one-of/c 'ok 'ok-cancel 'yes-no
'caution 'stop 'no-icon))]
#:dialog-mixin (Un) #f
(one-of/c 'ok 'cancel 'yes 'no))]
[message-box/custom
(->optkey -String -String
(Un -String (make-Instance (parse-type #'Bitmap%)) (-val #f))
(Un -String (make-Instance (parse-type #'Bitmap%)) (-val #f))
(Un -String (make-Instance (parse-type #'Bitmap%)) (-val #f))
[(Un (-val #f)
(make-Instance (parse-type #'Frame%))
(make-Instance (parse-type #'Dialog%)))
(-lst (one-of/c 'stop 'caution 'no-icon 'number-order
'disallow-close 'no-default
'default=1 'default=2 'default=3))
Univ]
#:dialog-mixin (Un) #f
Univ)]
[message+check-box
(->optkey -String -String -String
[(Un (-val #f)
(make-Instance (parse-type #'Frame%))
(make-Instance (parse-type #'Dialog%)))
(-lst (one-of/c 'ok 'ok-cancel 'yes-no
'caution 'stop 'no-icon 'checked))]
#:dialog-mixin (Un) #f
(-values (list (one-of/c 'ok 'cancel 'yes 'no)
-Boolean)))]
[message+check-box
(->optkey -String -String -String
[(Un (-val #f)
(make-Instance (parse-type #'Frame%))
(make-Instance (parse-type #'Dialog%)))
(-lst (one-of/c 'ok 'ok-cancel 'yes-no
'caution 'stop 'no-icon 'checked))]
#:dialog-mixin (Un) #f
(-values (list (one-of/c 'ok 'cancel 'yes 'no)
-Boolean)))]
[message+check-box/custom
(->optkey -String -String -String
(Un -String (make-Instance (parse-type #'Bitmap%)) (-val #f))
(Un -String (make-Instance (parse-type #'Bitmap%)) (-val #f))
(Un -String (make-Instance (parse-type #'Bitmap%)) (-val #f))
[(Un (-val #f)
(make-Instance (parse-type #'Frame%))
(make-Instance (parse-type #'Dialog%)))
(-lst (one-of/c 'stop 'caution 'no-icon 'number-order
'disallow-close 'no-default
'default=1 'default=2 'default=3))
Univ]
#:dialog-mixin (Un) #f
Univ)]
[get-text-from-user
(->optkey -String -String
[(Un (-val #f)
(make-Instance (parse-type #'Frame%))
(make-Instance (parse-type #'Dialog%)))
(-lst (one-of/c 'password 'disallow-invalid))]
#:validate (-> -String -Boolean) #f
#:dialog-mixin (Un) #f
(Un (-val #f) -String))]
[get-choices-from-user
(->optkey -String -String (-lst -String)
[(Un (-val #f)
(make-Instance (parse-type #'Frame%))
(make-Instance (parse-type #'Dialog%)))
(-lst -Integer)
(-lst (one-of/c 'single 'multiple 'extended))]
(Un (-val #f) (-lst -Nat)))]
[get-choices-from-user
(->optkey [(Un (-val #f) -String)
(Un (-val #f)
(make-Instance (parse-type #'Frame%))
(make-Instance (parse-type #'Dialog%)))
(Un -Color%-Obj
(-val #f))
(-lst (-val 'alpha))]
(Un (-val #f) -Color%-Obj))]
[get-font-from-user
(->optkey [(Un (-val #f) -String)
(Un (-val #f)
(make-Instance (parse-type #'Frame%))
(make-Instance (parse-type #'Dialog%)))
(Un (make-Instance (parse-type #'Font%)) (-val #f))
-Null]
(Un (-val #f) (make-Instance (parse-type #'Font%))))]
[can-get-page-setup-from-user? (-> -Boolean)]
;; 4.2 Eventspaces
[#:opaque Eventspace eventspace?]
[make-eventspace (-> -Eventspace)]
[current-eventspace (-Param -Eventspace -Eventspace)]
[event-dispatch-handler (-Param (-> -Eventspace Univ) (-> -Eventspace Univ))]
[eventspace-event-evt
(cl->* (-> (-evt -Eventspace))
(-> -Eventspace (-evt -Eventspace)))]
[eventspace-shutdown? (-> -Eventspace -Boolean)]
[eventspace-handler-thread (-> -Eventspace (-opt -Thread))]
[check-for-break (-> -Boolean)]
[get-top-level-windows
(-> (-lst (Un (make-Instance (parse-type #'Frame%))
(make-Instance (parse-type #'Dialog%)))))]
[get-top-level-focus-window
(-> (Un (-val #f)
(make-Instance (parse-type #'Frame%))
(make-Instance (parse-type #'Dialog%))))]
[get-top-level-edit-target-window
(-> (Un (-val #f)
(make-Instance (parse-type #'Frame%))
(make-Instance (parse-type #'Dialog%))))]
[special-control-key
(cl->* (-> Univ -Void) (-> -Boolean))]
[special-option-key
(cl->* (-> Univ -Void) (-> -Boolean))]
[queue-callback (->opt (-> Univ) [Univ] -Void)]
[yield
(-poly (a)
(cl->* (-> -Boolean)
(-> (-val 'wait) (-val #t))
(-> (-evt a) a)))]
[sleep/yield (-> -NonNegReal -Void)]
;; 4.4 Global Graphics
[flush-display (-> -Void)]
[get-display-count (-> -PosInt)]
[get-display-depth (-> -Nat)]
[get-display-left-top-inset
(cl->* (->key #:monitor -Nat #f
(-values (list (Un (-val #f) -Nat)
(Un (-val #f) -Nat))))
(->key Univ #:monitor -Nat #f
(-values (list (Un (-val #f) -Nat)
(Un (-val #f) -Nat)))))]
[get-display-size
(cl->* (->key #:monitor -Nat #f
(-values (list (Un (-val #f) -Nat)
(Un (-val #f) -Nat))))
(->key Univ #:monitor -Nat #f
(-values (list (Un (-val #f) -Nat)
(Un (-val #f) -Nat)))))]
[is-color-display? (-> -Boolean)]
;; 4.5 Fonts
[menu-control-font (make-Instance (parse-type #'Font%))]
[normal-control-font (make-Instance (parse-type #'Font%))]
[small-control-font (make-Instance (parse-type #'Font%))]
[tiny-control-font (make-Instance (parse-type #'Font%))]
[view-control-font (make-Instance (parse-type #'Font%))]
;; 4.6 Miscellaneous
[begin-busy-cursor (-> -Void)]
[bell (-> -Void)]
[dimension-integer? (-> Univ -Boolean)]
[end-busy-cursor (-> -Void)]
[file-creator-and-type
(cl->* (-> -Path (-values (list -Bytes -Bytes)))
(-> -Path -Bytes -Bytes -Void))]
[find-graphical-system-path
(-> (one-of/c 'init-file 'x-display) (-opt -Path))]
[get-default-shortcut-prefix
(-> (Un (-lst* (-val 'ctl))
(-lst* (-val 'cmd))
(-lst (one-of/c 'alt 'cmd 'meta 'ctl 'shift 'option))))]
[get-panel-background (-> -Color%-Obj)]
[get-highlight-background-color (-> -Color%-Obj)]
[get-highlight-text-color (-> (-opt -Color%-Obj))]
; get-window-text-extent
; graphical-read-eval-print-loop
; textual-read-eval-print-loop
; get-current-mouse-state
[hide-cursor-until-moved (-> -Void)]
[is-busy? (-> -Boolean)]
[label->plain-label (-> -String -String)]
; make-gl-bitmap
[make-gui-empty-namespace (-> -Namespace)]
[make-gui-namespace (-> -Namespace)]
; make-screen-bitmap
; play-sound
; position-integer?
; positive-dimension-integer?
; register-collecting-blit
; unregister-collecting-blit
; send-message-to-window
; spacing-integer?
[system-position-ok-before-cancel? (-> -Boolean)]
; the-clipboard
; the-x-selection-clipboard
; label-string?
; key-code-symbol?
;; 8 Editor functions
[get-the-snip-class-list (-> (make-Instance (parse-type #'Snip-Class-List<%>)))])

View File

@ -0,0 +1,8 @@
#lang typed/racket/gui
;; Test typed/racket/gui used as a language
(define (f #{x : Integer}) (add1 x))
(f 3)
(make-object bitmap% 300 300)