diff --git a/collects/scribble/html-render.ss b/collects/scribble/html-render.ss
index 0aad6228ad..e0957f5c1d 100644
--- a/collects/scribble/html-render.ss
+++ b/collects/scribble/html-render.ss
@@ -68,16 +68,27 @@
(define/override (collect-target-element i ht)
(hash-table-put! ht
(target-element-tag i)
- (list (current-output-file) #f #f)))
+ (list (current-output-file)
+ #f
+ (page-target-element? i))))
;; ----------------------------------------
+ (define/private (reveal-subparts? p)
+ (and (styled-part? p)
+ (let ([s (styled-part-style p)])
+ (or (eq? s 'reveal)
+ (and (list? s)
+ (memq 'reveal s))))))
+
(define/public (render-toc-view d ht)
(let-values ([(top mine)
(let loop ([d d][mine d])
(let ([p (collected-info-parent (part-collected-info d))])
(if p
- (loop p d)
+ (loop p (if (reveal-subparts? d)
+ mine
+ d))
(values d mine))))])
`((div ((class "tocset"))
(div ((class "tocview"))
@@ -89,28 +100,39 @@
(table
((class "tocviewlist")
(cellspacing "0"))
- ,@(map (lambda (p)
- `(tr
- (td
- ((align "right"))
- ,@(format-number (collected-info-number (part-collected-info p))
- '((tt nbsp))))
- (td
- (a ((href ,(let ([dest (lookup p ht `(part ,(car (part-tags p))))])
- (format "~a~a~a"
- (from-root (car dest)
- (get-dest-directory))
- (if (caddr dest)
- ""
- "#")
- (if (caddr dest)
- ""
- `(part ,(car (part-tags p)))))))
- (class ,(if (eq? p mine)
- "tocviewselflink"
- "tocviewlink")))
- ,@(render-content (part-title-content p) d ht)))))
- (part-parts top))))
+ ,@(map (lambda (pp)
+ (let ([p (car pp)]
+ [show-number? (cdr pp)])
+ `(tr
+ (td
+ ((align "right"))
+ ,@(if show-number?
+ (format-number (collected-info-number (part-collected-info p))
+ '((tt nbsp)))
+ '("-" nbsp)))
+ (td
+ (a ((href ,(let ([dest (lookup p ht `(part ,(car (part-tags p))))])
+ (format "~a~a~a"
+ (from-root (car dest)
+ (get-dest-directory))
+ (if (caddr dest)
+ ""
+ "#")
+ (if (caddr dest)
+ ""
+ `(part ,(car (part-tags p)))))))
+ (class ,(if (eq? p mine)
+ "tocviewselflink"
+ "tocviewlink")))
+ ,@(render-content (part-title-content p) d ht))))))
+ (let loop ([l (map (lambda (v) (cons v #t)) (part-parts top))])
+ (cond
+ [(null? l) null]
+ [(reveal-subparts? (caar l))
+ (cons (car l) (loop (append (map (lambda (v) (cons v #f))
+ (part-parts (caar l)))
+ (cdr l))))]
+ [else (cons (car l) (loop (cdr l)))])))))
,@(if (ormap (lambda (p) (part-whole-page? p ht)) (part-parts d))
null
(let ([ps (cdr
@@ -219,18 +241,26 @@
`(,@(if (and (not (part-title-content d))
(null? number))
null
- `((,(case (length number)
- [(0) 'h2]
- [(1) 'h3]
- [(2) 'h4]
- [else 'h5])
- ,@(format-number number '((tt nbsp)))
- ,@(map (lambda (t)
+ (if (and (styled-part? d)
+ (let ([s (styled-part-style d)])
+ (or (eq? s 'hidden)
+ (and (list? s)
+ (memq 'hidden s)))))
+ (map (lambda (t)
`(a ((name ,(format "~a" `(part ,t))))))
- (part-tags d))
- ,@(if (part-title-content d)
- (render-content (part-title-content d) d ht)
- null))))
+ (part-tags d))
+ `((,(case (length number)
+ [(0) 'h2]
+ [(1) 'h3]
+ [(2) 'h4]
+ [else 'h5])
+ ,@(format-number number '((tt nbsp)))
+ ,@(map (lambda (t)
+ `(a ((name ,(format "~a" `(part ,t))))))
+ (part-tags d))
+ ,@(if (part-title-content d)
+ (render-content (part-title-content d) d ht)
+ null)))))
,@(render-flow* (part-flow d) d ht #f)
,@(let loop ([pos 1]
[secs (part-parts d)])
diff --git a/collects/scribble/manual.ss b/collects/scribble/manual.ss
index 7a543152e3..0d9310bbc7 100644
--- a/collects/scribble/manual.ss
+++ b/collects/scribble/manual.ss
@@ -440,7 +440,7 @@
(define-syntax defthing
(syntax-rules ()
[(_ id result desc ...)
- (*defthing (quote-syntax id) 'id 'result (lambda () (list desc ...)))]))
+ (*defthing (quote-syntax id) 'id (quote-syntax result) (lambda () (list desc ...)))]))
(define-syntax defparam
(syntax-rules ()
[(_ id arg contract desc ...)
@@ -508,9 +508,15 @@
(cond
[(pair? v)
(if (keyword? (car v))
- (make-element #f (list (to-element (car v))
- (hspace 1)
- (to-element (cadr v))))
+ (if (eq? mode 'new)
+ (make-element #f (list (schemeparenfont "[")
+ (schemeidfont (keyword->string (car v)))
+ (hspace 1)
+ (to-element (cadr v))
+ (schemeparenfont "]")))
+ (make-element #f (list (to-element (car v))
+ (hspace 1)
+ (to-element (cadr v)))))
(to-element (car v)))]
[(eq? v '...+)
dots1]
@@ -527,7 +533,8 @@
[(symbol? (car s)) (string-length (symbol->string (car s)))]
[(pair? (car s))
(if (keyword? (caar s))
- (+ (string-length (keyword->string (caar s)))
+ (+ (if (eq? mode 'new) 2 0)
+ (string-length (keyword->string (caar s)))
3
(string-length (symbol->string (cadar s))))
(string-length (symbol->string (caar s))))]
@@ -1236,7 +1243,7 @@
(define class-decls (make-hash-table 'equal))
- (define-struct decl (name super intfs body))
+ (define-struct decl (name super intfs mk-body))
(define-struct constructor (def))
(define-struct meth (mode desc def))
(define-struct spec (def))
@@ -1251,20 +1258,20 @@
(define (*include-class name)
(let ([decl (hash-table-get class-decls (register-scheme-definition name))])
(make-splice
- (cons (section (to-element (decl-name decl)))
+ (cons (section #:style 'hidden (to-element (decl-name decl)))
(map (lambda (i)
(cond
[(constructor? i) ((constructor-def i))]
[(meth? i)
((meth-def i) (meth-desc i))]
[else i]))
- (decl-body decl))))))
+ ((decl-mk-body decl) #t))))))
(define-syntax include-class
(syntax-rules ()
[(_ id) (*include-class (quote-syntax id))]))
- (define (*defclass stx-id super intfs)
+ (define (*defclass stx-id super intfs whole-page?)
(let ([spacer (hspace 1)])
(make-table
'boxed
@@ -1275,7 +1282,9 @@
(make-paragraph
(list (let ([tag (register-scheme-definition stx-id)]
[content (list (to-element stx-id))])
- (make-toc-target-element
+ ((if whole-page?
+ make-page-target-element
+ make-toc-target-element)
#f
(list (make-index-element #f
content
@@ -1319,12 +1328,14 @@
(register-class (quote-syntax name)
(quote-syntax super)
(list (quote-syntax intf) ...)
- (append
- (list
- (*defclass (quote-syntax name)
- (quote-syntax super)
- (list (quote-syntax intf) ...)))
- (list body ...))))]))
+ (lambda (whole-page?)
+ (append
+ (list
+ (*defclass (quote-syntax name)
+ (quote-syntax super)
+ (list (quote-syntax intf) ...)
+ whole-page?))
+ (list body ...)))))]))
(define-syntax definterface
(syntax-rules ()
@@ -1333,12 +1344,14 @@
(register-class (quote-syntax name)
#f
(list (quote-syntax intf) ...)
- (append
- (list
- (*defclass (quote-syntax name)
- #f
- (list (quote-syntax intf) ...)))
- (list body ...))))]))
+ (lambda (whole-page?)
+ (append
+ (list
+ (*defclass (quote-syntax name)
+ #f
+ (list (quote-syntax intf) ...)
+ whole-page?))
+ (list body ...)))))]))
(define-syntax (defconstructor*/* stx)
(syntax-case stx ()
diff --git a/collects/scribble/struct.ss b/collects/scribble/struct.ss
index ff0b6c5f61..10adbd829a 100644
--- a/collects/scribble/struct.ss
+++ b/collects/scribble/struct.ss
@@ -74,6 +74,7 @@
[content list?])]
[(target-element element) ([tag tag?])]
[(toc-target-element target-element) ()]
+ [(page-target-element target-element) ()]
[(link-element element) ([tag tag?])]
[(index-element element) ([tag tag?]
[plain-seq (listof string?)]
diff --git a/collects/scribblings/gui/diagrams.ss b/collects/scribblings/gui/diagrams.ss
index 3c717f7dd4..0b33841277 100644
--- a/collects/scribblings/gui/diagrams.ss
+++ b/collects/scribblings/gui/diagrams.ss
@@ -8,7 +8,12 @@
short-windowing-diagram
windowing-diagram
event-diagram
- menu-diagram)
+ menu-diagram
+ editor-diagram
+ snip-diagram
+ style-diagram
+ admin-diagram
+ stream-diagram)
(define (diagram->table d)
(make-table
@@ -103,4 +108,52 @@ DIAG
|- menu-item%
|- checkable-menu-item%
DIAG
+)
+
+ (define editor-diagram
+#<
+ |- text%
+ |- pasteboard%
+DIAG
+)
+
+ (define snip-diagram
+#<
+ |- string-snip%
+ | |- tab-snip%
+ |- image-snip%
+ |- editor-snip%
+DIAG
+)
+
+ (define admin-diagram
+#< snip-admin%
+ |- editor-snip-editor-admin<%>
+
+ editor-wordbreak-map% keymap%
+DIAG
+)
+
+ (define style-diagram
+#< style-delta% add-color<%>
+ style-list% mult-color<%>
+DIAG
+)
+
+ (define stream-diagram
+#< 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
))
diff --git a/collects/scribblings/gui/draw-classes.scrbl b/collects/scribblings/gui/draw-classes.scrbl
index 4f3ec40f8e..c9ec5a79f3 100644
--- a/collects/scribblings/gui/draw-classes.scrbl
+++ b/collects/scribblings/gui/draw-classes.scrbl
@@ -2,7 +2,7 @@
@require["common.ss"]
@require["diagrams.ss"]
-@title[#:style '(toc quiet)]{Drawing Class Reference}
+@title[#:style '(toc quiet)]{Drawing Classes}
@local-table-of-contents[]
diff --git a/collects/scribblings/gui/draw-funcs.scrbl b/collects/scribblings/gui/draw-funcs.scrbl
index d61bfe9555..d0dd296044 100644
--- a/collects/scribblings/gui/draw-funcs.scrbl
+++ b/collects/scribblings/gui/draw-funcs.scrbl
@@ -1,7 +1,7 @@
#reader(lib "docreader.ss" "scribble")
@require["common.ss"]
-@title{Drawing Function Reference}
+@title{Drawing Functions}
@local-table-of-contents[]
diff --git a/collects/scribblings/gui/draw-overview.scrbl b/collects/scribblings/gui/draw-overview.scrbl
index 404b7a79f0..f2ce43f210 100644
--- a/collects/scribblings/gui/draw-overview.scrbl
+++ b/collects/scribblings/gui/draw-overview.scrbl
@@ -3,7 +3,7 @@
@require["common.ss"]
@require["diagrams.ss"]
-@title[#:tag "mr:drawing-overview"]{Drawing Guide}
+@title[#:tag "mr:drawing-overview"]{Drawing}
Drawing in MrEd requires a @deftech{device context} (@deftech{DC}),
which is an instance of the @scheme[dc<%>] interface. For example,
diff --git a/collects/scribblings/gui/editor-classes.scrbl b/collects/scribblings/gui/editor-classes.scrbl
index b343744853..cbcd62683d 100644
--- a/collects/scribblings/gui/editor-classes.scrbl
+++ b/collects/scribblings/gui/editor-classes.scrbl
@@ -2,7 +2,29 @@
@require["common.ss"]
@require["diagrams.ss"]
-@title[#:style '(toc quiet)]{Editor Class Reference}
+@title[#:style '(toc quiet)]{Editor Classes}
+
+Editors:
+
+@diagram->table[editor-diagram]
+
+Snips:
+
+@diagram->table[snip-diagram]
+
+Displays, Administrators, and Mappings:
+
+@diagram->table[editor-diagram]
+
+Styles:
+
+@diagram->table[style-diagram]
+
+Streams for Saving and Cut-and-Paste:
+
+@diagram->table[stream-diagram]
+
+Alphabetical:
@local-table-of-contents[]
@@ -10,8 +32,17 @@
@require["editor-intf.scrbl"]
@require["editor-admin-class.scrbl"]
@require["editor-canvas-class.scrbl"]
+@require["editor-data-class.scrbl"]
+@require["editor-data-class-class.scrbl"]
+@require["editor-data-class-list-intf.scrbl"]
@require["editor-snip-editor-admin-intf.scrbl"]
@require["editor-snip-class.scrbl"]
+@require["editor-stream-in-class.scrbl"]
+@require["editor-stream-in-base-class.scrbl"]
+@require["editor-stream-in-bytes-base-class.scrbl"]
+@require["editor-stream-out-class.scrbl"]
+@require["editor-stream-out-base-class.scrbl"]
+@require["editor-stream-out-bytes-base-class.scrbl"]
@require["editor-wordbreak-map-class.scrbl"]
@require["image-snip-class.scrbl"]
@require["keymap-class.scrbl"]
@@ -20,6 +51,8 @@
@require["readable-snip-intf.scrbl"]
@require["snip-class.scrbl"]
@require["snip-admin-class.scrbl"]
+@require["snip-class-class.scrbl"]
+@require["snip-class-list-intf.scrbl"]
@require["string-snip-class.scrbl"]
@require["style-intf.scrbl"]
@require["style-delta-class.scrbl"]
@@ -31,7 +64,17 @@
@include-class[editor<%>]
@include-class[editor-admin%]
@include-class[editor-canvas%]
+@include-class[editor-data%]
+@include-class[editor-data-class%]
+@include-class[editor-data-class-list<%>]
+@include-class[editor-snip-editor-admin<%>]
@include-class[editor-snip%]
+@include-class[editor-stream-in%]
+@include-class[editor-stream-in-base%]
+@include-class[editor-stream-in-bytes-base%]
+@include-class[editor-stream-out%]
+@include-class[editor-stream-out-base%]
+@include-class[editor-stream-out-bytes-base%]
@include-class[editor-wordbreak-map%]
@include-class[image-snip%]
@include-class[keymap%]
@@ -40,6 +83,8 @@
@include-class[readable-snip<%>]
@include-class[snip%]
@include-class[snip-admin%]
+@include-class[snip-class%]
+@include-class[snip-class-list<%>]
@include-class[string-snip%]
@include-class[style<%>]
@include-class[style-delta%]
diff --git a/collects/scribblings/gui/editor-overview.scrbl b/collects/scribblings/gui/editor-overview.scrbl
index c0c1062856..33099e56b4 100644
--- a/collects/scribblings/gui/editor-overview.scrbl
+++ b/collects/scribblings/gui/editor-overview.scrbl
@@ -2,7 +2,7 @@
@require[(lib "bnf.ss" "scribble")]
@require["common.ss"]
-@title[#:tag "mr:editor-overview"]{Editor Guide}
+@title[#:tag "mr:editor-overview"]{Editor}
The editor toolbox provides a foundation for two common kinds of
applications:
diff --git a/collects/scribblings/gui/editor-stream-classes.scrbl b/collects/scribblings/gui/editor-stream-classes.scrbl
deleted file mode 100644
index 83b43289c5..0000000000
--- a/collects/scribblings/gui/editor-stream-classes.scrbl
+++ /dev/null
@@ -1,31 +0,0 @@
-#reader(lib "docreader.ss" "scribble")
-@require["common.ss"]
-@require["diagrams.ss"]
-
-@title[#:style '(toc quiet)]{Editor Stream Class Reference}
-
-@local-table-of-contents[]
-
-@require["editor-data-class.scrbl"]
-@require["editor-data-class-class.scrbl"]
-@require["editor-data-class-list-intf.scrbl"]
-@require["editor-stream-in-class.scrbl"]
-@require["editor-stream-in-base-class.scrbl"]
-@require["editor-stream-in-bytes-base-class.scrbl"]
-@require["editor-stream-out-class.scrbl"]
-@require["editor-stream-out-base-class.scrbl"]
-@require["editor-stream-out-bytes-base-class.scrbl"]
-@require["snip-class-class.scrbl"]
-@require["snip-class-list-intf.scrbl"]
-
-@include-class[editor-data%]
-@include-class[editor-data-class%]
-@include-class[editor-data-class-list<%>]
-@include-class[editor-stream-in%]
-@include-class[editor-stream-in-base%]
-@include-class[editor-stream-in-bytes-base%]
-@include-class[editor-stream-out%]
-@include-class[editor-stream-out-base%]
-@include-class[editor-stream-out-bytes-base%]
-@include-class[snip-class%]
-@include-class[snip-class-list<%>]
diff --git a/collects/scribblings/gui/gui.scrbl b/collects/scribblings/gui/gui.scrbl
index 60cc47a548..877bae7880 100644
--- a/collects/scribblings/gui/gui.scrbl
+++ b/collects/scribblings/gui/gui.scrbl
@@ -14,6 +14,7 @@ This manual describes MrEd.
@include-section["guide.scrbl"]
@include-section["reference.scrbl"]
+@include-section["config.scrbl"]
@;------------------------------------------------------------------------
diff --git a/collects/scribblings/gui/guide.scrbl b/collects/scribblings/gui/guide.scrbl
index 48b287f252..a024251de1 100644
--- a/collects/scribblings/gui/guide.scrbl
+++ b/collects/scribblings/gui/guide.scrbl
@@ -1,7 +1,7 @@
#reader(lib "docreader.ss" "scribble")
@require["common.ss"]
-@title[#:style 'toc]{Guide}
+@title[#:style '(toc reveal)]{Guide}
For documentation purposes, the MrEd toolbox is organized into three
parts:
diff --git a/collects/scribblings/gui/reference.scrbl b/collects/scribblings/gui/reference.scrbl
index a49b019fa1..eafb0cb2d0 100644
--- a/collects/scribblings/gui/reference.scrbl
+++ b/collects/scribblings/gui/reference.scrbl
@@ -1,7 +1,7 @@
#reader(lib "docreader.ss" "scribble")
@require["common.ss"]
-@title[#:style 'toc]{Reference}
+@title[#:style '(toc reveal)]{Reference}
@local-table-of-contents[]
@@ -10,5 +10,4 @@
@include-section["draw-classes.scrbl"]
@include-section["draw-funcs.scrbl"]
@include-section["editor-classes.scrbl"]
-@include-section["editor-stream-classes.scrbl"]
@include-section["editor-funcs.scrbl"]
diff --git a/collects/scribblings/gui/win-classes.scrbl b/collects/scribblings/gui/win-classes.scrbl
index 8374c8f891..3d254d0932 100644
--- a/collects/scribblings/gui/win-classes.scrbl
+++ b/collects/scribblings/gui/win-classes.scrbl
@@ -2,7 +2,7 @@
@require["common.ss"]
@require["diagrams.ss"]
-@title[#:style '(toc quiet)]{Windowing Class Reference}
+@title[#:style '(toc quiet)]{Windowing Classes}
Windows and controls:
diff --git a/collects/scribblings/gui/win-funcs.scrbl b/collects/scribblings/gui/win-funcs.scrbl
index 88ae8af9eb..01fe17b7bf 100644
--- a/collects/scribblings/gui/win-funcs.scrbl
+++ b/collects/scribblings/gui/win-funcs.scrbl
@@ -1,7 +1,7 @@
#reader(lib "docreader.ss" "scribble")
@require["common.ss"]
-@title{Windowing Function Reference}
+@title{Windowing Functions}
@local-table-of-contents[]
diff --git a/collects/scribblings/gui/win-overview.scrbl b/collects/scribblings/gui/win-overview.scrbl
index 66adf361de..ebf911eaad 100644
--- a/collects/scribblings/gui/win-overview.scrbl
+++ b/collects/scribblings/gui/win-overview.scrbl
@@ -3,7 +3,7 @@
@require["common.ss"]
@require["diagrams.ss"]
-@title[#:tag "mr:windowing-overview"]{Windowing Guide}
+@title[#:tag "mr:windowing-overview"]{Windowing}
@section{Basic GUI Building Blocks}