racket/collects/scribblings/gui/diagrams.ss
Matthew Flatt 5aeaf7ea75 R6RS docs, other misc clean-up
svn: r9349
2008-04-17 21:29:07 +00:00

161 lines
5.4 KiB
Scheme

(module diagrams scheme/base
(require scribble/struct
scribble/scheme
scribble/manual
(for-label scheme/gui/base))
(provide diagram->table
short-windowing-diagram
windowing-diagram
event-diagram
menu-diagram
editor-diagram
snip-diagram
style-diagram
admin-diagram
stream-diagram)
(define (diagram->table d)
(make-table
#f
(map (lambda (line)
(list (make-flow
(list (make-paragraph
(let loop ([line line])
(cond
[(regexp-match #rx"(.*)( +)(.*)" line)
=> (lambda (m)
(append (loop (cadr m))
(list (hspace (string-length (caddr m))))
(loop (cadddr m))))]
[(regexp-match #rx"([^-a-zA-Z0-9]*)([-a-zA-Z0-9<%>]+)(.*)" line)
=> (lambda (m)
(append (loop (cadr m))
(list (to-element (make-just-context (string->symbol (caddr m))
#'here)))
(loop (cadddr m))))]
[else (list (make-element 'tt (list line)))])))))))
(regexp-split #rx"[\r\n]+" d))))
(define short-windowing-diagram
#<<DIAG
area<%>
______________________|_______________
| | |
subarea<%> window<%> area-container<%>
|____ _______|__________ |
| | | |
subwindow<%> area-container-window<%>
________|________ |
| | |
control<%> canvas<%> top-level-window<%>
DIAG
)
(define windowing-diagram
#<<DIAG
area<%>
_____________________|_______________
| | |
subarea<%> window<%> area-container<%>
<<<____|____ _____|__________ __|___ ___________________<<<
| | | | | |
subwindow<%> | | | |
<<<______________|___________ | | | | _<<<
| | | | pane% |
control<%> | | | |- horizontal-pane% |
|- message% | | | |- vertical-pane% |
|- button% | | | |
|- check-box% | area-container-window<%> |
|- slider% | | |
|- gauge% | | __________________|
|- text-field% | | |
|- combo-field% | |-------- panel%
|- radio-box% | | |- horizontal-panel%
|- list-control<%> | | |- vertical-panel%
|- choice% | | |- tab-panel%
|- list-box% | | |- group-box-panel%
| |
| |- top-level-window<%>
| |- frame%
canvas<%> |- dialog%
|- canvas%
|- editor-canvas%
DIAG
)
(define event-diagram
#<<DIAG
event% timer%
|- key-event% cursor%
|- mouse-event%
|- scroll-event% clipboard<%>
|- control-event% clipboard-client%
DIAG
)
(define menu-diagram
#<<DIAG
menu-item<%> menu-item-container<%>
| |
|- separator-menu-item% _____|___
|- labelled-menu-item<%> | |- menu-bar%
_________|_________ | |- popup-menu%
| | |
| menu%
|
|- selectable-menu-item<%>
|- menu-item%
|- checkable-menu-item%
DIAG
)
(define editor-diagram
#<<DIAG
editor<%>
|- text%
|- pasteboard%
DIAG
)
(define snip-diagram
#<<DIAG
snip% readable-snip<%>
|- string-snip%
| |- tab-snip%
|- image-snip%
|- editor-snip%
DIAG
)
(define admin-diagram
#<<DIAG
editor-canvas%
editor-admin% snip-admin%
|- editor-snip-editor-admin<%>
editor-wordbreak-map% keymap%
DIAG
)
(define style-diagram
#<<DIAG
style<%> style-delta% add-color<%>
style-list% mult-color<%>
DIAG
)
(define stream-diagram
#<<DIAG
editor-data%
editor-data-class% snip-class%
editor-data-class-list<%> snip-class-list<%>
editor-stream-in% editor-stream-out%
editor-stream-in-base% editor-stream-out-base%
|- editor-stream-in-bytes-base% |- editor-stream-out-bytes-base%
DIAG
))