/* 
*    This Is The Routine That Creates A Data_Base from A List Of Files
*    This Routine Needs Hooks To The Custom Scan Functions Built In.
*/

#include <Includes/Main_Global.h>

void Create_Base( void )
{
   struct FileRequester 	*Requester;         // The Actuall File Requester Structure
   struct WBArg 		*Files;	           // Array To The File Name
   
    
    
    
   char         *Directory;	         		// Directory Where They Live
   char         *Buffer;   		       // Handy Buffer
   char         Single;

   struct	ListerTransfer	*Current;	//INUSE
   struct	FileInfoBlock	*Info;
   LONG		Entries;
   FILE				*Diz_Handle;	//INUSE
   BPTR				Diz_Lock;
   
   int	  NumberofFiles=0,Counter;	//INUSE
  
  
   get(App->Main_Lister,MUIA_List_Entries,&Entries);
     if(Entries)
	{
	  if(!MUI_Request(App->App, App->Main_Window, NULL, "Warning...", "*_Append|_Overwrite", "DataBase Already Present"))
	     DoMethod(App->Main_Lister,MUIM_List_Clear);
	}
  
   Requester = AllocAslRequestTags(ASL_FileRequest,
   				ASL_Hail,		"Select File's To DIZ.",
				ASL_Pattern,		"(#?.dms|#?.lha|#?.lzx|#?.nfo|#?.txt|#?.exe|#?.lzh)",
  				ASLFR_PositiveText,	"Accept",
  				ASLFR_NegativeText,	"Reject",
				ASL_FuncFlags,		FILF_MULTISELECT,
				TAG_DONE);
 Buffer = (char *) Allocate_Memory(1024);
				

 if(!AslRequest(Requester,NULL))
    {
     // DisplayBeep(0);
     // Problem("No Files Selected!");
    }
  else
    {
      NumberofFiles    = Requester->rf_NumArgs;	//Number of Files Selected
      Files            = Requester->rf_ArgList;	//The Files In An Array of WBArgs
      Directory        = Requester->rf_Dir;	//The Directroy PATH of the Files
      
      set(App->Progress_Gauge,MUIA_Gauge_Max,NumberofFiles);
      for(Counter=0;Counter<NumberofFiles;Counter++) 
           { 
            strcpy(Buffer,Directory);
            //if(Directory[strlen(Directory)-1]!=':')
            strcat(Buffer,"/");
            strcat(Buffer,Files[Counter].wa_Name);
      	    DoMethod(App->Main_Lister,MUIM_List_InsertSingle,Buffer,MUIV_List_Insert_Top);
      	    DoMethod(App->App,MUIM_Application_InputBuffered);
      	    
	   }
	   DoMethod(App->Main_Lister,MUIM_List_Sort);
      FreeAslRequest(Requester);
    }
 
     set(App->Progress_Window,MUIA_Window_Open,TRUE);
     
     
     for(Counter=0;Counter<NumberofFiles;Counter++)
          {
           DoMethod(App->Main_Lister,MUIM_List_GetEntry,Counter,&Current);
           sprintf(Buffer,"%s/%s",Current->FilePath,Current->FileName);
           set(App->Main_Lister,MUIA_List_Active,Counter);
           set(App->Progress_Gauge,MUIA_Gauge_Current,Counter);
           set(App->Progress_Gauge,MUIA_Gauge_InfoText,Current->FileName);
           DoMethod(App->App,MUIM_Application_InputBuffered);
           Current->Description = NormalDiz(Buffer);
	 }
	  
    set(App->Progress_Window,MUIA_Window_Open,FALSE);
 Deallocate_Memory(Buffer);
}
