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 / UploadPanel.c < prev    next >
C/C++ Source or Header  |  1991-11-01  |  5KB  |  206 lines

  1. /* $Revision Header * Header built automatically - do not edit! *************
  2.  *
  3.  *    (C) Copyright 1991 by Olaf 'Olsen' Barthel & MXM
  4.  *
  5.  *    Name .....: UploadPanel.c
  6.  *    Created ..: Friday 03-May-91 17:43
  7.  *    Revision .: 0
  8.  *
  9.  *    Date            Author          Comment
  10.  *    =========       ========        ====================
  11.  *    03-May-91       Olsen           Created this file!
  12.  *
  13.  * $Revision Header ********************************************************/
  14.  
  15. #include "TermGlobal.h"
  16.  
  17. STATIC struct NewMenu UploadMenu[] =
  18. {
  19.     { NM_TITLE, "Project",         0 , 0, 0, (APTR)0},
  20.     {  NM_ITEM, "Text Upload",    "T", 0, 0, (APTR)UPLOAD_TEXT},
  21.     {  NM_ITEM, "Binary Upload",    "B", 0, 0, (APTR)UPLOAD_BINARY},
  22.     {  NM_ITEM, NM_BARLABEL,     0 , 0, 0, (APTR)0},
  23.     {  NM_ITEM, "Ignore",        "I", 0, 0, (APTR)UPLOAD_IGNORE},
  24.     {  NM_ITEM, "Abort",        "A", 0, 0, (APTR)UPLOAD_ABORT},
  25.     { NM_END, 0,             0 , 0, 0, (APTR)0}
  26. };
  27.  
  28. #define WIDTH    (236)
  29. #define HEIGHT    (67)
  30.  
  31. STATIC struct Gadget *
  32. CreateAllGadgets(struct Gadget **GadgetArray,struct Gadget **GadgetList,APTR VisualInfo,UWORD TopEdge)
  33. {
  34.     struct Gadget        *Gadget;
  35.     struct NewGadget     NewGadget;
  36.     UWORD             Counter = 0;
  37.  
  38.     memset(&NewGadget,0,sizeof(struct NewGadget));
  39.  
  40.     if(Gadget = CreateContext(GadgetList))
  41.     {
  42.         NewGadget . ng_Width        = 216;
  43.         NewGadget . ng_Height        = 12;
  44.         NewGadget . ng_GadgetText    = NULL;
  45.         NewGadget . ng_TextAttr        = &DefaultFont;
  46.         NewGadget . ng_VisualInfo    = VisualInfo;
  47.         NewGadget . ng_GadgetID        = Counter;
  48.         NewGadget . ng_Flags        = 0;
  49.         NewGadget . ng_LeftEdge        = 10;
  50.         NewGadget . ng_TopEdge        = 1 + TopEdge;
  51.  
  52.         GadgetArray[Counter++] = Gadget = CreateGadget(TEXT_KIND,Gadget,&NewGadget,
  53.             GTTX_Text,        "Select ZModem Upload Type:",
  54.             GTTX_Border,        TRUE,
  55.         TAG_DONE);
  56.  
  57.         NewGadget . ng_GadgetText    = "_Text Upload";
  58.         NewGadget . ng_GadgetID        = Counter;
  59.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  60.  
  61.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  62.             GT_Underscore,    '_',
  63.         TAG_DONE);
  64.  
  65.         NewGadget . ng_GadgetText    = "_Binary Upload";
  66.         NewGadget . ng_GadgetID        = Counter;
  67.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  68.  
  69.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  70.             GT_Underscore,    '_',
  71.         TAG_DONE);
  72.  
  73.         NewGadget . ng_Width        = 52;
  74.         NewGadget . ng_Height        = 12;
  75.         NewGadget . ng_GadgetText    = "_Ignore";
  76.         NewGadget . ng_GadgetID        = Counter;
  77.         NewGadget . ng_Flags        = 0;
  78.         NewGadget . ng_LeftEdge        = 10;
  79.         NewGadget . ng_TopEdge        = HEIGHT - 3 - NewGadget . ng_Height;
  80.  
  81.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  82.             GT_Underscore,    '_',
  83.         TAG_DONE);
  84.  
  85.         NewGadget . ng_GadgetText    = "_Abort";
  86.         NewGadget . ng_GadgetID        = Counter;
  87.         NewGadget . ng_LeftEdge        = WIDTH - 10 - NewGadget . ng_Width;
  88.  
  89.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  90.             GT_Underscore,    '_',
  91.         TAG_DONE);
  92.     }
  93.  
  94.     return(Gadget);
  95. }
  96.  
  97. BYTE
  98. UploadPanel()
  99. {
  100.     struct Window    *PanelWindow;
  101.     struct Menu    *PanelMenu;
  102.     struct Gadget    *GadgetList = NULL;
  103.     struct Gadget    *GadgetArray[5];
  104.     BYTE         Selection;
  105.  
  106.     if(CreateAllGadgets(&GadgetArray[0],&GadgetList,VisualInfo,Screen -> WBorTop + Screen -> Font -> ta_YSize + 1))
  107.     {
  108.         if(PanelMenu = CreateMenus(UploadMenu,
  109.             GTMN_FrontPen, 0,
  110.         TAG_DONE))
  111.         {
  112.             if(LayoutMenus(PanelMenu,VisualInfo,
  113.                 GTMN_TextAttr,&DefaultFont,
  114.             TAG_DONE))
  115.             {
  116.                 if(PanelWindow = OpenWindowTags(NULL,
  117.                     WA_Left,    (Screen -> Width - WIDTH) >> 1,
  118.                     WA_Top,        (Screen -> Height - HEIGHT) >> 1,
  119.                     WA_Width,    WIDTH,
  120.                     WA_Height,    HEIGHT,
  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_MENUPICK | BUTTONIDCMP,
  130.  
  131.                     WA_Title,    "Upload Type",
  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.                     SetMenuStrip(PanelWindow,PanelMenu);
  146.  
  147.                     PanelWindow -> Flags &= ~WFLG_RMBTRAP;
  148.  
  149.                     while(!Terminated)
  150.                     {
  151.                         WaitPort(PanelWindow -> UserPort);
  152.  
  153.                         while(!Terminated && (Massage = (struct IntuiMessage *)GT_GetIMsg(PanelWindow -> UserPort)))
  154.                         {
  155.                             Class    = Massage -> Class;
  156.                             Code    = Massage -> Code;
  157.                             Gadget    = (struct Gadget *)Massage -> IAddress;
  158.  
  159.                             GT_ReplyIMsg(Massage);
  160.  
  161.                             if(Class == IDCMP_MENUPICK)
  162.                             {
  163.                                 struct MenuItem *MenuItem;
  164.  
  165.                                 while(Code != MENUNULL)
  166.                                 {
  167.                                     MenuItem = ItemAddress(PanelMenu,Code);
  168.  
  169.                                     Selection = (ULONG)GTMENUITEM_USERDATA(MenuItem);
  170.  
  171.                                     Terminated = TRUE;
  172.  
  173.                                     Code = MenuItem -> NextSelect;
  174.                                 }
  175.                             }
  176.  
  177.                             if(Class == IDCMP_GADGETUP)
  178.                             {
  179.                                 Selection = Gadget -> GadgetID;
  180.  
  181.                                 Terminated = TRUE;
  182.                             }
  183.                         }
  184.                     }
  185.  
  186.                     PanelWindow -> Flags |= WFLG_RMBTRAP;
  187.  
  188.                     ClearMenuStrip(PanelWindow);
  189.  
  190.                     RemoveGList(PanelWindow,GadgetList,(UWORD)-1);
  191.  
  192.                     PopWindow();
  193.  
  194.                     CloseWindow(PanelWindow);
  195.                 }
  196.             }
  197.  
  198.             FreeMenus(PanelMenu);
  199.         }
  200.     }
  201.  
  202.     FreeGadgets(GadgetList);
  203.  
  204.     return(Selection);
  205. }
  206.