home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AmigActive 4
/
AACD04.ISO
/
CDTools
/
ClassAct
/
Examples
/
ReqTools
/
ReqTools.c
< prev
next >
Wrap
C/C++ Source or Header
|
1997-07-09
|
9KB
|
327 lines
;/*
sc link reqtools.c lib lib:classact.lib
quit
*/
/* ClassAct Example, "reqtools" prefs skeleton.
*/
#include <exec/types.h>
#include <exec/memory.h>
#include <intuition/intuition.h>
#include <intuition/gadgetclass.h>
#include <intuition/icclass.h>
#include <libraries/gadtools.h>
#include <graphics/gfxbase.h>
#include <graphics/text.h>
#include <graphics/gfxmacros.h>
#include <utility/tagitem.h>
#include <proto/intuition.h>
#include <proto/graphics.h>
#include <proto/exec.h>
#include <proto/dos.h>
#include <proto/diskfont.h>
#include <proto/utility.h>
#include <classact.h>
//#include <classact_lib.h>
//#include <clib/classact_lib_protos.h>
struct Screen *Scr = NULL;
struct DrawInfo *Dri;
BOOL done = FALSE;
/**************************************************************************
* Chooser label arrays
*/
static STRPTR chooserlabels1[] =
{
"File Requester",
"Font Requester",
"Palette Requester",
"Screen Mode Requester",
"Volume Requester",
"Other Requesters",
NULL
};
static STRPTR chooserlabels2[] =
{
"Mouse Pointer",
"Center in Window",
"Center on Screen",
"Top Left of Window",
"Top Left of Screen",
NULL
};
/*************************************************************************
* Gadget list
*/
typedef enum { G_PopScreen = 1, G_UseSysFont, G_ImmSort, G_DrawerFirst,
G_MixFiles, G_DiskLed, G_DefPage, G_Visible, G_VisMin, G_VisMax,
G_Pos, G_PosX, G_PosY, G_Save, G_Use, G_Cancel, G_MAX } GadgetIDs;
struct Gadget *GList[G_MAX+1];
/*************************************************************************
* Main Program
*/
int main(argc,argv)
int argc;
char *argv[];
{
struct Window *Win;
Scr = LockPubScreen(NULL);
if (!ButtonBase) /* force it open */
return (30);
if (Scr == NULL)
{
/* Shut down, no screen lock
*/
Printf("Failed locking public screen.\n");
return(30);
}
Dri = GetScreenDrawInfo(Scr);
if (Dri)
{
struct List *chooser1 = ChooserLabelsA( chooserlabels1 );
struct List *chooser2 = ChooserLabelsA( chooserlabels2 );
if (chooser1 && chooser2)
{
struct Gadget *MainLayout, *l1, *l2;
Object *Window;
Window = WindowObject,
WA_SizeGadget, TRUE,
WA_DepthGadget, TRUE,
WA_DragBar, TRUE,
WA_CloseGadget, TRUE,
WA_Activate, TRUE,
WA_PubScreen, Scr,
WA_Title, "ClassAct layout.gadget Example (ReqTools preferences mockup)",
WA_ScreenTitle, "ClassAct Release 2.0",
WINDOW_Position, WPOS_CENTERMOUSE,
WINDOW_ParentGroup, MainLayout = VGroupObject,
LAYOUT_SpaceOuter, TRUE,
LAYOUT_DeferLayout, TRUE, /* this tag instructs layout.gadget to
* defer GM_LAYOUT and GM_RENDER and ask
* the application to do them. This
* lessens the load on input.device */
StartHGroup,
StartVGroup,
/* This is a basic vertical centered layout group with three gadgets */
StartVGroup, VCentered, LAYOUT_SpaceOuter, TRUE,
LAYOUT_BevelStyle, GroupFrame,
LAYOUT_Label, "General",
/* SetGadgetCommKeys will set the gadget IDs automatically */
StartMember, GList[G_PopScreen] = CheckBoxObject,
GA_Text, "_Pop screen to front",
End,
StartMember, GList[G_UseSysFont] = CheckBoxObject,
GA_Text, "Us_e system default font",
End,
End,
CHILD_WeightMinimum, TRUE, /* by setting WeightMinimum you instruct
* layout.gadget to weight the object according
* to its minimum size. This retains group
* aspects at all sizes. */
StartVGroup, VCentered, LAYOUT_SpaceOuter, TRUE,
LAYOUT_BevelStyle, GroupFrame,
LAYOUT_Label, "File Requester",
StartMember, GList[G_ImmSort] = CheckBoxObject,
GA_Text, "_Immediate sort",
End,
StartMember, GList[G_DrawerFirst] = CheckBoxObject,
GA_Text, "_Display drawers first",
End,
StartMember, GList[G_MixFiles] = CheckBoxObject,
GA_Text, "Mi_x files and drawers",
End,
StartMember, GList[G_DiskLed] = CheckBoxObject,
GA_Text, "Dis_k activity LED",
End,
End,
CHILD_WeightMinimum, TRUE,
End,
CHILD_WeightMinimum, TRUE,
StartVGroup, TOffset(INTERSPACING),
StartMember, GList[G_DefPage] = ChooserObject,
CHOOSER_Labels, chooser1,
End,
CHILD_Label, LabelObject, LABEL_Text, "De_faults for", End,
CHILD_WeightedHeight, 0,
StartMember, l1 = VGroupObject,
LAYOUT_SpaceOuter, TRUE,
LAYOUT_BevelStyle, StandardFrame,
LAYOUT_BevelState, IDS_SELECTED,
StartHGroup, TOffset(INTERSPACING),
LAYOUT_Label, "Size (% of visible height):",
StartMember, GList[G_Visible] = ScrollerObject,
SCROLLER_Total, 100,
SCROLLER_Arrows, FALSE,
SCROLLER_Orientation, SORIENT_HORIZ,
End,
CHILD_MinHeight, Scr->Font->ta_YSize + 6,
End,
CHILD_WeightedHeight, 0,
StartMember, l2 = HGroupObject, TOffset(INTERSPACING),
LAYOUT_Label, "Number of visible entries:",
StartMember, GList[G_VisMin] = IntegerObject,
GA_TabCycle, TRUE,
End,
CHILD_Label, LabelObject, LABEL_Text, "_Minimum", End,
StartMember, GList[G_VisMax] = IntegerObject,
GA_RelVerify, TRUE,
GA_TabCycle, TRUE,
End,
CHILD_Label, LabelObject, LABEL_Text, "Ma_ximum", End,
End,
CHILD_WeightedHeight, 0,
StartMember, GList[G_Pos] = ChooserObject,
GA_TabCycle, TRUE,
CHOOSER_Labels, chooser2,
End,
CHILD_Label, LabelObject, LABEL_Text, "P_osition", End,
CHILD_WeightedHeight, 0,
StartHGroup,
StartMember, GList[G_PosX] = IntegerObject,
GA_TabCycle, TRUE,
End,
StartMember, GList[G_PosY] = IntegerObject,
GA_TabCycle, TRUE,
End,
End,
CHILD_Label, LabelObject, LABEL_Text, "Offse_t", End,
CHILD_WeightedHeight, 0,
End,
End,
CHILD_WeightMinimum, TRUE,
End,
StartHGroup,
LAYOUT_EvenSize, TRUE,
StartMember, GList[G_Save] = ButtonObject,
GA_Text, "_Save",
End,
CHILD_NominalSize, TRUE, /* make it a bit larger than necessary */
CHILD_WeightedWidth, 0,
StartMember, GList[G_Use] = ButtonObject,
GA_Text, "_Use",
End,
CHILD_NominalSize, TRUE,
CHILD_WeightedWidth, 0,
StartMember, GList[G_Cancel] = ButtonObject,
GA_Text, "_Cancel",
End,
CHILD_NominalSize, TRUE,
CHILD_WeightedWidth, 0,
End,
CHILD_WeightedHeight, 0,
End,
EndWindow;
if (Window)
{
/* set up automatic label justification */
SetAttrs( l1, LAYOUT_AlignLabels, l2, TAG_END );
SetAttrs( l2, LAYOUT_AlignLabels, l1, TAG_END );
/* Finish the gadgetarray initialisation. Set gadget IDs and release verify */
{
LONG i = 1;
do SetAttrs(GList[i], GA_ID, i, GA_RelVerify, TRUE, TAG_END);
while (GList[++i]);
}
if (Win = CA_OpenWindow( Window ))
{
ULONG wsig;
GetAttr( WINDOW_SigMask, Window, &wsig );
while (done == FALSE)
{
ULONG sig = Wait(wsig | SIGBREAKF_CTRL_C);
ULONG result;
WORD code;
if (sig & wsig)
{
while ((result = CA_HandleInput(Window,&code)) != WMHI_LASTMSG)
{
switch(result & WMHI_CLASSMASK)
{
case WMHI_GADGETUP:
switch(result & WMHI_GADGETMASK)
{
case G_Save:
case G_Use:
case G_Cancel:
done = TRUE;
/*FALLTHROUGH*/
/* Gadgets here */
default:
Printf("Gadget ID %ld hit (code %ld)\n", result & WMHI_GADGETMASK, code);
break;
}
break;
case WMHI_CLOSEWINDOW:
done = TRUE;
break;
}
}
}
else if (sig & SIGBREAKF_CTRL_C)
{
done = TRUE;
}
}
/* Close the window and dispose of all attached gadgets */
DisposeObject( Window );
}
}
}
FreeChooserLabels( chooser1 );
FreeChooserLabels( chooser2 );
FreeScreenDrawInfo(Win->WScreen, Dri);
}
UnlockPubScreen(0, Scr);
}