home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 13 / AACD13.ISO / AACD / System / EASys / EASys!_update_481_to_482 / EASys! / Programs / Presentate.rexx < prev   
OS/2 REXX Batch file  |  2000-07-08  |  35KB  |  1,575 lines

  1. /*
  2.   EASys! System © TNE) since 1995
  3.  
  4.   Presentate.rexx
  5.   An alround datatype viewer dispatching system which is usable allover the system and
  6.   in embedded style within external user applications.
  7.   
  8.   Makes heavy use of EASys!_bin:IDer program for detection of 
  9.   file types, file viewers and file editors.
  10.  
  11.   Needs:  RexxReqTools, Presentation-Tools, see ENV:RefTable
  12.   
  13.   possible args: 
  14.   -FList <FileList_File>      hand over a already prepared filelist from other EASys! Apps
  15. +
  16.   -iconAdd                    user wants to add an icon to a file
  17.   -icontype <type>            user wants to change the icontype of a WB selected icon
  18.   -delicon                    user wants to remove an icon from a file
  19.   -edit                       user wants to edit/work on selected files. Presentate will call the appropriate App for editing.
  20.   -print                      user wants the WB selected files to be printed.
  21. */
  22.  
  23. PARSE ARG UserArgs
  24.  
  25. CALL Init()
  26.  
  27. wbargs=0
  28. cliargs=0
  29. flist=0
  30. startargs=0
  31.  
  32. UserArgs=STRIP(UserArgs,'B',' ')
  33.  
  34. IF POS('-FList',UserArgs)>0 THEN
  35. DO
  36.  flist=1
  37.  lefts=''
  38.  rights=''
  39.  PARSE VAR UserArgs lefts'-FList 'rights
  40.  filelist_tmp=STRIP(WORD(rights,1),'B','"')
  41.  rights=RIGHT(rights,LENGTH(rights)-LENGTH(WORD(rights,1)))
  42.  UserArgs=lefts''rights
  43. END
  44.  
  45. l=LENGTH(UserArgs)
  46. SELECT
  47.  WHEN UPPER(LEFT(STRIP(UserArgs,'L','"'),4))='-DIR' THEN
  48.  DO
  49.   ActualPath=RIGHT(UserArgs,l-5)
  50.   ActualPath=STRIP(ActualPath,'B','"')
  51.   UserArgs=''
  52.   CALL WorkLoop
  53.   CALL ExitMe
  54.  END
  55.  WHEN WB_port=1 & POS('-print',UserArgs)=0 & (UserArgs='' | UserArgs='USERARGS') THEN
  56.  DO
  57.   wbargs=1
  58.   CALL WorkLoop
  59.   CALL ExitMe
  60.  END
  61.  WHEN WB_port=0 & POS('-print',UserArgs)=0 & (UserArgs='' | UserArgs='USERARGS') THEN
  62.  DO
  63.   CALL WorkLoop
  64.   CALL ExitMe
  65.  END
  66.  WHEN POS('AS_EasyView:',UserArgs)>0 THEN CALL EasyView
  67.  WHEN POS('AS_EasyPrint:',UserArgs)>0 THEN CALL EasyPrint
  68.  WHEN POS(':',UserArgs)>0 | POS('/',UserArgs)>0 THEN cliargs=1
  69.  WHEN UserArgs="??" THEN
  70.  DO
  71.   IF EXISTS('EASys!_bin:'Language'/Presentate.help') THEN ADDRESS COMMAND 'type EASys!_bin:'Language'/Presentate.help'
  72.   ELSE ADDRESS COMMAND 'type EASys!_bin:english/Presentate.help'
  73.   EXIT 0
  74.  END
  75.  WHEN WB_port=1 THEN wbargs=1
  76.  OTHERWISE NOP
  77. END /* SELECT */
  78.  
  79.  
  80. l=LENGTH(UserArgs)
  81. SELECT
  82.  WHEN WORD(UserArgs,1)='-icontype' THEN CALL ChangeIconType
  83.  WHEN WORD(UserArgs,1)='-iconAdd' THEN CALL IconAdd
  84.  WHEN WORD(UserArgs,1)='-delicon' THEN CALL DelIcon
  85.  WHEN WORD(UserArgs,1)='-edit' THEN
  86.  DO
  87.   editmode=1
  88.   SELECT
  89.    WHEN cliargs=1 THEN PARSE VAR UserArgs '-edit 'UserArgs
  90.    WHEN wbargs=1 THEN UserArgs=''
  91.    OTHERWISE CALL ExitMe
  92.   END
  93.   IF GetFileSelection()=0 THEN EXIT 0
  94.   CALL ContinuedMode
  95.  END
  96.  
  97.  WHEN WORD(UserArgs,1)='-print' THEN
  98.  DO
  99.   printmode=1
  100.   SELECT
  101.    WHEN cliargs=1 THEN PARSE VAR UserArgs '-print 'UserArgs
  102.    WHEN wbargs=1 THEN UserArgs=''
  103.    OTHERWISE CALL ExitMe
  104.   END
  105.   CALL InitPrint
  106.   CALL WorkLoop
  107.  END
  108.  
  109.  OTHERWISE CALL WorkLoop
  110. END /* SELECT */
  111.  
  112. CALL ExitMe
  113. /* ------------------------- */
  114. WorkLoop:
  115.  
  116. IF GetFileSelection()=0 THEN CALL ExitMe
  117.  
  118. IF StartArgs=2 THEN
  119. DO
  120.   /* once for all selected files */
  121.   CALL ContinuedMode
  122. END
  123. ELSE
  124. DO 
  125.  DO FOREVER
  126.   CALL ContinuedMode
  127.   drop UserArgs
  128.   drop Files
  129.   drop printer
  130.   UserArgs=''
  131.   StartArgs=0
  132.   IF GetFileSelection()=0 THEN CALL ExitMe
  133.  END
  134. END
  135. RETURN
  136. /* ------------------------- */
  137. ChangeIconType:
  138.  
  139. SELECT
  140.  WHEN POS('FILES ',UserArgs)>0 THEN
  141.  DO
  142.   cliargs=1
  143.   PARSE VAR UserArgs '-icontype 'type_of_icon' FILES 'UserArgs
  144.   IF FileParser()=0 THEN EXIT 0
  145.  END
  146.  OTHERWISE
  147.  DO
  148.   wbargs=1
  149.   PARSE VAR UserArgs '-icontype 'type_of_icon
  150.   UserArgs=''
  151.   Files.1='FILES.1'
  152.   IF GetSelectedIcons()=0 THEN EXIT 0
  153.   CALL SetActualPath
  154.  END
  155. END
  156.  
  157. newdeftool=''
  158. IF LEFT(type_of_icon,4)='PROJ' THEN
  159. DO
  160.  PARSE VAR type_of_icon 'PROJ 'newdeftool
  161.  IF newdeftool='' THEN newdeftool='EASys!_bin:IDer'
  162.  type_of_icon='PROJECT'
  163. END
  164.  
  165. DO k=1 TO Files.count
  166.  /* Device's Icons are different named */
  167.  IF RIGHT(Files.k,1)=':' THEN Files.k=Files.k'disk'
  168.  IF RIGHT(Files.k,1)='/' THEN Files.k=STRIP(Files.k,'T','/')
  169.  
  170.  CMD.1='EASys!_bin:DoIcon 'Files.k' NEWTYPE='type_of_icon' QUIET'
  171.  CMD.2=''
  172.  
  173.  IF type_of_icon='PROJECT' THEN CMD.2='EASys!_bin:DoIcon 'Files.k' NEWDT='newdeftool' QUIET'
  174.  
  175.  ADDRESS COMMAND
  176.  CMD.1
  177.  CMD.2
  178.  
  179. END
  180. RETURN
  181.  
  182. /* ------------------------- */
  183. DelIcon:
  184.  
  185. SELECT
  186.  WHEN cliargs=1 THEN PARSE VAR UserArgs '-delicon 'UserArgs
  187.  WHEN wbargs=1 THEN UserArgs=''
  188.  OTHERWISE CALL ExitMe
  189. END
  190. IF GetFileSelection()=0 THEN EXIT 0
  191.  
  192. DO k=1 TO Files.count
  193.  ADDRESS COMMAND 'delete >NIL: "'Files.k'.info" FORCE QUIET'
  194.  IF WB_port=1 THEN
  195.   ADDRESS WORKBENCH 'MENU WINDOW 'path.k' INVOKE WINDOW.UPDATE'
  196.  ELSE
  197.   ADDRESS COMMAND 'EASys!_bin:IconDelete "'Files.k'.info"'
  198. END
  199.  
  200. CALL ExitMe
  201. /* ------------------------- */
  202. IconAdd:
  203.  
  204. iconadding=1
  205. getalltypes=1
  206. SELECT
  207.  WHEN cliargs=1 THEN PARSE VAR UserArgs '-iconAdd 'UserArgs
  208.  WHEN wbargs=1 THEN UserArgs=''
  209.  OTHERWISE CALL ExitMe
  210. END
  211. IF GetFileSelection()=0 THEN EXIT 0
  212.  
  213. IF ~(WB_port=1) THEN r=rtezrequest("Get OS3.5! It's worth it."CR"This functionality is best supported with WB3.5",'Aha!',ReqTitle,PosTags)
  214.  
  215. IF WB_port=1 THEN
  216.  IconImgCopy='EASys!_bin:IconCopy'
  217. ELSE
  218.  IconImgCopy='EASys!_bin:IconCopy'
  219.  
  220. DO k=1 TO Files.count
  221.  icon=deficon.k
  222.  
  223.  /* Device's Icons are different named */
  224.  IF RIGHT(Files.k,1)=':' THEN Files.k=Files.k'disk'
  225.  IF RIGHT(Files.k,1)='/' THEN Files.k=STRIP(Files.k,'T','/')
  226.  
  227.  IF EXISTS(files.k'.info') THEN
  228.  DO
  229.   iconexists=1
  230.   cmd=IconImgCopy /* IMAGE copying only */
  231.   cmdOpts=''
  232.   infoSfx=''
  233.  END
  234.  ELSE
  235.  DO
  236.   iconexists=0
  237.   cmd=IconImgCopy /* IMAGE copying only */
  238.   cmdOpts=''
  239.   infoSfx=''
  240.  END
  241.  
  242.  IF iconexists=1 & WB_port=1 THEN WBinfo=ShowMessage('Presentate.8',,,,'EASys! Icon Updater')
  243.  ELSE WBinfo='NULL'
  244.  
  245.  IF WBinfo=0 THEN CALL ExitMe
  246.  
  247.  SELECT
  248.   WHEN WBinfo=1 THEN
  249.   DO
  250.    modifyicon=0
  251.    ADDRESS WORKBENCH MENU INVOKE ICONS.INFORMATION
  252.    r=DELAY(60)
  253.   END
  254.  
  255.   WHEN WBinfo=3 THEN
  256.   DO
  257.    modifyicon=1
  258.    IF UPPER(RIGHT(Files.k,5))=':DISK' THEN icon='ENV:Sys/def_device'
  259.    ELSE icon='ENV:Sys/'deficon.k
  260.   END
  261.  
  262.   WHEN UPPER(RIGHT(Files.k,5))=':DISK' THEN
  263.   DO
  264.    modifyicon=1
  265.    icon=ShowMessage('Presentate.7','EASys!:Icons/Drawers','def_',,FileName.k' (DEV:)')
  266.    IF icon='' THEN CALL ExitMe
  267.    IF UPPER(RIGHT(icon,4))='DEF_' THEN icon='ENV:Sys/def_device'
  268.   END
  269.  
  270.   WHEN ftype.k='DIRECTORY' THEN
  271.   DO
  272.    modifyicon=1
  273.    icon=ShowMessage('Presentate.7','EASys!:Icons/Drawers','def_',,FileName.k' (DIR)')
  274.    IF icon='' THEN CALL ExitMe
  275.    IF UPPER(RIGHT(icon,4))='DEF_' THEN icon='ENV:Sys/def_drawer'
  276.   END
  277.  
  278.   WHEN fclass.k'_'ftype.k=GLOBALHELP_LINK THEN
  279.   DO
  280.    modifyicon=0
  281.    cmd='echo >NIL:'
  282.   END
  283.  
  284.   WHEN iconexists=1 THEN
  285.   DO
  286.    modifyicon=0
  287.    icon=ShowMessage('Presentate.7','EASys!:Icons','def_',,FileName.k)
  288.    SELECT
  289.     WHEN icon='' THEN CALL ExitMe
  290.     WHEN UPPER(RIGHT(icon,4))='DEF_' THEN icon='ENV:Sys/'deficon.k
  291.     OTHERWISE NOP
  292.    END
  293.   END
  294.  
  295.   WHEN fclass.k'_'ftype.k='DOS_TOOL' THEN
  296.   DO
  297.    modifyIcon=1
  298.    icon=ShowMessage('Presentate.7','EASys!:Icons','def_',,FileName.k' (PRG)')
  299.    SELECT
  300.     WHEN icon='' THEN CALL ExitMe
  301.     WHEN UPPER(RIGHT(icon,4))='DEF_' THEN icon='ENV:Sys/'deficon.k
  302.     OTHERWISE NOP
  303.    END
  304.   END
  305.  
  306.   OTHERWISE
  307.   DO
  308.    modifyIcon=1
  309.    icon='ENV:Sys/'deficon.k
  310.   END
  311.  END
  312.  
  313.  icon=TestIcon(icon)
  314.  SELECT
  315.   WHEN ~(WB_port=1) THEN ADDRESS COMMAND cmd '"'icon'" "'files.k'" 'cmdOpts
  316.   WHEN WBinfo=1 THEN NOP
  317.   WHEN UPPER(RIGHT(Files.k,5))=':DISK' THEN
  318.   DO
  319.    ADDRESS COMMAND 'c:MergeIcons FROM "'icon'" TO "'files.k'"'
  320.    r=DELAY(70)
  321.   END
  322.   OTHERWISE ADDRESS COMMAND cmd '"'icon''InfoSfx'" "'files.k''InfoSfx'" 'cmdOpts
  323.  END
  324.  
  325.  IF modifyIcon=1 THEN
  326.  DO
  327.   SELECT
  328.    WHEN UPPER(RIGHT(Files.k,5))=':DISK' THEN
  329.    DO
  330.     prot_bit1='+r'
  331.     prot_bit2='-s'
  332.     icon_type='newT=Disk'
  333.     deftool=''
  334.     tooltype=''
  335.    END
  336.  
  337.    WHEN ftype.k='DIRECTORY' THEN
  338.    DO
  339.     prot_bit1='+r'
  340.     prot_bit2='-es'
  341.     icon_type='newT=Drawer'
  342.     deftool=''
  343.     tooltype=''
  344.    END
  345.    WHEN fclass.k'_'ftype.k='SCRIPT_AMIGADOS' THEN
  346.    DO
  347.     prot_bit1='+sr'
  348.     prot_bit2='-e'
  349.     icon_type='Project'
  350.     deftool='newDT=c:IconX'
  351.     tooltype='aTT="WINDOW=NIL:"'
  352.    END
  353.    WHEN fclass.k'_'ftype.k='SCRIPT_REXX' THEN
  354.    DO
  355.     prot_bit1='+sr'
  356.     prot_bit2='-e'
  357.     icon_type='newT=Project'
  358.     deftool='newDT=rx'
  359.     tooltype='aTT="CONSOLE=NIL:"'
  360.    END
  361.    WHEN fclass.k'_'ftype.k='DOS_TOOL' THEN
  362.    DO
  363.     prot_bit1='+re'
  364.     prot_bit2='-s'
  365.     icon_type='newT=Tool'
  366.     deftool=''
  367.     tooltype=''
  368.    END
  369.    OTHERWISE
  370.    DO
  371.     prot_bit1='+r'
  372.     prot_bit2='-es'
  373.     icon_type='newT=Project'
  374.     deftool='newDT="EASys!_bin:IDer"'
  375.     tooltype=''
  376.    END
  377.   END
  378.  
  379.   ADDRESS COMMAND
  380.   'EASys!_bin:DoIcon "'files.k'" 'icon_type' QUIET'
  381.   'EASys!_bin:ProcessIcon "'files.k'" UNSNAP OPT KTT'
  382.   'EASys!_bin:DoIcon "'files.k'" 'deftool' NEWSTACKSIZE=10000 'tooltype' QUIET'
  383.   'FileNote "'files.k'" "Icon provided by EASys! (TNE), DoIcon (L.Eilebrecht), ProcessIcon (D.Stoecker)"'
  384.   'protect "'files.k'" 'prot_bit1
  385.   'protect "'files.k'" 'prot_bit2
  386.  
  387.   IF ~(WBinfo=1) THEN ADDRESS COMMAND IconImgCopy '"'icon''InfoSfx'" "'files.k''InfoSfx'" 'cmdOpts
  388.  END
  389.  /* IF WB_port=1 THEN ADDRESS WORKBENCH INFO Files.k */
  390. END
  391. CALL ExitMe
  392.  
  393. /* ------------------------- */
  394. TestIcon:
  395. PARSE ARG icon
  396.  
  397. IF UPPER(RIGHT(icon,5))='.INFO' THEN icon=LEFT(icon,LENGTH(icon)-5)
  398.  
  399. IF ~EXISTS(icon'.info') THEN
  400. DO
  401.  SELECT
  402.   WHEN fclass.k=PIX THEN icon='def_picture'
  403.   WHEN fclass.k=ARC THEN icon='def_LHA'
  404.   WHEN fclass.k=MOD THEN icon='def_MOD'
  405.   WHEN fclass.k=SAMPLE THEN icon='def_sound'
  406.   WHEN fclass.k=VIDEO THEN icon='def_anim'
  407.   WHEN fclass.k=TEXT THEN icon='def_ASCII'
  408.   WHEN fclass.k=SCRIPT THEN icon='def_ASCII'
  409.   WHEN fclass.k=SOURCE THEN icon='def_ASCII'
  410.   WHEN fclass.k=OFFICE THEN icon='def_ASCII'
  411.   OTHERWISE icon='def_Project'
  412.  END
  413.  icon='ENV:Sys/'icon
  414. END
  415.  
  416. RETURN icon
  417.  
  418. /* ---------------------- */
  419. ViewIt:
  420. PARSE ARG vfile
  421.  
  422. type=GetType(vfile)
  423. IF type='WBScriptLink' THEN vfile=GetRealFile(vfile)
  424.  
  425. SELECT
  426.  WHEN editmode=1 THEN
  427.  DO
  428.   viewer='EASys!_bin:IDer CONFIG=ENV:IDer_edit.prefs'
  429.   ADDRESS COMMAND viewer' "'vfile'"'
  430.  END
  431.  
  432.  WHEN printmode=1 THEN
  433.  DO
  434.   /* get the real file's type if it was a WBScriptLink */
  435.   IF type='WBScriptLink' THEN type=GetType(vfile)
  436.   viewer='EASys!_bin:IDer CONFIG=ENV:IDer_print.prefs'
  437.   IF class='SOURCE' | class='SCRIPT' | CLASS='TEXT' | type='README' THEN CALL PrintInternal
  438.   ELSE ADDRESS COMMAND viewer' "'vfile'"'
  439.  END
  440.  
  441.  WHEN IsDir(vfile)=1 THEN CALL MultiMediaStatistic(vfile)
  442.  
  443.  OTHERWISE 
  444.  DO
  445.   viewer='EASys!_bin:IDer CONFIG=ENV:IDer.prefs'
  446.   ADDRESS COMMAND viewer' "'vfile'"'
  447.  END
  448. END
  449. RETURN
  450.  
  451. /* ------------------------- */
  452. EasyView:
  453.  
  454. IF GetClip('EasyView')=1 THEN EXIT 0 /* prevent second startup at EasySave */
  455.  
  456. EasyView=1
  457. CALL SetClip('EasyView',1)
  458.  
  459. IF ShowMessage('Presentate.4',,,,AppName)=0 THEN CALL ExitMe
  460.  
  461. ADDRESS COMMAND 'list >T:'TempPath' AS_EasyView: ALL FILES LFORMAT "%s%s"'
  462. IF ~Open(fTMP,'T:'TempPath,'READ') THEN CALL Err_ShowMessage('T:'TempPath)
  463. i=0
  464. DO FOREVER
  465.  i=i+1
  466.  Files.i=READLN(fTMP)
  467.  IF EOF(fTMP) THEN LEAVE
  468.  CALL Analyze
  469. END
  470. r=Close(fTMP)
  471. Files.count=i-1
  472.  
  473. DO FOREVER
  474.  IF ~(EasyView=1 | EditMode=1 | PrintMode=1) THEN
  475.   IF GetFileSelection()=0 THEN LEAVE
  476.  
  477.  SELECT
  478.   WHEN Files.count>1 THEN
  479.   DO FOREVER
  480.    guide=1
  481.    click=2
  482.    multimedia=3
  483.    help=4
  484.    stop=0
  485.  
  486.    Action=ShowMessage('Presentate.6',,,,AppName)
  487.    SELECT
  488.     WHEN Action=guide THEN CALL GuideMode
  489.     WHEN Action=click THEN CALL ClickThrough
  490.     WHEN Action=multimedia THEN CALL ContinuedMode
  491.     WHEN Action=help THEN CALL Help
  492.     WHEN Action=stop THEN LEAVE
  493.     OTHERWISE NOP
  494.    END
  495.   END
  496.  
  497.   WHEN Files.count=1 THEN CALL ViewIt(Files.1)
  498.   OTHERWISE NOP
  499.  END
  500.  
  501.  UserArgs=''
  502.  Files.count=0
  503.  drop Files
  504.  Ergebnis=0
  505.  TalkToUser=0    /* stop speaking until end now */
  506.  
  507.  IF StartArgs=2 THEN LEAVE
  508. END
  509.  
  510. CALL ExitMe
  511.  
  512. /* ------------------------- */
  513. ContinuedMode:
  514. DO k=1 TO Files.count
  515.  CALL ViewIt(Files.k)
  516. END
  517. RETURN
  518.  
  519. /* ------------------------- */
  520. GuideMode:
  521.  
  522. FirstEntry=0
  523. DO k=1 TO Files.count
  524.  
  525.  IF IsDir(Files.k) THEN
  526.  DO
  527.   /* Dir must end up with '/' or ':' */
  528.  
  529.   ADDRESS COMMAND 'list >T:'TempPath' "'Files.k'" ALL FILES LFORMAT "%s%s"'
  530.   IF ~Open(fTMP,'T:'TempPath,'READ') THEN CALL Err_ShowMessage('T:'TempPath)
  531.   i=0
  532.   DO FOREVER
  533.    file=READLN(fTMP)
  534.    IF EOF(fTMP) THEN LEAVE
  535.  
  536.    CALL WriteGuide(,,file)
  537.   END
  538.   r=Close(fTMP)
  539.  END
  540.  ELSE CALL WriteGuide(,,Files.k)
  541. END
  542. CALL WriteGuide('','LAST_ENTRY_')
  543.  
  544. RETURN
  545.  
  546. /* ------------------------- */
  547. ClickThrough:
  548.  
  549. view=1
  550. first=2
  551. prev=3
  552. next=4
  553. last=5
  554. help=6
  555. stop=0
  556.  
  557. k=0
  558. DO FOREVER
  559.  IF k<0 THEN k=0
  560.  IF k>=Files.count THEN k=Files.count-1
  561.  k=k+1
  562.  
  563.  r=PRAGMA('DIRECTORY',Path.k)
  564.  
  565.  a=k-2
  566.  b=k-1
  567.  SELECT
  568.   WHEN k=1 THEN prevfile='-------'CR'-------'
  569.   WHEN k=2 THEN prevfile='-------'CR'<' b '>   'Files.b
  570.   OTHERWISE prevfile='<' a '>   'Files.a'' CR'<' b '>   'Files.b
  571.  END
  572.  
  573.  a=k+1
  574.  b=k+2
  575.  c=Files.count
  576.  SELECT
  577.   WHEN k=c-1 THEN nextfile='<' a '>   'Files.a ''CR'-------'
  578.   WHEN k=c THEN nextfile='-------'CR'-------'
  579.   OTHERWISE nextfile='<' a '>   'Files.a'' CR'<' b '>   'Files.b
  580.  END
  581.  
  582.  IF Files.count>1 THEN
  583.  DO
  584.   Action=ShowMessage('Presentate.2',,,,prevfile,'>' k '<   'Files.k,nextfile,Files.count)
  585.   SELECT
  586.    WHEN Action=stop THEN LEAVE
  587.    WHEN Action=first THEN k=0
  588.    WHEN Action=view THEN CALL ViewIt(Files.k)
  589.    WHEN Action=next THEN NOP
  590.    WHEN Action=last THEN k=Files.count-1
  591.    WHEN Action=prev THEN k=k-2
  592.    WHEN Action=help THEN
  593.    DO
  594.     k=k-1
  595.     CALL Help
  596.    END
  597.    OTHERWISE NOP
  598.   END
  599.  END
  600.  ELSE
  601.  DO
  602.   CALL ViewIt(Files.k)
  603.   LEAVE
  604.  END
  605. END
  606. RETURN
  607.  
  608. /* ------------------------- */
  609. MultiMediaStatistic:
  610. PARSE ARG dir
  611.  
  612. ADDRESS COMMAND
  613. 'list >T:'TempPath'_1 "'dir'" ALL FILES LFORMAT "%s%s"'
  614. 'delete >NIL: T:'TempPath'_2 FORCE QUIET'
  615.  
  616. pix=0
  617. mod=0
  618. smp=0
  619. vid=0
  620. firstentry=0
  621.  
  622. r=Open(fTMP,'T:'TempPath'_1','READ')
  623. i=0
  624. DO FOREVER
  625.  i=i+1
  626.  file=ReadLn(fTMP)
  627.  IF EOF(fTMP) | i>70 THEN LEAVE
  628.  
  629.  class=MultiMediaClass(file)
  630.  
  631.  SELECT
  632.   WHEN class='PIX' THEN pix=pix+1
  633.   WHEN class='MOD' THEN mod=mod+1
  634.   WHEN class='SAMPLE' THEN smp=smp+1
  635.   /* WHEN class='VIDEO' THEN vid=vid+1 */
  636.  
  637.   OTHERWISE CALL WriteGuide(,,file)
  638.  END /* SELECT */
  639.  
  640.  IF mod=1 THEN firstfile=file
  641. END
  642. r=Close(fTMP)
  643.  
  644. r=MAX(pix,mod,smp,vid)
  645. IF r=0 THEN r='?'
  646.  
  647. SELECT
  648.  WHEN pix=r THEN ADDRESS COMMAND '${RefTable/Gfx-PictureBrowser} "'dir'"'
  649.  WHEN mod=r THEN ADDRESS COMMAND '${RefTable/Sound-MOD-universal} "'firstfile'"'
  650.  WHEN smp=r THEN ADDRESS COMMAND '${RefTable/Sound-RAW} "'dir'"'
  651.  /* WHEN vid=r THEN NOP */
  652.  OTHERWISE NOP
  653. END
  654.  
  655. IF firstentry=1 THEN
  656. DO
  657.  CALL DELAY 300
  658.  CALL WriteGuide('','LAST_ENTRY_')
  659. END
  660. RETURN
  661.  
  662. /* ------------------------- */
  663. WriteGuide:
  664. PARSE ARG viewer,editor,file
  665.  
  666. IF editor='LAST_ENTRY_' THEN
  667. DO
  668.  r=Writeln(fTMP2,'@endnode')
  669.  r=Close(fTMP2)
  670.  
  671.  ADDRESS COMMAND '${RefTable/Text-ViewGuide} T:'TempPath'_2'
  672.  RETURN
  673. END
  674.  
  675. IF ~(firstentry=1) THEN
  676. DO
  677.  firstentry=1
  678.  ADDRESS COMMAND 'delete >NIL: T:'TempPath'_2 FORCE QUIET'
  679.  
  680.  IF ~Open(fTMP1,'EASys!_rexx:'Language'/Presentate.3','READ') THEN CALL Err_ShowMessage('EASys!_rexx:'Language'/Presentate.3')
  681.  IF ~Open(fTMP2,'T:'TempPath'_2','WRITE') THEN CALL Err_ShowMessage('WRITING: T:'TempPath'_2')
  682.  
  683.  DO FOREVER
  684.    l=ReadLn(fTMP1)
  685.  
  686.    IF EOF(fTMP1) THEN LEAVE
  687.    r=WriteLn(fTMP2,l)
  688.  END
  689.  r=Close(fTMP1)
  690. END
  691.  
  692. IF viewer='' THEN
  693.  r=Writeln(fTMP2,'     @{"[]" SYSTEM "run >NIL: EASys!_bin:IDer 'file'"} @{"ed" SYSTEM "IDer CONFIG=ENV:IDer_edit.prefs 'file'"} @{"  " SYSTEM "${RefTable/File-Starter} 'file'"} 'file)
  694. ELSE
  695.  r=Writeln(fTMP2,'     @{"[]" SYSTEM "'viewer' 'file'"} @{"ed" SYSTEM "'editor' 'file'"} @{"  " SYSTEM "${RefTable/File-Starter} 'file'"} 'file)
  696.  
  697. RETURN
  698.  
  699. /* ------------------------- */
  700. PrintFiles:
  701.  
  702. DO k=1 TO Files.count
  703.  type=GetType(Files.k)
  704.  IF class='SOURCE' | class='SCRIPT' | CLASS='TEXT' | type='README' THEN CALL PrintInternal
  705.  ELSE ADDRESS COMMAND printer' "'Files.k'"'
  706. END
  707.  
  708. RETURN
  709.  
  710. /* ---------------------- */
  711. EasyPrint:
  712.  
  713. IF GetClip('EasyPrint')=1 THEN EXIT 0 /* prevent second startup at EasySave */
  714.  
  715. EasyPrint=1
  716. CALL SetClip('EasyPrint',1)
  717.  
  718. IF ShowMessage('Print.4',,,,AppName)=0 THEN CALL ExitMe
  719.  
  720. ADDRESS COMMAND 'list >T:'TempPath UserArgs' ALL FILES LFORMAT "%s%s"'
  721. IF ~Open(fTMP,'T:'TempPath,'READ') THEN CALL Err_ShowMessage('EasyPrint T:'TempPath)
  722. i=0
  723. DO FOREVER
  724.  i=i+1
  725.  Files.i=READLN(fTMP)
  726.  IF EOF(fTMP) THEN LEAVE
  727.  /* CALL Analyze */
  728. END
  729. r=Close(fTMP)
  730. Files.count=i-1
  731.  
  732. CALL ContinuedMode
  733. CALL ExitMe
  734.  
  735. /* ---------------------- */
  736. PrintInternal:
  737.  
  738. IF type='FinalWriter' THEN
  739. DO
  740.  ADDRESS COMMAND '${RefTable/Office-FinalWriter}' '"'Files.k'"'
  741.  
  742.  RETURN
  743. END
  744.  
  745. IF type='Guide' THEN
  746. DO
  747.  ADDRESS COMMAND '${RefTable/MultiView}' '"'Files.k'"'
  748.  
  749.  RETURN
  750. END
  751.  
  752. IF class='PIX' THEN
  753. DO
  754.  ADDRESS COMMAND '${RefTable/Gfx-Gfx-Publisher} ' '"'Files.k'"'
  755.  
  756.  RETURN
  757. END
  758.  
  759. IF EXISTS(Files.k) & ~(Files.k="FILES.K") THEN
  760. DO
  761.   CALL PlaySample(SamplePrintHow)
  762.  
  763.   Auswahl=ShowMessage('Print.2',,,,AppName,Files.k)
  764.   PrintCancel=0
  765.   PrintNormal=1
  766.   PrintDocDump=2
  767.  
  768.  IF (Auswahl=PrintCancel) THEN RETURN
  769.  IF (Auswahl=PrintDocDump) THEN
  770.    ADDRESS COMMAND DocDumper '"'Files.k'"'
  771.  ELSE
  772.  DO
  773.   IF EXISTS(PrintJob) THEN ADDRESS COMMAND 'delete >NIL: 'PrintJob' QUIET'
  774.  
  775.   IF (open(TEMPFILE, PrintJob, 'write')) THEN
  776.   DO
  777.       r=writeln(TEMPFILE, 'failat 21')
  778.       r=writeln(TEMPFILE, 'echo "*ec*n Stop printing by  Ctrl c ..."')
  779.       r=writeln(TEMPFILE, 'SYS:Prefs/Printer from ENV:sys/printer.prefs use')
  780.       r=writeln(TEMPFILE, 'initprinter')   /* reset and bidirectional printing */
  781.       r=writeln(TEMPFILE, 'echo >PRT: "*n"')
  782.       r=writeln(TEMPFILE, 'echo >PRT: "'Files.k'  ________  " NOLINE')
  783.       r=writeln(TEMPFILE, 'date >PRT:')
  784.       r=writeln(TEMPFILE, 'echo >PRT: "*n"')
  785.       r=writeln(TEMPFILE, 'copy 'Files.k' PRT:')
  786.       r=writeln(TEMPFILE, 'wait 5')
  787.       r=writeln(TEMPFILE, 'endcli >NIL:')
  788.       r=close(TEMPFILE)
  789.  
  790.       ADDRESS COMMAND 'newshell CON:'ReqLE'/'ReqTE'/$SHELLw/75/Print-Messages/NOCLOSE from 'PrintJob
  791.   END
  792.  END
  793. END
  794. ELSE
  795. Auswahl=ShowMessage('Print.3',,,,AppName,Files.k)
  796. RETURN
  797. /* ---------------------- */
  798. ReadHeader:
  799.  
  800. IF (OPEN(File,Files.i,"R")) THEN
  801. DO
  802.   Header=READCH(File, 30)
  803.   r=Close(File)
  804. END
  805. ELSE CALL ExitMe
  806.  
  807. HeaderExe=UPPER(SUBSTR(Header,1,4))
  808. HeaderFW=UPPER(SUBSTR(Header,9,4))
  809. HeaderGuide=UPPER(SUBSTR(Header,1,9))
  810. HeaderXpeg=UPPER(SUBSTR(Header,7,4))
  811. HeaderGIF=UPPER(SUBSTR(Header,1,3))
  812. HeaderIFF=UPPER(SUBSTR(Header,9,8))     /* IFF-ILBM-Formats */
  813. HeaderIFFNUKE=UPPER(SUBSTR(Header,25,6))
  814. RETURN
  815. /* ---------------------- */
  816. GetFileSelection:
  817.  
  818. /*
  819.  RETURN 2  signals that files have been handed over by arguments
  820.  flist or from workbench by wbargs or from cli
  821. */
  822.  
  823. FileName.1=''
  824. Files.1='FILES.1'
  825. Files.count=0
  826. Path.1=''
  827. ContinuedMode=0
  828.  
  829. SELECT
  830.  WHEN cliargs=1 THEN
  831.  DO
  832.   r=FileParser()
  833.   cliargs=0
  834.   IF r=0 THEN StartArgs=SelectFiles()
  835.   ELSE StartArgs=2
  836.  END
  837.  
  838.  WHEN flist=1 THEN
  839.  DO
  840.   r=ReadFileList(filelist_tmp)
  841.   flist=0
  842.   IF r=0 THEN StartArgs=SelectFiles()
  843.   ELSE StartArgs=2
  844.  END
  845.  
  846.  WHEN wbargs=1 THEN
  847.  DO
  848.   r=GetSelectedIcons()
  849.   wbargs=0
  850.   IF r=0 THEN StartArgs=SelectFiles()
  851.   ELSE StartArgs=2
  852.  END
  853.  
  854.  OTHERWISE StartArgs=SelectFiles()
  855. END /* SELECT */
  856.  
  857. IF StartArgs=0 THEN
  858.  RETURN 0
  859. ELSE
  860. DO
  861.  CALL SetActualPath
  862.  RETURN StartArgs
  863. END
  864. /* ---------------------- */
  865. SetActualPath:
  866. i=Files.count
  867. ActualPath=Path.1
  868. Path=Path.i
  869. LastSelected=FileName.1 /* remember */
  870.  
  871. ADDRESS COMMAND 'SetEnv Flags/ActualPath "'ActualPath'"'
  872. RETURN
  873. /* ---------------------- */
  874. SelectFiles:
  875. wbargs=0
  876. cliargs=0
  877. flist=0
  878.  
  879. Drive=LEFT(ActualPath,POS(':',ActualPath))
  880. ADDRESS COMMAND 'assign >NIL: "'ConvSpecial(Drive)'" EXISTS'
  881.  
  882. IF RC>0 | ActualPath='' THEN ActualPath="SYS:"
  883. ELSE IF ~EXISTS(ActualPath) THEN ActualPath="SYS:"
  884.  
  885. IF ~(firstSelection=1) THEN CALL PlaySample(SampleChooseFiles)
  886. IF LastSelected='LASTSELECTED' THEN LastSelected=''
  887.  
  888. UserArgs=ShowMessage(FileReq,ActualPath,LastSelected,,AppName)
  889. IF UserArgs='' THEN RETURN 0
  890. ELSE ContinuedMode=1
  891.  
  892. CALL FileParser
  893.  
  894. firstSelection=1
  895. RETURN 1
  896. /* ---------------------- */
  897. GetSelectedIcons:
  898. OPTIONS RESULTS
  899.  
  900. ADDRESS WORKBENCH
  901. GETATTR WINDOWS NAME window_list STEM window_list
  902.  
  903. i=1
  904. DO w=0 TO window_list.count-1
  905.  activewin=window_list.w
  906.  IF ~(RIGHT(activewin,1)=':') & w>0 THEN activewin=activewin'/'
  907.  
  908.  GETATTR OBJECT WINDOW.ICONS.SELECTED.COUNT NAME activewin
  909.  numselected=RESULT
  910.  IF numselected>0 & w>0 THEN
  911.  DO
  912.   DO j=0 TO numselected-1
  913.    GETATTR OBJECT WINDOW.ICONS.SELECTED.j.NAME NAME activewin
  914.    Files.i=activewin''RESULT
  915.    CALL Analyze
  916.  
  917.    i=i+1
  918.   END
  919.  END
  920. END
  921. i=i-1
  922. Files.count=i
  923.  
  924. IF ~(Files.1='' | Files.1='FILES.1') THEN RETURN 1
  925. ELSE RETURN 0
  926.  
  927. /* ------------------------- */
  928. FileParser:
  929.  
  930. IF Files.1='' | Files.1='FILES.1' | POS(':',UserArgs)=0 THEN
  931. DO
  932.  i=0
  933.  
  934.  DO forever
  935.   i=i+1
  936.  
  937.   Files.i=''
  938.   PrognameBegPos=0
  939.   DevicePos=0
  940.   DirPos=0
  941.   SfxBegin=0
  942.  
  943.   IF ( POS('"', UserArgs)=0 ) THEN
  944.    PARSE VAR UserArgs Files.i UserArgs
  945.   ELSE
  946.    PARSE VAR UserArgs Files.i '"' UserArgs       /* parse the line */
  947.  
  948.   IF ( Files.i=" ") THEN
  949.   DO
  950.    IF ( POS('"', UserArgs)=0 ) THEN
  951.     PARSE VAR UserArgs Files.i UserArgs
  952.    ELSE
  953.     PARSE VAR UserArgs Files.i '"' UserArgs       /* parse the line */
  954.   END
  955.  
  956.   Files.i=strip(Files.i,'T',' ')
  957.   Files.i=strip(Files.i,'B','"')
  958.  
  959.   IF (Files.i='') THEN
  960.   DO                    /* Break if end of Command-line */
  961.    Files.count=i-1
  962.    LEAVE
  963.   END
  964.  
  965.   DevicePos=LASTPOS(':',Files.i)
  966.  
  967.   IF (DevicePos=0) THEN
  968.   DO
  969.    ADDRESS COMMAND 'cd >ENV:'TempPath
  970.    Path.i=MyGetENV(TempPath)
  971.  
  972.    ADDRESS COMMAND 'delete >NIL: ENV:'TempPath' QUIET'
  973.  
  974.    IF (RIGHT(Path.i,1)=':') THEN
  975.      Files.i=Path.i || Files.i
  976.    ELSE
  977.      Files.i=Path.i || '/' || Files.i
  978.   END
  979.  
  980.   CALL Analyze
  981.  END
  982. END
  983. ELSE
  984. DO i=1 TO Files.count
  985.  PrognameBegPos=0
  986.  DevicePos=0
  987.  DirPos=0
  988.  SfxBegin=0
  989.  
  990.  CALL Analyze
  991. END
  992.  
  993. /* CALL WriteFileList */  /* Prepare a FileList for external Processes */
  994.  
  995. IF ~(Files.1='' | Files.1='FILES.1') THEN RETURN 1
  996. ELSE RETURN 0
  997.  
  998. /*----------------------------------*/
  999. Analyze:
  1000.  
  1001. Files.i=STRIP(Files.i,'T','/')
  1002. LengF=LENGTH(Files.i)
  1003. DevicePos=LASTPOS(':',Files.i)
  1004. DirPos=LASTPOS('/',Files.i)
  1005.  
  1006. IF (DirPos > 1) THEN
  1007. DO
  1008.  PrognameBegPos=DirPos
  1009.  Path_Dir.i=LEFT(Files.i, DirPos)
  1010.  Path.i=strip(Path_Dir.i,'T','/')
  1011. END
  1012. ELSE
  1013. DO
  1014.  PrognameBegPos=DevicePos
  1015.  Path.i=LEFT(Files.i, DevicePos)
  1016.  Path_Dir.i=Path.i
  1017. END
  1018.  
  1019. Numchars=LengF - PrognameBegPos
  1020. Device.i=LEFT(Files.i, Devicepos)
  1021. FileName.i=RIGHT(Files.i, LengF-PrognameBegPos)
  1022.  
  1023. SfxBegin=LASTPOS('.',FileName.i)
  1024.  
  1025. IF (SfxBegin=0) THEN
  1026. DO
  1027.  Prefix.i=FileName.i
  1028.  Suffix.i=''
  1029. END
  1030. ELSE
  1031. DO
  1032.  Prefix.i=LEFT(FileName.i,SfxBegin-1)
  1033.  Suffix.i=UPPER(RIGHT(Files.i, NumChars-SfxBegin))
  1034. END
  1035.  
  1036. IF getalltypes=1 THEN
  1037. DO
  1038.  ftype.i=getType(Files.i)
  1039.  fclass.i=class
  1040.  
  1041.  IF iconadding=1 THEN
  1042.  DO
  1043.   SELECT
  1044.    WHEN ftype.i='DIRECTORY' THEN deficon.i='def_drawer'
  1045.    WHEN ~(ftype.i='UNKNOWN') THEN deficon.i='def_'ftype.i
  1046.    OTHERWISE deficon.i='def_Project'
  1047.   END
  1048.  END
  1049.  ELSE
  1050.  DO
  1051.   fviewer.i=viewer
  1052.   feditor.i=editor
  1053.   fprinter.i=printer
  1054.  END
  1055. END
  1056.  
  1057. RETURN 1
  1058.  
  1059. /* ------------------------- get a WBScriptLink's real file path */
  1060. GetRealFile:    PROCEDURE
  1061. PARSE ARG lnfile
  1062.  
  1063. CALL OPEN(fTMP,lnfile,'READ')
  1064. CALL READLN(fTMP)
  1065. CALL READLN(fTMP)
  1066. l=READLN(fTMP)
  1067. CALL CLOSE(fTMP)
  1068. PARSE VAR l left' "'file'" 'right
  1069. RETURN file
  1070. /* ---------------------- */
  1071. ReadFileList:
  1072. PARSE ARG list
  1073. i=0
  1074.  
  1075. IF ~Open(TMP,list,'read') THEN CALL ExitMe
  1076. DO UNTIL EOF(TMP)
  1077.  i=i+1
  1078.  Files.i=READLN(TMP)
  1079.  Path.i=READLN(TMP)
  1080.  FileName.i=READLN(TMP)
  1081.  Prefix.i=READLN(TMP)
  1082.  Suffix.i=READLN(TMP)
  1083.  
  1084.  IF getalltypes=1 THEN
  1085.  DO
  1086.   ftype.i=getType(Files.i)
  1087.   fclass.i=class
  1088.   feditor.i=editor
  1089.   fprinter.i=printer
  1090.   fviewer.i=viewer
  1091.  END
  1092. END
  1093.  
  1094. Result=Close(TMP)
  1095.  
  1096. n=i-1
  1097. Files.count=n
  1098. Path=Path.n
  1099.  
  1100. IF ~(Files.1='') THEN RETURN 1
  1101. ELSE RETURN 0
  1102.  
  1103. /* ------------------------- */
  1104. GetType:
  1105. PARSE ARG file
  1106.  
  1107. SELECT
  1108.  WHEN IsDir(file)=1 THEN RETURN 'DIRECTORY'
  1109.  WHEN file='' | ~EXISTS(file) THEN RETURN '???'
  1110.  OTHERWISE ADDRESS COMMAND 'IDer >ENV:PMID_'ProcessNumber' CONFIG=ENV:EASys!_ViewerTypes.prefs "'file'"'
  1111. END
  1112.  
  1113. IF ~Open(fGET,'ENV:PMID_'ProcessNumber,'READ') THEN CALL Err_ShowMessage('ENV:PMID_'ProcessNumber)
  1114. l=READLN(fGET)
  1115. r=CLOSE(fGET)
  1116.  
  1117. PARSE VAR l class '~~' type '~~' viewer '~~' editor '~~' printer '~~'
  1118.  
  1119. IF editmode=1 THEN viewer=editor
  1120. IF printmode=1 THEN viewer=printer
  1121.  
  1122. RETURN type
  1123.  
  1124. /* ------------------------- */
  1125. MultiMediaClass:
  1126. PARSE ARG file
  1127.  
  1128. IF ~Open(fGET,file,'READ') THEN CALL Err_ShowMessage('Opening: 'file)
  1129. l=ReadLn(fGET)'___________'
  1130. r=Close(fGET)
  1131.  
  1132. sfx=UPPER(RIGHT(file,4))
  1133. ufile=UPPER(file)
  1134.  
  1135. SELECT
  1136.  WHEN RIGHT(ufile,5)='.INFO' THEN class='ICON'
  1137.  WHEN sfx='.DOC' | sfx='.DOK' | sfx='.ASC' | sfx='.TXT' | RIGHT(ufile,7)='.README' THEN class='TEXT'
  1138.  
  1139.  /* pix */
  1140.  WHEN sfx='.PCX' THEN class='PIX'
  1141.  WHEN sfx='.TIF' THEN class='PIX'
  1142.  WHEN RIGHT(ufile,5)='.TIFF' THEN class='PIX'
  1143.  WHEN UPPER(RIGHT(l,6))='.BRUSH' THEN class='PIX'
  1144.  WHEN SubStr(l,9,4)='ILBM' THEN class='PIX'
  1145.  WHEN SubStr(l,7,4)='JFIF' THEN class='PIX'
  1146.  WHEN LEFT(l,3)='ffd8ff'x THEN class='PIX'
  1147.  WHEN LEFT(l,3)='GIF' THEN class='PIX'
  1148.  WHEN LEFT(l,2)='BM' THEN class='PIX'
  1149.  WHEN SubStr(l,2,3)='PNG' THEN class='PIX'
  1150.  
  1151.  /* mods */
  1152.  WHEN LEFT(l,4)='MThd' THEN class='MOD'
  1153.  WHEN LEFT(l,3)='MMD' THEN class='MOD'
  1154.  WHEN LEFT(l,12)='DIGI Booster' THEN class='MOD'
  1155.  WHEN LEFT(l,4)='IMPresentate' THEN class='MOD'
  1156.  WHEN LEFT(l,15)='Extended Module' THEN class='MOD'
  1157.  WHEN sfx='.S3M' THEN class='MOD'
  1158.  WHEN RIGHT(ufile,3)='.XM' THEN class='MOD'
  1159.  WHEN sfx='.MOD' THEN class='MOD'
  1160.  WHEN POS('/MOD.',ufile)>0 | POS(':MOD.',ufile)>0 THEN class='MOD'
  1161.  
  1162.  /* Samples */
  1163.  WHEN SubStr(l,9,4)='MAUD' THEN class='SAMPLE'
  1164.  WHEN SubStr(l,9,4)='AIFF' THEN class='SAMPLE'
  1165.  WHEN SubStr(l,9,4)='8SVX' THEN class='SAMPLE'
  1166.  WHEN SubStr(l,9,4)='WAVE' THEN class='SAMPLE'
  1167.  WHEN LEFT(l,3)='ID3' THEN class='SAMPLE'
  1168.  WHEN LEFT(l,2)='FFF2'x THEN class='SAMPLE'
  1169.  WHEN LEFT(l,2)='FFF3'x THEN class='SAMPLE'
  1170.  WHEN LEFT(l,2)='FFFA'x THEN class='SAMPLE'
  1171.  WHEN LEFT(l,2)='FFFB'x THEN class='SAMPLE'
  1172.  WHEN LEFT(l,2)='FFFC'x THEN class='SAMPLE'
  1173.  WHEN LEFT(l,2)='FFFD'x THEN class='SAMPLE'
  1174.  WHEN sfx='.MP2' THEN class='SAMPLE'
  1175.  WHEN sfx='.MP3' THEN class='SAMPLE'
  1176.  
  1177.  /* Video */
  1178.  WHEN SubStr(l,8,5)='TANIM' THEN class='VIDEO'
  1179.  WHEN SubStr(l,9,4)='ANIM' THEN class='VIDEO'
  1180.  WHEN SubStr(l,9,3)='AVI' THEN class='VIDEO'
  1181.  WHEN LEFT(l,9)='4749463839610001'x THEN class='VIDEO'
  1182.  WHEN SubStr(l,2,3)='0001B3'x THEN class='VIDEO'
  1183.  WHEN sfx='.MPG' then class='VIDEO'
  1184.  WHEN sfx='.MPE' then class='VIDEO'
  1185.  WHEN sfx='.MPV' then class='VIDEO'
  1186.  WHEN sfx='.AVI' then class='VIDEO'
  1187.  WHEN sfx='.MOV' then class='VIDEO'
  1188.  WHEN POS('.QT',sfx)>0 then class='VIDEO'
  1189.  WHEN POS('.MV',sfx)>0 then class='VIDEO'
  1190.  
  1191.  OTHERWISE class='OTHER'
  1192. END /* SELECT */
  1193.  
  1194. RETURN class
  1195.  
  1196.  
  1197. /* ------------------------- */
  1198. Help:
  1199. ADDRESS COMMAND '${RefTable/ManualServer} PM'
  1200. RETURN
  1201.  
  1202. /* ------------------------- */
  1203. ShowMessage:
  1204.  
  1205. PARSE ARG Mesg,ReqPath,ReqFile,PresetString,Parameter1,Parameter2,Parameter3,Parameter4,Parameter5,Parameter6
  1206.  
  1207. drop Action
  1208. ReqType=''
  1209.  
  1210. MsgFile='EASys!_rexx:'Language'/'Mesg
  1211. IF ~(Open(fTMP, MsgFile, 'read')) THEN CALL Err_ShowMessage(MsgFile)
  1212. ELSE
  1213. DO
  1214.   ReqType=ReadLn(fTMP)  /* read Requester-Type */
  1215.  
  1216.   Line=ReadLn(fTMP)  /* read Title-Line */
  1217.   CALL Substitutions
  1218.   ReqTitle=Line
  1219.  
  1220.   Line=ReadLn(fTMP)  /* free line after Title */
  1221.  
  1222.   Message=''
  1223.  
  1224.   DO UNTIL EOF(fTMP)
  1225.  
  1226.     Line=ReadLn(fTMP)
  1227.     CALL Substitutions
  1228.  
  1229.     IF POS(">>>", Line) > 0 THEN
  1230.     DO
  1231.       rtBtns=STRIP(Line,'L','>')
  1232.       LEAVE
  1233.     END
  1234.     ELSE
  1235.         Message=Message || CR || Line
  1236.   END
  1237.  
  1238.   r=Close(fTMP)
  1239. END
  1240.  
  1241. uReqType=UPPER(ReqType)
  1242. pubname=getpubscreen()
  1243. IF ~(pubname='') THEN r=setpubscreen(pubname' Default')
  1244.  
  1245. SELECT
  1246.  WHEN (uReqType='MULTI REQUEST') THEN
  1247.  DO
  1248.   r=rtezrequest(Message,rtBtns,ReqTitle,PosTags)
  1249.   RETURN r
  1250.  END
  1251.  
  1252.  WHEN (uReqType='GET ONE FILE') THEN
  1253.  DO
  1254.   r=rtfilerequest(ReqPath,ReqFile,ReqTitle,rtBtns,ONEFILE_TAG, Files)
  1255.   RETURN r
  1256.  END
  1257.  
  1258.  WHEN (uReqType='GETFILES') THEN
  1259.  DO
  1260.   r=rtfilerequest(ReqPath,ReqFile,ReqTitle,rtBtns, FILE_TAGS, Files)
  1261.   RETURN r
  1262.  END
  1263.  
  1264.  WHEN (uReqType='GETPATH') THEN
  1265.  DO
  1266.   r=rtfilerequest(ReqPath,,ReqTitle,rtBtns, DIR_TAGS)
  1267.   RETURN r
  1268.  END
  1269.  
  1270.  WHEN (uReqType='GETSTRING') THEN
  1271.  DO
  1272.   r=rtgetstring(PresetString,Message,ReqTitle,rtBtns,GStags,Action)
  1273.   RETURN r
  1274.  END
  1275.  
  1276.  WHEN (uReqType='GETSTRING SIMPLE') THEN
  1277.  DO
  1278.   r=rtgetstring(PresetString,Message,ReqTitle,,GStags,Action)
  1279.   RETURN r
  1280.  END
  1281.  
  1282.  WHEN (uReqType='CONSOLE') THEN
  1283.  DO
  1284.   ShowConsole='CON:'ReqLE'/'ReqTE'/'ConW'/'ConH'/'ReqTitle'/NOCLOSE'
  1285.   IF ~(Open(Con,ShowConsole,'write')) THEN
  1286.   DO
  1287.       CALL Err_ShowMessage(ThisConsole)
  1288.       ConStat=0
  1289.   END
  1290.  
  1291.   ConStat=1
  1292.   r=WriteLn(Con,Message)
  1293.  
  1294.   RETURN
  1295.  END
  1296.  
  1297.  OTHERWISE CALL Err_ShowMessage('ShowMessage function')  /* Error if arrived here */
  1298. END /* SELECT */
  1299.  
  1300. RETURN
  1301.  
  1302. /* ------------------------- */
  1303. Substitutions:
  1304.  
  1305. IF POS("%1", Line) > 0 THEN             /* substitution parameters for each message */
  1306. DO UNTIL POS("%1", Line)=0            /* and per line */
  1307.  parse var Line part1 '%1' part2
  1308.  Line=part1''parameter1''part2
  1309. END
  1310.  
  1311. IF POS("%2", Line) > 0 THEN
  1312. DO UNTIL POS("%2", Line)=0
  1313.  parse var Line part1 '%2' part2
  1314.  Line=part1''parameter2''part2
  1315. END
  1316.  
  1317. IF POS("%3", Line) > 0 THEN
  1318. DO UNTIL POS("%3", Line)=0
  1319.  parse var Line part1 '%3' part2
  1320.  Line=part1''parameter3''part2
  1321. END
  1322.  
  1323. IF POS("%4", Line) > 0 THEN
  1324. DO UNTIL POS("%4", Line)=0
  1325.  parse var Line part1 '%4' part2
  1326.  Line=part1''parameter4''part2
  1327. END
  1328.  
  1329. IF POS("%5", Line) > 0 THEN
  1330. DO UNTIL POS("%5", Line)=0
  1331.  parse var Line part1 '%5' part2
  1332.  Line=part1''parameter5''part2
  1333. END
  1334.  
  1335. IF POS("%6", Line) > 0 THEN
  1336. DO UNTIL POS("%6", Line)=0
  1337.  parse var Line part1 '%6' part2
  1338.  Line=part1''parameter6''part2
  1339. END
  1340.  
  1341. RETURN
  1342.  
  1343. /* ---------------------- */
  1344. Err_ShowMessage:
  1345. PARSE ARG Msg
  1346.  
  1347. Message=AppName':' CR CR "Sorry, an error has occured:" CR CR "    "Msg CR CR "... exiting."
  1348. rtBtns='Oh no!'
  1349. Action=rtezrequest(Message,rtBtns,ReqTitle,PosTags)
  1350. CALL ExitMe
  1351.  
  1352. RETURN
  1353.  
  1354. /* ---------------------- */
  1355. MyGetENV:     PROCEDURE
  1356. PARSE ARG name
  1357.  
  1358. TheFile="ENV:" || name
  1359. IF (open(TEMPFILE, TheFile, 'read')) THEN
  1360. DO
  1361.  ENVvalue=READLN(TEMPFILE)
  1362.  Result=close(TEMPFILE)
  1363. END
  1364. ELSE
  1365.  ENVvalue=''
  1366.  
  1367. RETURN ENVvalue
  1368.  
  1369. /* ---------------------- */
  1370. PlaySample:
  1371. PARSE ARG Sample
  1372.  
  1373. IF (TalkToUser="0") THEN RETURN
  1374. IF EXISTS('ENV:ProcessTalk') THEN
  1375. DO
  1376.   ProcessTalk=Strip(SubWord(MyGetENV("ProcessTalk"),2),'T',']')
  1377.  
  1378.   ADDRESS COMMAND 'status >ENV:VoiceSTATUS PROCESS 'ProcessTalk
  1379.   VStatus=MyGetENV('VoiceSTATUS')
  1380.  
  1381.   IF POS(Play_Voice_Cmd,VStatus)>0 THEN ADDRESS COMMAND 'break' ProcessTalk 'c'
  1382. END
  1383. ADDRESS COMMAND Play_Voice Sample
  1384.  
  1385. RETURN
  1386. /* ------------------------- */
  1387. ConvSpecial:
  1388. PARSE ARG File
  1389.  
  1390. posi=POS('~',File)
  1391. IF posi>0 THEN File=INSERT("'",File,posi-1)
  1392.  
  1393. posi=POS('(',File)
  1394. IF posi>0 THEN File=INSERT("'",File,posi-1)
  1395.  
  1396. posi=POS(')',File)
  1397. IF posi>0 THEN File=INSERT("'",File,posi-1)
  1398.  
  1399. posi=POS('[',File)
  1400. IF posi>0 THEN File=INSERT("'",File,posi-1)
  1401.  
  1402. posi=POS(']',File)
  1403. IF posi>0 THEN File=INSERT("'",File,posi-1)
  1404.  
  1405. posi=POS('{',File)
  1406. IF posi>0 THEN File=INSERT("'",File,posi-1)
  1407.  
  1408. posi=POS('}',File)
  1409. IF posi>0 THEN File=INSERT("'",File,posi-1)
  1410.  
  1411. posi=POS('+',File)
  1412. IF posi>0 THEN File=INSERT("'",File,posi-1)
  1413.  
  1414. posi=POS('#',File)
  1415. IF posi>0 THEN File=INSERT("'",File,posi-1)
  1416.  
  1417. posi=POS('?',File)
  1418. IF posi>0 THEN File=INSERT("'",File,posi-1)
  1419.  
  1420. RETURN File
  1421. /* ------------------------- */
  1422. IsDir:     PROCEDURE
  1423. PARSE ARG name
  1424.  
  1425. r=PRAGMA('DIRECTORY',name)
  1426. IF ~(r='') THEN
  1427.    DirFlag=1
  1428. ELSE
  1429. DO
  1430.  IF ~Exists(name) THEN
  1431.    DirFlag=-1
  1432.  ELSE
  1433.    DirFlag=0
  1434. END
  1435.  
  1436. r=PRAGMA('DIRECTORY','T:')
  1437. RETURN DirFlag
  1438.  
  1439. /* ---------------------- */
  1440. InitPrint:
  1441.  
  1442. AppName="© TNE) Print-Manager"
  1443. ReqTitle="© TNE) Drucken..."
  1444. FileReq='Print.1'
  1445.  
  1446. /* pathes -------- */
  1447. TempPath='Print-path_'ProcessNumber
  1448. PrintJob='T:Print-Job_'ProcessNumber
  1449.  
  1450. /* Voice -------- */
  1451. TalkToUser=MyGetENV("Flags/TalkToUser")
  1452. Play_Voice_Cmd=SubWord(MyGetENV('RefTable/Sound-voice'),1,1)
  1453. Play_Voice='run >ENV:ProcessTalk ${RefTable/Sound-voice}'
  1454.  
  1455. SampleChooseFiles=SampleDir'PrintChooseFile.8SVX'
  1456. SampleBye=SampleDir'AppSayBye.8SVX'
  1457. SamplePrintHow=SampleDir'PrintFormat.8SVX'
  1458. SamplePrintDVI=SampleDir'PrintDVI.8SVX'
  1459.  
  1460. PrintDVImanager='${RefTable/Print-DVI-Manager}'
  1461. DocDumper='${RefTable/Print-DocDump}'
  1462.  
  1463. FILE_TAGS=PosTags" rtfi_flags=freqf_multiselect rtfi_height="ReqHeight
  1464. RETURN
  1465. /* ---------------------- */
  1466. Init:
  1467.  
  1468. OPTIONS FAILAT 30
  1469. OPTIONS RESULTS
  1470.  
  1471. AppName="© EASys!) Presentator"
  1472. ReqTitle=AppName
  1473. FileReq='Presentate.1'
  1474.  
  1475. CR='0a'x
  1476.  
  1477. Language=GetClip('Language')
  1478. IF ~EXISTS('EASys!_rexx:'Language'/Presentate.1') THEN Language='english'
  1479.  
  1480. ProcessNumber=PRAGMA('ID')
  1481.  
  1482. IF ~show('L','rexxMOOS.library') THEN
  1483. DO
  1484.  r=ADDLIB('rexxMOOS.library',100,-30,0)
  1485.  setpubscreen('Modes Pop Sh')
  1486. END
  1487.  
  1488. MaxTitleChars=MyGetENV('RefTable/GUI-ShellTitleChars')
  1489.  
  1490. ConsoleType=MyGetENV('RefTable/GUI-ConsoleType')
  1491. IF (ConsoleType="") THEN ConsoleType="CON:"
  1492.  
  1493. ConsoleSize=MyGetENV('SHELLsize')
  1494. IF (ConsoleSize="") THEN ConsoleSize="40/50/600/200"
  1495.  
  1496. ReqLE=MyGetENV('RefTable/GUI-ReqLE')  /* Main Window */
  1497. ReqTE=MyGetENV('RefTable/GUI-ReqTE')
  1498. ReqHeight=MyGetENV('RefTable/GUI-ReqHeight')
  1499.  
  1500. PosTags="rt_reqpos=reqpos_topleftscr rt_leftoffset=" ReqLE " rt_topoffset=" ReqTE
  1501. EZtags=PosTags
  1502. GLtags=PosTags" rtgl_min=0 rtgl_max=1500 rtgl_backfill=true "
  1503. GStags=PosTags" rtgs_backfill=false rtgs_width=300"
  1504.  
  1505. POINTER_TAGS="rt_reqpos=reqpos_pointer"
  1506. DIR_TAGS=PosTags" rtfi_flags=freqf_nofiles|freqf_save rtfi_height="ReqHeight
  1507. FILE_TAGS=PosTags" rtfi_flags=freqf_multiselect|freqf_selectdirs rtfi_height="ReqHeight
  1508. ONEFILE_TAG=PosTags" rtfi_height="ReqHeight
  1509.  
  1510. Console='>"'ConsoleType''ConsoleSize'/'AppName' Messages.../AUTO/NOCLOSE/WAIT"'
  1511.  
  1512. /* OS 3.5 WB Port */
  1513. IF SHOW('P','WORKBENCH') THEN WB_port=1
  1514. ELSE WB_port=0
  1515.  
  1516. /* --------- TempFiles -------- */
  1517.  
  1518. ActualPath=MyGetENV('Flags/ActualPath')
  1519. TempPath='Presentate_path_'ProcessNumber
  1520.  
  1521. /* --------- Voice ------------ */
  1522.  
  1523. TalkToUser=MyGetENV('Flags/TalkToUser')
  1524. Play_Voice='run >ENV:ProcessTalk ${RefTable/Sound-voice}'
  1525. Play_Voice_Cmd=SubWord(MyGetENV('RefTable/Sound-voice'),1,1)
  1526. SampleDir='EASys!:Voice/'Language'/'
  1527.  
  1528. SampleChooseFiles=SampleDir'PresentateChooseFiles.8SVX'
  1529. SampleBye=SampleDir'AppSayBye.8SVX'
  1530. RETURN
  1531. /* ---------------------- */
  1532. ExitMe:
  1533.  
  1534. IF EXISTS('ENV:ProcessTalk') THEN ADDRESS COMMAND 'delete >NIL: ENV:ProcessTalk QUIET'
  1535. IF EXISTS('ENV:VoiceSTATUS') THEN ADDRESS COMMAND 'delete >NIL: ENV:VoiceSTATUS QUIET'
  1536.  
  1537. SELECT
  1538.  WHEN EasyView=1 THEN
  1539.  DO
  1540.   r=ShowMessage('EasySave.1',,,,AppName,'EasyView')
  1541.  
  1542.   ADDRESS COMMAND 'delete >NIL: AS_EasyView:#? FORCE ALL QUIET'
  1543.  
  1544.   CALL DELAY(300) /* needed so that notification will be without effect */
  1545.   CALL SetClip('EasyView',0)
  1546.   EXIT 0
  1547.  END
  1548.  
  1549.  WHEN EasyPrint=1 THEN
  1550.  DO
  1551.   r=ShowMessage('EasySave.1',,,,AppName,'EasyPrint')
  1552.  
  1553.   ADDRESS COMMAND 'delete >NIL: AS_EasyPrint:#? FORCE ALL QUIET'
  1554.  
  1555.   CALL DELAY(300)
  1556.   CALL SetClip('EasyPrint',0)
  1557.   EXIT 0
  1558.  END
  1559.  
  1560.  OTHERWISE NOP
  1561. END
  1562.  
  1563. IF ~(Files.1='' | Files.1="FILES.1") THEN
  1564. DO
  1565.  ADDRESS COMMAND 'assign >NIL: Profile: EXISTS'
  1566.  IF RC=0 THEN ADDRESS COMMAND 'copy ENV:Flags/ActualPath Profile:ENV/Flags CLONE'
  1567.  ELSE ADDRESS COMMAND 'copy ENV:Flags/ActualPath EASys!:Flags CLONE'
  1568. END
  1569.  
  1570. r=setpubscreen('Workbench Default')
  1571.  
  1572. ADDRESS COMMAND 'delete >NIL: ENV:PMID_'ProcessNumber' QUIET'
  1573. EXIT 0
  1574.  
  1575.