]> gitweb.factorcode.org Git - factor.git/blob - basis/ui/gadgets/books/books.factor
da0ff35728ce1df6986d2966c524037fc933b677
[factor.git] / basis / ui / gadgets / books / books.factor
1 ! Copyright (C) 2006, 2008 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors kernel sequences models ui.gadgets math.geometry.rect ;
4 IN: ui.gadgets.books
5
6 TUPLE: book < gadget ;
7
8 : hide-all ( book -- ) children>> [ hide-gadget ] each ;
9
10 : current-page ( book -- gadget ) [ control-value ] keep nth-gadget ;
11
12 M: book model-changed ( model book -- )
13     nip
14     dup hide-all
15     dup current-page show-gadget
16     relayout ;
17
18 : new-book ( pages model class -- book )
19     new-gadget
20         swap >>model
21         swap add-gadgets ; inline
22
23 : <book> ( pages model -- book ) book new-book ;
24
25 M: book pref-dim* ( book -- dim ) children>> pref-dims max-dim ;
26
27 M: book layout* ( book -- )
28     [ children>> ] [ dim>> ] bi [ >>dim drop ] curry each ;
29
30 M: book focusable-child* ( book -- child/t ) current-page ;