static Widget CreateSeparatorGadget(Widget parent, char *name) { Widget widget; widget = XmCreateSeparatorGadget(parent, name, NULL, 0); XtManageChild(widget); return(widget); }
void CreateScale(Widget parent_of_scale) { #define BOTTOM_OF_THERMOMETER -20 #define TOP_OF_THERMOMETER 40 #define NUM_TICS (((TOP_OF_THERMOMETER - BOTTOM_OF_THERMOMETER) / 10) + 1) Widget scale1, tics[NUM_TICS]; Arg args[10]; Cardinal i, n; unsigned char scale_orientation, tic_orientation; Dimension tic_long_dim = 10, tic_short_dim = 5; Dimension tic_width, tic_height; char tic_name[10]; /* Build the Scale. */ scale1 = XtVaCreateManagedWidget("scale1", xmScaleWidgetClass, parent_of_scale, XmNslidingMode, XmTHERMOMETER, XmNeditable, True, XmNshowValue, True, XmNminimum, BOTTOM_OF_THERMOMETER, XmNmaximum, TOP_OF_THERMOMETER, NULL); /* Now build the tic marks. */ n = 0; XtSetArg(args[n], XmNorientation, &scale_orientation); n++; XtGetValues(scale1, args, n); if (scale_orientation == XmHORIZONTAL) { tic_orientation = XmVERTICAL; tic_width = tic_short_dim; tic_height = tic_long_dim; } else { tic_orientation = XmHORIZONTAL; tic_width = tic_long_dim; tic_height = tic_short_dim; } for (i = 0; i < NUM_TICS; i++) { sprintf(tic_name, "tic_%d", i); n = 0; XtSetArg(args[n], XmNseparatorType, XmSINGLE_LINE); n++; XtSetArg(args[n], XmNorientation, tic_orientation); n++; XtSetArg(args[n], XmNwidth, tic_width); n++; XtSetArg(args[n], XmNheight, tic_height); n++; tics[i] = XmCreateSeparatorGadget(scale1, tic_name, args, n); } XtManageChildren(tics, NUM_TICS); }
/*************************************<->************************************* * * wspCreateSeparator (mgrW) * * * Description: * ----------- * Creates a separator widget as a child of the passed in manager * * Inputs: * ------ * mgrW = manager widget (parent of this label) * * Outputs: * ------- * Return = Widget created. * * Comments: * --------- ******************************<->***********************************/ static Widget wspCreateSeparator( Widget mgrW ) { Arg setArgs[10]; int i; Widget sepW; i = 0; sepW = XmCreateSeparatorGadget (mgrW, "separator", setArgs, i); XtManageChild (sepW); return (sepW); } /* END OF FUNCTION */
void UIMenuItem::CreateButton(Widget menuWidget, UIMenuItem *menuBut, void *menuData) { Arg wargs[2]; int argNum = 0, menuNum; char mnemonic[2]; Widget subMenu; XmString string; switch (menuBut->Type) { case UIMENU_FUNCTION: string = XmStringCreate(menuBut->Label, UICharSetNormal); menuBut->Button = XtVaCreateWidget("UIFunctionButton", xmPushButtonGadgetClass, menuWidget, XmNuserData, menuBut, XmNlabelString, string, NULL); XtAddCallback(menuBut->Button, XmNactivateCallback, (XtCallbackProc) _UIMenuButtonCBK, (XtPointer) menuData); XmStringFree(string); break; case UIMENU_SUBMENU: argNum = 0; subMenu = XmCreatePulldownMenu(menuWidget, (char *) "GHAASPullDownMenu", wargs, argNum); mnemonic[0] = menuBut->Label[0]; mnemonic[1] = '\0'; string = XmStringCreate(menuBut->Label, UICharSetBold); menuBut->Button = XtVaCreateWidget("UISubmenuButton", xmCascadeButtonWidgetClass, menuWidget, XmNlabelString, string, XmNsubMenuId, subMenu, XmNmnemonic, XStringToKeysym(mnemonic), NULL); XmStringFree(string); if (menuBut->Action != NULL) for (menuNum = 0; ((UIMenuItem *) menuBut->Action)[menuNum].Type != 0; ++menuNum) menuBut->CreateButton(subMenu, ((UIMenuItem *) menuBut->Action) + menuNum, menuData); break; case UIMENU_SEPARATOR: menuBut->Button = XmCreateSeparatorGadget(menuWidget, (char *) "GHAASMenuSeparator", NULL, 0); break; default: CMmsgPrint(CMmsgAppError, "Not valid Button type in: %s %d", __FILE__, __LINE__); return; } if (menuBut->VisibleVAR == UIMENU_NORULE) XtManageChild(menuBut->Button); XtSetSensitive(menuBut->Button, menuBut->SensitiveVAR == UIMENU_NORULE); }
static Widget CreatePulldown(char* name, char mnemonic, Widget parent, menu_info *info, WidgetList array, Cardinal size) { int i; Widget cascade_button, pulldown; Arg args[10]; char buffer[128]; sprintf(buffer,"%s_pulldown", name); pulldown = XmCreatePulldownMenu(parent, buffer, NULL, 0); i = 0; if (mnemonic != 0) { XtSetArg(args[i], XmNmnemonic, mnemonic); i++; } XtSetArg(args[i], XmNsubMenuId, pulldown); i++; cascade_button = XmCreateCascadeButtonGadget(parent, name, args, i); XtManageChild(cascade_button); if (strcmp(name, "Help") == 0) XtVaSetValues(parent, XmNmenuHelpWidget, cascade_button, NULL, NULL); /* Create menu items, special exception for the first item in the View menu, which is a cascadebutton*/ for(i = 0; i < size; i++) { if (info[i].is_separator) array[i] = XmCreateSeparatorGadget(pulldown, info[i].label, NULL, 0); else array[i] = CreateMenuButton(pulldown, info[i].label, info[i].mnemonic, info[i].accelerator, info[i].acc_text, (info != view_pulldown && i != 0) ? xmPushButtonGadgetClass : xmCascadeButtonGadgetClass ); if (info[i].managed) XtManageChild(array[i]); } return(pulldown); }
/*+++++++++++++++++++++++++++++++++++++++*/ static Widget build_dtwmDlg( Widget shell ) { register int i, n; Arg args[MAX_ARGS]; XmString button_string[NUM_LABELS]; XmString string; Widget form; Widget windowFocusForm; Widget iconPlacementForm; int count = 0; Widget widgetList1[6]; /* get dtwm resource values */ /* Set up DialogBoxDialog button labels */ button_string[0] = CMPSTR((String) _DtOkString); button_string[1] = CMPSTR((String) _DtCancelString); button_string[2] = CMPSTR((String) _DtHelpString); /* Create toplevel DialogBox */ /* saveRestore * Note that save.poscnt has been initialized elsewhere. * save.posArgs may contain information from restoreBeep().*/ XtSetArg(save.posArgs[save.poscnt], XmNbuttonCount, NUM_LABELS); save.poscnt++; XtSetArg(save.posArgs[save.poscnt], XmNbuttonLabelStrings, button_string); save.poscnt++; XtSetArg(save.posArgs[save.poscnt], XmNdefaultPosition, False); save.poscnt++; style.dtwmDialog = __DtCreateDialogBoxDialog(shell, "dtwmDialog", save.posArgs, save.poscnt); XtAddCallback(style.dtwmDialog, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, (XtPointer)HELP_DTWM_DIALOG); XmStringFree(button_string[0]); XmStringFree(button_string[1]); XmStringFree(button_string[2]); widgetList1[0] = _DtDialogBoxGetButton(style.dtwmDialog,2); n=0; XtSetArg(args[n], XmNautoUnmanage, False); n++; XtSetArg(args[n], XmNcancelButton, widgetList1[0]); n++; XtSetValues (style.dtwmDialog, args, n); n=0; XtSetArg(args[n], XmNtitle, ((char *)GETMESSAGE(18, 1, "Style Manager - Window"))); n++; XtSetArg (args[n], XmNuseAsyncGeometry, True); n++; XtSetArg(args[n], XmNmwmFunctions, DIALOG_MWM_FUNC); n++; XtSetValues (XtParent(style.dtwmDialog), args, n); n = 0; XtSetArg(args[n], XmNallowOverlap, False); n++; XtSetArg(args[n], XmNchildType, XmWORK_AREA); n++; form = XmCreateForm(style.dtwmDialog, "dtwmForm", args, n); n = 0; XtSetArg(args[n], XmNfillMode, XmFILL_SELF); n++; XtSetArg(args[n], XmNbehavior, XmICON_LABEL); n++; XtSetArg(args[n], XmNpixmapForeground, style.secBSCol); n++; XtSetArg(args[n], XmNpixmapBackground, style.secTSCol); n++; XtSetArg(args[n], XmNstring, NULL); n++; XtSetArg(args[n], XmNshadowThickness, 0); n++; XtSetArg(args[n], XmNimageName, DTWM_ICON); n++; XtSetArg(args[n], XmNtraversalOn, False); n++; widgetList1[count++] = dtwm.pictLabel = _DtCreateIcon(form, "dtwmpictLabel", args, n); n = 0; XtSetArg(args[n], XmNmarginHeight, LB_MARGIN_HEIGHT); n++; XtSetArg(args[n], XmNmarginWidth, LB_MARGIN_WIDTH); n++; string = CMPSTR(((char *)GETMESSAGE(18, 2, "Default"))); XtSetArg(args[n], XmNlabelString, string); n++; widgetList1[count++] = dtwm.systemDefault = XmCreatePushButtonGadget(form, "systemDefault", args, n); XmStringFree(string); n = 0; string = CMPSTR((char *)GETMESSAGE(18, 3, "Window Behavior")); XtSetArg(args[n], XmNtitleString, string); n++; widgetList1[count++] = dtwm.windowFocusTB = _DtCreateTitleBox(form, "windowFocusTB", args, n); XmStringFree(string); n = 0; XtSetArg(args[n], XmNallowOverlap, False); n++; XtSetArg(args[n], XmNchildType, XmWORK_AREA); n++; windowFocusForm = XmCreateForm(dtwm.windowFocusTB, "windowFocusForm", args, n); n = 0; string = CMPSTR((char *)GETMESSAGE(18, 4, "Window Icons")); XtSetArg(args[n], XmNtitleString, string); n++; widgetList1[count++] = dtwm.iconPlacementTB = _DtCreateTitleBox(form, "iconPlacementTB", args, n); XmStringFree(string); n = 0; XtSetArg(args[n], XmNallowOverlap, False); n++; XtSetArg(args[n], XmNchildType, XmWORK_AREA); n++; iconPlacementForm = XmCreateForm(dtwm.iconPlacementTB, "iconPlacementForm", args, n); n = 0; XtSetArg(args[n], XmNmarginWidth, 0); n++; XtSetArg(args[n], XmNmarginHeight, 0); n++; dtwm.focusPolicyRC = XmCreateRadioBox(windowFocusForm, "focusPolicyRC", args, n); n = 0; string = CMPSTR((char *)GETMESSAGE(18, 13, "Point In Window To Make Active")); XtSetArg(args[n], XmNlabelString, string); n++; dtwm.pointerTG = XmCreateToggleButtonGadget(dtwm.focusPolicyRC, "pointerTG", args, n); XmStringFree(string); n = 0; string = CMPSTR((char *)GETMESSAGE(18, 14, "Click In Window To Make Active")); XtSetArg(args[n], XmNlabelString, string); n++; dtwm.explicitTG = XmCreateToggleButtonGadget(dtwm.focusPolicyRC, "explicitTG", args, n); XmStringFree(string); n = 0; XtSetArg(args[n], XmNmargin, 0); n++; dtwm.focusSeparator = XmCreateSeparatorGadget(windowFocusForm, "focusSeparator", args, n); n = 0; string = CMPSTR((char *)GETMESSAGE(18, 15, "Raise Window When Made Active")); XtSetArg(args[n], XmNnavigationType, XmTAB_GROUP); n++; XtSetArg(args[n], XmNlabelString, string); n++; XtSetArg(args[n], XmNalignment, XmALIGNMENT_BEGINNING); n++; dtwm.autoRaiseTG = XmCreateToggleButtonGadget(windowFocusForm, "autoRaiseTG", args, n); XmStringFree(string); n = 0; string = CMPSTR((char *)GETMESSAGE(18, 11, "Allow Primary Windows On Top")); XtSetArg(args[n], XmNnavigationType, XmTAB_GROUP); n++; XtSetArg(args[n], XmNlabelString, string); n++; XtSetArg(args[n], XmNalignment, XmALIGNMENT_BEGINNING); n++; dtwm.secStackTG = XmCreateToggleButtonGadget(windowFocusForm, "secStackTG", args, n); XmStringFree(string); n = 0; string = CMPSTR((char *)GETMESSAGE(18, 16, "Show Contents During Move")); XtSetArg(args[n], XmNnavigationType, XmTAB_GROUP); n++; XtSetArg(args[n], XmNlabelString, string); n++; XtSetArg(args[n], XmNalignment, XmALIGNMENT_BEGINNING); n++; dtwm.moveOpaqueTG = XmCreateToggleButtonGadget(windowFocusForm, "moveOpaqueTG", args, n); XmStringFree(string); n = 0; XtSetArg(args[n], XmNmarginWidth, 0); n++; XtSetArg(args[n], XmNmarginHeight, 0); n++; dtwm.useIconBoxRC = XmCreateRadioBox(iconPlacementForm, "useIconBoxRC", args, n); n = 0; string = CMPSTR((char *)GETMESSAGE(18, 9, "Use Icon Box")); XtSetArg(args[n], XmNlabelString, string); n++; dtwm.iconBoxTG = XmCreateToggleButtonGadget(dtwm.useIconBoxRC, "iconBoxTG", args, n); XmStringFree(string); n = 0; string = CMPSTR((char *)GETMESSAGE(18, 10, "Place On Workspace")); XtSetArg(args[n], XmNlabelString, string); n++; dtwm.desktopTG = XmCreateToggleButtonGadget(dtwm.useIconBoxRC, "desktopTG", args, n); XmStringFree(string); XtAddCallback(style.dtwmDialog, XmNmapCallback, formLayoutCB, NULL); XtAddCallback(style.dtwmDialog, XmNmapCallback, _DtmapCB_dtwmDlg, shell); XtAddCallback(style.dtwmDialog, XmNcallback, ButtonCB, NULL); XtAddCallback(dtwm.systemDefault, XmNactivateCallback, systemDefaultCB, NULL); XtManageChild(form); XtManageChildren(widgetList1,count); XtManageChild(windowFocusForm); XtManageChild(iconPlacementForm); XtManageChild(dtwm.focusPolicyRC); XtManageChild(dtwm.pointerTG); XtManageChild(dtwm.explicitTG); XtManageChild(dtwm.focusSeparator); XtManageChild(dtwm.autoRaiseTG); XtManageChild(dtwm.secStackTG); XtManageChild(dtwm.moveOpaqueTG); XtManageChild(dtwm.useIconBoxRC); XtManageChild(dtwm.iconBoxTG); XtManageChild(dtwm.desktopTG); return(style.dtwmDialog); }
void scrnInitX(void) { Widget toplevel, control; Widget mb, fileMenu, viewMenu, confMenu, helpMenu; Widget procFrame = NULL, bboxFrame = NULL; #ifdef ICON_DEFINED Pixmap icon; #endif XmString s; Arg args[10]; unsigned i, n; int argc = 0; addRegwRsrcOpts(); addDatwRsrcOpts(); toplevel = XtAppInitialize(&app_context, "XSki", options, topopts, &argc, NULL, NULL, NULL, 0); top_level = toplevel; /* XXX - temporary for Platform only */ XtGetApplicationResources(toplevel, &app_data, resources, toprsrc, NULL, 0); XtAppAddActions(app_context, actions, XtNumber(actions)); dpy = XtDisplay(toplevel); #ifdef ICON_DEFINED /* set default icon */ icon = XCreateBitmapFromData(dpy, RootWindowOfScreen(XtScreen(toplevel)), icon_bits, icon_width, icon_height); XtSetArg(args[0], XmNiconPixmap, icon); XtSetValues(toplevel, args, 1); #endif #if 0 XSynchronize(dpy, True); #endif /* create control window manager */ control = XmCreateForm(toplevel, "control", NULL, 0); XtManageChild(control); /* Control window menubar */ n = 0; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++; mb = XmCreateMenuBar(control, "mb", args, n); XtManageChild(mb); fileMenu = createMBitem(mb, "File"); viewMenu = createMBitem(mb, "View"); confMenu = createMBitem(mb, "Configure"); helpMenu = createMBitem(mb, "Help"); #if 0 createSubmenuItem(fileMenu, "load", loadCallback); #else createSubmenuItem(fileMenu, "load", 0); #endif createSubmenuItem(fileMenu, "save", 0); createSubmenuItem(fileMenu, "trace", 0); createSubmenuItem(fileMenu, "traceOn", 0); createSubmenuItem(fileMenu, "traceOff", 0); createSubmenuItem(fileMenu, "read", 0); XtManageChild(XmCreateSeparatorGadget(fileMenu, "", NULL, 0)); createSubmenuItem(fileMenu, "quit", simCmdCallback); createSubmenuItem(viewMenu, "program", programCallback); createSubmenuItem(viewMenu, "data", dataCallback); createSubmenuItem(viewMenu, "registers", regCallback); createSubmenuItem(viewMenu, "cache", 0); createSubmenuItem(viewMenu, "tlb", sdtCallback); XtManageChild(XmCreateSeparatorGadget(viewMenu, "", NULL, 0)); createSubmenuItem(viewMenu, "callstack", cstCallback); createSubmenuItem(viewMenu, "statistics", 0); createSubmenuItem(viewMenu, "breakpoints", blistCallback); createSubmenuItem(viewMenu, "branches", 0); createSubmenuItem(viewMenu, "symbols", symlistCallback); createSubmenuItem(viewMenu, "macros", 0); #if 0 /* No support for window format yet */ createSubmenuItem(confMenu, "program", prgFmtCallback); #else createSubmenuItem(confMenu, "program", 0); #endif createSubmenuItem(confMenu, "data", 0); #if 0 /* No support for window format yet */ createSubmenuItem(confMenu, "registers", regFmtCallback); #else createSubmenuItem(confMenu, "registers", 0); #endif createSubmenuItem(helpMenu, "context", 0); createSubmenuItem(helpMenu, "overview", 0); createSubmenuItem(helpMenu, "commands", cmdHelpCallback); createSubmenuItem(helpMenu, "product", prodInfoCallback); /* Control window processor option menu */ if (nproc > 1) { Widget procMenu, proc[NPROC]; n = 0; XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg(args[n], XmNtopWidget, mb); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++; procFrame = XmCreateFrame(control, "", args, n); XtManageChild(procFrame); procMenu = XmCreatePulldownMenu(procFrame, "", NULL, 0); for (i = 0; i < nproc; i++) { char name[4]; (void)sprintf(name, "p%d", i); proc[i] = XmCreatePushButton(procMenu, name, NULL, 0); XtAddCallback(proc[i], XmNactivateCallback, changeCprocCallback, (XtPointer)i); } XtManageChildren(proc, nproc); n = 0; XtSetArg(args[n], XmNsubMenuId, procMenu); n++; XtManageChild(XmCreateOptionMenu(procFrame, "procOption", args, n)); } /* Control window button box */ if (app_data.numButtons) { Widget bbox, btns[20]; /* create button box manager */ n = 0; XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg(args[n], XmNtopWidget, procFrame ? procFrame : mb); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++; bboxFrame = XmCreateFrame(control, "", args, n); XtManageChild(bboxFrame); /* create button box window */ bbox = XmCreateRowColumn(bboxFrame, "bbox", NULL, 0); XtManageChild(bbox); /* create each button */ for (i = 0; i < app_data.numButtons; i++) { char name[8]; (void)sprintf(name, "bb%d", i); btns[i] = XmCreatePushButton(bbox, name, NULL, 0); } XtManageChildren(btns, app_data.numButtons); } /* Control window command area */ n = 0; XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg(args[n], XmNtopWidget, bboxFrame ? bboxFrame : procFrame ? procFrame : mb); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++; cmd = XmCreateCommand(control, "cmd", args, n); XtManageChild(cmd); XtAddCallback(cmd, XmNcommandEnteredCallback, simCmdCallback, 0); /* command history box */ n = 0; XtSetArg(args[0], XmNinitialFocus, cmd); n++; XtSetValues(control, args, n); cmdHist = XmCommandGetChild(cmd, XmDIALOG_HISTORY_LIST); /* message window */ msgs = XmCreateScrolledText(control, "msgs", NULL, 0); XtManageChild(msgs); n = 0; XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg(args[n], XmNtopWidget, cmd); n++; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++; XtSetValues(XtParent(msgs), args, n); /* create stop simulation dialog */ /* Consider changing this to a button. This would allow other functionality to still be active when simulation is going on. For example, Help, Quit, opening and closing windows, etc. */ stopsim = XmCreateWorkingDialog(control, "stopsim", NULL, 0); n = 0; XtSetArg(args[n], XmNdialogStyle, XmDIALOG_FULL_APPLICATION_MODAL); n++; s = XmStringCreateLocalized("Running..."); XtSetArg(args[n], XmNdialogTitle, s); n++; s = XmStringCreateLocalized(" icnt: 0 "); XtSetArg(args[n], XmNmessageString, s); n++; s = XmStringCreateLocalized("Stop"); XtSetArg(args[n], XmNcancelLabelString, s); n++; XtSetValues(stopsim, args, n); XtAddCallback(stopsim, XmNcancelCallback, stop_execLoopXCB, NULL); XtUnmanageChild(XmMessageBoxGetChild(stopsim, XmDIALOG_OK_BUTTON)); XtUnmanageChild(XmMessageBoxGetChild(stopsim, XmDIALOG_HELP_BUTTON)); XmStringFree(s); /* XXX - This should probably be inside regwInit */ for (i = 0; i < topregw; i++) regwtbl[i].show = app_data.showRs[i]; /* XXX - This should probably be inside datwInit */ for (i = 0; i < topdatw; i++) datwtbl[i].show = app_data.viewDw[i]; prgwInit(); datwInit(); regwInit(); if (app_data.viewProg) prgwDrawX(); datwDrawX(); if (app_data.viewRegs) regwDrawX(); noscreen = NO; XtRealizeWidget(toplevel); }
Widget XmCreateSeparatorGadget_TNK(Widget parent, String name, ArgList arglist,Cardinal argcount) { return XmCreateSeparatorGadget(parent, name, arglist, argcount);}
/*+++++++++++++++++++++++++++++++++++++++++++++*/ static void build_mainWindow( Widget shell ) { int count, n, n2; Arg args[MAX_ARGS]; Widget WidgList[10]; Widget frame; Widget mainMenu; Widget mainRC; Widget filePulldown; Widget helpPulldown; Widget exitBtn; char *mnemonic; char *tmpStr; Pixmap pixmap; XmString labelString; Pixmap ditherPix; XmPixelSet pixelSet[XmCO_NUM_COLORS]; Pixel bg; short a,i,p,s; /* saveRestore * Note that save.poscnt has been initialized elsewhere. * save.posArgs may contain information from restoreAudio().*/ XtSetArg(save.posArgs[save.poscnt], XmNnoResize, True); save.poscnt++; XtSetArg(save.posArgs[save.poscnt], XmNresizePolicy, XmRESIZE_NONE); save.poscnt++; style.mainWindow= XmCreateMainWindow(shell,"mainWindow", save.posArgs, save.poscnt); XtAddCallback(style.mainWindow, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, (XtPointer)HELP_MAIN_WINDOW); n = 0; tmpStr = (char *)XtMalloc(strlen(GETMESSAGE(4, 1, "Style Manager"))+1); sprintf(tmpStr, GETMESSAGE(4, 1, "Style Manager")); XtSetArg(args[n], XmNtitle, tmpStr); n++; XtSetArg(args[n], XmNiconName, (char *)GETMESSAGE(4, 37, "Style")); n++; XtSetValues(XtParent(style.mainWindow), args, n); XtFree(tmpStr); n = 0; mainMenu= XmCreateMenuBar(style.mainWindow,"mainMenu", args, n); XtAddCallback(mainMenu, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, (XtPointer)HELP_MENUBAR); XtManageChild(mainMenu); /* create the pulldown widgets */ n = 0; filePulldown= XmCreatePulldownMenu(mainMenu,"fileMenu", args, n ); XtAddCallback(filePulldown, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, (XtPointer)HELP_FILE_MENU); n = 0; helpPulldown= XmCreatePulldownMenu(mainMenu, "helpMenu" , args, n ); XtAddCallback(helpPulldown, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, (XtPointer)HELP_HELP_MENU); /* create the cascade butons */ count = 0; n = 0; mnemonic = ((char *)GETMESSAGE(4, 2, "F")); XtSetArg(args[n], XmNmnemonic, mnemonic[0]); n++; labelString = CMPSTR((char *)GETMESSAGE(4, 3, "File")); XtSetArg(args[n], XmNlabelString, labelString); n++; XtSetArg(args[n], XmNsubMenuId, filePulldown); n++; XtSetArg (args[n], XmNmarginWidth, LB_MARGIN_WIDTH); n++; WidgList[count++]= XmCreateCascadeButton(mainMenu, "fileCascadeButton", args, n ); XtAddCallback(WidgList[count-1], XmNhelpCallback, (XtCallbackProc)HelpRequestCB, (XtPointer)HELP_FILE_MENU); XmStringFree(labelString); n = 0; mnemonic = ((char *)GETMESSAGE(4, 4, "H")); XtSetArg(args[n], XmNmnemonic, mnemonic[0]); n++; labelString = CMPSTR((char *)GETMESSAGE(4, 5, "Help")); XtSetArg(args[n], XmNlabelString, labelString); n++; XtSetArg(args[n], XmNsubMenuId, helpPulldown); n++; XtSetArg (args[n], XmNmarginWidth, 6); n++; WidgList[count++]= XmCreateCascadeButton(mainMenu, "helpCascadeButton", args, n ); XtAddCallback(WidgList[count-1], XmNhelpCallback, (XtCallbackProc)HelpRequestCB, (XtPointer)HELP_HELP_MENU); XmStringFree(labelString); n = 0; XtSetArg(args[n], XmNmenuHelpWidget, WidgList[count-1]); n++; XtSetValues (mainMenu, args, n); XtManageChildren (WidgList, count); /* create the File menu pane's buttons */ n = 0; mnemonic = ((char *)GETMESSAGE(4, 53, "x")); XtSetArg(args[n], XmNmnemonic, mnemonic[0]); n++; labelString = CMPSTR((char *)GETMESSAGE(4, 7, "Exit")); XtSetArg(args[n], XmNlabelString, labelString); n++; exitBtn= XmCreatePushButton(filePulldown, "exit", args, n ); XtAddCallback(exitBtn, XmNactivateCallback, activateCB_exitBtn, NULL); XtAddCallback(exitBtn, XmNhelpCallback, (XtCallbackProc)HelpRequestCB, (XtPointer)HELP_EXIT); XtManageChild(exitBtn); XmStringFree(labelString); /* create the Help menu pane's buttons */ count =0; n = 0; mnemonic = ((char *)GETMESSAGE(4, 54, "v")); XtSetArg(args[n], XmNmnemonic, mnemonic[0]); n++; labelString = CMPSTR((char *)GETMESSAGE(4, 55, "Overview")); XtSetArg(args[n], XmNlabelString, labelString); n++; WidgList[count++]= XmCreatePushButton(helpPulldown, "overview", args, n ); XtAddCallback(WidgList[count-1], XmNactivateCallback, (XtCallbackProc)HelpRequestCB, (XtPointer)HELP_INTRODUCTION); XmStringFree(labelString); n = 0; WidgList[count++]= XmCreateSeparatorGadget(helpPulldown,"separator",args,n); n = 0; mnemonic = ((char *)GETMESSAGE(4, 43, "T")); XtSetArg(args[n], XmNmnemonic, mnemonic[0]); n++; labelString = CMPSTR((char *)GETMESSAGE(4, 56, "Tasks")); XtSetArg(args[n], XmNlabelString, labelString); n++; WidgList[count++]= XmCreatePushButton(helpPulldown, "tasks", args, n ); XtAddCallback(WidgList[count-1], XmNactivateCallback, (XtCallbackProc)HelpRequestCB, (XtPointer)HELP_TASKS); XmStringFree(labelString); n = 0; mnemonic = ((char *)GETMESSAGE(4, 45, "R")); XtSetArg(args[n], XmNmnemonic, mnemonic[0]); n++; labelString = CMPSTR((char *)GETMESSAGE(4, 57, "Reference")); XtSetArg(args[n], XmNlabelString, labelString); n++; WidgList[count++]= XmCreatePushButton(helpPulldown, "reference", args, n ); XtAddCallback(WidgList[count-1], XmNactivateCallback, (XtCallbackProc)HelpRequestCB, (XtPointer)HELP_REFERENCE); XmStringFree(labelString); n = 0; mnemonic = ((char *)GETMESSAGE(4, 47, "O")); XtSetArg(args[n], XmNmnemonic, mnemonic[0]); n++; labelString = CMPSTR((char *)GETMESSAGE(4, 48, "On Item")); XtSetArg(args[n], XmNlabelString, labelString); n++; WidgList[count++]= XmCreatePushButton(helpPulldown, "onItem", args, n ); XtAddCallback(WidgList[count-1], XmNactivateCallback, (XtCallbackProc)HelpModeCB, (XtPointer)NULL); XmStringFree(labelString); n = 0; WidgList[count++] = XmCreateSeparatorGadget(helpPulldown,"separator",args,n); n = 0; mnemonic = ((char *)GETMESSAGE(4, 49, "U")); XtSetArg(args[n], XmNmnemonic, mnemonic[0]); n++; labelString = CMPSTR((char *)GETMESSAGE(4, 58, "Using Help")); XtSetArg(args[n], XmNlabelString, labelString); n++; WidgList[count++]= XmCreatePushButton(helpPulldown, "usingHelp", args, n ); XtAddCallback(WidgList[count-1], XmNactivateCallback, (XtCallbackProc)HelpRequestCB, (XtPointer)HELP_USING); XmStringFree(labelString); n = 0; WidgList[count++] = XmCreateSeparatorGadget(helpPulldown,"separator",args,n); n = 0; mnemonic = ((char *)GETMESSAGE(4, 59, "A")); XtSetArg(args[n], XmNmnemonic, mnemonic[0]); n++; labelString = CMPSTR((char *)GETMESSAGE(4, 60, "About Style Manager")); XtSetArg(args[n], XmNlabelString, labelString); n++; WidgList[count++]= XmCreatePushButton(helpPulldown, "stylemanager", args, n ); XtAddCallback(WidgList[count-1], XmNactivateCallback, (XtCallbackProc)HelpRequestCB, (XtPointer)HELP_VERSION); XmStringFree(labelString); XtManageChildren(WidgList, count); /* create frame and row column for icon gadgets */ n = 0; XtSetArg(args[n], XmNresizePolicy, XmRESIZE_NONE); n++; XtSetArg(args[n], XmNshadowType, XmSHADOW_OUT); n++; XtSetArg(args[n], XmNshadowThickness, 1); n++; frame = XmCreateFrame(style.mainWindow, "frame", args, n); XtManageChild(frame); /* Save pixels for later use */ /* primary top/bottom shadow -> fg/bg for pixmaps in primary areas */ /* secondary top/bottom shadow -> fg/bg for pixmaps in secondary areas */ /* secondary select color -> backgrounds of editable text areas */ /* secondary foreground -> fill color on toggle indicators */ /* Get the primary colors to be used later */ n = 0; XtSetArg(args[n], XmNbackground, &bg); n++; XtGetValues(style.mainWindow, args, n); XmGetColors (style.screen, style.colormap, bg, NULL, &style.primTSCol, &style.primBSCol, NULL); /* Get the secondary colors to be used later */ n = 0; XtSetArg(args[n], XmNbackground, &style.secBgCol); n++; XtGetValues(exitBtn, args, n); XmGetColors (style.screen, style.colormap, style.secBgCol, &style.tgSelectColor, &style.secTSCol, &style.secBSCol, &style.secSelectColor); if ((style.secTSCol == style.secBSCol) || /* B_W or shadowPixmaps==True */ (!style.useMultiColorIcons)) /* multiColorIcons turned off */ { /* force TS = White, BS = Black */ style.secTSCol = style.primTSCol = WhitePixelOfScreen(style.screen); style.secBSCol = style.primBSCol = BlackPixelOfScreen(style.screen); } XmeGetPixelData(style.screenNum, &colorUse, pixelSet, &a, &i, &p, &s); n = 0; if (colorUse == XmCO_BLACK_WHITE) { ditherPix = XmGetPixmap (style.screen, "50_foreground", style.primBSCol,style.primTSCol); XtSetArg(args[n], XmNbackgroundPixmap, ditherPix); n++; } XtSetArg(args[n], XmNallowOverlap, False); n++; XtSetArg(args[n], XmNadjustLast, False); n++; XtSetArg(args[n], XmNpacking, XmPACK_TIGHT); n++; XtSetArg(args[n], XmNspacing, style.horizontalSpacing); n++; mainRC = XmCreateRowColumn(frame, "mainRC", args, n); XtManageChild(mainRC); n = 0; XtSetArg(args[n], XmNmenuBar, mainMenu); n++; XtSetArg(args[n], XmNcommandWindow, NULL); n++; XtSetArg(args[n], XmNworkWindow, frame); n++; XtSetValues (style.mainWindow, args, n); ProcessComponentList (shell, mainRC); }
Widget _DtCreateMenuSystem( Widget parent, char * menuBarName, XtCallbackProc helpCallback, XtPointer helpData, Boolean createSharedComponents, MenuDesc * menuDesc, int numMenuComponents, void (*getMenuDataProc)(), void (*setMenuSensitivity)(), void (*restoreMenuSensitivity)() ) { int n; int i; Arg args[20]; Widget menubar; Widget lastCascadeBtn = NULL; Widget lastMenuPane = NULL; char lastMenuPaneType = MENU_PANE; Boolean firstMenuPane = True; Widget child; XmString labelString; int pulldownIndex = 1; int menuPaneIndex = 1; int menuBtnIndex = 1; /* Use our own menu control functions, if none specified */ if (setMenuSensitivity == NULL) setMenuSensitivity = _DtGlobalSetMenuSensitivity; if (restoreMenuSensitivity == NULL) restoreMenuSensitivity = _DtGlobalRestoreMenuSensitivity; /* Create the pulldown menu */ n = 0; XtSetArg(args[n], XmNorientation, XmHORIZONTAL); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; menubar = XmCreateMenuBar(parent, menuBarName, args, n); XtManageChild(menubar); if (helpCallback) XtAddCallback(menubar, XmNhelpCallback, helpCallback, helpData); for (i = 0; i < numMenuComponents; i++) { n = 0; switch (menuDesc[i].type) { case MENU_PULLDOWN_BUTTON: { labelString = XmStringCreateLocalized(menuDesc[i].label); XtSetArg(args[n], XmNlabelString, labelString); n++; if (menuDesc[i].mnemonic) { XtSetArg(args[n], XmNmnemonic, menuDesc[i].mnemonic[0]); n++; } XtSetArg(args[n], XmNmarginWidth, 6); n++; child = XmCreateCascadeButtonGadget(menubar, menuDesc[i].name, args, n); if (menuDesc[i].helpCallback) { XtAddCallback(child, XmNhelpCallback, menuDesc[i].helpCallback, menuDesc[i].helpData); } if (menuDesc[i].isHelpBtn) { XtSetArg(args[0], XmNmenuHelpWidget, child); XtSetValues(menubar, args, 1); } XtManageChild(child); XmStringFree(labelString); lastCascadeBtn = menuDesc[i].widget = child; pulldownIndex++; break; } case SHARED_MENU_PANE: case MENU_PANE: { if (createSharedComponents || (menuDesc[i].type == MENU_PANE)) { child = XmCreatePulldownMenu(menubar, menuDesc[i].name, NULL, 0); if (firstMenuPane) { XtAddCallback(XtParent(child), XmNpopupCallback, setMenuSensitivity, (XtPointer)getMenuDataProc); XtAddCallback(XtParent(child), XmNpopdownCallback, restoreMenuSensitivity, (XtPointer)getMenuDataProc); firstMenuPane = False; } if (menuDesc[i].helpCallback) { XtAddCallback(child, XmNhelpCallback, menuDesc[i].helpCallback, menuDesc[i].helpData); } menuDesc[i].widget = child; } lastMenuPane = menuDesc[i].widget; lastMenuPaneType = menuDesc[i].type; XtSetArg(args[0], XmNsubMenuId, lastMenuPane); XtSetValues(lastCascadeBtn, args, 1); menuBtnIndex = 1; menuPaneIndex++; break; } case MENU_TOGGLE_BUTTON: case MENU_BUTTON: { /* Need to always make btns for non-shared menupanes */ if ((createSharedComponents) || (lastMenuPaneType == MENU_PANE)) { child = CreateMenuBtn (lastMenuPane, (menuDesc[i].type == MENU_BUTTON), menuDesc + i, menuBtnIndex); XtManageChild(child); menuDesc[i].widget = child; } menuBtnIndex++; break; } case MENU_SEPARATOR: { /* Need to always make components for non-shared menupanes */ if ((createSharedComponents) || (lastMenuPaneType == MENU_PANE)) { child = XmCreateSeparatorGadget(lastMenuPane, menuDesc[i].name, NULL, 0); XtManageChild(child); menuDesc[i].widget = child; } break; } } } return(menubar); }
/* * Returns pointer to an ASCII character string that contains the name of the * selected font (in X format for naming fonts); it is the users responsibility * to free the space allocated to this string. */ char_u * gui_xm_select_font(char_u *current) { static SharedFontSelData _data; Widget parent; Widget form; Widget separator; Widget sub_form; Widget size_toggle; Widget name; Widget disp_frame; Widget frame; Arg args[64]; int n; XmString str; char big_font[MAX_FONT_NAME_LEN]; SharedFontSelData *data; data = &_data; parent = vimShell; data->names = XListFonts(XtDisplay(parent), "-*-*-*-*-*-*-*-*-*-*-*-*-*-*", MAX_FONTS, &data->num); /* * Find the name of the biggest font less than the given limit * MAX_DISPLAY_SIZE used to set up the initial height of the display * widget. */ { int i; int max; int index = 0; int size; char str[128]; for (i = 0, max = 0; i < data->num; i++) { get_part(fn(data, i), 7, str); size = atoi(str); if ((size > max) && (size < MAX_DISPLAY_SIZE)) { index = i; max = size; } } strcpy(big_font, fn(data, index)); } data->old = XLoadQueryFont(XtDisplay(parent), big_font); data->old_list = gui_motif_create_fontlist(data->old); /* Set the title of the Dialog window. */ data->dialog = XmCreateDialogShell(parent, "fontSelector", NULL, 0); str = XmStringCreateLocalized(_("Vim - Font Selector")); /* Create form popup dialog widget. */ form = XtVaCreateWidget("form", xmFormWidgetClass, data->dialog, XmNdialogTitle, str, XmNautoUnmanage, False, XmNdialogStyle, XmDIALOG_FULL_APPLICATION_MODAL, NULL); XmStringFree(str); sub_form = XtVaCreateManagedWidget("subForm", xmFormWidgetClass, form, XmNbottomAttachment, XmATTACH_FORM, XmNbottomOffset, 4, XmNrightAttachment, XmATTACH_FORM, XmNrightOffset, 4, XmNtopAttachment, XmATTACH_FORM, XmNtopOffset, 4, XmNorientation, XmVERTICAL, NULL); data->ok = XtVaCreateManagedWidget(_("OK"), xmPushButtonGadgetClass, sub_form, XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, XmNtopAttachment, XmATTACH_FORM, XmNtopOffset, 4, NULL); apply_fontlist(data->ok); data->cancel = XtVaCreateManagedWidget(_("Cancel"), xmPushButtonGadgetClass, sub_form, XmNrightAttachment, XmATTACH_FORM, XmNleftAttachment, XmATTACH_FORM, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, data->ok, XmNtopOffset, 4, XmNshowAsDefault, True, NULL); apply_fontlist(data->cancel); /* Create the separator for beauty. */ n = 0; XtSetArg(args[n], XmNorientation, XmVERTICAL); n++; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_WIDGET); n++; XtSetArg(args[n], XmNrightWidget, sub_form); n++; XtSetArg(args[n], XmNrightOffset, 4); n++; separator = XmCreateSeparatorGadget(form, "separator", args, n); XtManageChild(separator); /* Create font name text widget and the corresponding label. */ data->name = XtVaCreateManagedWidget("fontName", xmTextWidgetClass, form, XmNbottomAttachment, XmATTACH_FORM, XmNbottomOffset, 4, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, 4, XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, separator, XmNrightOffset, 4, XmNeditable, False, XmNeditMode, XmSINGLE_LINE_EDIT, XmNmaxLength, MAX_FONT_NAME_LEN, XmNcolumns, 60, NULL); str = XmStringCreateLocalized(_("Name:")); name = XtVaCreateManagedWidget("fontNameLabel", xmLabelGadgetClass, form, XmNlabelString, str, XmNuserData, data->name, XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET, XmNleftWidget, data->name, XmNbottomAttachment, XmATTACH_WIDGET, XmNbottomWidget, data->name, XmNtopOffset, 1, NULL); XmStringFree(str); apply_fontlist(name); /* create sample display label widget */ disp_frame = XtVaCreateManagedWidget("sampleFrame", xmFrameWidgetClass, form, XmNshadowType, XmSHADOW_ETCHED_IN, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, 4, XmNbottomAttachment, XmATTACH_WIDGET, XmNbottomWidget, name, XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, separator, XmNrightOffset, 4, XmNalignment, XmALIGNMENT_BEGINNING, NULL); data->sample = XtVaCreateManagedWidget("sampleLabel", xmLabelWidgetClass, disp_frame, XmNleftAttachment, XmATTACH_FORM, XmNtopAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, XmNalignment, XmALIGNMENT_BEGINNING, XmNrecomputeSize, False, XmNfontList, data->old_list, NULL); /* create toggle button */ str = XmStringCreateLocalized(_("Show size in Points")); size_toggle = XtVaCreateManagedWidget("sizeToggle", xmToggleButtonGadgetClass, form, XmNlabelString, str, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, 4, XmNbottomAttachment, XmATTACH_WIDGET, XmNbottomWidget, disp_frame, XmNbottomOffset, 4, NULL); XmStringFree(str); apply_fontlist(size_toggle); XtManageChild(size_toggle); /* Encoding pulldown menu. */ data->encoding_pulldown = XmCreatePulldownMenu(form, "encodingPulldown", NULL, 0); str = XmStringCreateLocalized(_("Encoding:")); n = 0; XtSetArg(args[n], XmNsubMenuId, data->encoding_pulldown); ++n; XtSetArg(args[n], XmNlabelString, str); ++n; XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); ++n; XtSetArg(args[n], XmNleftOffset, 4); ++n; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_WIDGET); ++n; XtSetArg(args[n], XmNbottomWidget, size_toggle); ++n; XtSetArg(args[n], XmNbottomOffset, 4); ++n; XtSetArg(args[n], XmNrightAttachment, XmATTACH_WIDGET); ++n; XtSetArg(args[n], XmNrightWidget, separator); ++n; XtSetArg(args[n], XmNrightOffset, 4); ++n; data->encoding_menu = XmCreateOptionMenu(form, "encodingMenu", args, n); XmStringFree(str); XmAddTabGroup(data->encoding_menu); /* * Create scroll list widgets in a separate subform used to manage the * different sizes of the lists. */ sub_form = XtVaCreateManagedWidget("subForm", xmFormWidgetClass, form, XmNbottomAttachment, XmATTACH_WIDGET, XmNbottomWidget, data->encoding_menu, XmNbottomOffset, 4, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, 4, XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, separator, XmNrightOffset, 4, XmNtopAttachment, XmATTACH_FORM, XmNtopOffset, 2, XmNorientation, XmVERTICAL, NULL); /* font list */ frame = XtVaCreateManagedWidget("frame", xmFrameWidgetClass, sub_form, XmNshadowThickness, 0, XmNtopAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_POSITION, XmNrightPosition, 50, NULL); str = XmStringCreateLocalized(_("Font:")); name = XtVaCreateManagedWidget("nameListLabel", xmLabelGadgetClass, frame, XmNchildType, XmFRAME_TITLE_CHILD, XmNchildVerticalAlignment, XmALIGNMENT_CENTER, XmNchildHorizontalAlignment, XmALIGNMENT_BEGINNING, XmNlabelString, str, NULL); XmStringFree(str); apply_fontlist(name); n = 0; XtSetArg(args[n], XmNvisibleItemCount, 8); ++n; XtSetArg(args[n], XmNresizable, True); ++n; XtSetArg(args[n], XmNlistSizePolicy, XmCONSTANT); ++n; XtSetArg(args[n], XmNvisualPolicy, XmVARIABLE); ++n; #ifdef LESSTIF_VERSION XtSetArg(args[n], XmNscrollBarDisplayPolicy, XmSTATIC); ++n; #endif data->list[NAME] = XmCreateScrolledList(frame, "fontList", args, n); XtVaSetValues(name, XmNuserData, data->list[NAME], NULL); /* style list */ frame = XtVaCreateManagedWidget("frame", xmFrameWidgetClass, sub_form, XmNshadowThickness, 0, XmNtopAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, XmNleftAttachment, XmATTACH_POSITION, XmNleftPosition, 50, XmNleftOffset, 4, XmNrightAttachment, XmATTACH_POSITION, XmNrightPosition, 80, NULL); str = XmStringCreateLocalized(_("Style:")); name = XtVaCreateManagedWidget("styleListLabel", xmLabelWidgetClass, frame, XmNchildType, XmFRAME_TITLE_CHILD, XmNchildVerticalAlignment, XmALIGNMENT_CENTER, XmNchildHorizontalAlignment, XmALIGNMENT_BEGINNING, XmNlabelString, str, NULL); XmStringFree(str); apply_fontlist(name); n = 0; XtSetArg(args[n], XmNvisibleItemCount, 8); ++n; XtSetArg(args[n], XmNresizable, True); ++n; XtSetArg(args[n], XmNlistSizePolicy, XmCONSTANT); ++n; XtSetArg(args[n], XmNvisualPolicy, XmVARIABLE); ++n; #ifdef LESSTIF_VERSION XtSetArg(args[n], XmNscrollBarDisplayPolicy, XmSTATIC); ++n; #endif data->list[STYLE] = XmCreateScrolledList(frame, "styleList", args, n); XtVaSetValues(name, XmNuserData, data->list[STYLE], NULL); /* size list */ frame = XtVaCreateManagedWidget("frame", xmFrameWidgetClass, sub_form, XmNshadowThickness, 0, XmNtopAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, XmNleftAttachment, XmATTACH_POSITION, XmNleftPosition, 80, XmNleftOffset, 4, XmNrightAttachment, XmATTACH_FORM, NULL); str = XmStringCreateLocalized(_("Size:")); name = XtVaCreateManagedWidget("sizeListLabel", xmLabelGadgetClass, frame, XmNchildType, XmFRAME_TITLE_CHILD, XmNchildVerticalAlignment, XmALIGNMENT_CENTER, XmNchildHorizontalAlignment, XmALIGNMENT_BEGINNING, XmNlabelString, str, NULL); XmStringFree(str); apply_fontlist(name); n = 0; XtSetArg(args[n], XmNvisibleItemCount, 8); ++n; XtSetArg(args[n], XmNresizable, True); ++n; XtSetArg(args[n], XmNlistSizePolicy, XmCONSTANT); ++n; XtSetArg(args[n], XmNvisualPolicy, XmVARIABLE); ++n; #ifdef LESSTIF_VERSION XtSetArg(args[n], XmNscrollBarDisplayPolicy, XmSTATIC); ++n; #endif data->list[SIZE] = XmCreateScrolledList(frame, "sizeList", args, n); XtVaSetValues(name, XmNuserData, data->list[SIZE], NULL); /* update form widgets cancel button */ XtVaSetValues(form, XmNcancelButton, data->cancel, NULL); XtAddCallback(size_toggle, XmNvalueChangedCallback, (XtCallbackProc)stoggle_callback, (XtPointer)data); XtAddCallback(data->list[NAME], XmNbrowseSelectionCallback, (XtCallbackProc)name_callback, (XtPointer)data); XtAddCallback(data->list[STYLE], XmNbrowseSelectionCallback, (XtCallbackProc)style_callback, (XtPointer)data); XtAddCallback(data->list[SIZE], XmNbrowseSelectionCallback, (XtCallbackProc)size_callback, (XtPointer)data); XtAddCallback(data->ok, XmNactivateCallback, (XtCallbackProc)ok_callback, (XtPointer)data); XtAddCallback(data->cancel, XmNactivateCallback, (XtCallbackProc)cancel_callback, (XtPointer)data); XmProcessTraversal(data->list[NAME], XmTRAVERSE_CURRENT); /* setup tabgroups */ XmAddTabGroup(data->list[NAME]); XmAddTabGroup(data->list[STYLE]); XmAddTabGroup(data->list[SIZE]); XmAddTabGroup(size_toggle); XmAddTabGroup(data->name); XmAddTabGroup(data->ok); XmAddTabGroup(data->cancel); add_cancel_action(data->dialog, (XtCallbackProc)cancel_callback, data); /* Preset selection data. */ data->exit = False; data->in_pixels= True; data->sel[ENCODING] = NULL; data->sel[NAME] = NULL; data->sel[STYLE] = NULL; data->sel[SIZE] = NULL; data->font_name = NULL; /* set up current font parameters */ if (current && current[0] != '\0') { int i; char **names; names = XListFonts(XtDisplay(form), (char *) current, 1, &i); if (i != 0) { char name[TEMP_BUF_SIZE]; char style[TEMP_BUF_SIZE]; char size[TEMP_BUF_SIZE]; char encoding[TEMP_BUF_SIZE]; char *found; found = names[0]; name_part(found, name); style_part(found, style); size_part(found, size, data->in_pixels); encoding_part(found, encoding); if (strlen(name) > 0 && strlen(style) > 0 && strlen(size) > 0 && strlen(encoding) > 0) { data->sel[NAME] = XtNewString(name); data->sel[STYLE] = XtNewString(style); data->sel[SIZE] = XtNewString(size); data->sel[ENCODING] = XtNewString(encoding); data->font_name = XtNewString(names[0]); display_sample(data); XmTextSetString(data->name, data->font_name); } else { /* We can't preset a symbolic name, which isn't a full font * description. Therefore we just behave the same way as if the * user didn't have selected anything thus far. * * Unfortunately there is no known way to expand an abbreviated * font name. */ data->font_name = NULL; } } XFreeFontNames(names); } fill_lists(NONE, data); /* Unfortunately LessTif doesn't align the list widget's properly. I don't * have currently any idea how to fix this problem. */ XtManageChild(data->list[NAME]); XtManageChild(data->list[STYLE]); XtManageChild(data->list[SIZE]); XtManageChild(data->encoding_menu); manage_centered(form); /* modal event loop */ while (!data->exit) XtAppProcessEvent(XtWidgetToApplicationContext(data->dialog), (XtInputMask)XtIMAll); XtDestroyWidget(data->dialog); if (data->old) { XFreeFont(XtDisplay(data->dialog), data->old); XmFontListFree(data->old_list); } gui_motif_synch_fonts(); return (char_u *) data->font_name; }
void buttonHistory(Widget w, XtPointer client, XtPointer call) { int i; unsigned long k; Arg newArgs[CONFIG_ARG_COUNT]; extern struct mainInfo *pMainMainInfo; historyClose(w, client, call); if(pMainMainInfo->hstPixmap == 0) { if((pMainMainInfo->hstPixmap = XCreatePixmap(pMainMainInfo->appDisplay, RootWindowOfScreen(pMainMainInfo->appScreen), NUM_HISTORY_WIDTH, NUM_HISTORY_HEIGHT, DefaultDepthOfScreen(pMainMainInfo->appScreen))) == 0) { warningMessage(ERROR_SLIGHT, "Error occurred while trying to allocate memory for pixmap", pMainMainInfo); return; } } // Create panel i = 0; XtSetArg(newArgs[i], XmNtitle, WINDOW_TITLE_HISTORY); i++; XtSetArg(newArgs[i], XmNdeleteResponse, XmDESTROY); i++; pMainMainInfo->hstDialog = XmCreateDialogShell(pMainMainInfo->dlgHistory, TITLE_HISTORY_TITLE, newArgs, i); i = 0; XtSetArg(newArgs[i], XmNorientation, XmVERTICAL); i++; XtSetArg(newArgs[i], XmNpacking, XmPACK_TIGHT); i++; XtSetArg(newArgs[i], XmNscrollingPolicy, XmAUTOMATIC); i++; pMainMainInfo->hstPanel = XmCreateRowColumn(pMainMainInfo->hstDialog, "history_panel", newArgs, i); i = 0; XtSetArg(newArgs[i], XmNorientation, XmHORIZONTAL); i++; XtSetArg(newArgs[i], XmNpacking, XmPACK_TIGHT); i++; XtSetArg(newArgs[i], XmNscrollingPolicy, XmAUTOMATIC); i++; pMainMainInfo->hstOutput = XmCreateRowColumn(pMainMainInfo->hstPanel, "history_form", newArgs, i); // Create drawing area i = 0; XtSetArg(newArgs[i], XmNwidth, NUM_HISTORY_WIDTH); i++; XtSetArg(newArgs[i], XmNheight, NUM_HISTORY_HEIGHT); i++; pMainMainInfo->hstDraw = XmCreateDrawingArea(pMainMainInfo->hstOutput, "history_drawing", newArgs, i); XtAddCallback(pMainMainInfo->hstDraw, XmNinputCallback, historyExpose, NULL); XtAddCallback(pMainMainInfo->hstDraw, XmNexposeCallback, historyExpose, NULL); XtVaSetValues(pMainMainInfo->hstDraw, XmNuserData, pMainMainInfo->appGC, NULL); XtManageChild(pMainMainInfo->hstDraw); // Create control area i = 0; XtSetArg(newArgs[i], XmNorientation, XmVERTICAL); i++; XtSetArg(newArgs[i], XmNpacking, XmPACK_TIGHT); i++; XtSetArg(newArgs[i], XmNrowColumnType, XmWORK_AREA); i++; XtSetArg(newArgs[i], XmNscrollingPolicy, XmNONE); i++; pMainMainInfo->hstCtrl = XtCreateManagedWidget("history_controls", xmRowColumnWidgetClass, pMainMainInfo->hstOutput, newArgs, i); // Create control area menus netFetchDays(pMainMainInfo); pMainMainInfo->hstMenuDate = XmCreatePulldownMenu(pMainMainInfo->hstCtrl, "date", NULL, 0); i = 0; XtSetArg(newArgs[i], XmNsubMenuId, pMainMainInfo->hstMenuDate); i++; pMainMainInfo->hstOptionDate = XmCreateOptionMenu(pMainMainInfo->hstCtrl, "option", newArgs, i); XtManageChild(pMainMainInfo->hstOptionDate); for(k = 0; ; k++) { if(pMainMainInfo->hstArrays[k].label[0] == 0) { break; } pMainMainInfo->hstButtonDate = XtCreateManagedWidget(pMainMainInfo->hstArrays[k].label, xmPushButtonWidgetClass, pMainMainInfo->hstMenuDate, NULL, 0); XtAddCallback(pMainMainInfo->hstButtonDate, XmNactivateCallback, historyMenuDate, (XtPointer) k); } if(k == 0) { pMainMainInfo->hstButtonDate = XtCreateManagedWidget(TITLE_HISTORY_MENU_EMPTY, xmPushButtonWidgetClass, pMainMainInfo->hstMenuDate, NULL, 0); } pMainMainInfo->hstDaysFetch = 0; // Create separator pMainMainInfo->hstButton = XmCreateSeparatorGadget(pMainMainInfo->hstCtrl, "history_separator", NULL, 0); XtManageChild(pMainMainInfo->hstButton); // Create control area buttons i = 0; XtSetArg(newArgs[i], XmNshowAsDefault, True); i++; pMainMainInfo->hstButton = XmCreatePushButtonGadget(pMainMainInfo->hstCtrl, TITLE_HISTORY_BUTTON_UPDATE, newArgs, i); XtAddCallback(pMainMainInfo->hstButton, XmNactivateCallback, historyUpdate, NULL); XtManageChild(pMainMainInfo->hstButton); i = 0; XtSetArg(newArgs[i], XmNshowAsDefault, True); i++; pMainMainInfo->hstButton = XmCreatePushButtonGadget(pMainMainInfo->hstCtrl, TITLE_HISTORY_BUTTON_SAVE, newArgs, i); XtAddCallback(pMainMainInfo->hstButton, XmNactivateCallback, historyExport, NULL); XtManageChild(pMainMainInfo->hstButton); // Create separator pMainMainInfo->hstButton = XmCreateSeparatorGadget(pMainMainInfo->hstCtrl, "history_separator", NULL, 0); XtManageChild(pMainMainInfo->hstButton); i = 0; XtSetArg(newArgs[i], XmNshowAsDefault, True); i++; pMainMainInfo->hstButton = XmCreatePushButtonGadget(pMainMainInfo->hstCtrl, TITLE_HISTORY_BUTTON_DISMISS, newArgs, i); XtAddCallback(pMainMainInfo->hstButton, XmNactivateCallback, historyClose, NULL); XtManageChild(pMainMainInfo->hstButton); XtManageChild(pMainMainInfo->hstOutput); XtManageChild(pMainMainInfo->hstPanel); historyMenuDate(w, client, call); }