1 ! Copyright (C) 2006 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: arrays sequences kernel gadgets-panes definitions
4 prettyprint gadgets-theme gadgets-borders gadgets
5 generic gadgets-scrolling math io words models styles
6 namespaces gadgets-tracks gadgets-presentations
7 gadgets-workspace help gadgets-buttons tools ;
10 TUPLE: browser definitions ;
12 TUPLE: definitions showing ;
14 : find-definitions ( gadget -- definitions )
15 [ definitions? ] find-parent ;
17 : definition-index ( definition definitions -- n )
18 definitions-showing index ;
20 : close-definition ( gadget definition -- )
21 over find-definitions definitions-showing delete
24 : close-definitions ( definitions -- )
25 dup clear-gadget definitions-showing delete-all ;
27 C: definitions ( -- gadget )
28 <pile> over set-delegate
29 { 2 2 } over set-pack-gap
30 V{ } clone over set-definitions-showing ;
32 TUPLE: tile definition gadget ;
34 : find-tile [ tile? ] find-parent ;
36 : close-tile ( tile -- )
37 dup tile-definition over find-definitions
38 definitions-showing delete
41 : <tile-content> ( definition -- gadget )
42 [ [ see ] make-pane <default-border> ] keep
43 unparse [ find-tile close-tile ] <closable-gadget>
46 C: tile ( definition -- gadget )
47 over <tile-content> over set-gadget-delegate
48 [ set-tile-definition ] keep ;
50 : show-definition ( definition definitions -- )
51 2dup definition-index dup 0 >= [
52 over nth-gadget swap scroll>rect drop
54 drop 2dup definitions-showing push
55 swap <tile> over add-gadget
59 C: browser ( -- gadget )
63 set-browser-definitions
69 : clear-browser ( browser -- )
70 browser-definitions close-definitions ;
73 { "Clear" T{ key-down f f "CLEAR" } [ clear-browser ] }
77 browser-definitions show-definition ;
79 M: browser tool-scroller browser-definitions find-scroller ;
81 M: browser tool-help drop "ui-browser" ;