int main(int argc, char **argv) { Widget toplevel, widget, bb, list; XtAppContext app; XmString item; Arg args[10]; int n = 0; XtSetLanguageProc(NULL, NULL, NULL); toplevel = XtVaAppInitialize(&app, "ComBox", NULL, 0, &argc, argv, NULL, NULL); bb = XmCreateBulletinBoard(toplevel, "bb", NULL, 0); XtManageChild(bb); XtSetArg(args[n], XmNwidth, 100); n++; XtSetArg(args[n], XmNheight, 100); n++; widget = XmCreateDrawnButton(bb, "drawnButton", args, n); XtAddCallback(widget, XmNexposeCallback, (XtCallbackProc) onExpose, (XtPointer)bb); XtManageChild(widget); XtRealizeWidget(toplevel); LessTifTestMainLoop(toplevel); exit(0); }
/********************************************************************* * Function: CreateDA * * CreateDA creates a Text Graphic area with the appropriate scroll bars. * *********************************************************************/ static XtPointer HelpCreateDA( Widget parent, char *name, short vert_flag, short horz_flag, Boolean traversal_flag, _DtCvValue honor_size, _DtCvRenderType render_type, int rows, int columns, unsigned short media_resolution, void (*hyperTextCB)(), void (*resizeCB)(), int (*exec_ok_routine)(), XtPointer client_data, XmFontList default_list ) { DtHelpDispAreaStruct *pDAS; DAArgs DA_args; Arg args[20]; int n; int maxFontAscent; int maxFontDescent; int maxFontCharWidth; short margin_width; short margin_height; short shadowThick, highThick; Dimension hBarHeight = 0; Dimension vBarWidth = 0; Dimension width; Boolean value; Widget form; Display *dpy = XtDisplay(parent); Screen *retScr = XtScreen(parent); int screen = XScreenNumberOfScreen(retScr); Colormap colormap; Pixmap tile; XGCValues gcValues; unsigned long gcMask; unsigned long char_width; Atom xa_ave_width; XFontStruct *tmpFont = NULL; XtPointer default_font = NULL; XRectangle rectangle[1]; XmFontContext fontContext; XmFontListEntry fontEntry; XmFontType fontType; /* Allocate the Display Area. */ pDAS = (DtHelpDispAreaStruct *) XtMalloc(sizeof(DtHelpDispAreaStruct)); /* * get the resources */ XtGetSubresources(parent, &DA_args, name, "XmDrawnButton", Resources, XtNumber(Resources), NULL, 0); if (rows <= 0) rows = 1; if (columns <= 0) columns = 1; /* * initialize the structure variables. */ pDAS->text_selected = False; pDAS->primary = False; pDAS->select_state = _DtHelpNothingDoing; pDAS->toc_y = 0; pDAS->toc_base = 0; pDAS->toc_flag = 0; if (traversal_flag) pDAS->toc_flag = _DT_HELP_SHADOW_TRAVERSAL | _DT_HELP_NOT_INITIALIZED; pDAS->max_spc = 0; pDAS->cur_spc = 0; pDAS->maxX = 0; pDAS->virtualX = 0; pDAS->firstVisible = 0; pDAS->visibleCount = rows; pDAS->maxYpos = 0; pDAS->neededFlags = 0; pDAS->vert_init_scr = DA_args.initialDelay; pDAS->vert_rep_scr = DA_args.repeatDelay; pDAS->horz_init_scr = DA_args.initialDelay; pDAS->horz_rep_scr = DA_args.repeatDelay; pDAS->moveThreshold = DA_args.moveThreshold; pDAS->marginWidth = DA_args.marginWidth; pDAS->marginHeight = DA_args.marginHeight; pDAS->searchColor = DA_args.search_color; pDAS->depth = 0; pDAS->spc_chars = NULL; pDAS->scr_timer_id = 0; pDAS->def_pix = 0; pDAS->context = NULL; pDAS->vertIsMapped = False; pDAS->horzIsMapped = False; pDAS->lst_topic = NULL; pDAS->nextNonVisible = 0; pDAS->media_resolution = media_resolution; pDAS->honor_size = honor_size; pDAS->render_type = render_type; pDAS->dtinfo = 0; pDAS->stipple = None; /* * locale dependant information */ pDAS->nl_to_space = 1; pDAS->cant_begin_chars = NULL; pDAS->cant_end_chars = NULL; if (1 < MB_CUR_MAX) _DtHelpLoadMultiInfo (&(pDAS->cant_begin_chars), &(pDAS->cant_end_chars), &(pDAS->nl_to_space)); /* * initialize the hypertext callback pointer */ pDAS->exec_filter = exec_ok_routine; pDAS->hyperCall = hyperTextCB; pDAS->resizeCall = resizeCB; pDAS->clientData = client_data; /* * zero out other callback fields */ pDAS->vScrollNotify = NULL ; pDAS->armCallback = NULL ; /* * create the atoms needed */ xa_ave_width = XmInternAtom(dpy, "AVERAGE_WIDTH" , False); /* * Malloc for the default font. */ (void) XmeRenderTableGetDefaultFont(DA_args.userFont, &tmpFont); if (default_list != NULL && XmFontListInitFontContext (&fontContext, default_list)) { fontEntry = XmFontListNextEntry (fontContext); if (fontEntry != NULL) default_font = XmFontListEntryGetFont (fontEntry, &fontType); XmFontListFreeFontContext (fontContext); } /* * fake out the next call by using the parent as the display widget */ pDAS->dispWid = parent; __DtHelpFontDatabaseInit (pDAS, default_font, fontType, tmpFont); /* * Get the base font meterics. */ __DtHelpFontMetrics (pDAS->font_info, __DtHelpDefaultFontIndexGet(pDAS), &maxFontAscent, &maxFontDescent, &maxFontCharWidth, NULL, NULL); pDAS->leading = DA_args.leading; pDAS->fontAscent = maxFontAscent; pDAS->lineHeight = maxFontAscent + maxFontDescent + pDAS->leading + 1; n = __DtHelpDefaultFontIndexGet(pDAS); if (n < 0) value = get_fontsetproperty(__DtHelpFontSetGet(pDAS->font_info, n), xa_ave_width, ((unsigned long *) &(pDAS->charWidth))); else value = XGetFontProperty(__DtHelpFontStructGet(pDAS->font_info, n), xa_ave_width, ((unsigned long *) &(pDAS->charWidth))); if (False == value || 0 == pDAS->charWidth) { int len = maxFontCharWidth; if (n < 0) len += XmbTextEscapement( __DtHelpFontSetGet(pDAS->font_info,n),"1",1); else len += XTextWidth(__DtHelpFontStructGet(pDAS->font_info, n),"1",1); pDAS->charWidth = 10 * len / 2; } /* * Create the form to manage the window and scroll bars. */ n = 0; XtSetArg(args[n], XmNresizePolicy , XmRESIZE_ANY); ++n; XtSetArg(args[n], XmNshadowType , XmSHADOW_OUT); ++n; form = XmCreateForm(parent, "DisplayAreaForm", args, n); XtManageChild(form); /* * force the shadowThickness to zero. The XmManager will try to set * this to one. */ n = 0; XtSetArg(args[n], XmNshadowThickness , 0); ++n; XtSetArg(args[n], XmNhighlightThickness, 0); ++n; XtSetValues (form, args, n); /* * get the colors and margin widths and heights */ n = 0; XtSetArg (args[n], XmNmarginWidth , &margin_width); ++n; XtSetArg (args[n], XmNmarginHeight, &margin_height); ++n; XtSetArg (args[n], XmNcolormap , &colormap); ++n; XtGetValues(form, args, n); /* Create the vertical scrollbar. */ pDAS->vertScrollWid = NULL; if (vert_flag != _DtHelpNONE) { if (vert_flag == _DtHelpSTATIC) pDAS->vertIsMapped = True; n = 0; XtSetArg(args[n], XmNtopAttachment , XmATTACH_FORM); ++n; XtSetArg(args[n], XmNtopOffset , 0); ++n; XtSetArg(args[n], XmNbottomAttachment , XmATTACH_FORM); ++n; XtSetArg(args[n], XmNbottomOffset , margin_height); ++n; XtSetArg(args[n], XmNrightAttachment , XmATTACH_FORM); ++n; XtSetArg(args[n], XmNrightOffset , 0); ++n; XtSetArg(args[n], XmNorientation , XmVERTICAL); ++n; XtSetArg(args[n], XmNtraversalOn , True); ++n; XtSetArg(args[n], XmNhighlightThickness, 1); ++n; XtSetArg(args[n], XmNshadowType , XmSHADOW_IN); ++n; XtSetArg(args[n], XmNvalue , 0); ++n; XtSetArg(args[n], XmNminimum , 0); ++n; /* fake out the scrollbar manager, who will init dims to 100 */ XtSetArg(args[n], XmNheight , 1); ++n; XtSetArg(args[n], XmNmaximum , 1); ++n; XtSetArg(args[n], XmNincrement , 1); ++n; XtSetArg(args[n], XmNpageIncrement , 1); ++n; XtSetArg(args[n], XmNsliderSize , 1); ++n; XtSetArg(args[n], XtNmappedWhenManaged , pDAS->vertIsMapped); ++n; pDAS->vertScrollWid = XmCreateScrollBar(form, "DisplayDtHelpVertScrollBar", args, n); XtManageChild(pDAS->vertScrollWid); if (vert_flag != _DtHelpSTATIC) pDAS->neededFlags = _DtHelpSET_AS_NEEDED (pDAS->neededFlags, _DtHelpVERTICAL_SCROLLBAR); XtAddCallback(pDAS->vertScrollWid, XmNdragCallback, _DtHelpVertScrollCB, (XtPointer) pDAS); XtAddCallback(pDAS->vertScrollWid, XmNincrementCallback, _DtHelpVertScrollCB, (XtPointer) pDAS); XtAddCallback(pDAS->vertScrollWid, XmNdecrementCallback, _DtHelpVertScrollCB, (XtPointer) pDAS); XtAddCallback(pDAS->vertScrollWid, XmNpageIncrementCallback, _DtHelpVertScrollCB, (XtPointer) pDAS); XtAddCallback(pDAS->vertScrollWid, XmNpageDecrementCallback, _DtHelpVertScrollCB, (XtPointer) pDAS); XtAddCallback(pDAS->vertScrollWid, XmNtoBottomCallback, _DtHelpVertScrollCB, (XtPointer) pDAS); XtAddCallback(pDAS->vertScrollWid, XmNtoTopCallback, _DtHelpVertScrollCB, (XtPointer) pDAS); XtAddCallback(pDAS->vertScrollWid, XmNvalueChangedCallback, _DtHelpVertScrollCB, (XtPointer) pDAS); XtAddEventHandler (pDAS->vertScrollWid, ButtonPressMask, True, (XtEventHandler)_DtHelpMoveBtnFocusCB,(XtPointer) pDAS); } /* Create the horizontal scrollbar. */ pDAS->horzScrollWid = NULL; if (horz_flag != _DtHelpNONE) { if (horz_flag == _DtHelpSTATIC) pDAS->horzIsMapped = True; n = 0; XtSetArg(args[n], XmNbottomAttachment , XmATTACH_FORM); ++n; XtSetArg(args[n], XmNbottomOffset , 0); ++n; XtSetArg(args[n], XmNrightAttachment , XmATTACH_FORM); ++n; XtSetArg(args[n], XmNrightOffset , margin_width); ++n; XtSetArg(args[n], XmNleftAttachment , XmATTACH_FORM); ++n; XtSetArg(args[n], XmNleftOffset , 0); ++n; XtSetArg(args[n], XmNorientation , XmHORIZONTAL); ++n; XtSetArg(args[n], XmNtraversalOn , True); ++n; XtSetArg(args[n], XmNhighlightThickness, 1); ++n; XtSetArg(args[n], XmNshadowType , XmSHADOW_IN); ++n; XtSetArg(args[n], XmNvalue , 0); ++n; XtSetArg(args[n], XmNminimum , 0); ++n; XtSetArg(args[n], XmNmaximum , (pDAS->charWidth/10)); ++n; /* fake out the scrollbar manager, who will init dims to 100 */ XtSetArg(args[n], XmNwidth , 1); ++n; XtSetArg(args[n], XmNincrement , (pDAS->charWidth/10)); ++n; XtSetArg(args[n], XmNpageIncrement , (pDAS->charWidth/10)); ++n; XtSetArg(args[n], XmNsliderSize , (pDAS->charWidth/10)); ++n; XtSetArg(args[n], XtNmappedWhenManaged , pDAS->horzIsMapped); ++n; pDAS->horzScrollWid = XmCreateScrollBar(form, "DisplayHorzScrollBar", args, n); XtManageChild(pDAS->horzScrollWid); if (horz_flag != _DtHelpSTATIC) pDAS->neededFlags = _DtHelpSET_AS_NEEDED (pDAS->neededFlags, _DtHelpHORIZONTAL_SCROLLBAR); XtAddCallback(pDAS->horzScrollWid, XmNdragCallback, _DtHelpHorzScrollCB, (XtPointer) pDAS); XtAddCallback(pDAS->horzScrollWid, XmNincrementCallback, _DtHelpHorzScrollCB, (XtPointer) pDAS); XtAddCallback(pDAS->horzScrollWid, XmNdecrementCallback, _DtHelpHorzScrollCB, (XtPointer) pDAS); XtAddCallback(pDAS->horzScrollWid, XmNpageIncrementCallback, _DtHelpHorzScrollCB, (XtPointer) pDAS); XtAddCallback(pDAS->horzScrollWid, XmNpageDecrementCallback, _DtHelpHorzScrollCB, (XtPointer) pDAS); XtAddCallback(pDAS->horzScrollWid, XmNtoBottomCallback, _DtHelpHorzScrollCB, (XtPointer) pDAS); XtAddCallback(pDAS->horzScrollWid, XmNtoTopCallback, _DtHelpHorzScrollCB, (XtPointer) pDAS); XtAddCallback(pDAS->horzScrollWid, XmNvalueChangedCallback, _DtHelpHorzScrollCB, (XtPointer) pDAS); } /* * check for the horizontal attachments */ n = 0; if (horz_flag == _DtHelpSTATIC) { XtSetArg(args[n], XmNbottomAttachment , XmATTACH_WIDGET); ++n; XtSetArg(args[n], XmNbottomWidget , pDAS->horzScrollWid); ++n; } else { XtSetArg(args[n], XmNbottomAttachment , XmATTACH_FORM); ++n; } /* * check for the vertical attachments */ if (vert_flag == _DtHelpSTATIC) { XtSetArg(args[n], XmNrightAttachment , XmATTACH_WIDGET); ++n; XtSetArg(args[n], XmNrightWidget , pDAS->vertScrollWid); ++n; } else { XtSetArg(args[n], XmNrightAttachment , XmATTACH_FORM); ++n; } /* * do the rest of the arguments */ XtSetArg(args[n], XmNbottomOffset , margin_height); ++n; XtSetArg(args[n], XmNrightOffset , margin_width); ++n; XtSetArg(args[n], XmNtopAttachment , XmATTACH_FORM); ++n; XtSetArg(args[n], XmNtopOffset , 0); ++n; XtSetArg(args[n], XmNleftAttachment , XmATTACH_FORM); ++n; XtSetArg(args[n], XmNleftOffset , 0); ++n; XtSetArg(args[n], XmNrecomputeSize , False); ++n; XtSetArg(args[n], XmNpushButtonEnabled , False); ++n; XtSetArg(args[n], XmNtraversalOn , True); ++n; XtSetArg(args[n], XmNhighlightThickness, 1); ++n; XtSetArg(args[n], XmNshadowType , XmSHADOW_IN); ++n; XtSetArg(args[n], XmNmultiClick , XmMULTICLICK_DISCARD); ++n; XtSetArg(args[n], XmNuserData , pDAS); ++n; pDAS->dispWid = XmCreateDrawnButton(form, name, args, n); XtManageChild(pDAS->dispWid); XtAddCallback(pDAS->dispWid, XmNexposeCallback, _DtHelpExposeCB, (XtPointer) pDAS); XtAddCallback(pDAS->dispWid, XmNresizeCallback, _DtHelpResizeCB, (XtPointer) pDAS); XtAddCallback(pDAS->dispWid, XmNarmCallback, _DtHelpClickOrSelectCB, (XtPointer) pDAS); XtAddCallback(pDAS->dispWid, XmNdisarmCallback, _DtHelpEndSelectionCB, (XtPointer) pDAS); XtAddEventHandler (pDAS->dispWid, Button1MotionMask, True, (XtEventHandler)_DtHelpMouseMoveCB, (XtPointer) pDAS); /* * add my actions * parse the translations. */ _DtHelpProcessLock(); if (DrawnBTrans == NULL) DrawnBTrans = XtParseTranslationTable(DrawnBTransTable); /* * override the translations XtSetArg(args[n], XmNtranslations , DrawnBTrans); ++n; */ if (DrawnBTrans != NULL) XtOverrideTranslations(pDAS->dispWid, DrawnBTrans); _DtHelpProcessUnlock(); if (_XmGetFocusPolicy(parent) == XmPOINTER) { XtAddEventHandler (pDAS->dispWid, EnterWindowMask, True, (XtEventHandler)_DtHelpEnterLeaveCB, (XtPointer) pDAS); XtAddEventHandler (pDAS->dispWid, LeaveWindowMask, True, (XtEventHandler)_DtHelpEnterLeaveCB, (XtPointer) pDAS); } else XtAddEventHandler (pDAS->dispWid, FocusChangeMask, True, (XtEventHandler)_DtHelpFocusCB, (XtPointer) pDAS); XtAddEventHandler (pDAS->dispWid, VisibilityChangeMask, True, (XtEventHandler)_DtHelpVisibilityCB, (XtPointer) pDAS); /* Add a destroy callback so that the display area can clean up prior to * the help widget getting destroyed (e.g. display area's parent) */ XtAddCallback(pDAS->dispWid, XmNdestroyCallback, _DtHelpDisplayAreaDestroyCB, (XtPointer) pDAS); n = 0; XtSetArg(args[n], XmNshadowThickness , &shadowThick); ++n; XtSetArg(args[n], XmNhighlightThickness, &highThick); ++n; XtSetArg(args[n], XmNforeground , &(pDAS->foregroundColor)); ++n; XtSetArg(args[n], XmNbackground , &(pDAS->backgroundColor)); ++n; XtSetArg(args[n], XmNhighlightColor, &(pDAS->traversalColor) ); ++n; XtSetArg(args[n], XmNdepth , &(pDAS->depth) ); ++n; XtGetValues(pDAS->dispWid, args, n); pDAS->decorThickness = shadowThick + highThick; /* * Get the underline information */ GetUnderLineInfo (dpy, pDAS, &(pDAS->lineThickness)); /* * get the tiling pattern. */ tile = XmGetPixmap (XtScreen(pDAS->dispWid), "50_foreground", pDAS->foregroundColor, pDAS->backgroundColor); /* * Get the data for the graphics contexts and create the GC's. */ gcMask = (GCFunction | GCPlaneMask | GCForeground | GCBackground | GCLineWidth | GCLineStyle | GCClipXOrigin | GCClipYOrigin | GCClipMask); gcValues.function = GXcopy; gcValues.plane_mask = AllPlanes; gcValues.foreground = pDAS->foregroundColor; gcValues.background = pDAS->backgroundColor; gcValues.line_style = LineSolid; gcValues.line_width = pDAS->lineThickness; gcValues.clip_x_origin = 0; gcValues.clip_y_origin = 0; gcValues.clip_mask = None; if (tile) { gcMask |= GCTile; gcValues.tile = tile; } pDAS->normalGC = XCreateGC(dpy, RootWindowOfScreen(XtScreen(pDAS->dispWid)), gcMask, &gcValues); gcMask &= (~GCTile); pDAS->pixmapGC = XCreateGC(dpy, RootWindowOfScreen(XtScreen(pDAS->dispWid)), gcMask, &gcValues); gcValues.foreground = pDAS->backgroundColor; gcValues.background = pDAS->foregroundColor; pDAS->invertGC = XCreateGC(dpy, RootWindowOfScreen(XtScreen(pDAS->dispWid)), gcMask, &gcValues); /* * Set the size of the text view area to the requested * number of columns and lines. */ char_width = pDAS->charWidth * columns; /* * Make sure the margins include enough room for a traversal line */ if (((int) pDAS->marginWidth) < pDAS->lineThickness) pDAS->marginWidth = pDAS->lineThickness; if (((int) pDAS->marginHeight) < pDAS->lineThickness) pDAS->marginHeight = pDAS->lineThickness; if (pDAS->leading < pDAS->lineThickness) pDAS->leading = pDAS->lineThickness; /* * get the scrollbar widths. */ if (NULL != pDAS->horzScrollWid) { n = 0; XtSetArg(args[n], XmNheight , &hBarHeight); n++; XtSetArg(args[n], XmNinitialDelay, &(pDAS->horz_init_scr)); n++; XtSetArg(args[n], XmNrepeatDelay , &(pDAS->horz_rep_scr)); n++; XtGetValues(pDAS->horzScrollWid, args, n); } if (NULL != pDAS->vertScrollWid) { n = 0; XtSetArg(args[n], XmNwidth , &vBarWidth); n++; XtSetArg(args[n], XmNinitialDelay, &(pDAS->vert_init_scr)); n++; XtSetArg(args[n], XmNrepeatDelay , &(pDAS->vert_rep_scr)); n++; XtGetValues(pDAS->vertScrollWid, args, n); } /* * calculate the display area height/width */ pDAS->dispUseWidth = ((int) (char_width / 10 + (char_width % 10 ? 1 : 0))) + 2 * pDAS->marginWidth; if (vert_flag != _DtHelpSTATIC && pDAS->dispUseWidth < vBarWidth) pDAS->dispUseWidth = vBarWidth; pDAS->dispWidth = pDAS->dispUseWidth + 2 * pDAS->decorThickness; pDAS->dispUseHeight = pDAS->lineHeight * rows; if (horz_flag != _DtHelpSTATIC && pDAS->dispUseHeight < hBarHeight) pDAS->dispUseHeight = hBarHeight; pDAS->dispHeight = pDAS->dispUseHeight + 2 * pDAS->decorThickness; /* * Truncate the width and height to the size of the display. * This will prevent an X protocal error when it is asked for * a too large size. Besides, any decent window manager will * force the overall size to the height and width of the display. * This simply refines the size down to a closer (but not perfect) * fit. */ if (((int) pDAS->dispWidth) > XDisplayWidth (dpy, screen)) { pDAS->dispWidth = XDisplayWidth (dpy, screen); } if (((int) pDAS->dispHeight) > XDisplayHeight (dpy, screen)) { pDAS->dispHeight = XDisplayHeight (dpy, screen); } n = 0; pDAS->formWidth = 0; pDAS->formHeight = 0; XtSetArg(args[n], XmNwidth, pDAS->dispWidth); ++n; XtSetArg(args[n], XmNheight, pDAS->dispHeight); ++n; XtSetValues(pDAS->dispWid, args, n); /* * set the scroll bar values */ if (pDAS->vertScrollWid != NULL) { n = 0; XtSetArg(args[n], XmNmaximum , pDAS->dispUseHeight); ++n; XtSetArg(args[n], XmNincrement , pDAS->lineHeight); ++n; XtSetArg(args[n], XmNpageIncrement , pDAS->lineHeight); ++n; XtSetArg(args[n], XmNsliderSize , pDAS->dispUseHeight); ++n; XtSetValues(pDAS->vertScrollWid, args, n); } if (pDAS->resizeCall) (*(pDAS->resizeCall)) (pDAS->clientData); /* * calculate the offset for the right edge of the * horizontal scrollbar. */ if (vert_flag == _DtHelpSTATIC && pDAS->horzScrollWid) { width = vBarWidth + margin_width; XtSetArg(args[0], XmNrightOffset , width); XtSetValues(pDAS->horzScrollWid, args, 1); } /* * calculate the offset for the bottom end of the * vertical scrollbar. */ if (horz_flag == _DtHelpSTATIC && pDAS->vertScrollWid) { width = hBarHeight + margin_height; XtSetArg(args[0], XmNbottomOffset , width); XtSetValues(pDAS->vertScrollWid, args, 1); } rectangle[0].x = pDAS->decorThickness; rectangle[0].y = pDAS->decorThickness; rectangle[0].width = pDAS->dispUseWidth; rectangle[0].height = pDAS->dispUseHeight; XSetClipRectangles(XtDisplay(pDAS->dispWid), pDAS->normalGC, 0, 0, rectangle, 1, Unsorted); XSetClipRectangles(XtDisplay(pDAS->dispWid), pDAS->invertGC, 0, 0, rectangle, 1, Unsorted); /* * get the colormap and the visual */ if (!XtIsShell(parent) && XtParent(parent) != NULL) parent = XtParent(parent); pDAS->visual = NULL; n = 0; XtSetArg (args[n], XmNcolormap, &(pDAS->colormap)); n++; XtSetArg (args[n], XmNvisual , &(pDAS->visual )); n++; XtGetValues (parent, args, n); if (pDAS->visual == NULL) pDAS->visual = XDefaultVisualOfScreen(XtScreen(pDAS->dispWid)); /* * set up the canvas */ _DtHelpProcessLock(); DefVirtFunctions.exec_cmd_filter = exec_ok_routine; pDAS->canvas = _DtCanvasCreate (DefVirtFunctions, (_DtCvPointer) pDAS); _DtHelpProcessUnlock(); return (XtPointer) pDAS; } /* End _DtHelpCreateDA */
Widget XmCreateDrawnButton_TNK(Widget parent, String name, ArgList arglist,Cardinal argcount) { return XmCreateDrawnButton(parent, name, arglist, argcount);}
Widget CreatePcpTools (Widget FM) /************************************************************************ * *_Title CreatePcpTools - Create PCP tools at bottom of display window. * *_Args Type Variable I/O Description *_Parm Widget FM I Main Form id *_Parm Widget CreatePcpTools O Output PCP tool widget id *_Hist Nov 10 2001 Janet Barrett, USGS Flagstaff, Original Version * *_End ***********************************************************************/ { Widget liteClue; Widget FM2; Widget RC,RC1,RC2,RC3,RC4,RC5,RC6,RC7; Widget PB; Widget RB; Widget LB; Widget FR1,FR2,FR,FRL,FRR; static Widget pcplist[15]; Pixmap pmap; unsigned long fg,bg; unsigned long fg2,bg2; XmString xstring; char *sptr; XFontStruct *font1; XmFontList fontlist; XColor closest; XColor exact; font1 = XLoadQueryFont (xinfo.display, "-adobe-courier-medium-r-normal--12-100-100-100-m-90-iso8859-1"); fontlist = XmFontListCreate (font1,"charset1"); sptr = (char *) GBLwork.work[0]; bg2 = WhitePixelOfScreen (xinfo.screen); fg2 = BlackPixelOfScreen (xinfo.screen); liteClue = XtCreatePopupShell("popup_shell",xcgLiteClueWidgetClass, xinfo.topShell,NULL,0); XAllocNamedColor(xinfo.display,xinfo.cmap,"lightyellow", &closest,&exact); XtVaSetValues (liteClue,XmNbackground,closest.pixel,NULL); XtVaSetValues (liteClue,XmNforeground,fg2,NULL); /************************************************************************** * Get the background and foreground colors used by the parent widget and * then create the row/column for the tool bar **************************************************************************/ XtVaGetValues (FM,XmNbackground,&bg, XmNforeground,&fg, NULL); FM2 = XmCreateForm (FM,"PcpTools",NULL,0); FRL = XmCreateFrame (FM2,"FRL",NULL,0); XtVaSetValues (FRL,XmNshadowType,XmSHADOW_ETCHED_IN, XmNtopAttachment,XmATTACH_FORM, XmNbottomAttachment,XmATTACH_FORM, XmNleftAttachment,XmATTACH_FORM, /* XmNmarginHeight,5, XmNmarginWidth,5,*/ NULL); XtManageChild (FRL); FRR = XmCreateFrame (FM2,"FRR",NULL,0); XtVaSetValues (FRR,XmNshadowType,XmSHADOW_ETCHED_IN, XmNtopAttachment,XmATTACH_FORM, XmNbottomAttachment,XmATTACH_FORM, XmNleftAttachment,XmATTACH_WIDGET, XmNleftWidget,FRL, XmNrightAttachment,XmATTACH_FORM, /* XmNmarginHeight,5, XmNmarginWidth,5,*/ NULL); XtManageChild (FRR); RC = XmCreateRowColumn (FRL,"RC",NULL,0); XtVaSetValues (RC,XmNorientation,XmHORIZONTAL, NULL); XtManageChild (RC); RC1 = XmCreateRowColumn (RC,"RC1",NULL,0); XtVaSetValues (RC1,XmNorientation,XmVERTICAL, /* XmNspacing,5,*/ XmNtopAttachment,XmATTACH_WIDGET, XmNtopWidget,RC, XmNbottomAttachment,XmATTACH_WIDGET, XmNbottomWidget,RC, XmNleftAttachment,XmATTACH_WIDGET, XmNleftWidget,RC, /* XmNmarginHeight,5, XmNmarginWidth,25,*/ NULL); XtManageChild (RC1); RC2 = XmCreateRowColumn (RC1,"RC2",NULL,0); XtVaSetValues (RC2,XmNorientation,XmHORIZONTAL, XmNspacing,6, XmNtopAttachment,XmATTACH_WIDGET, XmNtopWidget,RC1, XmNleftAttachment,XmATTACH_WIDGET, XmNleftWidget,RC1, XmNrightAttachment,XmATTACH_WIDGET, XmNrightWidget,RC1, NULL); XtManageChild (RC2); RC3 = XmCreateRowColumn (RC1,"RC3",NULL,0); XtVaSetValues (RC3,XmNorientation,XmHORIZONTAL, /* XmNspacing,120,*/ XmNspacing,13, XmNtopAttachment,XmATTACH_WIDGET, XmNtopWidget,RC2, XmNleftAttachment,XmATTACH_WIDGET, XmNleftWidget,RC1, XmNbottomAttachment,XmATTACH_WIDGET, XmNbottomWidget,RC1, XmNrightAttachment,XmATTACH_WIDGET, XmNrightWidget,RC1, NULL); XtManageChild (RC3); FR = XmCreateFrame (RC1,"FR",NULL,0); XtVaSetValues (FR,XmNshadowType,XmSHADOW_ETCHED_IN, XmNtopAttachment,XmATTACH_WIDGET, XmNtopWidget,RC3, XmNbottomAttachment,XmATTACH_WIDGET, XmNbottomWidget,RC1, XmNleftAttachment,XmATTACH_WIDGET, XmNleftWidget,RC1, XmNrightAttachment,XmATTACH_WIDGET, XmNrightWidget,RC1, /* XmNmarginHeight,5, XmNmarginWidth,5,*/ NULL); XtManageChild (FR); RC4 = XmCreateRowColumn (FR,"RC4",NULL,0); XtVaSetValues (RC4,XmNorientation,XmHORIZONTAL, XmNradioBehavior,True, XmNradioAlwaysOne,True, NULL); XtManageChild (RC4); RC5 = XmCreateRowColumn (FRR,"RC5",NULL,0); XtVaSetValues (RC5,XmNorientation,XmVERTICAL, /* XmNspacing,10,*/ XmNtopAttachment,XmATTACH_WIDGET, XmNtopWidget,FRR, XmNleftAttachment,XmATTACH_WIDGET, XmNleftWidget,FRR, XmNrightAttachment,XmATTACH_WIDGET, XmNrightWidget,FRR, XmNbottomAttachment,XmATTACH_WIDGET, XmNbottomWidget,FRR, /* XmNmarginHeight,5, XmNmarginWidth,35,*/ NULL); XtManageChild (RC5); RC7 = XmCreateRowColumn (RC5,"RC7",NULL,0); XtVaSetValues (RC7,XmNorientation,XmHORIZONTAL, NULL); XtManageChild (RC7); /* FR1 = XmCreateFrame (RC7,"FR1",NULL,0); XtVaSetValues (FR1,XmNshadowType,XmSHADOW_ETCHED_IN, XmNbottomAttachment,XmATTACH_WIDGET, XmNbottomWidget,RC7, XmNleftAttachment,XmATTACH_WIDGET, XmNleftWidget,RC7, XmNtopAttachment,XmATTACH_WIDGET, XmNtopWidget,RC7, NULL); XtManageChild (FR1);*/ FR2 = XmCreateFrame (RC7,"FR2",NULL,0); XtVaSetValues (FR2,XmNshadowType,XmSHADOW_ETCHED_IN, XmNbottomAttachment,XmATTACH_WIDGET, XmNbottomWidget,RC7, /* XmNleftAttachment,XmATTACH_WIDGET, XmNleftWidget,FR1,*/ XmNtopAttachment,XmATTACH_WIDGET, XmNtopWidget,RC7, XmNrightAttachment,XmATTACH_WIDGET, XmNrightWidget,RC7, NULL); XtManageChild (FR2); /* RC6 = XmCreateRowColumn (FR1,"RC6",NULL,0); XtVaSetValues (RC6,XmNorientation,XmHORIZONTAL, XmNradioBehavior,True, XmNradioAlwaysOne,True, NULL); XtManageChild (RC6);*/ RC7 = XmCreateRowColumn (FR2,"RC7",NULL,0); XtVaSetValues (RC7,XmNorientation,XmHORIZONTAL, XmNradioBehavior,True, XmNradioAlwaysOne,True, NULL); XtManageChild (RC7); /************************************************************************** * Create the go pushbutton **************************************************************************/ XAllocNamedColor(xinfo.display,xinfo.cmap,"green", &closest,&exact); pmap = XCreatePixmapFromBitmapData (xinfo.display,xinfo.root, (char *)go_bits,go_width,go_height, closest.pixel,bg,xinfo.depth); /* fg,bg,xinfo.depth);*/ PB = XmCreateDrawnButton (RC2,"goPB",NULL,0); XtVaSetValues (PB,XmNlabelPixmap,pmap, XmNlabelType,XmPIXMAP, XmNpushButtonEnabled,True, XmNuserData,((int) V_GO_BTN), XmNalignment,XmALIGNMENT_CENTER, XmNwidth,31, XmNheight,31, NULL); XtManageChild (PB); XtAddCallback (PB,XmNactivateCallback,CBtoolPcpPB,(XtPointer) pcplist); XcgLiteClueAddWidget(liteClue,PB,"Start NR Iteration",0,0); pcplist[1] = PB; /************************************************************************** * Create the go 1 step pushbutton **************************************************************************/ XAllocNamedColor(xinfo.display,xinfo.cmap,"green", &closest,&exact); pmap = XCreatePixmapFromBitmapData (xinfo.display,xinfo.root, (char *)go1_bits,go1_width,go1_height, closest.pixel,bg,xinfo.depth); /* fg,bg,xinfo.depth);*/ PB = XmCreateDrawnButton (RC2,"go1PB",NULL,0); XtVaSetValues (PB,XmNlabelPixmap,pmap, XmNlabelType,XmPIXMAP, XmNpushButtonEnabled,True, XmNuserData,((int) V_GO1_BTN), XmNalignment,XmALIGNMENT_CENTER, XmNwidth,31, XmNheight,31, NULL); XtManageChild (PB); XtAddCallback (PB,XmNactivateCallback,CBtoolPcpPB,(XtPointer) pcplist); XcgLiteClueAddWidget(liteClue,PB,"Do 1 NR Step",0,0); pcplist[2] = PB; /************************************************************************** * Create the pause pushbutton **************************************************************************/ pmap = XCreatePixmapFromBitmapData (xinfo.display,xinfo.root, (char *)pause_bits,pause_width,pause_height, fg,bg,xinfo.depth); PB = XmCreateDrawnButton (RC2,"pausePB",NULL,0); XtVaSetValues (PB,XmNlabelPixmap,pmap, XmNlabelType,XmPIXMAP, XmNpushButtonEnabled,True, XmNuserData,((int) V_PAUSE_BTN), XmNalignment,XmALIGNMENT_CENTER, XmNwidth,31, XmNheight,31, NULL); XtManageChild (PB); XtAddCallback (PB,XmNactivateCallback,CBtoolPcpPB,(XtPointer) pcplist); XcgLiteClueAddWidget(liteClue,PB,"Stop NR Iteration",0,0); pcplist[3] = PB; /************************************************************************** * Create the resolution down pushbutton **************************************************************************/ XAllocNamedColor(xinfo.display,xinfo.cmap,"lightgoldenrod1", &closest,&exact); pmap = XCreatePixmapFromBitmapData (xinfo.display,xinfo.root, (char *)resdn_bits,resdn_width,resdn_height, closest.pixel,bg,xinfo.depth); /* fg,bg,xinfo.depth);*/ PB = XmCreateDrawnButton (RC2,"resdnPB",NULL,0); XtVaSetValues (PB,XmNlabelPixmap,pmap, XmNlabelType,XmPIXMAP, XmNpushButtonEnabled,True, XmNuserData,((int) V_RESDN_BTN), XmNalignment,XmALIGNMENT_CENTER, XmNwidth,31, XmNheight,31, NULL); XtManageChild (PB); XtAddCallback (PB,XmNactivateCallback,CBtoolPcpPB,(XtPointer) pcplist); XcgLiteClueAddWidget(liteClue,PB,"Decrease Res",0,0); pcplist[4] = PB; /************************************************************************** * Create the resolution up pushbutton **************************************************************************/ XAllocNamedColor(xinfo.display,xinfo.cmap,"lightskyblue", &closest,&exact); pmap = XCreatePixmapFromBitmapData (xinfo.display,xinfo.root, (char *)resup_bits,resup_width,resup_height, closest.pixel,bg,xinfo.depth); /* fg,bg,xinfo.depth);*/ PB = XmCreateDrawnButton (RC2,"resupPB",NULL,0); XtVaSetValues (PB,XmNlabelPixmap,pmap, XmNlabelType,XmPIXMAP, XmNpushButtonEnabled,True, XmNuserData,((int) V_RESUP_BTN), XmNalignment,XmALIGNMENT_CENTER, XmNwidth,31, XmNheight,31, NULL); XtManageChild (PB); XtAddCallback (PB,XmNactivateCallback,CBtoolPcpPB,(XtPointer) pcplist); XcgLiteClueAddWidget(liteClue,PB,"Increase Res",0,0); XtSetSensitive(PB,False); pcplist[5] = PB; /************************************************************************** * Create the Done pushbutton **************************************************************************/ XAllocNamedColor(xinfo.display,xinfo.cmap,"red",&closest,&exact); pmap = XCreatePixmapFromBitmapData (xinfo.display,xinfo.root, (char *)stop_bits,stop_width,stop_height, closest.pixel,bg,xinfo.depth); /* fg,bg,xinfo.depth);*/ PB = XmCreateDrawnButton (RC2,"stopPB",NULL,0); XtVaSetValues (PB,XmNlabelPixmap,pmap, XmNlabelType,XmPIXMAP, XmNpushButtonEnabled,True, XmNuserData,((int) V_DONE_BTN), XmNalignment,XmALIGNMENT_CENTER, XmNwidth,31, XmNheight,31, NULL); XtManageChild (PB); XtAddCallback (PB,XmNactivateCallback,CBtoolPcpPB,(XtPointer) pcplist); XcgLiteClueAddWidget(liteClue,PB,"Exit Program",0,0); pcplist[6] = PB; /************************************************************************** * Create the Back (undo) pushbutton **************************************************************************/ pmap = XCreatePixmapFromBitmapData (xinfo.display,xinfo.root, (char *)back_bits,back_width,back_height, fg,bg,xinfo.depth); PB = XmCreateDrawnButton (RC2,"backPB",NULL,0); XtVaSetValues (PB,XmNlabelPixmap,pmap, XmNlabelType,XmPIXMAP, XmNpushButtonEnabled,True, XmNuserData,((int) V_BACK_BTN), XmNalignment,XmALIGNMENT_CENTER, XmNwidth,31, XmNheight,31, NULL); XtSetSensitive(PB,False); XtManageChild (PB); XtAddCallback (PB,XmNactivateCallback,CBtoolPcpPB,(XtPointer) pcplist); XcgLiteClueAddWidget(liteClue,PB,"Undo 1 NR Step",0,0); pcplist[7] = PB; /************************************************************************** * Create the Azimuth of Characteristics text field **************************************************************************/ charazLB = XmCreateLabel (RC5,"Az of Characteristics=",NULL,0); sprintf(sptr,"Az of Characteristics=%f",charazgrid); xstring = XmStringCreateSimple(sptr); XtVaSetValues (charazLB,XmNfontList,fontlist, XmNlabelString,xstring, XmNtopAttachment,XmATTACH_WIDGET, XmNtopWidget,RC5, XmNleftAttachment,XmATTACH_WIDGET, XmNleftWidget,RC5, XmNrightAttachment,XmATTACH_WIDGET, XmNrightWidget,RC5, XmNmarginHeight,0, XmNmarginWidth,0, NULL); XtManageChild (charazLB); XmStringFree(xstring); /************************************************************************** * Create the Resolution factor text field **************************************************************************/ fmagLB = XmCreateLabel (RC5,"Resolution factor=1",NULL,0); sprintf(sptr,"Resolution factor=1"); xstring = XmStringCreateSimple(sptr); XtVaSetValues (fmagLB,XmNfontList,fontlist, XmNlabelString,xstring, XmNtopAttachment,XmATTACH_WIDGET, XmNtopWidget,charazLB, XmNleftAttachment,XmATTACH_WIDGET, XmNleftWidget,RC5, XmNrightAttachment,XmATTACH_WIDGET, XmNrightWidget,RC5, XmNmarginHeight,0, XmNmarginWidth,0, NULL); XtManageChild (fmagLB); XmStringFree(xstring); /************************************************************************** * Create the RMS right hand side and B error text field **************************************************************************/ rmsrhsberLB = XmCreateLabel (RC5,"RMS righthand side,B error=",NULL,0); sprintf(sptr,"RMS righthand side,B error="); xstring = XmStringCreateSimple(sptr); XtVaSetValues (rmsrhsberLB,XmNfontList,fontlist, XmNlabelString,xstring, XmNtopAttachment,XmATTACH_WIDGET, XmNtopWidget,fmagLB, XmNleftAttachment,XmATTACH_WIDGET, XmNleftWidget,RC5, XmNrightAttachment,XmATTACH_WIDGET, XmNrightWidget,RC5, XmNmarginHeight,0, XmNmarginWidth,0, NULL); XtManageChild (rmsrhsberLB); XmStringFree(xstring); /************************************************************************** * Create the Dip,Az of dip (degrees) text field **************************************************************************/ dipLB = XmCreateLabel (RC5,"Dip,Az of dip (degrees)=",NULL,0); sprintf(sptr,"Dip,Az of dip (degrees)="); xstring = XmStringCreateSimple(sptr); XtVaSetValues (dipLB,XmNfontList,fontlist, XmNlabelString,xstring, XmNtopAttachment,XmATTACH_WIDGET, XmNtopWidget,rmsrhsberLB, XmNleftAttachment,XmATTACH_WIDGET, XmNleftWidget,RC5, XmNrightAttachment,XmATTACH_WIDGET, XmNrightWidget,RC5, XmNmarginHeight,0, XmNmarginWidth,0, NULL); XtManageChild (dipLB); XmStringFree(xstring); /************************************************************************** * Create the Slope of plane toward Sun in degrees text field **************************************************************************/ plnslpLB = XmCreateLabel (RC5,"Slope of plane toward Sun (degrees)=",NULL,0); sprintf(sptr,"Slope of plane toward Sun (degrees)="); xstring = XmStringCreateSimple(sptr); XtVaSetValues (plnslpLB,XmNfontList,fontlist, XmNlabelString,xstring, XmNtopAttachment,XmATTACH_WIDGET, XmNtopWidget,dipLB, XmNleftAttachment,XmATTACH_WIDGET, XmNleftWidget,RC5, XmNrightAttachment,XmATTACH_WIDGET, XmNrightWidget,RC5, XmNmarginHeight,0, XmNmarginWidth,0, NULL); XtManageChild (plnslpLB); XmStringFree(xstring); /************************************************************************** * Create the RMS residual to fit in meters,pixels text field **************************************************************************/ rmsresLB = XmCreateLabel (RC5,"RMS residual to fit (m,pixels)=",NULL,0); sprintf(sptr,"RMS residual to fit (m,pixels)="); xstring = XmStringCreateSimple(sptr); XtVaSetValues (rmsresLB,XmNfontList,fontlist, XmNlabelString,xstring, XmNtopAttachment,XmATTACH_WIDGET, XmNtopWidget,plnslpLB, XmNleftAttachment,XmATTACH_WIDGET, XmNleftWidget,RC5, XmNrightAttachment,XmATTACH_WIDGET, XmNrightWidget,RC5, XmNmarginHeight,0, XmNmarginWidth,0, NULL); XtManageChild (rmsresLB); XmStringFree(xstring); /************************************************************************** * Create the Hints text field **************************************************************************/ hintsLB = XmCreateLabel (RC5,"Hints/Errors:",NULL,0); sprintf(sptr,"Hints/Errors:"); xstring = XmStringCreateSimple(sptr); XtVaSetValues (hintsLB,XmNfontList,fontlist, XmNlabelString,xstring, XmNtopAttachment,XmATTACH_WIDGET, XmNtopWidget,rmsresLB, XmNbottomAttachment,XmATTACH_WIDGET, XmNbottomWidget,RC5, XmNleftAttachment,XmATTACH_WIDGET, XmNleftWidget,RC5, XmNrightAttachment,XmATTACH_WIDGET, XmNrightWidget,RC5, XmNmarginHeight,0, XmNmarginWidth,0, NULL); XtManageChild (hintsLB); XmStringFree(xstring); /************************************************************************** * Create the Errors text field **************************************************************************/ /* errorsLB = XmCreateLabel (RC5,"Errors:",NULL,0); sprintf(sptr,"Errors:"); xstring = XmStringCreateSimple(sptr); XtVaSetValues (errorsLB,XmNfontList,fontlist, XmNlabelString,xstring, XmNtopAttachment,XmATTACH_WIDGET, XmNtopWidget,hintsLB, XmNleftAttachment,XmATTACH_WIDGET, XmNleftWidget,RC5, XmNrightAttachment,XmATTACH_WIDGET, XmNrightWidget,RC5, XmNmarginHeight,0, XmNmarginWidth,0, NULL); XtManageChild (errorsLB); XmStringFree(xstring); */ /************************************************************************** * Create the Smooth (Boxcar) pushbutton **************************************************************************/ /* PB = XmCreatePushButton (RC5,"Smooth",NULL,0); XtVaSetValues (PB,XmNuserData,((int) V_SMOOTH_BTN), XmNfontList,fontlist, NULL); XtManageChild (PB); XtAddCallback (PB,XmNactivateCallback,CBtoolPcpPB,(XtPointer) pcplist); pcplist[7] = PB;*/ /************************************************************************** * Create the Parameters pushbutton **************************************************************************/ /* PB = XmCreatePushButton (RC5,"Parameters",NULL,0); XtVaSetValues (PB,XmNuserData,((int) V_PARAM_BTN), XmNfontList,fontlist, NULL); XtManageChild (PB); XtAddCallback (PB,XmNactivateCallback,CBtoolPcpPB,(XtPointer) pcplist); pcplist[8] = PB;*/ /************************************************************************** * Create the Relaxation slider bar **************************************************************************/ WMAXslider = XmCreateScale (RC3,"relaxSB",NULL,0); XtVaSetValues (WMAXslider,XmNminimum,0, XmNmaximum,20, XmNdecimalPoints,1, XmNvalue,10, XmNshowValue,True, XmNorientation,XmHORIZONTAL, XtVaTypedArg,XmNtitleString,XmRString, "Relaxation",11, XmNfontList,fontlist, NULL); XtManageChild (WMAXslider); /************************************************************************** * Create the Maximum SOR step slider bar **************************************************************************/ ITMAXslider = XmCreateScale (RC3,"maxsorSB",NULL,0); XtVaSetValues (ITMAXslider,XmNminimum,1, XmNmaximum,30, XmNvalue,15, XmNshowValue,True, XmNorientation,XmHORIZONTAL, XtVaTypedArg,XmNtitleString,XmRString, "Max SOR Steps",14, XmNfontList,fontlist, NULL); XtManageChild (ITMAXslider); /************************************************************************** * Create the Solution Type label **************************************************************************/ LB = XmCreateLabel (RC4,"Solution Type:",NULL,0); XtVaSetValues (LB,XmNalignment,XmALIGNMENT_BEGINNING, XmNfontList,fontlist, NULL); XtManageChild (LB); /************************************************************************** * Create the SOR toggle button **************************************************************************/ SORbtn = XmCreateToggleButton (RC4,"SOR",NULL,0); XtVaSetValues (SORbtn,XmNuserData,((int) V_SOR_BTN), XmNfontList,fontlist, NULL); XmToggleButtonSetState(SORbtn,True,False); XtManageChild (SORbtn); pcplist[8] = SORbtn; /************************************************************************** * Create the DIR toggle button **************************************************************************/ DIRbtn = XmCreateToggleButton (RC4,"Direct",NULL,0); XtVaSetValues (DIRbtn,XmNuserData,((int) V_DIRECT_BTN), XmNfontList,fontlist, NULL); XtSetSensitive(DIRbtn,True); XtManageChild (DIRbtn); pcplist[9] = DIRbtn; /************************************************************************** * Create the CGM toggle button **************************************************************************/ CGMbtn = XmCreateToggleButton (RC4,"CGM",NULL,0); XtVaSetValues (CGMbtn,XmNuserData,((int) V_CGM_BTN), XmNfontList,fontlist, NULL); XtSetSensitive(CGMbtn,False); XtManageChild (CGMbtn); pcplist[10] = CGMbtn; /************************************************************************** * Create the Display label **************************************************************************/ /* LB = XmCreateLabel (RC6,"Display:",NULL,0); XtVaSetValues (LB,XmNalignment,XmALIGNMENT_BEGINNING, XmNfontList,fontlist, NULL); XtManageChild (LB);*/ /************************************************************************** * Create the Display On toggle button **************************************************************************/ /* DSPONbtn = XmCreateToggleButton (RC6,"On",NULL,0); XtVaSetValues (DSPONbtn,XmNuserData,((int) V_DSPON_BTN), XmNfontList,fontlist, NULL); XmToggleButtonSetState(DSPONbtn,True,False); XtManageChild (DSPONbtn); pcplist[11] = DSPONbtn;*/ /************************************************************************** * Create the Display Off toggle button **************************************************************************/ /* DSPOFFbtn = XmCreateToggleButton (RC6,"Off",NULL,0); XtVaSetValues (DSPOFFbtn,XmNuserData,((int) V_DSPOFF_BTN), XmNfontList,fontlist, NULL); XtSetSensitive(DSPOFFbtn,False); XtManageChild (DSPOFFbtn); pcplist[12] = DSPOFFbtn;*/ /************************************************************************** * Create the Inject label **************************************************************************/ LB = XmCreateLabel (RC7,"Inject:",NULL,0); XtVaSetValues (LB,XmNalignment,XmALIGNMENT_BEGINNING, XmNfontList,fontlist, NULL); XtManageChild (LB); /************************************************************************** * Create the Inject Exact toggle button **************************************************************************/ EXACTbtn = XmCreateToggleButton (RC7,"Exact",NULL,0); XtVaSetValues (EXACTbtn,XmNuserData,((int) V_EXACT_BTN), XmNfontList,fontlist, NULL); XmToggleButtonSetState(EXACTbtn,True,False); XtManageChild (EXACTbtn); pcplist[13] = EXACTbtn; /************************************************************************** * Create the Inject Fast toggle button **************************************************************************/ FASTbtn = XmCreateToggleButton (RC7,"Fast",NULL,0); XtVaSetValues (FASTbtn,XmNuserData,((int) V_FAST_BTN), XmNfontList,fontlist, NULL); XtSetSensitive(FASTbtn,True); XtManageChild (FASTbtn); pcplist[14] = FASTbtn; return FM2; }