factor/basis/ui/gadgets/books/books.factor

31 lines
837 B
Factor
Raw Normal View History

! Copyright (C) 2006, 2008 Slava Pestov.
2007-09-20 18:09:08 -04:00
! See http://factorcode.org/license.txt for BSD license.
2008-07-11 19:34:43 -04:00
USING: accessors kernel sequences models ui.gadgets math.geometry.rect ;
2007-09-20 18:09:08 -04:00
IN: ui.gadgets.books
TUPLE: book < gadget ;
2007-09-20 18:09:08 -04:00
2008-08-29 19:44:19 -04:00
: hide-all ( book -- ) children>> [ hide-gadget ] each ;
2007-09-20 18:09:08 -04:00
2008-07-15 14:50:42 -04:00
: current-page ( book -- gadget ) [ control-value ] keep nth-gadget ;
2007-09-20 18:09:08 -04:00
2008-07-15 14:50:42 -04:00
M: book model-changed ( model book -- )
nip
2007-09-20 18:09:08 -04:00
dup hide-all
dup current-page show-gadget
relayout ;
: new-book ( pages model class -- book )
new-gadget
swap >>model
swap add-gadgets ; inline
2008-07-15 14:50:42 -04:00
: <book> ( pages model -- book ) book new-book ;
2007-09-20 18:09:08 -04:00
2008-07-15 14:50:42 -04:00
M: book pref-dim* ( book -- dim ) children>> pref-dims max-dim ;
2007-09-20 18:09:08 -04:00
2008-07-15 14:50:42 -04:00
M: book layout* ( book -- )
2008-09-27 19:44:51 -04:00
[ children>> ] [ dim>> ] bi [ >>dim drop ] curry each ;
2007-09-20 18:09:08 -04:00
2008-07-15 14:50:42 -04:00
M: book focusable-child* ( book -- child/t ) current-page ;