home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 1: Amiga
/
FrozenFish-Apr94.iso
/
bbs
/
alib
/
d8xx
/
d832
/
term.lha
/
Term
/
term-3.1-Source.lha
/
termStatusWindow.c
< prev
next >
Wrap
C/C++ Source or Header
|
1993-02-11
|
9KB
|
382 lines
/*
** termStatusWindow.c
**
** Status information window support routines
**
** Copyright © 1990-1993 by Olaf `Olsen' Barthel & MXM
** All Rights Reserved
*/
#include "termGlobal.h"
enum { GAD_SESSION,GAD_BYTES_IN,GAD_BYTES_OUT,GAD_CONNECT_STRING,GAD_BBS_NAME,GAD_BBS_NUMBER,
GAD_BBS_COMMENT,GAD_BBS_USER,GAD_SCREEN_SIZE,GAD_PORT_NAME,GAD_BUFFER_SIZE,GAD_MEMORY };
STATIC struct Gadget *InfoGadgetArray[GAD_MEMORY + 1];
STATIC struct Gadget *InfoGadgetList;
STATIC LONG InfoWindowLeft = -1,
InfoWindowTop = -1;
STATIC struct Gadget *
CreateAllGadgets(struct Gadget **GadgetArray,struct Gadget **GadgetList)
{
struct Gadget *Gadget;
struct NewGadget NewGadget;
UWORD Counter = 0;
SZ_SizeSetup(Window -> WScreen,&UserFont,TRUE);
memset(&NewGadget,0,sizeof(struct NewGadget));
if(Gadget = CreateContext(GadgetList))
{
UBYTE DummyBuffer[256],
Time[30],
Date[30];
struct DateTime DateTime;
LONG Width,DummyWidth;
DateTime . dat_Stamp = SessionStart;
DateTime . dat_Format = FORMAT_DOS;
DateTime . dat_Flags = 0;
DateTime . dat_StrDay = NULL;
DateTime . dat_StrDate = Date;
DateTime . dat_StrTime = Time;
if(DateToStr(&DateTime))
SPrintf(DummyBuffer,"%s %s",Date,Time);
else
strcpy(DummyBuffer,"-");
SZ_AddLeftOffset(SZ_LeftOffsetDelta(MSG_INFOWINDOW_SESSION_START_GAD,MSG_INFOWINDOW_FREE_MEMORY_GAD));
Width = strlen(BaudBuffer);
if(Width > 60)
Width = 60;
DummyWidth = strlen(DummyBuffer);
if(DummyWidth > Width)
Width = DummyWidth;
SZ_SetWidth(SZ_Width(TEXT_KIND,NULL,Width,NULL));
NewGadget . ng_GadgetText = LocaleString(MSG_INFOWINDOW_SESSION_START_GAD);
NewGadget . ng_GadgetID = Counter;
NewGadget . ng_Flags = 0;
GadgetArray[Counter++] = Gadget = CreateGadget(TEXT_KIND,Gadget,&NewGadget,
SZ_Adjust, TRUE,
SZ_AutoWidth, TRUE,
GTTX_Text, DummyBuffer,
GTTX_CopyText, TRUE,
GTTX_Border, TRUE,
TAG_DONE);
NewGadget . ng_GadgetText = LocaleString(MSG_INFOWINDOW_BYTES_RECEIVED_GAD);
NewGadget . ng_GadgetID = Counter;
GadgetArray[Counter++] = Gadget = CreateGadget(TEXT_KIND,Gadget,&NewGadget,
SZ_Adjust, TRUE,
SZ_AutoWidth, TRUE,
SZ_AlignExtra, TRUE,
GTTX_Border, TRUE,
TAG_DONE);
NewGadget . ng_GadgetText = LocaleString(MSG_INFOWINDOW_BYTES_SENT_GAD);
NewGadget . ng_GadgetID = Counter;
GadgetArray[Counter++] = Gadget = CreateGadget(TEXT_KIND,Gadget,&NewGadget,
SZ_Adjust, TRUE,
SZ_AutoWidth, TRUE,
GTTX_Border, TRUE,
TAG_DONE);
NewGadget . ng_GadgetText = LocaleString(MSG_INFOWINDOW_CONNECTION_MESSAGE_GAD);
NewGadget . ng_GadgetID = Counter;
GadgetArray[Counter++] = Gadget = CreateGadget(TEXT_KIND,Gadget,&NewGadget,
SZ_Adjust, TRUE,
SZ_AutoWidth, TRUE,
GTTX_Text, BaudBuffer[0] ? BaudBuffer : (STRPTR)"-",
GTTX_CopyText, TRUE,
GTTX_Border, TRUE,
TAG_DONE);
NewGadget . ng_GadgetText = LocaleString(MSG_INFOWINDOW_BBS_NAME_GAD);
NewGadget . ng_GadgetID = Counter;
GadgetArray[Counter++] = Gadget = CreateGadget(TEXT_KIND,Gadget,&NewGadget,
SZ_Adjust, TRUE,
SZ_AutoWidth, TRUE,
SZ_AlignExtra, TRUE,
GTTX_Text, CurrentBBSName[0] ? CurrentBBSName : (STRPTR)"-",
GTTX_CopyText, TRUE,
GTTX_Border, TRUE,
TAG_DONE);
NewGadget . ng_GadgetText = LocaleString(MSG_INFOWINDOW_BBS_PHONE_NUMBER_GAD);
NewGadget . ng_GadgetID = Counter;
GadgetArray[Counter++] = Gadget = CreateGadget(TEXT_KIND,Gadget,&NewGadget,
SZ_Adjust, TRUE,
SZ_AutoWidth, TRUE,
GTTX_Text, CurrentBBSNumber[0] ? CurrentBBSNumber : (STRPTR)"-",
GTTX_CopyText, TRUE,
GTTX_Border, TRUE,
TAG_DONE);
NewGadget . ng_GadgetText = LocaleString(MSG_INFOWINDOW_BBS_COMMENT_GAD);
NewGadget . ng_GadgetID = Counter;
GadgetArray[Counter++] = Gadget = CreateGadget(TEXT_KIND,Gadget,&NewGadget,
SZ_Adjust, TRUE,
SZ_AutoWidth, TRUE,
GTTX_Text, CurrentBBSComment[0] ? CurrentBBSComment : (STRPTR)"-",
GTTX_CopyText, TRUE,
GTTX_Border, TRUE,
TAG_DONE);
NewGadget . ng_GadgetText = LocaleString(MSG_INFOWINDOW_BBS_USER_NAME_GAD);
NewGadget . ng_GadgetID = Counter;
GadgetArray[Counter++] = Gadget = CreateGadget(TEXT_KIND,Gadget,&NewGadget,
SZ_Adjust, TRUE,
SZ_AutoWidth, TRUE,
GTTX_Text, UserName[0] ? UserName : (STRPTR)"-",
GTTX_CopyText, TRUE,
GTTX_Border, TRUE,
TAG_DONE);
NewGadget . ng_GadgetText = LocaleString(MSG_INFOWINDOW_SCREEN_SIZE_GAD);
NewGadget . ng_GadgetID = Counter;
GadgetArray[Counter++] = Gadget = CreateGadget(TEXT_KIND,Gadget,&NewGadget,
SZ_Adjust, TRUE,
SZ_AutoWidth, TRUE,
SZ_AlignExtra, TRUE,
GTTX_Border, TRUE,
TAG_DONE);
NewGadget . ng_GadgetText = LocaleString(MSG_INFOWINDOW_AREXX_PORT_NAME_GAD);
NewGadget . ng_GadgetID = Counter;
GadgetArray[Counter++] = Gadget = CreateGadget(TEXT_KIND,Gadget,&NewGadget,
SZ_Adjust, TRUE,
SZ_AutoWidth, TRUE,
SZ_AlignExtra, TRUE,
#ifdef USE_AREXX
GTTX_Text, RexxPortName,
#else
GTTX_Text, "-",
#endif /* USE_AREXX */
GTTX_Border, TRUE,
TAG_DONE);
NewGadget . ng_GadgetText = LocaleString(MSG_INFOWINDOW_BUFFER_SIZE_GAD);
NewGadget . ng_GadgetID = Counter;
GadgetArray[Counter++] = Gadget = CreateGadget(TEXT_KIND,Gadget,&NewGadget,
SZ_Adjust, TRUE,
SZ_AutoWidth, TRUE,
SZ_AlignExtra, TRUE,
GTTX_Border, TRUE,
TAG_DONE);
NewGadget . ng_GadgetText = LocaleString(MSG_INFOWINDOW_FREE_MEMORY_GAD);
NewGadget . ng_GadgetID = Counter;
GadgetArray[Counter] = Gadget = CreateGadget(TEXT_KIND,Gadget,&NewGadget,
SZ_Adjust, TRUE,
SZ_AutoWidth, TRUE,
GTTX_Border, TRUE,
TAG_DONE);
}
return(Gadget);
}
/* RefreshInfoWindow():
*
* Refresh, i.e. redraw, the contents of the info window.
*/
VOID
RefreshInfoWindow()
{
if(InfoWindow)
{
UBYTE DummyBuffer[256];
if(LocaleBase)
SPrintf(DummyBuffer,"%lD",BytesIn);
else
SPrintf(DummyBuffer,"%ld",BytesIn);
GT_SetGadgetAttrs(InfoGadgetArray[GAD_BYTES_IN],InfoWindow,NULL,
GTTX_Text, DummyBuffer,
TAG_DONE);
if(LocaleBase)
SPrintf(DummyBuffer,"%lD",BytesOut);
else
SPrintf(DummyBuffer,"%ld",BytesOut);
GT_SetGadgetAttrs(InfoGadgetArray[GAD_BYTES_OUT],InfoWindow,NULL,
GTTX_Text, DummyBuffer,
TAG_DONE);
if(XEmulatorBase && XEM_IO)
{
if(XEmulatorBase -> lib_Version >= 4)
{
ULONG Result = XEmulatorInfo(XEM_IO,XEMI_CONSOLE_DIMENSIONS);
SPrintf(DummyBuffer,"%ld × %ld",XEMI_EXTRACT_COLUMNS(Result),XEMI_EXTRACT_LINES(Result));
}
else
strcpy(DummyBuffer,"???");
}
else
SPrintf(DummyBuffer,"%ld × %ld",LastColumn + 1,LastLine + 1);
GT_SetGadgetAttrs(InfoGadgetArray[GAD_SCREEN_SIZE],InfoWindow,NULL,
GTTX_Text, DummyBuffer,
TAG_DONE);
if(LocaleBase)
SPrintf(DummyBuffer,"%lD",BufferSpace);
else
SPrintf(DummyBuffer,"%ld",BufferSpace);
GT_SetGadgetAttrs(InfoGadgetArray[GAD_BUFFER_SIZE],InfoWindow,NULL,
GTTX_Text, DummyBuffer,
TAG_DONE);
if(LocaleBase)
SPrintf(DummyBuffer,"%lD",AvailMem(MEMF_ANY));
else
SPrintf(DummyBuffer,"%ld",AvailMem(MEMF_ANY));
GT_SetGadgetAttrs(InfoGadgetArray[GAD_MEMORY],InfoWindow,NULL,
GTTX_Text, DummyBuffer,
TAG_DONE);
GT_SetGadgetAttrs(InfoGadgetArray[GAD_BBS_NAME],InfoWindow,NULL,
GTTX_Text, CurrentBBSName[0] ? CurrentBBSName : (STRPTR)"-",
TAG_DONE);
GT_SetGadgetAttrs(InfoGadgetArray[GAD_BBS_NUMBER],InfoWindow,NULL,
GTTX_Text, CurrentBBSNumber[0] ? CurrentBBSNumber : (STRPTR)"-",
TAG_DONE);
GT_SetGadgetAttrs(InfoGadgetArray[GAD_BBS_COMMENT],InfoWindow,NULL,
GTTX_Text, CurrentBBSComment[0] ? CurrentBBSComment : (STRPTR)"-",
TAG_DONE);
GT_SetGadgetAttrs(InfoGadgetArray[GAD_BBS_USER],InfoWindow,NULL,
GTTX_Text, UserName[0] ? UserName : (STRPTR)"-",
TAG_DONE);
}
}
/* CloseInfoWindow():
*
* Close the info window.
*/
VOID
CloseInfoWindow()
{
CheckItem(MEN_STATUS_WINDOW,FALSE);
if(InfoWindow)
{
InfoWindowLeft = InfoWindow -> LeftEdge;
InfoWindowTop = InfoWindow -> TopEdge;
ClearMenuStrip(InfoWindow);
CloseWindowSafely(InfoWindow);
InfoWindow = NULL;
}
if(InfoGadgetList)
{
FreeGadgets(InfoGadgetList);
InfoGadgetList = NULL;
}
}
/* OpenInfoWindow():
*
* Open the info window.
*/
VOID
OpenInfoWindow()
{
if(!InfoWindow)
{
if(CreateAllGadgets(InfoGadgetArray,&InfoGadgetList))
{
if(InfoWindowLeft == -1)
{
InfoWindowLeft = Window -> LeftEdge + Window -> Width - SZ_GetWindowWidth();
InfoWindowTop = Window -> TopEdge + (Window -> Height - SZ_GetWindowHeight()) / 2;
}
if(InfoWindow = OpenWindowTags(NULL,
WA_Left, InfoWindowLeft,
WA_Top, InfoWindowTop,
WA_Width, SZ_GetWindowWidth(),
WA_Height, SZ_GetWindowHeight(),
WA_DragBar, TRUE,
WA_DepthGadget, TRUE,
WA_CloseGadget, TRUE,
WA_RMBTrap, TRUE,
WA_DepthGadget, TRUE,
WA_CustomScreen, Window -> WScreen,
WA_NewLookMenus, TRUE,
WA_Title, LocaleString(MSG_INFOWINDOW_STATUS_INFORMATION_TXT),
TAG_DONE))
{
AddGList(InfoWindow,InfoGadgetList,(UWORD)-1,(UWORD)-1,NULL);
RefreshGList(InfoGadgetList,InfoWindow,NULL,(UWORD)-1);
GT_RefreshWindow(InfoWindow,NULL);
InfoWindow -> UserPort = Window -> UserPort;
ModifyIDCMP(InfoWindow,Window -> IDCMPFlags);
SetMenuStrip(InfoWindow,Menu);
CheckItem(MEN_STATUS_WINDOW,TRUE);
InfoWindow -> Flags &= ~WFLG_RMBTRAP;
RefreshInfoWindow();
}
}
}
}