home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / COMAL3-1.DMS / in.adf / Demos / DirectoryTree < prev    next >
Encoding:
Text File  |  1993-03-30  |  917 b   |  50 lines

  1. // Directory tree.
  2. //
  3. // Shows the directory tree graphically.
  4.  
  5. USE Graphics
  6.  
  7. graphicscreen(0)
  8. window(0,80,0,24)
  9. clear
  10.  
  11. MakeTree("","Comal:",0)
  12.  
  13. textscreen
  14.  
  15. PROC MakeTree(path$,dirname$,level) CLOSED
  16.   USE Catalog
  17.   USE Graphics
  18.  
  19.   DIM CatId OF ULONG
  20.   DIM filesize OF LONG
  21.  
  22.   IF dirname$(LEN(dirname$)..LEN(dirname$))=":" THEN
  23.     slash$:=""
  24.   ELSE
  25.     slash$:="/"
  26.   ENDIF
  27.   ShowNode(dirname$,level)
  28.   move(2,0.5)
  29.   OpenCatalog(path$+dirname$,CatId)
  30.   x1:=xcor; y1:=ycor
  31.   WHILE NOT EOC(CatId) DO
  32.     ReadCatalog(CatId,name$,filesize)
  33.     IF filesize=-1 THEN                     // subdirectory
  34.       y2:=ycor
  35.       moveto(x1,y1)
  36.       drawto(x1,y2)
  37.       draw(0,0.5)
  38.       x1:=xcor; y1:=ycor
  39.       draw(2,0)
  40.       MakeTree(path$+dirname$+slash$,name$,level+1)
  41.     ENDIF
  42.   ENDWHILE
  43.   CloseCatalog(CatId)
  44.  
  45.   PROC ShowNode(dirname$,level)
  46.     plottext(xcor+0.5,ycor-0.25,dirname$)
  47.   ENDPROC ShowNode
  48.  
  49. ENDPROC MakeTree
  50.