static void createBrowserOneDHistPanel(nTuBrowserInfo *nTuBr) { Arg args[50]; int ac; XmString s1, *st1; Widget dismissBtn, nbinLabel, lowEdgeLabel, highEdgeLabel, multLabel; Widget histForm, ntupleForm, titleLabel, histLabel, ntupleLabel; Widget ntupleCatLabel, ntupleTitleLabel; ac = 0; XtSetArg(args[ac], XmNautoUnmanage, False); ac++; XtSetArg(args[ac], XmNresizePolicy, XmRESIZE_NONE); ac++; OneDHistFormW = XmCreateFormDialog(McfioMainPanelW, "form", args, ac); OneDHistShellW = XtParent(OneDHistFormW); XtVaSetValues(OneDHistShellW, XmNtitle, "One Dimensional Histogram Utility", 0); AddMotifCloseCallback(XtParent(OneDHistFormW), (XtCallbackProc)dismissOneDHistCB, NULL); OneDHistCreateW = XtVaCreateManagedWidget("create1DBtn", xmPushButtonGadgetClass, OneDHistFormW, XmNlabelString, s1=XmStringCreateSimple("Create"), XmNbottomAttachment, XmATTACH_FORM, XmNbottomOffset, 4, XmNleftAttachment, XmATTACH_POSITION, XmNleftPosition, 2, XmNrightAttachment, XmATTACH_POSITION, XmNrightPosition, 18, 0); XmStringFree(s1); XtAddCallback( OneDHistCreateW, XmNactivateCallback, (XtCallbackProc)createOneDHistCB, (nTuBrowserInfo *) nTuBr ); OneDHistModifyW = XtVaCreateManagedWidget("modify1DBtn", xmPushButtonGadgetClass, OneDHistFormW, XmNlabelString, s1=XmStringCreateSimple("Modify"), XmNbottomAttachment, XmATTACH_FORM, XmNbottomOffset, 4, XmNleftAttachment, XmATTACH_POSITION, XmNleftPosition, 20, XmNrightAttachment, XmATTACH_POSITION, XmNrightPosition, 40, 0); XmStringFree(s1); XtAddCallback( OneDHistModifyW, XmNactivateCallback, (XtCallbackProc)modifyOneDHistCB, NULL); OneDHistDeleteW = XtVaCreateManagedWidget("delete1DBtn", xmPushButtonGadgetClass, OneDHistFormW, XmNlabelString, s1=XmStringCreateSimple("Delete"), XmNbottomAttachment, XmATTACH_FORM, XmNbottomOffset, 4, XmNleftAttachment, XmATTACH_POSITION, XmNleftPosition, 42, XmNrightAttachment, XmATTACH_POSITION, XmNrightPosition, 60, 0); XmStringFree(s1); XtAddCallback( OneDHistDeleteW, XmNactivateCallback, (XtCallbackProc)deleteOneDHistCB, NULL); dismissBtn = XtVaCreateManagedWidget("dismissBtn", xmPushButtonGadgetClass, OneDHistFormW, XmNlabelString, s1=XmStringCreateSimple("Dismiss"), XmNbottomAttachment, XmATTACH_FORM, XmNbottomOffset, 4, XmNleftAttachment, XmATTACH_POSITION, XmNleftPosition, 80, XmNrightAttachment, XmATTACH_POSITION, XmNrightPosition, 98, 0); XmStringFree(s1); XtAddCallback(dismissBtn, XmNactivateCallback, (XtCallbackProc)dismissOneDHistCB, NULL); ac = 0; XtSetArg(args[ac], XmNlabelString, (s1=XmStringCreateSimple("Number of bins:"))); ac++; XtSetArg(args[ac], XmNleftAttachment, XmATTACH_FORM); ac++; XtSetArg(args[ac], XmNleftOffset,5); ac++; XtSetArg(args[ac], XmNbottomAttachment, XmATTACH_WIDGET); ac++; XtSetArg(args[ac], XmNbottomWidget,OneDHistCreateW); ac++; XtSetArg(args[ac], XmNbottomOffset,3); ac++; nbinLabel = XmCreateLabelGadget(OneDHistFormW, "num1Dbin", args, ac); XmStringFree(s1); XtManageChild(nbinLabel); OneDHistNumBinsW = XtVaCreateManagedWidget("numBin1D", xmTextWidgetClass, OneDHistFormW, XmNcolumns, 5, XmNmaxLength, 5, XmNeditMode, XmSINGLE_LINE_EDIT, XmNbottomAttachment, XmATTACH_WIDGET, XmNbottomWidget,OneDHistCreateW, XmNbottomOffset,3, XmNleftAttachment, XmATTACH_WIDGET, XmNleftWidget,nbinLabel, 0); RemapDeleteKey(OneDHistNumBinsW); XmTextSetString(OneDHistNumBinsW, "100"); ac = 0; XtSetArg(args[ac], XmNlabelString, (s1=XmStringCreateSimple("Low Edge:"))); ac++; XtSetArg(args[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++; XtSetArg(args[ac], XmNleftWidget,OneDHistNumBinsW); ac++; XtSetArg(args[ac], XmNleftOffset,3); ac++; XtSetArg(args[ac], XmNbottomAttachment, XmATTACH_WIDGET); ac++; XtSetArg(args[ac], XmNbottomWidget,OneDHistCreateW); ac++; XtSetArg(args[ac], XmNbottomOffset,3); ac++; lowEdgeLabel = XmCreateLabelGadget(OneDHistFormW, "low1Dbin", args, ac); XmStringFree(s1); XtManageChild(lowEdgeLabel); OneDHistLowBinW = XtVaCreateManagedWidget("lowEdge1D", xmTextWidgetClass, OneDHistFormW, XmNcolumns, 10, XmNmaxLength, 20, XmNeditMode, XmSINGLE_LINE_EDIT, XmNbottomAttachment, XmATTACH_WIDGET, XmNbottomWidget,OneDHistCreateW, XmNbottomOffset,3, XmNleftAttachment, XmATTACH_WIDGET, XmNleftWidget,lowEdgeLabel, 0); RemapDeleteKey(OneDHistLowBinW); XmTextSetString(OneDHistLowBinW, "0."); ac = 0; XtSetArg(args[ac], XmNlabelString, (s1=XmStringCreateSimple("High Edge:"))); ac++; XtSetArg(args[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++; XtSetArg(args[ac], XmNleftWidget,OneDHistLowBinW); ac++; XtSetArg(args[ac], XmNleftOffset,3); ac++; XtSetArg(args[ac], XmNbottomAttachment, XmATTACH_WIDGET); ac++; XtSetArg(args[ac], XmNbottomWidget,OneDHistCreateW); ac++; XtSetArg(args[ac], XmNbottomOffset,3); ac++; highEdgeLabel = XmCreateLabelGadget(OneDHistFormW, "high1Dbin", args, ac); XmStringFree(s1); XtManageChild(highEdgeLabel); OneDHistHighBinW = XtVaCreateManagedWidget("highEdge1D", xmTextWidgetClass, OneDHistFormW, XmNcolumns, 10, XmNmaxLength, 20, XmNeditMode, XmSINGLE_LINE_EDIT, XmNbottomAttachment, XmATTACH_WIDGET, XmNbottomWidget,OneDHistCreateW, XmNbottomOffset,3, XmNleftAttachment, XmATTACH_WIDGET, XmNleftWidget,highEdgeLabel, 0); RemapDeleteKey(OneDHistHighBinW); XmTextSetString(OneDHistHighBinW, "1."); ac = 0; XtSetArg(args[ac], XmNlabelString, (s1=XmStringCreateSimple("Instance:"))); ac++; XtSetArg(args[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++; XtSetArg(args[ac], XmNleftWidget,OneDHistHighBinW); ac++; XtSetArg(args[ac], XmNleftOffset,3); ac++; XtSetArg(args[ac], XmNbottomAttachment, XmATTACH_WIDGET); ac++; XtSetArg(args[ac], XmNbottomWidget,OneDHistCreateW); ac++; XtSetArg(args[ac], XmNbottomOffset,3); ac++; multLabel = XmCreateLabelGadget(OneDHistFormW, "inst1Dlabel", args, ac); XmStringFree(s1); XtManageChild(multLabel); OneDHistMultW = XtVaCreateManagedWidget("inst1DTw", xmTextWidgetClass, OneDHistFormW, XmNcolumns, 10, XmNmaxLength, 20, XmNeditMode, XmSINGLE_LINE_EDIT, XmNbottomAttachment, XmATTACH_WIDGET, XmNbottomWidget,OneDHistCreateW, XmNbottomOffset,3, XmNleftAttachment, XmATTACH_WIDGET, XmNleftWidget,multLabel, 0); RemapDeleteKey(OneDHistMultW); XmTextSetString(OneDHistMultW, "All"); ac = 0; XtSetArg(args[ac], XmNlabelString, (s1=XmStringCreateSimple("Title:"))); ac++; XtSetArg(args[ac], XmNleftAttachment, XmATTACH_FORM); ac++; XtSetArg(args[ac], XmNleftOffset,3); ac++; XtSetArg(args[ac], XmNbottomAttachment, XmATTACH_WIDGET); ac++; XtSetArg(args[ac], XmNbottomWidget,OneDHistNumBinsW); ac++; XtSetArg(args[ac], XmNbottomOffset,3); ac++; titleLabel = XmCreateLabelGadget(OneDHistFormW, "title1Dlabel", args, ac); XmStringFree(s1); XtManageChild(titleLabel); OneDHistTitleW = XtVaCreateManagedWidget("title1DTw", xmTextWidgetClass, OneDHistFormW, XmNcolumns, 80, XmNmaxLength, 255, XmNeditMode, XmSINGLE_LINE_EDIT, XmNbottomAttachment, XmATTACH_WIDGET, XmNbottomWidget,OneDHistNumBinsW, XmNbottomOffset,3, XmNleftAttachment, XmATTACH_WIDGET, XmNleftWidget,titleLabel, 0); RemapDeleteKey(OneDHistTitleW); XmTextSetString(OneDHistTitleW, "Please enter a meaningful title here"); /* ** Now the list of 1D histograms. */ /* Create a form to hold the list and the top label */ ac = 0; XtSetArg(args[ac], XmNmarginHeight, 0); ac++; XtSetArg(args[ac], XmNtopAttachment, XmATTACH_FORM); ac++; XtSetArg(args[ac], XmNleftAttachment, XmATTACH_FORM); ac++; XtSetArg(args[ac], XmNbottomAttachment, XmATTACH_WIDGET); ac++; XtSetArg(args[ac], XmNbottomWidget, OneDHistTitleW); ac++; XtSetArg(args[ac], XmNbottomOffset, 3); ac++; XtSetArg(args[ac], XmNleftOffset, 2); ac++; XtSetArg(args[ac], XmNtopOffset, 2); ac++; histForm = XmCreateForm(OneDHistFormW, "hist1DForm", args, ac); XtManageChild(histForm); ac = 0; XtSetArg(args[ac], XmNlabelString, (s1=XmStringCreateSimple( "One Dimensional Histogram Listing"))); ac++; XtSetArg(args[ac], XmNleftAttachment, XmATTACH_FORM); ac++; XtSetArg(args[ac], XmNleftOffset,3); ac++; XtSetArg(args[ac], XmNtopAttachment, XmATTACH_FORM); ac++; histLabel = XmCreateLabelGadget(histForm, "HIST1Dlabel", args, ac); XmStringFree(s1); XtManageChild(histLabel); ac = 0; XtSetArg(args[ac], XmNitems, (st1=StringTable(1, "No histogram defined "))); ac++; XtSetArg(args[ac], XmNitemCount, 1); ac++; XtSetArg(args[ac], XmNscrollBarDisplayPolicy, XmAS_NEEDED); ac++; XtSetArg(args[ac], XmNvisibleItemCount, 10); ac++; XtSetArg(args[ac], XmNselectionPolicy, XmBROWSE_SELECT); ac++; XtSetArg(args[ac], XmNlistSizePolicy, XmCONSTANT); ac++; XtSetArg(args[ac], XmNleftAttachment, XmATTACH_FORM); ac++; XtSetArg(args[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++; XtSetArg(args[ac], XmNbottomAttachment, XmATTACH_FORM); ac++; XtSetArg(args[ac], XmNrightAttachment, XmATTACH_FORM); ac++; XtSetArg(args[ac], XmNtopWidget, histLabel); ac++; XtSetArg(args[ac], XmNtopOffset, 0); ac++; XtSetArg(args[ac], XmNleftOffset, 3); ac++; XtSetArg(args[ac], XmNbottomOffset, 4); ac++; OneDHistHistoListW = XmCreateScrolledList(histForm, "hist1DList", args,ac); FreeStringTable(st1); XtAddCallback(OneDHistHistoListW, XmNbrowseSelectionCallback, (XtCallbackProc) oneDHistListCB, NULL); XtManageChild(OneDHistHistoListW); OneDHistSizeOfList = 10; OneDHistNumberListed = 0; OneDHistListedIDs = (int *) malloc(sizeof(int) * OneDHistSizeOfList); /* ** Now the list of Ntuple Variables. Also a few Label to refer to the ** Ntuple category/title listed on the Main panel. ** */ /* Create a form to hold the list and the top label */ ac = 0; XtSetArg(args[ac], XmNmarginHeight, 0); ac++; XtSetArg(args[ac], XmNtopAttachment, XmATTACH_FORM); ac++; XtSetArg(args[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++; XtSetArg(args[ac], XmNleftWidget, histForm); ac++; XtSetArg(args[ac], XmNbottomAttachment, XmATTACH_WIDGET); ac++; XtSetArg(args[ac], XmNbottomWidget, OneDHistTitleW); ac++; XtSetArg(args[ac], XmNbottomOffset, 3); ac++; XtSetArg(args[ac], XmNleftOffset, 6); ac++; XtSetArg(args[ac], XmNtopOffset, 2); ac++; ntupleForm = XmCreateForm(OneDHistFormW, "ntu1DForm", args, ac); XtManageChild(ntupleForm); ac = 0; XtSetArg(args[ac], XmNlabelString, (s1=XmStringCreateSimple("Selected NTuple Synopsis"))); ac++; XtSetArg(args[ac], XmNleftAttachment, XmATTACH_FORM); ac++; XtSetArg(args[ac], XmNleftOffset,3); ac++; XtSetArg(args[ac], XmNtopAttachment, XmATTACH_FORM); ac++; ntupleLabel = XmCreateLabelGadget(ntupleForm, "NTU1DDlabel", args, ac); XmStringFree(s1); XtManageChild(ntupleLabel); ac = 0; XtSetArg(args[ac], XmNlabelString, (s1=XmStringCreateSimple("Category:"))); ac++; XtSetArg(args[ac], XmNleftAttachment, XmATTACH_FORM); ac++; XtSetArg(args[ac], XmNleftOffset, 3); ac++; XtSetArg(args[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++; XtSetArg(args[ac], XmNtopOffset, 1); ac++; XtSetArg(args[ac], XmNtopWidget,ntupleLabel ); ac++; ntupleCatLabel = XmCreateLabelGadget(ntupleForm, "NTU1Dlabel", args, ac); XmStringFree(s1); XtManageChild(ntupleCatLabel); ac = 0; XtSetArg(args[ac], XmNlabelString, (s1=XmStringCreateSimple("None----------------------"))); ac++; XtSetArg(args[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++; XtSetArg(args[ac], XmNleftWidget,ntupleCatLabel ); ac++; XtSetArg(args[ac], XmNleftOffset,3); ac++; XtSetArg(args[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++; XtSetArg(args[ac], XmNtopOffset, 1); ac++; XtSetArg(args[ac], XmNtopWidget,ntupleLabel ); ac++; OneDHistNtupleCategoryLabelW = XmCreateLabelGadget(ntupleForm, "NTU1DCatlabel", args, ac); XmStringFree(s1); XtManageChild(OneDHistNtupleCategoryLabelW); ac = 0; XtSetArg(args[ac], XmNlabelString, (s1=XmStringCreateSimple("Title:"))); ac++; XtSetArg(args[ac], XmNleftAttachment, XmATTACH_FORM); ac++; XtSetArg(args[ac], XmNleftOffset,3); ac++; XtSetArg(args[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++; XtSetArg(args[ac], XmNtopWidget, ntupleCatLabel); ac++; XtSetArg(args[ac], XmNtopOffset, 1); ac++; ntupleTitleLabel = XmCreateLabelGadget(ntupleForm, "NTU1Dlabel", args, ac); XmStringFree(s1); XtManageChild(ntupleTitleLabel); ac = 0; XtSetArg(args[ac], XmNlabelString, (s1=XmStringCreateSimple("None----------------------"))); ac++; XtSetArg(args[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++; XtSetArg(args[ac], XmNleftWidget,ntupleCatLabel ); ac++; XtSetArg(args[ac], XmNleftOffset,3); ac++; XtSetArg(args[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++; XtSetArg(args[ac], XmNtopWidget,ntupleCatLabel ); ac++; XtSetArg(args[ac], XmNtopOffset, 1); ac++; OneDHistNtupleTitleLabelW = XmCreateLabelGadget(ntupleForm, "NTU1DTitlabel", args, ac); XmStringFree(s1); XtManageChild(OneDHistNtupleTitleLabelW); ac = 0; XtSetArg(args[ac], XmNitems, (st1=StringTable(1, " "))); ac++; XtSetArg(args[ac], XmNitemCount, 1); ac++; XtSetArg(args[ac], XmNscrollBarDisplayPolicy, XmAS_NEEDED); ac++; XtSetArg(args[ac], XmNvisibleItemCount, 10); ac++; XtSetArg(args[ac], XmNselectionPolicy, XmBROWSE_SELECT); ac++; XtSetArg(args[ac], XmNlistSizePolicy, XmCONSTANT); ac++; XtSetArg(args[ac], XmNleftAttachment, XmATTACH_FORM); ac++; XtSetArg(args[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++; XtSetArg(args[ac], XmNbottomAttachment, XmATTACH_FORM); ac++; XtSetArg(args[ac], XmNrightAttachment, XmATTACH_FORM); ac++; XtSetArg(args[ac], XmNtopWidget, OneDHistNtupleTitleLabelW); ac++; XtSetArg(args[ac], XmNtopOffset, 2); ac++; XtSetArg(args[ac], XmNleftOffset, 3); ac++; OneDHistVariableListW = XmCreateScrolledList(ntupleForm, "hist1DList", args,ac); FreeStringTable(st1); XtManageChild(OneDHistVariableListW); FirstOneDHistogram = True; XtManageChild(OneDHistFormW); }
char *FontSel(Widget parent, int showPropFonts, const char *currFont, Pixel sampleFG, Pixel sampleBG) { Widget dialog, form, okButton, cancelButton; Widget styleList, sizeList, fontName, fontList; Widget sizeToggle, propFontToggle = NULL, dispField; Widget nameLabel, sampleLabel; Arg args[MAX_ARGS]; int n; XmString tempStr; char bigFont[MAX_FONT_NAME_LEN]; xfselControlBlkType ctrlBlk; Display *theDisplay; ctrlBlk.fontData = XListFonts(XtDisplay(parent), "-*-*-*-*-*-*-*-*-*-*-*-*-*-*", MAX_NUM_FONTS, &ctrlBlk.numFonts); FindBigFont(&ctrlBlk, bigFont); ctrlBlk.oldFont = XLoadQueryFont(XtDisplay(parent), bigFont); ctrlBlk.oldFontList = XmFontListCreate(ctrlBlk.oldFont, XmSTRING_DEFAULT_CHARSET); ctrlBlk.sampleFG = sampleFG; ctrlBlk.sampleBG = sampleBG; dialog = CreateDialogShell(parent, "Font Selector", args, 0); /* Set up window sizes for form widget */ n = 0; XtSetArg(args[n], XmNautoUnmanage, FALSE); n++; XtSetArg(args[n], XmNdialogStyle, XmDIALOG_FULL_APPLICATION_MODAL); n++; /* Create form popup dialog widget */ form = XtCreateWidget ("Font Selector", xmFormWidgetClass, dialog, args, n); /* Create pushbutton widgets */ n = 0; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNbottomOffset, 4); n++; XtSetArg(args[n], XmNtopOffset, 1); n++; XtSetArg(args[n], XmNrightPosition, 45); n++; XtSetArg(args[n], XmNwidth, 110); n++; XtSetArg(args[n], XmNheight, 28); n++; XtSetArg(args[n], XmNshowAsDefault, TRUE); n++; okButton = XtCreateManagedWidget("OK", xmPushButtonWidgetClass, form, args, n); n = 0; XtSetArg(args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); n++; XtSetArg(args[n], XmNtopWidget, okButton); n++; XtSetArg(args[n], XmNbottomWidget, okButton); n++; XtSetArg(args[n], XmNleftPosition, 55); n++; XtSetArg(args[n], XmNwidth, 110); n++; XtSetArg(args[n], XmNheight, 28); n++; cancelButton = XtCreateManagedWidget("Cancel", xmPushButtonWidgetClass, form, args, n); /* create font name text widget and the corresponding label */ n = 0; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_WIDGET); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNbottomWidget, okButton); n++; XtSetArg(args[n], XmNleftPosition, 1); n++; XtSetArg(args[n], XmNrightPosition, 99); n++; XtSetArg(args[n], XmNeditable, True); n++; XtSetArg(args[n], XmNeditMode, XmSINGLE_LINE_EDIT); n++; XtSetArg(args[n], XmNmaxLength, MAX_FONT_NAME_LEN); n++; fontName = XtCreateManagedWidget("fontname", xmTextWidgetClass, form, args, n); RemapDeleteKey(fontName); /* kludge to handle delete and BS */ n = 0; tempStr = XmStringCreate("Font Name:", XmSTRING_DEFAULT_CHARSET); XtSetArg(args[n], XmNlabelString, tempStr); n++; XtSetArg(args[n], XmNmnemonic, 'N'); n++; XtSetArg(args[n], XmNuserData, fontName); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); n++; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_WIDGET); n++; XtSetArg(args[n], XmNleftWidget, fontName); n++; XtSetArg(args[n], XmNbottomWidget, fontName); n++; XtSetArg(args[n], XmNtopOffset, 1); n++; nameLabel = XtCreateManagedWidget("Font Name:", xmLabelWidgetClass, form, args, n); XmStringFree(tempStr); /* create sample display text field widget */ n = 0; XtSetArg(args[n], XmNleftAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_WIDGET); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNrightPosition, 99); n++; XtSetArg(args[n], XmNbottomWidget, nameLabel); n++; XtSetArg(args[n], XmNleftPosition, 1); n++; XtSetArg(args[n], XmNalignment, XmALIGNMENT_BEGINNING); n++; XtSetArg(args[n], XmNvalue, "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789"); n++; XtSetArg(args[n], XmNforeground, sampleFG); n++; XtSetArg(args[n], XmNbackground, sampleBG); n++; dispField = XtCreateManagedWidget(" ", xmTextFieldWidgetClass, form, args, n); n = 0; tempStr = XmStringCreate("Sample:", XmSTRING_DEFAULT_CHARSET); XtSetArg(args[n], XmNlabelString, tempStr); n++; XtSetArg(args[n], XmNmnemonic, 'S'); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); n++; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_WIDGET); n++; XtSetArg(args[n], XmNleftWidget, dispField); n++; XtSetArg(args[n], XmNbottomWidget, dispField); n++; XtSetArg(args[n], XmNtopOffset, 1); n++; sampleLabel = XtCreateManagedWidget("Font Name:", xmLabelWidgetClass, form, args, n); XmStringFree(tempStr); /* create toggle buttons */ n = 0; tempStr = XmStringCreate("Show Size in Points", XmSTRING_DEFAULT_CHARSET); XtSetArg(args[n], XmNlabelString, tempStr); n++; XtSetArg(args[n], XmNmnemonic, 'P'); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_WIDGET); n++; XtSetArg(args[n], XmNleftPosition, 2); n++; XtSetArg(args[n], XmNtopOffset, 1); n++; XtSetArg(args[n], XmNbottomWidget, sampleLabel); n++; sizeToggle = XtCreateManagedWidget("sizetoggle", xmToggleButtonWidgetClass, form, args, n); XmStringFree(tempStr); if (showPropFonts != ONLY_FIXED) { n = 0; tempStr = XmStringCreate("Show Proportional Width Fonts", XmSTRING_DEFAULT_CHARSET); XtSetArg(args[n], XmNlabelString, tempStr); n++; XtSetArg(args[n], XmNmnemonic, 'W'); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); n++; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); n++; XtSetArg(args[n], XmNrightPosition, 98); n++; XtSetArg(args[n], XmNtopWidget, sizeToggle); n++; XtSetArg(args[n], XmNbottomWidget, sizeToggle); n++; XtSetArg(args[n], XmNtopOffset, 1); n++; propFontToggle = XtCreateManagedWidget("propfonttoggle", xmToggleButtonWidgetClass, form, args, n); XmStringFree(tempStr); } /* create scroll list widgets */ /* "Font" list */ n = 0; tempStr = XmStringCreate("Font:", XmSTRING_DEFAULT_CHARSET); XtSetArg(args[n], XmNlabelString, tempStr); n++; XtSetArg(args[n], XmNmnemonic, 'F'); n++; XtSetArg(args[n], XmNtopOffset, 2); n++; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNleftPosition, 1); n++; nameLabel = XtCreateManagedWidget("Font:", xmLabelWidgetClass, form, args, n); XmStringFree(tempStr); n = 0; XtSetArg(args[n], XmNvisibleItemCount, 15); n++; XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_WIDGET); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNbottomWidget, sizeToggle); n++; XtSetArg(args[n], XmNtopWidget, nameLabel); n++; XtSetArg(args[n], XmNleftWidget, nameLabel); n++; XtSetArg(args[n], XmNrightPosition, 52); n++; fontList = XmCreateScrolledList(form, "fontlist", args, n); AddMouseWheelSupport(fontList); XtManageChild(fontList); XtVaSetValues(nameLabel, XmNuserData, fontList, NULL); /* "Style" list */ n = 0; XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNtopWidget, nameLabel); n++; XtSetArg(args[n], XmNleftOffset, 5); n++; XtSetArg(args[n], XmNleftWidget, XtParent(fontList)); n++; XtSetArg(args[n], XmNbottomWidget, XtParent(fontList)); n++; XtSetArg(args[n], XmNrightPosition, 85); n++; styleList = XmCreateScrolledList(form, "stylelist", args, n); AddMouseWheelSupport(styleList); XtManageChild(styleList); n = 0; tempStr = XmStringCreate("Style:", XmSTRING_DEFAULT_CHARSET); XtSetArg(args[n], XmNmnemonic, 'y'); n++; XtSetArg(args[n], XmNuserData, styleList); n++; XtSetArg(args[n], XmNlabelString, tempStr); n++; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_WIDGET); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); n++; XtSetArg(args[n], XmNbottomWidget, XtParent(styleList)); n++; XtSetArg(args[n], XmNleftWidget, XtParent(styleList)); n++; XtCreateManagedWidget("Style:", xmLabelWidgetClass, form, args, n); XmStringFree(tempStr); /* "Size" list */ n = 0; XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); n++; XtSetArg(args[n], XmNtopWidget, nameLabel); n++; XtSetArg(args[n], XmNleftWidget, XtParent(styleList)); n++; XtSetArg(args[n], XmNbottomWidget, XtParent(fontList)); n++; XtSetArg(args[n], XmNleftOffset, 5); n++; XtSetArg(args[n], XmNrightPosition, 99); n++; sizeList = XmCreateScrolledList(form, "sizelist", args, n); AddMouseWheelSupport(sizeList); XtManageChild(sizeList); n = 0; tempStr = XmStringCreate("Size:", XmSTRING_DEFAULT_CHARSET); XtSetArg(args[n], XmNlabelString, tempStr); n++; XtSetArg(args[n], XmNmnemonic, 'z'); n++; XtSetArg(args[n], XmNuserData, sizeList); n++; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_WIDGET); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); n++; XtSetArg(args[n], XmNbottomWidget, XtParent(sizeList)); n++; XtSetArg(args[n], XmNleftWidget, XtParent(sizeList)); n++; XtCreateManagedWidget("Size:", xmLabelWidgetClass, form, args, n); XmStringFree(tempStr); /* update form widgets cancel button */ n = 0; XtSetArg(args[n], XmNcancelButton, cancelButton); n++; XtSetValues(form, args, n); /* update application's control block structure */ ctrlBlk.form = form; ctrlBlk.okButton = okButton; ctrlBlk.cancelButton = cancelButton; ctrlBlk.fontList = fontList; ctrlBlk.styleList = styleList; ctrlBlk.sizeList = sizeList; ctrlBlk.fontNameField = fontName; ctrlBlk.sizeToggle = sizeToggle; if (showPropFonts != ONLY_FIXED) ctrlBlk.propFontToggle = propFontToggle; ctrlBlk.dispField = dispField; ctrlBlk.exitFlag = FALSE; ctrlBlk.destroyedFlag = FALSE; ctrlBlk.showPropFonts = showPropFonts; ctrlBlk.showSizeInPixels = TRUE; ctrlBlk.sel1 = NULL; ctrlBlk.sel2 = NULL; ctrlBlk.sel3 = NULL; ctrlBlk.fontName = NULL; setupScrollLists(NONE, ctrlBlk); /* update scroll lists */ if (showPropFonts == PREF_PROP) XmToggleButtonSetState(propFontToggle, TRUE, FALSE); /* Register callback functions */ if (showPropFonts != ONLY_FIXED) XtAddCallback(propFontToggle, XmNvalueChangedCallback, (XtCallbackProc)propFontToggleAction, (char *)&ctrlBlk); XtAddCallback(sizeToggle, XmNvalueChangedCallback, (XtCallbackProc)sizeToggleAction, (char *)&ctrlBlk); XtAddCallback(fontList, XmNbrowseSelectionCallback, (XtCallbackProc)fontAction, (char *)&ctrlBlk); XtAddCallback(styleList, XmNbrowseSelectionCallback, (XtCallbackProc)styleAction, (char *)&ctrlBlk); XtAddCallback(sizeList, XmNbrowseSelectionCallback, (XtCallbackProc)sizeAction, (char *)&ctrlBlk); XtAddCallback(okButton, XmNactivateCallback, (XtCallbackProc)okAction, (char *)&ctrlBlk); XtAddCallback(cancelButton, XmNactivateCallback, (XtCallbackProc)cancelAction, (char *)&ctrlBlk); /* add event handler to setup input focus at start to scroll list */ XtAddEventHandler(fontList, FocusChangeMask, FALSE, (XtEventHandler)setFocus, (char *)&ctrlBlk); XmProcessTraversal(fontList, XmTRAVERSE_CURRENT); /* setup tabgroups */ XmAddTabGroup(fontList); XmAddTabGroup(styleList); XmAddTabGroup(sizeList); XmAddTabGroup(sizeToggle); if (showPropFonts != ONLY_FIXED) XmAddTabGroup(propFontToggle); XmAddTabGroup(fontName); XmAddTabGroup(okButton); XmAddTabGroup(cancelButton); /* Make sure that we don't try to access the dialog if the user destroyed it (possibly indirectly, by destroying the parent). */ XtAddCallback(dialog, XmNdestroyCallback, (XtCallbackProc)destroyCB, (char *)&ctrlBlk); /* Link Motif Close option to cancel action */ AddMotifCloseCallback(dialog, (XtCallbackProc)cancelAction, &ctrlBlk); /* Handle dialog mnemonics */ AddDialogMnemonicHandler(form, FALSE); /* Realize Widgets */ ManageDialogCenteredOnPointer(form); /* set up current font parameters */ if (currFont[0] != '\0') startupFont(&ctrlBlk, currFont); /* Make sure that we can still access the display in case the form gets destroyed */ theDisplay = XtDisplay(form); /* enter event loop */ while (! ctrlBlk.exitFlag && ! ctrlBlk.destroyedFlag) XtAppProcessEvent(XtWidgetToApplicationContext(form), XtIMAll); if (! ctrlBlk.destroyedFlag) { /* Don't let the callback destroy the font name */ XtRemoveCallback(dialog, XmNdestroyCallback, (XtCallbackProc)destroyCB, (char *)&ctrlBlk); XtDestroyWidget(dialog); } if (ctrlBlk.oldFont != NULL) { XFreeFont(theDisplay, ctrlBlk.oldFont); XmFontListFree(ctrlBlk.oldFontList); } return(ctrlBlk.fontName); }