Initial version of donated sources by Avertec, 3.4p5.
[tas-yagle.git] / distrib / sources / yagle / xyagle / XTB_menu.c
1 /*------------------------------------------------------------\
2 | |
3 | Tool : XYAG |
4 | |
5 | File : menu.c |
6 | |
7 | Authors : Jacomme Ludovic |
8 | Lester Anthony |
9 | |
10 \------------------------------------------------------------*/
11
12 #include <Xm/Xm.h>
13 #include <X11/Intrinsic.h>
14 #include <Xm/RowColumn.h>
15 #include <Xm/Label.h>
16 #include <Xm/SeparatoG.h>
17 #include <Xm/Separator.h>
18
19 #include MUT_H
20 #include MLO_H
21 #include XTB_H
22 #include XSB_H
23
24 #include "XTB_menu.h"
25
26 static char MenuBuffer[MENU_BUFFER_SIZE];
27
28 /*------------------------------------------------------------\
29 | XyagBuildMenus |
30 \------------------------------------------------------------*/
31
32 void
33 XyagBuildMenus(Father, Menu)
34 Widget Father;
35 XyagMenuItem *Menu;
36 {
37
38 Widget Button;
39 Widget SubMenu;
40 XmString Text;
41 Arg Args[2];
42 int Counter;
43
44 for (Counter = 0; Menu[Counter].LABEL != NULL; Counter++) {
45 if (Menu[Counter].SEPARATOR == True) {
46 XtCreateManagedWidget("Separator", xmSeparatorWidgetClass, Father, NULL, 0);
47 continue;
48 }
49
50 Button = XtVaCreateManagedWidget(Menu[Counter].LABEL,
51 *Menu[Counter].CLASS, Father,
52 XmNmnemonic,
53 Menu[Counter].MNEMONIC,
54 NULL);
55 Menu[Counter].BUTTON = Button;
56
57 if (Menu[Counter].SHORT_KEY != NULL) {
58 XtVaSetValues(Button, XmNaccelerator, Menu[Counter].SHORT_KEY, NULL);
59 }
60
61 if (Menu[Counter].SHORT_KEY != NULL) {
62 Text = XmStringCreateSimple(Menu[Counter].SHORT_KEY_TEXT);
63 XtVaSetValues(Button, XmNacceleratorText, Text, NULL);
64 XmStringFree(Text);
65 }
66
67 if (Menu[Counter].CALLBACK != NULL) {
68 XtAddCallback(Button, XmNactivateCallback, Menu[Counter].CALLBACK, Menu[Counter].CALLDATA);
69 }
70
71 if (Menu[Counter].HELP == True) {
72 XtSetArg(Args[0], XmNmenuHelpWidget, Button);
73 XtSetValues(Father, Args, 1);
74 }
75
76 if (Menu[Counter].NEXT != NULL) {
77 strcpy(MenuBuffer, Menu[Counter].LABEL);
78 strcat(MenuBuffer, " Menu");
79
80 SubMenu = XmCreatePulldownMenu(Father, MenuBuffer, Args, 0);
81
82 Menu[Counter].MENU = SubMenu;
83
84 if (Menu[Counter].TEAROFF == True) {
85 XtVaSetValues(SubMenu, XmNtearOffModel, XmTEAR_OFF_ENABLED, NULL);
86 }
87 if (Menu[Counter].TITLE == True) {
88 Text = XmStringCreateLtoR(MenuBuffer, XmSTRING_DEFAULT_CHARSET);
89 XtVaCreateManagedWidget("MenuTitle", xmLabelWidgetClass, SubMenu, XmNlabelString, Text, NULL);
90 XmStringFree(Text);
91 XtCreateManagedWidget("Separator", xmSeparatorWidgetClass, SubMenu, NULL, 0);
92 }
93
94 XtSetArg(Args[0], XmNsubMenuId, SubMenu);
95 XtSetValues(Button, Args, 1);
96
97 XyagBuildMenus(SubMenu, Menu[Counter].NEXT);
98 }
99 else Menu[Counter].MENU = (Widget) NULL;
100 }
101 }