/* 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.
*/
/* toggle.c -- demonstrate a simple toggle button. */
#include <Xm/ToggleB.h>
#include <Xm/RowColumn.h>
void
toggled(widget, client_data, call_data)
Widget widget;
XtPointer client_data;
XtPointer call_data;
{
XmToggleButtonCallbackStruct *state =
(XmToggleButtonCallbackStruct *) call_data;
printf ("%s: %s\n", XtName (widget), state->set? "on" : "off");
}
main(argc, argv)
int argc;
char *argv[];
{
Widget toplevel, rowcol, toggle;
XtAppContext app;
Pixmap on, off;
Pixel fg, bg;
XtSetLanguageProc (NULL, NULL, NULL);
toplevel = XtVaAppInitialize (&app, "Demos", NULL, 0,
&argc, argv, NULL, NULL);
rowcol = XtVaCreateWidget ("_rowcol",
xmRowColumnWidgetClass, toplevel,
XmNorientation, XmHORIZONTAL,
NULL);
XtVaGetValues (rowcol,
XmNforeground, &fg,
XmNbackground, &bg,
NULL);
on = XmGetPixmap (XtScreen (rowcol), "switch_on", fg, bg);
off = XmGetPixmap (XtScreen (rowcol), "switch_off", fg, bg);
if (on == XmUNSPECIFIED_PIXMAP || off == XmUNSPECIFIED_PIXMAP) {
puts ("Couldn't load pixmaps");
exit (1);
}
toggle = XtVaCreateManagedWidget ("toggle",
xmToggleButtonWidgetClass, rowcol,
XmNlabelType, XmPIXMAP,
XmNlabelPixmap, off,
XmNselectPixmap, on,
NULL);
XtAddCallback (toggle, XmNvalueChangedCallback, toggled, NULL);
toggle = XtVaCreateManagedWidget ("toggle",
xmToggleButtonWidgetClass, rowcol,
XmNlabelType, XmPIXMAP,
XmNlabelPixmap, off,
XmNselectPixmap, on,
NULL);
XtAddCallback (toggle, XmNvalueChangedCallback, toggled, NULL);
XtManageChild (rowcol);
XtRealizeWidget (toplevel);
XtAppMainLoop (app);
}