home *** CD-ROM | disk | FTP | other *** search
- /*
- ** $Id: termStatus.c,v 1.4 92/08/15 20:15:18 olsen Sta Locker: olsen $
- ** $Revision: 1.4 $
- ** $Date: 92/08/15 20:15:18 $
- **
- ** Status information window support routines
- **
- ** Copyright ⌐ 1990-1992 by Olaf `Olsen' Barthel & MXM
- ** All Rights Reserved
- */
-
- #include "termGlobal.h"
-
- enum { GAD_SESSION,GAD_BYTES_IN,GAD_BYTES_OUT,GAD_CONNECT_STRING,GAD_SCREEN_SIZE,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,APTR VisualInfo,UWORD TopEdge)
- {
- struct Gadget *Gadget;
- struct NewGadget NewGadget;
- UWORD Counter = 0;
-
- SZ_SizeSetup(Screen,&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_TextAttr = &UserFont;
- NewGadget . ng_VisualInfo = VisualInfo;
- 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 : "-",
- 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_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)
- {
- extern struct LocaleBase *LocaleBase;
- 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);
- }
- }
-
- /* CloseInfoWindow():
- *
- * Close the info window.
- */
-
- VOID
- CloseInfoWindow()
- {
- struct MenuItem *SomeItem;
-
- if(SomeItem = FindThisItem(MEN_STATUS_WINDOW))
- SomeItem -> Flags &= ~CHECKED;
-
- if(InfoGadgetList)
- {
- FreeGadgets(InfoGadgetList);
-
- InfoGadgetList = NULL;
- }
-
- if(InfoWindow)
- {
- InfoWindowLeft = InfoWindow -> LeftEdge;
- InfoWindowTop = InfoWindow -> TopEdge;
-
- ClearMenuStrip(InfoWindow);
-
- CloseWindowSafely(InfoWindow);
-
- InfoWindow = NULL;
- }
- }
-
- /* OpenInfoWindow():
- *
- * Open the info window.
- */
-
- VOID
- OpenInfoWindow()
- {
- if(!InfoWindow)
- {
- if(CreateAllGadgets(&InfoGadgetArray[0],&InfoGadgetList,VisualInfo,Screen -> WBorTop + Screen -> Font -> ta_YSize + 1))
- {
- if(InfoWindowLeft == -1)
- {
- InfoWindowLeft = Screen -> Width - SZ_GetWindowWidth();
- InfoWindowTop = (Screen -> 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, Screen,
-
- WA_Title, LocaleString(MSG_INFOWINDOW_STATUS_INFORMATION_TXT),
- TAG_DONE))
- {
- struct MenuItem *SomeItem;
-
- if(SomeItem = FindThisItem(MEN_STATUS_WINDOW))
- SomeItem -> Flags |= CHECKED;
-
- 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);
-
- InfoWindow -> Flags &= ~WFLG_RMBTRAP;
-
- RefreshInfoWindow();
- }
- }
- }
- }
-