home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 28 / amigaformatcd28.iso / -in_the_mag- / graphics / metaview / slideshowmv < prev    next >
Text File  |  1998-05-13  |  9KB  |  328 lines

  1. /* Program to use Metaview to display a whole directory of files, including subdirectories. An assign to Metaview: is needed.  */
  2.  
  3. /* Written by Don Cox, Nov 97. Copyright, not Public Domain. */
  4. /* $VER:SlideShowMV Nov19 97 */
  5.  
  6.  
  7. call open("STDERR","ram:traceSS","W")
  8. trace r
  9.  
  10. options results
  11. numeric digits 14
  12.  
  13.  
  14. /* +++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++ */
  15.  
  16. address command
  17. dir1 = getclip('FileSortIn')
  18. if dir1 ~= "" then 'requestfile >ram:answer DRAWER "'dir1'" TITLE "Source Directory" DRAWERSONLY'
  19. else 'requestfile >ram:answer TITLE "Source Directory" DRAWERSONLY'
  20. call open("answer","ram:answer",'R')
  21. directory = strip(readln("answer"),'B','"')
  22. call setclip('FileSortIn',directory)
  23.  
  24. 'REQUESTCHOICE >ram:rcnum1 "Display Time"  "Seconds per image" "1|3|5|7|Abort"'
  25.  
  26. call open("answer3","ram:rcnum1")
  27. rcn = readln("answer3")
  28. SecsPerImage = rcn
  29. if rcn = 0 then exit
  30.  
  31.  
  32. /* Looking for our start process */
  33.  
  34. /*
  35. ** Create a new Metaview process:
  36. ** first look for the allready running processes
  37. ** then the new Port will be the next one
  38. */
  39.  
  40. do NUMBER = 0 to 20
  41.     if (SHOW(PORTS,"METAVIEW." || NUMBER) = 0) then
  42.     leave
  43. end
  44.  
  45. /*
  46. ** Searching for MetaView: 1. our path above,
  47. **    2. path in env:MetaView.path
  48. ** or 3. you must have a assign "MetaView:"
  49. */
  50.  
  51. if (EXISTS(METAVIEW)=0) then do
  52.     if OPEN("MVVAR","env:MetaView.path","Read") then do
  53.         METAVIEW = READLN("MVVAR")
  54.         METAVIEWpath= getpath(METAVIEW)
  55.         address command
  56.         'assign METAVIEW: 'METAVIEWpath
  57.     end
  58.     if (EXISTS(METAVIEW)=0) then do
  59.         METAVIEW = "MetaView:MetaView"
  60.     end
  61. end
  62.  
  63. /*
  64. ** Enable warnings for WaitForPort
  65. */
  66.  
  67. OPTIONS FAILAT 5
  68. ADDRESS COMMAND
  69.     "run " || METAVIEW 
  70.     MVPORT = "METAVIEW." || NUMBER
  71.     "WaitForPort " || MVPORT
  72.  
  73.  
  74. address value MVPORT
  75.  
  76.  
  77. /* Display files in one directory and its descendents */
  78.  
  79. imagecount = 1
  80. newfile = ""
  81. oldfile = ""
  82.  
  83. address command
  84. 'delete Metaview:dirlist1'
  85. 'delete Metaview:dirlist'
  86. 'list >Metaview:dirlist1 "'directory'" dirs all LFORMAT="%P%S"'
  87. 'sort from Metaview:dirlist1 to Metaview:dirlist'
  88. call open("dirinput","Metaview:dirlist","r")
  89.  
  90. /* First display pics in root directory */
  91. 'delete Metaview:filelist1'
  92. 'delete Metaview:filelist'
  93. 'list >Metaview:filelist1 "'directory'" files LFORMAT="%P%S"'
  94. call open('input',"Metaview:filelist1","r") /* test in case it's empty */
  95. listtest = readln('input')
  96. call close('input')
  97.  
  98. if listtest~="" then do
  99.     'sort from Metaview:filelist1 to Metaview:filelist'
  100.     call dirdisplay
  101.     end
  102.  
  103.  
  104. /* Now do all the subdirectories */
  105.  
  106. if~exists("Metaview:dirlist") then wayout()
  107.  
  108. listtest = readln("dirinput")
  109. call seek("dirinput",0,'B')
  110. dirtrees = 0
  111. if listtest~="" then do
  112.     'REQUEST "Show images in Subdirectories?" "Yes|No"' 
  113.     dirtrees = rc
  114.     end
  115.  
  116. do d = 1 to 700
  117.     dirname = readln("dirinput")
  118.     if dirname = "" then break
  119.     address command
  120.     'delete Metaview:filelist1'
  121.     'delete Metaview:filelist'
  122.     'list >Metaview:filelist1 "'dirname'" files LFORMAT="%P%S"'
  123.     call open('input2',"Metaview:filelist1","r") /* test in case it's empty */
  124.     listtest = readln('input2')
  125.     call close('input2')
  126.  
  127.     if listtest~="" then do
  128.         'sort from Metaview:filelist1 to Metaview:filelist'
  129.         call dirdisplay
  130.         end
  131.     end
  132.  
  133. wayout:
  134. address value MVPORT
  135. 'REQUEST "   Finished   "'
  136. exit
  137. end
  138.  
  139. /* ++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++ */
  140.  
  141.  
  142. getpath:
  143. parse arg allname
  144. pos1 = lastpos("/",allname)
  145. if pos1 = 0 then pos1 = lastpos(":",allname)
  146. filepath = left(allname,pos1)
  147. return filepath
  148.  
  149. getname:
  150. parse arg allname
  151. pos1 = lastpos("/",allname)
  152. if pos1 = 0 then pos1 = lastpos(":",allname)
  153. justname = substr(allname,pos1+1)
  154. return justname 
  155.  
  156. expandfilename: procedure
  157.   parse arg jfile;
  158.   if index(jfile,':') = 0 then do
  159.     curdir = pragma(D);
  160.     if right(curdir,1) ~= ':' then do
  161.       if right(curdir,1) ~= '/' then do
  162.         if curdir ~= '' then do
  163.           curdir = curdir || '/';
  164.           end;
  165.         end;
  166.       end;
  167.     jfile = curdir||jfile;
  168.     end;
  169.   return jfile
  170.  
  171. rounded: procedure
  172. parse arg number
  173. originalNumber = number
  174. number = trunc(number)
  175. if (originalNumber-number)>0.5 then number=number+1
  176. return number
  177.  
  178.  
  179. /* ++++++++++++++++++++++++++++++  ++++++++++++++++++++++++++++++++++*/
  180.  
  181. /* Display all the pics in one directory */
  182. dirdisplay:
  183. address value MVPORT
  184.  
  185.  
  186. call open('input3',"Metaview:filelist","r")
  187. do i = 1 to 7000   /* safety limit of 7000 files  */
  188.     filename = readln('input3')
  189.     if filename = "" then break
  190.     
  191.     slashpos = lastpos("/",filename)
  192.     dotpos = lastpos(".",filename)
  193.     if dotpos<slashpos then dotpos = 0 /* not dots in directory names */
  194.     if dotpos~=0 then extension = upper(substr(filename,dotpos))
  195.     else extension = ""
  196.     extensionlist = ".INFO .ILBM .GIF .PSFONT .FONT .PDFONT .PFB .AFM .METRIC .LIB .DEM .DOC .TXT .WP .README .ME .ZIP .ARC .ME .DAT .EXE .PIF .INI .TF .DB .C .H .GF .PPRX .PDRX .REXX .ADPRO .CFG .PREFS .HTM .HTML"
  197.     if pos(upper(extension),extensionlist)~=0 then iterate i
  198.     if word(filename,2) = "files" then iterate i /* This line not a file name */
  199.     if filename="Ram:traceSS" then iterate i
  200.     if word(filename,1) = "TOTAL:" then break  /* or this one */
  201.  
  202.     if upper(extension) = ".LHA" then call UnArc()
  203.     else success = showpic()
  204.  
  205.  
  206.     end    /* end of directory */
  207.  
  208. call close('input3')
  209.  
  210.  
  211. return
  212.  
  213. /* +++++++++++++++++++++++++++++++  +++++++++++++++++++++++++++++++++ */
  214.  
  215. showpic:
  216.  
  217. if ~open("picinput",filename,"R") then return 1
  218. chunks = readch("picinput",1000)
  219. call close("picinput")
  220.  
  221. address value MVPORT
  222.  
  223. 'LOAD "'filename'"' /* Quotes allow file names with spaces */
  224. if rc ~=0 then return 1 /* if load fails, try the next one */
  225. newfile = result
  226.  
  227. address command
  228. "wait "SecsPerImage
  229. address value MVPORT
  230.  
  231. return 0
  232.  
  233. /* ++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++ */
  234.  
  235. /* Unarchive LHA files to HD and display temporary dir */
  236. UnArc:
  237. if ~exists("c:lha") then return 1
  238. address command
  239. if exists("Metaview:ssarc") then 'delete Metaview:ssarc all' /* gets rid of any crash-producing files left from previous run */
  240. 'makedir Metaview:ssarc'
  241.  
  242. 'lha e -f "'filename'" Metaview:ssarc/'
  243.  
  244.  
  245. /* Display files in archive directory and its descendents. LHA files within LHA files are NOT expanded. */
  246.  
  247. arcimagecount = 1
  248.  
  249. address command
  250. 'delete Metaview:arcdirlist1'
  251. 'delete Metaview:arcdirlist'
  252. 'list >Metaview:arcdirlist1 Metaview:ssarc dirs all LFORMAT="%P%S"'
  253. 'sort from Metaview:arcdirlist1 to Metaview:arcdirlist'
  254. call open("arcdirinput","Metaview:arcdirlist","r")
  255.  
  256. /* First display pics in root directory */
  257. 'delete Metaview:arcfilelist1'
  258. 'delete Metaview:arcfilelist'
  259. 'list >Metaview:arcfilelist1 Metaview:ssarc files LFORMAT="%P%S"'
  260. call open('arcinput',"Metaview:arcfilelist1","r") /* test in case it's empty */
  261. listtest = readln('arcinput')
  262. call close('arcinput')
  263.  
  264. if listtest~="" then do
  265.     'sort from Metaview:arcfilelist1 to Metaview:arcfilelist'
  266.     call arcdirdisplay
  267.     end
  268.  
  269.  
  270. /* Now do all the archive subdirectories */
  271.  
  272. if~exists("Metaview:arcdirlist") then return
  273.  
  274. listtest = readln("arcdirinput")
  275. call seek("arcdirinput",0,'B')
  276.  
  277. do d = 1 to 700
  278.     arcdirname = readln("arcdirinput")
  279.     if arcdirname = "" then break
  280.     address command
  281.     'delete Metaview:arcfilelist1'
  282.     'delete Metaview:arcfilelist'
  283.     'list >Metaview:arcfilelist1 "'arcdirname'" files LFORMAT="%P%S"'
  284.     call open('arcinput2',"Metaview:arcfilelist1","r") /* test in case it's empty */
  285.     listtest = readln('arcinput2')
  286.     call close('arcinput2')
  287.  
  288.     if listtest~="" then do
  289.         'sort from Metaview:arcfilelist1 to Metaview:arcfilelist'
  290.         address "IMAGEENGINEER"
  291.         call arcdirdisplay
  292.         end
  293.     end
  294. call close("arcdirinput")
  295. 'delete Metaview:ssarc all'
  296. return
  297.  
  298. /* +++++++++++++++++++++++++++++  ++++++++++++++++++++++++++++++++++  */
  299.  
  300. arcdirdisplay:
  301.  
  302. call open('inputarc',"Metaview:arcfilelist","r")
  303. do a = 1 to 7000   /* safety limit of 7000 files  */
  304.     address command
  305.     filename = readln('inputarc')
  306.     if filename = "" then break
  307.     
  308.     slashpos = lastpos("/",filename)
  309.     dotpos = lastpos(".",filename)
  310.     if dotpos<slashpos then dotpos = 0 /* not dots in directory names */
  311.     if dotpos~=0 then extension = upper(substr(filename,dotpos))
  312.     else extension = ""
  313.     /* Note: this time filter out LHA files */
  314.     extensionlist = extensionlist||" .LHA"
  315.     if pos(upper(extension),extensionlist)~=0 then iterate a
  316.     if word(filename,2) = "files" then iterate /* This line not a file name */
  317.     if left(filename,9)="Ram:trace" then iterate
  318.     if word(filename,1) = "TOTAL:" then break  /* or this one */
  319.  
  320.     success = showpic()
  321.     end    /* end of directory */
  322.  
  323. call close('inputarc')
  324.  
  325.  
  326. return 0
  327.  
  328.