/* * Motif * * Copyright (c) 1987-2012, The Open Group. All rights reserved. * * These libraries and programs are free software; you can * redistribute them and/or modify them under the terms of the GNU * Lesser General Public License as published by the Free Software * Foundation; either version 2 of the License, or (at your option) * any later version. * * These libraries and programs are distributed in the hope that * they will be useful, but WITHOUT ANY WARRANTY; without even the * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public * License along with these librararies and programs; if not, write * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth * Floor, Boston, MA 02110-1301 USA */ /* * HISTORY */ #ifdef REV_INFO #ifndef lint static char *rcsid = "$XConsortium: interface.c /main/7 1996/06/11 17:27:01 pascale $"; #endif #endif #include #include #include #ifdef USE_CMS #include #endif /* USE_CMS */ #include #include #include #include #include #include #include #include #include "transfer.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /* These translations make togglebutton ignore the user, they're used to prevent the user from setting or clearing the ownership display */ #define TB_NO_USER_INPUT \ ": NOP()\n\ : NOP()\n\ c: NOP()\n\ ~c: NOP()\n\ ~c: NOP()" Widget CreateHelpDialog(); void manageCB(); /* Local variables used when selecting screen & display */ static Display * sDisplay = NULL; static Screen * sScreen = NULL; Widget mainwindow, menubar, form, optionmenu, selectionmenu, primary, secondary, clipboard, named, state, op, omd, onamed, frame, target, frame1, workarea, field2, l2, text2, format_om, formatmenu, format_s, format_l, format_t, format_cs, format_id, format_ih, field1, l1, text1, buttons, typeOM, typepulldown, b_atom, b_drawable, b_window, b_colormap, b_integer, b_pixel, b_compound_text, b_string, b_span, b_locale_text, b__motif_compound_string, unknown_button, list, b_locale, framelabel, defer, text_display; /**************************************************************** * get_constraint_widget: ****************************************************************/ static Widget get_constraint_widget(Widget child, Widget parent) { Widget w; w = child; while (XtParent(w) != parent) w = XtParent(w); return (w); } /**************************************************************** * * Main C code for presentation component * ****************************************************************/ /************************************************************** * create_mainWindow_widget: **************************************************************/ Widget create_mainWindow_widget(char * name, Widget parent) { Arg args[27]; Arg pargs[27]; Widget tmpw; Widget helpDialog, helpMenu, help, help_overview, pulldown; Widget frame1; XmString xms; XmString xms1; XtPointer closure; int inc; int n; int pn; #ifdef USE_CMS XcmsColor target_color, exact_color; #else XColor target_color, exact_color; #endif /* USE_CMS */ Pixel target_color_pixel; XtTranslations toggle_button_trans = XtParseTranslationTable(TB_NO_USER_INPUT); XmRendition rend[1]; XmRenderTable listRT; XmTabList listTabs = NULL; XmTab tabs[1]; WidgetList menu; Cardinal count; /* RenderTable */ tabs[0] = XmTabCreate(3.0, XmINCHES, XmABSOLUTE, XmALIGNMENT_BEGINNING, NULL); listTabs = XmTabListInsertTabs(NULL, tabs, 1, 0); XmTabFree(tabs[0]); n = 0; XtSetArg(args[n], XmNfontName, "*helvetica-bold-r-*-12-*"); n++; XtSetArg(args[n], XmNfontType, XmFONT_IS_FONT); n++; XtSetArg(args[n], XmNtabList, listTabs); n++; rend[0] = XmRenditionCreate(parent, XmFONTLIST_DEFAULT_TAG, args, n); listRT = XmRenderTableAddRenditions(NULL, rend, 1, XmMERGE_REPLACE);; XmTabListFree(listTabs); XmRenditionFree(rend[0]); /* Get red color, or white if monochrome or failure */ if (DefaultDepthOfScreen(XtScreen(parent)) > 1 && /* XcmsLookupColor(XtDisplay(parent), DefaultColormapOfScreen(XtScreen(parent)), "CIEuvY:0.0/0.0/1.0", &exact_color, &target_color, XcmsUndefinedFormat) == XcmsSuccess && XcmsAllocColor(XtDisplay(parent), DefaultColormapOfScreen(XtScreen(parent)), &target_color, XcmsUndefinedFormat) == XcmsSuccess) */ XLookupColor(XtDisplay(parent), DefaultColormapOfScreen(XtScreen(parent)), "red", &exact_color, &target_color) != 0 && XAllocColor(XtDisplay(parent), DefaultColormapOfScreen(XtScreen(parent)), &target_color) != 0) target_color_pixel = target_color.pixel; else target_color_pixel = WhitePixelOfScreen(XtScreen(parent)); mainwindow = XmCreateMainWindow(parent, name, NULL, 0); menubar = XmCreateMenuBar(mainwindow, "menuBar", NULL, 0); pulldown = XmdCreateMenu(SELECTED_MENU, menubar, &menu, &count); XtVaSetValues(pulldown, XmNtearOffModel, XmTEAR_OFF_ENABLED, NULL, NULL); XtUnmanageChild(menu[SELECTED_OPEN]); XtManageChild(menu[SELECTED_PROPERTIES]); XtManageChild(menu[SELECTED_NEW]); XtUnmanageChild(menu[SELECTED_SEP1]); XtManageChild(menu[SELECTED_DELETE]); XtAddCallback(menu[SELECTED_DELETE], XmNactivateCallback, (XtCallbackProc) RemoveValue, NULL); XtAddCallback(menu[SELECTED_NEW], XmNactivateCallback, (XtCallbackProc) manageCB, (XtPointer) editBox); XtAddCallback(menu[SELECTED_PROPERTIES], XmNactivateCallback, (XtCallbackProc) manageCB, (XtPointer) editBox); XtAddCallback(menu[SELECTED_NEW], XmNactivateCallback, (XtCallbackProc) EditItem, (XtPointer) 0); XtAddCallback(menu[SELECTED_PROPERTIES], XmNactivateCallback, (XtCallbackProc) EditItem, (XtPointer) 1); XtAddCallback(menu[SELECTED_EXIT], XmNactivateCallback, (XtCallbackProc) quitCB, NULL); pulldown = XmdCreateMenu(EDIT_MENU, menubar, &menu, &count); XtVaSetValues(pulldown, XmNtearOffModel, XmTEAR_OFF_ENABLED, NULL, NULL); XtAddCallback(menu[EDIT_CUT], XmNactivateCallback, (XtCallbackProc) cut, NULL); XtAddCallback(menu[EDIT_COPY], XmNactivateCallback, (XtCallbackProc) copy, NULL); XtAddCallback(menu[EDIT_PASTE], XmNactivateCallback, (XtCallbackProc) paste, NULL); xms = XmStringCreateLocalized("Paste and Delete"); XtVaSetValues(menu[EDIT_PASTE_SPECIAL], XmNlabelString, xms, NULL, NULL); XmStringFree(xms); XtAddCallback(menu[EDIT_PASTE_SPECIAL], XmNactivateCallback, (XtCallbackProc) pasteMove, NULL); XtManageChild(menu[EDIT_PASTE_SPECIAL]); XtUnmanageChild(menu[EDIT_DELETE]); /*********** Create the help menu and help text *********/ helpMenu = XmCreatePulldownMenu(menubar, "helpMenu", NULL, 0); n = 0; XtSetArg(args[n], XmNsubMenuId, helpMenu); n++; XtSetArg(args[n], XmNmnemonic, 'H'); n++; help = XmCreateCascadeButtonGadget(menubar, "Help", args, n); XtManageChild(help); n = 0; XtSetArg(args[n], XmNmenuHelpWidget, help); n++; XtSetValues(menubar, args, n); helpDialog = CreateHelpDialog(mainwindow, "helpDialog"); n = 0; XtSetArg(args[n], XmNmnemonic, 'O'); n++; help_overview = XmCreatePushButtonGadget(helpMenu, "Overview", args, n); XtManageChild(help_overview); XtAddCallback(help_overview, XmNactivateCallback, (XtCallbackProc) manageCB, (XtPointer) helpDialog); /***************** form : XmForm *****************/ n = 0; XtSetArg(args[n], XmNrubberPositioning, False); n++; XtSetArg(args[n], XmNresizePolicy, XmRESIZE_ANY); n++; form = XmCreateForm(mainwindow, "form", args, n); /***************** SelectionMenu : XmPulldownMenu *****************/ selectionmenu = XmCreatePulldownMenu(form, "SelectionMenu", NULL, 0); /***************** Primary : XmPushButtonGadget *****************/ n = 0; XtSetArg(args[n], XmNmnemonic, 'P'); n++; primary = XmCreatePushButtonGadget(selectionmenu, "Primary", args, n); /***************** Secondary : XmPushButtonGadget *****************/ n = 0; XtSetArg(args[n], XmNmnemonic, 'S'); n++; secondary = XmCreatePushButtonGadget(selectionmenu, "Secondary", args, n); /***************** Clipboard : XmPushButtonGadget *****************/ n = 0; XtSetArg(args[n], XmNmnemonic, 'C'); n++; clipboard = XmCreatePushButtonGadget(selectionmenu, "Clipboard", args, n); /***************** Named : XmPushButtonGadget *****************/ n = 0; XtSetArg(args[n], XmNmnemonic, 'A'); n++; named = XmCreatePushButtonGadget(selectionmenu, "NamedAtom", args, n); /***************** optionMenu : XmOptionMenu *****************/ n = 0; xms = XmStringCreateLocalized("Selection"); XtSetArg(args[n], XmNlabelString, xms); n++; XtSetArg(args[n], XmNmnemonic, 'S'); n++; XtSetArg(args[n], XmNresizable, True); n++; XtSetArg(args[n], XmNsubMenuId, selectionmenu); n++; optionmenu = XmCreateOptionMenu(form, "optionMenu", args, n); if (xms) XmStringFree(xms); /***************** state : XmRowColumn *****************/ n = 0; XtSetArg(args[n], XmNorientation, XmVERTICAL); n++; state = XmCreateRowColumn(form, "state", args, n); /***************** showPrimary : XmToggleButtonGadget *****************/ n = 0; xms = XmStringCreateLocalized("Owns Primary"); XtSetArg(args[n], XmNlabelString, xms); n++; XtSetArg(args[n], XmNindicatorType, XmN_OF_MANY); n++; XtSetArg(args[n], XmNindicatorOn, XmINDICATOR_CHECK); n++; XtSetArg(args[n], XmNindicatorSize, 15); n++; XtSetArg(args[n], XmNtraversalOn, False); n++; op = XmCreateToggleButton(state, "showPrimary", args, n); XtOverrideTranslations(op, toggle_button_trans); if (xms) XmStringFree(xms); /***************** showMotifDest : XmToggleButtonGadget *****************/ n = 0; xms = XmStringCreateLocalized("Owns Destination"); XtSetArg(args[n], XmNlabelString, xms); n++; XtSetArg(args[n], XmNindicatorType, XmN_OF_MANY); n++; XtSetArg(args[n], XmNindicatorOn, XmINDICATOR_CHECK); n++; XtSetArg(args[n], XmNindicatorSize, 15); n++; XtSetArg(args[n], XmNtraversalOn, False); n++; omd = XmCreateToggleButton(state, "showMotifDest", args, n); XtOverrideTranslations(omd, toggle_button_trans); if (xms) XmStringFree(xms); /***************** showNamed : XmToggleButtonGadget *****************/ n = 0; xms = XmStringCreateLocalized("Owns Named"); XtSetArg(args[n], XmNlabelString, xms); n++; XtSetArg(args[n], XmNindicatorType, XmN_OF_MANY); n++; XtSetArg(args[n], XmNindicatorOn, XmINDICATOR_CHECK); n++; XtSetArg(args[n], XmNindicatorSize, 15); n++; XtSetArg(args[n], XmNtraversalOn, False); n++; onamed = XmCreateToggleButton(state, "showNamed", args, n); XtOverrideTranslations(onamed, toggle_button_trans); if (xms) XmStringFree(xms); /***************** frame : XmFrame *****************/ n = 0; XtSetArg(args[n], XmNx, 57); n++; XtSetArg(args[n], XmNy, 63); n++; XtSetArg(args[n], XmNresizable, True); n++; frame = XmCreateFrame(form, "frame", args, n); /***************** drawingArea : XmDrawingArea *****************/ n = 0; XtSetArg(args[n], XmNx, 145); n++; XtSetArg(args[n], XmNy, 68); n++; XtSetArg(args[n], XmNwidth, 70); n++; XtSetArg(args[n], XmNheight, 70); n++; XtSetArg(args[n], XtNbackground, target_color_pixel); n++; target = XmCreateDrawingArea(frame, "drawingArea", args, n); /***************** frame1 : XmFrame *****************/ n = 0; XtSetArg(args[n], XmNresizable, True); n++; frame1 = XmCreateFrame(form, "frame1", args, n); /***************** display : XmScrolledCSText ******************/ n = 0; XtSetArg(args[n], XmNresizable, True); n++; XtSetArg(args[n], XmNeditMode, XmMULTI_LINE_EDIT); n++; XtSetArg(args[n], XmNeditable, False); n++; XtSetArg(args[n], XmNrows, 5); n++; text_display = XmCreateScrolledCSText(frame1, "display", args, n); /***************** targetList : XmScrolledList *****************/ n = 0; XtSetArg(args[n], XmNx, 52); n++; XtSetArg(args[n], XmNy, 226); n++; XtSetArg(args[n], XmNwidth, 250); n++; XtSetArg(args[n], XmNheight, 240); n++; XtSetArg(args[n], XmNselectionPolicy, XmBROWSE_SELECT); n++; XtSetArg(args[n], XmNfontList, listRT); n++; list = XmCreateScrolledList(form, "targetList", args, n); XtManageChild(menubar); /***************** optionMenu : XmOptionMenu *****************/ n = 0; XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNleftOffset, 10); n++; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNtopOffset, 10); n++; XtSetValues(optionmenu, args, n); XtAddCallback(primary, XmNactivateCallback, (XtCallbackProc) setMode, (XtPointer) Mprimary); XtManageChild(primary); XtAddCallback(secondary, XmNactivateCallback, (XtCallbackProc) setMode, (XtPointer) Msecondary); XtManageChild(secondary); XtAddCallback(clipboard, XmNactivateCallback, (XtCallbackProc) setMode, (XtPointer) Mclipboard); XtManageChild(clipboard); XtAddCallback(named, XmNactivateCallback, (XtCallbackProc) setMode, (XtPointer) Mnamed); XtManageChild(named); XtManageChild(optionmenu); /***************** state : XmRowColumn *****************/ n = 0; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); n++; XtSetArg(args[n], XmNleftWidget, frame); n++; XtSetValues(state, args, n); XtManageChild(op); XtManageChild(omd); XtManageChild(onamed); XtManageChild(state); /***************** frame : XmFrame *****************/ n = 0; XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); n++; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNtopOffset, 10); n++; XtSetArg(args[n], XmNleftOffset, 10); n++; XtSetArg(args[n], XmNleftWidget, optionmenu); n++; XtSetValues(frame, args, n); XtManageChild(target); XtManageChild(frame); /***************** frame1 : XmFrame *****************/ n = 0; XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNleftOffset, 10); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg(args[n], XmNtopWidget, frame); n++; XtSetArg(args[n], XmNtopOffset, 6); n++; XtSetArg(args[n], XmNrightOffset, 10); n++; XtSetValues(frame1, args, n); /***************** targetList : XmScrolledList *****************/ pn = 0; XtAddCallback(list, XmNbrowseSelectionCallback, (XtCallbackProc) ListSelectItem, NULL); XtAddCallback(list, XmNdefaultActionCallback, (XtCallbackProc) manageCB, (XtPointer) editBox); XtAddCallback(list, XmNdefaultActionCallback, (XtCallbackProc) EditItem, (XtPointer) 1); XtSetArg(pargs[pn], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); pn++; XtSetArg(pargs[pn], XmNrightAttachment, XmATTACH_OPPOSITE_WIDGET); pn++; XtSetArg(pargs[pn], XmNtopAttachment, XmATTACH_WIDGET); pn++; XtSetArg(pargs[pn], XmNtopWidget, frame1); pn++; XtSetArg(pargs[pn], XmNtopOffset, 5); pn++; XtSetArg(pargs[pn], XmNleftWidget, frame1); pn++; XtSetArg(pargs[pn], XmNleftOffset, 0); pn++; XtSetArg(pargs[pn], XmNrightWidget, frame1); pn++; XtSetArg(pargs[pn], XmNrightOffset, 0); pn++; XtSetArg(pargs[pn], XmNbottomAttachment, XmATTACH_FORM); pn++; XtSetArg(pargs[pn], XmNbottomOffset, 5); pn++; tmpw = get_constraint_widget(list, form); if (tmpw) XtSetValues(tmpw, pargs, pn); XtManageChild(text_display); XtManageChild(frame1); XtManageChild(list); XtManageChild(form); XtManageChild(mainwindow); return mainwindow; } /************************************************************** * create_editbox_widget: **************************************************************/ Widget create_editbox_widget(char * name, Widget parent) { Arg args[27]; Arg pargs[27]; Widget dialog, tmpw; Widget button; Cardinal n, pn; XmString xms; XmString ls1, ls2, ls3; n = 0; ls1 = XmStringCreateLocalized("OK"); ls2 = XmStringCreateLocalized("Cancel"); ls3 = XmStringCreateLocalized("Help"); XtSetArg(args[n], XmNokLabelString, ls1); n++; XtSetArg(args[n], XmNcancelLabelString, ls2); n++; XtSetArg(args[n], XmNhelpLabelString, ls3); n++; XtSetArg(args[n], XmNautoUnmanage, False); n++; dialog = XmCreateTemplateDialog(parent, name, args, n); XmStringFree(ls1); XmStringFree(ls2); XmStringFree(ls3); XtAddCallback(dialog, XmNokCallback, (XtCallbackProc) unmanageCB, dialog); XtAddCallback(dialog, XmNcancelCallback, (XtCallbackProc) unmanageCB, dialog); XtAddCallback(dialog, XmNhelpCallback, (XtCallbackProc) unmanageCB, dialog); XtAddCallback(dialog, XmNokCallback, (XtCallbackProc) SetValue, dialog); n = 0; button = XmCreatePushButtonGadget(dialog, "Apply", args, n); XtManageChild(button); XtAddCallback(button, XmNactivateCallback, (XtCallbackProc) SetValue, dialog); /***************** frame1 : XmFrame *****************/ n = 0; XtSetArg(args[n], XmNresizable, True); n++; frame1 = XmCreateFrame(dialog, "frame1", args, n); /***************** workArea : XmWorkArea *****************/ n = 0; XtSetArg(args[n], XmNx, 0); n++; XtSetArg(args[n], XmNy, 0); n++; XtSetArg(args[n], XmNcolumns, 3); n++; workarea = XmCreateWorkArea(frame1, "workArea", args, n); /***************** field2 : XmForm *****************/ n = 0; XtSetArg(args[n], XmNrubberPositioning, True); n++; XtSetArg(args[n], XmNresizePolicy, XmRESIZE_ANY); n++; field2 = XmCreateForm(workarea, "field2", args, n); /***************** l2 : XmLabelGadget *****************/ n = 0; XtSetArg(args[n], XmNx, 31); n++; XtSetArg(args[n], XmNy, 28); n++; XtSetArg(args[n], XmNwidth, 72); n++; XtSetArg(args[n], XmNalignment, XmALIGNMENT_BEGINNING); n++; XtSetArg(args[n], XmNresizable, False); n++; l2 = XmCreateLabelGadget(field2, "Target", args, n); /***************** tf2 : XmCSText *****************/ n = 0; XtSetArg(args[n], XmNresizable, True); n++; text2 = XmCreateCSText(field2, "tf2", args, n); /***************** FormatMenu : XmPulldownMenu *****************/ formatmenu = XmCreatePulldownMenu(workarea, "FormatMenu", NULL, 0); /***************** C_String : XmPushButtonGadget *****************/ n = 0; format_s = XmCreatePushButtonGadget(formatmenu, "C_String", args, n); /***************** LocaleText : XmPushButtonGadget *****************/ n = 0; format_l = XmCreatePushButtonGadget(formatmenu, "LocaleText", args, n); /***************** CompoundText : XmPushButtonGadget *****************/ n = 0; format_t = XmCreatePushButtonGadget(formatmenu, "CompoundText", args, n); /***************** CompoundString : XmPushButtonGadget *****************/ n = 0; format_cs = XmCreatePushButtonGadget(formatmenu, "CompoundString", args, n); /***************** DecInt : XmPushButtonGadget *****************/ n = 0; xms = XmStringCreateLocalized("Integer (Decimal)"); XtSetArg(args[n], XmNlabelString, xms); n++; format_id = XmCreatePushButtonGadget(formatmenu, "DecInt", args, n); if (xms) XmStringFree(xms); /***************** HexInt : XmPushButtonGadget *****************/ n = 0; xms = XmStringCreateLocalized("Integer (Hex)"); XtSetArg(args[n], XmNlabelString, xms); n++; format_ih = XmCreatePushButtonGadget(formatmenu, "HexInt", args, n); if (xms) XmStringFree(xms); /***************** FormatOM : XmOptionMenu *****************/ n = 0; xms = XmStringCreateLocalized("Input Format\n\ "); XtSetArg(args[n], XmNlabelString, xms); n++; XtSetArg(args[n], XmNmnemonic, 'I'); n++; XtSetArg(args[n], XmNmarginWidth, 10); n++; XtSetArg(args[n], XmNsubMenuId, formatmenu); n++; format_om = XmCreateOptionMenu(workarea, "FormatOM", args, n); if (xms) XmStringFree(xms); /***************** field1 : XmForm *****************/ n = 0; XtSetArg(args[n], XmNrubberPositioning, True); n++; XtSetArg(args[n], XmNresizePolicy, XmRESIZE_ANY); n++; field1 = XmCreateForm(workarea, "field1", args, n); /***************** l1 : XmLabelGadget *****************/ n = 0; XtSetArg(args[n], XmNx, 31); n++; XtSetArg(args[n], XmNy, 28); n++; XtSetArg(args[n], XmNwidth, 72); n++; xms = XmStringCreateLocalized("TargetValue"); XtSetArg(args[n], XmNlabelString, xms); n++; XtSetArg(args[n], XmNalignment, XmALIGNMENT_BEGINNING); n++; XtSetArg(args[n], XmNresizable, False); n++; l1 = XmCreateLabelGadget(field1, "l1", args, n); if (xms) XmStringFree(xms); /***************** tf1 : XmScrolledCSText *****************/ n = 0; XtSetArg(args[n], XmNrows, 3); n++; XtSetArg(args[n], XmNeditMode, XmMULTI_LINE_EDIT); n++; text1 = XmCreateScrolledCSText(field1, "tf1", args, n); /***************** typePulldown : XmPulldownMenu *****************/ typepulldown = XmCreatePulldownMenu(workarea, "typePulldown", NULL, 0); /***************** b_ATOM : XmPushButtonGadget *****************/ n = 0; xms = XmStringCreateLocalized("ATOM"); XtSetArg(args[n], XmNlabelString, xms); n++; b_atom = XmCreatePushButtonGadget(typepulldown, "b_ATOM", args, n); if (xms) XmStringFree(xms); /***************** b_DRAWABLE : XmPushButtonGadget *****************/ n = 0; xms = XmStringCreateLocalized("DRAWABLE"); XtSetArg(args[n], XmNlabelString, xms); n++; b_drawable = XmCreatePushButtonGadget(typepulldown, "b_DRAWABLE", args, n); if (xms) XmStringFree(xms); /***************** b_WINDOW : XmPushButtonGadget *****************/ n = 0; xms = XmStringCreateLocalized("WINDOW"); XtSetArg(args[n], XmNlabelString, xms); n++; b_window = XmCreatePushButtonGadget(typepulldown, "b_WINDOW", args, n); if (xms) XmStringFree(xms); /***************** b_COLORMAP : XmPushButtonGadget *****************/ n = 0; xms = XmStringCreateLocalized("COLORMAP"); XtSetArg(args[n], XmNlabelString, xms); n++; b_colormap = XmCreatePushButtonGadget(typepulldown, "b_COLORMAP", args, n); if (xms) XmStringFree(xms); /***************** b_INTEGER : XmPushButtonGadget *****************/ n = 0; xms = XmStringCreateLocalized("INTEGER"); XtSetArg(args[n], XmNlabelString, xms); n++; b_integer = XmCreatePushButtonGadget(typepulldown, "b_INTEGER", args, n); if (xms) XmStringFree(xms); /***************** b_PIXEL : XmPushButtonGadget *****************/ n = 0; xms = XmStringCreateLocalized("PIXEL"); XtSetArg(args[n], XmNlabelString, xms); n++; b_pixel = XmCreatePushButtonGadget(typepulldown, "b_PIXEL", args, n); if (xms) XmStringFree(xms); /***************** b_COMPOUND_TEXT : XmPushButtonGadget *****************/ n = 0; xms = XmStringCreateLocalized("COMPOUND_TEXT"); XtSetArg(args[n], XmNlabelString, xms); n++; b_compound_text = XmCreatePushButtonGadget(typepulldown, "b_COMPOUND_TEXT", args, n); if (xms) XmStringFree(xms); /***************** b_STRING : XmPushButtonGadget *****************/ n = 0; xms = XmStringCreateLocalized("Locale encoding"); XtSetArg(args[n], XmNlabelString, xms); n++; b_locale = XmCreatePushButtonGadget(typepulldown, "b_LOCALE", args, n); if (xms) XmStringFree(xms); /***************** b_STRING : XmPushButtonGadget *****************/ n = 0; xms = XmStringCreateLocalized("STRING"); XtSetArg(args[n], XmNlabelString, xms); n++; b_string = XmCreatePushButtonGadget(typepulldown, "b_STRING", args, n); if (xms) XmStringFree(xms); /***************** b_SPAN : XmPushButtonGadget *****************/ n = 0; xms = XmStringCreateLocalized("SPAN"); XtSetArg(args[n], XmNlabelString, xms); n++; b_span = XmCreatePushButtonGadget(typepulldown, "b_SPAN", args, n); if (xms) XmStringFree(xms); /***************** b_LOCALE_TEXT : XmPushButtonGadget *****************/ n = 0; xms = XmStringCreateLocalized("LOCALE_TEXT"); XtSetArg(args[n], XmNlabelString, xms); n++; b_locale_text = XmCreatePushButtonGadget(typepulldown, "b_LOCALE_TEXT", args, n); if (xms) XmStringFree(xms); /***************** b__MOTIF_COMPOUND_STRING : XmPushButtonGadget *****************/ n = 0; xms = XmStringCreateLocalized("MOTIF COMPOUND STRING"); XtSetArg(args[n], XmNlabelString, xms); n++; b__motif_compound_string = XmCreatePushButtonGadget(typepulldown, "b__MOTIF_COMPOUND_STRING", args, n); if (xms) XmStringFree(xms); /***************** unknown_button : XmPushButtonGadget *****************/ n = 0; xms = XmStringCreateLocalized("unknown"); XtSetArg(args[n], XmNlabelString, xms); n++; unknown_button = XmCreatePushButtonGadget(typepulldown, "b_unknown", args, n); if (xms) XmStringFree(xms); /***************** typeMenu : XmOptionMenu *****************/ n = 0; xms = XmStringCreateLocalized("Type"); XtSetArg(args[n], XmNlabelString, xms); n++; XtSetArg(args[n], XmNmnemonic, 'T'); n++; XtSetArg(args[n], XmNsubMenuId, typepulldown); n++; typeOM = XmCreateOptionMenu(workarea, "typeMenu", args, n); if (xms) XmStringFree(xms); /***************** buttons : XmWorkArea *****************/ n = 0; XtSetArg(args[n], XmNorientation, XmHORIZONTAL); n++; buttons = XmCreateWorkArea(workarea, "buttons", args, n); /***************** DeferButton : XmToggleButtonGadget *****************/ n = 0; XtSetArg(args[n], XmNmarginWidth, 20); n++; XtSetArg(args[n], XmNindicatorSize, 15); n++; XtSetArg(args[n], XmNindicatorOn, XmINDICATOR_CROSS_BOX); n++; xms = XmStringCreateLocalized("Defer Target"); XtSetArg(args[n], XmNlabelString, xms); n++; defer = XmCreateToggleButtonGadget(buttons, "Defer", args, n); XtManageChild(defer); XtAddCallback(defer, XmNvalueChangedCallback, (XtCallbackProc) deferCB, NULL); if (xms) XmStringFree(xms); /***************** frame1 : XmFrame *****************/ n = 0; XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNleftOffset, 10); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg(args[n], XmNtopWidget, frame); n++; XtSetArg(args[n], XmNtopOffset, 6); n++; XtSetArg(args[n], XmNrightOffset, 10); n++; XtSetValues(frame1, args, n); /***************** l2 : XmLabelGadget *****************/ n = 0; XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNleftOffset, 10); n++; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNtopOffset, 10); n++; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNbottomOffset, 10); n++; XtSetValues(l2, args, n); XtManageChild(l2); /***************** tf2 : XmCSText *****************/ n = 0; XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNtopAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNrightOffset, 5); n++; XtSetArg(args[n], XmNleftWidget, l2); n++; XtSetArg(args[n], XmNleftOffset, 5); n++; XtSetArg(args[n], XmNtopPosition, 5); n++; XtSetArg(args[n], XmNbottomPosition, 95); n++; XtSetValues(text2, args, n); XtManageChild(text2); XtManageChild(field2); XtAddCallback(format_s, XmNactivateCallback, (XtCallbackProc) SetFormat, (XtPointer) 'S'); XtManageChild(format_s); XtAddCallback(format_l, XmNactivateCallback, (XtCallbackProc) SetFormat, (XtPointer) 'L'); XtManageChild(format_l); XtAddCallback(format_t, XmNactivateCallback, (XtCallbackProc) SetFormat, (XtPointer) 'T'); XtManageChild(format_t); XtAddCallback(format_cs, XmNactivateCallback, (XtCallbackProc) SetFormat, (XtPointer) 'C'); XtManageChild(format_cs); XtAddCallback(format_id, XmNactivateCallback, (XtCallbackProc) SetFormat, (XtPointer) 'D'); XtManageChild(format_id); XtAddCallback(format_ih, XmNactivateCallback, (XtCallbackProc) SetFormat, (XtPointer) 'H'); XtManageChild(format_ih); XtManageChild(format_om); /***************** l1 : XmLabelGadget *****************/ n = 0; XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNleftOffset, 10); n++; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNtopOffset, 10); n++; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNbottomOffset, 10); n++; XtSetValues(l1, args, n); XtManageChild(l1); /***************** tf1 : XmScrolledCSText *****************/ pn = 0; XtSetArg(pargs[pn], XmNleftAttachment, XmATTACH_WIDGET); pn++; XtSetArg(pargs[pn], XmNrightAttachment, XmATTACH_FORM); pn++; XtSetArg(pargs[pn], XmNtopAttachment, XmATTACH_FORM); pn++; XtSetArg(pargs[pn], XmNbottomAttachment, XmATTACH_FORM); pn++; XtSetArg(pargs[pn], XmNrightOffset, 5); pn++; XtSetArg(pargs[pn], XmNleftWidget, l1); pn++; XtSetArg(pargs[pn], XmNleftOffset, 5); pn++; XtSetArg(pargs[pn], XmNtopOffset, 5); pn++; XtSetArg(pargs[pn], XmNbottomOffset, 5); pn++; tmpw = get_constraint_widget(text1, field1); if (tmpw) XtSetValues(tmpw, pargs, pn); XtManageChild(text1); XtManageChild(field1); XtAddCallback(b_atom, XmNactivateCallback, (XtCallbackProc) SetType, (XtPointer) "ATOM"); XtManageChild(b_atom); XtAddCallback(b_drawable, XmNactivateCallback, (XtCallbackProc) SetType, (XtPointer) "DRAWABLE"); XtManageChild(b_drawable); XtAddCallback(b_window, XmNactivateCallback, (XtCallbackProc) SetType, (XtPointer) "WINDOW"); XtManageChild(b_window); XtAddCallback(b_colormap, XmNactivateCallback, (XtCallbackProc) SetType, (XtPointer) "COLORMAP"); XtManageChild(b_colormap); XtAddCallback(b_integer, XmNactivateCallback, (XtCallbackProc) SetType, (XtPointer) "INTEGER"); XtManageChild(b_integer); XtAddCallback(b_pixel, XmNactivateCallback, (XtCallbackProc) SetType, (XtPointer) "PIXEL"); XtManageChild(b_pixel); XtAddCallback(b_compound_text, XmNactivateCallback, (XtCallbackProc) SetType, (XtPointer) "COMPOUND_TEXT"); XtManageChild(b_compound_text); XtAddCallback(b_string, XmNactivateCallback, (XtCallbackProc) SetType, (XtPointer) "STRING"); XtManageChild(b_string); XtAddCallback(b_locale, XmNactivateCallback, (XtCallbackProc) SetType, (XtPointer) ""); XtManageChild(b_locale); XtAddCallback(b_span, XmNactivateCallback, (XtCallbackProc) SetType, (XtPointer) "SPAN"); XtManageChild(b_span); XtAddCallback(b__motif_compound_string, XmNactivateCallback, (XtCallbackProc) SetType, (XtPointer) "_MOTIF_COMPOUND_STRING"); XtManageChild(b__motif_compound_string); XtAddCallback(unknown_button, XmNactivateCallback, (XtCallbackProc) SetType, (XtPointer) "NONE"); XtManageChild(unknown_button); XtManageChild(typeOM); XtManageChild(buttons); XtManageChild(workarea); XtManageChild(frame1); return(dialog); } Widget CreateHelpDialog(parent, name) Widget parent; char* name; { Widget help; Arg args[10]; int n; XmRendition rend[10]; XmRenderTable rt; int i; XmTab tabs[5]; XmTabList tablist; n = 0; XtSetArg(args[n], XmdNhelpFile, "transfer"); n++; help = XmdCreateHelpDialog(parent, "HelpDialog", args, n); /* Get the rendertable and add some new renditions */ XtVaGetValues(help, XmNrenderTable, &rt, NULL, NULL); /* Make the tabs for the tables */ n = 0; tabs[n] = XmTabCreate(1.5, XmINCHES, XmABSOLUTE, XmALIGNMENT_BEGINNING, NULL); n++; tabs[n] = XmTabCreate(3.0, XmINCHES, XmABSOLUTE, XmALIGNMENT_BEGINNING, NULL); n++; tabs[n] = XmTabCreate(4.5, XmINCHES, XmABSOLUTE, XmALIGNMENT_BEGINNING, NULL); n++; tabs[n] = XmTabCreate(6.0, XmINCHES, XmABSOLUTE, XmALIGNMENT_BEGINNING, NULL); n++; tablist = XmTabListInsertTabs(NULL, tabs, n, 0); for(i = 0; i < n; i++) XmTabFree(tabs[i]); /* Add extra renditions needed for the help file */ n = 0; i = 0; XtSetArg(args[n], XmNtabList, tablist); n++; rend[i] = XmRenditionCreate(help, "table", args, n); i++; n = 0; XtSetArg(args[n], XmNfontName, "*courier-medium-r-*-12-*"); n++; XtSetArg(args[n], XmNfontType, XmFONT_IS_FONT); n++; rend[i] = XmRenditionCreate(help, "program", args, n); i++; n = 0; XtSetArg(args[n], XmNunderlineType, XmSINGLE_LINE); n++; rend[i] = XmRenditionCreate(help, "underline", args, n); i++; /* Make a copy so that setvalues will work correctly */ rt = XmRenderTableCopy(rt, NULL, 0); rt = XmRenderTableAddRenditions(rt, rend, i, XmMERGE_NEW); for(n = 0; n < i; n++) XmRenditionFree(rend[n]); XtVaSetValues(help, XmNrenderTable, rt, NULL, NULL); XmRenderTableFree(rt); return(help); } void manageCB( widget, w_to_manage, callback_data) Widget widget; Widget w_to_manage; XtPointer callback_data; { if (w_to_manage != (Widget) NULL) XtManageChild(w_to_manage); } void unmanageCB( widget, w_to_unmanage, callback_data) Widget widget; Widget w_to_unmanage; XtPointer callback_data; { if (w_to_unmanage != (Widget) NULL) XtUnmanageChild(w_to_unmanage); }