|##########|
|#MAGIC   #|CLABLOAK
|#PROJECT #|"IMPORTAll"
|#PATHS   #|"StdProject"
|#FLAGS   #|xx-x-x-xxx--x-x-----------------
|#USERSW  #|--------------------------------
|#USERMASK#|--------------------------------
|#SWITCHES#|xx---xxxxx-xx---
|##########|
DEFINITION MODULE Asl;

FROM System   IMPORT SysStringPtr,Regs,PROC;
FROM Exec     IMPORT LibraryPtr;
FROM Graphics IMPORT TextAttr,DrawModeSet,FontStyleSet,FontFlagSet;
FROM Utility  IMPORT tagUser,TagListPtr,StdTags;

TYPE
  AslRequesterPtr = POINTER TO AslRequester;
  AslRequester    = RECORD END;

  WindowPtr  = DEFERRED POINTER Intuition.WindowPtr;
  WBArgPtr   = DEFERRED POINTER Workbench.WBArgPtr;

  |
  | don't extend the following structure, as it will change in the future
  |
  FileRequesterPtr = POINTER TO FileRequester;
  FileRequester    = RECORD OF AslRequester
		       reserved1  :  ANYPTR;
		       file       :  SysStringPtr; | filename
		       dir        :  SysStringPtr; | directoryname
		       reserved2  :  ANYPTR;
		       reserved3  :  SHORTCARD;
		       reserved4  :  SHORTCARD;
		       reserved5  :  ANYPTR;
		       leftEdge   :  INTEGER;      | Preferred window pos
		       topEdge    :  INTEGER;
		       width      :  INTEGER;      | Preferred window size
		       height     :  INTEGER;
		       reserved6  :  INTEGER;
		       numArgs    :  LONGINT;      | for multiselects
		       arglist    :  WBArgPtr;     | a la WB Args
		       userData   :  ANYPTR;       | Applihandle (you may
						   | write!!)
		       reserved7  :  ANYPTR;
		       reserved8  :  ANYPTR;
		       pat        :  SysStringPtr; | Pattern match Pointer
		     END; | note - more reserved fields follow


  FileFuncFlags    = (
		   patGad,          | ask for pattern gadget
		   multiSelect = 3, | request multiple selections
				    | (not for save)
		   newIDCMP,        | Force a new IDCMP (if window != NULL)
		   save,            | for a SAVE operation
		   doMsgFunc,       | Called with Object=IDCMP message
				    | for other window of shared port.
				    | You must return pointer to Object,
				    | asl will reply the Object for you
		   doWildFunc,      | Called with an Object=AnchorPath,
				    | ZERO return accepts.
		   fff31 = 31       | to make the SET a longword
		   );
  FileFuncFlagSet  =  SET OF FileFuncFlags;

|
| The following additional flags may be passed with the
| ASL_ExtFlags1 tag.
|

  FileExtFlags     = ( noFiles, matchDirs, fileefDummy=31 );
  FileExtFlagSet   = SET OF FileExtFlags;

  FontRequesterPtr = POINTER TO FontRequester;
  FontRequester    = RECORD OF AslRequester
		       reserved1  :  ARRAY [2] OF ANYPTR;
		       attr       :  TextAttr;  | Returned TextAttr
		       frontPen   :  SHORTCARD; | Returned Pens,
						| if selected
		       backPen    :  SHORTCARD;
		       drawMode   :  DrawModeSet;
		       userData   :  ANYPTR;
		     END;

  FontFuncFlags    = (frontColor, backColor, styles, drawMode, fixedWidth,
		      newIdcmp, doMsgFunc, doWildFunc, fontffDummy = 31);
  FontFuncFlagSet  = SET OF FontFuncFlags;

  RequestType      = (fileRequest, fontRequest);

  ModeArray        = ARRAY OF SysStringPtr;

  AslTags          = TAGS OF StdTags
		       dummy           =  tagUser +$80000;
		       hail            :  SysStringPtr;
		       window          :  WindowPtr;
		       leftEdge        :  LONGINT;
		       topEdge         :  LONGINT;
		       width           :  LONGINT;
		       height          :  LONGINT;
		       hookFunc        :  PROC;
		       file            :  SysStringPtr;
		       dir             :  SysStringPtr;
		       fontName        :  SysStringPtr;
		       fontHeight      :  LONGCARD;
		       fontStyles      :  FontStyleSet;
		       fontFlags       :  FontFlagSet;
		       frontPen        :  LONGCARD;       | SHORTCARD
		       backPen         :  LONGCARD;       | SHORTCARD
		       minHeight       :  LONGCARD;       | CARDINAL
		       maxHeight       :  LONGCARD;       | CARDINAL
		       okText          :  SysStringPtr;
		       cancelText      :  SysStringPtr;
		       fileFuncFlags   :  FileFuncFlagSet;
		       fontFuncFlags = tagUser+ $80000 + 20 : FontFuncFlagSet;
		       modeList        :  POINTER TO ModeArray;
		       extFlags1       :  FileExtFlagSet;
		       pattern       = tagUser+ $80000 + 10 :  SysStringPtr;
		     END;

  AslTagAPtr       = POINTER TO AslTagA;
  AslTagA          = ARRAY OF AslTags;

VAR
  AslBase         :  LibraryPtr;


LIBRARY AslBase BY -30
  PROCEDURE AllocFileRequest(): FileRequesterPtr;

LIBRARY AslBase BY -36
  PROCEDURE FreeFileRequest( fileReq IN A0 : FileRequesterPtr );

LIBRARY AslBase BY -42
  PROCEDURE RequestFile( fileReq IN A0: FileRequesterPtr ): BOOLEAN;

LIBRARY AslBase BY -48
  PROCEDURE AllocAslRequest(type    IN D0: RequestType;
			    tagList IN A0: LIST OF AslTags): AslRequesterPtr;

LIBRARY AslBase BY -48
  PROCEDURE AllocAslRequestA( type    IN D0: RequestType;
			      tagList IN A0: AslTagAPtr ): AslRequesterPtr;

LIBRARY AslBase BY -54
  PROCEDURE FreeAslRequest( request IN A0: AslRequesterPtr );

LIBRARY AslBase BY -60
  PROCEDURE AslRequest( request IN A0: AslRequesterPtr;
			tagList IN A1: LIST OF AslTags ): BOOLEAN;

LIBRARY AslBase BY -60
  PROCEDURE AslRequestA( request IN A0: AslRequesterPtr;
			 tagList IN A1: AslTagAPtr ): BOOLEAN;


GROUP

  ProcGrp          = AllocAslRequest,AllocAslRequestA,AllocFileRequest,
		     AslRequest,AslRequestA,FreeAslRequest,
		     FreeFileRequest,RequestFile;

  TypeGrp          = AslTagA,AslTagAPtr,AslTags,ModeArray,
		     FileExtFlags,FileExtFlagSet,FileFuncFlags,
		     FileFuncFlagSet,FileRequester,FileRequesterPtr,
		     FontFuncFlags,FontFuncFlagSet,FontRequester,
		     FontRequesterPtr,RequestType;

  All              = TypeGrp,ProcGrp;

END Asl.


