home *** CD-ROM | disk | FTP | other *** search
- #include <intuition/intuition.h>
- #include <proto/intuition.h>
- #include "term.h"
-
- #define REQWIDTH 440
- #define REQHEIGHT 100
-
- USHORT chip RadioOnData[] = {
-
- /* Plane 0 */
- 0xf81f,
- 0xc7e3,
- 0xbc3d,
- 0x700e,
- 0x700e,
- 0x700e,
- 0xbc3d,
- 0xc7e3,
- 0xf81f,
-
- 0 };
-
- USHORT chip RadioOffData[] = {
-
- /* Plane 0 */
- 0xf81f,
- 0xc7e3,
- 0xbffd,
- 0x7ffe,
- 0x7ffe,
- 0x7ffe,
- 0xbffd,
- 0xc7e7,
- 0xf81f,
-
- 0 };
-
- struct Image RadioOff =
- {
- 0,-1,16,9,1,RadioOffData,1,0,NULL
- };
-
- struct Image RadioOn =
- {
- 0,-1,16,9,1,RadioOnData,1,0,NULL
- };
-
- struct IntuiText ReqText =
- {
- 2,1,JAM2,160,10,NULL,"Enter File",NULL,
- };
-
- struct IntuiText TextOK =
- {
- 2,1,JAM2,0,0,NULL,"OK",NULL,
- };
-
- struct IntuiText TextProto[] =
- {
- {2,1,JAM2,18,0,NULL,"Xmodem",NULL},
- {2,1,JAM2,18,0,NULL,"Xmodem-CRC",NULL},
- {2,1,JAM2,18,0,NULL,"WXmodem",NULL},
- {2,1,JAM2,18,0,NULL,"Zmodem",NULL},
- };
-
- struct Gadget GadgetOK =
- {
- NULL, /* Next Gadget */
- 200, 80, 40, 10,
- GADGHNONE,
- RELVERIFY|ENDGADGET,
- BOOLGADGET|REQGADGET,
- NULL, NULL,
- &TextOK,
- NULL,
- NULL,
- 1000,
- NULL,
- };
-
- struct Gadget GadgetXModem =
- {
- &GadgetOK, /* Next Gadget */
- 10, 20, 16, 9,
- GADGHIMAGE|GADGIMAGE,
- GADGIMMEDIATE|TOGGLESELECT,
- BOOLGADGET|REQGADGET,
- (APTR)&RadioOff, (APTR)&RadioOn,
- &TextProto[0],
- 1,
- NULL,
- 1002,
- NULL,
- };
-
- struct Gadget GadgetXModemCRC =
- {
- &GadgetXModem, /* Next Gadget */
- 10, 30, 16, 9,
- GADGHIMAGE|GADGIMAGE,
- GADGIMMEDIATE|TOGGLESELECT,
- BOOLGADGET|REQGADGET,
- (APTR)&RadioOff, (APTR)&RadioOn,
- &TextProto[1],
- 1,
- NULL,
- 1003,
- NULL,
- };
-
- struct Gadget GadgetWXModem =
- {
- &GadgetXModemCRC, /* Next Gadget */
- 10, 40, 16, 9,
- GADGHIMAGE|GADGIMAGE|SELECTED,
- GADGIMMEDIATE|TOGGLESELECT,
- BOOLGADGET|REQGADGET,
- (APTR)&RadioOff, (APTR)&RadioOn,
- &TextProto[2],
- 1,
- NULL,
- 1004,
- NULL,
- };
-
- struct Gadget GadgetZModem =
- {
- &GadgetWXModem, /* Next Gadget */
- 10, 50, 16, 9,
- GADGHIMAGE|GADGIMAGE|GADGDISABLED,
- GADGIMMEDIATE|TOGGLESELECT,
- BOOLGADGET|REQGADGET,
- (APTR)&RadioOff, (APTR)&RadioOn,
- &TextProto[3],
- 1,
- NULL,
- 1005,
- NULL,
- };
-
- char FileBuffer[32];
- struct StringInfo InfoFileName =
- {
- FileBuffer,
- NULL,
- 0,
- sizeof(FileBuffer),
- 0,
-
- 0, 0, 0, 0, 0, /* Intuition managed */
- NULL,
- 0,
- NULL,
- };
-
- struct Gadget GadgetFileName =
- {
- &GadgetOK, /* Next Gadget */
- 100, 40, 200, 10,
- GADGHCOMP,
- GADGIMMEDIATE,
- STRGADGET|REQGADGET,
- NULL, NULL,
- NULL,
- NULL,
- (APTR)&InfoFileName,
- 1001,
- NULL,
- };
-
- SHORT BorderCoords[2][5] =
- {
- 5,5,
- REQWIDTH-5, 5,
- REQWIDTH-5, REQHEIGHT-5,
- 5, REQHEIGHT-5,
- 5,5,
- };
-
- struct Border ReqBorder =
- {
- 0,0,
- 0,0,JAM1,
- 5, &BorderCoords[0][0],
- NULL,
- };
-
- struct Requester FileReq =
- {
- NULL,
- 100, 50, REQWIDTH, REQHEIGHT,
- 0, 0,
- &GadgetOK,
- &ReqBorder,
- &ReqText,
- NULL,
- 1,
- NULL,
- {NULL},
- NULL,
- NULL,
- {NULL},
- };
-
- void Exclude(struct Gadget *MyGadget, struct Requester *MyRequest
- , struct Window *w)
- {
- struct Gadget *GadgetList;
- int cSelected;
-
- if (MyGadget->MutualExclude == 0)
- return;
- cSelected = 0;
- GadgetList = MyRequest->ReqGadget;
- while (GadgetList)
- {
- if ((GadgetList != MyGadget) &&
- (MyGadget->MutualExclude == GadgetList->MutualExclude) &&
- (GadgetList->Flags & SELECTED))
- {
- GadgetList->Flags &= ~SELECTED;
- cSelected++;
- }
- GadgetList = GadgetList->NextGadget;
- }
- /* If nobody was selected then he must have turned off the only
- * Selected gadget....Thats a nono
- */
- if (cSelected == 0)
- MyGadget->Flags |= SELECTED;
- RefreshGadgets(MyRequest->ReqGadget, w, MyRequest);
- }
-
- int GetFile(struct Window *w, char **FileName)
- {
- int Result, DoRequest;
- struct Gadget *MyGadget;
- struct IntuiMessage *message;
- ULONG class;
-
- Result = TRUE;
- FileReq.ReqGadget = &GadgetFileName;
- Request(&FileReq, w);
- DoRequest = TRUE;
- while (DoRequest)
- {
- Wait(1L << w->UserPort->mp_SigBit);
- while (message = (struct IntuiMessage *)GetMsg(w->UserPort))
- {
- class = message->Class;
- MyGadget = (struct Gadget *)message->IAddress;
- ReplyMsg((struct Message *)message);
- switch (class)
- {
- case GADGETUP:
- case GADGETDOWN:
- Exclude(MyGadget, &FileReq, w);
- switch (MyGadget->GadgetID)
- {
- case 1000: /* OK */
- DoRequest = FALSE;
- break;
- }
- break;
-
- case REQSET:
- ActivateGadget(&GadgetFileName, w, &FileReq);
- break;
- }
- }
- }
- *FileName = FileBuffer;
- return Result;
- }
-
- int Config(struct Window *w)
- {
- int Result, DoRequest;
- struct Gadget *MyGadget;
- struct IntuiMessage *message;
- ULONG class;
-
- Result = TRUE;
- FileReq.ReqGadget = &GadgetZModem;
- Request(&FileReq, w);
- DoRequest = TRUE;
- while (DoRequest)
- {
- Wait(1L << w->UserPort->mp_SigBit);
- while (message = (struct IntuiMessage *)GetMsg(w->UserPort))
- {
- class = message->Class;
- MyGadget = (struct Gadget *)message->IAddress;
- ReplyMsg((struct Message *)message);
- switch (class)
- {
- case GADGETUP:
- case GADGETDOWN:
- Exclude(MyGadget, &FileReq, w);
- switch (MyGadget->GadgetID)
- {
- case 1000: /* OK */
- DoRequest = FALSE;
- break;
-
- case 1002: /* X */
- ProtoInit = NAK;
- break;
-
- case 1003: /* X-CRC */
- ProtoInit = 'C';
- break;
-
- case 1004: /* WX */
- ProtoInit = 'W';
- break;
-
- case 1005: /* Z */
- ProtoInit = 'Z';
- break;
- }
- break;
-
- case REQSET:
- break;
- }
- }
- }
- return Result;
- }
-
-