/*
* Motif
*
* Copyright (c) 1987-2012, The Open Group. All rights reserved.
*
* These libraries and programs are free software; you can
* redistribute them and/or modify them under the terms of the GNU
* Lesser General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* These libraries and programs are distributed in the hope that
* they will be useful, but WITHOUT ANY WARRANTY; without even the
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU Lesser General Public License for more
* details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with these librararies and programs; if not, write
* to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
* Floor, Boston, MA 02110-1301 USA
*/
/*
* HISTORY
*/
#ifdef REV_INFO
#ifndef lint
static char rcsid[] = "$XConsortium: ToggleBGad4.c /main/9 1995/07/13 17:31:50 drk $"
#endif
#endif
/*
* (c) Copyright 1987, 1988, 1989 HEWLETT-PACKARD COMPANY */
#include <X11/Xlib.h>
#include <X11/Xatom.h>
#include <testlib.h>
#include "bitmaps/circles1.bmp"
#define XBMu_BITS circles1_bits
#define XBMu_WIDTH circles1_width
#define XBMu_HEIGHT circles1_height
#define mtn_width 50
#define mtn_height 50
Widget WidgetRC;
Widget StateButton1, StateButton2;
Widget TButton1, TButton2, TButton3;
Widget ToggleW1, ToggleW2;
void override_msg();
static XtCallbackRec Override_CB[] = {
{override_msg, NULL},
{NULL, NULL}};
Pixmap px_unselect;
static char mtn_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00,
0x00, 0x00, 0x70, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0xfc,
0x00, 0x01, 0x00, 0x00, 0xfc, 0x01, 0xfc, 0x80, 0x03, 0x00, 0x00, 0xfc,
0x01, 0xfc, 0x81, 0x03, 0x00, 0x00, 0xfc, 0x01, 0xfe, 0xc1, 0x07, 0x00,
0x00, 0xf8, 0x00, 0xfe, 0xe1, 0x0f, 0x00, 0x00, 0x70, 0x00, 0xff, 0x73,
0x1f, 0x00, 0x00, 0x00, 0x00, 0xff, 0x3f, 0x3c, 0x00, 0x00, 0x00, 0x80,
0xff, 0x05, 0x78, 0x00, 0xc0, 0x00, 0x80, 0xfd, 0x0c, 0x88, 0x00, 0xc0,
0x01, 0x80, 0x78, 0x08, 0x08, 0x01, 0xe0, 0x01, 0x40, 0x30, 0x08, 0x10,
0x02, 0xe0, 0x03, 0x40, 0x20, 0x10, 0x20, 0x02, 0xe0, 0x03, 0x20, 0x20,
0x10, 0x20, 0x00, 0xf0, 0x07, 0x20, 0x20, 0x20, 0x40, 0x00, 0xf0, 0x07,
0x30, 0x20, 0x20, 0x00, 0x00, 0xf0, 0x09, 0x08, 0x20, 0xc0, 0x00, 0x00,
0x70, 0x19, 0x0c, 0x60, 0x80, 0x00, 0x00, 0x10, 0x31, 0x04, 0x40, 0x80,
0x00, 0x00, 0x18, 0x61, 0x04, 0xc0, 0x00, 0x03, 0x00, 0x08, 0xc1, 0x02,
0x80, 0x00, 0x06, 0x00, 0x0c, 0x01, 0x03, 0x80, 0x00, 0x0c, 0x00, 0x04,
0x02, 0x03, 0x00, 0x03, 0x08, 0x00, 0x04, 0x06, 0x06, 0x00, 0x02, 0x10,
0x00, 0x04, 0x04, 0x0c, 0x00, 0x02, 0x10, 0x00, 0x02, 0x04, 0x10, 0x00,
0x02, 0x10, 0x00, 0x03, 0x0c, 0x00, 0x00, 0x06, 0x20, 0x00, 0x01, 0x00,
0x20, 0x00, 0x04, 0x60, 0x00, 0x00, 0x10, 0x40, 0x00, 0x00, 0xc0, 0x00,
0x00, 0x10, 0x00, 0x01, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00,
0x00, 0x00, 0x00, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00};
static XtCallbackProc activate_msg(w, client_data, call_data)
Widget w;
caddr_t client_data;
caddr_t call_data;
{
printf("activate callback\n");
}
/* extern void XtManageChild(); */
static XtCallbackProc ManageSB1 (w, client_data, call_data)
Widget w;
caddr_t client_data, call_data;
{
XtManageChild (StateButton1);
}
static XtCallbackProc ManageSB2 (w, client_data, call_data)
Widget w;
caddr_t client_data, call_data;
{
XtManageChild (StateButton2);
}
void ToggleGStates (widget)
/* switch ON toggles to OFF and vice-versa*/
Widget widget;
{
Boolean state;
state = XmToggleButtonGadgetGetState(widget);
if (state == True)
XmToggleButtonGadgetSetState(widget, False, False);
else
XmToggleButtonGadgetSetState(widget, True, False);
}
void ToggleWStates (w)
Widget w;
{
Boolean state;
state = XmToggleButtonGetState(w);
if (state == True)
XmToggleButtonSetState (w, False, False);
else
XmToggleButtonSetState (w, True, False);
}
static XtCallbackProc ToggleWidgets (w, client_data, call_data)
Widget w;
caddr_t client_data, call_data;
{
ToggleWStates (ToggleW1);
ToggleWStates (ToggleW2);
}
static XtCallbackProc ManageWidgetRC (w, client_data, call_data)
Widget w;
caddr_t client_data, call_data;
{
XmString tcs;
int n;
Arg args[1];
if (!XtIsManaged (WidgetRC))
{
tcs =
XmStringCreateLtoR ("Toggle Gadget States", XmSTRING_DEFAULT_CHARSET);
n = 0;
XtSetArg (args[n], XmNlabelString, tcs); n++;
XtSetValues (StateButton1, args, n);
XtManageChild (WidgetRC);
}
else
{
ToggleGStates(TButton1);
ToggleGStates(TButton2);
ToggleGStates(TButton3);
}
}
static XtCallbackProc arm_msg(w, client_data, call_data)
Widget w;
caddr_t client_data;
caddr_t call_data;
{
printf("arm callback\n");
}
void override_msg(w, client_data, call_data)
Widget w;
caddr_t client_data;
caddr_t call_data;
{
printf("override callback\n");
}
static XtCallbackProc Modified(w, client_data, call_data)
Widget w;
caddr_t client_data;
XmTextVerifyCallbackStruct *call_data;
{
XmTextVerifyCallbackStruct *cb;
cb = call_data;
if (strncmp(cb->text->ptr, "q", 1) == 0)
cb->doit = False;
printf("modifyVerifyCallback Recieved.\n");
}
static XtCallbackProc CursorMoved(w, client_data, call_data)
Widget w;
caddr_t client_data;
XmTextVerifyCallbackStruct *call_data;
{
XmTextVerifyCallbackStruct *cb;
cb = call_data;
if (cb->newInsert > 20)
cb->doit = False;
printf("motionVerifyCallback Recieved. newInsert = %d\n", cb->newInsert);
}
static XtCallbackProc FocusLost(w, client_data, call_data)
Widget w;
caddr_t client_data;
XmTextVerifyCallbackStruct *call_data;
{
XmTextVerifyCallbackStruct *cb;
cb = call_data;
printf("losingFocusCallback Recieved.\n");
}
void main (argc, argv)
int argc;
char **argv;
{
Widget PanedWindow1;
Widget RowColumn1;
Pixel red_pixel;
Pixmap pixmap;
XmString tcs;
Arg args[20];
int n;
/* initialize toolkit */
CommonTestInit(argc, argv);
pixmap =
XCreatePixmapFromBitmapData(display,
DefaultRootWindow (display),
mtn_bits, mtn_width, mtn_height,
WhitePixel(display,DefaultScreen(display)),
BlackPixel(display,DefaultScreen(display)),
DefaultDepth(display,DefaultScreen(display)));
px_unselect =
XCreatePixmapFromBitmapData(display,
DefaultRootWindow(display),
XBMu_BITS, XBMu_WIDTH,XBMu_HEIGHT,
WhitePixel(display,DefaultScreen(display)),
BlackPixel(display,DefaultScreen(display)),
DefaultDepth(display,DefaultScreen(display)));
n = 0;
XtSetArg(args[n], XmNwidth, 300); n++;
PanedWindow1 =
XmCreatePanedWindow(Shell1, "PanedWindow1", args, n);
XtManageChild(PanedWindow1);
red_pixel = CommonGetColor("red");
n = 0;
XtSetArg(args[n], XmNhighlightColor, red_pixel); n++;
XtSetArg(args[n], XmNallowResize, True); n++;
XtSetArg(args[n], XmNtraversalOn, True); n++;
XtSetArg(args[n], XmNborderWidth, 0); n++;
RowColumn1 = XmCreateRowColumn( PanedWindow1, "RowColumn1", args, n);
XtManageChild(RowColumn1);
n = 0;
XtSetArg(args[n], XmNhighlightThickness, 2); n++;
XtSetArg(args[n], XmNtraversalOn, True); n++;
XtSetArg(args[n], XmNlabelType, XmPIXMAP); n++;
XtSetArg(args[n], XmNlabelPixmap, px_unselect); n++;
XtSetArg(args[n], XmNselectPixmap, pixmap); n++;
TButton1 = XmCreateToggleButtonGadget(RowColumn1, "TButton1", args, n);
XtManageChild (TButton1);
XtAddCallback(TButton1, XmNvalueChangedCallback,
(XtCallbackProc) activate_msg, (caddr_t) NULL);
XtAddCallback(TButton1, XmNarmCallback, (XtCallbackProc) arm_msg,
(caddr_t) NULL);
n = 0;
XtSetArg(args[n], XmNhighlightThickness, 2); n++;
XtSetArg(args[n], XmNtraversalOn, True); n++;
TButton2 = XmCreateToggleButtonGadget(RowColumn1, "TButton2", args, n);
XtManageChild (TButton2);
XtAddCallback(TButton2, XmNvalueChangedCallback,
(XtCallbackProc) activate_msg, (caddr_t) NULL);
XtAddCallback(TButton2, XmNarmCallback, (XtCallbackProc) arm_msg,
(caddr_t) NULL);
n = 0;
XtSetArg(args[n], XmNhighlightThickness, 2); n++;
XtSetArg(args[n], XmNtraversalOn, True); n++;
TButton3 = XmCreateToggleButtonGadget(RowColumn1, "TButton3", args, n);
XtAddCallback(TButton3, XmNvalueChangedCallback,
(XtCallbackProc) ManageSB1, (caddr_t) NULL);
XtManageChild(TButton3);
XmAddTabGroup(RowColumn1);
tcs = XmStringCreateLtoR ("More widgets...", XmSTRING_DEFAULT_CHARSET);
n = 0;
XtSetArg (args[n], XmNlabelString, tcs); n++;
XtSetArg (args[n], XmNshadowThickness, 2); n++;
XtSetArg (args[n], XmNtraversalOn, True); n++;
XtSetArg (args[n], XmNhighlightThickness, 4); n++;
XtSetArg (args[n], XmNhighlightColor, red_pixel); n++;
XtSetArg (args[n], XmNhighlightOnEnter, True); n++;
XtSetArg (args[n], XmNwidth, 200); n++;
StateButton1 = XmCreatePushButton(PanedWindow1, "StateButton1", args, n);
if (XtIsManaged(StateButton1))
XtUnmanageChild(StateButton1);
XtAddCallback(StateButton1, XmNactivateCallback,
(XtCallbackProc) ManageWidgetRC, (caddr_t) NULL);
/* and this will manage a row column with the following Toggle widgets */
n = 0;
WidgetRC = XmCreateRadioBox(PanedWindow1, "WidgetRC", args, n);
if (XtIsManaged(WidgetRC))
XtUnmanageChild(WidgetRC);
tcs = XmStringCreateLtoR ("Toggle Widget 1", XmSTRING_DEFAULT_CHARSET);
n = 0;
XtSetArg (args[n], XmNlabelString, tcs); n++;
XtSetArg (args[n], XmNindicatorType, XmONE_OF_MANY); n++;
XtSetArg (args[n], XmNtraversalOn, True); n++;
XtSetArg (args[n], XmNhighlightThickness, 2); n++;
XtSetArg (args[n], XmNhighlightColor, red_pixel); n++;
ToggleW1 = XmCreateToggleButton (WidgetRC, "ToggleW1", args, n);
XtManageChild (ToggleW1);
XtAddCallback(ToggleW1, XmNvalueChangedCallback, (XtCallbackProc) ManageSB2, (caddr_t) NULL);
tcs = XmStringCreateLtoR ("Toggle Widget 2", XmSTRING_DEFAULT_CHARSET);
n = 0;
XtSetArg (args[n], XmNlabelString, tcs); n++;
XtSetArg (args[n], XmNindicatorOn, False); n++;
XtSetArg (args[n], XmNindicatorType, XmONE_OF_MANY); n++;
XtSetArg (args[n], XmNshadowThickness, 2); n++;
XtSetArg (args[n], XmNhighlightColor, red_pixel); n++;
XtSetArg (args[n], XmNhighlightThickness, 4); n++;
XtSetArg (args[n], XmNtraversalOn, True); n++;
ToggleW2 = XmCreateToggleButton (WidgetRC, "ToggleW2", args, n);
XtManageChild (ToggleW2);
/* button 1 above manages StateButton2*/
tcs =
XmStringCreateLtoR ("Toggle Widget States...", XmSTRING_DEFAULT_CHARSET);
n = 0;
XtSetArg (args[n], XmNlabelString, tcs); n++;
XtSetArg (args[n], XmNshadowThickness, 2); n++;
XtSetArg (args[n], XmNtraversalOn, True); n++;
XtSetArg (args[n], XmNhighlightThickness, 4); n++;
XtSetArg (args[n], XmNhighlightColor, red_pixel); n++;
XtSetArg (args[n], XmNhighlightOnEnter, True); n++;
XtSetArg (args[n], XmNwidth, 200); n++;
StateButton2 = XmCreatePushButton(PanedWindow1, "StateButton2", args, n);
if (XtIsManaged(StateButton2))
XtUnmanageChild(StateButton2);
XtAddCallback(StateButton2, XmNactivateCallback,
(XtCallbackProc) ToggleWidgets, (caddr_t) NULL);
XmAddTabGroup (StateButton2);
XmAddTabGroup (WidgetRC);
XmAddTabGroup (PanedWindow1);
XtRealizeWidget(Shell1);
CommonPause(); /* tab group */
CommonPause(); /* functions */
CommonPause();
CommonPause();
/*
* Exit
*/
XtDestroyWidget(PanedWindow1);
CommonPause(); /* exit */
XtAppMainLoop(app_context);
}