| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | USING: arrays hashtables help.markup help.stylesheet io | 
					
						
							|  |  |  | io.styles kernel math models namespaces sequences ui ui.gadgets | 
					
						
							| 
									
										
										
										
											2008-01-10 15:48:30 -05:00
										 |  |  | ui.gadgets.books ui.gadgets.panes ui.gestures ui.render | 
					
						
							|  |  |  | parser ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | IN: slides | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : stylesheet | 
					
						
							|  |  |  |     H{ | 
					
						
							| 
									
										
										
										
											2008-03-07 17:59:44 -05:00
										 |  |  |         { default-span-style | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |             H{ | 
					
						
							|  |  |  |                 { font "sans-serif" } | 
					
						
							|  |  |  |                 { font-size 36 } | 
					
						
							| 
									
										
										
										
											2008-03-07 17:59:44 -05:00
										 |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         { default-block-style | 
					
						
							|  |  |  |             H{ | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |                 { wrap-margin 1000 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         { code-style | 
					
						
							|  |  |  |             H{ | 
					
						
							|  |  |  |                 { font "monospace" } | 
					
						
							|  |  |  |                 { font-size 36 } | 
					
						
							|  |  |  |                 { page-color { 0.4 0.4 0.4 0.3 } } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         { snippet-style | 
					
						
							|  |  |  |             H{ | 
					
						
							|  |  |  |                 { font "monospace" } | 
					
						
							|  |  |  |                 { font-size 36 } | 
					
						
							|  |  |  |                 { foreground { 0.1 0.1 0.4 1 } } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         { table-content-style | 
					
						
							|  |  |  |             H{ { wrap-margin 800 } } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         { list-style | 
					
						
							|  |  |  |             H{ { table-gap { 10 20 } } } | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2008-02-01 16:00:02 -05:00
										 |  |  |         { bullet "\u0000b7" } | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |     } ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : $title ( string -- )
 | 
					
						
							|  |  |  |     [ H{ { font "sans-serif" } { font-size 48 } } format ] ($block) ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : $divider ( -- )
 | 
					
						
							|  |  |  |     [ | 
					
						
							|  |  |  |         <gadget> | 
					
						
							|  |  |  |         T{ gradient f { { 0.25 0.25 0.25 1.0 } { 1.0 1.0 1.0 0.0 } } } | 
					
						
							|  |  |  |         over set-gadget-interior | 
					
						
							|  |  |  |         { 800 10 } over set-gadget-dim | 
					
						
							|  |  |  |         { 1 0 } over set-gadget-orientation | 
					
						
							|  |  |  |         gadget. | 
					
						
							|  |  |  |     ] ($block) ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-09 03:14:14 -04:00
										 |  |  | : page-theme ( gadget -- )
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |     T{ gradient f { { 0.8 0.8 1.0 1.0 } { 0.8 1.0 1.0 1.0 } } } | 
					
						
							|  |  |  |     swap set-gadget-interior ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : <page> ( list -- gadget )
 | 
					
						
							|  |  |  |     [ | 
					
						
							|  |  |  |         stylesheet clone [ | 
					
						
							|  |  |  |             [ print-element ] with-default-style | 
					
						
							|  |  |  |         ] bind | 
					
						
							|  |  |  |     ] make-pane | 
					
						
							|  |  |  |     dup page-theme ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : $slide ( element -- )
 | 
					
						
							|  |  |  |     unclip $title | 
					
						
							|  |  |  |     $divider | 
					
						
							|  |  |  |     $list ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | TUPLE: slides ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : <slides> ( slides -- gadget )
 | 
					
						
							|  |  |  |     [ <page> ] map 0 <model> <book> | 
					
						
							|  |  |  |     slides construct-gadget | 
					
						
							|  |  |  |     [ set-gadget-delegate ] keep ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : change-page ( book n -- )
 | 
					
						
							|  |  |  |     over control-value + over gadget-children length rem
 | 
					
						
							| 
									
										
										
										
											2007-11-14 16:35:17 -05:00
										 |  |  |     swap gadget-model set-model ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | : next-page ( book -- ) 1 change-page ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : prev-page ( book -- ) -1 change-page ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-01-10 15:45:54 -05:00
										 |  |  | : (strip-tease) ( data n -- data )
 | 
					
						
							|  |  |  |     >r first3 r> head 3array ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : strip-tease ( data -- seq )
 | 
					
						
							| 
									
										
										
										
											2008-01-12 17:23:34 -05:00
										 |  |  |     dup third length 1- [ | 
					
						
							| 
									
										
										
										
											2008-01-10 15:45:54 -05:00
										 |  |  |         2 + (strip-tease) | 
					
						
							|  |  |  |     ] with map ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : STRIP-TEASE: | 
					
						
							|  |  |  |     parse-definition strip-tease [ parsed ] each ; parsing | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | \ slides H{ | 
					
						
							|  |  |  |     { T{ key-down f f "DOWN" } [ next-page ] } | 
					
						
							|  |  |  |     { T{ key-down f f "UP" } [ prev-page ] } | 
					
						
							|  |  |  | } set-gestures | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : slides-window ( slides -- )
 | 
					
						
							|  |  |  |     [ <slides> "Slides" open-window ] with-ui ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MAIN: slides-window |