home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d5xx / d534 / term.lha / Term / Source.LZH / ModemPanel.c < prev    next >
C/C++ Source or Header  |  1991-07-06  |  15KB  |  492 lines

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