! Copyright (C) 2006 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. IN: gadgets-browser USING: gadgets gadgets-buttons gadgets-inspector gadgets-labels gadgets-layouts gadgets-panes gadgets-presentations gadgets-scrolling gadgets-theme gadgets-tracks generic hashtables help inspector kernel math prettyprint sequences words ; TUPLE: browser-track showing builder closer ; C: browser-track ( builder closer -- gadget ) 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 vocabs vocab-track word-track ; : find-browser [ browser? ] find-parent ; TUPLE: tile ; : find-tile [ tile? ] find-parent ; : close-tile ( tile -- ) dup gadget-parent [ browser-track-showing hash>alist rassoc ] keep hide-asset ; : ( -- gadget ) { 0.0 0.0 0.0 1.0 } close-box [ find-tile close-tile ] ; : ( title -- gadget ) { { [