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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
%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.
\startmode[paper,print]
\let\StartSteps\relax
\let\StopSteps \relax
\let\FlushStep \relax
\let\ResetStep \relax
\let\StartBusy \relax
\let\StopBusy \relax
\endinput
\stopmode
\newcounter\StepCounter
\newcounter\StepMaximum
\useJSscripts[stp]
\startsetups[set-stepper]
\ifnum\getvariable{stepper}{nofsteps}>\StepMaximum
\dostepwiserecurse {\numexpr\StepMaximum+1\relax} {\getvariable{stepper}{nofsteps}} {1} {
\doifnotmode{nosteps,nostep} {
\expanded{\defineviewerlayer[step:\recurselevel][state=stop]}
}
}
\xdef\StepMaximum{\getvariable{stepper}{nofsteps}}
\fi
\stopsetups
\setvariables
[stepper]
[set=\setups{set-stepper},
nofsteps=50]
\defineviewerlayer[step:busy][state=start]
\definereference [SetupStepper] [JS(SetupStepper{step,\StepMaximum})]
\definereference [ResetStepper] [JS(ResetStepper)]
\definereference [CheckStepper] [JS(CheckStepper{\StepCounter})]
\definereference [InvokeStepper] [JS(InvokeStepper)]
% todo: roll back blank
\def\ResetStep {\doglobal\newcounter\StepCounter}
\def\NextStep {\doglobal\increment \StepCounter}
\def\PrevStep {\doglobal\decrement \StepCounter}
\def\StepLayer {step:\StepCounter}
\def\NextStepLayer {step:\the\numexpr\StepCounter+1\relax}
\def\FirstStepLayer{step:1}
\def\StartStep {\startviewerlayer[\StepLayer]\ignorespaces}
\def\StopStep {\removeunwantedspaces\stopviewerlayer}
\def\StartSteps {\iftrialtypesetting\else\ResetStep\NextStep\StartStep\fi}
\def\StopSteps {\iftrialtypesetting\else\StopStep \PrevStep \fi}
\def\FlushStep {\iftrialtypesetting\else\StopStep \NextStep\StartStep\fi}
\def\StartBusy {\startviewerlayer[step:busy]\ignorespaces}
\def\StopBusy {\removeunwantedspaces\stopviewerlayer}
\appendtoks
\ResetStep
\to \everyaftershipout
\setupinteraction
[%openaction=SetupStepper,
closeaction=ResetStepper,
openpageaction=CheckStepper,
closepageaction=ResetStepper]
\defineoverlay[invoke][\overlaybutton{InvokeStepper}]
\setupbackgrounds
[text]
[background=invoke]
% bonus
\useMPlibrary[nav]
\definepalet
[navplus]
[attach=interactioncolor,
comment=interactioncolor]
\setupcomment
[symbol={comment-normal,comment-down},
textlayer=\StepLayer,
option=buffer,
height=\textheight,
width=\textwidth,
margin=0pt]
\setupattachments
[symbol={attach-normal,attach-down},
textlayer=\StepLayer]
%D Handy:
\def\StartLocalSteps{\ResetStep}
\def\StopLocalSteps {}
\def\StartLocalStep {\NextStep\StartStep}
\def\StopLocalStep {\StopStep}
%D used as (given some definitions):
%D
%D \starttyping
%D \StartLocalSteps
%D \startcombination[both]
%D {\StartLocalStep\placestreamlayer[left]\StopLocalStep} {}
%D {\StartLocalStep\placestreamlayer[right]\StopLocalStep} {}
%D \stopcombination
%D \StopLocalSteps
%D \stoptyping
\endinput
|