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 / ModemPanel.c < prev    next >
C/C++ Source or Header  |  1991-11-01  |  16KB  |  503 lines

  1. /* $Revision Header * Header built automatically - do not edit! *************
  2.  *
  3.  *    (C) Copyright 1991 by Olaf 'Olsen' Barthel & MXM
  4.  *
  5.  *    Name .....: ModemPanel.c
  6.  *    Created ..: Monday 21-Jan-91 20:12
  7.  *    Revision .: 0
  8.  *
  9.  *    Date            Author          Comment
  10.  *    =========       ========        ====================
  11.  *    21-Jan-91       Olsen           Created this file!
  12.  *
  13.  * $Revision Header ********************************************************/
  14.  
  15. #include "TermGlobal.h"
  16.  
  17. enum    {    GAD_MODEMINIT,GAD_MODEMEXIT,GAD_MODEMHANGUP,GAD_DIALPREFIX,
  18.         GAD_REDIALDELAY,GAD_DIALRETRIES,GAD_DIALTIMEOUT,GAD_AUTOCAPTURE,
  19.         GAD_AUTOBAUD,GAD_LOG,GAD_NOCARRIER,GAD_CONNECT,GAD_VOICE,GAD_RING,
  20.         GAD_BUSY,GAD_USE,GAD_CANCEL };
  21.  
  22. enum    {    MEN_REDIALDELAY=1,MEN_DIALRETRIES,MEN_DIALTIMEOUT,MEN_AUTOCAPTURE,
  23.         MEN_AUTOBAUD,MEN_LOG,MEN_USE,MEN_CANCEL,MEN_QUITPANEL };
  24.  
  25. STATIC struct NewMenu ModemMenu[] =
  26. {
  27.     { NM_TITLE, "Project",             0 , 0, 0, (APTR)0},
  28.     {  NM_ITEM, "Redial Delay",        "D", 0, 0, (APTR)MEN_REDIALDELAY},
  29.     {  NM_ITEM, "Dial Retries",        "R", 0, 0, (APTR)MEN_DIALRETRIES},
  30.     {  NM_ITEM, "Dial Timeout",        "T", 0, 0, (APTR)MEN_DIALTIMEOUT},
  31.     {  NM_ITEM, NM_BARLABEL,         0 , 0, 0, (APTR)0},
  32.     {  NM_ITEM, "Connect Auto-Capture",    "A", 0, 0, (APTR)MEN_AUTOCAPTURE},
  33.     {  NM_ITEM, "Connect Auto-Baud",    "B", 0, 0, (APTR)MEN_AUTOBAUD},
  34.     {  NM_ITEM, "Log Actions",        "L", 0, 0, (APTR)MEN_LOG},
  35.     {  NM_ITEM, NM_BARLABEL,         0 , 0, 0, (APTR)0},
  36.     {  NM_ITEM, "Use",            "U", 0, 0, (APTR)MEN_USE},
  37.     {  NM_ITEM, "Cancel",            "C", 0, 0, (APTR)MEN_CANCEL},
  38.     {  NM_ITEM, NM_BARLABEL,         0 , 0, 0, (APTR)0},
  39.     {  NM_ITEM, "Quit",            "Q", 0, 0, (APTR)MEN_QUITPANEL},
  40.     { NM_END, 0,                 0 , 0, 0, (APTR)0}
  41. };
  42.  
  43. #define WIDTH    632
  44. #define HEIGHT    157
  45.  
  46. STATIC UBYTE * __saveds
  47. ShowMinute(struct Gadget *SomeGadget,WORD Level)
  48. {
  49.     STATIC UBYTE Buffer[6];
  50.  
  51.     SPrintf(Buffer,"%2ld:%02ld",Level / 60,Level % 60);
  52.  
  53.     return(Buffer);
  54. }
  55.  
  56. STATIC struct Gadget *
  57. CreateAllGadgets(struct Configuration *Config,struct Gadget **GadgetArray,struct Gadget **GadgetList,APTR VisualInfo,UWORD TopEdge)
  58. {
  59.     struct Gadget        *Gadget;
  60.     struct NewGadget     NewGadget;
  61.     UWORD             LeftEdge,Counter = 0;
  62.  
  63.     memset(&NewGadget,0,sizeof(struct NewGadget));
  64.  
  65.     if(Gadget = CreateContext(GadgetList))
  66.     {
  67.         NewGadget . ng_Width        = 124;
  68.         NewGadget . ng_Height        = 12;
  69.         NewGadget . ng_GadgetText    = "           Modem Init String";
  70.         NewGadget . ng_TextAttr        = &DefaultFont;
  71.         NewGadget . ng_VisualInfo    = VisualInfo;
  72.         NewGadget . ng_GadgetID        = Counter;
  73.         NewGadget . ng_LeftEdge        = (strlen(NewGadget . ng_GadgetText) + 2) * 8 + 1;
  74.         NewGadget . ng_TopEdge        = 1 + TopEdge;
  75.  
  76.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  77.             GTST_MaxChars,    80,
  78.             GTST_String,    Config -> ModemInit,
  79.             GTST_EditHook,    &CommandHook,
  80.         TAG_DONE);
  81.  
  82.         LeftEdge = Gadget -> LeftEdge + Gadget -> Width + 8;
  83.  
  84.         NewGadget . ng_GadgetText    = "Modem Exit String";
  85.         NewGadget . ng_GadgetID        = Counter;
  86.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  87.  
  88.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  89.             GTST_MaxChars,    80,
  90.             GTST_String,    Config -> ModemExit,
  91.             GTST_EditHook,    &CommandHook,
  92.         TAG_DONE);
  93.  
  94.         NewGadget . ng_GadgetText    = "Modem Hangup String";
  95.         NewGadget . ng_GadgetID        = Counter;
  96.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  97.  
  98.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  99.             GTST_MaxChars,    80,
  100.             GTST_String,    Config -> ModemHangup,
  101.             GTST_EditHook,    &CommandHook,
  102.         TAG_DONE);
  103.  
  104.         NewGadget . ng_GadgetText    = "Dial Prefix";
  105.         NewGadget . ng_GadgetID        = Counter;
  106.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  107.  
  108.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  109.             GTST_MaxChars,    80,
  110.             GTST_String,    Config -> DialPrefix,
  111.             GTST_EditHook,    &CommandHook,
  112.         TAG_DONE);
  113.  
  114.         NewGadget . ng_GadgetText    = "Redial _Delay (Minutes)   ";
  115.         NewGadget . ng_GadgetID        = Counter;
  116.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  117.  
  118.         GadgetArray[Counter++] = Gadget = CreateGadget(SLIDER_KIND,Gadget,&NewGadget,
  119.             GT_Underscore,        '_',
  120.             GTSL_Min,        0,
  121.             GTSL_Max,        60,
  122.             GTSL_Level,        Config -> RedialDelay,
  123.             GTSL_LevelFormat,    "%2ld",
  124.             GTSL_MaxLevelLen,    2,
  125.         TAG_DONE);
  126.  
  127.         NewGadget . ng_GadgetText    = "Number Of Dial _Retries    ";
  128.         NewGadget . ng_GadgetID        = Counter;
  129.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  130.  
  131.         GadgetArray[Counter++] = Gadget = CreateGadget(SLIDER_KIND,Gadget,&NewGadget,
  132.             GT_Underscore,        '_',
  133.             GTSL_Min,        0,
  134.             GTSL_Max,        100,
  135.             GTSL_Level,        Config -> DialRetries,
  136.             GTSL_LevelFormat,    "%3ld",
  137.             GTSL_MaxLevelLen,    3,
  138.         TAG_DONE);
  139.  
  140.         NewGadget . ng_GadgetText    = "Dial _Timeout (Minutes)      ";
  141.         NewGadget . ng_GadgetID        = Counter;
  142.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  143.  
  144.         GadgetArray[Counter++] = Gadget = CreateGadget(SLIDER_KIND,Gadget,&NewGadget,
  145.             GT_Underscore,        '_',
  146.             GTSL_Min,        0,
  147.             GTSL_Max,        1800,
  148.             GTSL_Level,        Config -> DialTimeout,
  149.             GTSL_DispFunc,        ShowMinute,
  150.             GTSL_LevelFormat,    "%s",
  151.             GTSL_MaxLevelLen,    5,
  152.         TAG_DONE);
  153.  
  154.         NewGadget . ng_GadgetText    = "Connect _Auto-Capture";
  155.         NewGadget . ng_GadgetID        = Counter;
  156.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  157.         NewGadget . ng_Width        = 26;
  158.         NewGadget . ng_Height        = 11;
  159.  
  160.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  161.             GT_Underscore,    '_',
  162.             GTCB_Checked,    Config -> ConnectAutoCapture,
  163.         TAG_DONE);
  164.  
  165.         NewGadget . ng_GadgetText    = "Connect Auto-_Baud";
  166.         NewGadget . ng_GadgetID        = Counter;
  167.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  168.  
  169.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  170.             GT_Underscore,    '_',
  171.             GTCB_Checked,    Config -> ConnectAutoBaud,
  172.         TAG_DONE);
  173.  
  174.         NewGadget . ng_GadgetText    = "_Log Actions";
  175.         NewGadget . ng_GadgetID        = Counter;
  176.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  177.  
  178.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  179.             GT_Underscore,    '_',
  180.             GTCB_Checked,    Config -> LogActions,
  181.         TAG_DONE);
  182.  
  183.         NewGadget . ng_Width        = 86;
  184.         NewGadget . ng_Height        = 12;
  185.         NewGadget . ng_GadgetText    = "`No Carrier' String";
  186.         NewGadget . ng_GadgetID        = Counter;
  187.         NewGadget . ng_LeftEdge        = LeftEdge + (strlen(NewGadget . ng_GadgetText) + 2) * 8 + 1;
  188.         NewGadget . ng_TopEdge        = 1 + TopEdge;
  189.  
  190.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  191.             GTST_MaxChars,    16,
  192.             GTST_String,    Config -> NoCarrier,
  193.             GTST_EditHook,    &CommandHook,
  194.         TAG_DONE);
  195.  
  196.         NewGadget . ng_GadgetText    = "`Connect' String";
  197.         NewGadget . ng_GadgetID        = Counter;
  198.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  199.  
  200.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  201.             GTST_MaxChars,    16,
  202.             GTST_String,    Config -> Connect,
  203.             GTST_EditHook,    &CommandHook,
  204.         TAG_DONE);
  205.  
  206.         NewGadget . ng_GadgetText    = "`Voice' String";
  207.         NewGadget . ng_GadgetID        = Counter;
  208.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  209.  
  210.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  211.             GTST_MaxChars,    16,
  212.             GTST_String,    Config -> Voice,
  213.             GTST_EditHook,    &CommandHook,
  214.         TAG_DONE);
  215.  
  216.         NewGadget . ng_GadgetText    = "`Ring' String";
  217.         NewGadget . ng_GadgetID        = Counter;
  218.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  219.  
  220.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  221.             GTST_MaxChars,    16,
  222.             GTST_String,    Config -> Ring,
  223.             GTST_EditHook,    &CommandHook,
  224.         TAG_DONE);
  225.  
  226.         NewGadget . ng_GadgetText    = "`Busy' String";
  227.         NewGadget . ng_GadgetID        = Counter;
  228.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  229.  
  230.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  231.             GTST_MaxChars,    16,
  232.             GTST_String,    Config -> Busy,
  233.             GTST_EditHook,    &CommandHook,
  234.         TAG_DONE);
  235.  
  236.         NewGadget . ng_Width        = 52;
  237.         NewGadget . ng_Height        = 12;
  238.         NewGadget . ng_GadgetText    = "_Use";
  239.         NewGadget . ng_GadgetID        = Counter;
  240.         NewGadget . ng_Flags        = 0;
  241.         NewGadget . ng_LeftEdge        = 10;
  242.         NewGadget . ng_TopEdge        = HEIGHT - 3 - NewGadget . ng_Height;
  243.  
  244.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  245.             GT_Underscore,    '_',
  246.         TAG_DONE);
  247.  
  248.         NewGadget . ng_GadgetText    = "_Cancel";
  249.         NewGadget . ng_GadgetID        = Counter;
  250.         NewGadget . ng_LeftEdge        = WIDTH - 10 - NewGadget . ng_Width;
  251.  
  252.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  253.             GT_Underscore,    '_',
  254.         TAG_DONE);
  255.     }
  256.  
  257.     return(Gadget);
  258. }
  259.  
  260. BYTE
  261. ModemPanel(struct Configuration *Config)
  262. {
  263.     struct Window    *PanelWindow;
  264.     struct Menu    *PanelMenu;
  265.     struct Gadget    *GadgetList = NULL;
  266.     struct Gadget    *GadgetArray[GAD_CANCEL + 1];
  267.  
  268.     CopyMem(Config,&PrivateConfig,sizeof(struct Configuration));
  269.  
  270.     if(CreateAllGadgets(Config,&GadgetArray[0],&GadgetList,VisualInfo,Screen -> WBorTop + Screen -> Font -> ta_YSize + 1))
  271.     {
  272.         if(PanelMenu = CreateMenus(ModemMenu,
  273.             GTMN_FrontPen, 0,
  274.         TAG_DONE))
  275.         {
  276.             if(LayoutMenus(PanelMenu,VisualInfo,
  277.                 GTMN_TextAttr,&DefaultFont,
  278.             TAG_DONE))
  279.             {
  280.                 if(PanelWindow = OpenWindowTags(NULL,
  281.                     WA_Left,    (Screen -> Width - WIDTH) >> 1,
  282.                     WA_Top,        (Screen -> Height - HEIGHT) >> 1,
  283.                     WA_Width,    WIDTH,
  284.                     WA_Height,    HEIGHT,
  285.  
  286.                     WA_Activate,    TRUE,
  287.                     WA_DragBar,    TRUE,
  288.                     WA_DepthGadget,    TRUE,
  289.                     WA_RMBTrap,    TRUE,
  290.                     WA_DepthGadget,    TRUE,
  291.                     WA_CloseGadget,    TRUE,
  292.                     WA_CustomScreen,Screen,
  293.  
  294.                     WA_IDCMP,    IDCMP_GADGETDOWN | IDCMP_ACTIVEWINDOW | IDCMP_CLOSEWINDOW | SLIDERIDCMP | CHECKBOXIDCMP | LISTVIEWIDCMP | IDCMP_MENUPICK | IDCMP_RAWKEY,
  295.  
  296.                     WA_Title,    "Modem Preferences",
  297.                 TAG_DONE))
  298.                 {
  299.                     struct IntuiMessage    *Massage;
  300.                     ULONG             Class,Code;
  301.                     struct Gadget        *Gadget;
  302.                     BYTE             Terminated = FALSE;
  303.  
  304.                     PushWindow(PanelWindow);
  305.  
  306.                     AddGList(PanelWindow,GadgetList,(UWORD)-1,(UWORD)-1,NULL);
  307.                     RefreshGList(GadgetList,PanelWindow,NULL,(UWORD)-1);
  308.                     GT_RefreshWindow(PanelWindow,NULL);
  309.  
  310.                     ActivateGadget(GadgetArray[GAD_MODEMINIT],PanelWindow,NULL);
  311.  
  312.                     ActiveGadget = GadgetArray[GAD_MODEMINIT];
  313.  
  314.                     SetMenuStrip(PanelWindow,PanelMenu);
  315.  
  316.                     PanelWindow -> Flags &= ~WFLG_RMBTRAP;
  317.  
  318.                     while(!Terminated)
  319.                     {
  320.                         WaitPort(PanelWindow -> UserPort);
  321.  
  322.                         while(!Terminated && (Massage = (struct IntuiMessage *)GT_GetIMsg(PanelWindow -> UserPort)))
  323.                         {
  324.                             Class    = Massage -> Class;
  325.                             Code    = Massage -> Code;
  326.                             Gadget    = (struct Gadget *)Massage -> IAddress;
  327.  
  328.                             GT_ReplyIMsg(Massage);
  329.  
  330.                             if(Class == IDCMP_ACTIVEWINDOW && ActiveGadget)
  331.                                 ActivateGadget(ActiveGadget,PanelWindow,NULL);
  332.  
  333.                             if(Class == IDCMP_RAWKEY)
  334.                             {
  335.                                 if(Code == IECODE_UP_PREFIX|103 && CommandWindow == PanelWindow)
  336.                                     ActivateGadget(CommandGadget,PanelWindow,NULL);
  337.                             }
  338.  
  339.                             if(Class == IDCMP_GADGETDOWN)
  340.                             {
  341.                                 if((Gadget -> GadgetType & GTYP_GTYPEMASK) == STRGADGET)
  342.                                     ActiveGadget = Gadget;
  343.                             }
  344.  
  345.                             if(Class == IDCMP_MENUPICK)
  346.                             {
  347.                                 struct MenuItem *MenuItem;
  348.  
  349.                                 while(Code != MENUNULL)
  350.                                 {
  351.                                     MenuItem = ItemAddress(PanelMenu,Code);
  352.  
  353.                                     switch((ULONG)GTMENUITEM_USERDATA(MenuItem))
  354.                                     {
  355.                                         case MEN_QUITPANEL:    Class = IDCMP_CLOSEWINDOW;
  356.                                                     break;
  357.  
  358.                                         case MEN_REDIALDELAY:    if(Config -> RedialDelay < 60)
  359.                                                         Config -> RedialDelay++;
  360.                                                     else
  361.                                                         Config -> RedialDelay = 0;
  362.  
  363.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_REDIALDELAY],PanelWindow,NULL,
  364.                                                         GTSL_Level,Config -> RedialDelay,
  365.                                                     TAG_DONE);
  366.  
  367.                                                     break;
  368.  
  369.                                         case MEN_DIALRETRIES:    if(Config -> DialRetries < 100)
  370.                                                         Config -> DialRetries++;
  371.                                                     else
  372.                                                         Config -> DialRetries = 0;
  373.  
  374.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_DIALRETRIES],PanelWindow,NULL,
  375.                                                         GTSL_Level,Config -> DialRetries,
  376.                                                     TAG_DONE);
  377.  
  378.                                                     break;
  379.  
  380.                                         case MEN_DIALTIMEOUT:    if(Config -> DialTimeout < 360)
  381.                                                         Config -> DialTimeout++;
  382.                                                     else
  383.                                                         Config -> DialTimeout = 0;
  384.  
  385.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_DIALTIMEOUT],PanelWindow,NULL,
  386.                                                         GTSL_Level,Config -> DialTimeout,
  387.                                                     TAG_DONE);
  388.  
  389.                                                     break;
  390.  
  391.                                         case MEN_AUTOCAPTURE:    GT_SetGadgetAttrs(GadgetArray[GAD_AUTOCAPTURE],PanelWindow,NULL,
  392.                                                         GTCB_Checked,GadgetArray[GAD_AUTOCAPTURE] -> Flags & GFLG_SELECTED ? FALSE : TRUE,
  393.                                                     TAG_DONE);
  394.  
  395.                                                     break;
  396.  
  397.                                         case MEN_AUTOBAUD:    GT_SetGadgetAttrs(GadgetArray[GAD_AUTOBAUD],PanelWindow,NULL,
  398.                                                         GTCB_Checked,GadgetArray[GAD_AUTOBAUD] -> Flags & GFLG_SELECTED ? FALSE : TRUE,
  399.                                                     TAG_DONE);
  400.  
  401.                                                     break;
  402.  
  403.                                         case MEN_LOG:    GT_SetGadgetAttrs(GadgetArray[GAD_LOG],PanelWindow,NULL,
  404.                                                         GTCB_Checked,GadgetArray[GAD_LOG] -> Flags & GFLG_SELECTED ? FALSE : TRUE,
  405.                                                     TAG_DONE);
  406.  
  407.                                                     break;
  408.  
  409.                                         case MEN_USE:        Class = IDCMP_GADGETUP;
  410.                                                     Gadget = GadgetArray[GAD_USE];
  411.                                                     break;
  412.  
  413.                                         case MEN_CANCEL:    Class = IDCMP_GADGETUP;
  414.                                                     Gadget = GadgetArray[GAD_CANCEL];
  415.                                                     break;
  416.  
  417.                                         default:        break;
  418.                                     }
  419.  
  420.                                     Code = MenuItem -> NextSelect;
  421.                                 }
  422.  
  423.                                 if(ActiveGadget)
  424.                                     ActivateGadget(ActiveGadget,PanelWindow,NULL);
  425.                             }
  426.  
  427.                             if(Class == IDCMP_CLOSEWINDOW)
  428.                                 Terminated = TRUE;
  429.  
  430.                             if(Class == IDCMP_MOUSEMOVE)
  431.                             {
  432.                                 switch(Gadget -> GadgetID)
  433.                                 {
  434.                                     case GAD_REDIALDELAY:    Config -> RedialDelay = Code;
  435.                                                 break;
  436.  
  437.                                     case GAD_DIALRETRIES:    Config -> DialRetries = Code;
  438.                                                 break;
  439.  
  440.                                     case GAD_DIALTIMEOUT:    Config -> DialTimeout = Code;
  441.                                                 break;
  442.  
  443.                                     default:        break;
  444.                                 }
  445.                             }
  446.  
  447.                             if(Class == IDCMP_GADGETUP)
  448.                             {
  449.                                 switch(Gadget -> GadgetID)
  450.                                 {
  451.                                     case GAD_USE:        Terminated = TRUE;
  452.  
  453.                                                 strcpy(Config -> ModemInit,((struct StringInfo *)GadgetArray[GAD_MODEMINIT] -> SpecialInfo) -> Buffer);
  454.                                                 strcpy(Config -> ModemExit,((struct StringInfo *)GadgetArray[GAD_MODEMEXIT] -> SpecialInfo) -> Buffer);
  455.                                                 strcpy(Config -> ModemHangup,((struct StringInfo *)GadgetArray[GAD_MODEMHANGUP] -> SpecialInfo) -> Buffer);
  456.                                                 strcpy(Config -> DialPrefix,((struct StringInfo *)GadgetArray[GAD_DIALPREFIX] -> SpecialInfo) -> Buffer);
  457.                                                 strcpy(Config -> NoCarrier,((struct StringInfo *)GadgetArray[GAD_NOCARRIER] -> SpecialInfo) -> Buffer);
  458.                                                 strcpy(Config -> Connect,((struct StringInfo *)GadgetArray[GAD_CONNECT] -> SpecialInfo) -> Buffer);
  459.                                                 strcpy(Config -> Voice,((struct StringInfo *)GadgetArray[GAD_VOICE] -> SpecialInfo) -> Buffer);
  460.                                                 strcpy(Config -> Ring,((struct StringInfo *)GadgetArray[GAD_RING] -> SpecialInfo) -> Buffer);
  461.  
  462.                                                 Config -> ConnectAutoCapture = GadgetArray[GAD_AUTOCAPTURE] -> Flags & GFLG_SELECTED;
  463.                                                 Config -> ConnectAutoBaud = GadgetArray[GAD_AUTOBAUD] -> Flags & GFLG_SELECTED;
  464.                                                 Config -> LogActions = GadgetArray[GAD_LOG] -> Flags & GFLG_SELECTED;
  465.  
  466.                                                 break;
  467.  
  468.                                     case GAD_CANCEL:    Terminated = TRUE;
  469.  
  470.                                                 CopyMem(&PrivateConfig,Config,sizeof(struct Configuration));
  471.  
  472.                                                 break;
  473.  
  474.                                     default:        break;
  475.                                 }
  476.                             }
  477.                         }
  478.                     }
  479.  
  480.                     PanelWindow -> Flags |= WFLG_RMBTRAP;
  481.  
  482.                     ClearMenuStrip(PanelWindow);
  483.  
  484.                     RemoveGList(PanelWindow,GadgetList,(UWORD)-1);
  485.  
  486.                     PopWindow();
  487.  
  488.                     CloseWindow(PanelWindow);
  489.                 }
  490.             }
  491.  
  492.             FreeMenus(PanelMenu);
  493.         }
  494.     }
  495.  
  496.     FreeGadgets(GadgetList);
  497.  
  498.     if(memcmp(&PrivateConfig,Config,sizeof(struct Configuration)))
  499.         return(TRUE);
  500.     else
  501.         return(FALSE);
  502. }
  503.