#ifndef RCT_FILER
#define RCT_FILER

/* Die Datenstruktur des alten File-Requesters */
/* Die Datenstruktur und die einstellbaren Flags wurden vom
   FileRequester Aufruf der REQUESTER.Library übernommen, so daß
   eine Umstellung auf den RCT-File-Requester sehr einfach gemacht
   werden kann. */

/* Definitionen für RCT-FileRequester */

/* DSIZE ist die Definition für die Größe des Pfadnamen-Arrays.		*/
/* FCHARS steht für die Größe des Dateinamen-Arrays.						*/
/* WILDLENGTH ist die länge des Stings für den Hide- und Showtext.	*/

/* Durch folgende Flags kann das Aussehen und die Art des Requesters */
/* verändert werden: 																*/

/* FRQCACHINGM 	 Wenn das eingelesene Verzeichnis
						 zwischengespeichert und beim nächsten Aufruf
						 des Requesters wieder aufgerufen werden soll */
/* FRQABSOLUTEXYM  in den Felder WindowLeftEdge, WindowTopEdge
						 werden Koordianten angegeben anderenfalls wird
						 der Requester zentiert */
/* FRQCACHEPURGEM  Das zwischengespeicherte Verzeichnis wird
						 neu geladen wenn sich das Datum des Verzeichnisses geändert hat */
/* FRQNOHALFCACHEM Die eingelesenen Dateien werden nicht bis zum
						 nächsten Aufruf zwischengespeichert, wenn sie nicht vollständig
						 eingelesen werden konnten */
/* FRQNOSORTM		 Die Dateinamen sollen unsortiert angezeigt
						 werden */
/* FRQNODRAGM		 Der Requester kann nciht verschoben oder in
						 den Hinter-/Vordergrund geholt werden */
/* FRQSAVINGM		 Im "OK-Gadget" wird der Text "SAVE" angezeigt */
/* FRQLOADINGM 	 Im "OK-Gadget" wird der text "LOAD" angezeigt */
/* FRQNODEPTHM 	 Das Fenster soll zwar verschiebbar aber nicht
						 in der Vorder-/Hintergrund stellbar sein. */


#ifndef	DSIZE
#define	DSIZE 130
#define	FCHARS	30
#endif	/* ifndef DSIZE */

#define	WILDLENGTH	30

#define	FRQSHOWINFOB	  0
#define	FRQEXTSELECTB	  1
#define	FRQCACHINGB 	  2
#define	FRQGETFONTSB	  3
#define	FRQINFOGADGETB   4
#define	FRQHIDEWILDSB	  5
#define	FRQABSOLUTEXYB   6
#define	FRQCACHEPURGEB   7
#define	FRQNOHALFCACHEB  8
#define	FRQNOSORTB		  9
#define	FRQNODRAGB		 10
#define	FRQSAVINGB		 11
#define	FRQLOADINGB 	 12
#define	FRQDIRONLYB 	 13
#define	FRQNODEPTHB 	 14

#define	FRQSHOWINFOM	(1<<FRQSHOWINFOB)
#define	FRQEXTSELECTM	(1<<FRQEXTSELECTB)
#define	FRQCACHINGM 	(1<<FRQCACHINGB)
#define	FRQGETFONTSM	(1<<FRQGETFONTSB)
#define	FRQINFOGADGETM (1<<FRQINFOGADGETB)
#define	FRQHIDEWILDSM	(1<<FRQHIDEWILDSB)
#define	FRQABSOLUTEXYM (1<<FRQABSOLUTEXYB)
#define	FRQCACHEPURGEM (1<<FRQCACHEPURGEB)
#define	FRQNOHALFCACHEM	(1<<FRQNOHALFCACHEB)
#define	FRQNOSORTM		(1<<FRQNOSORTB)
#define	FRQNODRAGM		(1<<FRQNODRAGB)
#define	FRQSAVINGM		(1<<FRQSAVINGB)
#define	FRQLOADINGM 	(1<<FRQLOADINGB)
#define	FRQDIRONLYM 	(1<<FRQDIRONLYB)
#define	FRQNODEPTHM 	(1<<FRQNODEPTHB)



/* Die Struktur sieht folgendermaßen aus: */


struct RCTFileRequester
  {
  UWORD	 VersionNumber;		 /* Die Versionsnummer der
											 Library, die beim Programmieren verwendet wird */

  char	 *Title; 				 /* Entweder der Fenstertitel oder
											 ein besonderes Requestergadget */
  char	 *Dir;					 /* Pfad-Array (DSIZE+1) */
  char	 *File;					 /* Dateiname-Array (FCHARS+1) */
  char	 *PathName; 			 /* Pfad- und Dateinamen-Array (DSIZE+FCHARS+2) */

  struct Window *Window;		 /* Window in dem der Requester
											 angezeigt werden soll oder NULL */
  UWORD	 reserved;				 /* wird ignoriert */
  UWORD	 numlines;				 /* wird ignoriert */
  UWORD	 numcolumns;			 /* wird ignoriert */
  UWORD	 devcolumns;
  ULONG	 Flags;					 /* Definitionen der Flags siehe
											 oben */
  UWORD	 dirnamescolor;		 /* wird ignoriert */
  UWORD	 filenamescolor;		 /* wird ignoriert */
  UWORD	 devicenamescolor;	 /* wird ignoriert */
  UWORD	 fontnamescolor;		 /* wird ignoriert */
  UWORD	 fontsizescolor;		 /* wird ignoriert */

  UWORD	 detailcolor;			 /* wird ignoriert */
  UWORD	 blockcolor;			 /* wird ignoriert */
  UWORD	 gadgettextcolor; 	 /* wird ignoriert */
  UWORD	 textmessagecolor;	 /* wird ignoriert */
  UWORD	 stringnamecolor; 	 /* wird ignoriert */
  UWORD	 stringgadgetcolor;	 /* wird ignoriert */
  UWORD	 boxbordercolor;		 /* wird ignoriert */
  UWORD	 gadgetboxcolor;		 /* wird ignoriert */

  UWORD	 FRU_Stuff[18];		 /* Reserviert, sollte NULL sein */
  struct DateStamp DirDateStamp; /* wird ignoriert */

  UWORD	 WindowLeftEdge;		 /* Diese beiden Felder werden
											 benutzt, um den Requester zu */
  UWORD	 WindowTopEdge;		 /* positionieren. */

  UWORD	 FontYSize; 			 /* wird ignoriert */
  UWORD	 FontStyle; 			 /* wird ignoriert */

  ULONG	 *reserved1;			 /* Reserviert */
  char	 Hide[WILDLENGTH+2];  /* Wildcards Text für Dateien die
											 nicht angezeigt werden sollen */
  char	 Show[WILDLENGTH+2];  /* Wildcards Text für Dateien die
											 angezeigt werden sollen */
  WORD	 FileBufferPos;		 /* Werte für Stringgadgets */
  WORD	 FileDispPos;
  WORD	 DirBufferPos;
  WORD	 DirDispPos;
  WORD	 HideBufferPos;
  WORD	 HideDispPos;
  WORD	 ShowBufferPos;
  WORD	 ShowDispPos;

 /**; 	  Die nachfolgenden Felder sind Privat und sollten aus
			  Ihren Programmen nie angesprochen oder genutzt werden */

  APTR	 privat1;
  APTR	 privat2;
  APTR	 privat3;
  char	 privat4[DSIZE+2];
																										  /* directory we have file names for. */
  struct FileInfoBlock	  *privat6;
  WORD	 privat7;
  WORD	 privat8;
  WORD	 privat9;
  WORD	 privat10;
  };

#endif
