home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d8xx / d832 / term.lha / Term / term-3.1-Source.lha / CapturePanel.c next >
C/C++ Source or Header  |  1993-02-18  |  14KB  |  474 lines

  1. /*
  2. **    CapturePanel.c
  3. **
  4. **    Editing panel for log file, buffer and capture 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_LOGACTIONS, GAD_LOGFILE, GAD_SELECT_LOGFILE, GAD_LOGCALLS, GAD_CALL_LOGFILE,GAD_SELECT_CALL_LOGFILE,
  13.         GAD_MAX_BUFFER_SIZE,GAD_BUFFER_ENABLED,GAD_BUFFER_PATH,GAD_SELECT_BUFFER_PATH,
  14.         GAD_CONNECT_AUTO_CAPTURE, GAD_CAPTURE_FILTER,
  15.         GAD_CAPTURE_PATH, GAD_SELECT_CAPTURE_PATH, GAD_USE, GAD_CANCEL, GAD_DEFAULT };
  16.  
  17. STATIC struct Gadget *
  18. CreateAllGadgets(struct Configuration *Config,struct Gadget **GadgetArray,struct Gadget **GadgetList,BYTE *Default)
  19. {
  20.     struct Gadget        *Gadget;
  21.     struct NewGadget     NewGadget;
  22.     UWORD             Counter = 0;
  23.  
  24.     SZ_SizeSetup(Window -> WScreen,&UserFont,TRUE);
  25.  
  26.     memset(&NewGadget,0,sizeof(struct NewGadget));
  27.  
  28.     if(Gadget = CreateContext(GadgetList))
  29.     {
  30.         SZ_AddLeftOffset(SZ_LeftOffsetDelta(MSG_CAPTUREPANEL_LOG_ACTIONS_GAD,MSG_CAPTUREPANEL_CAPTURE_PATH_GAD));
  31.  
  32.         SZ_ResetMaxWidth();
  33.  
  34.         SZ_UpdateMaxWidth(FILE_KIND,NULL,20,NULL);
  35.         SZ_UpdateMaxWidth(INTEGER_KIND,NULL,20,NULL);
  36.         SZ_UpdateMaxWidth(FOLDER_KIND,NULL,20,NULL);
  37.  
  38.         SZ_SetWidth(SZ_ResetMaxWidth());
  39.  
  40.         NewGadget . ng_GadgetText    = LocaleString(MSG_CAPTUREPANEL_LOG_ACTIONS_GAD);
  41.         NewGadget . ng_GadgetID        = Counter;
  42.  
  43.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  44.             SZ_Adjust,    TRUE,
  45.             SZ_AutoWidth,    TRUE,
  46.  
  47.             GTCB_Checked,    Config -> CaptureConfig -> LogActions,
  48.         TAG_DONE);
  49.  
  50.         NewGadget . ng_GadgetText    = LocaleString(MSG_CAPTUREPANEL_LOGFILE_GAD);
  51.         NewGadget . ng_GadgetID        = Counter;
  52.  
  53.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  54.             SZ_Adjust,    TRUE,
  55.             SZ_AutoWidth,    TRUE,
  56.             SZ_LeaveFolder,    TRUE,
  57.  
  58.             GTST_MaxChars,    255,
  59.             GTST_String,    Config -> CaptureConfig -> LogFileName,
  60.         TAG_DONE);
  61.  
  62.         NewGadget . ng_GadgetID        = Counter;
  63.  
  64.         GadgetArray[Counter++] = Gadget = CreateGadget(FILE_KIND,Gadget,&NewGadget,
  65.             SZ_Adjust,    TRUE,
  66.             SZ_AutoWidth,    TRUE,
  67.             SZ_PlaceLeft,    TRUE,
  68.         TAG_DONE);
  69.  
  70.         NewGadget . ng_GadgetText    = LocaleString(MSG_CAPTUREPANEL_LOG_CALLS_GAD);
  71.         NewGadget . ng_GadgetID        = Counter;
  72.  
  73.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  74.             SZ_Adjust,    TRUE,
  75.             SZ_AutoWidth,    TRUE,
  76.             SZ_AlignExtra,    TRUE,
  77.  
  78.             GTCB_Checked,    Config -> CaptureConfig -> LogCall,
  79.         TAG_DONE);
  80.  
  81.         NewGadget . ng_GadgetText    = LocaleString(MSG_CAPTUREPANEL_CALL_LOGFILE_GAD);
  82.         NewGadget . ng_GadgetID        = Counter;
  83.  
  84.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  85.             SZ_Adjust,    TRUE,
  86.             SZ_AutoWidth,    TRUE,
  87.             SZ_LeaveFolder,    TRUE,
  88.  
  89.             GTST_MaxChars,    255,
  90.             GTST_String,    Config -> CaptureConfig -> CallLogFileName,
  91.         TAG_DONE);
  92.  
  93.         NewGadget . ng_GadgetID        = Counter;
  94.  
  95.         GadgetArray[Counter++] = Gadget = CreateGadget(FILE_KIND,Gadget,&NewGadget,
  96.             SZ_Adjust,    TRUE,
  97.             SZ_AutoWidth,    TRUE,
  98.             SZ_PlaceLeft,    TRUE,
  99.         TAG_DONE);
  100.  
  101.         NewGadget . ng_GadgetText    = LocaleString(MSG_CAPTUREPANEL_MAX_BUFFER_SIZE_GAD);
  102.         NewGadget . ng_GadgetID        = Counter;
  103.  
  104.         GadgetArray[Counter++] = Gadget = CreateGadget(INTEGER_KIND,Gadget,&NewGadget,
  105.             SZ_Adjust,    TRUE,
  106.             SZ_AutoWidth,    TRUE,
  107.             SZ_AlignExtra,    TRUE,
  108.  
  109.             GTIN_MaxChars,    8,
  110.             GTIN_Number,    Config -> CaptureConfig -> MaxBufferSize,
  111.         TAG_DONE);
  112.  
  113.         NewGadget . ng_GadgetText    = LocaleString(MSG_CAPTUREPANEL_BUFFER_ENABLED_GAD);
  114.         NewGadget . ng_GadgetID        = Counter;
  115.  
  116.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  117.             SZ_Adjust,    TRUE,
  118.             SZ_AutoWidth,    TRUE,
  119.  
  120.             GTCB_Checked,    Config -> CaptureConfig -> BufferEnabled,
  121.         TAG_DONE);
  122.  
  123.         NewGadget . ng_GadgetText    = LocaleString(MSG_CAPTUREPANEL_BUFFER_PATH_GAD);
  124.         NewGadget . ng_GadgetID        = Counter;
  125.  
  126.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  127.             SZ_Adjust,    TRUE,
  128.             SZ_AutoWidth,    TRUE,
  129.             SZ_LeaveFolder,    TRUE,
  130.  
  131.             GTST_MaxChars,    255,
  132.             GTST_String,    Config -> CaptureConfig -> BufferPath,
  133.         TAG_DONE);
  134.  
  135.         NewGadget . ng_GadgetID        = Counter;
  136.  
  137.         GadgetArray[Counter++] = Gadget = CreateGadget(FOLDER_KIND,Gadget,&NewGadget,
  138.             SZ_Adjust,    TRUE,
  139.             SZ_AutoWidth,    TRUE,
  140.             SZ_PlaceLeft,    TRUE,
  141.         TAG_DONE);
  142.  
  143.         NewGadget . ng_GadgetText    = LocaleString(MSG_CAPTUREPANEL_CONNECT_AUTO_CAPTURE_GAD);
  144.         NewGadget . ng_GadgetID        = Counter;
  145.  
  146.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  147.             SZ_Adjust,    TRUE,
  148.             SZ_AutoWidth,    TRUE,
  149.             SZ_AlignExtra,    TRUE,
  150.  
  151.             GTCB_Checked,    Config -> CaptureConfig -> ConnectAutoCapture,
  152.         TAG_DONE);
  153.  
  154.         NewGadget . ng_GadgetText    = LocaleString(MSG_CAPTUREPANEL_CAPTURE_FILTER_ENABLED_GAD);
  155.         NewGadget . ng_GadgetID        = Counter;
  156.  
  157.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  158.             SZ_Adjust,    TRUE,
  159.             SZ_AutoWidth,    TRUE,
  160.  
  161.             GTCB_Checked,    Config -> CaptureConfig -> CaptureFilterMode,
  162.         TAG_DONE);
  163.  
  164.         NewGadget . ng_GadgetText    = LocaleString(MSG_CAPTUREPANEL_CAPTURE_PATH_GAD);
  165.         NewGadget . ng_GadgetID        = Counter;
  166.  
  167.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  168.             SZ_Adjust,    TRUE,
  169.             SZ_AutoWidth,    TRUE,
  170.             SZ_LeaveFolder,    TRUE,
  171.  
  172.             GTST_MaxChars,    255,
  173.             GTST_String,    Config -> CaptureConfig -> CapturePath,
  174.         TAG_DONE);
  175.  
  176.         NewGadget . ng_GadgetID        = Counter;
  177.  
  178.         GadgetArray[Counter++] = Gadget = CreateGadget(FOLDER_KIND,Gadget,&NewGadget,
  179.             SZ_Adjust,    TRUE,
  180.             SZ_AutoWidth,    TRUE,
  181.             SZ_PlaceLeft,    TRUE,
  182.         TAG_DONE);
  183.  
  184.         SZ_UpdateMaxWidth(BUTTON_KIND,LocaleString(MSG_GLOBAL_USE_GAD),0,NULL);
  185.         SZ_UpdateMaxWidth(BUTTON_KIND,LocaleString(MSG_GLOBAL_CANCEL_GAD),0,NULL);
  186.         SZ_UpdateMaxWidth(BUTTON_KIND,LocaleString(MSG_GLOBAL_DEFAULT_GAD),0,NULL);
  187.  
  188.         SZ_SetWidth(SZ_ResetMaxWidth());
  189.  
  190.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_USE_GAD);
  191.         NewGadget . ng_GadgetID        = Counter;
  192.         NewGadget . ng_Flags        = 0;
  193.  
  194.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  195.             SZ_AlignExtra,    TRUE,
  196.             SZ_Adjust,    TRUE,
  197.             SZ_AutoWidth,    TRUE,
  198.             SZ_AlignLeft,    TRUE,
  199.             SZ_AlignBottom,    TRUE,
  200.         TAG_DONE);
  201.  
  202.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_CANCEL_GAD);
  203.         NewGadget . ng_GadgetID        = Counter;
  204.  
  205.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  206.             SZ_Adjust,    TRUE,
  207.             SZ_AutoWidth,    TRUE,
  208.             SZ_AlignRight,    TRUE,
  209.         TAG_DONE);
  210.  
  211.         if(Default)
  212.         {
  213.             NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_DEFAULT_GAD);
  214.             NewGadget . ng_GadgetID        = Counter;
  215.  
  216.             GadgetArray[Counter] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  217.                 SZ_Adjust,    TRUE,
  218.                 SZ_AutoWidth,    TRUE,
  219.                 SZ_AlignCentre,    TRUE,
  220.             TAG_DONE);
  221.         }
  222.     }
  223.  
  224.     return(Gadget);
  225. }
  226.  
  227. BYTE
  228. CapturePanel(struct Configuration *Config,BYTE *Default)
  229. {
  230.     struct Window    *PanelWindow;
  231.     struct Gadget    *GadgetList = NULL;
  232.     struct Gadget    *GadgetArray[GAD_DEFAULT + 1];
  233.  
  234.     SaveConfig(Config,PrivateConfig);
  235.  
  236.     if(CreateAllGadgets(Config,GadgetArray,&GadgetList,Default))
  237.     {
  238.         if(PanelWindow = OpenWindowTags(NULL,
  239.             WA_Left,    GetScreenLeft(Window) + (GetScreenWidth(Window) - SZ_GetWindowWidth()) / 2,
  240.             WA_Top,        GetScreenTop(Window) + (GetScreenHeight(Window) - SZ_GetWindowHeight())    / 2,
  241.             WA_Width,    SZ_GetWindowWidth(),
  242.             WA_Height,    SZ_GetWindowHeight(),
  243.  
  244.             WA_Activate,    TRUE,
  245.             WA_DragBar,    TRUE,
  246.             WA_DepthGadget,    TRUE,
  247.             WA_RMBTrap,    TRUE,
  248.             WA_DepthGadget,    TRUE,
  249.             WA_CloseGadget,    TRUE,
  250.             WA_CustomScreen,Window -> WScreen,
  251.  
  252.             WA_IDCMP,    IDCMP_GADGETDOWN | IDCMP_ACTIVEWINDOW | IDCMP_CLOSEWINDOW | IDCMP_VANILLAKEY | IDCMP_RAWKEY | BUTTONIDCMP | CHECKBOXIDCMP | INTEGERIDCMP | STRINGIDCMP,
  253.  
  254.             WA_Title,    LocaleString(MSG_CAPTUREPANEL_CAPTURE_SETTINGS_TXT),
  255.         TAG_DONE))
  256.         {
  257.             struct IntuiMessage    *Massage;
  258.             ULONG             IClass,Code;
  259.             struct Gadget        *Gadget;
  260.             BYTE             Terminated = FALSE;
  261.  
  262.             UBYTE             DummyBuffer[MAX_FILENAME_LENGTH],
  263.                         *DummyChar;
  264.             struct FileRequester    *FileRequest;
  265.  
  266.             GuideContext(CONTEXT_CAPTURE);
  267.  
  268.             PushWindow(PanelWindow);
  269.  
  270.             AddGList(PanelWindow,GadgetList,(UWORD)-1,(UWORD)-1,NULL);
  271.             RefreshGList(GadgetList,PanelWindow,NULL,(UWORD)-1);
  272.             GT_RefreshWindow(PanelWindow,NULL);
  273.  
  274.             ActiveGadget = NULL;
  275.  
  276.             SetSignal(0,SIG_BREAK);
  277.  
  278.             while(!Terminated)
  279.             {
  280.                 if(Wait(PORTMASK(PanelWindow -> UserPort) | SIG_BREAK) & SIG_BREAK)
  281.                 {
  282.                     SaveConfig(PrivateConfig,Config);
  283.  
  284.                     break;
  285.                 }
  286.  
  287.                 while(!Terminated && (Massage = (struct IntuiMessage *)GT_GetIMsg(PanelWindow -> UserPort)))
  288.                 {
  289.                     IClass    = Massage -> Class;
  290.                     Code    = Massage -> Code;
  291.                     Gadget    = (struct Gadget *)Massage -> IAddress;
  292.  
  293.                     GT_ReplyIMsg(Massage);
  294.  
  295.                     KeySelect(GadgetArray,GAD_CANCEL,Code,PanelWindow,&Gadget,&IClass,&Code);
  296.  
  297.                     if(IClass == IDCMP_GADGETDOWN)
  298.                     {
  299.                         if((Gadget -> GadgetType & GTYP_GTYPEMASK) == GTYP_STRGADGET)
  300.                             ActiveGadget = Gadget;
  301.                     }
  302.  
  303.                     if(IClass == IDCMP_ACTIVEWINDOW && ActiveGadget)
  304.                         ActivateGadget(ActiveGadget,PanelWindow,NULL);
  305.  
  306.                     if(IClass == IDCMP_CLOSEWINDOW)
  307.                     {
  308.                         SaveConfig(PrivateConfig,Config);
  309.  
  310.                         Terminated = TRUE;
  311.                     }
  312.  
  313.                     if(IClass == IDCMP_GADGETUP)
  314.                     {
  315.                         switch(Gadget -> GadgetID)
  316.                         {
  317.                             case GAD_SELECT_LOGFILE:
  318.  
  319.                                 BlockWindow(PanelWindow);
  320.  
  321.                                 strcpy(DummyBuffer,SZ_GetString(GadgetArray[GAD_LOGFILE]));
  322.  
  323.                                 if(DummyBuffer[0])
  324.                                 {
  325.                                     if(FilePart(DummyBuffer) == DummyBuffer)
  326.                                         DummyBuffer[0] = 0;
  327.                                     else
  328.                                     {
  329.                                         DummyChar = PathPart(DummyBuffer);
  330.  
  331.                                         *DummyChar = 0;
  332.                                     }
  333.  
  334.                                     DummyChar = FilePart(SZ_GetString(GadgetArray[GAD_LOGFILE]));
  335.                                 }
  336.                                 else
  337.                                     DummyChar = "";
  338.  
  339.                                 if(FileRequest = GetFile(LocaleString(MSG_CAPTUREPANEL_SELECT_LOGFILE_TXT),DummyBuffer,DummyChar,DummyBuffer,NULL,FALSE,FALSE,FALSE,LocaleString(MSG_GLOBAL_SELECT_TXT)))
  340.                                 {
  341.                                     GT_SetGadgetAttrs(GadgetArray[GAD_LOGFILE],PanelWindow,NULL,
  342.                                         GTST_String,DummyBuffer,
  343.                                     TAG_DONE);
  344.  
  345.                                     FreeAslRequest(FileRequest);
  346.                                 }
  347.  
  348.                                 ReleaseWindow(PanelWindow);
  349.                                 break;
  350.  
  351.                             case GAD_SELECT_CALL_LOGFILE:
  352.  
  353.                                 BlockWindow(PanelWindow);
  354.  
  355.                                 strcpy(DummyBuffer,SZ_GetString(GadgetArray[GAD_CALL_LOGFILE]));
  356.  
  357.                                 if(DummyBuffer[0])
  358.                                 {
  359.                                     if(FilePart(DummyBuffer) == DummyBuffer)
  360.                                         DummyBuffer[0] = 0;
  361.                                     else
  362.                                     {
  363.                                         DummyChar = PathPart(DummyBuffer);
  364.  
  365.                                         *DummyChar = 0;
  366.                                     }
  367.  
  368.                                     DummyChar = FilePart(SZ_GetString(GadgetArray[GAD_CALL_LOGFILE]));
  369.                                 }
  370.                                 else
  371.                                     DummyChar = "";
  372.  
  373.                                 if(FileRequest = GetFile(LocaleString(MSG_CAPTUREPANEL_SELECT_CALL_LOGFILE_TXT),DummyBuffer,DummyChar,DummyBuffer,NULL,FALSE,FALSE,FALSE,LocaleString(MSG_GLOBAL_SELECT_TXT)))
  374.                                 {
  375.                                     GT_SetGadgetAttrs(GadgetArray[GAD_CALL_LOGFILE],PanelWindow,NULL,
  376.                                         GTST_String,DummyBuffer,
  377.                                     TAG_DONE);
  378.  
  379.                                     FreeAslRequest(FileRequest);
  380.                                 }
  381.  
  382.                                 ReleaseWindow(PanelWindow);
  383.                                 break;
  384.  
  385.                             case GAD_SELECT_CAPTURE_PATH:
  386.  
  387.                                 BlockWindow(PanelWindow);
  388.  
  389.                                 strcpy(DummyBuffer,SZ_GetString(GadgetArray[GAD_CAPTURE_PATH]));
  390.  
  391.                                 if(FileRequest = GetFile(LocaleString(MSG_CAPTUREPANEL_SELECT_CAPTURE_PATH_TXT),DummyBuffer,"",DummyBuffer,NULL,FALSE,FALSE,TRUE,LocaleString(MSG_GLOBAL_SELECT_TXT)))
  392.                                 {
  393.                                     GT_SetGadgetAttrs(GadgetArray[GAD_CAPTURE_PATH],PanelWindow,NULL,
  394.                                         GTST_String,FileRequest -> rf_Dir,
  395.                                     TAG_DONE);
  396.  
  397.                                     FreeAslRequest(FileRequest);
  398.                                 }
  399.  
  400.                                 ReleaseWindow(PanelWindow);
  401.  
  402.                                 break;
  403.  
  404.                             case GAD_SELECT_BUFFER_PATH:
  405.  
  406.                                 BlockWindow(PanelWindow);
  407.  
  408.                                 strcpy(DummyBuffer,SZ_GetString(GadgetArray[GAD_BUFFER_PATH]));
  409.  
  410.                                 if(FileRequest = GetFile(LocaleString(MSG_CAPTUREPANEL_SELECT_BUFFER_PATH_TXT),DummyBuffer,"",DummyBuffer,NULL,FALSE,FALSE,TRUE,LocaleString(MSG_GLOBAL_SELECT_TXT)))
  411.                                 {
  412.                                     GT_SetGadgetAttrs(GadgetArray[GAD_BUFFER_PATH],PanelWindow,NULL,
  413.                                         GTST_String,FileRequest -> rf_Dir,
  414.                                     TAG_DONE);
  415.  
  416.                                     FreeAslRequest(FileRequest);
  417.                                 }
  418.  
  419.                                 ReleaseWindow(PanelWindow);
  420.  
  421.                                 break;
  422.  
  423.                             case GAD_USE:
  424.  
  425.                                 Terminated = TRUE;
  426.  
  427.                                 Config -> CaptureConfig -> LogActions        = SZ_GetChecked(GadgetArray[GAD_LOGACTIONS]);
  428.                                 Config -> CaptureConfig -> LogCall        = SZ_GetChecked(GadgetArray[GAD_LOGCALLS]);
  429.                                 Config -> CaptureConfig -> MaxBufferSize    = SZ_GetInteger(GadgetArray[GAD_MAX_BUFFER_SIZE]);
  430.                                 Config -> CaptureConfig -> BufferEnabled    = SZ_GetChecked(GadgetArray[GAD_BUFFER_ENABLED]);
  431.                                 Config -> CaptureConfig -> ConnectAutoCapture    = SZ_GetChecked(GadgetArray[GAD_CONNECT_AUTO_CAPTURE]);
  432.                                 Config -> CaptureConfig -> CaptureFilterMode    = SZ_GetChecked(GadgetArray[GAD_CAPTURE_FILTER]);
  433.  
  434.                                 strcpy(Config -> CaptureConfig -> LogFileName,    SZ_GetString(GadgetArray[GAD_LOGFILE]));
  435.                                 strcpy(Config -> CaptureConfig -> CapturePath,    SZ_GetString(GadgetArray[GAD_CAPTURE_PATH]));
  436.  
  437.                                 strcpy(Config -> CaptureConfig -> CallLogFileName,    SZ_GetString(GadgetArray[GAD_CALL_LOGFILE]));
  438.                                 strcpy(Config -> CaptureConfig -> BufferPath,    SZ_GetString(GadgetArray[GAD_BUFFER_PATH]));
  439.  
  440.                                 break;
  441.  
  442.                             case GAD_CANCEL:
  443.  
  444.                                 Terminated = TRUE;
  445.  
  446.                                 SaveConfig(PrivateConfig,Config);
  447.  
  448.                                 break;
  449.  
  450.                             case GAD_DEFAULT:
  451.  
  452.                                 *Default    = TRUE;
  453.  
  454.                                 Terminated    = TRUE;
  455.  
  456.                                 break;
  457.                         }
  458.                     }
  459.                 }
  460.             }
  461.  
  462.             RemoveGList(PanelWindow,GadgetList,(UWORD)-1);
  463.  
  464.             PopWindow();
  465.  
  466.             CloseWindow(PanelWindow);
  467.         }
  468.     }
  469.  
  470.     FreeGadgets(GadgetList);
  471.  
  472.     return((BYTE)memcmp(PrivateConfig -> CaptureConfig,Config -> CaptureConfig,sizeof(struct CaptureSettings)));
  473. }
  474.