Initial version of donated sources by Avertec, 3.4p5.
[tas-yagle.git] / distrib / sources / yagle / xyagle / XMV_panel.c
1 /*------------------------------------------------------------\
2 | |
3 | Tool : XYAG |
4 | |
5 | File : Panel.c |
6 | |
7 | Authors : Jacomme Ludovic |
8 | Lester Anthony |
9 | |
10 \------------------------------------------------------------*/
11
12 #include <stdio.h>
13 #include <Xm/Xm.h>
14 #include <Xm/FileSB.h>
15 #include <Xm/SelectioB.h>
16 #include <Xm/PushBG.h>
17 #include <Xm/Text.h>
18 #include <Xm/CascadeBG.h>
19
20 #include BEH_H
21 #include BHL_H
22 #include MUT_H
23 #include MLO_H
24 #include LOG_H
25 #include BVL_H
26 #include CGV_H
27 #include XSB_H
28 #include XYA_H
29 #include XMX_H
30 #include XTB_H
31 #include XMF_H
32
33 #include "XMV_panel.h"
34 #include "XMV_view.h"
35 #include "XMX_color.h"
36
37 cgvfig_list *XyagFigureCgvTmp;
38
39 /*------------------------------------------------------------\
40 | Panel Layer |
41 \------------------------------------------------------------*/
42
43 static char *XyagViewLayerButtonBackground = "Black";
44 static char *XyagViewLayerButtonForeground = "White";
45
46 static char *XyagPanelLayerButtonName[] =
47 {
48 "All visible",
49 "All invisible",
50 "I/O Names",
51 "Gate Names",
52 "Apply",
53 "Close"
54 };
55
56 static char *XyagViewLayerCursorType[] =
57 {
58 "Invert",
59 "Xor"
60 };
61
62 static char *XyagViewLayerForceDisplay[] =
63 {
64 "Quick display",
65 "Force display"
66 };
67
68 XyagPanelButtonItem XyagViewLayerButton[] =
69 {
70 {
71 &XyagPanelLayerButtonName[0],
72 NULL, NULL, 0, 0,
73 NULL,
74 NULL,
75 0, 0,
76 1, 1,
77 CallbackLayerAllVisible,
78 (XtPointer) NULL,
79 (Widget) NULL
80 }
81 ,
82 {
83 &XyagPanelLayerButtonName[1],
84 NULL, NULL, 0, 0,
85 NULL,
86 NULL,
87 1, 0,
88 1, 1,
89 CallbackLayerAllInvisible,
90 (XtPointer) NULL,
91 (Widget) NULL
92 }
93 ,
94 {
95 &XYAG_LAYER_NAME_TABLE[0][0],
96 NULL, NULL, 0, 0,
97 &XYAG_LAYER_NAME_TABLE[0][1],
98 &XYAG_LAYER_NAME_TABLE[0][2],
99 0, 1,
100 1, 1,
101 CallbackLayerVisible,
102 (XtPointer) 0,
103 (Widget) NULL
104 }
105 ,
106 {
107 &XYAG_LAYER_NAME_TABLE[0][0],
108 NULL, NULL, 0, 0,
109 &XYAG_LAYER_NAME_TABLE[0][1],
110 &XYAG_LAYER_NAME_TABLE[0][2],
111 1, 1,
112 1, 1,
113 CallbackLayerInvisible,
114 (XtPointer) 0,
115 (Widget) NULL
116 }
117 ,
118 {
119 &XYAG_LAYER_NAME_TABLE[1][0],
120 NULL, NULL, 0, 0,
121 &XYAG_LAYER_NAME_TABLE[1][1],
122 &XYAG_LAYER_NAME_TABLE[1][2],
123 0, 2,
124 1, 1,
125 CallbackLayerVisible,
126 (XtPointer) 1,
127 (Widget) NULL
128 }
129 ,
130 {
131 &XYAG_LAYER_NAME_TABLE[1][0],
132 NULL, NULL, 0, 0,
133 &XYAG_LAYER_NAME_TABLE[1][1],
134 &XYAG_LAYER_NAME_TABLE[1][2],
135 1, 2,
136 1, 1,
137 CallbackLayerInvisible,
138 (XtPointer) 1,
139 (Widget) NULL
140 }
141 ,
142 {
143 &XYAG_LAYER_NAME_TABLE[2][0],
144 NULL, NULL, 0, 0,
145 &XYAG_LAYER_NAME_TABLE[2][1],
146 &XYAG_LAYER_NAME_TABLE[2][2],
147 0, 3,
148 1, 1,
149 CallbackLayerVisible,
150 (XtPointer) 2,
151 (Widget) NULL
152 }
153 ,
154 {
155 &XYAG_LAYER_NAME_TABLE[2][0],
156 NULL, NULL, 0, 0,
157 &XYAG_LAYER_NAME_TABLE[2][1],
158 &XYAG_LAYER_NAME_TABLE[2][2],
159 1, 3,
160 1, 1,
161 CallbackLayerInvisible,
162 (XtPointer) 2,
163 (Widget) NULL
164 }
165 ,
166 {
167 &XYAG_LAYER_NAME_TABLE[3][0],
168 NULL, NULL, 0, 0,
169 &XYAG_LAYER_NAME_TABLE[3][1],
170 &XYAG_LAYER_NAME_TABLE[3][2],
171 0, 4,
172 1, 1,
173 CallbackLayerVisible,
174 (XtPointer) 3,
175 (Widget) NULL
176 }
177 ,
178 {
179 &XYAG_LAYER_NAME_TABLE[3][0],
180 NULL, NULL, 0, 0,
181 &XYAG_LAYER_NAME_TABLE[3][1],
182 &XYAG_LAYER_NAME_TABLE[3][2],
183 1, 4,
184 1, 1,
185 CallbackLayerInvisible,
186 (XtPointer) 3,
187 (Widget) NULL
188 }
189 ,
190 {
191 &XYAG_LAYER_NAME_TABLE[4][0],
192 NULL, NULL, 0, 0,
193 &XYAG_LAYER_NAME_TABLE[4][1],
194 &XYAG_LAYER_NAME_TABLE[4][2],
195 0, 5,
196 1, 1,
197 CallbackLayerVisible,
198 (XtPointer) 4,
199 (Widget) NULL
200 }
201 ,
202 {
203 &XYAG_LAYER_NAME_TABLE[4][0],
204 NULL, NULL, 0, 0,
205 &XYAG_LAYER_NAME_TABLE[4][1],
206 &XYAG_LAYER_NAME_TABLE[4][2],
207 1, 5,
208 1, 1,
209 CallbackLayerInvisible,
210 (XtPointer) 4,
211 (Widget) NULL
212 }
213 ,
214 {
215 &XyagPanelLayerButtonName[2],
216 NULL, NULL, 0, 0,
217 &XyagViewLayerButtonForeground,
218 &XyagViewLayerButtonBackground,
219 0, 6,
220 1, 1,
221 CallbackNameVisible,
222 (XtPointer) 0,
223 (Widget) NULL
224 }
225 ,
226 {
227 &XyagPanelLayerButtonName[2],
228 NULL, NULL, 0, 0,
229 &XyagViewLayerButtonForeground,
230 &XyagViewLayerButtonBackground,
231 1, 6,
232 1, 1,
233 CallbackNameInvisible,
234 (XtPointer) 0,
235 (Widget) NULL
236 }
237 ,
238 {
239 &XyagPanelLayerButtonName[3],
240 NULL, NULL, 0, 0,
241 &XyagViewLayerButtonForeground,
242 &XyagViewLayerButtonBackground,
243 0, 7,
244 1, 1,
245 CallbackNameVisible,
246 (XtPointer) 1,
247 (Widget) NULL
248 }
249 ,
250 {
251 &XyagPanelLayerButtonName[3],
252 NULL, NULL, 0, 0,
253 &XyagViewLayerButtonForeground,
254 &XyagViewLayerButtonBackground,
255 1, 7,
256 1, 1,
257 CallbackNameInvisible,
258 (XtPointer) 1,
259 (Widget) NULL
260 }
261 ,
262 {
263 &XyagViewLayerCursorType[0],
264 NULL, NULL, 0, 0,
265 NULL,
266 NULL,
267 0, 8,
268 1, 1,
269 CallbackLayerCursor,
270 (XtPointer) NULL,
271 (Widget) NULL
272 }
273 ,
274 {
275 &XyagViewLayerForceDisplay[0],
276 NULL, NULL, 0, 0,
277 NULL,
278 NULL,
279 1, 8,
280 1, 1,
281 CallbackLayerForceDisplay,
282 (XtPointer) NULL,
283 (Widget) NULL
284 }
285 ,
286 {
287 &XyagPanelLayerButtonName[4],
288 NULL, NULL, 0, 0,
289 NULL,
290 NULL,
291 0, 9,
292 1, 1,
293 CallbackLayerApply,
294 (XtPointer) NULL,
295 (Widget) NULL
296 }
297 ,
298 {
299 &XyagPanelLayerButtonName[5],
300 NULL, NULL, 0, 0,
301 NULL,
302 NULL,
303 1, 9,
304 1, 1,
305 CallbackCloseLayer,
306 (XtPointer) NULL,
307 (Widget) NULL
308 }
309 ,
310 {
311 0, NULL, NULL, 0, 0, NULL, NULL, 0, 0, 0, 0, NULL, NULL, NULL
312 }
313 };
314
315 XyagPanelItem XyagViewLayerPanel =
316 {
317 "Layer",
318 1,
319 0,
320 XYAG_VIEW_LAYER_X,
321 XYAG_VIEW_LAYER_Y,
322 200,
323 250,
324 2,
325 10,
326 (Widget) NULL,
327 (Widget) NULL,
328 (Widget) NULL,
329 (Widget) NULL,
330 XyagViewLayerButton
331 };
332
333 int XyagViewLayerDefaultValues[5] =
334 {
335 XYAG_VIEW_LAYER_X,
336 XYAG_VIEW_LAYER_Y,
337 200, 250, 0
338 };
339
340 /*------------------------------------------------------------\
341 | Panel Message |
342 \------------------------------------------------------------*/
343
344 static char *XyagPanelMessageButtonName[] =
345 {
346 "Text",
347 "Close"
348 };
349
350 XyagPanelButtonItem XyagViewMessageButton[] =
351 {
352 {
353 &XyagPanelMessageButtonName[0],
354 "Nothing", NULL, 0, 0,
355 NULL,
356 NULL,
357 0, 0,
358 8, 9,
359 NULL,
360 (XtPointer) NULL,
361 (Widget) NULL
362 }
363 ,
364 {
365 &XyagPanelMessageButtonName[1],
366 NULL, NULL, 0, 0,
367 NULL,
368 NULL,
369 3, 9,
370 2, 1,
371 CallbackViewCloseMessage,
372 (XtPointer) NULL,
373 (Widget) NULL
374 }
375 ,
376 {
377 0, NULL, NULL, 0, 0, NULL, NULL, 0, 0, 0, 0, NULL, NULL, NULL
378 }
379 };
380
381 XyagPanelItem XyagViewMessagePanel =
382 {
383 "Message",
384 1,
385 0,
386 XYAG_VIEW_MESSAGE_X,
387 XYAG_VIEW_MESSAGE_Y,
388 360,
389 250,
390 8,
391 10,
392 (Widget) NULL,
393 (Widget) NULL,
394 (Widget) NULL,
395 (Widget) NULL,
396 XyagViewMessageButton
397 };
398
399 int XyagViewMessageDefaultValues[5] =
400 {
401 XYAG_VIEW_MESSAGE_X,
402 XYAG_VIEW_MESSAGE_Y,
403 360, 250, 0
404 };
405
406
407 /*------------------------------------------------------------\
408 | Functions |
409 \------------------------------------------------------------*/
410
411 /*------------------------------------------------------------\
412 | Zoom Callback |
413 \------------------------------------------------------------*/
414
415 /*------------------------------------------------------------\
416 | CallbackZoomRefresh |
417 \------------------------------------------------------------*/
418
419 void
420 CallbackZoomRefresh(MyWidget, ClientData, CallData)
421 Widget MyWidget;
422 caddr_t ClientData;
423 caddr_t CallData;
424 {
425 XyagZoomRefresh();
426 }
427
428 /*------------------------------------------------------------\
429 | CallbackZoomPrevious |
430 \------------------------------------------------------------*/
431
432 void
433 CallbackZoomPrevious(MyWidget, ClientData, CallData)
434 Widget MyWidget;
435 caddr_t ClientData;
436 caddr_t CallData;
437 {
438 XyagZoomUndo();
439 }
440
441 /*------------------------------------------------------------\
442 | CallbackZoomLess |
443 \------------------------------------------------------------*/
444
445 void
446 CallbackZoomLess(MyWidget, ClientData, CallData)
447 Widget MyWidget;
448 caddr_t ClientData;
449 caddr_t CallData;
450 {
451 XyagZoomLess();
452 }
453
454 /*------------------------------------------------------------\
455 | CallbackZoomMore |
456 \------------------------------------------------------------*/
457
458 void
459 CallbackZoomMore(MyWidget, ClientData, CallData)
460 Widget MyWidget;
461 caddr_t ClientData;
462 caddr_t CallData;
463 {
464 XyagZoomMore();
465 }
466
467 /*------------------------------------------------------------\
468 | CallbackZoomSet |
469 \------------------------------------------------------------*/
470
471 void
472 CallbackZoomSet(MyWidget, ClientData, CallData)
473 Widget MyWidget;
474 caddr_t ClientData;
475 caddr_t CallData;
476 {
477 XyagZoomSet();
478 }
479
480 /*------------------------------------------------------------\
481 | CallbackZoomIn |
482 \------------------------------------------------------------*/
483
484 void
485 CallbackZoomIn(MyWidget, ClientData, CallData)
486 Widget MyWidget;
487 caddr_t ClientData;
488 caddr_t CallData;
489 {
490 XyagChangeEditMode(XYAG_ZOOM_IN);
491 }
492
493 /*------------------------------------------------------------\
494 | CallbackZoomCenter |
495 \------------------------------------------------------------*/
496
497 void
498 CallbackZoomCenter(MyWidget, ClientData, CallData)
499 Widget MyWidget;
500 caddr_t ClientData;
501 caddr_t CallData;
502 {
503 XyagChangeEditMode(XYAG_ZOOM_CENTER);
504 }
505
506 /*------------------------------------------------------------\
507 | CallbackZoomPan |
508 \------------------------------------------------------------*/
509
510 void
511 CallbackZoomPan(MyWidget, ClientData, CallData)
512 Widget MyWidget;
513 caddr_t ClientData;
514 caddr_t CallData;
515 {
516 XyagChangeEditMode(XYAG_ZOOM_PAN);
517 }
518
519 /*------------------------------------------------------------\
520 | CallbackZoomFit |
521 \------------------------------------------------------------*/
522
523 void
524 CallbackZoomFit(MyWidget, ClientData, CallData)
525 Widget MyWidget;
526 caddr_t ClientData;
527 caddr_t CallData;
528 {
529 XyagZoomFit();
530 }
531
532 /*------------------------------------------------------------\
533 | Callback For Layer |
534 \------------------------------------------------------------*/
535
536 /*------------------------------------------------------------\
537 | CallbackLayerAllVisible |
538 \------------------------------------------------------------*/
539
540 void
541 CallbackLayerAllVisible(MyWidget, ClientData, CallData)
542 Widget MyWidget;
543 caddr_t ClientData;
544 caddr_t CallData;
545 {
546 XyagLayerAllVisible();
547 }
548
549 /*------------------------------------------------------------\
550 | CallbackLayerAllInvisible |
551 \------------------------------------------------------------*/
552
553 void
554 CallbackLayerAllInvisible(MyWidget, ClientData, CallData)
555 Widget MyWidget;
556 caddr_t ClientData;
557 caddr_t CallData;
558 {
559 XyagLayerAllInvisible();
560 }
561
562 /*------------------------------------------------------------\
563 | CallbackLayerVisible |
564 \------------------------------------------------------------*/
565
566 void
567 CallbackLayerVisible(MyWidget, ClientData, CallData)
568 Widget MyWidget;
569 caddr_t ClientData;
570 caddr_t CallData;
571 {
572 if (XYAG_ACTIVE_LAYER_TABLE[(int) ClientData] == 0) {
573 XyagSetLayerVisible((int) ClientData);
574 }
575 }
576
577 /*------------------------------------------------------------\
578 | CallbackLayerInvisible |
579 \------------------------------------------------------------*/
580
581 void
582 CallbackLayerInvisible(MyWidget, ClientData, CallData)
583 Widget MyWidget;
584 caddr_t ClientData;
585 caddr_t CallData;
586 {
587 if (XYAG_ACTIVE_LAYER_TABLE[(int) ClientData]) {
588 XyagSetLayerInvisible((int) ClientData);
589 }
590 }
591
592 /*------------------------------------------------------------\
593 | CallbackNameVisible |
594 \------------------------------------------------------------*/
595
596 void
597 CallbackNameVisible(MyWidget, ClientData, CallData)
598 Widget MyWidget;
599 caddr_t ClientData;
600 caddr_t CallData;
601 {
602 if (XYAG_ACTIVE_NAME_TABLE[(int) ClientData] == 0) {
603 XyagSetNameVisible(ClientData);
604 }
605 }
606
607 /*------------------------------------------------------------\
608 | CallbackNameInvisible |
609 \------------------------------------------------------------*/
610
611 void
612 CallbackNameInvisible(MyWidget, ClientData, CallData)
613 Widget MyWidget;
614 caddr_t ClientData;
615 caddr_t CallData;
616 {
617 if (XYAG_ACTIVE_NAME_TABLE[(int) ClientData]) {
618 XyagSetNameInvisible(ClientData);
619 }
620 }
621
622 /*------------------------------------------------------------\
623 | CallbackLayerCursor |
624 \------------------------------------------------------------*/
625
626 void
627 CallbackLayerCursor(MyWidget, ClientData, CallData)
628 Widget MyWidget;
629 caddr_t ClientData;
630 caddr_t CallData;
631 {
632 XYAG_XOR_CURSOR = !XYAG_XOR_CURSOR;
633 XyagChangeCursor(XYAG_XOR_CURSOR);
634
635 XyagChangeCursorContext();
636 }
637
638 /*------------------------------------------------------------\
639 | CallbackLayerForceDisplay |
640 \------------------------------------------------------------*/
641
642 void
643 CallbackLayerForceDisplay(MyWidget, ClientData, CallData)
644 Widget MyWidget;
645 caddr_t ClientData;
646 caddr_t CallData;
647 {
648 XYAG_FORCE_DISPLAY = !XYAG_FORCE_DISPLAY;
649 XyagChangeForceDisplay(XYAG_FORCE_DISPLAY);
650 }
651
652
653 /*------------------------------------------------------------\
654 | XyagChangeCursor |
655 \------------------------------------------------------------*/
656
657 void
658 XyagChangeCursor(Type)
659 char Type;
660 {
661 int Pos;
662 XmString Label;
663
664 Pos = 2 + ((XYAG_MAX_LAYER + XYAG_MAX_ACTIVE_NAME) << 1);
665 Label = XmStringCreateSimple(XyagViewLayerCursorType[(int)Type]);
666
667 XtVaSetValues(XyagViewLayerButton[Pos].BUTTON,
668 XmNlabelString, Label,
669 XmNresizable, False,
670 NULL);
671
672 XmStringFree(Label);
673 }
674
675 /*------------------------------------------------------------\
676 | XyagChangeForceDisplay |
677 \------------------------------------------------------------*/
678
679 void
680 XyagChangeForceDisplay(Index)
681 char Index;
682 {
683 int Pos;
684 XmString Label;
685
686 Pos = 3 + ((XYAG_MAX_LAYER + XYAG_MAX_ACTIVE_NAME) << 1);
687 Label = XmStringCreateSimple(XyagViewLayerForceDisplay[(int)Index]);
688
689 XtVaSetValues(XyagViewLayerButton[Pos].BUTTON,
690 XmNlabelString, Label,
691 XmNresizable, False,
692 NULL);
693
694 XmStringFree(Label);
695 }
696
697
698 /*------------------------------------------------------------\
699 | CallbackLayerApply |
700 \------------------------------------------------------------*/
701
702 void
703 CallbackLayerApply(MyWidget, ClientData, CallData)
704 Widget MyWidget;
705 caddr_t ClientData;
706 caddr_t CallData;
707 {
708 XyagZoomRefresh();
709 }
710
711 /*------------------------------------------------------------\
712 | CallbackCloseLayer |
713 \------------------------------------------------------------*/
714
715 void
716 CallbackCloseLayer(MyWidget, ClientData, CallData)
717 Widget MyWidget;
718 caddr_t ClientData;
719 caddr_t CallData;
720 {
721 XyagExitPanel(&XyagViewLayerPanel);
722 }
723
724 /*------------------------------------------------------------\
725 | XyagSetLayerVisible |
726 \------------------------------------------------------------*/
727
728 void
729 XyagSetLayerVisible(Layer)
730 int Layer;
731 {
732 int Index;
733 char *Background;
734 char *Foreground;
735
736 Index = (Layer << 1) + 2;
737
738 if (XyagViewLayerButton[Index].BUTTON != NULL) {
739 XYAG_ACTIVE_LAYER_TABLE[Layer] = 1;
740
741 XtVaSetValues(XyagViewLayerButton[Index + 1].BUTTON,
742 XtVaTypedArg,
743 XmNbackground,
744 XmRString,
745 XYAG_BLACK_COLOR_NAME,
746 strlen(XYAG_BLACK_COLOR_NAME) + 1,
747 NULL
748 );
749
750 XtVaSetValues(XyagViewLayerButton[Index + 1].BUTTON,
751 XtVaTypedArg,
752 XmNforeground,
753 XmRString,
754 XYAG_BLACK_COLOR_NAME,
755 strlen(XYAG_BLACK_COLOR_NAME) + 1,
756 NULL
757 );
758
759 Background = *XyagViewLayerButton[Index].BACKGROUND;
760 Foreground = *XyagViewLayerButton[Index].FOREGROUND;
761
762 XtVaSetValues(XyagViewLayerButton[Index].BUTTON,
763 XtVaTypedArg,
764 XmNbackground,
765 XmRString,
766 Background,
767 strlen(Background) + 1,
768 NULL
769 );
770
771 XtVaSetValues(XyagViewLayerButton[Index].BUTTON,
772 XtVaTypedArg,
773 XmNforeground,
774 XmRString,
775 Foreground,
776 strlen(Foreground) + 1,
777 NULL
778 );
779 }
780 }
781
782 /*------------------------------------------------------------\
783 | XyagSetNameVisible |
784 \------------------------------------------------------------*/
785
786 void
787 XyagSetNameVisible(Name)
788 int Name;
789 {
790 int Index;
791 char *Background;
792 char *Foreground;
793
794 Index = 2 + ((XYAG_MAX_LAYER + Name) << 1);
795
796 if (XyagViewLayerButton[Index].BUTTON != NULL) {
797 XYAG_ACTIVE_NAME_TABLE[Name] = 1;
798
799 XtVaSetValues(XyagViewLayerButton[Index + 1].BUTTON,
800 XtVaTypedArg,
801 XmNbackground,
802 XmRString,
803 XYAG_BLACK_COLOR_NAME,
804 strlen(XYAG_BLACK_COLOR_NAME) + 1,
805 NULL
806 );
807
808 XtVaSetValues(XyagViewLayerButton[Index + 1].BUTTON,
809 XtVaTypedArg,
810 XmNforeground,
811 XmRString,
812 XYAG_BLACK_COLOR_NAME,
813 strlen(XYAG_BLACK_COLOR_NAME) + 1,
814 NULL
815 );
816
817 Background = *XyagViewLayerButton[Index].BACKGROUND;
818 Foreground = *XyagViewLayerButton[Index].FOREGROUND;
819
820 XtVaSetValues(XyagViewLayerButton[Index].BUTTON,
821 XtVaTypedArg,
822 XmNbackground,
823 XmRString,
824 Background,
825 strlen(Background) + 1,
826 NULL
827 );
828
829 XtVaSetValues(XyagViewLayerButton[Index].BUTTON,
830 XtVaTypedArg,
831 XmNforeground,
832 XmRString,
833 Foreground,
834 strlen(Foreground) + 1,
835 NULL
836 );
837 }
838 }
839
840 /*------------------------------------------------------------\
841 | XyagSetLayerInvisible |
842 \------------------------------------------------------------*/
843
844 void
845 XyagSetLayerInvisible(Layer)
846 int Layer;
847 {
848 int Index;
849 char *Background;
850 char *Foreground;
851
852 Index = 3 + (Layer << 1);
853
854 if (XyagViewLayerButton[Index].BUTTON != NULL) {
855 XYAG_ACTIVE_LAYER_TABLE[Layer] = 0;
856
857 XtVaSetValues(XyagViewLayerButton[Index - 1].BUTTON,
858 XtVaTypedArg,
859 XmNbackground,
860 XmRString,
861 XYAG_BLACK_COLOR_NAME,
862 strlen(XYAG_BLACK_COLOR_NAME) + 1,
863 NULL
864 );
865
866 XtVaSetValues(XyagViewLayerButton[Index - 1].BUTTON,
867 XtVaTypedArg,
868 XmNforeground,
869 XmRString,
870 XYAG_BLACK_COLOR_NAME,
871 strlen(XYAG_BLACK_COLOR_NAME) + 1,
872 NULL
873 );
874
875 Background = *XyagViewLayerButton[Index].BACKGROUND;
876 Foreground = *XyagViewLayerButton[Index].FOREGROUND;
877
878 XtVaSetValues(XyagViewLayerButton[Index].BUTTON,
879 XtVaTypedArg,
880 XmNbackground,
881 XmRString,
882 Background,
883 strlen(Background) + 1,
884 NULL
885 );
886
887 XtVaSetValues(XyagViewLayerButton[Index].BUTTON,
888 XtVaTypedArg,
889 XmNforeground,
890 XmRString,
891 Foreground,
892 strlen(Foreground) + 1,
893 NULL
894 );
895 }
896 }
897
898 /*------------------------------------------------------------\
899 | XyagSetNameInvisible |
900 \------------------------------------------------------------*/
901
902 void
903 XyagSetNameInvisible(Name)
904 int Name;
905 {
906 int Index;
907 char *Background;
908 char *Foreground;
909
910 Index = 3 + ((XYAG_MAX_LAYER + Name) << 1);
911
912 if (XyagViewLayerButton[Index].BUTTON != NULL) {
913 XYAG_ACTIVE_NAME_TABLE[Name] = 0;
914
915 XtVaSetValues(XyagViewLayerButton[Index - 1].BUTTON,
916 XtVaTypedArg,
917 XmNbackground,
918 XmRString,
919 XYAG_BLACK_COLOR_NAME,
920 strlen(XYAG_BLACK_COLOR_NAME) + 1,
921 NULL
922 );
923
924 XtVaSetValues(XyagViewLayerButton[Index - 1].BUTTON,
925 XtVaTypedArg,
926 XmNforeground,
927 XmRString,
928 XYAG_BLACK_COLOR_NAME,
929 strlen(XYAG_BLACK_COLOR_NAME) + 1,
930 NULL
931 );
932
933 Background = *XyagViewLayerButton[Index].BACKGROUND;
934 Foreground = *XyagViewLayerButton[Index].FOREGROUND;
935
936 XtVaSetValues(XyagViewLayerButton[Index].BUTTON,
937 XtVaTypedArg,
938 XmNbackground,
939 XmRString,
940 Background,
941 strlen(Background) + 1,
942 NULL
943 );
944
945 XtVaSetValues(XyagViewLayerButton[Index].BUTTON,
946 XtVaTypedArg,
947 XmNforeground,
948 XmRString,
949 Foreground,
950 strlen(Foreground) + 1,
951 NULL
952 );
953 }
954 }
955
956 /*------------------------------------------------------------\
957 | XyagLayerAllVisible |
958 \------------------------------------------------------------*/
959
960 void
961 XyagLayerAllVisible()
962 {
963 int Index;
964
965 for (Index = 0; Index < XYAG_MAX_LAYER; Index++) {
966 XyagSetLayerVisible(Index);
967 }
968
969 for (Index = 0; Index < XYAG_MAX_ACTIVE_NAME; Index++) {
970 XyagSetNameVisible(Index);
971 }
972 }
973
974 /*------------------------------------------------------------\
975 | XyagInitializeLayer |
976 \------------------------------------------------------------*/
977
978 void
979 XyagInitializeLayer()
980 {
981 int Index;
982
983 for (Index = 0; Index < XYAG_MAX_LAYER; Index++) {
984 if (XYAG_ACTIVE_LAYER_TABLE[Index] == 0) {
985 XyagSetLayerInvisible(Index);
986 }
987 else {
988 XyagSetLayerVisible(Index);
989 }
990 }
991
992 for (Index = 0; Index < XYAG_MAX_ACTIVE_NAME; Index++) {
993 if (XYAG_ACTIVE_NAME_TABLE[Index] == 0) {
994 XyagSetNameInvisible(Index);
995 }
996 else {
997 XyagSetNameVisible(Index);
998 }
999 }
1000 }
1001
1002 /*------------------------------------------------------------\
1003 | XyagLayerAllInvisible |
1004 \------------------------------------------------------------*/
1005
1006 void
1007 XyagLayerAllInvisible()
1008 {
1009 int Index;
1010
1011 for (Index = 0; Index < XYAG_MAX_LAYER; Index++) {
1012 XyagSetLayerInvisible(Index);
1013 }
1014
1015 for (Index = 0; Index < XYAG_MAX_ACTIVE_NAME; Index++) {
1016 XyagSetNameInvisible(Index);
1017 }
1018 }
1019
1020 /*------------------------------------------------------------\
1021 | Callbacks For Message |
1022 \------------------------------------------------------------*/
1023
1024 void
1025 CallbackViewCloseMessage(MyWidget, ClientData, CallData)
1026 Widget MyWidget;
1027 caddr_t ClientData;
1028 caddr_t CallData;
1029 {
1030 XyagExitPanel(&XyagViewMessagePanel);
1031 }
1032
1033 void XyagDisplayMessage()
1034 {
1035 char *Message;
1036
1037 Message = XyagGetErrorMessage();
1038
1039 if (Message != (char *) NULL) {
1040 XmTextSetString(XyagViewMessageButton[0].BUTTON, Message);
1041
1042 XyagEnterPanel(&XyagViewMessagePanel);
1043 }
1044 else {
1045 XmTextSetString(XyagViewMessageButton[0].BUTTON, "");
1046 }
1047 }
1048
1049