home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Fred Fish Collection 1.5
/
ffcollection-1-5-1992-11.iso
/
ff_disks
/
500-599
/
ff589.lza
/
Term
/
TermSrc.lha
/
TransferPanel.c
< prev
next >
Wrap
C/C++ Source or Header
|
1991-12-01
|
9KB
|
397 lines
/* $Revision Header * Header built automatically - do not edit! *************
*
* (C) Copyright 1991 by Olaf 'Olsen' Barthel & MXM
*
* Name .....: TransferPanel.c
* Created ..: Monday 21-Jan-91 20:12
* Revision .: 0
*
* Date Author Comment
* ========= ======== ====================
* 21-Jan-91 Olsen Created this file!
*
* $Revision Header ********************************************************/
#include "TermGlobal.h"
STATIC struct Gadget *GadgetList;
STATIC BYTE LastStatus = -1;
STATIC WORD PositionX = -1,PositionY = -1;
#define WIDTH (70*8+12)
#define HEIGHT (16*8+24+27)
#define ORIGIN_X 13
#define ORIGIN_Y 14
enum { MEN_ABORT=1,MEN_SKIP,MEN_QUITPANEL };
STATIC struct NewMenu NewTransferMenu[] =
{
{ NM_TITLE, "Project", 0 , 0, 0, (APTR)0},
{ NM_ITEM, "Abort Entire Transfer", "A", 0, 0, (APTR)MEN_ABORT},
{ NM_ITEM, "Skip Current File", "S", 0, 0, (APTR)MEN_SKIP},
{ NM_ITEM, NM_BARLABEL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, "Quit", "Q", 0, 0, (APTR)MEN_QUITPANEL},
{ NM_END, 0, 0 , 0, 0, (APTR)0}
};
STATIC struct Gadget *
CreateAllGadgets(struct Gadget **GadgetArray,struct Gadget **GadgetList,APTR VisualInfo,UWORD TopEdge)
{
struct Gadget *Gadget;
struct NewGadget NewGadget;
UWORD Counter = 0;
memset(&NewGadget,0,sizeof(struct NewGadget));
if(Gadget = CreateContext(GadgetList))
{
NewGadget . ng_TextAttr = &DefaultFont;
NewGadget . ng_VisualInfo = VisualInfo;
NewGadget . ng_Width = (WIDTH - 30) >> 1;
NewGadget . ng_Height = 12;
NewGadget . ng_GadgetText = "_Abort Entire Transfer";
NewGadget . ng_GadgetID = Counter;
NewGadget . ng_Flags = 0;
NewGadget . ng_LeftEdge = 10;
NewGadget . ng_TopEdge = HEIGHT - 3 - NewGadget . ng_Height;
GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
GT_Underscore, '_',
TAG_DONE);
NewGadget . ng_GadgetText = "_Skip Current File";
NewGadget . ng_GadgetID = Counter;
NewGadget . ng_LeftEdge = WIDTH - 10 - NewGadget . ng_Width;
GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
GT_Underscore, '_',
TAG_DONE);
NewGadget . ng_Height = 16;
NewGadget . ng_GadgetText = "Data Transferred";
NewGadget . ng_GadgetID = Counter;
NewGadget . ng_Flags = PLACETEXT_ABOVE;
NewGadget . ng_LeftEdge = 10;
NewGadget . ng_TopEdge = HEIGHT - 3 - NewGadget . ng_Height - 16;
GadgetArray[Counter++] = Gadget = CreateGadget(TEXT_KIND,Gadget,&NewGadget,
GTTX_Border, TRUE,
TAG_DONE);
NewGadget . ng_GadgetText = "Time To Go";
NewGadget . ng_GadgetID = Counter;
NewGadget . ng_LeftEdge = WIDTH - 10 - NewGadget . ng_Width;
GadgetArray[Counter++] = Gadget = CreateGadget(TEXT_KIND,Gadget,&NewGadget,
GTTX_Border, TRUE,
TAG_DONE);
}
return(Gadget);
}
VOID __stdargs
TransferInfo(WORD X,WORD Y,BYTE *String,...)
{
if(String && TransferWindow)
{
va_list VarArgs;
va_start(VarArgs,String);
VSPrintf(SharedBuffer,String,VarArgs);
va_end(VarArgs);
if(String[0] == '%' && String[2] == 'd')
{
strcat(SharedBuffer," ");
SharedBuffer[11] = 0;
}
Move(TransferWindow -> RPort,ORIGIN_X + X * 8,ORIGIN_Y + 6 + Y * 4);
Text(TransferWindow -> RPort,SharedBuffer,strlen(SharedBuffer));
}
}
VOID
GhostStats(struct Gadget *Gadget)
{
STATIC ULONG __chip Check = 0x5555AAAA;
struct RastPort *RPort = TransferWindow -> RPort;
BYTE FgPen = RPort -> FgPen;
SetAPen(RPort,1);
SetAfPt(RPort,(UWORD *)&Check,1);
RectFill(RPort,Gadget -> LeftEdge + 2,Gadget -> TopEdge + 1,Gadget -> LeftEdge + Gadget -> Width - 3,Gadget -> TopEdge + Gadget -> Height - 2);
SetAPen(RPort,FgPen);
SetAfPt(RPort,NULL,0);
}
VOID
ShowStats(struct Gadget *Gadget,LONG Value,LONG Max)
{
if(TransferWindow)
{
struct RastPort *RPort = TransferWindow -> RPort;
LONG MaxWidth = Gadget -> Width - 4,Width;
if((Width = (MaxWidth * Value) / Max) > 0)
{
if(Width != MaxWidth)
{
BYTE FgPen = RPort -> FgPen;
SetAPen(RPort,0);
RectFill(RPort,Gadget -> LeftEdge + 2 + Width - 1,Gadget -> TopEdge + 1,Gadget -> LeftEdge + Gadget -> Width - 3,Gadget -> TopEdge + Gadget -> Height - 2);
SetAPen(RPort,FgPen);
}
RectFill(RPort,Gadget -> LeftEdge + 2,Gadget -> TopEdge + 1,Gadget -> LeftEdge + Width + 1,Gadget -> TopEdge + Gadget -> Height - 2);
}
else
{
BYTE FgPen = RPort -> FgPen;
SetAPen(RPort,0);
RectFill(RPort,Gadget -> LeftEdge + 2,Gadget -> TopEdge + 1,Gadget -> LeftEdge + Gadget -> Width - 3,Gadget -> TopEdge + Gadget -> Height - 2);
SetAPen(RPort,FgPen);
}
}
}
VOID __stdargs
ShowString(struct Gadget *Gadget,UBYTE *String,...)
{
if(TransferWindow)
{
va_list VarArgs;
WORD Len;
struct RastPort *RPort = TransferWindow -> RPort;
va_start(VarArgs,String);
VSPrintf(SharedBuffer,String,VarArgs);
va_end(VarArgs);
Len = strlen(SharedBuffer);
Move(RPort,Gadget -> LeftEdge + 2 + (Gadget -> Width - 4 - 8 * Len) / 2,Gadget -> TopEdge + 1 + (Gadget -> Height - 2 - 8) / 2 + 6);
if(Config . ColourMode != COLOUR_MONO)
{
BYTE FgPen = RPort -> FgPen,DrawMode = RPort -> DrawMode;
SetAPen(RPort,2);
SetDrMd(RPort,JAM1);
Text(RPort,SharedBuffer,Len);
SetAPen(RPort,FgPen);
SetDrMd(RPort,DrawMode);
}
else
Text(RPort,SharedBuffer,Len);
}
}
BYTE
TransferPanel(UBYTE *Title)
{
if(Status != STATUS_DOWNLOAD && Status != STATUS_UPLOAD)
{
LastStatus = Status;
Status = STATUS_DOWNLOAD;
}
else
LastStatus = -1;
if(CreateAllGadgets(&TransferGadgetArray[0],&GadgetList,VisualInfo,Screen -> WBorTop + Screen -> Font -> ta_YSize + 1))
{
if(TransferMenu = CreateMenus(NewTransferMenu,
GTMN_FrontPen, 0,
TAG_DONE))
{
if(LayoutMenus(TransferMenu,VisualInfo,
GTMN_TextAttr,&DefaultFont,
TAG_DONE))
{
if(PositionX == -1)
PositionX = (Screen -> Width - WIDTH) >> 1;
if(PositionY == -1)
PositionY = (Screen -> Height - HEIGHT) >> 1;
if(TransferWindow = OpenWindowTags(NULL,
WA_Width, WIDTH,
WA_Height, HEIGHT,
WA_Left, PositionX,
WA_Top, PositionY,
WA_Activate, TRUE,
WA_DragBar, TRUE,
WA_DepthGadget, TRUE,
WA_CloseGadget, TRUE,
WA_RMBTrap, TRUE,
WA_CustomScreen,Screen,
WA_IDCMP, IDCMP_CLOSEWINDOW | BUTTONIDCMP | IDCMP_MENUPICK,
WA_Title, Title,
TAG_DONE))
{
BYTE Pen1,Pen2;
DrawBevelBox(TransferWindow -> RPort,10,12,WIDTH - 20,116,
GTBB_Recessed, TRUE,
GT_VisualInfo, VisualInfo,
TAG_DONE);
switch(Config . ColourMode)
{
case COLOUR_AMIGA: Pen1 = 1;
Pen2 = 3;
break;
case COLOUR_EIGHT: Pen1 = 4;
Pen2 = 7;
break;
case COLOUR_SIXTEEN: Pen1 = 15;
Pen2 = 8;
break;
case COLOUR_MONO: Pen1 = Pen2 = 1;
break;
}
PushWindow(TransferWindow);
AddGList(TransferWindow,GadgetList,(UWORD)-1,(UWORD)-1,NULL);
RefreshGList(GadgetList,TransferWindow,NULL,(UWORD)-1);
GT_RefreshWindow(TransferWindow,NULL);
SetMenuStrip(TransferWindow,TransferMenu);
TransferWindow -> Flags &= ~WFLG_RMBTRAP;
SetAPen(TransferWindow -> RPort,Pen1);
SetBPen(TransferWindow -> RPort,0);
SetDrMd(TransferWindow -> RPort,JAM2);
TransferInfo(0, 0,"Protocol..........:");
TransferInfo(0, 3,"File..............:");
TransferInfo(0, 5,"Size..............:");
TransferInfo(0, 8,"Bytes Transferred.: Blocks Transferred:");
TransferInfo(0,10,"Block Check Type..: Block Size........:");
TransferInfo(0,13,"Estimated Time....: Elapsed Time......:");
TransferInfo(0,16,"Message...........:");
TransferInfo(0,18,"Last Error........:");
TransferInfo(0,21,"Number Of Errors..: Number Of Timeouts:");
TransferInfo(0,24,"Packet Type.......: Packet Delay......:");
TransferInfo(0,26,"Characters/Second.: Character Delay...:");
SetAPen(TransferWindow -> RPort,Pen2);
TransferInfo(20, 0,"Unknown");
TransferInfo(20, 3,"-");
TransferInfo(20, 5,"-");
TransferInfo(20, 8,"-");
TransferInfo(55, 8,"-");
TransferInfo(20,10,"-");
TransferInfo(55,10,"-");
TransferInfo(20,13,"-");
TransferInfo(55,13,"-");
TransferInfo(20,16,"-- None --");
TransferInfo(20,18,"-- None --");
TransferInfo(20,21,"-");
TransferInfo(55,21,"-");
TransferInfo(20,24,"-");
TransferInfo(55,24,"-");
TransferInfo(20,26,"-");
TransferInfo(55,26,"-");
GhostStats(TransferGadgetArray[2]);
GhostStats(TransferGadgetArray[3]);
return(TRUE);
}
}
}
}
return(FALSE);
}
VOID
DeleteTransferPanel()
{
if(FileMatch)
MatchEnd(FileAnchor);
if(LastStatus != -1)
Status = LastStatus;
LastStatus = -1;
if(TransferWindow)
{
PositionX = TransferWindow -> LeftEdge;
PositionY = TransferWindow -> TopEdge;
TransferWindow -> Flags |= WFLG_RMBTRAP;
ClearMenuStrip(TransferWindow);
if(GadgetList)
RemoveGList(TransferWindow,GadgetList,(UWORD)-1);
PopWindow();
CloseWindow(TransferWindow);
TransferWindow = NULL;
}
if(TransferMenu)
{
FreeMenus(TransferMenu);
TransferMenu = NULL;
}
if(GadgetList)
{
FreeGadgets(GadgetList);
GadgetList = NULL;
}
}