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

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