/*
**  $VER: getfile.h 44.1 (19.10.1999)
**  Includes Release 44.1
**
**  Definitions for the getfile.gadget BOOPSI class
**
**  (C) Copyright 1987-1999 Amiga, Inc.
**      All Rights Reserved
*/
/*****************************************************************************/
MODULE 'intuition/gadgetclass'
/*****************************************************************************/
/* Attributes defined by the getfile.gadget class
 */
#define GETFILE_Dummy       (REACTION_Dummy + $60000)
#define GETFILE_TitleText     (GETFILE_Dummy+1)
/* (STRPTR) Requester title text (default: None) (OM_NEW, OM_SET) */
#define GETFILE_LeftEdge    (GETFILE_Dummy+2)
#define GETFILE_TopEdge       (GETFILE_Dummy+3)
/* (WORD) Requester coordinates  (default leftedge: 30, topedge: 20) (OM_NEW, OM_SET, OM_GET) */
#define GETFILE_Width       (GETFILE_Dummy+4)
#define GETFILE_Height      (GETFILE_Dummy+5)
/* (WORD) Requester dimensions (default height: 200, width: 300) (OM_NEW, OM_SET, OM_GET) */
#define GETFILE_File      (GETFILE_Dummy+6)
/* (STRPTR) Contents of File gadget (default: None) (OM_NEW, OM_SET, OM_GET, OM_NOTIFY) */
#define GETFILE_Drawer      (GETFILE_Dummy+7)
/* (STRPTR) Contents of Drawer gadget (default: None) (OM_NEW, OM_SET, OM_GET, OM_NOTIFY) */
#define GETFILE_FullFile    (GETFILE_Dummy+8)
/* (STRPTR) Complete file name. Replaces GETFILE_Drawer and GETFILE_File (default: None)
      (OM_NEW, OM_SET, OM_GET, OM_NOTIFY)
  */
#define GETFILE_FullFileExpand  (GETFILE_Dummy+9)
/* (BOOL) GETFILE_FullFile will give complete file name(s) expanded with NameFromLock() to
      remove relative paths. (default: TRUE) (OM_NEW, OM_SET)
  */
#define GETFILE_Pattern       (GETFILE_Dummy+10)
/* (STRPTR) Contents of Pattern gadget (default: "#?") (OM_NEW, OM_SET, OM_GET) */
#define GETFILE_DoSaveMode    (GETFILE_Dummy+11)
/* (BOOL) Being used for saving? (default: FALSE) (OM_NEW, OM_SET) */
#define GETFILE_DoMultiSelect   (GETFILE_Dummy+12)
/* (BOOL) Do multi-select? (default: FALSE) (OM_NEW, OM_SET) */
#define GETFILE_DoPatterns    (GETFILE_Dummy+13)
/* (BOOL) Display a Pattern gadget? (default: FALSE) (OM_NEW, OM_SET) */
#define GETFILE_DrawersOnly     (GETFILE_Dummy+14)
/* (BOOL) Don't display files? (default: FALSE) (OM_NEW, OM_SET) */
#define GETFILE_FilterFunc    (GETFILE_Dummy+15)
/* (struct Hook *) Function to filter files (default: None) (OM_NEW, OM_SET)  */
#define GETFILE_RejectIcons     (GETFILE_Dummy+16)
/* (BOOL) Display .info files? (default: FALSE) (OM_NEW, OM_SET)  */
#define GETFILE_RejectPattern   (GETFILE_Dummy+17)
/* (UBYTE *) Don't display files matching pattern (default: None) (OM_NEW, OM_SET) */
#define GETFILE_AcceptPattern   (GETFILE_Dummy+18)
/* (UBYTE *) Accept only files matching pattern (default: None) (OM_NEW, OM_SET) */
#define GETFILE_FilterDrawers   (GETFILE_Dummy+19)
/* (BOOL) Also filter drawers with pattern (default: FALSE) (OM_NEW, OM_SET) */
#define GETFILE_Filelist    (GETFILE_Dummy+20)
/* (struct List *) If the GETFILE_DoMultiSelect tags was used, you can get a pointer
      to the list of selected files/drawers using this tag. The ln_Name part of
      each node will contain the filename/drawername for each selected file with
      a fully qualified path, even if you didn't use the GETFILE_FullFileExpand.
      In single-selected mode, the list will contain the single selected file for
      notification purposes. Don't forget to free the list using the GFILE_FREELIST
      method! (OM_GET, OM_NOTIFY) */
#define GETFILE_LBNodeStructs   (GETFILE_Dummy+21)
/* (BOOL) GETFILE_Filelist will give a list with ListBrowserNodes instead of normal
      struct Node node structures (default: FALSE) (OM_NEW) */
#define GETFILE_ReadOnly    (GETFILE_Dummy+22)
/* (BOOL) If TRUE, a read-only recessed button gadget is used to present the
      file/drawer information. If FALSE, an editable string gadget is used.
      (default: TRUE) (OM_NEW) */
#define GETFILE_FilePartOnly  (GETFILE_Dummy+23)
/* (BOOL) display file part only - valid ONLY in readonly mode!
   */
/*****************************************************************************/
/*
 * getfile.gadget methods
 */
#define GFILE_REQUEST   ($620001)
#define GFILE_FREELIST  ($620002)
/* The GFILE_REQUEST method should be called whenever you want to open
 * a file/dir requester.
 */
OBJECT gfileRequest
  MethodID:ULONG,                /* GFILE_REQUEST */
  gfile_Window:PTR TO Window     /* The window that will be locked when the requester is active. MUST be provided! */

/* The GFILE_FREELIST method SHOULD be called when you are done doing a multiselect
 * a file/dir select using the tag GETFILE_DoMultiSelect and have processed the result.
 * This method will free the list of struct Node structures.  If you do not free this
 * list using this method, the list will not be freed until you dispose the class.
 */
OBJECT gfileFreelist
  MethodID:ULONG,                /* GFILE_FREELIST */
  gfile_Filelist:PTR TO List     /* The list of struct Node obtained using the GETFILE_Filelist tag in OM_GET.
                    Can be NULL, in which case this method will do nothing. */

/* macros for calling the methods easily */
#define gfRequestFile(obj, win )    DoMethod(obj, GFILE_REQUEST, win)
#define gfRequestDir(obj, win )   DoMethod(obj, GFILE_REQUEST, win)
#define gfFreeFilelist(obj, list )  DoMethod(obj, GFILE_FREELIST, list)
