/* 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.
*/
/* entry_cb.c -- demonstrate how the XmNentryCallback resource works
* in RowColumn widgets. When a callback function is set for this
* resource, all the callbacks for the RowColumn's children are reset
* to point to this function. Their original functions are no longer
* called had they been set in favor of the entry-callback function.
*/
#include <Xm/PushBG.h>
#include <Xm/RowColumn.h>
char *strings[] = {
"One", "Two", "Three", "Four", "Five",
"Six", "Seven", "Eight", "Nine", "Ten",
};
void
called(widget, client_data, call_data)
Widget widget;
XtPointer client_data;
XtPointer call_data;
{
XmRowColumnCallbackStruct *cbs =
(XmRowColumnCallbackStruct *) call_data;
Widget pb = cbs->widget;
printf ("%s: %d\n", XtName (pb), cbs->data);
}
static void
never_called(widget, client_data, call_data)
Widget widget;
XtPointer client_data;
XtPointer call_data;
{
puts ("This function is never called");
}
main(argc, argv)
int argc;
char *argv[];
{
Widget toplevel, parent, w;
XtAppContext app;
int i;
XtSetLanguageProc (NULL, NULL, NULL);
toplevel = XtVaAppInitialize (&app, "Demos",
NULL, 0, &argc, argv, NULL, NULL);
parent = XtVaCreateManagedWidget ("rowcolumn",
xmRowColumnWidgetClass, toplevel,
NULL);
XtAddCallback (parent, XmNentryCallback, called, NULL);
/* simply loop thru the strings creating a widget for each one */
for (i = 0; i < XtNumber (strings); i++) {
w = XtVaCreateManagedWidget (strings[i],
xmPushButtonGadgetClass, parent, NULL);
/* Call XtAddCallback() to install client_data only! */
XtAddCallback (w, XmNactivateCallback, never_called, i+1);
}
XtRealizeWidget (toplevel);
XtAppMainLoop (app);
}