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
|
%D \module
%D [ file=java-stp,
%D version=2004.03.15,
%D title=\CONTEXT\ JavaScript Macros,
%D subtitle=Stepping,
%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.
\startJSpreamble Steps used now
% we define ocglist global, otherwise we quickly run into a memory hog (even
% out of memory in a 512 Meg machine)
% we cannot use doc_visited[this.pageNum] instead of doc_currentstep because
% of some funny side effect (i.e. dup or so)
var doc_ocglist = this.getOCGs() ;
var doc_stepname = "step" ;
var doc_currentstep = 0 ;
var doc_maxstep = 50 ;
var doc_visited = new Array() ;
var doc_busy = new Array() ;
% for some reason, this function is not seen in time (funny initialization
% order again?) ...
function SetupStepper ( layername, laststep ) {
doc_stepname = layername ;
doc_maxstep = laststep ;
for (var i=0; i<=this.numPages; i++) {
doc_visited[i] = 0 ;
doc_busy[i] = 0 ;
}
}
% so, we do it the ugly way
for (var i=0; i<=this.numPages; i++) {
doc_visited[i] = 0 ;
doc_busy[i] = 0 ;
}
function GetOCG ( name ) {
for (var i=0; i < doc_ocglist.length; i++) {
if (doc_ocglist[i].name == name) {
return doc_ocglist[i] ;
}
}
return null ;
}
function CheckBusy ( ) {
var ocg = GetOCG("step:busy") ;
if (ocg != null) {
if (doc_visited[this.pageNum]==0) {
ocg.state = true ;
} else {
if (doc_visited[this.pageNum]<doc_busy[this.pageNum]) {
ocg.state = true ;
} else {
ocg.state = false ;
}
}
}
}
function SetStepper ( maxstep, state ) {
for (var i=1; i<=maxstep; i++) {
try {
var ocg = GetOCG(doc_stepname + ':' + String(i)) ;
if (ocg != null) {
ocg.state = state ;
}
} catch (e) {
return ;
}
}
}
function CheckStepper ( maxsteps ) {
SetStepper(doc_visited[this.pageNum], true) ;
doc_busy[this.pageNum] = Number(maxsteps) ;
doc_currentstep = doc_visited[this.pageNum] ;
CheckBusy() ;
}
function ResetStepper ( ) {
SetStepper(doc_maxstep, false) ;
doc_currentstep = 0 ;
}
function InvokeStepper ( ) {
try {
% console.println("INVOKE "+doc_currentstep+" "+doc_busy[this.pageNum]) ;
if (doc_currentstep<doc_busy[this.pageNum]) {
doc_currentstep += 1 ;
doc_visited[this.pageNum] = doc_currentstep ;
var ocg = GetOCG(doc_stepname + ':' + String(doc_currentstep)) ;
if (ocg != null) {
ocg.state = true ;
}
} else {
if (this.pageNum+1==this.numPages) {
this.pageNum = 0 ;
} else {
this.pageNum += 1 ;
}
}
CheckBusy() ;
} catch (e) {
return ;
}
}
\stopJSpreamble
% \definereference [SetupStepper] [JS(SetupStepper{step,50})]
% \definereference [ResetStepper] [JS(ResetStepper)]
% \definereference [CheckStepper] [JS(CheckStepper{\StepCounter})]
% \definereference [InvokeStepper] [JS(InvokeStepper)]
\endinput
|