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