home *** CD-ROM | disk | FTP | other *** search
/ Amiga Elysian Archive / AmigaElysianArchive.iso / comm / term33so.lha / CommandPanel.c < prev    next >
C/C++ Source or Header  |  1993-04-30  |  7KB  |  245 lines

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