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

  1. /*
  2. **    ModemPanel.c
  3. **
  4. **    Editing panel for modem configuration
  5. **
  6. **    Copyright © 1990-1993 by Olaf `Olsen' Barthel & MXM
  7. **        All Rights Reserved
  8. */
  9.  
  10. #include "termGlobal.h"
  11.  
  12. enum    {    GAD_MODEMINIT,GAD_MODEMEXIT,GAD_MODEMHANGUP,GAD_DIALPREFIX,GAD_DIALSUFFIX,
  13.         GAD_NOCARRIER,GAD_NODIALTONE,GAD_CONNECT,GAD_VOICE,GAD_RING,GAD_BUSY,GAD_OK,GAD_ERROR,
  14.         GAD_REDIALDELAY,GAD_DIALRETRIES,GAD_DIALTIMEOUT,GAD_REDIAL,GAD_AUTOBAUD,GAD_DROPDTR,
  15.         GAD_NOCARRIER_IS_BUSY,GAD_CONNECT_LIMIT,GAD_LIMIT_MACRO,GAD_SELECT_MACRO,
  16.         GAD_USE,GAD_CANCEL,GAD_DEFAULT };
  17.  
  18. STATIC UBYTE * __saveds
  19. ShowMinutes(struct Gadget *SomeGadget,WORD Level)
  20. {
  21.     STATIC UBYTE Buffer[15];
  22.  
  23.     SPrintf(Buffer,LocaleString(MSG_GLOBAL_SHOW_MINUTES_TXT),Level / 6,(Level % 6) * 10);
  24.  
  25.     return(Buffer);
  26. }
  27.  
  28. STATIC UBYTE * __saveds
  29. ShowHours(struct Gadget *SomeGadget,WORD Level)
  30. {
  31.     STATIC UBYTE Buffer[15];
  32.  
  33.     SPrintf(Buffer,LocaleString(MSG_GLOBAL_SHOW_HOURS_TXT),Level / 60,Level % 60);
  34.  
  35.     return(Buffer);
  36. }
  37.  
  38. STATIC UBYTE * __saveds
  39. ShowSeconds(struct Gadget *SomeGadget,WORD Level)
  40. {
  41.     STATIC UBYTE Buffer[15];
  42.  
  43.     SPrintf(Buffer,LocaleString(MSG_GLOBAL_SHOW_MINUTES_TXT),Level / 60,Level % 60);
  44.  
  45.     return(Buffer);
  46. }
  47.  
  48. STATIC struct Gadget *
  49. CreateAllGadgets(struct Configuration *Config,struct Gadget **GadgetArray,struct Gadget **GadgetList,BYTE *Default)
  50. {
  51.     struct Gadget        *Gadget;
  52.     struct NewGadget     NewGadget;
  53.     UWORD             Counter = 0;
  54.  
  55.     SZ_SizeSetup(Window -> WScreen,&UserFont,TRUE);
  56.  
  57.     memset(&NewGadget,0,sizeof(struct NewGadget));
  58.  
  59.     if(Gadget = CreateContext(GadgetList))
  60.     {
  61.         SZ_AddLeftOffset(SZ_LeftOffsetDelta(MSG_MODEMPANEL_MODEM_INIT_STRING_GAD,MSG_MODEMPANEL_BUSY_STRING_GAD));
  62.  
  63.         SZ_ResetMaxWidth();
  64.  
  65.         SZ_UpdateMaxWidth(STRING_KIND,NULL,18,NULL);
  66.  
  67.         SZ_SetWidth(SZ_ResetMaxWidth());
  68.  
  69.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_MODEM_INIT_STRING_GAD);
  70.         NewGadget . ng_GadgetID        = Counter;
  71.  
  72.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  73.             SZ_Adjust,    TRUE,
  74.             SZ_AutoWidth,    TRUE,
  75.  
  76.             GTST_MaxChars,    79,
  77.             GTST_String,    Config -> ModemConfig -> ModemInit,
  78.         TAG_DONE);
  79.  
  80.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_MODEM_EXIT_STRING_GAD);
  81.         NewGadget . ng_GadgetID        = Counter;
  82.  
  83.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  84.             SZ_Adjust,    TRUE,
  85.             SZ_AutoWidth,    TRUE,
  86.  
  87.             GTST_MaxChars,    79,
  88.             GTST_String,    Config -> ModemConfig -> ModemExit,
  89.         TAG_DONE);
  90.  
  91.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_MODEM_HANGUP_STRING_GAD);
  92.         NewGadget . ng_GadgetID        = Counter;
  93.  
  94.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  95.             SZ_Adjust,    TRUE,
  96.             SZ_AutoWidth,    TRUE,
  97.  
  98.             GTST_MaxChars,    79,
  99.             GTST_String,    Config -> ModemConfig -> ModemHangup,
  100.         TAG_DONE);
  101.  
  102.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_DIAL_PREFIX_GAD);
  103.         NewGadget . ng_GadgetID        = Counter;
  104.  
  105.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  106.             SZ_Adjust,    TRUE,
  107.             SZ_AutoWidth,    TRUE,
  108.  
  109.             GTST_MaxChars,    79,
  110.             GTST_String,    Config -> ModemConfig -> DialPrefix,
  111.         TAG_DONE);
  112.  
  113.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_DIAL_SUFFIX_GAD);
  114.         NewGadget . ng_GadgetID        = Counter;
  115.  
  116.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  117.             SZ_Adjust,    TRUE,
  118.             SZ_AutoWidth,    TRUE,
  119.  
  120.             GTST_MaxChars,    79,
  121.             GTST_String,    Config -> ModemConfig -> DialSuffix,
  122.         TAG_DONE);
  123.  
  124.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_NO_CARRIER_STRING_GAD);
  125.         NewGadget . ng_GadgetID        = Counter;
  126.  
  127.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  128.             SZ_Adjust,    TRUE,
  129.             SZ_AutoWidth,    TRUE,
  130.  
  131.             GTST_MaxChars,    15,
  132.             GTST_String,    Config -> ModemConfig -> NoCarrier,
  133.         TAG_DONE);
  134.  
  135.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_NO_DIALTONE_STRING_GAD);
  136.         NewGadget . ng_GadgetID        = Counter;
  137.  
  138.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  139.             SZ_Adjust,    TRUE,
  140.             SZ_AutoWidth,    TRUE,
  141.  
  142.             GTST_MaxChars,    15,
  143.             GTST_String,    Config -> ModemConfig -> NoDialTone,
  144.         TAG_DONE);
  145.  
  146.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_CONNECT_STRING_GAD);
  147.         NewGadget . ng_GadgetID        = Counter;
  148.  
  149.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  150.             SZ_Adjust,    TRUE,
  151.             SZ_AutoWidth,    TRUE,
  152.  
  153.             GTST_MaxChars,    15,
  154.             GTST_String,    Config -> ModemConfig -> Connect,
  155.         TAG_DONE);
  156.  
  157.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_VOICE_STRING_GAD);
  158.         NewGadget . ng_GadgetID        = Counter;
  159.  
  160.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  161.             SZ_Adjust,    TRUE,
  162.             SZ_AutoWidth,    TRUE,
  163.  
  164.             GTST_MaxChars,    15,
  165.             GTST_String,    Config -> ModemConfig -> Voice,
  166.         TAG_DONE);
  167.  
  168.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_RING_STRING_GAD);
  169.         NewGadget . ng_GadgetID        = Counter;
  170.  
  171.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  172.             SZ_Adjust,    TRUE,
  173.             SZ_AutoWidth,    TRUE,
  174.  
  175.             GTST_MaxChars,    15,
  176.             GTST_String,    Config -> ModemConfig -> Ring,
  177.         TAG_DONE);
  178.  
  179.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_BUSY_STRING_GAD);
  180.         NewGadget . ng_GadgetID        = Counter;
  181.  
  182.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  183.             SZ_Adjust,    TRUE,
  184.             SZ_AutoWidth,    TRUE,
  185.  
  186.             GTST_MaxChars,    15,
  187.             GTST_String,    Config -> ModemConfig -> Busy,
  188.         TAG_DONE);
  189.  
  190.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_OK_STRING_GAD);
  191.         NewGadget . ng_GadgetID        = Counter;
  192.  
  193.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  194.             SZ_Adjust,    TRUE,
  195.             SZ_AutoWidth,    TRUE,
  196.  
  197.             GTST_MaxChars,    15,
  198.             GTST_String,    Config -> ModemConfig -> Ok,
  199.         TAG_DONE);
  200.  
  201.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_ERROR_STRING_GAD);
  202.         NewGadget . ng_GadgetID        = Counter;
  203.  
  204.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  205.             SZ_Adjust,    TRUE,
  206.             SZ_AutoWidth,    TRUE,
  207.  
  208.             GTST_MaxChars,    15,
  209.             GTST_String,    Config -> ModemConfig -> Error,
  210.         TAG_DONE);
  211.  
  212.         SZ_SetWidth(90);
  213.  
  214.         SZ_AddLeftOffset(SZ_LeftOffsetDelta(MSG_MODEMPANEL_REDIAL_DELAY_GAD,MSG_MODEMPANEL_LIMIT_MACRO_GAD));
  215.  
  216.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_REDIAL_DELAY_GAD);
  217.         NewGadget . ng_GadgetID        = Counter;
  218.  
  219.         GadgetArray[Counter++] = Gadget = CreateGadget(SLIDER_KIND,Gadget,&NewGadget,
  220.             SZ_Adjust,        TRUE,
  221.             SZ_AutoWidth,        TRUE,
  222.             SZ_NewColumn,        TRUE,
  223.  
  224.             GTSL_Min,        0,
  225.             GTSL_Max,        360,
  226.             GTSL_Level,        Config -> ModemConfig -> RedialDelay,
  227.             GTSL_DispFunc,        ShowMinutes,
  228.             GTSL_LevelFormat,    "%s",
  229.             GTSL_MaxLevelLen,    10,
  230.         TAG_DONE);
  231.  
  232.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_DIAL_RETRIES_GAD);
  233.         NewGadget . ng_GadgetID        = Counter;
  234.  
  235.         GadgetArray[Counter++] = Gadget = CreateGadget(SLIDER_KIND,Gadget,&NewGadget,
  236.             SZ_Adjust,        TRUE,
  237.             SZ_AutoWidth,        TRUE,
  238.  
  239.             GTSL_Min,        0,
  240.             GTSL_Max,        100,
  241.             GTSL_Level,        Config -> ModemConfig -> DialRetries,
  242.             GTSL_LevelFormat,    "%3ld",
  243.             GTSL_MaxLevelLen,    3,
  244.         TAG_DONE);
  245.  
  246.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_DIAL_TIMEOUT_GAD);
  247.         NewGadget . ng_GadgetID        = Counter;
  248.  
  249.         GadgetArray[Counter++] = Gadget = CreateGadget(SLIDER_KIND,Gadget,&NewGadget,
  250.             SZ_Adjust,        TRUE,
  251.             SZ_AutoWidth,        TRUE,
  252.  
  253.             GTSL_Min,        0,
  254.             GTSL_Max,        1800,
  255.             GTSL_Level,        Config -> ModemConfig -> DialTimeout,
  256.             GTSL_DispFunc,        ShowSeconds,
  257.             GTSL_LevelFormat,    "%s",
  258.             GTSL_MaxLevelLen,    10,
  259.         TAG_DONE);
  260.  
  261.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_REDIAL_AFTER_HANGUP_GAD);
  262.         NewGadget . ng_GadgetID        = Counter;
  263.  
  264.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  265.             SZ_Adjust,    TRUE,
  266.             SZ_AutoWidth,    TRUE,
  267.  
  268.             GTCB_Checked,    Config -> ModemConfig -> RedialAfterHangup,
  269.         TAG_DONE);
  270.  
  271.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_CONNECT_AUTO_BAUD_GAD);
  272.         NewGadget . ng_GadgetID        = Counter;
  273.  
  274.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  275.             SZ_Adjust,    TRUE,
  276.             SZ_AutoWidth,    TRUE,
  277.  
  278.             GTCB_Checked,    Config -> ModemConfig -> ConnectAutoBaud,
  279.         TAG_DONE);
  280.  
  281.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_DROP_DTR_ON_HANGUP_GAD);
  282.         NewGadget . ng_GadgetID        = Counter;
  283.  
  284.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  285.             SZ_Adjust,    TRUE,
  286.             SZ_AutoWidth,    TRUE,
  287.  
  288.             GTCB_Checked,    Config -> ModemConfig -> DropDTR,
  289.         TAG_DONE);
  290.  
  291.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_NOCARRIER_IS_BUSY_GAD);
  292.         NewGadget . ng_GadgetID        = Counter;
  293.  
  294.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  295.             SZ_Adjust,    TRUE,
  296.             SZ_AutoWidth,    TRUE,
  297.             SZ_AlignExtra,    TRUE,
  298.  
  299.             GTCB_Checked,    Config -> ModemConfig -> NoCarrierIsBusy,
  300.         TAG_DONE);
  301.  
  302.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_CONNECTION_LIMIT_GAD);
  303.         NewGadget . ng_GadgetID        = Counter;
  304.  
  305.         GadgetArray[Counter++] = Gadget = CreateGadget(SLIDER_KIND,Gadget,&NewGadget,
  306.             SZ_Adjust,        TRUE,
  307.             SZ_AutoWidth,        TRUE,
  308.             SZ_AlignExtra,        TRUE,
  309.  
  310.             GTSL_Min,        0,
  311.             GTSL_Max,        1440,
  312.             GTSL_Level,        Config -> ModemConfig -> ConnectLimit,
  313.             GTSL_DispFunc,        ShowHours,
  314.             GTSL_LevelFormat,    "%s",
  315.             GTSL_MaxLevelLen,    7,
  316.         TAG_DONE);
  317.  
  318.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_LIMIT_MACRO_GAD);
  319.         NewGadget . ng_GadgetID        = Counter;
  320.  
  321.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  322.             SZ_Adjust,    TRUE,
  323.             SZ_AutoWidth,    TRUE,
  324.             SZ_LeaveFolder,    TRUE,
  325.  
  326.             GTST_MaxChars,    MAX_FILENAME_LENGTH,
  327.             GTST_String,    Config -> ModemConfig -> ConnectLimitMacro,
  328.         TAG_DONE);
  329.  
  330.         NewGadget . ng_GadgetID = Counter;
  331.  
  332.         GadgetArray[Counter++] = Gadget = CreateGadget(FILE_KIND,Gadget,&NewGadget,
  333.             SZ_Adjust,    TRUE,
  334.             SZ_AutoWidth,    TRUE,
  335.             SZ_PlaceLeft,    TRUE,
  336.         TAG_DONE);
  337.  
  338.         SZ_UpdateMaxWidth(BUTTON_KIND,LocaleString(MSG_GLOBAL_USE_GAD),0,NULL);
  339.         SZ_UpdateMaxWidth(BUTTON_KIND,LocaleString(MSG_GLOBAL_CANCEL_GAD),0,NULL);
  340.         SZ_UpdateMaxWidth(BUTTON_KIND,LocaleString(MSG_GLOBAL_DEFAULT_GAD),0,NULL);
  341.  
  342.         SZ_SetWidth(SZ_ResetMaxWidth());
  343.  
  344.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_USE_GAD);
  345.         NewGadget . ng_GadgetID        = Counter;
  346.         NewGadget . ng_Flags        = 0;
  347.  
  348.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  349.             SZ_Adjust,    TRUE,
  350.             SZ_AutoWidth,    TRUE,
  351.             SZ_AlignExtra,    TRUE,
  352.             SZ_AlignLeft,    TRUE,
  353.             SZ_AlignBottom,    TRUE,
  354.         TAG_DONE);
  355.  
  356.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_CANCEL_GAD);
  357.         NewGadget . ng_GadgetID        = Counter;
  358.  
  359.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  360.             SZ_Adjust,    TRUE,
  361.             SZ_AutoWidth,    TRUE,
  362.             SZ_AlignRight,    TRUE,
  363.         TAG_DONE);
  364.  
  365.         if(Default)
  366.         {
  367.             NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_DEFAULT_GAD);
  368.             NewGadget . ng_GadgetID        = Counter;
  369.  
  370.             GadgetArray[Counter] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  371.                 SZ_Adjust,    TRUE,
  372.                 SZ_AutoWidth,    TRUE,
  373.                 SZ_AlignCentre,    TRUE,
  374.             TAG_DONE);
  375.         }
  376.     }
  377.  
  378.     return(Gadget);
  379. }
  380.  
  381. BYTE
  382. ModemPanel(struct Configuration *Config,BYTE *Default)
  383. {
  384.     struct Window    *PanelWindow;
  385.     struct Gadget    *GadgetList = NULL;
  386.     struct Gadget    *GadgetArray[GAD_DEFAULT + 1];
  387.  
  388.     SaveConfig(Config,PrivateConfig);
  389.  
  390.     if(CreateAllGadgets(Config,GadgetArray,&GadgetList,Default))
  391.     {
  392.         if(PanelWindow = OpenWindowTags(NULL,
  393.             WA_Left,    GetScreenLeft(Window) + (GetScreenWidth(Window) - SZ_GetWindowWidth()) / 2,
  394.             WA_Top,        GetScreenTop(Window) + (GetScreenHeight(Window) - SZ_GetWindowHeight())    / 2,
  395.             WA_Width,    SZ_GetWindowWidth(),
  396.             WA_Height,    SZ_GetWindowHeight(),
  397.  
  398.             WA_Activate,    TRUE,
  399.             WA_DragBar,    TRUE,
  400.             WA_DepthGadget,    TRUE,
  401.             WA_RMBTrap,    TRUE,
  402.             WA_DepthGadget,    TRUE,
  403.             WA_CloseGadget,    TRUE,
  404.             WA_CustomScreen,Window -> WScreen,
  405.  
  406.             WA_IDCMP,    IDCMP_GADGETDOWN | IDCMP_ACTIVEWINDOW | IDCMP_CLOSEWINDOW | IDCMP_RAWKEY | IDCMP_VANILLAKEY | SLIDERIDCMP | CHECKBOXIDCMP | STRINGIDCMP | BUTTONIDCMP,
  407.  
  408.             WA_Title,    LocaleString(MSG_MODEMPANEL_MODEM_PREFERENCES_TXT),
  409.         TAG_DONE))
  410.         {
  411.             struct IntuiMessage    *Massage;
  412.             ULONG             IClass,Code;
  413.             struct Gadget        *Gadget;
  414.             BYTE             Terminated = FALSE;
  415.  
  416.             GuideContext(CONTEXT_MODEM);
  417.  
  418.             PushWindow(PanelWindow);
  419.  
  420.             AddGList(PanelWindow,GadgetList,(UWORD)-1,(UWORD)-1,NULL);
  421.             RefreshGList(GadgetList,PanelWindow,NULL,(UWORD)-1);
  422.             GT_RefreshWindow(PanelWindow,NULL);
  423.  
  424.             ActiveGadget = NULL;
  425.  
  426.             ClrSignal(SIG_BREAK);
  427.  
  428.             while(!Terminated)
  429.             {
  430.                 if(Wait(PORTMASK(PanelWindow -> UserPort) | SIG_BREAK) & SIG_BREAK)
  431.                 {
  432.                     SaveConfig(PrivateConfig,Config);
  433.  
  434.                     break;
  435.                 }
  436.  
  437.                 while(!Terminated && (Massage = (struct IntuiMessage *)GT_GetIMsg(PanelWindow -> UserPort)))
  438.                 {
  439.                     IClass    = Massage -> Class;
  440.                     Code    = Massage -> Code;
  441.                     Gadget    = (struct Gadget *)Massage -> IAddress;
  442.  
  443.                     GT_ReplyIMsg(Massage);
  444.  
  445.                     KeySelect(GadgetArray,GAD_CANCEL,Code,PanelWindow,&Gadget,&IClass,&Code);
  446.  
  447.                     if(IClass == IDCMP_ACTIVEWINDOW && ActiveGadget)
  448.                         ActivateGadget(ActiveGadget,PanelWindow,NULL);
  449.  
  450.                     if(IClass == IDCMP_GADGETDOWN)
  451.                     {
  452.                         if((Gadget -> GadgetType & GTYP_GTYPEMASK) == GTYP_STRGADGET)
  453.                             ActiveGadget = Gadget;
  454.                     }
  455.  
  456.                     if(IClass == IDCMP_CLOSEWINDOW)
  457.                     {
  458.                         SaveConfig(PrivateConfig,Config);
  459.  
  460.                         Terminated = TRUE;
  461.                     }
  462.  
  463.                     if(IClass == IDCMP_MOUSEMOVE)
  464.                     {
  465.                         switch(Gadget -> GadgetID)
  466.                         {
  467.                             case GAD_REDIALDELAY:
  468.  
  469.                                 Config -> ModemConfig -> RedialDelay = Code;
  470.                                 break;
  471.  
  472.                             case GAD_DIALRETRIES:
  473.  
  474.                                 Config -> ModemConfig -> DialRetries = Code;
  475.                                 break;
  476.  
  477.                             case GAD_DIALTIMEOUT:
  478.  
  479.                                 Config -> ModemConfig -> DialTimeout = Code;
  480.                                 break;
  481.                         }
  482.                     }
  483.  
  484.                     if(IClass == IDCMP_GADGETUP)
  485.                     {
  486.                         switch(Gadget -> GadgetID)
  487.                         {
  488.                             case GAD_USE:
  489.  
  490.                                 Terminated = TRUE;
  491.  
  492.                                 strcpy(Config -> ModemConfig -> ModemInit,    SZ_GetString(GadgetArray[GAD_MODEMINIT]));
  493.                                 strcpy(Config -> ModemConfig -> ModemExit,    SZ_GetString(GadgetArray[GAD_MODEMEXIT]));
  494.                                 strcpy(Config -> ModemConfig -> ModemHangup,    SZ_GetString(GadgetArray[GAD_MODEMHANGUP]));
  495.                                 strcpy(Config -> ModemConfig -> DialPrefix,    SZ_GetString(GadgetArray[GAD_DIALPREFIX]));
  496.                                 strcpy(Config -> ModemConfig -> DialSuffix,    SZ_GetString(GadgetArray[GAD_DIALSUFFIX]));
  497.                                 strcpy(Config -> ModemConfig -> NoCarrier,    SZ_GetString(GadgetArray[GAD_NOCARRIER]));
  498.                                 strcpy(Config -> ModemConfig -> NoDialTone,    SZ_GetString(GadgetArray[GAD_NODIALTONE]));
  499.                                 strcpy(Config -> ModemConfig -> Connect,    SZ_GetString(GadgetArray[GAD_CONNECT]));
  500.                                 strcpy(Config -> ModemConfig -> Voice,        SZ_GetString(GadgetArray[GAD_VOICE]));
  501.                                 strcpy(Config -> ModemConfig -> Ring,        SZ_GetString(GadgetArray[GAD_RING]));
  502.                                 strcpy(Config -> ModemConfig -> Busy,        SZ_GetString(GadgetArray[GAD_BUSY]));
  503.                                 strcpy(Config -> ModemConfig -> Ok,        SZ_GetString(GadgetArray[GAD_OK]));
  504.                                 strcpy(Config -> ModemConfig -> Error,        SZ_GetString(GadgetArray[GAD_ERROR]));
  505.  
  506.                                 Config -> ModemConfig -> RedialAfterHangup    = SZ_GetChecked(GadgetArray[GAD_REDIAL]);
  507.                                 Config -> ModemConfig -> ConnectAutoBaud    = SZ_GetChecked(GadgetArray[GAD_AUTOBAUD]);
  508.                                 Config -> ModemConfig -> DropDTR        = SZ_GetChecked(GadgetArray[GAD_DROPDTR]);
  509.                                 Config -> ModemConfig -> NoCarrierIsBusy    = SZ_GetChecked(GadgetArray[GAD_NOCARRIER_IS_BUSY]);
  510.  
  511.                                 break;
  512.  
  513.                             case GAD_CANCEL:
  514.  
  515.                                 Terminated = TRUE;
  516.  
  517.                                 SaveConfig(PrivateConfig,Config);
  518.  
  519.                                 break;
  520.  
  521.                             case GAD_DEFAULT:
  522.  
  523.                                 *Default    = TRUE;
  524.  
  525.                                 Terminated    = TRUE;
  526.  
  527.                                 break;
  528.  
  529.                             case GAD_SELECT_MACRO:
  530.                             {
  531.                                 UBYTE             DummyBuffer[MAX_FILENAME_LENGTH];
  532.                                 struct FileRequester    *FileRequest;
  533.  
  534.                                 BlockWindow(PanelWindow);
  535.  
  536.                                 if(FileRequest = GetFile(LocaleString(MSG_TERMAUX_LOAD_FILE_TXT),"","",DummyBuffer,NULL,FALSE,FALSE,FALSE,LocaleString(MSG_GLOBAL_SELECT_TXT),TRUE))
  537.                                 {
  538.                                     GT_SetGadgetAttrs(GadgetArray[GAD_LIMIT_MACRO],PanelWindow,NULL,
  539.                                         GTST_String,DummyBuffer,
  540.                                     TAG_DONE);
  541.  
  542.                                     FreeAslRequest(FileRequest);
  543.                                 }
  544.  
  545.                                 ReleaseWindow(PanelWindow);
  546.                                 
  547.                                 break;
  548.                             }
  549.                         }
  550.                     }
  551.                 }
  552.             }
  553.  
  554.             RemoveGList(PanelWindow,GadgetList,(UWORD)-1);
  555.  
  556.             PopWindow();
  557.  
  558.             CloseWindow(PanelWindow);
  559.         }
  560.     }
  561.  
  562.     FreeGadgets(GadgetList);
  563.  
  564.     return((BYTE)memcmp(PrivateConfig -> ModemConfig,Config -> ModemConfig,sizeof(struct ModemSettings)));
  565. }
  566.