! Copyright (C) 2006 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. IN: gadgets-browser USING: gadgets gadgets-buttons gadgets-labels gadgets-panes gadgets-presentations gadgets-scrolling gadgets-search gadgets-tabs gadgets-theme gadgets-tiles gadgets-tracks generic hashtables help inspector kernel math prettyprint sequences words ; TUPLE: browser-track showing builder closer ; C: browser-track ( builder closer -- gadget ) { 0 1 } over set-delegate H{ } clone over set-browser-track-showing [ set-browser-track-closer ] keep [ set-browser-track-builder ] keep ; : showing-asset? ( asset track -- ? ) browser-track-showing hash-member? ; : (show-asset) ( gadget asset track -- ) [ browser-track-showing set-hash ] 3keep nip track-add ; : show-asset ( asset track -- ) 2dup showing-asset? [ 2drop ] [ [ browser-track-builder call ] 2keep (show-asset) ] if ; : hide-asset ( asset track -- ) [ dup browser-track-closer call ] 2keep [ browser-track-showing remove-hash* ] keep track-remove ; TUPLE: browser vocab-track word-track ; : find-browser [ browser? ] find-parent ; : close-tile ( tile -- ) dup gadget-parent [ browser-track-showing hash>alist rassoc ] keep hide-asset ; : ( gadget title -- gadget ) [ close-tile ] ; : showing-word? ( word browser -- ? ) browser-word-track showing-asset? ; DEFER: show-vocab : ( word -- tabs ) { { "Definition" [ see ] } { "Documentation" [ help ] } { "Calls in" [ usage. ] } { "Properties" [ word-props describe ] } } ; : ( word -- gadget ) [ ] keep word-name ; : show-word ( word browser -- ) over word-vocabulary over show-vocab browser-word-track show-asset ; : hide-word ( word browser -- ) browser-word-track hide-asset ; : toggle-word ( word browser -- ) 2dup showing-word? [ hide-word ] [ show-word ] if ; : ( word -- gadget ) dup word-name