! Copyright (C) 2006 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. IN: gadgets-browser USING: components gadgets gadgets-buttons gadgets-labels gadgets-layouts gadgets-panes gadgets-scrolling gadgets-theme hashtables help inspector kernel lists math namespaces prettyprint sequences words ; TUPLE: book page pages ; : show-page ( key book -- ) dup book-page unparent [ book-pages hash ] keep [ set-book-page ] 2keep add-gadget ; C: book ( page pages -- book ) dup delegate>gadget [ set-book-pages ] keep [ show-page ] keep ; M: book pref-dim* ( book -- dim ) { 0 0 0 } swap book-pages [ nip pref-dim vmax ] hash-each ; M: book layout* ( book -- ) dup rect-dim swap book-page set-gadget-dim ; : component-page ( obj component -- gadget ) component-builder make-pane ; : component-pages ( obj -- hash ) dup get-components [ [ component-name over ] keep component-page ] map>hash nip ; : component-book ( hash -- book ) dup hash-keys natural-sort first swap ; : ( name book -- button ) dupd [ show-page ] curry curry >r