home *** CD-ROM | disk | FTP | other *** search
- extern APTR OpenLibrary();
- extern struct Message *GetMsg();
- extern struct Window *OpenWindow();
-
- extern UWORD FileRequester();
- extern void InitFileReq(), FreeFileReq();
-
- extern struct TextFont *OpenFont();
-
- /* Defined in TestGads.c */
-
- extern struct Gadget ScreenGadg;
-
- extern void CreateDisplay();
- extern struct Screen *GetScreen();
-
- /* The Library Bases */
-
- struct MultiReqBase *MultiReqBase;
- struct GfxBase *GfxBase;
- struct IntuitionBase *IntuitionBase;
-
- /* some important pointers */
-
- static struct FileReq *fr;
- static BOOL ScrnType;
- static BOOL ScrnMode;
- static struct Window *TestWindow;
- static struct RastPort *rp;
- static struct IntuiMessage *IntMsg;
-
- /* my functions */
-
- static void OpenAll(), CloseAll(), DoIDCMP(), CheckGadget(), OpenMultiReq(), SetGadgets();
-
- /* my window */
-
- static struct NewWindow NewTestWindow =
- {
- 62,0,
- 516,200,
- 0,1,
- GADGETUP+CLOSEWINDOW,
- WINDOWDRAG+WINDOWDEPTH+WINDOWCLOSE+ACTIVATE+NOCAREREFRESH,
- &ScreenGadg,
- NULL,
- (UBYTE *)"MultiReq Testprogram v1.00",
- NULL,
- NULL,
- 0,0,
- 0,0,
- WBENCHSCREEN
- };
-
- /* T80 Font */
-
- static struct TextFont *T80Font;
- struct TextAttr Topaz80 =
- {
- (STRPTR)"topaz.font",
- TOPAZ_EIGHTY,
- FS_NORMAL,
- FPF_ROMFONT
- };
-
- void main()
- {
- OpenAll();
-
- DoIDCMP();
-
- CloseAll();
- }
-
- static void OpenAll()
- {
- if(!(IntuitionBase=(struct IntuitionBase *)OpenLibrary("intuition.library",0L)))
- {
- puts("Can't open intuition.library !");
- CloseAll();
- }
-
- if(!(GfxBase=(struct GfxBase *)OpenLibrary("graphics.library",0L)))
- {
- puts("Can't open graphics.library !");
- CloseAll();
- }
-
- if(!(MultiReqBase=(struct MultiReqBase *)OpenLibrary("multireq.library",0L)))
- {
- puts("Can't open multireq.library !");
- CloseAll();
- }
-
- if(!(T80Font=OpenFont(&Topaz80)))
- {
- puts("Can't open topaz.font !");
- CloseAll();
- };
-
- InitFileReq(&fr,2L);
- if(!fr)
- {
- puts("Unable to alloc Memory for the FileReq-structure !");
- CloseAll();
- }
- SetGadgetBuffers(fr);
-
- if(!(TestWindow=OpenWindow(&NewTestWindow)))
- {
- puts("Can't open test window !");
- CloseAll();
- }
- rp=TestWindow->RPort;
-
- SetFont(rp,T80Font); /* I need no other fonts !! */
-
- CreateDisplay(TestWindow,rp);
-
- SetGadgets();
- }
-
- static void CloseAll()
- {
- if(T80Font) CloseFont(T80Font);
- if(TestWindow) CloseWindow(TestWindow);
- if(fr) FreeFileReq(&fr);
- if(MultiReqBase) CloseLibrary(MultiReqBase);
- if(GfxBase) CloseLibrary(GfxBase);
- if(IntuitionBase) CloseLibrary(IntuitionBase);
-
- exit(0);
- }
-
- static void DoIDCMP()
- {
- register ULONG Class;
- register UWORD GadgetID;
- register struct Gadget *GadgetPtr;
-
- FOREVER
- {
- if(!(IntMsg=(struct IntuiMessage *)GetMsg(TestWindow->UserPort)))
- {
- Wait(1L << TestWindow->UserPort->mp_SigBit);
- continue;
- }
-
- Class=IntMsg->Class;
- if(GadgetPtr=(struct Gadget *)IntMsg->IAddress) /* avoid enforcer hits */
- GadgetID=GadgetPtr->GadgetID;
- else
- GadgetID=0;
-
- ReplyMsg(IntMsg);
-
- if(Class==CLOSEWINDOW)
- break;
- else if(Class==GADGETUP)
- CheckGadget(GadgetPtr,GadgetID);
- }
- }
-
-
- static void CheckGadget(GadgetPtr,GadgetID)
- register struct Gadget *GadgetPtr;
- register USHORT GadgetID;
- {
- switch(GadgetID)
- {
- case ID_FILEREQ:
- OpenMultiReq();
- break;
- case ID_SCREEN:
- ScrnType^=(BOOL)TRUE;
- SetScreenType(TestWindow,rp,ScrnType,ScrnMode);
- break;
- case ID_SCRMODE:
- ScrnMode^=(BOOL)TRUE;
- SetScreenMode(rp,ScrnMode);
- break;
- case ID_DIRECTORY:
- fr->ActiveList^=1;
- SetDirectory(rp,(UWORD)fr->ActiveList);
- break;
- case ID_INFO:
- fr->ShowInfo^=1;
- SetInfo(rp,(UWORD)fr->ShowInfo);
- break;
- case ID_AUTO1:
- case ID_AUTO2:
- fr->FileList[GadgetID-ID_AUTO1].AutoRead^=1;
- SetAutoRead(TestWindow,rp,GadgetPtr,fr->FileList[GadgetID-ID_AUTO1].AutoRead);
- break;
- case ID_CURRENT1:
- case ID_CURRENT2:
- GetCurrent(TestWindow,fr,GadgetID-ID_CURRENT1);
- break;
- }
- }
-
- static void OpenMultiReq()
- {
- register struct Screen *scrn;
-
- GetEdge(fr);
- scrn=GetScreen(ScrnType,ScrnMode);
- FileRequester(fr,scrn); /* don't need returned status, cause it's */
- /* also stored in fr->ReturnStatus */
- if(scrn) CloseScreen(scrn);
-
- RefreshGadgets(&ScreenGadg,TestWindow,NULL);
- SetGadgets();
- WriteStatus(rp,fr);
- }
-
- static void SetGadgets()
- {
- SetScreenType(TestWindow,rp,ScrnType,ScrnMode);
- SetDirectory(rp,(UWORD)fr->ActiveList);
- SetInfo(rp,(UWORD)fr->ShowInfo);
- SetAutoGadgets(TestWindow,rp,fr);
- SetEdge(TestWindow,fr);
- }
-
-