home *** CD-ROM | disk | FTP | other *** search
- /* Display an ASL file requester */
-
- #include <libraries/asl.h>
- #include <workbench/startup.h>
-
- #ifndef __GNUC__
- #include <pragmas/exec_pragmas.h>
- #include <pragmas/asl_pragmas.h>
- #include <clib/exec_protos.h>
- #include <clib/asl_protos.h>
- #else
- #include <inline/exec.h>
- #include <inline/asl.h>
- #endif
-
- #include <stdio.h>
- #include <stdlib.h>
-
- #define MAXFILES 500
-
- extern char *PicArray[];
- extern int NumPictures;
- extern void CloseDisplay(void);
-
- struct TagItem frtags[] =
- {
- { ASLFR_InitialPattern,"#?.(jpg|jpeg)" },
- { ASLFR_DoMultiSelect, (ULONG)TRUE },
- { ASLFR_DoPatterns, (ULONG)TRUE },
- { ASLFR_RejectIcons, (ULONG)TRUE },
- { TAG_DONE, (ULONG)TRUE }
- };
-
- extern struct Library *AslBase;
-
- void ChooseFiles(void)
- {
- struct FileRequester *fr;
- struct WBArg *frargs;
- int x,i;
-
- if( AslBase=OpenLibrary("asl.library", 39L) )
- {
- if( fr = (struct FileRequester *)
- AllocAslRequest(ASL_FileRequest, frtags) )
- {
- if( AslRequest(fr, NULL) )
- {
- /* multiselect */
- if(fr->rf_NumArgs)
- {
- frargs=fr->rf_ArgList;
- for(x=0; x < fr->rf_NumArgs; x++)
- {
- PicArray[NumPictures] = malloc(strlen(fr->rf_Dir)+strlen(frargs[x].wa_Name)+3);
- if(!PicArray[NumPictures])
- {
- printf("Out of memory!\n");
- FreeAslRequest(fr);
- CloseLibrary(AslBase);
- AslBase = NULL;
- CloseDisplay();
- exit(10);
- }
- strcpy(PicArray[NumPictures], fr->rf_Dir);
- i = strlen(fr->rf_Dir);
- if(i)
- {
- i--;
- if(fr->rf_Dir[i] != ':' && fr->rf_Dir[i] != '/')
- strcat(PicArray[NumPictures], "/");
- }
- strcat(PicArray[NumPictures], frargs[x].wa_Name);
- /* puts(PicArray[NumPictures]); */
- NumPictures++;
- if(NumPictures == MAXFILES)
- {
- printf("Too many files!\n");
- break;
- }
- }
- }
- else
- {
- /* only one file selected */
- PicArray[NumPictures] = malloc(strlen(fr->rf_Dir)+strlen(fr->rf_File)+3);
- if(!PicArray[NumPictures])
- {
- printf("Out of memory!\n");
- FreeAslRequest(fr);
- CloseLibrary(AslBase);
- CloseDisplay();
- exit(10);
- }
- strcpy(PicArray[NumPictures], fr->rf_Dir);
- i = strlen(fr->rf_Dir);
- if(i)
- {
- i--;
- if(fr->rf_Dir[i] != ':' && fr->rf_Dir[i] != '/')
- strcat(PicArray[NumPictures], "/");
- }
- strcat(PicArray[NumPictures], fr->rf_File);
- NumPictures++;
- }
- }
- FreeAslRequest(fr);
- }
- CloseLibrary(AslBase);
- AslBase = NULL;
- }
- }
-