home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 3 / goldfish_volume_3.bin / files / dev / e / amigae / rkrmsrc / asl / filepat.e < prev    next >
Text File  |  1995-03-27  |  3KB  |  83 lines

  1. -> filepat.e
  2.  
  3. MODULE 'asl',
  4.        'intuition/intuition',
  5.        'intuition/screens',
  6.        'graphics/modeid',
  7.        'libraries/asl',
  8.        'workbench/startup'
  9.  
  10. ENUM ERR_NONE, ERR_ASL, ERR_KICK, ERR_LIB, ERR_SCRN, ERR_WIN
  11.  
  12. RAISE ERR_ASL  IF AllocAslRequest()=NIL,
  13.       ERR_KICK IF KickVersion()=FALSE,
  14.       ERR_LIB  IF OpenLibrary()=NIL,
  15.       ERR_SCRN IF OpenScreenTagList()=NIL,
  16.       ERR_WIN  IF OpenWindowTagList()=NIL
  17.  
  18. DEF screen=NIL, window=NIL
  19.  
  20. PROC main() HANDLE
  21.   DEF fr=NIL:PTR TO filerequester, frargs:PTR TO wbarg, x
  22.   KickVersion(37)  -> E-Note: requires V37
  23.   aslbase:=OpenLibrary('asl.library',37)
  24.   screen:=OpenScreenTagList(NIL, [SA_DISPLAYID, HIRESLACE_KEY,
  25.                                   SA_TITLE, 'ASL Test Screen',
  26.                                   NIL])
  27.   window:=OpenWindowTagList(NIL,
  28.                    [WA_CUSTOMSCREEN, screen,
  29.                     WA_TITLE, 'Demo Customscreen, File Pattern, Multi-select',
  30.                     -> E-Note: C version uses obsolete tags
  31.                     WA_FLAGS, WFLG_DEPTHGADGET OR WFLG_DRAGBAR,
  32.                     NIL])
  33.   fr:=AllocAslRequest(ASL_FILEREQUEST,
  34.                      [ASL_HAIL, 'FilePat/MultiSelect Demo',
  35.                       ASL_DIR,  'libs:',
  36.                       ASL_FILE, 'asl.library',
  37.  
  38.                       -> Initial pattern string for pattern matching
  39.                       ASL_PATTERN, '~(rexx#?|math#?)',
  40.  
  41.                       -> Enable multiselection and pattern match gadget
  42.                       ASL_FUNCFLAGS, FILF_MULTISELECT OR FILF_PATGAD,
  43.  
  44.                       -> This requester comes up on the screen of this window
  45.                       -> (and uses window's message port, if any).
  46.                       ASL_WINDOW, window,
  47.                       NIL])
  48.  
  49.   -> Put up file requester
  50.   IF AslRequest(fr, 0)
  51.     -> If the file requester's numargs field is not zero, the user
  52.     -> multiselected.  The number of files is stored in numargs.
  53.     IF fr.numargs
  54.       -> arglist is an array of wbarg objects (see 'workbench/startup.m').
  55.       -> Each entry in this array corresponds to one of the files the user
  56.       -> selected (in alphabetical order).
  57.       frargs:=fr.arglist
  58.  
  59.       -> The user multiselected, step through the list of selected files.
  60.       FOR x:=0 TO fr.numargs-1
  61.         WriteF('Argument \d: PATH=\s FILE=\s\n', x, fr.drawer, frargs[x].name)
  62.       ENDFOR
  63.     ELSE
  64.       -> The user didn't multiselect, use the normal way to get the file name.
  65.       WriteF('PATH=\s FILE=\s\n', fr.drawer, fr.file)
  66.     ENDIF
  67.   ENDIF
  68. EXCEPT DO
  69.   IF fr THEN FreeAslRequest(fr)
  70.   IF window THEN CloseWindow(window)
  71.   IF screen THEN CloseScreen(screen)
  72.   IF aslbase THEN CloseLibrary(aslbase)
  73.   SELECT exception
  74.   CASE ERR_ASL;  WriteF('Error: Could not allocate ASL request\n')
  75.   CASE ERR_KICK; WriteF('Error: Requires V37\n')
  76.   CASE ERR_LIB;  WriteF('Error: Could not open ASL library\n')
  77.   CASE ERR_SCRN; WriteF('Error: Could not open screen\n')
  78.   CASE ERR_WIN;  WriteF('Error: Could not open window\n')
  79.   ENDSELECT
  80. ENDPROC
  81.  
  82. vers: CHAR 0, '$VER: filepat 37.0', 0
  83.