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\startluasetups javascript:pdfencoding
37 local ctx_verbatim = context.verbatim
38 local utfbyte = utf.byte
39 local sortedhash = table.sortedhash
40
41 ctx_verbatim("{\n")
42 for accent, group in sortedhash(characters.tex.accentmapping) do
43 for character, mapping in sortedhash(group) do
44 if character == "" then
45 character = " "
46 end
47 if accent == '"' then
48 ctx_verbatim(" '\\\\%s%s' : '\\u%04X',\n",accent,character,utfbyte(mapping))
49 else
50 ctx_verbatim(' "\\\\%s%s" : "\\u%04X",\n',accent,character,utfbyte(mapping))
51 end
52 end
53 end
54 for command, mapping in sortedhash(characters.tex.commandmapping) do
55 ctx_verbatim(' "\\\\%s" : "\\u%04X",\n',command,utfbyte(mapping))
56 end
57
58
59 ctx_verbatim("}\n")
60
61\stopluasetups
62
63
64
65\def\JavaScriptTeXAccentMapping{\luasetup{javascript:pdfencoding}}
66
67\startJSpreamble SanitizeTeXInput used later
68
69var TeXAccentMapping = \JavaScriptTeXAccentMapping
70
71function TeXReplacer(original,str) {
72 return (TeXAccentMapping[str] str) ;
73}
74
75function SanitizedTeXString(value) {
76 return (value.replace((\\..)g, TeXReplacer)) ;
77}
78
79var TeXKeyMode = 0 ;
80var TeXKeyChar = "" ;
81
82function InitializeTeXKeystroke() {
83 TeXKeyChar = "" ;
84 TeXKeyMode = 0 ;
85}
86
87function SanitizedTeXKeystroke(change) {
88 if (!event.willCommit) {
89 if (change=="\\") {
90 TeXKeyMode = 1 ;
91 return ("")
92 } else if (TeXKeyMode == 1) {
93 TeXKeyMode = 2 ;
94 TeXKeyChar = change ;
95 return ("")
96 } else if (TeXKeyMode == 2) {
97 TeXKeyMode = 0 ;
98 TeXKeyChar = "\\"TeXKeyCharchange ;
99 return (SanitizedTeXString(TeXKeyChar))
100 } else {
101 TeXKeyMode = 0 ;
102 return (change)
103 }
104 }
105}
106
107function InitializeTeXKey() {
108 InitializeTeXKeystroke() ;
109}
110
111function ConvertTeXKey() {
112 if (!event.willCommit) {
113 event.change = SanitizedTeXKeystroke(event.change) ;
114 }
115}
116
117function ConvertTeXString() {
118 event.value = SanitizedTeXString(event.value) ;
119}
120
121\stopJSpreamble
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139\startJSpreamble FieldsStates used later
140
141var visiblefield = new Array() ;
142var visiblefields = 0 ;
143
144function PresetFields() {
145 this.syncAnnotScan() ;
146}
147
148function PresetFields() {
149 this.syncAnnotScan() ;
150}
151
152function HideWhenDown() {
153 event.target.hidden = true ;
154}
155
156function HideField(Name) {
157 var v = this.getField(Name) ;
158 if (v) {
159 v.hidden = true ;
160 v.readonly = true ;
161 this.dirty = false ;
162 }
163}
164
165function DoVideField(Name, Closable) {
166 var v = this.getField(Name) ;
167 if (v) {
168 visiblefields ;
169 visiblefield[visiblefields] = Name ;
170 v.hidden = false ;
171 if (Closable) {
172 v.readonly = false ;
173 v.value = "Yes" ;
174 }
175 this.dirty = false ;
176 }
177}
178
179function VideField(Name) {
180 DoVideField(Name,false) ;
181}
182
183function VideHideField(Name) {
184 DoVideField(Name,true) ;
185}
186
187function HideFields() {
188 while (visiblefields>0) {
189 HideField(visiblefield[visiblefields]) ;
190 visiblefields ;
191 }
192}
193
194function VideFields(Name) {
195 HideFields() ;
196 VideField(Name) ;
197}
198
199function VideHideFields(Name) {
200 HideFields() ;
201 VideHideField(Name) ;
202}
203
204function ToggleHide(Name) {
205 var v = this.getField(Name) ;
206 if (v) {
207 v.hidden = !v.hidden ;
208 this.dirty = false ;
209 }
210}
211
212function FieldOn(Name) {
213 v = this.getField(Name) ;
214 if (v) {
215 v.value = "Yes" ;
216 this.dirty = false ;
217 }
218}
219
220function FieldOff(Name) {
221 var v = this.getField(Name) ;
222 if (v) {
223 v.value = "Off" ;
224 this.dirty = false ;
225 }
226}
227
228function ToggleValue(Name) {
229 var v = this.getField(Name) ;
230 if (v) {
231 if (v.value != "Off") {
232 v.value = "Off" ;
233 } else {
234 v.value = "Yes" ;
235 }
236 }
237 this.dirty = false ;
238}
239
240function ToggleRead(Name) {
241 var v = this.getField(Name);
242 if (v) {
243 v.readonly = !v.readonly ;
244 }
245}
246
247function FlipFields(Name) {
248 var Names = Name.split(",") ;
249 for (var i=0; i < Names.length; i) {
250 v = this.getField(Names[i]) ;
251 if (v) {
252 v.hidden = !v.hidden ;
253 v.value = "Yes" ;
254 }
255 }
256}
257
258function ForgetChanges() {
259 this.dirty = false ;
260}
261
262function ForgetChanges() {
263 this.dirty = false ;
264}
265
266function StepFields (Name, First, Last) {
267 for (var i = Number(First) ; i <= Number(Last) ; i) {
268 var s = Name ":" i ;
269 var v = this.getField(s) ;
270 if (v) {
271 visiblefields ;
272 visiblefield[visiblefields] = s ;
273 if (v.hidden) {
274 v.hidden = false ;
275 this.dirty = false ;
276 return ;
277 }
278 }
279 }
280}
281\stopJSpreamble
282
283\definereference[VideFields] [JS(VideFields)]
284\definereference[HideFields] [JS(HideFields)]
285\definereference[ForgetChanges][JS(ForgetChanges)]
286\definereference[StepFields] [JS(StepFields)]
287
288
289
290
291\startJSpreamble FieldStack used later
292
293function FieldName(FieldSet,i) {
294 return this.getField(FieldSet ":" i)
295}
296
297function ResetFields(FieldSet) {
298 var i = 1 ;
299 while (true) {
300 var v = FieldName(FieldSet,i) ;
301 if (!v) {
302 break ;
303 } else {
304 v.value = "Off" ;
305 }
306 i ;
307 }
308 this.dirty = false ;
309}
310
311function SetFields(FieldSet) {
312 var i = 1 ;
313 while (true) {
314 var v = FieldName(FieldSet,i) ;
315 if (!v) {
316 break ;
317 } else {
318 v.value = "Yes" ;
319 }
320 i ;
321 }
322 this.dirty = false ;
323}
324
325function SetField(FieldSet, FieldName) {
326 ResetFields(FieldSet) ;
327 var v = FieldName(FieldSet,FieldName) ;
328 if (v) {
329 v.value = "Yes" ;
330 this.dirty = false ;
331 }
332}
333
334function ResetField(FieldSet, FieldName) {
335 SetFields(FieldSet) ;
336 var v = FieldName(FieldSet,FieldName) ;
337 if (v) {
338 v.value = "Off" ;
339 this.dirty = false ;
340 }
341}
342
343function WalkField(FieldSet) {
344 var i = 1 ;
345 this.syncAnnotScan();
346 while (true) {
347 var v = FieldName(FieldSet,i) ;
348 if (v) {
349 if (v.value != "Off") {
350 v.value = "Off" ;
351 v = FieldName(FieldSet,i 1) ;
352 if (! v) {
353 v = FieldName(FieldSet,1) ;
354 } else {
355 }
356 if (v) {
357 v.value = "Yes" ;
358 }
359 break ;
360 }
361 i ;
362 } else {
363 v = FieldName(FieldSet,1) ;
364 if (v) {
365 v.value = "Yes" ;
366 }
367 break ;
368 }
369 }
370 this.dirty = false ;
371}
372
373var FieldSets = new Array() ;
374
375function DoGetCheckWalkField(FieldSet) {
376 var f = FieldSets[FieldSet]
377 if (! f) {
378 f = new Array() ;
379 f.number = 0 ;
380 f.delay = 500 ;
381 f.paused = false ;
382 f.running = false ;
383 f.name = FieldSet ;
384 f.timeout = null ;
385 f.repeat = true ;
386 f.total = 0 ;
387 f.pauseset = new Array() ;
388 FieldSets[FieldSet] = f ;
389 for (var i=1; i>0; i) {
390 var v = FieldName(FieldSet,i) ;
391 if (! v) {
392 f.total = i 1 ;
393 break ;
394 }
395 }
396 f.start = 0 ;
397 f.stop = f.total ;
398 f.pause = 0 ;
399 }
400 this.dirty = false ;
401 return f
402}
403
404function DoNextAutoWalkFieldStep(FieldSet,fieldset,n) {
405 var v = FieldName(FieldSet,fieldset.number) ;
406 if (v) {
407 if (v.value != "Off") {
408 v.value = "Off" ;
409 }
410 }
411 v = FieldName(FieldSet,n) ;
412 if (v) {
413 fieldset.number = n ;
414 v.value = "Yes" ;
415 if (fieldset.pauseset[n]) {
416 fieldset.pause = n ;
417 DoStopAutoWalkField(Fieldset) ;
418 DoStopAutoWalkField(FieldSet) ;
419 fieldset.paused = true ;
420 }
421 }
422 this.dirty = false ;
423}
424
425function DoNextAutoWalkField(FieldSet) {
426 var fieldset = DoGetCheckWalkField(FieldSet) ;
427 if (fieldset) {
428 if (fieldset.number >= fieldset.stop) {
429 if (fieldset.repeat == false) {
430 fieldset.running = false ;
431 DoStopAutoWalkField(fieldset) ;
432 } else {
433 DoNextAutoWalkFieldStep(FieldSet,fieldset,fieldset.start) ;
434 }
435 } else {
436 DoNextAutoWalkFieldStep(FieldSet,fieldset,fieldset.number1) ;
437 }
438 this.dirty = false ;
439 }
440}
441
442function DoStopAutoWalkField(FieldSet) {
443 var fieldset = DoGetCheckWalkField(FieldSet) ;
444 if (fieldset) {
445 try {
446 app.clearInterval(fieldset.timeout) ;
447 app.clearTimeOut(fieldset.timeout) ;
448 } catch (e) {
449 }
450 this.dirty = false ;
451 }
452}
453
454function DoStartAutoWalkField(FieldSet) {
455 var fieldset = DoGetCheckWalkField(FieldSet) ;
456 if (fieldset) {
457 DoStopAutoWalkField(FieldSet) ;
458 DoNextAutoWalkField(FieldSet) ;
459 fieldset.timeout = app.setInterval("DoNextAutoWalkField("FieldSet")", fieldset.delay) ;
460 this.dirty = false ;
461 }
462}
463
464function StartWalkField(FieldSet, Delay) {
465 var fieldset = DoGetCheckWalkField(FieldSet) ;
466 if (fieldset) {
467 fieldset.number = 0 ;
468 if (Delay) {
469 fieldset.delay = Delay ;
470 }
471 ResetFields(FieldSet) ;
472 DoStartAutoWalkField(FieldSet) ;
473 fieldset.running = true ;
474 fieldset.paused = false ;
475 }
476}
477
478function PauseWalkField(FieldSet) {
479 var fieldset = DoGetCheckWalkField(FieldSet) ;
480 if (fieldset) {
481 if (fieldset.running) {
482 if (fieldset.paused) {
483 DoStartAutoWalkField(FieldSet) ;
484 fieldset.paused = false ;
485 } else {
486 DoStopAutoWalkField(FieldSet) ;
487 fieldset.paused = true ;
488 }
489 }
490 }
491}
492
493function StartPauseWalkField(FieldSet, Delay, Option) {
494 var fieldset = DoGetCheckWalkField(FieldSet) ;
495 if (fieldset) {
496 if (Option == "once") {
497 fieldset.repeat = false ;
498 } else if (Option == "pause") {
499 fieldset.repeat = false ;
500 } else {
501 fieldset.repeat = true ;
502 }
503 if (Option == "pause") {
504 for (i=3; i<arguments.length; i) {
505 fieldset.pauseset[parseInt(arguments[i])] = true ;
506 }
507 if (fieldset.pause == fieldset.stop) {
508 fieldset.start = 1 ;
509 fieldset.pause = 0 ;
510 } else if (fieldset.pause > 1) {
511 fieldset.start = fieldset.pause 1 ;
512 } else {
513 fieldset.start = 1 ;
514 }
515 fieldset.stop = fieldset.total ;
516 } else {
517 var Start = arguments[3] ;
518 var Stop = arguments[4] ;
519 if (typeof Start == "string") {
520 fieldset.start = parseInt(Start) ;
521 } else if (typeof Start == "number") {
522 fieldset.start = Start ;
523 } else {
524 fieldset.start = 1 ;
525 }
526 if (typeof Stop == "string") {
527 fieldset.stop = parseInt(Stop) ;
528 } else if (typeof Stop == "number") {
529 fieldset.stop = Stop ;
530 } else {
531 fieldset.stop = fieldset.total ;
532 }
533 fieldset.pause = 0 ;
534 }
535 if (fieldset.running) {
536 if (fieldset.paused) {
537 DoStartAutoWalkField(FieldSet) ;
538 fieldset.paused = false ;
539 } else {
540 DoStopAutoWalkField(FieldSet) ;
541 fieldset.paused = true ;
542 }
543 } else {
544 fieldset.number = fieldset.start 1 ;
545 if (Delay) {
546 fieldset.delay = Delay ;
547 }
548 ResetFields(FieldSet) ;
549 DoStartAutoWalkField(FieldSet) ;
550 fieldset.running = true ;
551 fieldset.paused = false ;
552 }
553 }
554}
555
556function StopWalkField(FieldSet) {
557 var fieldset = DoGetCheckWalkField(FieldSet) ;
558 if (fieldset) {
559 DoStopAutoWalkField(FieldSet) ;
560 fieldset.running = false ;
561 fieldset.paused = false ;
562 }
563}
564
565function ResetWalkField(FieldSet) {
566 var fieldset = DoGetCheckWalkField(FieldSet) ;
567 if (fieldset) {
568 DoStopAutoWalkField(FieldSet) ;
569 fieldset.number = 0 ;
570 fieldset.running = false ;
571 fieldset.paused = false ;
572 ResetFields(FieldSet) ;
573 }
574}
575
576function PreviousWalkField(FieldSet) {
577 var fieldset = DoGetCheckWalkField(FieldSet) ;
578 if (fieldset) {
579 DoStopAutoWalkField(FieldSet) ;
580 fieldset.running = false ;
581 fieldset.paused = false ;
582 if (fieldset.number>0) {
583 var v = FieldName(FieldSet,fieldset.number) ;
584 if (v) {
585 if (v.value != "Off") {
586 v.value = "Off" ;
587 }
588 }
589 fieldset.number ;
590 v = FieldName(FieldSet,fieldset.number) ;
591 if (v) {
592 v.value = "Yes" ;
593 }
594 this.dirty = false ;
595 }
596 }
597}
598
599function NextWalkField(FieldSet) {
600 var fieldset = DoGetCheckWalkField(FieldSet) ;
601 if (fieldset) {
602 DoStopAutoWalkField(FieldSet) ;
603 fieldset.running = false ;
604 fieldset.paused = false ;
605 var f = fieldset.number 1 ;
606 var v = FieldName(FieldSet,f) ;
607 if (v) {
608 var v = FieldName(FieldSet,fieldset.number) ;
609 if (v) {
610 if (v.value != "Off") {
611 v.value = "Off" ;
612 }
613 }
614 fieldset.number ;
615 v = FieldName(FieldSet,fieldset.number) ;
616 if (v) {
617 v.value = "Yes" ;
618 }
619 this.dirty = false ;
620 }
621 }
622}
623
624function SetWalkFieldDelay(FieldSet, Delay) {
625 var fieldset = DoGetCheckWalkField(FieldSet) ;
626 if (fieldset) {
627 if (Delay) {
628 fieldset.delay = Delay ;
629 if (fieldset.running) {
630 DoStopAutoWalkField(FieldSet) ;
631 DoStartAutoWalkField(FieldSet) ;
632 }
633 }
634 }
635}
636
637\stopJSpreamble
638
639\definereference[Walk] [JS(WalkField)]
640\definereference[StartWalk] [JS(StartWalkField)]
641\definereference[StopWalk] [JS(StopWalkField)]
642\definereference[PauseWalk] [JS(PauseWalkField)]
643\definereference[ResetWalk] [JS(ResetWalkField)]
644\definereference[PreviousWalk][JS(PreviousWalkField)]
645\definereference[NextWalk] [JS(NextWalkField)]
646\definereference[SetWalkDelay][JS(SetWalkFieldDelay)]
647
648\endinput
649 |