home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
292.lha
/
TinyTerm
/
termfile.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-09-02
|
5KB
|
332 lines
#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;
}