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