1 /*------------------------------------------------------------\
7 | Authors : Jacomme Ludovic |
10 \------------------------------------------------------------*/
13 #include <X11/Intrinsic.h>
14 #include <Xm/RowColumn.h>
16 #include <Xm/SeparatoG.h>
17 #include <Xm/Separator.h>
26 static char MenuBuffer
[MENU_BUFFER_SIZE
];
28 /*------------------------------------------------------------\
30 \------------------------------------------------------------*/
33 XyagBuildMenus(Father
, Menu
)
44 for (Counter
= 0; Menu
[Counter
].LABEL
!= NULL
; Counter
++) {
45 if (Menu
[Counter
].SEPARATOR
== True
) {
46 XtCreateManagedWidget("Separator", xmSeparatorWidgetClass
, Father
, NULL
, 0);
50 Button
= XtVaCreateManagedWidget(Menu
[Counter
].LABEL
,
51 *Menu
[Counter
].CLASS
, Father
,
53 Menu
[Counter
].MNEMONIC
,
55 Menu
[Counter
].BUTTON
= Button
;
57 if (Menu
[Counter
].SHORT_KEY
!= NULL
) {
58 XtVaSetValues(Button
, XmNaccelerator
, Menu
[Counter
].SHORT_KEY
, NULL
);
61 if (Menu
[Counter
].SHORT_KEY
!= NULL
) {
62 Text
= XmStringCreateSimple(Menu
[Counter
].SHORT_KEY_TEXT
);
63 XtVaSetValues(Button
, XmNacceleratorText
, Text
, NULL
);
67 if (Menu
[Counter
].CALLBACK
!= NULL
) {
68 XtAddCallback(Button
, XmNactivateCallback
, Menu
[Counter
].CALLBACK
, Menu
[Counter
].CALLDATA
);
71 if (Menu
[Counter
].HELP
== True
) {
72 XtSetArg(Args
[0], XmNmenuHelpWidget
, Button
);
73 XtSetValues(Father
, Args
, 1);
76 if (Menu
[Counter
].NEXT
!= NULL
) {
77 strcpy(MenuBuffer
, Menu
[Counter
].LABEL
);
78 strcat(MenuBuffer
, " Menu");
80 SubMenu
= XmCreatePulldownMenu(Father
, MenuBuffer
, Args
, 0);
82 Menu
[Counter
].MENU
= SubMenu
;
84 if (Menu
[Counter
].TEAROFF
== True
) {
85 XtVaSetValues(SubMenu
, XmNtearOffModel
, XmTEAR_OFF_ENABLED
, NULL
);
87 if (Menu
[Counter
].TITLE
== True
) {
88 Text
= XmStringCreateLtoR(MenuBuffer
, XmSTRING_DEFAULT_CHARSET
);
89 XtVaCreateManagedWidget("MenuTitle", xmLabelWidgetClass
, SubMenu
, XmNlabelString
, Text
, NULL
);
91 XtCreateManagedWidget("Separator", xmSeparatorWidgetClass
, SubMenu
, NULL
, 0);
94 XtSetArg(Args
[0], XmNsubMenuId
, SubMenu
);
95 XtSetValues(Button
, Args
, 1);
97 XyagBuildMenus(SubMenu
, Menu
[Counter
].NEXT
);
99 else Menu
[Counter
].MENU
= (Widget
) NULL
;