home *** CD-ROM | disk | FTP | other *** search
/ Otherware / Otherware_1_SB_Development.iso / amiga / comms / comprgs / term232.lha / Source_Code / termSource / termStatus.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-08-18  |  7.1 KB  |  308 lines

  1. /*
  2. **    $Id: termStatus.c,v 1.4 92/08/15 20:15:18 olsen Sta Locker: olsen $
  3. **    $Revision: 1.4 $
  4. **    $Date: 92/08/15 20:15:18 $
  5. **
  6. **    Status information window support routines
  7. **
  8. **    Copyright ⌐ 1990-1992 by Olaf `Olsen' Barthel & MXM
  9. **        All Rights Reserved
  10. */
  11.  
  12. #include "termGlobal.h"
  13.  
  14. enum    {    GAD_SESSION,GAD_BYTES_IN,GAD_BYTES_OUT,GAD_CONNECT_STRING,GAD_SCREEN_SIZE,GAD_BUFFER_SIZE,GAD_MEMORY };
  15.  
  16. STATIC struct Gadget    *InfoGadgetArray[GAD_MEMORY + 1];
  17. STATIC struct Gadget    *InfoGadgetList;
  18. STATIC LONG         InfoWindowLeft    = -1,
  19.              InfoWindowTop    = -1;
  20.  
  21. STATIC struct Gadget *
  22. CreateAllGadgets(struct Gadget **GadgetArray,struct Gadget **GadgetList,APTR VisualInfo,UWORD TopEdge)
  23. {
  24.     struct Gadget        *Gadget;
  25.     struct NewGadget     NewGadget;
  26.     UWORD             Counter = 0;
  27.  
  28.     SZ_SizeSetup(Screen,&UserFont,TRUE);
  29.  
  30.     memset(&NewGadget,0,sizeof(struct NewGadget));
  31.  
  32.     if(Gadget = CreateContext(GadgetList))
  33.     {
  34.         UBYTE        DummyBuffer[256],
  35.                 Time[30],
  36.                 Date[30];
  37.         struct DateTime    DateTime;
  38.         LONG        Width,DummyWidth;
  39.  
  40.         DateTime . dat_Stamp    = SessionStart;
  41.         DateTime . dat_Format    = FORMAT_DOS;
  42.         DateTime . dat_Flags    = 0;
  43.         DateTime . dat_StrDay    = NULL;
  44.         DateTime . dat_StrDate    = Date;
  45.         DateTime . dat_StrTime    = Time;
  46.  
  47.         if(DateToStr(&DateTime))
  48.             SPrintf(DummyBuffer,"%s %s",Date,Time);
  49.         else
  50.             strcpy(DummyBuffer,"-");
  51.  
  52.         SZ_AddLeftOffset(SZ_LeftOffsetDelta(MSG_INFOWINDOW_SESSION_START_GAD,MSG_INFOWINDOW_FREE_MEMORY_GAD));
  53.  
  54.         Width = strlen(BaudBuffer);
  55.  
  56.         if(Width > 60)
  57.             Width = 60;
  58.  
  59.         DummyWidth = strlen(DummyBuffer);
  60.  
  61.         if(DummyWidth > Width)
  62.             Width = DummyWidth;
  63.  
  64.         SZ_SetWidth(SZ_Width(TEXT_KIND,NULL,Width,NULL));
  65.  
  66.         NewGadget . ng_GadgetText    = LocaleString(MSG_INFOWINDOW_SESSION_START_GAD);
  67.         NewGadget . ng_TextAttr        = &UserFont;
  68.         NewGadget . ng_VisualInfo    = VisualInfo;
  69.         NewGadget . ng_GadgetID        = Counter;
  70.         NewGadget . ng_Flags        = 0;
  71.  
  72.         GadgetArray[Counter++] = Gadget = CreateGadget(TEXT_KIND,Gadget,&NewGadget,
  73.             SZ_Adjust,        TRUE,
  74.             SZ_AutoWidth,        TRUE,
  75.  
  76.             GTTX_Text,        DummyBuffer,
  77.             GTTX_CopyText,        TRUE,
  78.             GTTX_Border,        TRUE,
  79.         TAG_DONE);
  80.  
  81.         NewGadget . ng_GadgetText    = LocaleString(MSG_INFOWINDOW_BYTES_RECEIVED_GAD);
  82.         NewGadget . ng_GadgetID        = Counter;
  83.  
  84.         GadgetArray[Counter++] = Gadget = CreateGadget(TEXT_KIND,Gadget,&NewGadget,
  85.             SZ_Adjust,        TRUE,
  86.             SZ_AutoWidth,        TRUE,
  87.             SZ_AlignExtra,        TRUE,
  88.  
  89.             GTTX_Border,        TRUE,
  90.         TAG_DONE);
  91.  
  92.         NewGadget . ng_GadgetText    = LocaleString(MSG_INFOWINDOW_BYTES_SENT_GAD);
  93.         NewGadget . ng_GadgetID        = Counter;
  94.  
  95.         GadgetArray[Counter++] = Gadget = CreateGadget(TEXT_KIND,Gadget,&NewGadget,
  96.             SZ_Adjust,        TRUE,
  97.             SZ_AutoWidth,        TRUE,
  98.  
  99.             GTTX_Border,        TRUE,
  100.         TAG_DONE);
  101.  
  102.         NewGadget . ng_GadgetText    = LocaleString(MSG_INFOWINDOW_CONNECTION_MESSAGE_GAD);
  103.         NewGadget . ng_GadgetID        = Counter;
  104.  
  105.         GadgetArray[Counter++] = Gadget = CreateGadget(TEXT_KIND,Gadget,&NewGadget,
  106.             SZ_Adjust,        TRUE,
  107.             SZ_AutoWidth,        TRUE,
  108.  
  109.             GTTX_Text,        BaudBuffer[0] ? BaudBuffer : "-",
  110.             GTTX_CopyText,        TRUE,
  111.             GTTX_Border,        TRUE,
  112.         TAG_DONE);
  113.  
  114.         NewGadget . ng_GadgetText    = LocaleString(MSG_INFOWINDOW_SCREEN_SIZE_GAD);
  115.         NewGadget . ng_GadgetID        = Counter;
  116.  
  117.         GadgetArray[Counter++] = Gadget = CreateGadget(TEXT_KIND,Gadget,&NewGadget,
  118.             SZ_Adjust,        TRUE,
  119.             SZ_AutoWidth,        TRUE,
  120.             SZ_AlignExtra,        TRUE,
  121.  
  122.             GTTX_Border,        TRUE,
  123.         TAG_DONE);
  124.  
  125.         NewGadget . ng_GadgetText    = LocaleString(MSG_INFOWINDOW_BUFFER_SIZE_GAD);
  126.         NewGadget . ng_GadgetID        = Counter;
  127.  
  128.         GadgetArray[Counter++] = Gadget = CreateGadget(TEXT_KIND,Gadget,&NewGadget,
  129.             SZ_Adjust,        TRUE,
  130.             SZ_AutoWidth,        TRUE,
  131.             SZ_AlignExtra,        TRUE,
  132.  
  133.             GTTX_Border,        TRUE,
  134.         TAG_DONE);
  135.  
  136.         NewGadget . ng_GadgetText    = LocaleString(MSG_INFOWINDOW_FREE_MEMORY_GAD);
  137.         NewGadget . ng_GadgetID        = Counter;
  138.  
  139.         GadgetArray[Counter++] = Gadget = CreateGadget(TEXT_KIND,Gadget,&NewGadget,
  140.             SZ_Adjust,        TRUE,
  141.             SZ_AutoWidth,        TRUE,
  142.  
  143.             GTTX_Border,        TRUE,
  144.         TAG_DONE);
  145.     }
  146.  
  147.     return(Gadget);
  148. }
  149.  
  150.     /* RefreshInfoWindow():
  151.      *
  152.      *    Refresh, i.e. redraw, the contents of the info window.
  153.      */
  154.  
  155. VOID
  156. RefreshInfoWindow()
  157. {
  158.     if(InfoWindow)
  159.     {
  160.         extern struct LocaleBase    *LocaleBase;
  161.         UBYTE                 DummyBuffer[256];
  162.  
  163.         if(LocaleBase)
  164.             SPrintf(DummyBuffer,"%lD",BytesIn);
  165.         else
  166.             SPrintf(DummyBuffer,"%ld",BytesIn);
  167.  
  168.         GT_SetGadgetAttrs(InfoGadgetArray[GAD_BYTES_IN],InfoWindow,NULL,
  169.             GTTX_Text,    DummyBuffer,
  170.         TAG_DONE);
  171.  
  172.         if(LocaleBase)
  173.             SPrintf(DummyBuffer,"%lD",BytesOut);
  174.         else
  175.             SPrintf(DummyBuffer,"%ld",BytesOut);
  176.  
  177.         GT_SetGadgetAttrs(InfoGadgetArray[GAD_BYTES_OUT],InfoWindow,NULL,
  178.             GTTX_Text,    DummyBuffer,
  179.         TAG_DONE);
  180.  
  181.         if(XEmulatorBase && XEM_IO)
  182.         {
  183.             if(XEmulatorBase -> lib_Version >= 4)
  184.             {
  185.                 ULONG Result = XEmulatorInfo(XEM_IO,XEMI_CONSOLE_DIMENSIONS);
  186.  
  187.                 SPrintf(DummyBuffer,"%ld ╫ %ld",XEMI_EXTRACT_COLUMNS(Result),XEMI_EXTRACT_LINES(Result));
  188.             }
  189.             else
  190.                 strcpy(DummyBuffer,"???");
  191.         }
  192.         else
  193.             SPrintf(DummyBuffer,"%ld ╫ %ld",LastColumn + 1,LastLine + 1);
  194.  
  195.         GT_SetGadgetAttrs(InfoGadgetArray[GAD_SCREEN_SIZE],InfoWindow,NULL,
  196.             GTTX_Text,    DummyBuffer,
  197.         TAG_DONE);
  198.  
  199.         if(LocaleBase)
  200.             SPrintf(DummyBuffer,"%lD",BufferSpace);
  201.         else
  202.             SPrintf(DummyBuffer,"%ld",BufferSpace);
  203.  
  204.         GT_SetGadgetAttrs(InfoGadgetArray[GAD_BUFFER_SIZE],InfoWindow,NULL,
  205.             GTTX_Text,    DummyBuffer,
  206.         TAG_DONE);
  207.  
  208.         if(LocaleBase)
  209.             SPrintf(DummyBuffer,"%lD",AvailMem(MEMF_ANY));
  210.         else
  211.             SPrintf(DummyBuffer,"%ld",AvailMem(MEMF_ANY));
  212.  
  213.         GT_SetGadgetAttrs(InfoGadgetArray[GAD_MEMORY],InfoWindow,NULL,
  214.             GTTX_Text,    DummyBuffer,
  215.         TAG_DONE);
  216.     }
  217. }
  218.  
  219.     /* CloseInfoWindow():
  220.      *
  221.      *    Close the info window.
  222.      */
  223.  
  224. VOID
  225. CloseInfoWindow()
  226. {
  227.     struct MenuItem *SomeItem;
  228.  
  229.     if(SomeItem = FindThisItem(MEN_STATUS_WINDOW))
  230.         SomeItem -> Flags &= ~CHECKED;
  231.  
  232.     if(InfoGadgetList)
  233.     {
  234.         FreeGadgets(InfoGadgetList);
  235.  
  236.         InfoGadgetList = NULL;
  237.     }
  238.  
  239.     if(InfoWindow)
  240.     {
  241.         InfoWindowLeft    = InfoWindow -> LeftEdge;
  242.         InfoWindowTop    = InfoWindow -> TopEdge;
  243.  
  244.         ClearMenuStrip(InfoWindow);
  245.  
  246.         CloseWindowSafely(InfoWindow);
  247.  
  248.         InfoWindow = NULL;
  249.     }
  250. }
  251.  
  252.     /* OpenInfoWindow():
  253.      *
  254.      *    Open the info window.
  255.      */
  256.  
  257. VOID
  258. OpenInfoWindow()
  259. {
  260.     if(!InfoWindow)
  261.     {
  262.         if(CreateAllGadgets(&InfoGadgetArray[0],&InfoGadgetList,VisualInfo,Screen -> WBorTop + Screen -> Font -> ta_YSize + 1))
  263.         {
  264.             if(InfoWindowLeft == -1)
  265.             {
  266.                 InfoWindowLeft    = Screen -> Width - SZ_GetWindowWidth();
  267.                 InfoWindowTop    = (Screen -> Height - SZ_GetWindowHeight()) / 2;
  268.             }
  269.  
  270.             if(InfoWindow = OpenWindowTags(NULL,
  271.                 WA_Left,        InfoWindowLeft,
  272.                 WA_Top,            InfoWindowTop,
  273.                 WA_Width,        SZ_GetWindowWidth(),
  274.                 WA_Height,        SZ_GetWindowHeight(),
  275.  
  276.                 WA_DragBar,        TRUE,
  277.                 WA_DepthGadget,        TRUE,
  278.                 WA_CloseGadget,        TRUE,
  279.                 WA_RMBTrap,        TRUE,
  280.                 WA_DepthGadget,        TRUE,
  281.                 WA_CustomScreen,    Screen,
  282.  
  283.                 WA_Title,        LocaleString(MSG_INFOWINDOW_STATUS_INFORMATION_TXT),
  284.             TAG_DONE))
  285.             {
  286.                 struct MenuItem *SomeItem;
  287.  
  288.                 if(SomeItem = FindThisItem(MEN_STATUS_WINDOW))
  289.                     SomeItem -> Flags |= CHECKED;
  290.  
  291.                 AddGList(InfoWindow,InfoGadgetList,(UWORD)-1,(UWORD)-1,NULL);
  292.                 RefreshGList(InfoGadgetList,InfoWindow,NULL,(UWORD)-1);
  293.                 GT_RefreshWindow(InfoWindow,NULL);
  294.  
  295.                 InfoWindow -> UserPort = Window -> UserPort;
  296.  
  297.                 ModifyIDCMP(InfoWindow,Window -> IDCMPFlags);
  298.  
  299.                 SetMenuStrip(InfoWindow,Menu);
  300.  
  301.                 InfoWindow -> Flags &= ~WFLG_RMBTRAP;
  302.  
  303.                 RefreshInfoWindow();
  304.             }
  305.         }
  306.     }
  307. }
  308.