home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #6 / amigamamagazinepolishissue1998.iso / disks / misc / afcopy_v4.4 / sourcecode / afcopy_config.c < prev    next >
C/C++ Source or Header  |  1981-06-29  |  35KB  |  904 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <exec/types.h>
  5. #include <exec/memory.h>
  6. #include <exec/execbase.h>
  7. #include <exec/nodes.h>
  8. #include <dos/dos.h>
  9. #include <dos/dostags.h>
  10. #include <dos/filehandler.h>
  11. #include <libraries/dos.h>
  12. #include <intuition/intuition.h>
  13. #include <intuition/gadgetclass.h>
  14. #include <libraries/reqtools.h>
  15. #include <libraries/dos.h>
  16. #include <clib/exec_protos.h>
  17. #include <clib/dos_protos.h>
  18. #include <clib/intuition_protos.h>
  19. #include <clib/gadtools_protos.h>
  20. #include <clib/graphics_protos.h>
  21. #include <clib/reqtools_protos.h>
  22.  
  23. #include "afcopy_defines.h"
  24. #include "afcopy_protos.h"
  25. #include "afcopy_vars.h"
  26. #include "afcopy_version.h"
  27.  
  28. static struct NewMenu CfgNewMenu[] = {
  29.     NM_TITLE, (STRPTR)"Devs (Left)", NULL, 0, NULL, NULL,
  30.     NM_ITEM, (STRPTR)"Top 1", NULL, 0, 0L, NULL,
  31.     NM_ITEM, (STRPTR)"Top 2", NULL, 0, 0L, NULL,
  32.     NM_ITEM, (STRPTR)"Top 3", NULL, 0, 0L, NULL,
  33.     NM_ITEM, (STRPTR)"Top 4", NULL, 0, 0L, NULL,
  34.     NM_ITEM, (STRPTR)"Top 5", NULL, 0, 0L, NULL,
  35.     NM_ITEM, (STRPTR)"Top 6", NULL, 0, 0L, NULL,
  36.     NM_ITEM, (STRPTR)"Bottom 1", NULL, 0, 0L, NULL,
  37.     NM_ITEM, (STRPTR)"Bottom 2", NULL, 0, 0L, NULL,
  38.     NM_ITEM, (STRPTR)"Bottom 3", NULL, 0, 0L, NULL,
  39.     NM_ITEM, (STRPTR)"Bottom 4", NULL, 0, 0L, NULL,
  40.     NM_ITEM, (STRPTR)"Bottom 5", NULL, 0, 0L, NULL,
  41.     NM_ITEM, (STRPTR)"Bottom 6", NULL, 0, 0L, NULL,
  42.     NM_TITLE, (STRPTR)"Devs (Right)", NULL, 0, NULL, NULL,
  43.     NM_ITEM, (STRPTR)"Top 1", NULL, 0, 0L, NULL,
  44.     NM_ITEM, (STRPTR)"Top 2", NULL, 0, 0L, NULL,
  45.     NM_ITEM, (STRPTR)"Top 3", NULL, 0, 0L, NULL,
  46.     NM_ITEM, (STRPTR)"Top 4", NULL, 0, 0L, NULL,
  47.     NM_ITEM, (STRPTR)"Top 5", NULL, 0, 0L, NULL,
  48.     NM_ITEM, (STRPTR)"Top 6", NULL, 0, 0L, NULL,
  49.     NM_ITEM, (STRPTR)"Bottom 1", NULL, 0, 0L, NULL,
  50.     NM_ITEM, (STRPTR)"Bottom 2", NULL, 0, 0L, NULL,
  51.     NM_ITEM, (STRPTR)"Bottom 3", NULL, 0, 0L, NULL,
  52.     NM_ITEM, (STRPTR)"Bottom 4", NULL, 0, 0L, NULL,
  53.     NM_ITEM, (STRPTR)"Bottom 5", NULL, 0, 0L, NULL,
  54.     NM_ITEM, (STRPTR)"Bottom 6", NULL, 0, 0L, NULL,
  55.     NM_TITLE, (STRPTR)"User Gads (Left)", NULL, 0, NULL, NULL,
  56.     NM_ITEM, (STRPTR)"Top 1", NULL, 0, 0L, NULL,
  57.     NM_ITEM, (STRPTR)"Top 2", NULL, 0, 0L, NULL,
  58.     NM_ITEM, (STRPTR)"Top 3", NULL, 0, 0L, NULL,
  59.     NM_ITEM, (STRPTR)"Top 4", NULL, 0, 0L, NULL,
  60.     NM_ITEM, (STRPTR)"Top 5", NULL, 0, 0L, NULL,
  61.     NM_ITEM, (STRPTR)"Middle 1", NULL, 0, 0L, NULL,
  62.     NM_ITEM, (STRPTR)"Middle 2", NULL, 0, 0L, NULL,
  63.     NM_ITEM, (STRPTR)"Middle 3", NULL, 0, 0L, NULL,
  64.     NM_ITEM, (STRPTR)"Middle 4", NULL, 0, 0L, NULL,
  65.     NM_ITEM, (STRPTR)"Middle 5", NULL, 0, 0L, NULL,
  66.     NM_ITEM, (STRPTR)"Bottom 1", NULL, 0, 0L, NULL,
  67.     NM_ITEM, (STRPTR)"Bottom 2", NULL, 0, 0L, NULL,
  68.     NM_ITEM, (STRPTR)"Bottom 3", NULL, 0, 0L, NULL,
  69.     NM_ITEM, (STRPTR)"Bottom 4", NULL, 0, 0L, NULL,
  70.     NM_ITEM, (STRPTR)"Bottom 5", NULL, 0, 0L, NULL,
  71.     NM_TITLE, (STRPTR)"User Gads (Right)", NULL, 0, NULL, NULL,
  72.     NM_ITEM, (STRPTR)"Top 1", NULL, 0, 0L, NULL,
  73.     NM_ITEM, (STRPTR)"Top 2", NULL, 0, 0L, NULL,
  74.     NM_ITEM, (STRPTR)"Top 3", NULL, 0, 0L, NULL,
  75.     NM_ITEM, (STRPTR)"Top 4", NULL, 0, 0L, NULL,
  76.     NM_ITEM, (STRPTR)"Top 5", NULL, 0, 0L, NULL,
  77.     NM_ITEM, (STRPTR)"Middle 1", NULL, 0, 0L, NULL,
  78.     NM_ITEM, (STRPTR)"Middle 2", NULL, 0, 0L, NULL,
  79.     NM_ITEM, (STRPTR)"Middle 3", NULL, 0, 0L, NULL,
  80.     NM_ITEM, (STRPTR)"Middle 4", NULL, 0, 0L, NULL,
  81.     NM_ITEM, (STRPTR)"Middle 5", NULL, 0, 0L, NULL,
  82.     NM_ITEM, (STRPTR)"Bottom 1", NULL, 0, 0L, NULL,
  83.     NM_ITEM, (STRPTR)"Bottom 2", NULL, 0, 0L, NULL,
  84.     NM_ITEM, (STRPTR)"Bottom 3", NULL, 0, 0L, NULL,
  85.     NM_ITEM, (STRPTR)"Bottom 4", NULL, 0, 0L, NULL,
  86.     NM_ITEM, (STRPTR)"Bottom 5", NULL, 0, 0L, NULL,
  87.     NM_TITLE, (STRPTR)"Misc", NULL, 0, NULL, NULL,
  88.     NM_ITEM, (STRPTR)"Select Font", NULL, 0, 0L, NULL,
  89.     NM_END, NULL, NULL, 0, 0L, NULL };
  90.  
  91. BOOL LoadConfig(char *configname)
  92. {
  93.   FILE *cfgf;
  94.   char cfgstr[MAX_PATH_LEN+1];
  95.   int loop,loop2,v,r;
  96.   BOOL retval=FALSE;
  97.  
  98.   if ((cfgf=fopen(configname,"r"))==NULL)
  99.   {
  100.     return(FALSE);
  101.   }
  102.   else
  103.   {
  104.     if (fscanf(cfgf,"%6s",cfgstr)==1 && strcmp("AFCOPY",cfgstr)==0)
  105.     {
  106.       mfgets(cfgstr,MAX_PATH_LEN,cfgf);
  107.       mfgets(cfgstr,MAX_PATH_LEN,cfgf);
  108.       v=atoi(cfgstr);
  109.       mfgets(cfgstr,MAX_PATH_LEN,cfgf);
  110.       mfgets(cfgstr,MAX_PATH_LEN,cfgf);
  111.       r=atoi(cfgstr);
  112.  
  113.       if (v>=4 && r>=0)
  114.       {
  115.         mfgets(cfgstr,MAX_PATH_LEN,cfgf);
  116.         strfcpy(cpath[0],cfgstr,1);
  117.         mfgets(cfgstr,MAX_PATH_LEN,cfgf);
  118.         strfcpy(cpath[1],cfgstr,1);
  119.         mfgets(cfgstr,MAX_PATH_LEN,cfgf);
  120.         strfcpy(defaulticonfile,cfgstr,1);
  121.         mfgets(cfgstr,MAX_CANCELCONTMSG_LEN,cfgf);   /**/
  122.         strfcpy(cancelcontmsg,cfgstr,1);
  123.         mfgets(cfgstr,MAX_PATH_LEN,cfgf);   /**/
  124.         strfcpy(outputcon,cfgstr,1);
  125.  
  126.         for (loop=0;loop<MAX_COMMANDS;loop++)
  127.         {
  128.           mfgets(cfgstr,MAX_COMMAND_LEN,cfgf);   /**/
  129.           strfcpy(CommandString[loop],cfgstr,1);
  130.         }
  131.         for (loop2=0;loop2<2;loop2++)
  132.         {
  133.           for (loop=0;loop<12;loop++)
  134.           {
  135.             mfgets(cfgstr,MAX_DEV_GAD_NAME_LEN,cfgf);   /**/
  136.             strfcpy(devicegadnames[loop2][loop],cfgstr,1);
  137.  
  138.             mfgets(cfgstr,MAX_DEV_GAD_ACTUAL_LEN,cfgf);   /**/
  139.             strfcpy(devicegadactual[loop2][loop],cfgstr,1);
  140.           }
  141.         }
  142.         for (loop2=0;loop2<2;loop2++)
  143.         {
  144.           for (loop=0;loop<15;loop++)
  145.           {
  146.             mfgets(cfgstr,MAX_USER_GAD_NAME_LEN,cfgf);    /**/
  147.             strfcpy(usergadnames[loop2][loop],cfgstr,1);
  148.             mfgets(cfgstr,MAX_USER_GAD_ACTUAL_LEN,cfgf); /**/
  149.             strfcpy(usergadactual[loop2][loop],cfgstr,1);
  150.             mfgets(cfgstr,MAX_PATH_LEN,cfgf);
  151.             usergadflags[loop2][loop]=atoi(cfgstr);
  152.           }
  153.         }
  154.         mfgets(cfgstr,MAX_PATH_LEN,cfgf);
  155.         deleteverify=atoi(cfgstr);
  156.  
  157.         mfgets(cfgstr,MAX_PATH_LEN,cfgf);
  158.         setprotverify=atoi(cfgstr);
  159.  
  160.         mfgets(cfgstr,MAX_PATH_LEN,cfgf);
  161.         ignorehiddenbit=atoi(cfgstr);
  162.  
  163.         mfgets(cfgstr,MAX_PATH_LEN,cfgf);
  164.         ignoreinserteddisks=atoi(cfgstr);
  165.  
  166.         mfgets(cfgstr,MAX_PATH_LEN,cfgf);
  167.         mixfilesanddraws=atoi(cfgstr);
  168.  
  169.         mfgets(cfgstr,MAX_PATH_LEN,cfgf);
  170.         autooverwrite=atoi(cfgstr);
  171.  
  172.         mfgets(cfgstr,MAX_PATH_LEN,cfgf);
  173.         filecol=atoi(cfgstr);
  174.  
  175.         mfgets(cfgstr,MAX_PATH_LEN,cfgf);
  176.         dircol=atoi(cfgstr);
  177.  
  178.         mfgets(cfgstr,MAX_PATH_LEN,cfgf);
  179.         highlightcol=atoi(cfgstr);
  180.  
  181.         mfgets(cfgstr,MAX_PATH_LEN,cfgf);
  182.         max_copy_buf_size=atoi(cfgstr);
  183.  
  184.         mfgets(cfgstr,MAX_PATH_LEN,cfgf);
  185.         nomessages=atoi(cfgstr);
  186.  
  187.         mfgets(cfgstr,MAX_PATH_LEN,cfgf);
  188.         lines_per_side=atoi(cfgstr);
  189.         if (lines_per_side<MIN_LINES_PER_SIDE) lines_per_side=MIN_LINES_PER_SIDE;
  190.  
  191.         mfgets(cfgstr,MAX_PATH_LEN,cfgf);
  192.         ignorenodisk=atoi(cfgstr);
  193.  
  194.         mfgets(cfgstr,MAX_PATH_LEN,cfgf);
  195.         useworkbenchscreen=atoi(cfgstr);
  196.  
  197.         mfgets(cfgstr,MAX_PATH_LEN,cfgf);
  198.         scrH=atoi(cfgstr);
  199.  
  200.         mfgets(cfgstr,MAX_PATH_LEN,cfgf);
  201.         scrID=atoi(cfgstr);
  202.  
  203.         mfgets(cfgstr,MAX_PATH_LEN,cfgf);
  204.         shufflescreens=atoi(cfgstr);
  205.  
  206.         mfgets(cfgstr,MAX_FONTNAME_LEN,cfgf);
  207.         strcpy(ScreenFontAttr.ta_Name,cfgstr);
  208.  
  209.         mfgets(cfgstr,MAX_PATH_LEN,cfgf);
  210.         ScreenFontAttr.ta_Flags=atoi(cfgstr);
  211.  
  212.         retval=TRUE;
  213.       }
  214.     }
  215.     else
  216.     {
  217.       rtEZRequest ("Not An AFCopy File",okmsg,NULL,(struct TagItem *)&reqtags,NULL);
  218.     }
  219.     fclose(cfgf);
  220.   }
  221.   return(retval);
  222. }
  223.  
  224. BOOL SaveConfig(char *configname)
  225. {
  226.   FILE *cfgf;
  227.   int loop,loop2;
  228.  
  229.   if ((cfgf=fopen(configname,"w"))==NULL)
  230.   {
  231.     return(FALSE);
  232.   }
  233.   else
  234.   {
  235.     fprintf(cfgf,"AFCOPY CONFIG FILE FOR AFCOPY VERSION\n%d\nREVISION\n%d\n",VERSION,REVISION);
  236.     fprintf(cfgf,"!%s\n!%s\n!%s\n!%s\n!%s\n",cpath[0],cpath[1],defaulticonfile,cancelcontmsg,outputcon);
  237.     for (loop=0;loop<MAX_COMMANDS;loop++)
  238.     {
  239.       fprintf(cfgf,"!%s\n",CommandString[loop]);
  240.     }
  241.     for (loop2=0;loop2<2;loop2++)
  242.     {
  243.       for (loop=0;loop<12;loop++)
  244.       {
  245.         fprintf(cfgf,"!%s\n!%s\n",devicegadnames[loop2][loop],devicegadactual[loop2][loop]);
  246.       }
  247.     }
  248.     for (loop2=0;loop2<2;loop2++)
  249.     {
  250.       for (loop=0;loop<15;loop++)
  251.       {
  252.         fprintf(cfgf,"!%s\n!%s\n%d\n",usergadnames[loop2][loop],usergadactual[loop2][loop],usergadflags[loop2][loop]);
  253.       }
  254.     }
  255.     fprintf(cfgf,"%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%ld\n%d\n%s\n%d\n",
  256.                   deleteverify,
  257.                   setprotverify,
  258.                   ignorehiddenbit,
  259.                   ignoreinserteddisks,
  260.                   mixfilesanddraws,
  261.                   autooverwrite,
  262.                   filecol,
  263.                   dircol,
  264.                   highlightcol,
  265.                   max_copy_buf_size,
  266.                   nomessages,
  267.                   lines_per_side,
  268.                   ignorenodisk,
  269.                   useworkbenchscreen,
  270.                   scrH,
  271.                   scrID,
  272.                   shufflescreens,
  273.                   ScreenFontAttr.ta_Name,
  274.                   ScreenFontAttr.ta_Flags);
  275.     fclose(cfgf);
  276.     return(TRUE);
  277.   }
  278. }
  279.  
  280. void setdefaultconfig( void )
  281. {
  282.   strcpy( devicegadnames[0][0],"DF0:");
  283.   strcpy(devicegadactual[0][0],devicegadnames[0][0]);
  284.   strcpy( devicegadnames[0][1],"DF1:");
  285.   strcpy(devicegadactual[0][1],devicegadnames[0][1]);
  286.   strcpy( devicegadnames[0][2],"DF2:");
  287.   strcpy(devicegadactual[0][2],devicegadnames[0][2]);
  288.   strcpy( devicegadnames[0][3],"PC0:");
  289.   strcpy(devicegadactual[0][3],devicegadnames[0][3]);
  290.   strcpy( devicegadnames[0][4],"PC1:");
  291.   strcpy(devicegadactual[0][4],devicegadnames[0][4]);
  292.   strcpy( devicegadnames[0][5],"RAM:");
  293.   strcpy(devicegadactual[0][5],devicegadnames[0][5]);
  294.  
  295.   strcpy( devicegadnames[0][6],"DH0:");
  296.   strcpy(devicegadactual[0][6],devicegadnames[0][6]);
  297.   strcpy( devicegadnames[0][7],"DH1:");
  298.   strcpy(devicegadactual[0][7],devicegadnames[0][7]);
  299.   strcpy( devicegadnames[0][8],"DH2:");
  300.   strcpy(devicegadactual[0][8],devicegadnames[0][8]);
  301.   strcpy( devicegadnames[0][9],"XH0:");
  302.   strcpy(devicegadactual[0][9],devicegadnames[0][9]);
  303.   strcpy( devicegadnames[0][10],"NET:");
  304.   strcpy(devicegadactual[0][10],devicegadnames[0][10]);
  305.   strcpy( devicegadnames[0][11],"RAD:");
  306.   strcpy(devicegadactual[0][11],devicegadnames[0][11]);
  307.  
  308.   strcpy( devicegadnames[1][0],"DF0:");
  309.   strcpy(devicegadactual[1][0],devicegadnames[1][0]);
  310.   strcpy( devicegadnames[1][1],"DF1:");
  311.   strcpy(devicegadactual[1][1],devicegadnames[1][1]);
  312.   strcpy( devicegadnames[1][2],"DF2:");
  313.   strcpy(devicegadactual[1][2],devicegadnames[1][2]);
  314.   strcpy( devicegadnames[1][3],"PC0:");
  315.   strcpy(devicegadactual[1][3],devicegadnames[1][3]);
  316.   strcpy( devicegadnames[1][4],"PC1:");
  317.   strcpy(devicegadactual[1][4],devicegadnames[1][4]);
  318.   strcpy( devicegadnames[1][5],"RAM:");  // dontforget CPATH[] below..
  319.   strcpy(devicegadactual[1][5],devicegadnames[1][5]);
  320.  
  321.   strcpy( devicegadnames[1][6],"DH0:");
  322.   strcpy(devicegadactual[1][6],devicegadnames[1][6]);
  323.   strcpy( devicegadnames[1][7],"DH1:");
  324.   strcpy(devicegadactual[1][7],devicegadnames[1][7]);
  325.   strcpy( devicegadnames[1][8],"DH2:");
  326.   strcpy(devicegadactual[1][8],devicegadnames[1][8]);
  327.   strcpy( devicegadnames[1][9],"XH0:");
  328.   strcpy(devicegadactual[1][9],devicegadnames[1][9]);
  329.   strcpy( devicegadnames[1][10],"NET:");
  330.   strcpy(devicegadactual[1][10],devicegadnames[1][10]);
  331.   strcpy( devicegadnames[1][11],"RAD:");
  332.   strcpy(devicegadactual[1][11],devicegadnames[1][11]);
  333.  
  334.   strcpy(outputcon,"CON:0/11/640/200/AFCopy Command Output/SCREEN @S@/AUTO/CLOSE/WAIT/ALT0/11/100/30");
  335.   strcpy(defaulticonfile,"env:sys/def_drawer.info");
  336.   strcpy(cancelcontmsg,"Continue|Cancel");
  337.  
  338.   strcpy(ScreenFontAttr.ta_Name,"topaz.font");
  339.   strcpy(cpath[0],devicegadnames[1][5]);
  340.   strcpy(cpath[1],cpath[0]);
  341.   ScreenFontAttr.ta_YSize=8;
  342.   ScreenFontAttr.ta_Style=FS_NORMAL;
  343.   ScreenFontAttr.ta_Flags=FPB_ROMFONT;
  344.   deleteverify=TRUE;
  345.   setprotverify=TRUE;
  346.   ignorehiddenbit=TRUE;
  347.   ignorenodisk=FALSE;
  348.   ignoreinserteddisks=TRUE;
  349.   mixfilesanddraws=FALSE;
  350.   autooverwrite=FALSE;
  351.   // set to TRUE as of v4.2a
  352.   nomessages=TRUE;
  353.   max_copy_buf_size=1572864;  /* 1.5MB!!! should be plenty!*/
  354.   // as of v4.2 afcopy defaults to custom screen!
  355.   lines_per_side=30;
  356.   useworkbenchscreen=FALSE;
  357.   scrID=PAL_MONITOR_ID | HIRES_KEY;
  358.   scrH=260;
  359.   dircol=1;
  360.   filecol=2;
  361.   highlightcol=3;
  362.   shufflescreens=FALSE;
  363.   strcpy(CommandString[C_View],"PPSHOW \"@<@@F@\"");
  364.   strcpy(CommandString[C_Read],"PPMORE \"@<@@F@\"");
  365.     // updated for v4.1.
  366.   strcpy(CommandString[C_Edit],"TTX \"@<@@F@\" SCREEN @S@");
  367.   strcpy(CommandString[C_Hear],"HEAR \"@<@@F@\"");
  368.   strcpy(CommandString[C_Execute],"EXECUTE \"@<@@F@\"");
  369.   strcpy(CommandString[C_Archive],"LHA");
  370.   strcpy(CommandString[C_Unarc],"LHA");
  371.   strcpy(batchstring,"@<@@F@");
  372. }
  373.  
  374. struct Gadget *createModGadgets(struct Gadget **glistptr, void *vi,
  375.     UWORD topborder, struct Gadget *gads[],short side,int num)
  376. {
  377.   struct NewGadget ng;
  378.   struct Gadget *gad;
  379.  
  380. #ifdef DEBUG
  381.   puts("createmodGadgets()");
  382. #endif
  383.  
  384.   gad = CreateContext(glistptr);
  385.  
  386.   ng.ng_LeftEdge   = 5;
  387.   ng.ng_TopEdge    = 1+topborder;
  388.   ng.ng_Width      = 8;
  389.   ng.ng_Height     = 10;
  390.   ng.ng_TextAttr   = &ScreenFontAttr;
  391.   ng.ng_VisualInfo = vi;
  392.   ng.ng_Flags      = PLACETEXT_RIGHT;
  393.   ng.ng_GadgetID   = G_m_sendfiles;
  394.   ng.ng_GadgetText = "Send File Names";
  395.   gads[G_m_sendfiles] = gad = CreateGadget(CHECKBOX_KIND, gad, &ng,
  396.                                           GTCB_Checked,usergadflags[side][num] & UG_SENDFILES,
  397.                                           TAG_END);
  398.   ng.ng_TopEdge   += ng.ng_Height+2;
  399.   ng.ng_GadgetID   = G_m_readc;
  400.   ng.ng_GadgetText = "Read Current";
  401.   gads[G_m_readc] = gad = CreateGadget(CHECKBOX_KIND, gad, &ng,
  402.                                           GTCB_Checked,usergadflags[side][num] & UG_READC,
  403.                                           TAG_END);
  404.   ng.ng_TopEdge   += ng.ng_Height+2;
  405.   ng.ng_GadgetID   = G_m_reado;
  406.   ng.ng_GadgetText = "Read Opposite";
  407.   gads[G_m_reado] = gad = CreateGadget(CHECKBOX_KIND, gad, &ng,
  408.                                           GTCB_Checked,usergadflags[side][num] & UG_READO,
  409.                                           TAG_END);
  410.   ng.ng_TopEdge   += ng.ng_Height+2;
  411.   ng.ng_GadgetID   = G_m_modify;
  412.   ng.ng_GadgetText = "Run Asynch";
  413.   gads[G_m_asynch] = gad = CreateGadget(CHECKBOX_KIND, gad, &ng,
  414.                                           GTCB_Checked,usergadflags[side][num] & UG_ASYNCH,
  415.                                           TAG_END);
  416.  
  417.   ng.ng_LeftEdge   = 160;
  418.   ng.ng_TopEdge    = 1+topborder;
  419.   ng.ng_GadgetID   = G_m_cdc;
  420.   ng.ng_GadgetText = "CD to Current";
  421.   gads[G_m_cdc] = gad = CreateGadget(CHECKBOX_KIND, gad, &ng,
  422.                                           GTCB_Checked,usergadflags[side][num] & UG_CDC,
  423.                                           TAG_END);
  424.   ng.ng_TopEdge   += ng.ng_Height+2;
  425.   ng.ng_GadgetID   = G_m_cdo;
  426.   ng.ng_GadgetText = "CD to Opposite";
  427.   gads[G_m_cdo] = gad = CreateGadget(CHECKBOX_KIND, gad, &ng,
  428.                                           GTCB_Checked,usergadflags[side][num] & UG_CDO,
  429.                                           TAG_END);
  430.   ng.ng_TopEdge   += ng.ng_Height+2;
  431.   ng.ng_GadgetID   = G_m_modify;
  432.   ng.ng_GadgetText = "Modify Command";
  433.   gads[G_m_modify] = gad = CreateGadget(CHECKBOX_KIND, gad, &ng,
  434.                                           GTCB_Checked,usergadflags[side][num] & UG_MODIFY,
  435.                                           TAG_END);
  436.   ng.ng_TopEdge   += ng.ng_Height+2;
  437.   ng.ng_GadgetID   = G_m_shuffle;
  438.   ng.ng_GadgetText = "Shuffle Screen";
  439.   gads[G_m_shuffle] = gad = CreateGadget(CHECKBOX_KIND, gad, &ng,
  440.                                           GTCB_Checked,usergadflags[side][num] & UG_SHUFFLE,
  441.                                           TAG_END);
  442.  
  443.   ng.ng_LeftEdge   = 5;
  444.   ng.ng_TopEdge   += ng.ng_Height+2+14; /* 14 for font...*/
  445.   ng.ng_Width      = 298;
  446.   ng.ng_Height     = 14;
  447.   ng.ng_Flags      = PLACETEXT_ABOVE;
  448.   ng.ng_GadgetText = "Gadget Name";
  449.   ng.ng_GadgetID   = G_m_gadname;
  450.   gads[G_m_gadname] = gad = CreateGadget(STRING_KIND, gad, &ng,
  451.                      GTST_String,   usergadnames[side][num],
  452.                      GTST_MaxChars, MAX_USER_GAD_NAME_LEN-1,
  453.                      TAG_END);
  454.   ng.ng_TopEdge   += ng.ng_Height+2+12;
  455.   ng.ng_GadgetText = "Command Name (use @x@ codes)";
  456.   ng.ng_GadgetID   = G_m_command;
  457.   gads[G_m_command] = gad = CreateGadget(STRING_KIND, gad, &ng,
  458.                      GTST_String,   usergadactual[side][num],
  459.                      GTST_MaxChars, MAX_USER_GAD_ACTUAL_LEN-1,
  460.                      TAG_END);
  461.  
  462.  
  463.   return(gad);
  464. }
  465.  
  466. struct Window *OpenModWindow(void)
  467.  
  468. {
  469.  
  470. #ifdef DEBUG
  471.   puts("OpenModWindow()");
  472. #endif
  473.  
  474.   struct Window *win;
  475.  
  476.   if(win=OpenWindowTags(NULL,
  477.                           WA_Left,W->LeftEdge+165,
  478.                           WA_Top,W->TopEdge+50,
  479.                           WA_Width,310,
  480.                           WA_Height,128,
  481.                           WA_AutoAdjust,    FALSE,
  482.                           WA_DragBar,       TRUE,
  483.                           WA_DepthGadget,   TRUE,
  484.                           WA_Activate,      TRUE,
  485.                           WA_CloseGadget,   TRUE,
  486.                           WA_SimpleRefresh, FALSE,
  487.                           WA_IDCMP,         IDCMP_CLOSEWINDOW,
  488.                           WA_Title,"Modify Gadget!",
  489.                           WA_PubScreen, mysc,
  490.                           WA_Gadgets,modglist,
  491.                           WA_ScreenTitle,screentitle,
  492.                           TAG_END))
  493.   {
  494.     GT_RefreshWindow(win, NULL);
  495.   }
  496.   return(win);
  497. }
  498.  
  499.  
  500. BOOL ModGadget(short side, int num)  /* returns -1 if failed or cancelled.. */
  501. {
  502.   struct IntuiMessage *imsg;
  503.   BOOL done=FALSE;
  504.   if (createModGadgets(&modglist, vi, topborder,modgads,side,num))
  505.   {
  506.     if ((modw=OpenModWindow()))
  507.     {
  508.       do
  509.       {
  510.         Wait (1 << modw->UserPort->mp_SigBit);
  511.         if ((imsg = GT_GetIMsg(modw->UserPort)))
  512.         {
  513.           if (imsg->Class == IDCMP_CLOSEWINDOW)
  514.           {
  515.             done=TRUE;
  516.           }
  517.           GT_ReplyIMsg(imsg);
  518.         }
  519.       } while (!done);
  520.       CloseWindow(modw);
  521.       usergadflags[side][num]=0;
  522.       if (modgads[G_m_sendfiles] ->Flags & GFLG_SELECTED) usergadflags[side][num]+=UG_SENDFILES;
  523.       if (modgads[G_m_readc] ->Flags & GFLG_SELECTED) usergadflags[side][num]+=UG_READC;
  524.       if (modgads[G_m_reado] ->Flags & GFLG_SELECTED) usergadflags[side][num]+=UG_READO;
  525.       if (modgads[G_m_cdc] ->Flags & GFLG_SELECTED) usergadflags[side][num]+=UG_CDC;
  526.       if (modgads[G_m_cdo] ->Flags & GFLG_SELECTED) usergadflags[side][num]+=UG_CDO;
  527.       if (modgads[G_m_modify] ->Flags & GFLG_SELECTED) usergadflags[side][num]+=UG_MODIFY;
  528.       if (modgads[G_m_asynch] ->Flags & GFLG_SELECTED) usergadflags[side][num]+=UG_ASYNCH;
  529.       if (modgads[G_m_shuffle] ->Flags & GFLG_SELECTED) usergadflags[side][num]+=UG_SHUFFLE;
  530.       strcpy(usergadnames[side][num],((struct StringInfo *)modgads[G_m_gadname]->SpecialInfo)->Buffer);
  531.       strcpy(usergadactual[side][num],((struct StringInfo *)modgads[G_m_command]->SpecialInfo)->Buffer);
  532.     }
  533.     FreeGadgets(modglist);
  534.   }
  535.   return(done); /* done will be false if window didnt open or
  536.                                               cadgets weren't created. */
  537. }
  538.  
  539. struct Gadget *createCfgGadgets(struct Gadget **glistptr, void *vi,
  540.     UWORD topborder, struct Gadget *gads[])
  541. {
  542.   struct NewGadget ng;
  543.   struct Gadget *gad;
  544.  
  545. #ifdef DEBUG
  546.   puts("createCfgGadgets()");
  547. #endif
  548.  
  549.   gad = CreateContext(glistptr);
  550.  
  551.   ng.ng_LeftEdge   = 5;
  552.   ng.ng_TopEdge    = 1+topborder;
  553.   ng.ng_Width      = 8;
  554.   ng.ng_Height     = 10;
  555.   ng.ng_TextAttr   = &ScreenFontAttr;
  556.   ng.ng_VisualInfo = vi;
  557.   ng.ng_Flags      = PLACETEXT_RIGHT;
  558.   ng.ng_GadgetID   = G_Cdelverify;
  559.   ng.ng_GadgetText = "Delete Verify";
  560.   gads[G_Cdelverify] = gad = CreateGadget(CHECKBOX_KIND, gad, &ng,
  561.                                           GTCB_Checked,deleteverify,
  562.                                           TAG_END);
  563.   ng.ng_TopEdge   += ng.ng_Height+2;
  564.   ng.ng_GadgetID   = G_Cignorehiddenbit;
  565.   ng.ng_GadgetText = "Ignore Hidden Bit";
  566.   gads[G_Cignorehiddenbit] = gad = CreateGadget(CHECKBOX_KIND, gad, &ng,
  567.                                           GTCB_Checked,ignorehiddenbit,
  568.                                           TAG_END);
  569.   ng.ng_TopEdge   += ng.ng_Height+2;
  570.   ng.ng_GadgetID   = G_Csetprotverify;
  571.   ng.ng_GadgetText = "Set Protection Verify";
  572.   gads[G_Csetprotverify] = gad = CreateGadget(CHECKBOX_KIND, gad, &ng,
  573.                                           GTCB_Checked,setprotverify,
  574.                                           TAG_END);
  575.   ng.ng_TopEdge   += ng.ng_Height+2;
  576.   ng.ng_GadgetID   = G_Cignoreinserteddisks;
  577.   ng.ng_GadgetText = "Ignore Disk Insert";
  578.   gads[G_Cignoreinserteddisks] = gad = CreateGadget(CHECKBOX_KIND, gad, &ng,
  579.                                           GTCB_Checked,ignoreinserteddisks,
  580.                                           TAG_END);
  581.   ng.ng_TopEdge   += ng.ng_Height+2;
  582.   ng.ng_GadgetID   = G_Cmixfilesanddraws;
  583.   ng.ng_GadgetText = "Mix Files and Dirs";
  584.   gads[G_Cmixfilesanddraws] = gad = CreateGadget(CHECKBOX_KIND, gad, &ng,
  585.                                           GTCB_Checked,mixfilesanddraws,
  586.                                           TAG_END);
  587.   ng.ng_TopEdge   += ng.ng_Height+2;
  588.   ng.ng_GadgetID   = G_Cautooverwrite;
  589.   ng.ng_GadgetText = "Auto Overwrite";
  590.   gads[G_Cautooverwrite] = gad = CreateGadget(CHECKBOX_KIND, gad, &ng,
  591.                                           GTCB_Checked,autooverwrite,
  592.                                           TAG_END);
  593.   ng.ng_TopEdge   += ng.ng_Height+2;
  594.   ng.ng_GadgetID   = G_Cnomessages;
  595.   ng.ng_GadgetText = "No Command Error Msg's";
  596.   gads[G_Cnomessages] = gad = CreateGadget(CHECKBOX_KIND, gad, &ng,
  597.                                           GTCB_Checked,nomessages,
  598.                                           TAG_END);
  599.   ng.ng_TopEdge   += ng.ng_Height+2;
  600.   ng.ng_GadgetID   = G_Cignorenodisk;
  601.   ng.ng_GadgetText = "Ignore No Disk In Drive";
  602.   gads[G_Cignorenodisk] = gad = CreateGadget(CHECKBOX_KIND, gad, &ng,
  603.                                           GTCB_Checked,ignorenodisk,
  604.                                           TAG_END);
  605.   ng.ng_TopEdge   += ng.ng_Height+2;
  606.   ng.ng_GadgetText = "Shuffle Screens on command";
  607.   ng.ng_GadgetID   = G_Cshufflescreens;
  608.   gads[G_Cshufflescreens] = gad = CreateGadget(CHECKBOX_KIND, gad, &ng,
  609.                                           GTCB_Checked,shufflescreens,
  610.                                           TAG_END);
  611.   ng.ng_TopEdge   += ng.ng_Height+2;
  612.   ng.ng_GadgetText = "Use Workbench Screen";
  613.   ng.ng_GadgetID   = G_Cuseworkbenchscreen;
  614.   gads[G_Cuseworkbenchscreen] = gad = CreateGadget(CHECKBOX_KIND, gad, &ng,
  615.                                           GTCB_Checked,useworkbenchscreen,
  616.                                           TAG_END);
  617.  
  618.   ng.ng_TopEdge   += ng.ng_Height+2;
  619.   ng.ng_Height    += 2;
  620.   ng.ng_Width      = CFG_STRGAD_WIDTH;
  621.   ng.ng_GadgetText = "Screen Mode";
  622.   ng.ng_GadgetID   = G_Cpickscreen;
  623.   ng.ng_Flags      = NG_HIGHLABEL|PLACETEXT_IN;
  624.   gads[G_Cpickscreen] = gad = CreateGadget(BUTTON_KIND, gad, &ng,TAG_END);
  625.  
  626.   ng.ng_Flags      = PLACETEXT_RIGHT; /* reset this cos changed for screenmode button*/
  627.   ng.ng_TopEdge   += ng.ng_Height+2;
  628.   ng.ng_Width      = 120;
  629.   ng.ng_Height     = 20;
  630.   ng.ng_GadgetText = "File Colour";
  631.   ng.ng_GadgetID   = G_Cfilecol;
  632.  
  633.   gads[G_Cfilecol] = gad = CreateGadget(PALETTE_KIND, gad, &ng,
  634.                      GTPA_Color,  filecol,
  635.                      GTPA_Depth,    mysc->RastPort.BitMap->Depth,
  636.                      GTPA_ColorOffset , 0,
  637.                      TAG_END);
  638.   ng.ng_TopEdge   += ng.ng_Height+2;
  639.   ng.ng_GadgetText = "Dir Colour";
  640.   ng.ng_GadgetID   = G_Cdircol;
  641.   gads[G_Cdircol] = gad = CreateGadget(PALETTE_KIND, gad, &ng,
  642.                      GTPA_Color,  dircol,
  643.                      GTPA_Depth,    mysc->RastPort.BitMap->Depth,
  644.                      GTPA_ColorOffset , 0,
  645.                      TAG_END);
  646.   ng.ng_TopEdge   += ng.ng_Height+2;
  647.   ng.ng_GadgetText = "Highlight";
  648.   ng.ng_GadgetID   = G_Chighlightcol;
  649.   gads[G_Chighlightcol] = gad = CreateGadget(PALETTE_KIND, gad, &ng,
  650.                      GTPA_Color,  highlightcol,
  651.                      GTPA_Depth,    mysc->RastPort.BitMap->Depth,
  652.                      GTPA_ColorOffset , 0,
  653.                      TAG_END);
  654.  
  655.   ng.ng_LeftEdge   = 250;
  656.   ng.ng_TopEdge    = 1+topborder;
  657.   ng.ng_Width      = CFG_STRGAD_WIDTH;
  658.   ng.ng_Height     = 14;
  659.   ng.ng_GadgetText = "View";
  660.   ng.ng_GadgetID   = G_Cview;
  661.   gads[G_Cview] = gad = CreateGadget(STRING_KIND, gad, &ng,
  662.                      GTST_String,   CommandString[C_View],
  663.                      GTST_MaxChars, MAX_COMMAND_LEN,
  664.                      TAG_END);
  665.   ng.ng_TopEdge   += ng.ng_Height+2;
  666.   ng.ng_GadgetText = "Read";
  667.   ng.ng_GadgetID   = G_Cread;
  668.   gads[G_Cread] = gad = CreateGadget(STRING_KIND, gad, &ng,
  669.                      GTST_String,   CommandString[C_Read],
  670.                      GTST_MaxChars, MAX_COMMAND_LEN,
  671.                      TAG_END);
  672.   ng.ng_TopEdge   += ng.ng_Height+2;
  673.   ng.ng_GadgetText = "Edit";
  674.   ng.ng_GadgetID   = G_Cedit;
  675.   gads[G_Cedit] = gad = CreateGadget(STRING_KIND, gad, &ng,
  676.                      GTST_String,   CommandString[C_Edit],
  677.                      GTST_MaxChars, MAX_COMMAND_LEN,
  678.                      TAG_END);
  679.   ng.ng_TopEdge   += ng.ng_Height+2;
  680.   ng.ng_GadgetText = "Hear";
  681.   ng.ng_GadgetID   = G_Chear;
  682.   gads[G_Chear] = gad = CreateGadget(STRING_KIND, gad, &ng,
  683.                      GTST_String,   CommandString[C_Hear],
  684.                      GTST_MaxChars, MAX_COMMAND_LEN,
  685.                      TAG_END);
  686.   ng.ng_TopEdge   += ng.ng_Height+2;
  687.   ng.ng_GadgetText = "Execute";
  688.   ng.ng_GadgetID   = G_Cexecute;
  689.   gads[G_Cexecute] = gad = CreateGadget(STRING_KIND, gad, &ng,
  690.                      GTST_String,   CommandString[C_Execute],
  691.                      GTST_MaxChars, MAX_COMMAND_LEN,
  692.                      TAG_END);
  693.   ng.ng_TopEdge   += ng.ng_Height+2;
  694.   ng.ng_GadgetText = "Archiver";
  695.   ng.ng_GadgetID   = G_Carchive;
  696.   gads[G_Carchive] = gad = CreateGadget(STRING_KIND, gad, &ng,
  697.                      GTST_String,   CommandString[C_Archive],
  698.                      GTST_MaxChars, MAX_COMMAND_LEN,
  699.                      TAG_END);
  700.   ng.ng_TopEdge   += ng.ng_Height+2;
  701.   ng.ng_GadgetText = "Un-Archiver";
  702.   ng.ng_GadgetID   = G_Cunarc;
  703.   gads[G_Cunarc] = gad = CreateGadget(STRING_KIND, gad, &ng,
  704.                      GTST_String,   CommandString[C_Unarc],
  705.                      GTST_MaxChars, MAX_COMMAND_LEN,
  706.                      TAG_END);
  707.   ng.ng_TopEdge   += ng.ng_Height+2;
  708.   ng.ng_GadgetText = "Console Window";
  709.   ng.ng_GadgetID   = G_Coutputcon;
  710.   gads[G_Coutputcon] = gad = CreateGadget(STRING_KIND, gad, &ng,
  711.                      GTST_String,   outputcon,
  712.                      GTST_MaxChars, MAX_PATH_LEN,
  713.                      TAG_END);
  714.   ng.ng_TopEdge   += ng.ng_Height+2;
  715.   ng.ng_GadgetText = "Draw Icon File";
  716.   ng.ng_GadgetID   = G_Cdefaulticonfile;
  717.   gads[G_Cdefaulticonfile] = gad = CreateGadget(STRING_KIND, gad, &ng,
  718.                      GTST_String,   defaulticonfile,
  719.                      GTST_MaxChars, MAX_PATH_LEN,
  720.                      TAG_END);
  721.   ng.ng_TopEdge   += ng.ng_Height+2;
  722.   ng.ng_GadgetText = "Requester Message";
  723.   ng.ng_GadgetID   = G_Ccancelcontmsg;
  724.   gads[G_Ccancelcontmsg] = gad = CreateGadget(STRING_KIND, gad, &ng,
  725.                      GTST_String,   cancelcontmsg,
  726.                      GTST_MaxChars, MAX_CANCELCONTMSG_LEN,
  727.                      TAG_END);
  728.   ng.ng_TopEdge   += ng.ng_Height+2;
  729.   ng.ng_GadgetText = "Lines per side";
  730.   ng.ng_GadgetID   = G_Clines;
  731.   gads[G_Clines] = gad = CreateGadget(INTEGER_KIND, gad, &ng,
  732.                      GTIN_Number,   lines_per_side,
  733.                      GTIN_MaxChars, 3,
  734.                      TAG_END);
  735.  
  736.  
  737.  
  738.   return(gad);
  739. }
  740.  
  741. struct Window *OpenCfgWindow(void)
  742.  
  743. {
  744.  
  745. #ifdef DEBUG
  746.   puts("OpenCfgWindow()");
  747. #endif
  748.  
  749.   struct Window *win;
  750.  
  751.   if (win=OpenWindowTags(NULL,
  752.                           WA_Left,W->LeftEdge+CFGLEFT,
  753.                           WA_Top,W->TopEdge+CFGTOP,
  754.                           WA_Width,CFGWIDTH,
  755.                           WA_Height,CFGHEIGHT,
  756.                           WA_AutoAdjust,    FALSE,
  757.                           WA_DragBar,       TRUE,
  758.                           WA_DepthGadget,   TRUE,
  759.                           WA_Activate,      TRUE,
  760.                           WA_CloseGadget,   TRUE,
  761.                           WA_SimpleRefresh, FALSE,
  762.                           WA_IDCMP,         PALETTEIDCMP|BUTTONIDCMP|IDCMP_CLOSEWINDOW|IDCMP_MENUPICK,
  763.                           WA_Title,"AFCOPY Configuration",
  764.                           WA_NewLookMenus,  TRUE,
  765.                           WA_PubScreen, mysc,
  766.                           WA_Gadgets,cfgglist,
  767.                           WA_ScreenTitle,screentitle,
  768.                           TAG_END))
  769.   {
  770.     GT_RefreshWindow(win, NULL);
  771.     Move(win->RPort,250,CFGHEIGHT-15);
  772.     SetAPen(win->RPort,2); // white
  773.     Text(win->RPort,"Use The Menus!",14);
  774.   }
  775.   return(win);
  776. }
  777.  
  778.  
  779. BOOL EditConfig( void )
  780. {
  781.   struct IntuiMessage *imsg;
  782.   BOOL done=FALSE;
  783.   struct Gadget *gad;
  784.  
  785.   if (createCfgGadgets(&cfgglist, vi, topborder,cfggads))
  786.   {
  787.     if ((cfgw=OpenCfgWindow()))
  788.     {
  789.       if (CfgMenu = CreateMenus( CfgNewMenu, GTMN_NewLookMenus,TRUE,
  790.                                                 TAG_DONE))
  791.       {
  792.         LayoutMenus(CfgMenu,vi,GTMN_TextAttr, &ScreenFontAttr,
  793.                                GTMN_NewLookMenus,TRUE,TAG_DONE);
  794.         SetMenuStrip(cfgw,CfgMenu);
  795.  
  796.         SetFont(cfgw->RPort,ScreenFont);
  797.         SetAPen(cfgw->RPort,2);
  798.         do
  799.         {
  800.           Wait (1 << cfgw->UserPort->mp_SigBit);
  801.           if ((imsg = GT_GetIMsg(cfgw->UserPort)))
  802.           {
  803.             if (imsg->Class == IDCMP_CLOSEWINDOW)
  804.             {
  805.               done=TRUE;
  806.             }
  807.             if (imsg->Class == IDCMP_MENUPICK)
  808.             {
  809.               switch (MENUNUM(imsg->Code))
  810.               {
  811.                 case 0:
  812.                 case 1:
  813.                   if (rtGetString (devicegadnames[MENUNUM(imsg->Code)][ITEMNUM(imsg->Code)], MAX_DEV_GAD_NAME_LEN, "Enter Device Gadget Name", NULL,RT_Window,W, TAG_END))
  814.                   {
  815.                     rtGetString (devicegadactual[MENUNUM(imsg->Code)][ITEMNUM(imsg->Code)], MAX_DEV_GAD_ACTUAL_LEN, "Enter Actual Device Name", NULL,RT_Window,W, TAG_END);
  816.                   }
  817.                   break;
  818.                 case 2:
  819.                 case 3:
  820.                   ModGadget(MENUNUM(imsg->Code)-2,ITEMNUM(imsg->Code));
  821.                   break;
  822.                 case 4: /* misc */
  823.                   switch (ITEMNUM(imsg->Code))
  824.                   {
  825.                     case 0: /* pick font! */
  826.                       do
  827.                       {
  828.                         CloseFont(ScreenFont);
  829.                         PickFont();
  830.                       } while (GetFont()==0);
  831.                       break;
  832.                   }
  833.                   break;
  834.               }
  835.             }
  836.             if (imsg->Class == IDCMP_GADGETUP)
  837.             {
  838.               gad = (struct Gadget *)imsg->IAddress;
  839.               switch (gad->GadgetID)
  840.               {
  841.                 case G_Cfilecol:
  842.                   filecol=imsg->Code;
  843.                   break;
  844.                 case G_Cdircol:
  845.                   dircol=imsg->Code;
  846.                   break;
  847.                 case G_Chighlightcol:
  848.                   highlightcol=imsg->Code;
  849.                   break;
  850.                 case G_Cpickscreen:
  851.                   pickscreen();
  852.                   GT_SetGadgetAttrs(cfggads[G_Cuseworkbenchscreen],cfgw,NULL,
  853.                                     GTCB_Checked,useworkbenchscreen,
  854.                                     TAG_END);
  855.                   break;
  856.               }
  857.             }
  858.             GT_ReplyIMsg(imsg);
  859.           }
  860.         } while (!done);
  861.         ClearMenuStrip(cfgw);
  862.         FreeMenus(CfgMenu);
  863.       }
  864.       CloseWindow(cfgw);
  865.       if (cfggads[G_Cdelverify] ->Flags & GFLG_SELECTED) deleteverify=TRUE; else deleteverify=FALSE;
  866.       if (cfggads[G_Csetprotverify] ->Flags & GFLG_SELECTED) setprotverify=TRUE; else setprotverify=FALSE;
  867.       if (cfggads[G_Cignorehiddenbit] ->Flags & GFLG_SELECTED) ignorehiddenbit=TRUE; else ignorehiddenbit=FALSE;
  868.       if (cfggads[G_Cignoreinserteddisks] ->Flags & GFLG_SELECTED) ignoreinserteddisks=TRUE; else ignoreinserteddisks=FALSE;
  869.       if (cfggads[G_Cmixfilesanddraws] ->Flags & GFLG_SELECTED) mixfilesanddraws=TRUE; else mixfilesanddraws=FALSE;
  870.       if (cfggads[G_Cautooverwrite] ->Flags & GFLG_SELECTED) autooverwrite=TRUE; else autooverwrite=FALSE;
  871.       if (cfggads[G_Cnomessages] ->Flags & GFLG_SELECTED) nomessages=TRUE; else nomessages=FALSE;
  872.       if (cfggads[G_Cignorenodisk] ->Flags & GFLG_SELECTED) ignorenodisk=TRUE; else ignorenodisk=FALSE;
  873.       if (cfggads[G_Cuseworkbenchscreen] ->Flags & GFLG_SELECTED) useworkbenchscreen=TRUE; else useworkbenchscreen=FALSE;
  874.       if (cfggads[G_Cshufflescreens] ->Flags & GFLG_SELECTED) shufflescreens=TRUE; else shufflescreens=FALSE;
  875.  
  876.       strcpy(defaulticonfile,((struct StringInfo *)cfggads[G_Cdefaulticonfile]->SpecialInfo)->Buffer);
  877.       strcpy(outputcon,((struct StringInfo *)cfggads[G_Coutputcon]->SpecialInfo)->Buffer);
  878.       strcpy(cancelcontmsg,((struct StringInfo *)cfggads[G_Ccancelcontmsg]->SpecialInfo)->Buffer);
  879.  
  880.       strcpy(CommandString[C_View],((struct StringInfo *)cfggads[G_Cview]->SpecialInfo)->Buffer);
  881.       strcpy(CommandString[C_Read],((struct StringInfo *)cfggads[G_Cread]->SpecialInfo)->Buffer);
  882.       strcpy(CommandString[C_Edit],((struct StringInfo *)cfggads[G_Cedit]->SpecialInfo)->Buffer);
  883.       strcpy(CommandString[C_Hear],((struct StringInfo *)cfggads[G_Chear]->SpecialInfo)->Buffer);
  884.       strcpy(CommandString[C_Execute],((struct StringInfo *)cfggads[G_Cexecute]->SpecialInfo)->Buffer);
  885.       strcpy(CommandString[C_Archive],((struct StringInfo *)cfggads[G_Carchive]->SpecialInfo)->Buffer);
  886.       strcpy(CommandString[C_Unarc],((struct StringInfo *)cfggads[G_Cunarc]->SpecialInfo)->Buffer);
  887.       lines_per_side=(( struct StringInfo * )cfggads[G_Clines]->SpecialInfo )->LongInt;
  888.       if (lines_per_side <MIN_LINES_PER_SIDE) lines_per_side=MIN_LINES_PER_SIDE;
  889.  
  890.       if (!useworkbenchscreen && scrID==-1) useworkbenchscreen=TRUE;
  891.  
  892.     }
  893.     FreeGadgets(cfgglist);
  894.   }
  895.   checkcustomscreenwindows();
  896.   closeafcopywindow();
  897.   if (openafcopywindow())
  898.   {
  899.     UpdateMainWindow();
  900.     return(TRUE);
  901.   }
  902.   else return(FALSE);
  903. }
  904.