home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The World of Computer Software
/
World_Of_Computer_Software-02-385-Vol-1of3.iso
/
m
/
master12.zip
/
mastering
/
swindemo.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-08-27
|
10KB
|
400 lines
#include <stdio.h>
#include <Xm/Frame.h>
#include <Xm/RowColumn.h>
#include <Xm/PushB.h>
#include <Xm/ScrollBar.h>
#include <Xm/DrawingA.h>
#include <Xm/ScrolledW.h>
/* Global definitions */
Widget frame, inner_box, appshell, fw, bb, sw;
Widget New[25], Pbutton[10], hsb, vsb;
Arg args[20];
XmString text;
XmStringCharSet cs = (XmStringCharSet)XmFONTLIST_DEFAULT_TAG;
XFontStruct *font;
XmFontList curfontlist;
int NewPbutton;
/* Forward Declarations */
void ToggleHSB();
void ToggleVSB();
void GrowHSBCB();
void GrowVSBCB();
void ToggleGrowWide();
void ToggleGrowHigh();
void ToggleGrowBoth();
void KillPbutton();
void AddPbutton();
void QuitCB();
/*Callback for Toggle HSB button */
void ToggleHSB(w, closure, call_data)
Widget w;
XtPointer closure;
XtPointer call_data;
{
int n;
n = 0;
XtSetArg (args[n], XmNhorizontalScrollBar, &hsb ); n++;
XtGetValues (sw, args, n);
if(XtIsManaged(hsb))
XtUnmanageChild(hsb);
else
XtManageChild(hsb);
}
/* Callback for Toggle VSB button */
void ToggleVSB(w, closure, call_data)
Widget w;
XtPointer closure;
XtPointer call_data;
{
int n;
n = 0;
XtSetArg (args[n], XmNverticalScrollBar, &vsb ); n++;
XtGetValues (sw, args, n);
if(XtIsManaged(vsb))
XtUnmanageChild(vsb);
else
XtManageChild(vsb);
}
/* Callback for Grow HSB button */
void GrowHSBCB(w, closure, call_data)
Widget w;
XtPointer closure;
XtPointer call_data;
{
int n;
Dimension hsbheight;
n = 0;
XtSetArg (args[n], XmNhorizontalScrollBar, &hsb ); n++;
XtGetValues (sw, args, n);
n = 0;
XtSetArg (args[n], XmNheight, &hsbheight ); n++;
XtGetValues (hsb, args, n);
n=0;
XtSetArg(args[n], XmNheight, hsbheight + 5); n++;
XtSetValues(hsb, args, 1);
}
/* Callback for Grow VSB button */
void GrowVSBCB(w, closure, call_data)
Widget w;
XtPointer closure;
XtPointer call_data;
{
int n;
Dimension vsbwidth;
n = 0;
XtSetArg (args[n], XmNverticalScrollBar, &vsb ); n++;
XtSetArg (args[n], XmNwidth, &vsbwidth ); n++;
XtGetValues (sw, args, n);
n = 0;
XtSetArg (args[n], XmNwidth, &vsbwidth ); n++;
XtGetValues (vsb, args, n);
n=0;
XtSetArg(args[n], XmNwidth, vsbwidth + 5); n++;
XtSetValues(vsb, args, 1);
}
/* Callback for Grow Wide button */
void ToggleGrowWide(w, closure, call_data)
Widget w;
XtPointer closure;
XtPointer call_data;
{
XtWidgetGeometry desired, preferred;
int i;
Position swx, swy;
Dimension swborderwidth, swheight;
desired.request_mode = (CWHeight);
XtQueryGeometry(sw, &desired, &preferred);
i = 0;
if (preferred.request_mode & CWWidth)
{
XtSetArg(args[i], XmNwidth, preferred.width);
i++;
}
if (preferred.request_mode & CWHeight)
{
XtSetArg(args[i], XmNheight, preferred.height);
i++;
}
XtSetValues(sw,args,i);
}
/* Callback for Grow High button */
void ToggleGrowHigh(w, closure, call_data)
Widget w;
XtPointer closure;
XtPointer call_data;
{
XtWidgetGeometry desired, preferred;
Position swx, swy;
Dimension swborderwidth, swwidth;
int i;
i = 0;
XtSetArg (args[i], XmNwidth, &swwidth); i++;
XtGetValues (sw, args, i);
desired.width = swwidth;
desired.request_mode = (CWWidth);
XtQueryGeometry(sw, &desired, &preferred);
i = 0;
if (preferred.request_mode & CWWidth)
{
XtSetArg(args[i], XmNwidth, preferred.width);
i++;
}
if (preferred.request_mode & CWHeight)
{
XtSetArg(args[i], XmNheight, preferred.height);
i++;
}
XtSetValues(sw,args,i);
}
/* Callback for Grow Both button */
void ToggleGrowBoth(w, closure, call_data)
Widget w;
XtPointer closure;
XtPointer call_data;
{
XtWidgetGeometry desired, preferred;
int i;
Position swx, swy;
Dimension swborderwidth, swwidth, swheight;
i = 0;
XtSetArg (args[i], XmNwidth, &swwidth); i++;
XtSetArg (args[i], XmNheight, &swheight); i++;
XtGetValues (sw, args, i);
desired.width = swwidth;
desired.height = swheight;
desired.request_mode = (CWHeight | CWWidth);
XtQueryGeometry(sw, &desired, &preferred);
i = 0;
if (preferred.request_mode & CWWidth)
{
XtSetArg(args[i], XmNwidth, preferred.width);
i++;
}
if (preferred.request_mode & CWHeight)
{
XtSetArg(args[1], XmNheight, preferred.height);
i++;
}
XtSetValues(sw,args,i);
}
/* Callback for Add A Button button */
void AddPbutton(w, closure, call_data)
Widget w;
XtPointer closure;
XtPointer call_data;
{
Widget x;
int i;
if (NewPbutton < 25)
{
i = 0;
text = XmStringCreateLtoR("A button...",cs);
XtSetArg(args[i], XmNfontList, curfontlist);i++;
XtSetArg(args[i], XmNlabelString, text);i++;
XtSetArg(args[i], XmNlabelType, XmSTRING);i++;
x = XmCreatePushButton(inner_box, "new", args, i);
XtManageChild (x);
XmStringFree (text);
New[++NewPbutton] = x;
}
}
/* Callback for Kill A Button button */
void KillPbutton(w, closure, call_data)
Widget w;
XtPointer closure;
XtPointer call_data;
{
if (NewPbutton )
XtDestroyWidget(New[NewPbutton--]);
}
/* Callback for Quit button */
void QuitCB (w, client_data, call_data)
Widget w;
XtPointer client_data;
XtPointer call_data;
{
XmFontListFree (curfontlist);
exit (0);
}
/* main */
void main(argc, argv)
unsigned int argc;
char **argv;
{
int i;
XtAppContext app_context;
XtSetArg (args[0], XmNallowShellResize ,TRUE);
appshell = XtAppInitialize(&app_context, "Swindemo", NULL, 0, &argc,
argv, NULL, args, 1);
font = XLoadQueryFont(XtDisplay(appshell), "vr-20");
curfontlist = XmFontListCreate(font, cs);
i = 0;
frame = XmCreateFrame(appshell, "frame", args, i);
XtManageChild (frame);
i = 0;
XtSetArg (args[i], XmNwidth, 150); i++;
XtSetArg (args[i], XmNheight, 150); i++;
XtSetArg (args[i], XmNscrollingPolicy, XmAUTOMATIC); i++;
sw = XmCreateScrolledWindow(frame, "ScrolledWindow", args, i);
XtManageChild (sw);
XmScrolledWindowSetAreas(sw, NULL, NULL, NULL);
i = 0;
XtSetArg(args[i], XmNshadowThickness, 0); i++;
inner_box = XmCreateRowColumn (sw, "RowCol", args, i);
XtManageChild (inner_box);
i = 0;
text = XmStringCreateLtoR("Toggle HSB",cs);
XtSetArg(args[i], XmNfontList, curfontlist);i++;
XtSetArg(args[i], XmNlabelString, text);i++;
XtSetArg(args[i], XmNlabelType, XmSTRING);i++;
Pbutton[0] = XmCreatePushButton(inner_box, "pbutton0", args, i);
XmStringFree (text);
XtAddCallback(Pbutton[0], XmNactivateCallback, ToggleHSB, NULL);
i = 0;
text = XmStringCreateLtoR("Toggle VSB",cs);
XtSetArg(args[i], XmNfontList, curfontlist);i++;
XtSetArg(args[i], XmNlabelString, text);i++;
XtSetArg(args[i], XmNlabelType, XmSTRING);i++;
Pbutton[1] = XmCreatePushButton(inner_box, "pbutton1", args, i);
XmStringFree (text);
XtAddCallback(Pbutton[1], XmNactivateCallback, ToggleVSB, NULL);
i = 0;
text = XmStringCreateLtoR("Grow HSB",cs);
XtSetArg(args[i], XmNfontList, curfontlist);i++;
XtSetArg(args[i], XmNlabelString, text);i++;
XtSetArg(args[i], XmNlabelType, XmSTRING);i++;
Pbutton[2] = XmCreatePushButton(inner_box, "pbutton2", args, i);
XmStringFree (text);
XtAddCallback(Pbutton[2], XmNactivateCallback, GrowHSBCB, NULL);
i = 0;
text = XmStringCreateLtoR("Grow VSB",cs);
XtSetArg(args[i], XmNfontList, curfontlist);i++;
XtSetArg(args[i], XmNlabelString, text);i++;
XtSetArg(args[i], XmNlabelType, XmSTRING);i++;
Pbutton[3] = XmCreatePushButton(inner_box, "pbutton3", args, i);
XmStringFree (text);
XtAddCallback(Pbutton[3], XmNactivateCallback, GrowVSBCB, NULL);
i = 0;
text = XmStringCreateLtoR("Grow Wide",cs);
XtSetArg(args[i], XmNfontList, curfontlist);i++;
XtSetArg(args[i], XmNlabelString, text);i++;
XtSetArg(args[i], XmNlabelType, XmSTRING);i++;
Pbutton[4] = XmCreatePushButton(inner_box, "pbutton4", args, i);
XmStringFree (text);
XtAddCallback(Pbutton[4], XmNactivateCallback, ToggleGrowWide, NULL);
i = 0;
text = XmStringCreateLtoR("Grow High",cs);
XtSetArg(args[i], XmNfontList, curfontlist);i++;
XtSetArg(args[i], XmNlabelString, text);i++;
XtSetArg(args[i], XmNlabelType, XmSTRING);i++;
Pbutton[5] = XmCreatePushButton(inner_box, "pbutton5", args, i);
XmStringFree (text);
XtAddCallback(Pbutton[5], XmNactivateCallback, ToggleGrowHigh, NULL);
i = 0;
text = XmStringCreateLtoR("Grow Both",cs);
XtSetArg(args[i], XmNfontList, curfontlist);i++;
XtSetArg(args[i], XmNlabelString, text);i++;
XtSetArg(args[i], XmNlabelType, XmSTRING);i++;
Pbutton[6] = XmCreatePushButton(inner_box, "pbutton6", args, i);
XmStringFree (text);
XtAddCallback(Pbutton[6], XmNactivateCallback, ToggleGrowBoth, NULL);
i = 0;
text = XmStringCreateLtoR("Add A button...",cs);
XtSetArg(args[i], XmNfontList, curfontlist);i++;
XtSetArg(args[i], XmNlabelString, text);i++;
XtSetArg(args[i], XmNlabelType, XmSTRING);i++;
Pbutton[7] = XmCreatePushButton(inner_box, "pbutton7", args, i);
XmStringFree (text);
XtAddCallback(Pbutton[7], XmNactivateCallback, AddPbutton, NULL);
i = 0;
text = XmStringCreateLtoR("Kill A button...",cs);
XtSetArg(args[i], XmNfontList, curfontlist);i++;
XtSetArg(args[i], XmNlabelString, text );i++;
XtSetArg(args[i], XmNlabelType, XmSTRING);i++;
Pbutton[8] = XmCreatePushButton(inner_box, "pbutton8", args, i);
XmStringFree (text);
XtAddCallback(Pbutton[8], XmNactivateCallback, KillPbutton, NULL);
i = 0;
text = XmStringCreateLtoR("Quit",cs);
XtSetArg(args[i], XmNfontList, curfontlist);i++;
XtSetArg(args[i], XmNlabelString, text );i++;
XtSetArg(args[i], XmNlabelType, XmSTRING);i++;
Pbutton[9] = XmCreatePushButton(inner_box, "pbutton9", args, i);
XmStringFree (text);
XtAddCallback(Pbutton[9], XmNactivateCallback, QuitCB, NULL);
XtManageChildren (Pbutton, 10);
XtRealizeWidget (appshell);
XtAppMainLoop (app_context);
}