home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 20 / AACD20.BIN / AACD / Programming / AmiSlate-Source / AmiSource-c / asl.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-07-31  |  2.1 KB  |  69 lines

  1. /* asl.c -- function for getting filenames */
  2.  
  3. #ifndef ASL_C
  4. #define ASL_C
  5.  
  6. #include <string.h>
  7. #include <clib/asl_protos.h>
  8. #include <clib/intuition_protos.h>
  9. #include <libraries/asl.h>
  10.  
  11. extern struct Window *DrawWindow;
  12. __chip extern UBYTE waitPointer[];
  13.  
  14. /* Fills out szBuffer with the filename/path selected by the user from
  15.    a file requester.   szMessage can be used to change the title string */
  16. int FileRequest(char *szMessage, char *szBuffer, char *szOKMessage, char *szDefaultDirParam, char *szDefaultFile, BOOL BSaveIt)
  17. {
  18.     int rvalue = TRUE;
  19.     struct FileRequester *fr;
  20.     LONG lFlags = 0L;
  21.     static char szDefaultDefaultDir[400] = "\0";
  22.     char * szDefaultDir;
  23.     
  24.     if (szBuffer == NULL)          return(FALSE);
  25.     if (BSaveIt == TRUE)           lFlags        = FILF_SAVE;
  26.     if (szMessage == NULL)         szMessage     = "Select a file!";
  27.     if (szOKMessage == NULL)       szOKMessage   = "OK";
  28.     if (szDefaultDirParam == NULL)     szDefaultDir  = szDefaultDefaultDir; else szDefaultDir = szDefaultDirParam;
  29.     if (szDefaultFile == NULL)     szDefaultFile = "";
  30.        
  31.     struct TagItem frtags[] =
  32.     {
  33.         ASL_Hail,    (ULONG)szMessage,
  34.         ASL_Height,    185,
  35.         ASL_Width,    320,
  36.         ASL_LeftEdge,    0,
  37.         ASL_TopEdge,    15,
  38.         ASL_Dir,        (ULONG)szDefaultDir,
  39.         ASL_File,       (ULONG)szDefaultFile,
  40.         ASL_OKText,    (ULONG)szOKMessage,
  41.         ASL_FuncFlags,  lFlags,
  42.         ASL_CancelText,    (ULONG)"Cancel",
  43.         ASL_Window,    DrawWindow,
  44.         TAG_DONE
  45.     };
  46.     
  47.     fr = (struct FileRequester *) AllocAslRequest(ASL_FileRequest, frtags);    
  48.     if (fr == NULL) return(FALSE);
  49.     
  50.     SetPointer(DrawWindow, (UWORD *)waitPointer, 16, 16, -6, 0);
  51.     if (AslRequest(fr, NULL))
  52.     {
  53.         *szBuffer = '\0';
  54.         strcpy(szBuffer,fr->rf_Dir);
  55.  
  56.         /* set default dir for next time, if it was not specified this time */
  57.         if (szDefaultDirParam == NULL) strncpy(szDefaultDefaultDir,fr->rf_Dir,sizeof(szDefaultDefaultDir));
  58.         
  59.         if ((strlen(szBuffer) > 0)&&(szBuffer[strlen(szBuffer)-1] != '/')&&
  60.             (szBuffer[strlen(szBuffer)-1] != ':')) strcat(szBuffer,"/");
  61.         strcat(szBuffer,fr->rf_File);
  62.     }
  63.     else rvalue = FALSE;
  64.     ClearPointer(DrawWindow);
  65.  
  66.     FreeAslRequest(fr);
  67.     return(rvalue);
  68. }
  69. #endif