home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.5 / ffcollection-1-5-1992-11.iso / ff_disks / 200-299 / ff245.lzh / PathMaster / manx / fs.c < prev    next >
C/C++ Source or Header  |  1989-09-06  |  4KB  |  174 lines

  1. /*
  2.  * fs.c - PathMaster File Selector Demo launch module.
  3.  * Copyright © 1989 by Justin V. McCormick.  All Rights Reserved.
  4.  */
  5.  
  6. /* #define FILEFUNC 1 */     /* Uncomment this for filefunction demo */
  7. /* #define SPECFUNC 1 */    /* Uncomment this for delete gadget demo */
  8.  
  9. #include <exec/types.h>
  10. #include <exec/nodes.h>
  11. #include <exec/lists.h>
  12. #include <exec/ports.h>
  13. #include <exec/io.h>
  14. #include <exec/libraries.h>
  15. #include <exec/interrupts.h>
  16. #include <exec/memory.h>
  17. #include <devices/timer.h>
  18. #include <graphics/gfx.h>
  19. #include <graphics/gfxbase.h>
  20. #include <intuition/intuition.h>
  21. #include <libraries/dos.h>
  22. #include <libraries/filehandler.h>
  23. #include <stdio.h>
  24.  
  25. #include "fs.h"
  26.  
  27. #ifdef AZTEC_C
  28. #include <functions.h>
  29. #endif
  30.  
  31. #ifdef LATTICE
  32. #define strlen strlen
  33. #include <string.h>
  34. #include <stdlib.h>
  35. #include <proto/exec.h>
  36. #include <proto/intuition.h>
  37. #include <proto/dos.h>
  38. #endif
  39.  
  40.  
  41. /* Extern CODE */
  42. extern LONG FileSelect __ARGS((struct FSRequest *));
  43. extern VOID __stdargs ReleaseFileSelect __ARGS((VOID));
  44.  
  45. /* Local CODE */
  46. int main __ARGS((int, BYTE **));
  47. VOID DoFSTest __ARGS((VOID));
  48. LONG DoFileSelect __ARGS((VOID));
  49.  
  50. /* Special functions, see defines above */
  51. #ifdef FILEFUNC
  52. LONG __stdargs MyFileFunc __ARGS((struct FSRequest *, struct Window *));
  53. #endif
  54. #ifdef SPECFUNC
  55. LONG __stdargs MySpecGadFunc __ARGS((struct FSRequest *, struct Window *, struct Gadget *));
  56. #endif
  57.  
  58. /* Local DATA */
  59. struct GfxBase *GfxBase;
  60. struct IntuitionBase *IntuitionBase;
  61. struct FSRequest MyFSReq;
  62. BYTE thePath[PATHSTRSIZE+FILESTRSIZE+12]; /* Room for entire path returned by FS */
  63.  
  64. /* -------------------------------------------------------------------- */
  65. int main(argc, argv)
  66.   int argc;
  67.   BYTE **argv;
  68. {
  69.   if ((GfxBase = (struct GfxBase *)OpenLibrary("graphics.library", 33L)) != 0)
  70.   {
  71.     if ((IntuitionBase = (struct IntuitionBase *)OpenLibrary("intuition.library", 33L)) != 0)
  72.     {
  73.       DoFSTest();
  74.       CloseLibrary((struct Library *)IntuitionBase);
  75.     }
  76.     CloseLibrary((struct Library *)GfxBase);
  77.   }
  78.   return(0);
  79. }
  80.  
  81. /* -------------------------------------------------------------------- */
  82. VOID DoFSTest()
  83. {
  84. /* Set our request preferences */
  85.  
  86. /* Match all filenames */
  87.   (VOID)strcpy(MyFSReq.matchpattern, "*");
  88.  
  89. /* Set window positions */
  90.   MyFSReq.leftedge     = 0;
  91.   MyFSReq.topedge     = 11;
  92.  
  93. /* Want alphabetized sorting */
  94.   MyFSReq.sorttype     = 0;
  95.  
  96. /* Show directory names first, delay sorting till user scrolls */
  97.   MyFSReq.flags        = FS_SHOW_DIRS_FIRST | FS_DELAYED_SORT;
  98.  
  99. /* Put the pathname result here */
  100.   MyFSReq.fullname     = thePath;
  101.  
  102. /* Do not show filename that match this pattern */
  103.   MyFSReq.ignorepattern = "*.info";
  104.  
  105. /* Title for the selector window */
  106.   MyFSReq.titlestr     = "PathMaster Demo>";
  107.  
  108. /* Text for the OK and CANCEL gadgets */
  109.   MyFSReq.selectstr    = "Done";
  110.   MyFSReq.cancelstr    = "Cancel";
  111.  
  112. #ifdef FILEFUNC
  113.   MyFSReq.filefunc     = MyFileFunc;
  114. #endif
  115.  
  116. /* Set up the black-box gadget to delete files */
  117. #ifdef SPECFUNC
  118.   MyFSReq.specgadfunc     = MySpecGadFunc;
  119.   MyFSReq.specgadstr     = "Delete";
  120. #endif
  121.  
  122. /* Invoke the file selector until user selects CANCEL */
  123.   while (DoFileSelect() != 0)
  124.     continue;
  125.  
  126. /* Deallocate and release file selector stuff */
  127.   ReleaseFileSelect();
  128. }
  129.  
  130. /* -------------------------------------------------------------------- */
  131. LONG DoFileSelect()
  132. {
  133.   LONG status;
  134.  
  135.   status = FileSelect (&MyFSReq);
  136.   if (status == 1)
  137.   {
  138.     if (MyFSReq.fullname[0] == 0)
  139.     {
  140.       printf("FileSelect Canceled\n");
  141.       status = 0;
  142.     }
  143.     else
  144.       printf("%s\n", MyFSReq.fullname);
  145.   }
  146.   else
  147.     printf("FileSelect Failed!\n");
  148.   return (status);
  149. }
  150.  
  151. #ifdef FILEFUNC
  152. /* -------------------------------------------------------------------- */
  153. LONG __stdargs MyFileFunc(fsreq, fswin)
  154.   struct FSRequest *fsreq;
  155.   struct Window *fswin;
  156. {
  157.   printf("Clicked on '%s'\n", fsreq->fullname);
  158.   return(0L);
  159. }
  160. #endif
  161.  
  162. #ifdef SPECFUNC
  163. /* -------------------------------------------------------------------- */
  164. LONG __stdargs MySpecGadFunc(fsreq, fswin, fsgad)
  165.   struct FSRequest *fsreq;
  166.   struct Window *fswin;
  167.   struct Gadget *fsgad;
  168. {
  169.   printf("Delete Gadget clicked, current pathname: %s\n", fsreq->fullname);
  170.   (VOID) DeleteFile(fsreq->fullname);
  171.   return(1L);    /* Force FileSelect to re-read directory */
  172. }
  173. #endif
  174.