/* Written by Dan Heller and Paula Ferguson.
* Copyright 1994, O'Reilly & Associates, Inc.
* Permission to use, copy, and modify this program without
* restriction is hereby granted, as long as this copyright
* notice appears in each copy of the program source code.
* This program is freely distributable without licensing fees and
* is provided without guarantee or warrantee expressed or implied.
* This program is -not- in the public domain.
*/
/* hello_dialog.c -- your typical Hello World program using
* an InformationDialog.
*/
#include <Xm/RowColumn.h>
#include <Xm/MessageB.h>
#include <Xm/PushB.h>
void
Exit(drawing_a, client_data, call_data)
Widget drawing_a;
XtPointer client_data;
XtPointer call_data;
{
exit(0);
}
main(argc, argv)
int argc;
char *argv[];
{
XtAppContext app;
Widget toplevel, rc, pb;
extern void popup(); /* callback for the pushbuttons -- pops up dialog */
extern void exit();
XtSetLanguageProc (NULL, NULL, NULL);
toplevel = XtVaAppInitialize (&app, "Demos", NULL, 0,
&argc, argv, NULL, NULL);
rc = XtVaCreateWidget ("rowcol",
xmRowColumnWidgetClass, toplevel, NULL);
pb = XtVaCreateManagedWidget ("Hello",
xmPushButtonWidgetClass, rc, NULL);
XtAddCallback (pb, XmNactivateCallback, popup, "Hello World");
pb = XtVaCreateManagedWidget ("Goodbye",
xmPushButtonWidgetClass, rc, NULL);
/* XtAddCallback (pb, XmNactivateCallback, exit, NULL); */
XtAddCallback (pb, XmNactivateCallback, Exit, NULL);
XtManageChild (rc);
XtRealizeWidget (toplevel);
XtAppMainLoop (app);
}
/* callback for the PushButtons. Popup an InformationDialog displaying
* the text passed as the client data parameter.
*/
void
popup(button, client_data, call_data)
Widget button;
XtPointer client_data;
XtPointer call_data;
{
Widget dialog;
XmString xm_string;
extern void activate();
Arg args[5];
int n = 0;
char *text = (char *) client_data;
/* set the label for the dialog */
xm_string = XmStringCreateLocalized (text);
XtSetArg (args[n], XmNmessageString, xm_string); n++;
/* Create the InformationDialog as child of button */
dialog = XmCreateInformationDialog (button, "info", args, n);
/* no longer need the compound string, free it */
XmStringFree (xm_string);
/* add the callback routine */
XtAddCallback (dialog, XmNokCallback, activate, NULL);
/* manage the dialog */
XtManageChild (dialog);
XtPopup (XtParent (dialog), XtGrabNone);
}
/* callback routine for when the user presses the OK button.
* Yes, despite the fact that the OK button was pressed, the
* widget passed to this callback routine is the dialog!
*/
void
activate(dialog, client_data, call_data)
Widget dialog;
XtPointer client_data;
XtPointer call_data;
{
puts ("OK was pressed.");
}