diff --git a/library/help/help.factor b/library/help/help.factor index 49415fe40e..139053afe4 100644 --- a/library/help/help.factor +++ b/library/help/help.factor @@ -41,8 +41,18 @@ M: word article-content ] with-style ] ($block) ; +: ($subsection) ( object -- ) + [ article-title ] keep >link + dup [ (help) ] curry + write-outliner ; + : $subsection ( object -- ) - [ first [ (help) ] swap ($subsection) ] ($block) ; + [ + subsection-style [ first ($subsection) ] with-style + ] ($block) ; + +: help-outliner ( seq -- | quot: obj -- ) + sort-articles [ ($subsection) terpri ] each ; : $outliner ( content -- ) - first call [ (help) ] help-outliner ; + subsection-style [ first call help-outliner ] with-style ; diff --git a/library/help/markup.factor b/library/help/markup.factor index 10dec83cf4..7b7554ed85 100644 --- a/library/help/markup.factor +++ b/library/help/markup.factor @@ -126,12 +126,6 @@ M: link summary "Link: " swap link-name unparse append ; : >link ( obj -- obj ) dup word? [ ] unless ; -: ($subsection) ( quot object -- ) - subsection-style [ - [ swap curry ] keep dup article-title swap >link - rot write-outliner - ] with-style ; - : $link ( article -- ) first link-style [ dup article-title swap >link write-object @@ -227,6 +221,3 @@ M: link summary "Link: " swap link-name unparse append ; [ [ article-title ] keep 2array ] map [ [ first ] 2apply <=> ] sort [ second ] map ; - -: help-outliner ( seq quot -- | quot: obj -- ) - swap sort-articles [ ($subsection) terpri ] each-with ; diff --git a/library/help/search.factor b/library/help/search.factor index c2aafca945..c920dc7672 100644 --- a/library/help/search.factor +++ b/library/help/search.factor @@ -84,7 +84,4 @@ SYMBOL: term-index dup xref-article index-article ; : search-help. ( phrase -- ) - "Search results for ``" write dup write "'':" print - search-help [ - first >link [ article-title ] keep write-object terpri - ] each ; + search-help [ first ] map help-outliner ; diff --git a/library/tools/word-tools.factor b/library/tools/word-tools.factor index d1a8f0dddc..4dc698a280 100644 --- a/library/tools/word-tools.factor +++ b/library/tools/word-tools.factor @@ -1,23 +1,20 @@ ! Copyright (C) 2005, 2006 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. IN: words -USING: inspector io kernel math namespaces prettyprint +USING: help inspector io kernel math namespaces prettyprint sequences strings walker ; -: usage. ( word -- ) - usage natural-sort [ - [ synopsis ] keep dup [ usage. ] curry +: word-outliner ( word quot -- ) + swap natural-sort [ + dup rot curry >r [ synopsis ] keep r> write-outliner terpri - ] each ; + ] each-with ; + +: usage. ( word -- ) + usage [ usage. ] word-outliner ; : apropos ( substring -- ) - "Word names containing ``" write dup write "'':" print - all-words completions - [ - [ - dup word-name % " (" % dup word-vocabulary % ")" % - ] "" make swap write-object terpri - ] each ; + all-words completions [ (help) ] word-outliner ; : annotate ( word quot -- | quot: word def -- def ) over >r >r dup word-def r> call r> swap define-compound ; diff --git a/library/ui/cocoa/menu-bar.factor b/library/ui/cocoa/menu-bar.factor index 5b9603dcb6..c233176d19 100644 --- a/library/ui/cocoa/menu-bar.factor +++ b/library/ui/cocoa/menu-bar.factor @@ -1,8 +1,8 @@ ! Copyright (C) 2005, 2006 Kevin Reid. ! See http://factorcode.org/license.txt for BSD license. USING: cocoa compiler gadgets gadgets-browser gadgets-launchpad -gadgets-listener kernel memory objc objc-classes sequences -strings words ; +gadgets-listener gadgets-search kernel memory objc objc-classes +sequences strings words ; IN: cocoa ! ------------------------------------------------------------------------- @@ -112,6 +112,7 @@ DEFER: described-menu "File" { "New Listener" listener-window "n" } { "New Browser" browser-window "b" } + { "Apropos" apropos-window "r" } { } { "Run..." menu-run-file "o" } { } @@ -144,5 +145,6 @@ DEFER: described-menu { { "Help" { "Factor Documentation" handbook-window "?" } + { "Search" search-help-window "" } } } } described-menu set-main-menu ; diff --git a/library/ui/tools/browser.factor b/library/ui/tools/browser.factor index 52bddadb06..2ecd98b0a1 100644 --- a/library/ui/tools/browser.factor +++ b/library/ui/tools/browser.factor @@ -32,7 +32,7 @@ C: browser-track ( builder closer -- gadget ) [ dup browser-track-closer call ] 2keep [ browser-track-showing remove-hash* ] keep track-remove ; -TUPLE: browser main-track vocab-track word-track ; +TUPLE: browser vocab-track word-track ; : find-browser [ browser? ] find-parent ; @@ -108,17 +108,6 @@ DEFER: show-vocab vocabs [ ] map make-pile "Vocabularies" f ; -: - [ apropos ] "Apropos" f ; - -TUPLE: main-track vocabs apropos ; - -C: main-track ( -- gadget ) - { - { [ ] set-main-track-vocabs 2/3 } - { [ ] set-main-track-apropos 1/3 } - } { 0 1 } make-track* ; - : ( -- track ) [ ] [ find-browser hide-vocab-words ] ; @@ -128,16 +117,13 @@ C: main-track ( -- gadget ) C: browser ( -- browser ) { - { [ ] set-browser-main-track 1/5 } + { [ ] f 1/5 } { [ ] set-browser-vocab-track 1/5 } { [ ] set-browser-word-track 3/5 } } { 1 0 } make-track* ; M: browser gadget-title drop "Browser" ; -M: browser focusable-child* - browser-main-track main-track-apropos ; - : browser-window ( -- ) open-window ; : browser-tool diff --git a/library/ui/tools/help.factor b/library/ui/tools/help.factor index 58bdf83970..56e7a908f5 100644 --- a/library/ui/tools/help.factor +++ b/library/ui/tools/help.factor @@ -19,35 +19,21 @@ C: history ( -- gadget ) ] each ] with-pane ; -TUPLE: help-sidebar history search ; - -: ( -- gadget ) - [ search-help. ] "Search" f ; - -C: help-sidebar ( -- gadget ) - { - { [ ] set-help-sidebar-history 1/2 } - { [ ] set-help-sidebar-search 1/2 } - } { 0 1 } make-track* ; - -TUPLE: help-gadget showing sidebar scroller ; +TUPLE: help-gadget showing history scroller ; : help-gadget-pane help-gadget-scroller scroller-gadget ; C: help-gadget ( -- gadget ) { - { [ ] set-help-gadget-sidebar 1/4 } + { [ ] set-help-gadget-history 1/4 } { [ ] set-help-gadget-scroller 3/4 } } { 1 0 } make-track* ; M: help-gadget gadget-title "Help - " swap help-gadget-showing article-title append ; -M: help-gadget focusable-child* - help-gadget-sidebar help-sidebar-search ; - : add-history ( help -- ) - dup help-gadget-sidebar help-sidebar-history + dup help-gadget-history swap help-gadget-showing dup [ over history-seq push-new update-history ] [ 2drop ] if ; diff --git a/library/ui/tools/launchpad.factor b/library/ui/tools/launchpad.factor index d0f7007bd2..57fc4f4dec 100644 --- a/library/ui/tools/launchpad.factor +++ b/library/ui/tools/launchpad.factor @@ -28,7 +28,9 @@ prettyprint sequences words ; { { "Listener" [ listener-window ] } { "Browser" [ browser-window ] } + { "Apropos" [ apropos-window ] } { "Documentation" [ handbook-window ] } + { "Search help" [ search-help-window ] } { "Globals" [ globals-window ] } { "Memory" [ memory-window ] } { "Save image" [ save ] } diff --git a/library/ui/tools/search.factor b/library/ui/tools/search.factor index 68db88fe04..a2e45601b9 100644 --- a/library/ui/tools/search.factor +++ b/library/ui/tools/search.factor @@ -2,8 +2,8 @@ ! See http://factorcode.org/license.txt for BSD license. IN: gadgets-search USING: gadgets gadgets-editors gadgets-frames gadgets-labels -gadgets-panes gadgets-scrolling gadgets-theme generic inspector -kernel sequences ; +gadgets-panes gadgets-scrolling gadgets-theme generic help +inspector kernel sequences words ; TUPLE: search-gadget scroller input quot ; @@ -30,3 +30,15 @@ C: search-gadget ( quot -- ) } make-frame* ; M: search-gadget focusable-child* search-gadget-input ; + +M: search-gadget pref-dim* drop { 400 500 } ; + +: apropos-window + [ apropos ] + "Apropos" + open-window ; + +: search-help-window + [ search-help. ] + "Search help" + open-window ; diff --git a/library/ui/ui.factor b/library/ui/ui.factor index bc8f1aed6e..51bd63e33c 100644 --- a/library/ui/ui.factor +++ b/library/ui/ui.factor @@ -71,6 +71,8 @@ M: titled-gadget pref-dim* viewport-dim ; M: titled-gadget layout* dup rect-dim swap gadget-child set-gadget-dim ; +M: titled-gadget focusable-child* gadget-child ; + C: titled-gadget ( gadget title -- ) dup delegate>gadget [ set-titled-gadget-title ] keep