示例#1
0
Widget
SoXtMaterialList::buildPulldownMenu(// protected
  Widget parent)
{
  Widget palettes = XtVaCreateManagedWidget("palettes",
    xmCascadeButtonGadgetClass, parent,
    XtVaTypedArg,
      XmNlabelString, XmRString,
      "Palettes", sizeof("Palettes") + 1,
    NULL);

  Widget shell = SoXt::getShellWidget(parent);
  assert(shell != (Widget) NULL);

  Visual * visual;
  Colormap colormap;
  int depth;

  XtVaGetValues(shell,
    XmNvisual, &visual,
    XmNcolormap, &colormap,
    XmNdepth, &depth,
    NULL);

  Widget menu =
    XmVaCreateSimplePulldownMenu(parent, "materialsmenu", 0, NULL, NULL);

  SoXtMaterialDirectory * data = common->getMaterialDirectory();
  for (int i = 0; i < data->numGroups; i++) {
    Widget item;
    item = XtVaCreateManagedWidget(data->groups[i]->name,
             xmPushButtonGadgetClass, menu,
             XtVaTypedArg,
               XmNlabelString, XmRString,
               data->groups[i]->name, strlen(data->groups[i]->name) + 1,
             NULL);
    data->groups[i]->menuitem = item;
    XtAddCallback(item, XmNactivateCallback,
      SoXtMaterialList::palette_menu_cb, (void *) this);
  }

  return palettes;
} // buildPulldownMenu()
示例#2
0
Widget CreateMenuBar(Widget main)
{
    Widget menubar;
    XmString file,mode,step,options,open,stop,quit;

    /* Create the menubar */
    file = XmStringCreateLocalized("File");
    mode = XmStringCreateLocalized("Mode");
    step = XmStringCreateLocalized("Step");
    options = XmStringCreateLocalized("Options");
    menubar = XmVaCreateSimpleMenuBar(main,"menubar",
        XmVaCASCADEBUTTON, file, 'F',
        XmVaCASCADEBUTTON, mode, 'M',
        XmVaCASCADEBUTTON, step, 'S',
        XmVaCASCADEBUTTON, options, 'O',
        NULL);
    XmStringFree(file);
    XmStringFree(mode);
    XmStringFree(step);
    XmStringFree(options);

    /* File Menu */
    open = XmStringCreateLocalized("New Game...");
    stop = XmStringCreateLocalized("Stop Game");
    quit = XmStringCreateLocalized("Quit");
    XmVaCreateSimplePulldownMenu(menubar,"file_menu",0,file_cb,
        XmVaPUSHBUTTON,open,'O',NULL,NULL,
        XmVaPUSHBUTTON,stop,'S',NULL,NULL,
        XmVaSEPARATOR,
        XmVaPUSHBUTTON,quit,'Q',NULL,NULL,
        NULL);
    XmStringFree(open);
    XmStringFree(stop);
    XmStringFree(quit);
        
    /* Manage the menubar and return the widget */
    XtManageChild(menubar);
    return menubar;
}
示例#3
0
文件: xgps.c 项目: gnehzuil/GeoSVR
static void
build_gui(Widget toplevel)
{
	Widget main_w, menubar, widget, sat_frame, sky_frame, gps_frame;
	Widget gps_form, gps_data, sw;

	Arg args[100];
	XGCValues gcv;
	Atom delw;
	int i;
	XmString string;
	XmString file, help, about, quit;

	/*@ -immediatetrans -usedef @*/
	/* the root application window */
	XtSetArg(args[0], XmNwidth, LEFTSIDE_WIDTH + SATDIAG_SIZE + 26);
	XtSetArg(args[1], XmNheight, SATDATA_HEIGHT + 14 * MAX_FONTSIZE + 12);
	/*@ +immediatetrans +usedef @*/
	XtSetValues(toplevel, args, 2);

	/*@ -onlytrans @*/
	main_w = XtVaCreateManagedWidget("main_window",
	    xmMainWindowWidgetClass,	toplevel,
	    NULL);

	/* Construct the menubar */
	file = XmStringCreateLocalized("File");
	help = XmStringCreateLocalized("Help");
	menubar = XmVaCreateSimpleMenuBar(main_w, "menubar",
	    XmVaCASCADEBUTTON,	file,	'F',
	    XmVaCASCADEBUTTON,	help,	'H',
	    NULL);
	XmStringFree(file);

	if ((widget = XtNameToWidget(menubar, "button_1")))
		XtVaSetValues(menubar, XmNmenuHelpWidget, widget, NULL);

	quit = XmStringCreateLocalized("Quit");
	(void)XmVaCreateSimplePulldownMenu(menubar, "file_menu", 0, file_cb,
	    XmVaPUSHBUTTON, quit, 'Q', NULL, NULL,
	    NULL);
	XmStringFree(quit);

	about = XmStringCreateLocalized("About");
	(void)XmVaCreateSimplePulldownMenu(menubar, "help_menu", 1, help_cb,
	    XmVaPUSHBUTTON, help,  'H', NULL, NULL,
	    XmVaSEPARATOR,
	    XmVaPUSHBUTTON, about, 'A', NULL, NULL,
	    NULL);
	XmStringFree(help);
	XmStringFree(about);

	XtManageChild(menubar);


	/* a form to assist with geometry negotiation */
	form = XtVaCreateManagedWidget("form",
	    xmFormWidgetClass,		main_w,
	    XmNfractionBase,		3,
	    NULL);

	/* satellite frame */
	sat_frame = XtVaCreateWidget("satellite_frame",
	    xmFrameWidgetClass,		form,
	    XmNshadowType,		XmSHADOW_ETCHED_IN,
	    XmNtopAttachment,		XmATTACH_FORM,
	    XmNrightAttachment,		XmATTACH_POSITION,
	    XmNrightPosition,		1,
	    XmNbottomAttachment,	XmATTACH_POSITION,
	    XmNbottomPosition,		2,
	    XmNleftAttachment,		XmATTACH_FORM,
	    NULL);
	(void)XtVaCreateManagedWidget("Satellite List",
	    xmLabelGadgetClass,		sat_frame,
	    XmNchildType,		XmFRAME_TITLE_CHILD,
	    XmNchildVerticalAlignment,	XmALIGNMENT_CENTER,
	    NULL);

	/* the left half of the screen */
	left = XtVaCreateManagedWidget("left",
	    xmFormWidgetClass, 	sat_frame,
	    NULL);

	/* skyview frame */
	sky_frame = XtVaCreateWidget("skyview_frame",
	    xmFrameWidgetClass,		form,
	    XmNshadowType,		XmSHADOW_ETCHED_IN,
	    XmNtopAttachment,		XmATTACH_FORM,
	    XmNrightAttachment,		XmATTACH_FORM,
	    XmNbottomAttachment,	XmATTACH_POSITION,
	    XmNbottomPosition,		2,
	    XmNleftAttachment,		XmATTACH_POSITION,
	    XmNleftPosition,		1,
	    NULL);
	(void)XtVaCreateManagedWidget("Skyview",
	    xmLabelGadgetClass,		sky_frame,
	    XmNchildType,		XmFRAME_TITLE_CHILD,
	    XmNchildVerticalAlignment,	XmALIGNMENT_CENTER,
	    NULL);

	/* the right half of the screen */
	right = XtVaCreateManagedWidget("right",
	    xmFormWidgetClass, 		sky_frame,
	    NULL);

	/* the application status bar */
	status_form = XtVaCreateManagedWidget("status_form",
	    xmFormWidgetClass,		form,
	    XmNtopAttachment,		XmATTACH_POSITION,
	    XmNtopPosition,		2,
	    XmNleftAttachment,		XmATTACH_FORM,
	    XmNrightAttachment,		XmATTACH_FORM,
	    XmNtopAttachment,           XmATTACH_WIDGET,
	    XmNtopWidget,               left,
	    XmNfractionBase,		3,
	    NULL);
	status_frame = XtVaCreateWidget("status_frame",
	    xmFrameWidgetClass,		status_form,
	    XmNshadowType,		XmSHADOW_ETCHED_IN,
	    XmNtopAttachment,		XmATTACH_FORM,
	    XmNleftAttachment,		XmATTACH_FORM,
	    XmNrightAttachment,		XmATTACH_FORM,
	    XmNbottomAttachment,	XmATTACH_FORM,
	    NULL);
	(void)XtVaCreateManagedWidget("Message Data",
	    xmLabelGadgetClass,		status_frame,
	    XmNchildType,		XmFRAME_TITLE_CHILD,
	    XmNchildVerticalAlignment,	XmALIGNMENT_CENTER,
	    NULL);
	status = XtVaCreateManagedWidget("status", 
					 xmTextFieldWidgetClass, status_form,
					 XmNcursorPositionVisible, False,
					 XmNeditable, False,
					 XmNmarginHeight, 1,
					 XmNhighlightThickness, 0,
					 XmNshadowThickness, 2,
					 XmNleftAttachment, XmATTACH_FORM,
					 XmNrightAttachment, XmATTACH_FORM,
					 XmNtopAttachment, XmATTACH_FORM,
					 XmNbottomAttachment, XmATTACH_FORM,
					 NULL);

	/* gps information frame */
	gps_form = XtVaCreateManagedWidget("gps_form",
	    xmFormWidgetClass,		form,
	    XmNtopAttachment,		XmATTACH_POSITION,
	    XmNtopPosition,		2,
	    XmNleftAttachment,		XmATTACH_FORM,
	    XmNrightAttachment,		XmATTACH_FORM,
	    XmNbottomAttachment,	XmATTACH_FORM,
	    XmNtopAttachment,           XmATTACH_WIDGET,
	    XmNtopWidget,               status_form,
	    XmNfractionBase,		3,
	    NULL);
	gps_frame = XtVaCreateWidget("gps_frame",
	    xmFrameWidgetClass,		gps_form,
	    XmNshadowType,		XmSHADOW_ETCHED_IN,
	    XmNtopAttachment,		XmATTACH_FORM,
	    XmNleftAttachment,		XmATTACH_FORM,
	    XmNrightAttachment,		XmATTACH_FORM,
	    XmNbottomAttachment,	XmATTACH_FORM,
	    NULL);
	(void)XtVaCreateManagedWidget("GPS Data",
	    xmLabelGadgetClass,		gps_frame,
	    XmNchildType,		XmFRAME_TITLE_CHILD,
	    XmNchildVerticalAlignment,	XmALIGNMENT_CENTER,
	    NULL);
	sw = XtVaCreateManagedWidget("scrolled_w",
	    xmScrolledWindowWidgetClass,	gps_frame,
	    XmNscrollingPolicy,			XmAUTOMATIC,
	    NULL);
	gps_data = XtVaCreateWidget("gps_data",
	    xmFormWidgetClass,		sw,
	    XmNfractionBase,		30,
	    NULL);

	/* satellite location and SNR data panel */
	satellite_list = XtVaCreateManagedWidget("satellite_list",
	    xmListWidgetClass,		left,
	    XmNbackground,		get_pixel(toplevel, "snow"),
	    XmNlistSizePolicy,		XmCONSTANT,
	    XmNhighlightThickness,	0,
	    XmNlistSpacing,		4,
	    XmNtopAttachment,		XmATTACH_FORM,
	    XmNrightAttachment,		XmATTACH_FORM,
	    XmNbottomAttachment,	XmATTACH_FORM,
	    XmNleftAttachment,		XmATTACH_FORM,
	    NULL);

	/* the satellite diagram */
	satellite_diagram = XtVaCreateManagedWidget("satellite_diagram",
	    xmDrawingAreaWidgetClass,	right, 
	    XmNbackground,		get_pixel(toplevel, "snow"),
	    XmNheight,			SATDIAG_SIZE + 24,
	    XmNwidth,			SATDIAG_SIZE,
	    XmNtopAttachment,		XmATTACH_FORM,
	    XmNrightAttachment,		XmATTACH_FORM,
	    XmNbottomAttachment,	XmATTACH_FORM,
	    XmNleftAttachment,		XmATTACH_FORM,
	    NULL);

	gcv.foreground = BlackPixelOfScreen(XtScreen(satellite_diagram));
	gc = XCreateGC(XtDisplay(satellite_diagram),
	RootWindowOfScreen(XtScreen(satellite_diagram)), GCForeground, &gcv);
	register_canvas(satellite_diagram, gc);
	XtVaSetValues(satellite_diagram, XmNuserData, gc, NULL);
	/*@i@*/XtAddCallback(satellite_diagram, XmNexposeCallback, redraw, NULL);
	/*@i@*/XtAddCallback(satellite_diagram, XmNresizeCallback, resize, NULL);

	/* the data display */
	(void)XtVaCreateManagedWidget("Time", xmLabelGadgetClass, gps_data,
	    XmNalignment,		XmALIGNMENT_END,
	    XmNtopAttachment,		XmATTACH_POSITION,
	    XmNtopPosition,		0,
	    XmNrightAttachment,		XmATTACH_POSITION,
	    XmNrightPosition,		5,
	    XmNbottomAttachment,	XmATTACH_POSITION,
	    XmNbottomPosition,		6,
	    XmNleftAttachment,		XmATTACH_POSITION,
	    XmNleftPosition,		0,
	    NULL);
	(void)XtVaCreateManagedWidget("Latitude", xmLabelGadgetClass, gps_data,
	    XmNalignment,		XmALIGNMENT_END,
	    XmNtopAttachment,		XmATTACH_POSITION,
	    XmNtopPosition,		6,
	    XmNrightAttachment,		XmATTACH_POSITION,
	    XmNrightPosition,		5,
	    XmNbottomAttachment,	XmATTACH_POSITION,
	    XmNbottomPosition,		12,
	    XmNleftAttachment,		XmATTACH_POSITION,
	    XmNleftPosition,		0,
	    NULL);
	(void)XtVaCreateManagedWidget("Longitude", xmLabelGadgetClass, gps_data,
	    XmNalignment,		XmALIGNMENT_END,
	    XmNtopAttachment,		XmATTACH_POSITION,
	    XmNtopPosition,		12,
	    XmNrightAttachment,		XmATTACH_POSITION,
	    XmNrightPosition,		5,
	    XmNbottomAttachment,	XmATTACH_POSITION,
	    XmNbottomPosition,		18,
	    XmNleftAttachment,		XmATTACH_POSITION,
	    XmNleftPosition,		0,
	    NULL);
	(void)XtVaCreateManagedWidget("Altitude", xmLabelGadgetClass, gps_data,
	    XmNalignment,		XmALIGNMENT_END,
	    XmNtopAttachment,		XmATTACH_POSITION,
	    XmNtopPosition,		18,
	    XmNrightAttachment,		XmATTACH_POSITION,
	    XmNrightPosition,		5,
	    XmNbottomAttachment,	XmATTACH_POSITION,
	    XmNbottomPosition,		24,
	    XmNleftAttachment,		XmATTACH_POSITION,
	    XmNleftPosition,		0,
	    NULL);
	(void)XtVaCreateManagedWidget("Speed", xmLabelGadgetClass, gps_data,
	    XmNalignment,		XmALIGNMENT_END,
	    XmNtopAttachment,		XmATTACH_POSITION,
	    XmNtopPosition,		24,
	    XmNrightAttachment,		XmATTACH_POSITION,
	    XmNrightPosition,		5,
	    XmNbottomAttachment,	XmATTACH_POSITION,
	    XmNbottomPosition,		30,
	    XmNleftAttachment,		XmATTACH_POSITION,
	    XmNleftPosition,		0,
	    NULL);

	text_1 = XtVaCreateManagedWidget("time",
	    xmTextFieldWidgetClass,	gps_data,
	    XmNeditable,		False,
	    XmNcursorPositionVisible,	False,
	    XmNtopAttachment,		XmATTACH_POSITION,
	    XmNtopPosition,		0,
	    XmNrightAttachment,		XmATTACH_POSITION,
	    XmNrightPosition,		15,
	    XmNbottomAttachment,	XmATTACH_POSITION,
	    XmNbottomPosition,		6,
	    XmNleftAttachment,		XmATTACH_POSITION,
	    XmNleftPosition,		5,
	    NULL);
	text_2 = XtVaCreateManagedWidget("latitude",
	    xmTextFieldWidgetClass,	gps_data,
	    XmNeditable,		False,
	    XmNcursorPositionVisible,	False,
	    XmNtopAttachment,		XmATTACH_POSITION,
	    XmNtopPosition,		6,
	    XmNrightAttachment,		XmATTACH_POSITION,
	    XmNrightPosition,		15,
	    XmNbottomAttachment,	XmATTACH_POSITION,
	    XmNbottomPosition,		12,
	    XmNleftAttachment,		XmATTACH_POSITION,
	    XmNleftPosition,		5,
	    NULL);
	text_3 = XtVaCreateManagedWidget("longitude",
	    xmTextFieldWidgetClass,	gps_data,
	    XmNeditable,		False,
	    XmNcursorPositionVisible,	False,
	    XmNtopAttachment,		XmATTACH_POSITION,
	    XmNtopPosition,		12,
	    XmNrightAttachment,		XmATTACH_POSITION,
	    XmNrightPosition,		15,
	    XmNbottomAttachment,	XmATTACH_POSITION,
	    XmNbottomPosition,		18,
	    XmNleftAttachment,		XmATTACH_POSITION,
	    XmNleftPosition,		5,
	    NULL);
	text_4 = XtVaCreateManagedWidget("altitude",
	    xmTextFieldWidgetClass,	gps_data,
	    XmNeditable,		False,
	    XmNcursorPositionVisible,	False,
	    XmNtopAttachment,		XmATTACH_POSITION,
	    XmNtopPosition,		18,
	    XmNrightAttachment,		XmATTACH_POSITION,
	    XmNrightPosition,		15,
	    XmNbottomAttachment,	XmATTACH_POSITION,
	    XmNbottomPosition,		24,
	    XmNleftAttachment,		XmATTACH_POSITION,
	    XmNleftPosition,		5,
	    NULL);
	text_5 = XtVaCreateManagedWidget("speed",
	    xmTextFieldWidgetClass,	gps_data,
	    XmNeditable,		False,
	    XmNcursorPositionVisible,	False,
	    XmNtopAttachment,		XmATTACH_POSITION,
	    XmNtopPosition,		24,
	    XmNrightAttachment,		XmATTACH_POSITION,
	    XmNrightPosition,		15,
	    XmNbottomAttachment,	XmATTACH_POSITION,
	    XmNbottomPosition,		30,
	    XmNleftAttachment,		XmATTACH_POSITION,
	    XmNleftPosition,		5,
	    NULL);

	(void)XtVaCreateManagedWidget("EPH", xmLabelGadgetClass, gps_data,
	    XmNalignment,		XmALIGNMENT_END,
	    XmNtopAttachment,		XmATTACH_POSITION,
	    XmNtopPosition,		0,
	    XmNrightAttachment,		XmATTACH_POSITION,
	    XmNrightPosition,		20,
	    XmNbottomAttachment,	XmATTACH_POSITION,
	    XmNbottomPosition,		6,
	    XmNleftAttachment,		XmATTACH_POSITION,
	    XmNleftPosition,		15,
	    NULL);
	(void)XtVaCreateManagedWidget("EPV", xmLabelGadgetClass, gps_data,
	    XmNalignment,		XmALIGNMENT_END,
	    XmNtopAttachment,		XmATTACH_POSITION,
	    XmNtopPosition,		6,
	    XmNrightAttachment,		XmATTACH_POSITION,
	    XmNrightPosition,		20,
	    XmNbottomAttachment,	XmATTACH_POSITION,
	    XmNbottomPosition,		12,
	    XmNleftAttachment,		XmATTACH_POSITION,
	    XmNleftPosition,		15,
	    NULL);
	(void)XtVaCreateManagedWidget("Climb", xmLabelGadgetClass, gps_data,
	    XmNalignment,		XmALIGNMENT_END,
	    XmNtopAttachment,		XmATTACH_POSITION,
	    XmNtopPosition,		12,
	    XmNrightAttachment,		XmATTACH_POSITION,
	    XmNrightPosition,		20,
	    XmNbottomAttachment,	XmATTACH_POSITION,
	    XmNbottomPosition,		18,
	    XmNleftAttachment,		XmATTACH_POSITION,
	    XmNleftPosition,		15,
	    NULL);
	(void)XtVaCreateManagedWidget("Track", xmLabelGadgetClass, gps_data,
	    XmNalignment,		XmALIGNMENT_END,
	    XmNtopAttachment,		XmATTACH_POSITION,
	    XmNtopPosition,		18,
	    XmNrightAttachment,		XmATTACH_POSITION,
	    XmNrightPosition,		20,
	    XmNbottomAttachment,	XmATTACH_POSITION,
	    XmNbottomPosition,		24,
	    XmNleftAttachment,		XmATTACH_POSITION,
	    XmNleftPosition,		15,
	    NULL);
	(void)XtVaCreateManagedWidget("Status", xmLabelGadgetClass, gps_data,
	    XmNalignment,		XmALIGNMENT_END,
	    XmNtopAttachment,		XmATTACH_POSITION,
	    XmNtopPosition,		24,
	    XmNrightAttachment,		XmATTACH_POSITION,
	    XmNrightPosition,		20,
	    XmNbottomAttachment,	XmATTACH_POSITION,
	    XmNbottomPosition,		30,
	    XmNleftAttachment,		XmATTACH_POSITION,
	    XmNleftPosition,		15,
	    NULL);

	text_7 = XtVaCreateManagedWidget("eph",
	    xmTextFieldWidgetClass,	gps_data,
	    XmNeditable,		False,
	    XmNcursorPositionVisible,	False,
	    XmNtopAttachment,		XmATTACH_POSITION,
	    XmNtopPosition,		0,
	    XmNrightAttachment,		XmATTACH_POSITION,
	    XmNrightPosition,		30,
	    XmNbottomAttachment,	XmATTACH_POSITION,
	    XmNbottomPosition,		6,
	    XmNleftAttachment,		XmATTACH_POSITION,
	    XmNleftPosition,		20,
	    NULL);
	text_8 = XtVaCreateManagedWidget("epv",
	    xmTextFieldWidgetClass,	gps_data,
	    XmNeditable,		False,
	    XmNcursorPositionVisible,	False,
	    XmNtopAttachment,		XmATTACH_POSITION,
	    XmNtopPosition,		6,
	    XmNrightAttachment,		XmATTACH_POSITION,
	    XmNrightPosition,		30,
	    XmNbottomAttachment,	XmATTACH_POSITION,
	    XmNbottomPosition,		12,
	    XmNleftAttachment,		XmATTACH_POSITION,
	    XmNleftPosition,		20,
	    NULL);
	text_9 = XtVaCreateManagedWidget("climb",
	    xmTextFieldWidgetClass,	gps_data,
	    XmNeditable,		False,
	    XmNcursorPositionVisible,	False,
	    XmNtopAttachment,		XmATTACH_POSITION,
	    XmNtopPosition,		12,
	    XmNrightAttachment,		XmATTACH_POSITION,
	    XmNrightPosition,		30,
	    XmNbottomAttachment,	XmATTACH_POSITION,
	    XmNbottomPosition,		18,
	    XmNleftAttachment,		XmATTACH_POSITION,
	    XmNleftPosition,		20,
	    NULL);
	text_6 = XtVaCreateManagedWidget("track",
	    xmTextFieldWidgetClass,	gps_data,
	    XmNeditable,		False,
	    XmNcursorPositionVisible,	False,
	    XmNtopAttachment,		XmATTACH_POSITION,
	    XmNtopPosition,		18,
	    XmNrightAttachment,		XmATTACH_POSITION,
	    XmNrightPosition,		30,
	    XmNbottomAttachment,	XmATTACH_POSITION,
	    XmNbottomPosition,		24,
	    XmNleftAttachment,		XmATTACH_POSITION,
	    XmNleftPosition,		20,
	    NULL);
	text_10 = XtVaCreateManagedWidget("status",
	    xmTextFieldWidgetClass,	gps_data,
	    XmNeditable,		False,
	    XmNcursorPositionVisible,	False,
	    XmNtopAttachment,		XmATTACH_POSITION,
	    XmNtopPosition,		24,
	    XmNrightAttachment,		XmATTACH_POSITION,
	    XmNrightPosition,		30,
	    XmNbottomAttachment,	XmATTACH_POSITION,
	    XmNbottomPosition,		30,
	    XmNleftAttachment,		XmATTACH_POSITION,
	    XmNleftPosition,		20,
	    NULL);

	XtManageChild(gps_data);
	XtManageChild(sat_frame);
	XtManageChild(sky_frame);
	XtManageChild(gps_frame);

	XtVaSetValues(main_w,
	    XmNmenuBar,		menubar,
	    XmNworkWindow,	form,
	    NULL);

	XtRealizeWidget(toplevel);
	delw = XmInternAtom(XtDisplay(toplevel), "WM_DELETE_WINDOW",
	    (Boolean)False);
	/*@ -nullpass @*/
	(void)XmAddWMProtocolCallback(toplevel, delw, 
		(XtCallbackProc)quit_cb, NULL);
	/*@ +onlytrans @*/

	/* create empty list items to be replaced on update */
	string = XmStringCreateSimple(" ");
	for (i = 0; i <= MAXCHANNELS; i++)
		XmListAddItem(satellite_list, string, 0);
	XmStringFree(string);
}
示例#4
0
文件: main.c 项目: idunham/dtextra
int main (int argc, char *argv[])
{
    Widget topWidget;
    Widget mainForm;
    Widget userForm;

    /* Menu Stuff */
    Widget menuBar, helpMenu;

    static String fallback_resources[] = { 
    	"*sgiMode: True",
    	"*useSchemes: all",
    	NULL }; 

    topWidget = XtVaAppInitialize(&nebulaIrcAppContext, "Nebula IRC",
	    NULL, 0, /* no command line options */
	    &argc, argv,
	    fallback_resources, /* fallback resource list */
	    NULL);

    mainWindow = XtVaCreateManagedWidget("main_window",
    	xmMainWindowWidgetClass, topWidget,
    	XmNcommandWindowLocation, XmCOMMAND_BELOW_WORKSPACE,
	XmNwidth, 600,
	XmNheight, 500,
    	NULL);

    /* create menu bar */
    {
	XmString fileMenuStr, userMenuStr, helpMenuStr;
	
    	fileMenuStr = XM_STRING_CREATE("File");
	userMenuStr = XM_STRING_CREATE("User");
    	helpMenuStr = XM_STRING_CREATE("Help");

    	menuBar = XmVaCreateSimpleMenuBar(mainWindow, "menubar",
    	    XmVaCASCADEBUTTON, fileMenuStr, 'F',
	    XmVaCASCADEBUTTON, userMenuStr, 'U',
    	    NULL);

    	XmStringFree(fileMenuStr);
	XmStringFree(userMenuStr);
    	XmStringFree(helpMenuStr);
    }
    
    /* File Menu */
    {
    	XmString prefStr;
    	XmString saveConvStr;
	XmString quitStr;
    	
    	prefStr = XM_STRING_CREATE("Preferences...");
	saveConvStr = XM_STRING_CREATE("Save Conversation...");
    	quitStr = XM_STRING_CREATE("Quit");
    	XmVaCreateSimplePulldownMenu(menuBar, "file_menu", 0,
    	    fileMenuCall,
	    XmVaPUSHBUTTON, prefStr, 'P', NULL, NULL,
	    XmVaPUSHBUTTON, saveConvStr, 'S', NULL, NULL,
    	    XmVaPUSHBUTTON, quitStr, 'Q', NULL, NULL,
    	    NULL);
    	XmStringFree(prefStr);
	XmStringFree(saveConvStr);
	XmStringFree(quitStr);
    }
    /* User Menu */
    {
    	XmString whoisStr;
    	XmString versionStr;
	XmString opStr;
	XmString deopStr;
    	
    	whoisStr = XM_STRING_CREATE("Whois");
	versionStr = XM_STRING_CREATE("Client version");
    	opStr = XM_STRING_CREATE("Op");
	deopStr = XM_STRING_CREATE("Deop");
    	XmVaCreateSimplePulldownMenu(menuBar, "user_menu", 1,
    	    userMenuCall,
	    XmVaPUSHBUTTON, whoisStr, 'W', NULL, NULL,
	    XmVaPUSHBUTTON, versionStr, '\0', NULL, NULL,
    	    XmVaPUSHBUTTON, opStr, 'O', NULL, NULL,
	    XmVaPUSHBUTTON, deopStr, 'D', NULL, NULL,
    	    NULL);
    	XmStringFree(whoisStr);
	XmStringFree(versionStr);
	XmStringFree(opStr);
	XmStringFree(deopStr);
    }
    /* Help Menu */
    {
	XmString helpCommandStr;
	XmString aboutStr;
	
	helpCommandStr = XM_STRING_CREATE("Commands...");
	aboutStr = XM_STRING_CREATE("About...");
   	helpMenu = XtVaCreateManagedWidget("Help",
    	    xmCascadeButtonWidgetClass, menuBar,
    	    XmNmnemonic, 'H',
    	    NULL);
   	XmVaCreateSimplePulldownMenu(menuBar, "Help", 2,
    	    helpMenuCall,
    	    XmVaPUSHBUTTON, aboutStr, 'A', NULL, NULL,
	    XmVaPUSHBUTTON, helpCommandStr, 'C', NULL, NULL,
    	    NULL);
	XmStringFree(helpCommandStr);
	XmStringFree(aboutStr);

	/* now set the help button */
    	XtVaSetValues(menuBar, XmNmenuHelpWidget, helpMenu, NULL);
    }
    
    /* now manage the menu bar */ 
    XtManageChild(menuBar);
    
    /* create a form */
    mainForm = XtVaCreateWidget("form", xmFormWidgetClass, mainWindow, XmNfractionBase, 3, NULL);

    /* vertical split user form */
    userForm = XtVaCreateWidget("userform", xmFormWidgetClass, mainForm,
    	    XmNfractionBase, 5,
	    XmNtopAttachment, XmATTACH_FORM,
	    XmNleftAttachment, XmATTACH_FORM,
	    XmNbottomAttachment, XmATTACH_FORM,
	    XmNrightAttachment, XmATTACH_FORM,
	    NULL);
    
    /* output area */
    {
   	Arg args[12];

    	XtSetArg(args[0], XmNeditable, False);
	XtSetArg(args[1], XmNeditMode, XmMULTI_LINE_EDIT);
	XtSetArg(args[2], XmNscrollHorizontal, False);
	XtSetArg(args[3], XmNwordWrap, True);
	XtSetArg(args[4], XmNtopAttachment, XmATTACH_POSITION);
	XtSetArg(args[5], XmNtopPosition, 0);
	XtSetArg(args[6], XmNbottomAttachment, XmATTACH_POSITION);
	XtSetArg(args[7], XmNbottomPosition, 5);
	XtSetArg(args[8], XmNleftAttachment, XmATTACH_POSITION);
	XtSetArg(args[9], XmNleftPosition, 0);
	XtSetArg(args[10], XmNrightAttachment, XmATTACH_POSITION);
	XtSetArg(args[11], XmNrightPosition, 4);
    	outputArea = XmCreateScrolledText(userForm, "output", args, 12);
	
	if (outputArea == NULL)
	    perror("outputArea: ");
	XtManageChild(outputArea);
    }
    
    /* user list at left */
    {
    	Arg args[9];
	
    	XtSetArg(args[0], XmNtopAttachment, XmATTACH_POSITION);
	XtSetArg(args[1], XmNtopPosition, 0);
	XtSetArg(args[2], XmNbottomAttachment, XmATTACH_POSITION);
	XtSetArg(args[3], XmNbottomPosition, 5);
	XtSetArg(args[4], XmNleftAttachment, XmATTACH_POSITION);
	XtSetArg(args[5], XmNleftPosition, 4);
	XtSetArg(args[6], XmNrightAttachment, XmATTACH_POSITION);
	XtSetArg(args[7], XmNrightPosition, 5);
	XtSetArg(args[8], XmNselectionPolicy, XmSINGLE_SELECT);
    	userList = XmCreateScrolledList(userForm, "list", args, 9);
	XtAddCallback(userList, XmNsingleSelectionCallback, userListSelectCbk, NULL);
	XtManageChild(userList);
    }
    XtManageChild(userForm);
    XtManageChild(mainForm);
    
    /* Command line area */
    commandInput = XtVaCreateWidget("command",
    	xmTextFieldWidgetClass, mainWindow,
    	XmNmaxLength, MAX_INPUT_LEN,
    	NULL);
    XtAddCallback(commandInput, XmNactivateCallback, commandInputCall, NULL);
    XtManageChild(commandInput);
    
    XtVaSetValues(mainWindow,
	    XmNmenuBar, menuBar,
	    XmNworkWindow, mainForm,
	    XmNcommandWindow, commandInput,
	    NULL);
    
    XtManageChild(mainWindow);
    XtRealizeWidget(topWidget);

    /* initialize System Status */
    sysState.isConnected = NO;
    
    /* get some preferences */
    getStartupPrefs(mainWindow);
    
    /* set focus to input area */
    /* For Motif 1.0 we should use _XmGrabTheFocus(target) according to FAQ */
    XmProcessTraversal(commandInput, XmTRAVERSE_CURRENT);
    
    /* initialize hostname and system info */
    /* should switch back to ARCHOS if uname not available */
    {
    	struct utsname sysInfo;
	char           tempName[2*SYSINFO_LEN];
	
    	gethostname(sysState.myHostName, MAXHOSTNAMELEN);
    	uname(&sysInfo);
	sprintf(tempName, "%s %s running on %s", sysInfo.sysname, sysInfo.release, sysInfo.machine);
	tempName[SYSINFO_LEN] = '\0';
	strcpy(sysState.systemInfo, tempName);
    }
    
    /* get the user login name from unix */
    {
        char *tempName;

        tempName = getenv("USER");
        if (tempName == NULL)
            tempName = getenv("LOGNAME");
        if (strlen(tempName) > MAX_NAME_LEN || tempName == NULL)
        {
            strcpy(sysState.myUnixname, "joesmith");
            printf("Failed to get a proper Unix login name. Using: %s\n", sysState.myUnixname); 
        }
        strcpy(sysState.myUnixname, tempName);
    }
 
    /* create unmanaged dialogs */
    createAboutBox(mainWindow);
    createCommandsHelpBox(mainWindow);  
    
    while(1)
    {
    	XEvent theEvent;
	XtAppNextEvent(nebulaIrcAppContext, &theEvent);
	XtDispatchEvent(&theEvent);
    }
}