home *** CD-ROM | disk | FTP | other *** search
- /*
- * Header file for the PathMaster File Selector.
- * Copyright © 1989 by Justin V. McCormick. All Rights Reserved.
- */
-
- #define STANDALONE 1
-
- #ifdef _lint
- #define __regargs
- #define __stdargs
- #define __fARGS(a) ()
- #define AZTEC_C
- #endif
-
- #ifdef AZTEC_C
- #define __regargs
- #define __stdargs
- #define __fARGS(a) ()
- #define __ARGS(a) ()
- #endif
-
- #ifndef __fARGS
- #define __fARGS(a) a
- #endif
-
- #define LABELFPEN 3 /* Forecolor for text labels */
- #define LABELBPEN 0 /* Backcolor for text labels */
-
- #define GADTFPEN 0 /* Gadget text forecolor */
- #define GADTBPEN 1 /* Gadget text backcolor */
-
- #define GADFILLPEN 1 /* Gadget interior pen */
- #define GADBORDPEN 3 /* Gadget border pen */
-
- #define ARROWFPEN 1 /* Pen used for drawing arrows */
- #define ARROWBPEN 3 /* Arrow gadget border pen */
-
- #define SBORDFPEN 1 /* String and File area border pen */
- #define SBORDBPEN 0 /* Backcolor (not really useful */
-
- #define FPEN 1 /* Pen for rendering file names */
- #define DPEN 3 /* Pen for rendering directory names */
- #define FDBPEN 0 /* Backfill pen for files & dirs */
-
- #define PATHSTRSIZE 300 /* 10 subdirs worth of space */
- #define FILESTRSIZE 32 /* Room for filename + null + roundoff */
- #define MATCHSTRSIZE 32 /* Room for 30 char pattern + null + " */
-
- /* File node structure */
- struct node_data
- {
- BYTE alphadata[58]; /* ascii data */
- WORD filetype; /* Dir or file flag */
- WORD showit; /* 0=skip, 1=showable */
- WORD textcolor; /* Color to render this file as */
- WORD namelength; /* Actual length of file name */
- ULONG filesize; /* File size in bytes */
- ULONG days; /* File creation date */
- ULONG minutes;
- ULONG ticks;
- };
-
- struct file_node
- {
- struct MinNode fn_Node; /* Exec List linkage */
- struct node_data *info; /* file info structure */
- WORD idnum; /* numerical list position */
- };
-
- /* Struct for list of Devices found */
- struct dev_node
- {
- struct MinNode dn_Node;
- UBYTE name[FILESTRSIZE];
- };
-
- /* File selector request structure */
- struct FSRequest
- {
- BYTE dirname[PATHSTRSIZE]; /* Contents of the "PATH" string gadget */
- BYTE filename[FILESTRSIZE]; /* Contents of the "FILE" string gadget */
- BYTE matchpattern[MATCHSTRSIZE]; /* Contents of the "PATTERN" string gadget */
- WORD leftedge; /* Window initial x position, user modifiable */
- WORD topedge; /* Window initial y position */
- WORD sorttype; /* -1=NoSort,0=Alpha,1=Size,2=Time */
- UWORD flags; /* See below defines */
- ULONG windowflags; /* Special Windowflags */
- BYTE *fullname; /* Must point to BYTE[344] space for full path! */
- BYTE *ignorepattern; /* Wildcard to skip files, e.g. "*.info" */
- BYTE *pathgadstr; /* "PATH" or equivalent string gadget label */
- BYTE *filegadstr; /* "FILE", "NAME", string gadget label */
- BYTE *titlestr; /* Static titlebar message, "LOAD ANIMATION>" */
- BYTE *readingstr; /* "Reading..." or appropriate substitute */
- BYTE *sortingstr; /* "Sorting..." or equivalent message */
- BYTE *emptydirstr; /* "Empty Directory" or equivalent */
- BYTE *nomatchstr; /* "Nothing matched PATTERN" or equivalent */
- BYTE *selectfilestr; /* "Select File:" or equivalent message */
- BYTE *selectstr; /* "Okay", "Load", etc. gadget text */
- BYTE *cancelstr; /* "Cancel", "Exit", etc. gadget text */
- BYTE *specgadstr; /* Text for optional definable gadget */
- struct Screen *userscreen; /* Screen to open requester on or 0L for WBench */
- struct MsgPort *userport; /* port to Wait on, then call userfunc or 0L */
- /* Function called if specgadstr != 0L on GADGETUP */
- LONG (*specgadfunc) __fARGS((struct FSRequest *, struct Window *, struct Gadget *));
- /* Clicked on a directory function */
- LONG (*dirfunc) __fARGS((struct FSRequest *, struct Window *));
- /* Clicked on a filename function or 0L */
- LONG (*filefunc) __fARGS((struct FSRequest *, struct Window *));
- /* Function called when Signal at userport set */
- LONG (*userfunc) __fARGS((struct FSRequest *, struct Window *));
- /* Called right after OpenWindow for SetPointering */
- LONG (*initfunc) __fARGS((struct FSRequest *, struct Window *));
- /* Called for each node_data, your chance to accept/reject/change */
- LONG (*matchfunc) __fARGS((struct FSRequest *, BYTE *, struct file_node *));
- };
-
- /* FSRequest flags */
- #define FS_NO_DCLICK_EXIT (1L << 0) /* Disable Double-Click exit */
- #define FS_NO_STRING_EXIT (1L << 1) /* Disable File String Gadget exit */
- #define FS_NO_STRING_OKAY (1L << 2) /* Allow clean exit with no file name */
- #define FS_SHOW_FILES_FIRST (1L << 3) /* Show files first in mixture */
- #define FS_SHOW_DIRS_FIRST (1L << 4) /* Show dirs first in mixture */
- #define FS_SHOW_FILES_ONLY (1L << 5) /* Don't show dirs */
- #define FS_SHOW_DIRS_ONLY (1L << 6) /* Don't show files */
- #define FS_DELAYED_SORT (1L << 7) /* Don't sort till user hits slide */
-