gui/gui-lib/mred/private/mred.rkt
Matthew Flatt f42356da3f Support and prefer GTK+ 3 on Unix/X
The main advantage of GTK+ 3 is better support for HiDPI
displays. If GTK+ 3 libraries are not available or if the
`PLT_GTK2` environment variable is defined, GTK+ 2 is used
as before.
2015-08-16 20:55:35 -06:00

302 lines
8.1 KiB
Racket

(module mred mzscheme
(require (only racket/base
define-namespace-anchor
namespace-anchor->empty-namespace
make-base-empty-namespace)
(only scheme/base) (only scheme/class) ; so that `make-gui-namespace' attaches them
racket/class
racket/draw racket/snip
file/resource
mzlib/etc
(prefix wx: "kernel.rkt")
(prefix wx: "wxme/editor.rkt")
(prefix wx: "wxme/text.rkt")
(prefix wx: "wxme/pasteboard.rkt")
(prefix wx: "wxme/keymap.rkt")
(prefix wx: "wxme/editor-admin.rkt")
(prefix wx: "wxme/editor-data.rkt")
(prefix wx: "wxme/editor-snip.rkt")
(prefix wx: "wxme/stream.rkt")
(prefix wx: "wxme/wordbreak.rkt")
"wxtop.rkt"
"app.rkt"
"misc.rkt"
"mrwindow.rkt"
"mrcontainer.rkt"
"mrtop.rkt"
"mrpanel.rkt"
"mrcanvas.rkt"
"mritem.rkt"
"mrtextfield.rkt"
"mrmenuintf.rkt"
"mrmenu.rkt"
"mrpopup.rkt"
"editor.rkt"
"messagebox.rkt"
"filedialog.rkt"
"fontdialog.rkt"
"moredialogs.rkt"
"gdi.rkt"
"snipfile.rkt"
"repl.rkt"
"helper.rkt"
"dynamic.rkt"
"check.rkt"
"const.rkt")
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; These functions are re-implemented in scheme/gui/base
;; and racket/gui/base to attach those names, instead of
;; just 'mred.
(define-namespace-anchor anchor)
(define (make-gui-empty-namespace)
(let ([ns (make-base-empty-namespace)])
(namespace-attach-module (namespace-anchor->empty-namespace anchor)
'mred
ns)
ns))
(define (make-gui-namespace)
(let ([ns (make-gui-empty-namespace)])
(parameterize ([current-namespace ns])
(namespace-require 'scheme/base)
(namespace-require 'mred)
(namespace-require 'scheme/class))
ns))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define (make-eventspace)
(parameterize ([the-snip-class-list (make-the-snip-class-list)]
[wx:the-editor-data-class-list (wx:make-the-editor-data-class-list)])
(wx:make-eventspace)))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define-syntax propagate
(lambda (stx)
(syntax-case stx ()
[(_ n ...)
(let ([ns (syntax->list (syntax (n ...)))])
(with-syntax ([(k:n ...)
(map
(lambda (n)
(datum->syntax-object
n
(string->symbol
(format
"wx:~a"
(syntax-e n)))
#f))
ns)])
(syntax (begin
;; We can't just re-export, because kernel.rkt's
;; exports are protected.
(define n k:n) ...
(provide n ...)))))])))
(propagate add-editor-keymap-functions
add-text-keymap-functions
add-pasteboard-keymap-functions
begin-busy-cursor
bell
editor-data%
editor-data-class%
editor-data-class-list<%>
check-for-break
clipboard<%>
clipboard-client%
control-event%
column-control-event%
current-eventspace
cursor%
get-display-depth
end-busy-cursor
event%
event-dispatch-handler
eventspace?
flush-display
get-current-mouse-state
get-highlight-background-color
get-highlight-text-color
get-the-editor-data-class-list
is-busy?
is-color-display?
key-event%
keymap%
editor-admin%
editor-set-x-selection-mode
editor-snip-editor-admin<%>
editor-stream-in%
editor-stream-in-base%
editor-stream-in-bytes-base%
editor-stream-out%
editor-stream-out-base%
editor-stream-out-bytes-base%
editor-wordbreak-map%
mouse-event%
read-editor-global-footer
read-editor-global-header
read-editor-version
scroll-event%
special-control-key
special-option-key
map-command-as-meta-key
label->plain-label
write-editor-global-footer
write-editor-global-header
write-editor-version
queue-callback
yield
eventspace-shutdown?
eventspace-event-evt
get-panel-background
graphical-system-type
the-editor-wordbreak-map
make-screen-bitmap
make-gl-bitmap)
(define the-clipboard (wx:get-the-clipboard))
(define the-x-selection-clipboard (wx:get-the-x-selection))
(define (find-graphical-system-path what)
(unless (memq what '(init-file x-display))
(raise-argument-error 'find-graphical-system-path "(or/c 'init-file 'x-display)" what))
(or (wx:find-graphical-system-path what)
(case what
[(init-file)
(build-path (find-system-path 'init-dir)
(case (system-type)
[(windows) "gracketrc.rktl"]
[else ".gracketrc"]))]
[else #f])))
(define (dimension-integer? x) (and (exact-integer? x) (<= 0 x WIN-SIZE-MAX)))
(define (position-integer? x) (and (exact-integer? x) (<= (- WIN-SIZE-MAX) x WIN-SIZE-MAX)))
(define (spacing-integer? x) (and (exact-integer? x) (<= 0 x 1000)))
(define (positive-dimension-integer? x) (and (exact-integer? x) (<= 1 x WIN-SIZE-MAX)))
(provide (all-from racket/draw)
(all-from racket/snip)
(all-from file/resource))
(provide button%
canvas%
check-box%
choice%
dialog%
frame%
gauge%
tab-panel%
group-box-panel%
list-box%
editor-canvas%
message%
pane%
horizontal-pane%
vertical-pane%
grow-box-spacer-pane%
panel%
horizontal-panel%
vertical-panel%
radio-box%
slider%
text-field%
combo-field%
window<%>
area<%>
top-level-window<%>
subarea<%>
subwindow<%>
area-container<%>
area-container-window<%>
canvas<%>
control<%>
list-control<%>
menu-item<%>
separator-menu-item%
selectable-menu-item<%>
labelled-menu-item<%>
menu-item%
checkable-menu-item%
get-default-shortcut-prefix
menu-item-container<%>
menu%
menu-bar%
popup-menu%
get-top-level-windows
editor-snip%
editor<%>
text%
pasteboard%
graphical-read-eval-print-loop
textual-read-eval-print-loop
message-box
message+check-box
message-box/custom
message+check-box/custom
get-face-list
get-file
get-file-list
put-file
get-directory
get-choices-from-user
get-text-from-user
get-ps-setup-from-user
get-page-setup-from-user
can-get-page-setup-from-user?
play-sound
get-display-size
get-display-left-top-inset
get-display-count
get-display-backing-scale
get-color-from-user
get-font-from-user
append-editor-operation-menu-items
append-editor-font-menu-items
get-top-level-focus-window
get-top-level-edit-target-window
register-collecting-blit
unregister-collecting-blit
printer-dc%
current-text-keymap-initializer
sleep/yield
get-window-text-extent
send-message-to-window
the-clipboard
the-x-selection-clipboard
normal-control-font
small-control-font
tiny-control-font
view-control-font
menu-control-font
timer%
open-input-text-editor
open-input-graphical-file
open-output-text-editor
text-editor-load-handler
application-about-handler
application-preferences-handler
application-quit-handler
application-file-handler
application-start-empty-handler
current-eventspace-has-standard-menus?
current-eventspace-has-menu-root?
eventspace-handler-thread
make-eventspace
make-gui-namespace
make-gui-empty-namespace
file-creator-and-type
hide-cursor-until-moved
system-position-ok-before-cancel?
label-string?
key-code-symbol?
find-graphical-system-path
dimension-integer?
positive-dimension-integer?
position-integer?
spacing-integer?))