00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 static char *source_file = __FILE__;
00038
00039
00040 #include <Xm/Xm.h>
00041 #include <Xm/CascadeBG.h>
00042 #include <Xm/Form.h>
00043 #include <Xm/Label.h>
00044 #include <Xm/RowColumn.h>
00045 #include <Xm/ToggleBG.h>
00046 #include "motifutil.h"
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057 void
00058 Quit_Callback (
00059 Widget w,
00060 XtPointer client_data,
00061 XtPointer call_data )
00062 {
00063 XtCloseDisplay ( XtDisplay(w) );
00064 exit (0);
00065 }
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077 void
00078 Unmanage_Callback (
00079 Widget w,
00080 XtPointer form,
00081 XtPointer call_data )
00082 {
00083 XtUnmanageChild ( (Widget) form );
00084 }
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099 Widget
00100 Build_Radio_Box (
00101 Widget parent,
00102 char *title,
00103 char *name,
00104 Arg wargs[],
00105 int nargs,
00106 char *labels[],
00107 int nlabels )
00108 {
00109 Widget form = NULL;
00110 Widget title_lab, radio_box, radio_button;
00111 char namebuf[512];
00112 int i;
00113
00114 if ( title != NULL ) {
00115
00116 (void) strcpy ( namebuf, name );
00117 (void) strcat ( namebuf, ".form" );
00118 form = XtCreateManagedWidget (
00119 namebuf, xmFormWidgetClass, parent, wargs, nargs );
00120 title_lab = XtCreateManagedWidget (
00121 title, xmLabelGadgetClass, form, NULL, 0 );
00122 nargs = 0;
00123 XtSetArg ( wargs[nargs], XmNtopAttachment, XmATTACH_WIDGET );
00124 nargs++;
00125 XtSetArg ( wargs[nargs], XmNtopWidget, title_lab );
00126 nargs++;
00127 parent = form;
00128 }
00129
00130 XtSetArg ( wargs[nargs], XmNentryClass,
00131 xmToggleButtonGadgetClass ); nargs++;
00132 radio_box = XmCreateRadioBox ( parent, name, wargs, nargs );
00133 XtManageChild ( radio_box );
00134 for (i=0; i < nlabels; i++) {
00135 radio_button = XtCreateManagedWidget (
00136 labels[i],
00137 xmToggleButtonGadgetClass,
00138 radio_box,
00139 NULL,
00140 0);
00141 }
00142
00143 return form ? form : radio_box;
00144 }
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161 Widget
00162 Build_Pulldown_Menu (
00163 Widget parent,
00164 char *menu_title,
00165 char menu_mnemonic,
00166 MENU_ITEM *items )
00167 {
00168 Widget PullDown, cascade, widget;
00169 int i;
00170 XmString str;
00171
00172
00173 PullDown = XmCreatePulldownMenu ( parent, "_pulldown", NULL, 0 );
00174
00175
00176 str = XmStringCreateSimple ( menu_title );
00177 cascade = XtVaCreateManagedWidget (
00178 menu_title, xmCascadeButtonGadgetClass, parent,
00179 XmNsubMenuId, PullDown,
00180 XmNlabelString, str,
00181 XmNmnemonic, menu_mnemonic,
00182 NULL );
00183 XmStringFree ( str );
00184
00185
00186 for ( i = 0; MITEM_label(items,i) != NULL; i++ ) {
00187
00188
00189
00190
00191 if ( MITEM_subitems(items,i) != NULL ) {
00192 widget = Build_Pulldown_Menu ( PullDown,
00193 MITEM_label(items,i),
00194 MITEM_mnemonic(items,i),
00195 MITEM_subitems(items,i) );
00196 } else {
00197 widget = XtVaCreateManagedWidget (
00198 MITEM_label(items,i),
00199 *MITEM_class(items,i),
00200 PullDown, NULL );
00201 }
00202
00203
00204 if ( MITEM_mnemonic(items,i) != NULL ) {
00205 XtVaSetValues ( widget,
00206 XmNmnemonic, MITEM_mnemonic(items,i),
00207 NULL );
00208 }
00209
00210
00211
00212
00213
00214 if ( MITEM_accelerator(items,i) != NULL ) {
00215 str = XmStringCreateSimple ( MITEM_accel_text(items,i) );
00216 XtVaSetValues ( widget,
00217 XmNaccelerator, MITEM_accelerator(items,i),
00218 XmNacceleratorText, str,
00219 NULL );
00220 XmStringFree ( str );
00221 }
00222
00223
00224 if ( MITEM_callback(items,i) != NULL ) {
00225 XtAddCallback ( widget, XmNactivateCallback,
00226 MITEM_callback(items,i),
00227 MITEM_callback_data(items,i) );
00228 }
00229 }
00230
00231
00232 return cascade;
00233 }