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

  1. /*
  2. **    $Id: CommandPanel.c,v 1.6 92/08/15 20:12:25 olsen Sta Locker: olsen $
  3. **    $Revision: 1.6 $
  4. **    $Date: 92/08/15 20:12:25 $
  5. **
  6. **    Editing panel for command sequences
  7. **
  8. **    Copyright ⌐ 1990-1992 by Olaf `Olsen' Barthel & MXM
  9. **        All Rights Reserved
  10. */
  11.  
  12. #include "termGlobal.h"
  13.  
  14. enum    {    GAD_STARTUP,GAD_LOGOFF,GAD_UPLOAD,GAD_DOWNLOAD,GAD_USE,GAD_CANCEL };
  15.  
  16. STATIC struct Gadget *
  17. CreateAllGadgets(struct Configuration *Config,struct Gadget **GadgetArray,struct Gadget **GadgetList,APTR VisualInfo,UWORD TopEdge)
  18. {
  19.     struct Gadget        *Gadget;
  20.     struct NewGadget     NewGadget;
  21.     UWORD             Counter = 0;
  22.  
  23.     SZ_SizeSetup(Screen,&UserFont,TRUE);
  24.  
  25.     memset(&NewGadget,0,sizeof(struct NewGadget));
  26.  
  27.     if(Gadget = CreateContext(GadgetList))
  28.     {
  29.         SZ_AddLeftOffset(SZ_LeftOffsetDelta(MSG_COMMANDPANEL_STARTUP_LOGIN_MACRO_GAD,MSG_COMMANDPANEL_DOWNLOAD_MACRO_GAD));
  30.  
  31.         SZ_ResetMaxWidth();
  32.  
  33.         SZ_UpdateMaxWidth(STRING_KIND,NULL,30,NULL);
  34.  
  35.         SZ_SetWidth(SZ_ResetMaxWidth());
  36.  
  37.         NewGadget . ng_GadgetText    = LocaleString(MSG_COMMANDPANEL_STARTUP_LOGIN_MACRO_GAD);
  38.         NewGadget . ng_TextAttr        = &UserFont;
  39.         NewGadget . ng_VisualInfo    = VisualInfo;
  40.         NewGadget . ng_GadgetID        = Counter;
  41.  
  42.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  43.             SZ_Adjust,    TRUE,
  44.             SZ_AutoWidth,    TRUE,
  45.  
  46.             GT_Underscore,    '_',
  47.             GTST_MaxChars,    255,
  48.             GTST_String,    Config -> StartupMacro,
  49.             GTST_EditHook,    &CommandHook,
  50.             GA_Immediate,    TRUE,
  51.         TAG_DONE);
  52.  
  53.         NewGadget . ng_GadgetText    = LocaleString(MSG_COMMANDPANEL_LOGOFF_MACRO_GAD);
  54.         NewGadget . ng_GadgetID        = Counter;
  55.  
  56.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  57.             SZ_Adjust,    TRUE,
  58.             SZ_AutoWidth,    TRUE,
  59.  
  60.             GT_Underscore,    '_',
  61.             GTST_MaxChars,    255,
  62.             GTST_String,    Config -> LogoffMacro,
  63.             GTST_EditHook,    &CommandHook,
  64.             GA_Immediate,    TRUE,
  65.         TAG_DONE);
  66.  
  67.         NewGadget . ng_GadgetText    = LocaleString(MSG_COMMANDPANEL_UPLOAD_MACRO_GAD);
  68.         NewGadget . ng_GadgetID        = Counter;
  69.  
  70.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  71.             SZ_Adjust,    TRUE,
  72.             SZ_AutoWidth,    TRUE,
  73.  
  74.             GT_Underscore,    '_',
  75.             GTST_MaxChars,    255,
  76.             GTST_String,    Config -> UploadMacro,
  77.             GTST_EditHook,    &CommandHook,
  78.             GA_Immediate,    TRUE,
  79.         TAG_DONE);
  80.  
  81.         NewGadget . ng_GadgetText    = LocaleString(MSG_COMMANDPANEL_DOWNLOAD_MACRO_GAD);
  82.         NewGadget . ng_GadgetID        = Counter;
  83.  
  84.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  85.             SZ_Adjust,    TRUE,
  86.             SZ_AutoWidth,    TRUE,
  87.  
  88.             GT_Underscore,    '_',
  89.             GTST_MaxChars,    255,
  90.             GTST_String,    Config -> DownloadMacro,
  91.             GTST_EditHook,    &CommandHook,
  92.             GA_Immediate,    TRUE,
  93.         TAG_DONE);
  94.  
  95.         SZ_UpdateMaxWidth(BUTTON_KIND,LocaleString(MSG_GLOBAL_USE_GAD),0,NULL);
  96.         SZ_UpdateMaxWidth(BUTTON_KIND,LocaleString(MSG_GLOBAL_CANCEL_GAD),0,NULL);
  97.  
  98.         SZ_SetWidth(SZ_ResetMaxWidth());
  99.  
  100.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_USE_GAD);
  101.         NewGadget . ng_GadgetID        = Counter;
  102.         NewGadget . ng_Flags        = 0;
  103.  
  104.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  105.             SZ_Adjust,    TRUE,
  106.             SZ_AutoWidth,    TRUE,
  107.             SZ_AlignExtra,    TRUE,
  108.             SZ_AlignLeft,    TRUE,
  109.             SZ_AlignBottom,    TRUE,
  110.  
  111.             GT_Underscore,    '_',
  112.         TAG_DONE);
  113.  
  114.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_CANCEL_GAD);
  115.         NewGadget . ng_GadgetID        = Counter;
  116.  
  117.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  118.             SZ_Adjust,    TRUE,
  119.             SZ_AutoWidth,    TRUE,
  120.             SZ_AlignRight,    TRUE,
  121.  
  122.             GT_Underscore,    '_',
  123.         TAG_DONE);
  124.     }
  125.  
  126.     return(Gadget);
  127. }
  128.  
  129. VOID
  130. CommandPanel(struct Configuration *Config)
  131. {
  132.     struct Window    *PanelWindow;
  133.     struct Gadget    *GadgetList = NULL;
  134.     struct Gadget    *GadgetArray[GAD_CANCEL + 1];
  135.  
  136.     CopyMem(Config,&PrivateConfig,sizeof(struct Configuration));
  137.  
  138.     if(CreateAllGadgets(Config,&GadgetArray[0],&GadgetList,VisualInfo,Screen -> WBorTop + Screen -> Font -> ta_YSize + 1))
  139.     {
  140.         if(PanelWindow = OpenWindowTags(NULL,
  141.             WA_Left,    (Screen -> Width    - SZ_GetWindowWidth())    / 2,
  142.             WA_Top,        (Screen -> Height    - SZ_GetWindowHeight())    / 2,
  143.             WA_Width,    SZ_GetWindowWidth(),
  144.             WA_Height,    SZ_GetWindowHeight(),
  145.  
  146.             WA_Activate,    TRUE,
  147.             WA_DragBar,    TRUE,
  148.             WA_DepthGadget,    TRUE,
  149.             WA_RMBTrap,    TRUE,
  150.             WA_DepthGadget,    TRUE,
  151.             WA_CloseGadget,    TRUE,
  152.             WA_CustomScreen,Screen,
  153.  
  154.             WA_IDCMP,    IDCMP_GADGETDOWN | IDCMP_ACTIVEWINDOW | IDCMP_CLOSEWINDOW | IDCMP_VANILLAKEY | BUTTONIDCMP | STRINGIDCMP,
  155.  
  156.             WA_Title,    LocaleString(MSG_COMMANDPANEL_COMMAND_PREFERENCES_GAD),
  157.         TAG_DONE))
  158.         {
  159.             struct IntuiMessage    *Massage;
  160.             ULONG             Class,Code;
  161.             struct Gadget        *Gadget;
  162.             BYTE             Terminated = FALSE;
  163.  
  164.             PushWindow(PanelWindow);
  165.  
  166.             AddGList(PanelWindow,GadgetList,(UWORD)-1,(UWORD)-1,NULL);
  167.             RefreshGList(GadgetList,PanelWindow,NULL,(UWORD)-1);
  168.             GT_RefreshWindow(PanelWindow,NULL);
  169.  
  170.             ActiveGadget = NULL;
  171.  
  172.             while(!Terminated)
  173.             {
  174.                 WaitPort(PanelWindow -> UserPort);
  175.  
  176.                 while(!Terminated && (Massage = (struct IntuiMessage *)GT_GetIMsg(PanelWindow -> UserPort)))
  177.                 {
  178.                     Class    = Massage -> Class;
  179.                     Code    = Massage -> Code;
  180.                     Gadget    = (struct Gadget *)Massage -> IAddress;
  181.  
  182.                     GT_ReplyIMsg(Massage);
  183.  
  184.                     if(Class == IDCMP_VANILLAKEY)
  185.                         KeySelect(GadgetArray,GAD_CANCEL,Code,PanelWindow,&Gadget,&Class,&Code);
  186.  
  187.                     if(Class == IDCMP_ACTIVEWINDOW && ActiveGadget)
  188.                         ActivateGadget(ActiveGadget,PanelWindow,NULL);
  189.  
  190.                     if(Class == IDCMP_GADGETDOWN)
  191.                     {
  192.                         if((Gadget -> GadgetType & GTYP_GTYPEMASK) == GTYP_STRGADGET)
  193.                             ActiveGadget = Gadget;
  194.                     }
  195.  
  196.                     if(Class == IDCMP_CLOSEWINDOW)
  197.                         Terminated = TRUE;
  198.  
  199.                     if(Class == IDCMP_GADGETUP)
  200.                     {
  201.                         switch(Gadget -> GadgetID)
  202.                         {
  203.                             case GAD_USE:        Terminated = TRUE;
  204.  
  205.                                         strcpy(Config -> StartupMacro,    GT_STRING(GadgetArray[GAD_STARTUP]));
  206.                                         strcpy(Config -> LogoffMacro,    GT_STRING(GadgetArray[GAD_LOGOFF]));
  207.                                         strcpy(Config -> UploadMacro,    GT_STRING(GadgetArray[GAD_UPLOAD]));
  208.                                         strcpy(Config -> DownloadMacro,    GT_STRING(GadgetArray[GAD_DOWNLOAD]));
  209.  
  210.                                         break;
  211.  
  212.                             case GAD_CANCEL:    Terminated = TRUE;
  213.  
  214.                                         break;
  215.  
  216.                             default:        break;
  217.                         }
  218.                     }
  219.                 }
  220.             }
  221.  
  222.             RemoveGList(PanelWindow,GadgetList,(UWORD)-1);
  223.  
  224.             PopWindow();
  225.  
  226.             CloseWindow(PanelWindow);
  227.         }
  228.     }
  229.  
  230.     FreeGadgets(GadgetList);
  231. }
  232.