home *** CD-ROM | disk | FTP | other *** search
/ Amiga Elysian Archive / AmigaElysianArchive.iso / comm / term23_2.lha / Source_Code / termSource / UploadPanel.c < prev    next >
C/C++ Source or Header  |  1992-08-18  |  5KB  |  181 lines

  1. /*
  2. **    $Id: UploadPanel.c,v 1.7 92/08/15 20:15:40 olsen Sta Locker: olsen $
  3. **    $Revision: 1.7 $
  4. **    $Date: 92/08/15 20:15:40 $
  5. **
  6. **    ZModem auto-upload control panel support routines
  7. **
  8. **    Copyright © 1990-1992 by Olaf `Olsen' Barthel & MXM
  9. **        All Rights Reserved
  10. */
  11.  
  12. #include "termGlobal.h"
  13.  
  14. #define WIDTH    236
  15. #define HEIGHT    67
  16.  
  17. STATIC struct Gadget *
  18. CreateAllGadgets(struct Gadget **GadgetArray,struct Gadget **GadgetList,APTR VisualInfo,UWORD TopEdge)
  19. {
  20.     struct Gadget        *Gadget;
  21.     struct NewGadget     NewGadget;
  22.     UWORD             Counter = 0;
  23.  
  24.     SZ_SizeSetup(Screen,&UserFont,TRUE);
  25.  
  26.     memset(&NewGadget,0,sizeof(struct NewGadget));
  27.  
  28.     if(Gadget = CreateContext(GadgetList))
  29.     {
  30.         SZ_ResetMaxWidth();
  31.  
  32.         SZ_UpdateMaxWidth(TEXT_KIND,LocaleString(MSG_UPLOADPANEL_SELECT_ZMODEM_UPLOAD_TYPE_GAD),0,NULL);
  33.         SZ_UpdateMaxWidth(BUTTON_KIND,LocaleString(MSG_UPLOADPANEL_TEXT_UPLOAD_GAD),0,NULL);
  34.         SZ_UpdateMaxWidth(BUTTON_KIND,LocaleString(MSG_UPLOADPANEL_BINARY_UPLOAD_GAD),0,NULL);
  35.  
  36.         SZ_SetWidth(SZ_ResetMaxWidth());
  37.  
  38.         NewGadget . ng_GadgetText    = NULL;
  39.         NewGadget . ng_TextAttr        = &UserFont;
  40.         NewGadget . ng_VisualInfo    = VisualInfo;
  41.         NewGadget . ng_GadgetID        = Counter;
  42.         NewGadget . ng_Flags        = 0;
  43.  
  44.         GadgetArray[Counter++] = Gadget = CreateGadget(TEXT_KIND,Gadget,&NewGadget,
  45.             SZ_Adjust,        TRUE,
  46.             SZ_AutoWidth,        TRUE,
  47.  
  48.             GTTX_Text,        LocaleString(MSG_UPLOADPANEL_SELECT_ZMODEM_UPLOAD_TYPE_GAD),
  49.             GTTX_Border,        TRUE,
  50.         TAG_DONE);
  51.  
  52.         NewGadget . ng_GadgetText    = LocaleString(MSG_UPLOADPANEL_TEXT_UPLOAD_GAD);
  53.         NewGadget . ng_GadgetID        = Counter;
  54.  
  55.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  56.             SZ_Adjust,    TRUE,
  57.             SZ_AutoWidth,    TRUE,
  58.  
  59.             GT_Underscore,    '_',
  60.         TAG_DONE);
  61.  
  62.         NewGadget . ng_GadgetText    = LocaleString(MSG_UPLOADPANEL_BINARY_UPLOAD_GAD);
  63.         NewGadget . ng_GadgetID        = Counter;
  64.  
  65.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  66.             SZ_Adjust,    TRUE,
  67.             SZ_AutoWidth,    TRUE,
  68.  
  69.             GT_Underscore,    '_',
  70.         TAG_DONE);
  71.  
  72.         SZ_UpdateMaxWidth(BUTTON_KIND,LocaleString(MSG_UPLOADPANEL_IGNORE_GAD),0,NULL);
  73.         SZ_UpdateMaxWidth(BUTTON_KIND,LocaleString(MSG_GLOBAL_ABORT_GAD),0,NULL);
  74.  
  75.         SZ_SetWidth(SZ_ResetMaxWidth());
  76.  
  77.         NewGadget . ng_GadgetText    = LocaleString(MSG_UPLOADPANEL_IGNORE_GAD);
  78.         NewGadget . ng_GadgetID        = Counter;
  79.         NewGadget . ng_Flags        = 0;
  80.  
  81.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  82.             SZ_Adjust,    TRUE,
  83.             SZ_AutoWidth,    TRUE,
  84.             SZ_AlignExtra,    TRUE,
  85.             SZ_AlignLeft,    TRUE,
  86.             SZ_AlignBottom,    TRUE,
  87.  
  88.             GT_Underscore,    '_',
  89.         TAG_DONE);
  90.  
  91.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_ABORT_GAD);
  92.         NewGadget . ng_GadgetID        = Counter;
  93.  
  94.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  95.             SZ_Adjust,    TRUE,
  96.             SZ_AutoWidth,    TRUE,
  97.             SZ_AlignRight,    TRUE,
  98.  
  99.             GT_Underscore,    '_',
  100.         TAG_DONE);
  101.     }
  102.  
  103.     return(Gadget);
  104. }
  105.  
  106. BYTE
  107. UploadPanel()
  108. {
  109.     struct Window    *PanelWindow;
  110.     struct Gadget    *GadgetList = NULL;
  111.     struct Gadget    *GadgetArray[5];
  112.     BYTE         Selection;
  113.  
  114.     if(CreateAllGadgets(&GadgetArray[0],&GadgetList,VisualInfo,Screen -> WBorTop + Screen -> Font -> ta_YSize + 1))
  115.     {
  116.         if(PanelWindow = OpenWindowTags(NULL,
  117.             WA_Left,    (Screen -> Width    - SZ_GetWindowWidth())    / 2,
  118.             WA_Top,        (Screen -> Height    - SZ_GetWindowHeight())    / 2,
  119.             WA_Width,    SZ_GetWindowWidth(),
  120.             WA_Height,    SZ_GetWindowHeight(),
  121.  
  122.             WA_Activate,    TRUE,
  123.             WA_DragBar,    TRUE,
  124.             WA_DepthGadget,    TRUE,
  125.             WA_RMBTrap,    TRUE,
  126.             WA_DepthGadget,    TRUE,
  127.             WA_CustomScreen,Screen,
  128.  
  129.             WA_IDCMP,    IDCMP_VANILLAKEY | BUTTONIDCMP,
  130.  
  131.             WA_Title,    LocaleString(MSG_UPLOADPANEL_UPLOAD_TYPE_TXT),
  132.         TAG_DONE))
  133.         {
  134.             struct IntuiMessage    *Massage;
  135.             ULONG             Class,Code;
  136.             struct Gadget        *Gadget;
  137.             BYTE             Terminated = FALSE;
  138.  
  139.             PushWindow(PanelWindow);
  140.  
  141.             AddGList(PanelWindow,GadgetList,(UWORD)-1,(UWORD)-1,NULL);
  142.             RefreshGList(GadgetList,PanelWindow,NULL,(UWORD)-1);
  143.             GT_RefreshWindow(PanelWindow,NULL);
  144.  
  145.             while(!Terminated)
  146.             {
  147.                 WaitPort(PanelWindow -> UserPort);
  148.  
  149.                 while(!Terminated && (Massage = (struct IntuiMessage *)GT_GetIMsg(PanelWindow -> UserPort)))
  150.                 {
  151.                     Class    = Massage -> Class;
  152.                     Code    = Massage -> Code;
  153.                     Gadget    = (struct Gadget *)Massage -> IAddress;
  154.  
  155.                     GT_ReplyIMsg(Massage);
  156.  
  157.                     if(Class == IDCMP_VANILLAKEY)
  158.                         KeySelect(GadgetArray,4,Code,PanelWindow,&Gadget,&Class,&Code);
  159.  
  160.                     if(Class == IDCMP_GADGETUP)
  161.                     {
  162.                         Selection = Gadget -> GadgetID;
  163.  
  164.                         Terminated = TRUE;
  165.                     }
  166.                 }
  167.             }
  168.  
  169.             RemoveGList(PanelWindow,GadgetList,(UWORD)-1);
  170.  
  171.             PopWindow();
  172.  
  173.             CloseWindow(PanelWindow);
  174.         }
  175.     }
  176.  
  177.     FreeGadgets(GadgetList);
  178.  
  179.     return(Selection);
  180. }
  181.