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{
|
2020-02-15 11:40:44 -05:00
|
|
|
{ default-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 * ] }
|
|
|
|
{ wrap-margin $[ default-font-size 92 * ] }
|
2007-09-20 18:09:08 -04:00
|
|
|
}
|
|
|
|
}
|
2020-02-15 11:40:44 -05:00
|
|
|
{ code-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 * ] }
|
2019-06-01 03:27:41 -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
|
|
|
|
|
|
|
: $divider ( -- )
|
|
|
|
[
|
|
|
|
<gadget>
|
2015-08-17 12:43:54 -04:00
|
|
|
{
|
|
|
|
T{ rgba f 0.25 0.25 0.25 1.0 }
|
|
|
|
T{ rgba f 1.0 1.0 1.0 0.0 }
|
|
|
|
} <gradient> >>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-05 00:05:31 -04:00
|
|
|
: page-theme ( gadget -- gadget )
|
2015-08-17 12:43:54 -04:00
|
|
|
{
|
|
|
|
T{ rgba f 0.8 0.8 1.0 1.0 }
|
|
|
|
T{ rgba f 0.8 1.0 1.0 1.0 }
|
|
|
|
} <gradient> >>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 ] }
|
2017-05-04 22:14:59 -04:00
|
|
|
{ T{ key-down f f "b" } [ prev-page ] }
|
2007-09-20 18:09:08 -04:00
|
|
|
{ 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 ;
|