home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d5xx / d549 / ffex.lha / FFEX / source / arpreq.mod < prev    next >
Text File  |  1991-09-19  |  2KB  |  81 lines

  1. IMPLEMENTATION MODULE ArpReq;
  2.  
  3. FROM Exec      IMPORT OpenLibrary,CloseLibrary,LibraryPtr,CopyMem;
  4. FROM Intuition IMPORT WindowPtr,NewWindow;
  5. FROM Arts      IMPORT Assert,TermProcedure;
  6. FROM SYSTEM    IMPORT SETREG,ADDRESS,BYTE,ADR;
  7. FROM Str       IMPORT Length,Concat,Copy;
  8. FROM FileNames IMPORT GetPath,MakeFileName;
  9.  
  10. TYPE
  11.   FileRequester=RECORD
  12.     hail     : ADDRESS;
  13.     file     : ADDRESS;
  14.     dir      : ADDRESS;
  15.     window   : WindowPtr;
  16.     funcFlags: BYTE;
  17.     reserved1: BYTE;
  18.     function : ADDRESS;
  19.     reserved2: LONGINT;
  20.   END;
  21.  
  22. VAR
  23.   req    : FileRequester;
  24.   arpbase: LibraryPtr;
  25.   ok     : LONGINT;
  26.   ledge  : INTEGER;
  27.  
  28. PROCEDURE Cleanup;
  29.   BEGIN
  30.     IF arpbase#NIL THEN CloseLibrary(arpbase);arpbase:=NIL END;
  31.   END Cleanup;
  32.  
  33.  
  34. PROCEDURE NewWin(obj:ADDRESS;mask:LONGINT);
  35.   (* $P- Parameter nicht abbauen, daß macht ARP !!! *)
  36.   VAR nw:POINTER TO NewWindow;
  37.   BEGIN
  38.     nw:=obj;nw^.leftEdge:=ledge;
  39.   END NewWin;
  40.  
  41. PROCEDURE FileRequest(req{8}:ADDRESS):LONGINT; CODE -294;
  42.  
  43. PROCEDURE GetFileName(w:WindowPtr;title,path:ADDRESS):BOOLEAN;
  44.   VAR
  45.     req: FileRequester;
  46.     p,f: ARRAY[0..255] OF CHAR;
  47.     len: INTEGER;
  48.   BEGIN
  49.     CopyMem(path,ADR(f),256);
  50.     GetPath(f,p,len);            (* f in Filenamen und Pfad zerlegen *)
  51.     IF (Length(p)#0) &
  52.        (p[Length(p)-1]="/") THEN
  53.       p[Length(p)-1]:=CHAR(0);       (* abschließendes '/' entfernen *)
  54.     END;
  55.     ledge:=(w^.width-300)/2;
  56.     WITH req DO
  57.       hail:=title;file:=ADR(f);dir :=ADR(p);window:=w;
  58.       funcFlags:=8;function:=ADR(NewWin);
  59.       reserved1:=0;reserved2:=0;
  60.     END;
  61.     SETREG(14,arpbase);             (* <=> move.l arpbase,a6 *)
  62.     ok:=FileRequest(ADR(req));
  63.     IF ok#0 THEN
  64.       IF (Length(p)#0) &
  65.          (p[Length(p)-1]#":") THEN
  66.         Concat(p,"/")
  67.       END;
  68.       IF Length(f)#0 THEN Concat(p,f) END;
  69.       CopyMem(ADR(p),path,256);
  70.       RETURN TRUE;
  71.     ELSE
  72.       RETURN FALSE
  73.     END
  74.   END GetFileName;
  75.  
  76. BEGIN
  77.   TermProcedure(Cleanup);
  78.   arpbase:=OpenLibrary(ADR("arp.library"),0);
  79.   Assert(arpbase#NIL,ADR("arp.library required!"));
  80. END ArpReq.mod
  81.