home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The World of Computer Software
/
World_Of_Computer_Software-02-385-Vol-1of3.iso
/
m
/
motifpg2.zip
/
ch03
/
xmainwindow.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-07-08
|
6KB
|
195 lines
/*
* Copyright 1989, 1992 O'Reilly and Associates, Inc.
* See ../Copyright for complete rights and liability information.
*/
/*
* xmainwindow.c - main window with help and quit
*/
/*
* So that we can use fprintf:
*/
#include <stdio.h>
/*
* Standard Toolkit include files:
*/
#include <X11/Intrinsic.h>
#include <Xm/Xm.h>
#include <Xm/RepType.h>
/*
* Public include files for widgets used in this file.
*/
#include <Xm/PushB.h>
#include <Xm/MainW.h>
#include <Xm/RowColumn.h>
#include <Xm/MessageB.h>
#include <Xm/CascadeB.h>
#include <Xm/Frame.h>
/*
* callback to pop up help dialog widget
*/
/*ARGSUSED*/
void ShowHelp(w, client_data, call_data)
Widget w;
XtPointer client_data;
XtPointer call_data;
{
Widget dialog = (Widget) client_data;
XtManageChild(dialog);
}
/*
* quit button callback function
*/
/*ARGSUSED*/
void Quit(w, client_data, call_data)
Widget w;
XtPointer client_data, call_data;
{
exit(0);
}
main(argc, argv)
int argc;
char **argv;
{
XtAppContext app_context;
Widget topLevel, mainWindow, menuBar, frame;
Widget fileButton, fileMenu, quit, helpButton, helpMenu, help, helpBox;
Widget temp;
/*
* Register the default language procedure
*/
XtSetLanguageProc(NULL, (XtLanguageProc)NULL, NULL);
topLevel = XtVaAppInitialize(
&app_context, /* Application context */
"XMainWindow", /* application class name */
NULL, 0, /* command line option list */
&argc, argv, /* command line args */
NULL, /* for missing app-defaults file */
NULL); /* terminate varargs list */
/* create main window */
mainWindow = XtVaCreateManagedWidget(
"mainWindow", /* widget name */
xmMainWindowWidgetClass, /* widget class */
topLevel, /* parent widget*/
NULL); /* terminate varargs list */
/* register converter for tearoff menus */
XmRepTypeInstallTearOffModelConverter();
/* create menu bar along top inside of main window */
menuBar = XmCreateMenuBar(
mainWindow, /* parent widget*/
"menuBar", /* widget name */
NULL, /* no arguments needed */
0); /* no arguments needed */
XtManageChild(menuBar);
frame = XtVaCreateManagedWidget(
"frame", /* widget name */
xmFrameWidgetClass, /* widget class */
mainWindow, /* parent widget*/
NULL); /* terminate varargs list */
/* Set MainWindow areas */
XmMainWindowSetAreas (mainWindow, menuBar, NULL, NULL, NULL, frame);
/*
* CREATE FILE MENU AND CHILDREN
*/
/* create button that will pop up the menu */
fileButton = XtVaCreateManagedWidget(
"fileButton", /* widget name */
xmCascadeButtonWidgetClass, /* widget class */
menuBar, /* parent widget*/
NULL); /* terminate varargs list */
/* create menu (really a Shell widget and RowColumn widget combo) */
fileMenu = XmCreatePulldownMenu(
menuBar, /* parent widget*/
"fileMenu", /* widget name */
NULL, /* no argument list needed */
0); /* no argument list needed */
/* create the quit button up in the menu */
quit = XtVaCreateManagedWidget(
"quit", /* widget name */
xmPushButtonWidgetClass, /* widget class */
fileMenu, /* parent widget*/
NULL); /* terminate varargs list */
/*
* Specify which menu fileButton will pop up.
*/
XtVaSetValues(fileButton,
XmNsubMenuId, fileMenu,
NULL);
/* arrange for quit button to call function that exits. */
XtAddCallback(quit, XmNactivateCallback, Quit, 0);
/*
* CREATE HELP BUTTON AND BOX
*/
/* create button that will bring up help menu */
helpButton = XtVaCreateManagedWidget(
"helpButton", /* widget name */
xmCascadeButtonWidgetClass, /* widget class */
menuBar, /* parent widget*/
NULL); /* terminate varargs list */
/* tell menuBar which is the help button (will be specially positioned) */
XtVaSetValues(menuBar,
XmNmenuHelpWidget, helpButton,
NULL);
/* create menu (really a Shell widget and RowColumn widget combo) */
helpMenu = XmCreatePulldownMenu(
menuBar, /* parent widget*/
"helpMenu", /* widget name */
NULL, /* no argument list needed */
0); /* no argument list needed */
/* create the help button up in the menu */
help = XtVaCreateManagedWidget(
"help", /* widget name */
xmPushButtonWidgetClass, /* widget class */
helpMenu, /* parent widget*/
NULL); /* terminate varargs list */
/*
* Specify which menu helpButton will pop up.
*/
XtVaSetValues(helpButton,
XmNsubMenuId, helpMenu,
NULL);
/* create popup that will contain help */
helpBox = XmCreateMessageDialog(
help, /* parent widget*/
"helpBox", /* widget name */
NULL, /* no arguments needed */
0); /* no arguments needed */
temp = XmMessageBoxGetChild (helpBox, XmDIALOG_CANCEL_BUTTON);
XtUnmanageChild (temp);
temp = XmMessageBoxGetChild (helpBox, XmDIALOG_HELP_BUTTON);
XtUnmanageChild (temp);
/* arrange for getHelp button to pop up helpBox */
XtAddCallback(help, XmNactivateCallback, ShowHelp, helpBox);
XtRealizeWidget(topLevel);
XtAppMainLoop(app_context);
}