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