1 USING: arrays hashtables help.markup help.stylesheet io
2 io.styles kernel math models namespaces sequences ui ui.gadgets
3 ui.gadgets.books ui.gadgets.panes ui.gestures ui.render
24 { page-color { 0.4 0.4 0.4 0.3 } }
31 { foreground { 0.1 0.1 0.4 1 } }
35 H{ { wrap-margin 800 } }
38 H{ { table-gap { 10 20 } } }
43 : $title ( string -- )
44 [ H{ { font "sans-serif" } { font-size 48 } } format ] ($block) ;
49 T{ gradient f { { 0.25 0.25 0.25 1.0 } { 1.0 1.0 1.0 0.0 } } }
50 over set-gadget-interior
51 { 800 10 } over set-gadget-dim
52 { 1 0 } over set-gadget-orientation
56 : page-theme ( gadget -- )
57 T{ gradient f { { 0.8 0.8 1.0 1.0 } { 0.8 1.0 1.0 1.0 } } }
58 swap set-gadget-interior ;
60 : <page> ( list -- gadget )
63 [ print-element ] with-default-style
68 : $slide ( element -- )
75 : <slides> ( slides -- gadget )
76 [ <page> ] map 0 <model> <book>
77 slides construct-gadget
78 [ set-gadget-delegate ] keep ;
80 : change-page ( book n -- )
81 over control-value + over gadget-children length rem
82 swap gadget-model set-model ;
84 : next-page ( book -- ) 1 change-page ;
86 : prev-page ( book -- ) -1 change-page ;
88 : (strip-tease) ( data n -- data )
89 >r first3 r> head 3array ;
91 : strip-tease ( data -- seq )
97 parse-definition strip-tease [ parsed ] each ; parsing
100 { T{ key-down f f "DOWN" } [ next-page ] }
101 { T{ key-down f f "UP" } [ prev-page ] }
104 : slides-window ( slides -- )
105 [ <slides> "Slides" open-window ] with-ui ;