racket/collects/mred/private/wx/cocoa/procs.rkt
2010-11-05 15:54:32 -06:00

145 lines
4.1 KiB
Racket

#lang racket/base
(require "../../syntax.rkt"
racket/class
racket/draw
ffi/unsafe
ffi/unsafe/objc
"utils.rkt"
"types.rkt"
"frame.rkt"
"window.rkt"
"finfo.rkt" ; file-creator-and-type
"filedialog.rkt"
"dc.rkt"
"menu-bar.rkt"
"../../lock.rkt"
"../common/handlers.rkt")
(provide
application-file-handler
application-quit-handler
application-about-handler
application-pref-handler
get-color-from-user
get-font-from-user
get-panel-background
play-sound
find-graphical-system-path
register-collecting-blit
unregister-collecting-blit
shortcut-visible-in-label?
send-event
file-creator-and-type
run-printout
get-double-click-time
get-control-font-size
get-control-font-size-in-pixels?
cancel-quit
fill-private-color
flush-display
write-resource
get-resource
display-origin
display-size
bell
hide-cursor
get-display-depth
is-color-display?
file-selector
id-to-menu-item
get-the-x-selection
get-the-clipboard
show-print-setup
can-show-print-setup?
get-highlight-background-color
get-highlight-text-color
make-screen-bitmap
check-for-break)
(import-class NSScreen NSCursor)
(define-unimplemented get-color-from-user)
(define-unimplemented get-font-from-user)
(define (get-panel-background) (make-object color% "gray"))
(define-unimplemented play-sound)
(define-unimplemented find-graphical-system-path)
(define (register-collecting-blit canvas x y w h on off on-x on-y off-x off-y)
(send canvas register-collecting-blit x y w h on off on-x on-y off-x off-y))
(define (unregister-collecting-blit canvas)
(send canvas unregister-collecting-blits))
(define (shortcut-visible-in-label? [x #f]) #f)
(define-unimplemented send-event)
(define (begin-refresh-sequence) (void))
(define (end-refresh-sequence) (void))
(define-unimplemented run-printout)
(define (get-double-click-time)
500)
(define (get-control-font-size) 13)
(define (get-control-font-size-in-pixels?) #f)
(define (cancel-quit) (void))
(define-unimplemented fill-private-color)
(define-unimplemented write-resource)
(define-unimplemented get-resource)
(define (check-for-break) #f)
(define (display-origin xb yb all?)
(set-box! xb 0)
(if all?
(set-box! yb 0)
(set-box! yb (get-menu-bar-height))))
(define (display-size xb yb all?)
(atomically
(with-autorelease
(let* ([screen (tell (tell NSScreen screens) objectAtIndex: #:type _NSUInteger 0)]
[f (if all?
(tell #:type _NSRect screen frame)
(tell #:type _NSRect screen visibleFrame))])
(set-box! xb (->long (NSSize-width (NSRect-size f))))
(set-box! yb (->long (NSSize-height (NSRect-size f))))))))
(define-appkit NSBeep (_fun -> _void))
(define (bell) (NSBeep))
(define (hide-cursor)
(tellv NSCursor setHiddenUntilMouseMoves: #:type _BOOL #t))
(define (get-display-depth) 32)
(define-unimplemented is-color-display?)
(define (id-to-menu-item id) id)
(define-unimplemented get-the-x-selection)
(define-unimplemented get-the-clipboard)
(define-unimplemented show-print-setup)
(define (can-show-print-setup?) #t)
(define/top (make-screen-bitmap [exact-positive-integer? w]
[exact-positive-integer? h])
(make-object quartz-bitmap% w h))
;; ------------------------------------------------------------
;; Text & highlight color
(import-class NSColor)
(define-cocoa NSDeviceRGBColorSpace _id)
(define (get-highlight-background-color)
(let ([hi (as-objc-allocation-with-retain
(tell (tell NSColor selectedTextBackgroundColor)
colorUsingColorSpaceName: NSDeviceRGBColorSpace))]
[as-color (lambda (v)
(inexact->exact (floor (* 255.0 v))))])
(begin0
(make-object color%
(as-color
(tell #:type _CGFloat hi redComponent))
(as-color
(tell #:type _CGFloat hi greenComponent))
(as-color
(tell #:type _CGFloat hi blueComponent)))
(release hi))))
(define (get-highlight-text-color)
#f)