Ejemplo n.º 1
0
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);


}
Ejemplo n.º 2
0
Widget XmCreateSimpleMenuBar_TNK(Widget parent, String name, ArgList arglist,Cardinal argcount) { return XmCreateSimpleMenuBar(parent, name, arglist, argcount);}