summaryrefslogtreecommitdiff
path: root/tex/context/base/s-pre-60.tex
blob: a5198b97ca398b34cdc19b0a70d62d0572c50b10 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
%D \module
%D   [      file=s-pre-60,
%D        version=2004.03.15,
%D          title=\CONTEXT\ Style File,
%D       subtitle=Presentation Environment 60,
%D         author=Hans Hagen,
%D           date=\currentdate,
%D      copyright={PRAGMA / Hans Hagen \& Ton Otten}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.

\newcounter\StepCounter
\newcounter\StepMaximum

\useJSscripts[stp]

\startsetups[set-stepper]

    \ifnum\getvariable{stepper}{nofsteps}>\StepMaximum

        \dostepwiserecurse {\numexpr(\StepMaximum+1)} {\getvariable{stepper}{nofsteps}} {1}
          {\doifnotmode{nosteps,nostep}
             {\expanded{\defineproperty[step:\recurselevel][layer][state=stop,global=yes]}}}

        \xdef\StepMaximum{\getvariable{stepper}{nofsteps}}

    \fi

\stopsetups

\setvariables
  [stepper]
  [set=\setups{set-stepper},
   nofsteps=50]

\defineproperty[step:busy][layer][state=start]

\definereference [SetupStepper]  [JS(SetupStepper{step,\StepMaximum})]
\definereference [ResetStepper]  [JS(ResetStepper)]
\definereference [CheckStepper]  [JS(CheckStepper{\StepCounter})]
\definereference [InvokeStepper] [JS(InvokeStepper)]

\def\ResetStep {\doglobal\newcounter\StepCounter}
\def\NextStep  {\doglobal\increment \StepCounter}
\def\PrevStep  {\doglobal\decrement \StepCounter}

% todo: roll back blank

\def\StartStep
  {\ifvmode
     \scratchskip\lastskip
     \vskip-\scratchskip
     \startproperty[step:\StepCounter]%
     \vskip\scratchskip
   \else
     \startproperty[step:\StepCounter]%
   \fi
   \ignorespaces}

\def\StopStep
  {\removeunwantedspaces
   \stopproperty}

\def\StartSteps{\ResetStep\NextStep\StartStep}
\def\StopSteps {\StopStep\PrevStep}
\def\FlushStep {\StopStep\NextStep\StartStep}

\appendtoks
  \ResetStep
\to \everyaftershipout

\def\StartBusy{\startproperty[step:busy]\ignorespaces}
\def\StopBusy {\removeunwantedspaces\stopproperty}

\setupinteraction
  [openaction=SetupStepper,
   openpageaction=CheckStepper,
   closepageaction=ResetStepper]

\defineoverlay[invoke][\overlaybutton{InvokeStepper}]

\setupbackgrounds
  [text]
  [background=invoke]

\endinput