| 
									
										
										
										
											2010-01-14 10:10:13 -05:00
										 |  |  | ! Copyright (C) 2007, 2010 Slava Pestov. | 
					
						
							| 
									
										
										
										
											2008-07-10 21:32:17 -04:00
										 |  |  | ! See http://factorcode.org/license.txt for BSD license. | 
					
						
							| 
									
										
										
										
											2015-10-24 08:57:54 -04:00
										 |  |  | USING: accessors arrays colors fonts fry help.markup help.stylesheet | 
					
						
							|  |  |  | io.styles kernel literals math math.ranges models namespaces parser | 
					
						
							| 
									
										
										
										
											2015-08-17 12:43:54 -04:00
										 |  |  | sequences system ui ui.gadgets ui.gadgets.books ui.gadgets.panes | 
					
						
							|  |  |  | ui.gestures ui.pens.gradient ui.pens.solid ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | IN: slides | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-23 22:40:17 -05:00
										 |  |  | CONSTANT: stylesheet | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |     H{ | 
					
						
							| 
									
										
										
										
											2008-03-07 17:59:44 -05:00
										 |  |  |         { default-span-style | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |             H{ | 
					
						
							| 
									
										
										
										
											2015-10-24 08:57:54 -04:00
										 |  |  |                 { font-name $ default-sans-serif-font-name } | 
					
						
							|  |  |  |                 { font-size $[ default-font-size 3 * ] } | 
					
						
							| 
									
										
										
										
											2008-03-07 17:59:44 -05:00
										 |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         { default-block-style | 
					
						
							|  |  |  |             H{ | 
					
						
							| 
									
										
										
										
											2015-10-24 08:57:54 -04:00
										 |  |  |                 { wrap-margin $[ default-font-size 92 * ] } | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2009-09-18 17:36:06 -04:00
										 |  |  |         { code-char-style | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |             H{ | 
					
						
							| 
									
										
										
										
											2015-10-24 08:57:54 -04:00
										 |  |  |                 { font-name $ default-monospace-font-name } | 
					
						
							|  |  |  |                 { font-size $[ default-font-size 3 * ] } | 
					
						
							| 
									
										
										
										
											2009-09-18 17:36:06 -04:00
										 |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         { code-style | 
					
						
							|  |  |  |             H{ | 
					
						
							| 
									
										
										
										
											2008-07-28 18:01:08 -04:00
										 |  |  |                 { page-color T{ rgba f 0.4 0.4 0.4 0.3 } } | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         { snippet-style | 
					
						
							|  |  |  |             H{ | 
					
						
							| 
									
										
										
										
											2015-10-24 08:57:54 -04:00
										 |  |  |                 { font-name $ default-monospace-font-name } | 
					
						
							|  |  |  |                 { font-size $[ default-font-size 3 * ] } | 
					
						
							| 
									
										
										
										
											2008-07-28 18:01:08 -04:00
										 |  |  |                 { foreground T{ rgba f 0.1 0.1 0.4 1 } } | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         { table-content-style | 
					
						
							| 
									
										
										
										
											2015-10-24 08:57:54 -04:00
										 |  |  |             H{ { wrap-margin $[ default-font-size 83 * ] } } | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |         } | 
					
						
							|  |  |  |         { list-style | 
					
						
							| 
									
										
										
										
											2015-10-24 08:57:54 -04:00
										 |  |  |             H{ | 
					
						
							|  |  |  |                 { table-gap ${ default-font-size 5/6 *
 | 
					
						
							|  |  |  |                                default-font-size 10/6 * } | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2009-02-23 22:40:17 -05:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | : $title ( string -- )
 | 
					
						
							| 
									
										
										
										
											2015-08-05 00:05:31 -04:00
										 |  |  |     [ | 
					
						
							|  |  |  |         H{ | 
					
						
							| 
									
										
										
										
											2015-10-24 08:57:54 -04:00
										 |  |  |             { font-name $ default-sans-serif-font-name } | 
					
						
							|  |  |  |             { font-size $[ default-font-size 4 * ] } | 
					
						
							| 
									
										
										
										
											2015-08-05 00:05:31 -04:00
										 |  |  |         } format | 
					
						
							|  |  |  |     ] ($block) ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-17 12:43:54 -04:00
										 |  |  | : divider-interior ( -- interior )
 | 
					
						
							|  |  |  |     os windows? [ | 
					
						
							|  |  |  |         T{ rgba f 0.25 0.25 0.25 1.0 } <solid> | 
					
						
							|  |  |  |     ] [ { | 
					
						
							|  |  |  |             T{ rgba f 0.25 0.25 0.25 1.0 } | 
					
						
							|  |  |  |             T{ rgba f 1.0 1.0 1.0 0.0 } | 
					
						
							|  |  |  |         } <gradient> | 
					
						
							|  |  |  |     ] if ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | : $divider ( -- )
 | 
					
						
							|  |  |  |     [ | 
					
						
							|  |  |  |         <gadget> | 
					
						
							| 
									
										
										
										
											2015-08-17 12:43:54 -04:00
										 |  |  |             divider-interior >>interior | 
					
						
							| 
									
										
										
										
											2015-10-24 08:57:54 -04:00
										 |  |  |             ${ default-font-size 67 * default-font-size 5/6 * } >>dim | 
					
						
							| 
									
										
										
										
											2015-08-05 00:05:31 -04:00
										 |  |  |             { 1 0 } >>orientation | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |         gadget. | 
					
						
							|  |  |  |     ] ($block) ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-17 12:43:54 -04:00
										 |  |  | : page-interior ( -- interior )
 | 
					
						
							|  |  |  |     os windows? [ | 
					
						
							|  |  |  |         T{ rgba f 0.8 0.8 1.0 1.0 } <solid> | 
					
						
							|  |  |  |     ] [ { | 
					
						
							|  |  |  |             T{ rgba f 0.8 0.8 1.0 1.0 } | 
					
						
							|  |  |  |             T{ rgba f 0.8 1.0 1.0 1.0 } | 
					
						
							|  |  |  |         } <gradient> | 
					
						
							|  |  |  |     ] if ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-05 00:05:31 -04:00
										 |  |  | : page-theme ( gadget -- gadget )
 | 
					
						
							| 
									
										
										
										
											2015-08-17 12:43:54 -04:00
										 |  |  |     page-interior >>interior ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | : <page> ( list -- gadget )
 | 
					
						
							|  |  |  |     [ | 
					
						
							|  |  |  |         stylesheet clone [ | 
					
						
							|  |  |  |             [ print-element ] with-default-style | 
					
						
							| 
									
										
										
										
											2012-07-19 03:02:47 -04:00
										 |  |  |         ] with-variables
 | 
					
						
							| 
									
										
										
										
											2015-08-05 00:05:31 -04:00
										 |  |  |     ] make-pane page-theme ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | : $slide ( element -- )
 | 
					
						
							| 
									
										
										
										
											2015-08-05 00:05:31 -04:00
										 |  |  |     unclip $title $divider $list ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-07-10 21:32:17 -04:00
										 |  |  | TUPLE: slides < book ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | : <slides> ( slides -- gadget )
 | 
					
						
							| 
									
										
										
										
											2009-01-13 03:25:59 -05:00
										 |  |  |     0 <model> slides new-book [ <page> add-gadget ] reduce ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | : change-page ( book n -- )
 | 
					
						
							| 
									
										
										
										
											2008-09-02 13:35:42 -04:00
										 |  |  |     over control-value + over children>> length rem
 | 
					
						
							| 
									
										
										
										
											2014-12-17 16:04:33 -05:00
										 |  |  |     swap set-control-value ;
 | 
					
						
							| 
									
										
										
										
											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 -- seq )
 | 
					
						
							| 
									
										
										
										
											2015-08-05 00:05:31 -04:00
										 |  |  |     first3 2 over length [a,b] [ head 3array ] with with with map ;
 | 
					
						
							| 
									
										
										
										
											2008-01-10 15:45:54 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  | SYNTAX: STRIP-TEASE: | 
					
						
							| 
									
										
										
										
											2015-08-05 00:05:31 -04:00
										 |  |  |     parse-definition strip-tease append! ;
 | 
					
						
							| 
									
										
										
										
											2008-01-10 15:45:54 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | \ slides H{ | 
					
						
							| 
									
										
										
										
											2009-03-10 17:59:33 -04:00
										 |  |  |     { T{ button-down } [ request-focus ] } | 
					
						
							| 
									
										
										
										
											2015-10-25 11:33:53 -04:00
										 |  |  |     { T{ key-down f f " " } [ next-page ] } | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |     { T{ key-down f f "DOWN" } [ next-page ] } | 
					
						
							|  |  |  |     { T{ key-down f f "UP" } [ prev-page ] } | 
					
						
							| 
									
										
										
										
											2015-10-25 11:33:53 -04:00
										 |  |  |     { T{ key-down f f "q" } [ close-window ] } | 
					
						
							|  |  |  |     { T{ key-down f f "ESC" } [ close-window ] } | 
					
						
							| 
									
										
										
										
											2015-08-05 00:09:04 -04:00
										 |  |  |     { T{ key-down f f "f" } [ toggle-fullscreen ] } | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | } set-gestures | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-24 17:05:13 -04:00
										 |  |  | : slides-window ( slides title -- )
 | 
					
						
							|  |  |  |     '[ _ <slides> _ open-window ] with-ui ;
 |