racket/collects/macro-debugger/syntax-browser/implementation.ss
Ryan Culpepper 2954ed5844 Reorganized syntax-browser
svn: r4500
2006-10-06 02:26:04 +00:00

65 lines
2.1 KiB
Scheme

(module implementation mzscheme
(require (lib "unitsig.ss")
"interfaces.ss"
"widget.ss"
"syntax-snip.ss"
"snipclass.ss"
"keymap.ss"
"prefs.ss")
(provide global-prefs@
global-snip@
implementation@)
(provide-signature-elements snip^)
(provide-signature-elements snipclass^)
;; prefs@ and snip@ should only be invoked once
;; We create a new unit/sig out of their invocation
(define snip-implementation@
(compound-unit/sig
(import)
(link [PREFS : prefs^ (prefs@)]
[KEYMAP : keymap^ (keymap@)]
[MENU : context-menu^ (context-menu@ SNIP)]
[SNIP-CLASS : snipclass^ (snipclass@ SNIP)]
[SNIP-MENU : context-menu^ (snip-context-menu-extension@ MENU)]
[SNIP : snip^ (snip@ PREFS KEYMAP SNIP-MENU SNIP-CLASS)])
(export (open PREFS) (open SNIP) (open SNIP-CLASS))))
(define-values/invoke-unit/sig ((open snip^) (open prefs^) (open snipclass^))
snip-implementation@)
(define global-prefs@
(unit/sig prefs^
(import)
(rename (-width pref:width)
(-height pref:height)
(-props-percentage pref:props-percentage))
(define -width pref:width)
(define -height pref:height)
(define -props-percentage pref:props-percentage)))
(define global-snip@
(unit/sig snip^
(import)
(rename (-syntax-snip syntax-snip)
(-syntax-snip% syntax-snip%))
(define -syntax-snip syntax-snip)
(define -syntax-snip% syntax-snip%)))
;; Everyone else re-uses the global-snip@ unit
;; implementation@ : prefs^ -> implementation^
(define implementation@
(compound-unit/sig
(import)
(link [KEYMAP : keymap^ (keymap@)]
[MENU : context-menu^ (context-menu@ SNIP)]
[SNIP : snip^ (global-snip@)]
[WIDGET-MENU : context-menu^ (widget-context-menu-extension@ MENU)]
[WIDGET : widget^ (widget@ KEYMAP WIDGET-MENU)])
(export (unit SNIP snip)
(unit WIDGET widget))))
)