void createColor() { Widget paletteRC; XmString buttons[N_MAX_MENU_ELES]; KeySym keySyms[N_MAX_MENU_ELES]; XmButtonType buttonType[N_MAX_MENU_ELES]; Widget colorMB; Widget colorHelpPDM; Widget menuHelpWidget; Pixel fg, bg; int i, n, childCount; Arg args[10]; /* * create a main window in a dialog, and then the palette radio box */ n = 0; XtSetArg(args[n],XtNiconName,"Colors"); n++; XtSetArg(args[n],XtNtitle,"Color Palette"); n++; XtSetArg(args[n],XtNallowShellResize,TRUE); n++; XtSetArg(args[n],XmNkeyboardFocusPolicy,XmEXPLICIT); n++; /* map window manager menu Close function to application close... */ XtSetArg(args[n],XmNdeleteResponse,XmDO_NOTHING); n++; XtSetArg(args[n],XmNmwmDecorations,MWM_DECOR_ALL|MWM_DECOR_RESIZEH); n++; colorS = XtCreatePopupShell("colorS",topLevelShellWidgetClass, mainShell,args,n); XmAddWMProtocolCallback(colorS,WM_DELETE_WINDOW, (XtCallbackProc)wmCloseCallback, (XtPointer)OTHER_SHELL); colorMW = XmCreateMainWindow(colorS,"colorMW",NULL,0); /* * create the menu bar */ buttons[0] = XmStringCreateSimple("File"); buttons[1] = XmStringCreateSimple("Help"); #if 0 keySyms[0] = 'F'; keySyms[1] = 'H'; n = 0; XtSetArg(args[n],XmNbuttonCount,N_MAIN_MENU_ELES); n++; XtSetArg(args[n],XmNbuttons,buttons); n++; XtSetArg(args[n],XmNbuttonMnemonics,keySyms); n++; XtSetArg(args[n],XmNforeground,defaultForeground); n++; XtSetArg(args[n],XmNbackground,defaultBackground); n++; colorMB = XmCreateSimpleMenuBar(colorMW, "colorMB",args,n); #endif colorMB = XmVaCreateSimpleMenuBar(colorMW, "colorMB", XmVaCASCADEBUTTON, buttons[0], 'F', XmVaCASCADEBUTTON, buttons[1], 'H', NULL); /* color colorMB properly (force so VUE doesn't interfere) */ colorMenuBar(colorMB,defaultForeground,defaultBackground); /* set the Help cascade button in the menu bar */ menuHelpWidget = XtNameToWidget(colorMB,"*button_1"); XtVaSetValues(colorMB,XmNmenuHelpWidget,menuHelpWidget, NULL); for (i = 0; i < N_MAIN_MENU_ELES; i++) XmStringFree(buttons[i]); /* * create the file pulldown menu pane */ buttons[0] = XmStringCreateSimple("Close"); keySyms[0] = 'C'; buttonType[0] = XmPUSHBUTTON; n = 0; XtSetArg(args[n],XmNbuttonCount,N_FILE_MENU_ELES); n++; XtSetArg(args[n],XmNbuttons,buttons); n++; XtSetArg(args[n],XmNbuttonType,buttonType); n++; XtSetArg(args[n],XmNbuttonMnemonics,keySyms); n++; XtSetArg(args[n],XmNpostFromButton,FILE_BTN_POSN); n++; XtSetArg(args[n],XmNsimpleCallback,fileMenuSimpleCallback); n++; XmCreateSimplePulldownMenu(colorMB,"colorFilePDM", args,n); for (i = 0; i < N_FILE_MENU_ELES; i++) XmStringFree(buttons[i]); /* * create the help pulldown menu pane */ buttons[0] = XmStringCreateSimple("On Color Palette..."); keySyms[0] = 'C'; buttonType[0] = XmPUSHBUTTON; n = 0; XtSetArg(args[n],XmNbuttonCount,N_HELP_MENU_ELES); n++; XtSetArg(args[n],XmNbuttons,buttons); n++; XtSetArg(args[n],XmNbuttonType,buttonType); n++; XtSetArg(args[n],XmNbuttonMnemonics,keySyms); n++; XtSetArg(args[n],XmNpostFromButton,HELP_BTN_POSN); n++; colorHelpPDM = XmCreateSimplePulldownMenu(colorMB, "colorHelpPDM",args,n); XmStringFree(buttons[0]); /* (MDA) for now, disable this menu */ XtSetSensitive(colorHelpPDM,False); /* * Add the Palette Radio Box for the drawing color toggle buttons * */ n = 0; XtSetArg(args[n],XmNadjustLast,False); n++; XtSetArg(args[n],XmNadjustLast,False); n++; XtSetArg(args[n],XmNpacking,XmPACK_COLUMN); n++; XtSetArg(args[n],XmNorientation,XmVERTICAL); n++; XtSetArg(args[n],XmNnumColumns,(short)(DL_MAX_COLORS/DL_COLORS_COLUMN_SIZE)); n++; XtSetArg(args[n],XmNspacing,0); n++; paletteRC = XmCreateRowColumn(colorMW,"paletteRC",args,n); XtVaGetValues(paletteRC,XmNforeground,&fg,XmNbackground,&bg,NULL); /* * create the (maximum number of) color buttons */ n = 0; XtSetArg(args[n],XmNlabelType,XmPIXMAP); n++; XtSetArg(args[n],XmNrecomputeSize,False); n++; for (childCount = 0; childCount < DL_MAX_COLORS; childCount++) { /* use values in default colormap if in valid area of colormap */ globalColorPalettePB[childCount] = XmCreatePushButton(paletteRC,"colorPB", args,n); XtAddCallback(globalColorPalettePB[childCount],XmNactivateCallback, colorPaletteActivateCallback, (XtPointer)childCount); } /* want to keep same shadow colors... but different background */ for (childCount = 0; childCount < DL_MAX_COLORS; childCount++) { XtSetArg(args[0],XmNbackground,(Pixel)defaultColormap[childCount]); XtSetValues(globalColorPalettePB[childCount],args,1); } XmMainWindowSetAreas(colorMW,colorMB,NULL,NULL,NULL,paletteRC); /* * manage the composites */ XtManageChild(colorMB); XtManageChildren(globalColorPalettePB,childCount); XtManageChild(paletteRC); XtManageChild(colorMW); }
Widget XmCreateSimpleMenuBar_TNK(Widget parent, String name, ArgList arglist,Cardinal argcount) { return XmCreateSimpleMenuBar(parent, name, arglist, argcount);}