home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 13 / AACD13.ISO / AACD / System / EASys / EASys!_update_481_to_482 / EASys! / Programs / FileManager.rexx < prev    next >
OS/2 REXX Batch file  |  2000-07-08  |  69KB  |  3,234 lines

  1. /*
  2.   EASys!)  © EasySystem since 1995
  3.  
  4.   FileManager.rexx
  5.   Full featured and fast FileManager based on RexxReqTools.
  6.  
  7.   Date:        05/2000
  8.   Author:      Thomas Neidhardt (TNE), Deutschland, Erlangen
  9.  
  10.   InterNet:    thomas.neidhardt@fen-net.de
  11.  
  12.   Needs:       RexxReqTools Package by Rafael D'Halleweyn ( rdhall@rug.ac.be )
  13.                and the EASys! Configuration Environment.
  14.  
  15.   Referenced by:  ${RefTable/File-Manager}
  16.  
  17.   with Options:
  18.  
  19.   -DIR <dir> starts into Directory <dir> by commandline-argument
  20.   -Cp2Cl     (wrties all workbench selected files to T:FM_cp_clip)
  21.   -Mv2Cl     (wrties all workbench selected files to T:FM_mv_clip)
  22.   -CpClp     (starts EASys! Clip operation on T:FM_mv_clip or T:FM_cp_clip)
  23.   -CopyF     ${RefTable/File-CopyServer}
  24.   -MoveF     ${RefTable/File-MoveServer}
  25.   -MovAs     ${RefTable/File-MoveAs}
  26.   -SavAs     ${RefTable/File-SaveAs}
  27.   -InfoF     ${RefTable/File-Info-Server}
  28.   -fLink     ${RefTable/File-ScriptLink}
  29.   -Ren_F     ${RefTable/File-RenameServer}
  30.   -Fnote     ${RefTable/File-Comment}
  31.   -Trash     ${RefTable/File-Trash}
  32.   -WBst+     Adds selected Item to WBstartup
  33.   -WBst-     Removes selected Item from WBstartup
  34. */
  35.  
  36. PARSE ARG UserArgs
  37.  
  38. OPTIONS RESULTS
  39. OPTIONS FAILAT 21
  40.  
  41. CALL Init
  42.  
  43. /* ---------------------- */
  44. Main:
  45.  
  46. ExitProg=0
  47. wbargs=0
  48. cliargs=0
  49. flist=0
  50.  
  51. OptChars=6
  52. Option=LEFT(UserArgs,OptChars)
  53.  
  54. SELECT
  55. WHEN UserArgs="??" THEN
  56. DO
  57.  IF EXISTS('EASys!_bin:'Language'/fm.help') THEN ADDRESS COMMAND 'type EASys!_bin:'Language'/fm.help'
  58.  ELSE ADDRESS COMMAND 'type EASys!_bin:english/fm.help'
  59.  EXIT 0
  60. END
  61.  
  62. WHEN ~(LEFT(Option,4)='-DIR'|Option='-WBst+'|Option='-WBst-'|Option='-CopyF'|Option='-MoveF'|Option='-Cp2Cl'|Option='-Mv2Cl'|Option='-CpClp'|Option='-Ren_F'|Option='-InfoF'|Option='-Fnote'|Option='-SavAs'|Option='-MovAs'|Option='-fLink'|Option='-sProg'|Option='-Trash') THEN
  63. DO
  64.   /* Other or no Arguments */
  65.   CALL SelectionLoop
  66. END
  67.  
  68. OTHERWISE 
  69. DO
  70.   l=LENGTH(UserArgs)
  71.   Files.1='FILES.1'
  72.   Files.count=0
  73.  
  74.   SELECT
  75.   WHEN UPPER(LEFT(STRIP(UserArgs,'L','"'),4))='-DIR' THEN
  76.   DO
  77.    ActualPath=RIGHT(UserArgs,l-5)
  78.    ActualPath=STRIP(ActualPath,'B','"')
  79.    UserArgs=''
  80.    CALL SelectionLoop
  81.    CALL ExitMe
  82.   END
  83.  
  84.   WHEN Option='-WBst+' THEN
  85.   DO
  86.     addWBstart=1
  87.     PARSE VAR UserArgs '-WBst+ 'UserArgs
  88.     IF UserArgs='' THEN EXIT 0
  89.  
  90.     cliargs=1
  91.     IF GetFileSelection()=0 THEN EXIT 0
  92.  
  93.     IF IsDir('SYS:StartSys/e_WB/_DIR_WBstartup')=1 THEN
  94.      DestDir='SYS:StartSys/e_WB/_DIR_WBstartup/'
  95.     ELSE
  96.      DestDir='SYS:WBstartup/'
  97.  
  98.     CALL ScriptLink
  99.     CALL ExitMe
  100.   END
  101.  
  102.   WHEN Option='-WBst-' THEN
  103.   DO
  104.     PARSE VAR UserArgs '-WBst- 'UserArgs
  105.     IF UserArgs='' THEN EXIT 0
  106.  
  107.     cliargs=1
  108.     IF GetFileSelection()=0 THEN EXIT 0
  109.  
  110.     IF IsDir('SYS:StartSys/e_WB/_DIR_WBstartup')=1 THEN
  111.      DestDir='SYS:StartSys/e_WB/_DIR_WBstartup/'
  112.     ELSE
  113.      DestDir='SYS:WBstartup/'
  114.  
  115.     DO k=1 TO Files.count
  116.      ADDRESS COMMAND
  117.      'delete >NIL: "'DestDir'_'FileName.k'" FORCE QUIET'
  118.      'delete >NIL: "SYS:Tools/Commodities/_'FileName.k'" FORCE QUIET'
  119.      'EASys!_bin:IconKill "'DestDir'_'FileName.k'.info"'
  120.     END
  121.  
  122.     CALL ExitMe
  123.   END
  124.  
  125.   OTHERWISE NOP
  126.   END /* SELECT */
  127.  
  128.   
  129.   IF l>OptChars+1 THEN UserArgs=RIGHT(UserArgs,l-OptChars-1)
  130.   ELSE UserArgs=''
  131.  
  132.   SELECT
  133.    WHEN Option='-CpClp' THEN CALL CopyClip
  134.    WHEN WB_port=1 & (UserArgs='' | UserArgs='USERARGS') THEN
  135.    DO
  136.       wbargs=1
  137.       r=GetSelectedIcons()
  138.       IF ~(r=0) THEN CALL SetActualPath
  139.    END
  140.  
  141.    OTHERWISE
  142.    DO
  143.       r=FileParser()
  144.       IF ~(r=0) THEN CALL SetActualPath
  145.    END
  146.   END /* SELECT */
  147.  
  148.   SELECT
  149.     WHEN Option='-Cp2Cl' THEN
  150.     DO
  151.        ADDRESS COMMAND 'delete >NIL: T:FM_mv_clip FORCE QUIET'
  152.        CALL WriteFileList('T:FM_cp_clip')
  153.        EXIT 0
  154.     END
  155.  
  156.     WHEN Option='-Mv2Cl' THEN
  157.     DO
  158.        ADDRESS COMMAND 'delete >NIL: T:FM_cp_clip FORCE QUIET'
  159.        CALL WriteFileList('T:FM_mv_clip')
  160.        EXIT 0
  161.     END
  162.  
  163.     OTHERWISE NOP
  164.   END /* SELECT */
  165.  
  166.   IF (Files.1='' | Files.1='FILES.1') & ~(Option='-Trash') & ~(Option='-CpClp') THEN CALL FM_HelpArg
  167.  
  168.   SELECT
  169.     WHEN Option='-CopyF' THEN
  170.     DO
  171.       CALL CopyStarter
  172.       CALL ExitMe
  173.     END
  174.  
  175.     WHEN Option='-MoveF' THEN
  176.     DO
  177.       CALL MoveStarter
  178.       CALL ExitMe
  179.     END
  180.  
  181.     WHEN Option='-CpClp' THEN
  182.     DO
  183.       CALL CopyClip
  184.       CALL ExitMe
  185.     END
  186.  
  187.     WHEN Option='-SavAs' THEN
  188.     DO
  189.       CALL SaveAsStarter
  190.       CALL ExitMe
  191.     END
  192.  
  193.     WHEN Option='-MovAs' THEN
  194.     DO
  195.       CALL MoveAsStarter
  196.       CALL ExitMe
  197.     END
  198.  
  199.     WHEN Option='-Ren_F' THEN
  200.     DO
  201.       AppName="EasyName  © EASys!)"
  202.       CALL RenameIt
  203.       CALL ExitMe
  204.     END
  205.  
  206.     WHEN Option='-Trash' THEN
  207.     DO
  208.       CALL Trash
  209.       CALL ExitMe
  210.     END
  211.  
  212.     WHEN Option='-InfoF' THEN
  213.     DO
  214.       AppName="EasyInfo  © EASys!)"
  215.       CALL FileInfo
  216.       CALL ExitMe
  217.     END
  218.  
  219.     WHEN Option='-Fnote' THEN
  220.     DO
  221.       AppName="EasyComment  © EASys!)"
  222.       CALL FileNote
  223.       CALL ExitMe
  224.     END
  225.  
  226.     WHEN Option='-fLink' THEN
  227.     DO
  228.       CALL ScriptLink
  229.       CALL ExitMe
  230.     END
  231.  
  232.     WHEN Option='-sProg' THEN
  233.     DO
  234.       AppName="EasyLaunch  © EASys!)"
  235.       CALL StartProg
  236.       CALL ExitMe
  237.     END
  238.  
  239.     OTHERWISE CALL ExitMe
  240.   END /* SELECT */
  241. END /* DO */
  242. END /* SELECT */
  243. CALL ExitMe
  244.  
  245. /* ------------------------- */
  246. FM_HelpArg:
  247.  
  248. DO FOREVER
  249.  r=ShowMessage('FileManager.0',,,,AppName)
  250.  IF r=0 THEN CALL Help
  251.  IF r=1 | r=2 THEN LEAVE
  252. END
  253.  
  254. IF r=2 THEN CALL SelectionLoop
  255.  
  256. CALL ExitMe
  257. RETURN
  258.  
  259. /* ---------------------- */
  260. SelectionLoop:
  261. /* Start with ActualPathDest as Actualpath only, when another FM is already running. */
  262. /* reverse Path for each second opened FM */
  263.  
  264. IF ~(FM_ListPos_set=1) THEN
  265. DO
  266.  FM_ListPos_set=1
  267.  
  268.  FM_ListPos=GetClip('FMlistpos')
  269.  IF FM_ListPos='' | FM_ListPos='FM_LISTPOS' THEN FM_ListPos='LEFT'
  270.  
  271.  IF FM_ListPos='LEFT' THEN CALL setclip('FMlistpos','RIGHT')
  272.  ELSE CALL setclip('FMlistpos','LEFT')
  273.  
  274.  FM_cnt=GetClip('FMcnt')
  275.  IF FM_cnt='' | FM_cnt='FM_CNT' THEN FM_cnt=0
  276.  IF FM_cnt<0 THEN FM_cnt=0
  277.  FM_cnt=FM_cnt+1
  278.  CALL setclip('FMcnt',FM_cnt)
  279.  
  280.  IF FM_cnt > 1 THEN
  281.  DO
  282.   firstselection=1
  283.  
  284.   IF FM_ListPos='RIGHT' THEN
  285.   DO
  286.    ActualPath=MyGetENV('Flags/ActualPathDest')
  287.    ActualPathDest=MyGetENV('Flags/ActualPath')
  288.  
  289.    ReqLEFT=ReqLE+370
  290.    PosTags="rt_reqpos=reqpos_topleftscr rt_leftoffset=" ReqLE+30 " rt_topoffset=" ReqTE+24
  291.    FilePosTags="rt_reqpos=reqpos_topleftscr rt_leftoffset=" ReqLEFT " rt_topoffset=" ReqTE
  292.    EZtags=PosTags
  293.  
  294.    DIR_TAGS=FilePosTags" rtfi_flags=freqf_nofiles|freqf_save rtfi_height=" ReqHeight
  295.    FILE_TAGS=FilePosTags" rtfi_flags=freqf_multiselect|freqf_selectdirs rtfi_height=" ReqHeight
  296.    ONEFILE_TAG=FilePosTags" rtfi_height=" ReqHeight
  297.  END
  298. END
  299.  
  300. DO FOREVER
  301.  IF GetFileSelection()=0 THEN LEAVE
  302.  
  303.  CALL FileAction
  304.  IF ExitProg=1 THEN LEAVE
  305.  
  306.  UserArgs=''
  307.  drop Action
  308.  drop Files
  309. END
  310. CALL ExitMe
  311. /* ---------------------- */
  312. GetFileSelection:
  313.  
  314. /*
  315.  RETURN 2  signals that files have been handed over by arguments
  316.  flist or from workbench by wbargs or from cli
  317. */
  318.  
  319. FileName.1=''
  320. Files.1='FILES.1'
  321. Files.count=0
  322. Path.1=''
  323. ContinuedMode=0
  324.  
  325. SELECT
  326.  WHEN cliargs=1 THEN
  327.  DO
  328.   r=FileParser()
  329.   cliargs=0
  330.   IF r=0 THEN StartArgs=SelectFiles()
  331.   ELSE StartArgs=2
  332.  END
  333.  
  334.  WHEN flist=1 THEN
  335.  DO
  336.   r=ReadFileList(filelist_tmp)
  337.   flist=0
  338.   IF r=0 THEN StartArgs=SelectFiles()
  339.   ELSE StartArgs=2
  340.  END
  341.  
  342.  WHEN wbargs=1 THEN
  343.  DO
  344.   r=GetSelectedIcons()
  345.   wbargs=0
  346.   IF r=0 THEN StartArgs=SelectFiles()
  347.   ELSE StartArgs=2
  348.  END
  349.  
  350.  OTHERWISE StartArgs=SelectFiles()
  351. END /* SELECT */
  352.  
  353. IF StartArgs=0 THEN
  354.  RETURN 0
  355. ELSE
  356. DO
  357.  CALL SetActualPath
  358.  RETURN StartArgs
  359. END
  360. /* ---------------------- */
  361. SetActualPath:
  362. i=Files.count
  363. ActualPath=Path.1
  364. Path=Path.i
  365. LastSelected=FileName.1 /* remember */
  366.  
  367. ADDRESS COMMAND 'SetEnv Flags/ActualPath "'ActualPath'"'
  368. CALL WriteFileList(FileList)  /* Prepare a FileList for external Processes */
  369.  
  370. RETURN
  371. /* ---------------------- */
  372. SelectFiles:
  373. wbargs=0
  374. cliargs=0
  375. flist=0
  376.  
  377. Drive=LEFT(ActualPath,POS(':',ActualPath))
  378. ADDRESS COMMAND 'assign >NIL: "'ConvSpecial(Drive)'" EXISTS'
  379.  
  380. IF RC>0 | ActualPath='' THEN ActualPath="SYS:"
  381. ELSE IF ~EXISTS(ActualPath) THEN ActualPath="SYS:"
  382.  
  383. IF ~(firstSelection=1) THEN CALL PlaySample(SampleChooseFiles)
  384. IF LastSelected='LASTSELECTED' THEN LastSelected=''
  385.  
  386. UserArgs=ShowMessage(FileReq,ActualPath,LastSelected,,AppName)
  387. IF UserArgs='' THEN RETURN 0
  388. ELSE ContinuedMode=1
  389.  
  390. CALL FileParser
  391.  
  392. firstSelection=1
  393. RETURN 1
  394. /* ---------------------- */
  395. GetSelectedIcons:
  396. OPTIONS RESULTS
  397.  
  398. ADDRESS WORKBENCH
  399. GETATTR WINDOWS NAME window_list STEM window_list
  400.  
  401. i=1
  402. DO w=0 TO window_list.count-1
  403.  activewin=window_list.w
  404.  IF ~(RIGHT(activewin,1)=':') & w>0 THEN activewin=activewin'/'
  405.  
  406.  GETATTR OBJECT WINDOW.ICONS.SELECTED.COUNT NAME activewin
  407.  numselected=RESULT
  408.  IF numselected>0 & w>0 THEN
  409.  DO
  410.   DO j=0 TO numselected-1
  411.    GETATTR OBJECT WINDOW.ICONS.SELECTED.j.NAME NAME activewin
  412.    Files.i=activewin''RESULT
  413.    CALL Analyze
  414.  
  415.    i=i+1
  416.   END
  417.  END
  418. END
  419. i=i-1
  420. Files.count=i
  421.  
  422. IF ~(Files.1='' | Files.1='FILES.1') THEN RETURN 1
  423. ELSE RETURN 0
  424.  
  425. /* ------------------------- */
  426. FileParser:
  427.  
  428. IF Files.1='' | Files.1='FILES.1' | POS(':',UserArgs)=0 THEN
  429. DO
  430.  i=0
  431.  
  432.  DO forever
  433.   i=i+1
  434.  
  435.   Files.i=''
  436.   PrognameBegPos=0
  437.   DevicePos=0
  438.   DirPos=0
  439.   SfxBegin=0
  440.  
  441.   IF ( POS('"', UserArgs)=0 ) THEN
  442.    PARSE VAR UserArgs Files.i UserArgs
  443.   ELSE
  444.    PARSE VAR UserArgs Files.i '"' UserArgs       /* parse the line */
  445.  
  446.   IF ( Files.i=" ") THEN
  447.   DO
  448.    IF ( POS('"', UserArgs)=0 ) THEN
  449.     PARSE VAR UserArgs Files.i UserArgs
  450.    ELSE
  451.     PARSE VAR UserArgs Files.i '"' UserArgs       /* parse the line */
  452.   END
  453.  
  454.   Files.i=strip(Files.i,'T',' ')
  455.   Files.i=strip(Files.i,'B','"')
  456.  
  457.   IF (Files.i='') THEN
  458.   DO                    /* Break if end of Command-line */
  459.    Files.count=i-1
  460.    LEAVE
  461.   END
  462.  
  463.   DevicePos=LASTPOS(':',Files.i)
  464.  
  465.   IF (DevicePos=0) THEN
  466.   DO
  467.    ADDRESS COMMAND 'cd >ENV:'TempPath
  468.    Path.i=MyGetENV(TempPath)
  469.  
  470.    ADDRESS COMMAND 'delete ENV:'TempPath' QUIET'
  471.  
  472.    IF (RIGHT(Path.i,1)=':') THEN
  473.      Files.i=Path.i || Files.i
  474.    ELSE
  475.      Files.i=Path.i || '/' || Files.i
  476.   END
  477.  
  478.   CALL Analyze
  479.  END
  480. END
  481. ELSE
  482. DO i=1 TO Files.count
  483.  PrognameBegPos=0
  484.  DevicePos=0
  485.  DirPos=0
  486.  SfxBegin=0
  487.  
  488.  CALL Analyze
  489. END
  490.  
  491. IF ~(Files.1='' | Files.1='FILES.1') THEN RETURN 1
  492. ELSE RETURN 0
  493.  
  494. /*----------------------------------*/
  495. Analyze:
  496.  
  497. Files.i=STRIP(Files.i,'T','/')
  498. LengF=LENGTH(Files.i)
  499. DevicePos=LASTPOS(':',Files.i)
  500. DirPos=LASTPOS('/',Files.i)
  501.  
  502. IF (DirPos > 1) THEN
  503. DO
  504.  PrognameBegPos=DirPos
  505.  Path_Dir.i=LEFT(Files.i, DirPos)
  506.  Path.i=strip(Path_Dir.i,'T','/')
  507. END
  508. ELSE
  509. DO
  510.  PrognameBegPos=DevicePos
  511.  Path.i=LEFT(Files.i, DevicePos)
  512.  Path_Dir.i=Path.i
  513. END
  514.  
  515. Numchars=LengF - PrognameBegPos
  516. Device.i=LEFT(Files.i, Devicepos)
  517. FileName.i=RIGHT(Files.i, LengF-PrognameBegPos)
  518.  
  519. SfxBegin=LASTPOS('.',FileName.i)
  520.  
  521. IF (SfxBegin=0) THEN
  522. DO
  523.  Prefix.i=FileName.i
  524.  Suffix.i=''
  525. END
  526. ELSE
  527. DO
  528.  Prefix.i=LEFT(FileName.i,SfxBegin-1)
  529.  Suffix.i=UPPER(RIGHT(Files.i, NumChars-SfxBegin))
  530. END
  531.  
  532. RETURN 1
  533.  
  534. /* ------------------------- */
  535. FileAction:
  536.  
  537. CALL PlaySample(SampleChooseOp)
  538.  
  539. IF FileActionFirst='FILEACTIONFIRST' THEN
  540. DO
  541.  FA_Msg='FileManager.1'
  542.  FileActionFirst=0
  543. END
  544.  
  545. CALL mkReqFList(1)
  546. DO FOREVER  /* for online-Help Support and retrace */
  547.  
  548. CALL CloseCon(30)
  549.  
  550. SELECT
  551.  WHEN FA_Msg='FileManager.1' THEN
  552.  DO
  553.   copy=1
  554.   move=2
  555.   delete=3
  556.   rename=4
  557.   view=5
  558.   prev=6
  559.   next=7
  560.   choose=8
  561.   help=9
  562.   cancel=0
  563.  
  564.   Action=ShowMessage(FA_Msg,,,,AppName,Flist,Param3)  /* Ask for Action */
  565.   SELECT
  566.     WHEN Action=view THEN ADDRESS COMMAND '${RefTable/File-Presentate} -FList 'FileList
  567.  
  568.     WHEN Action=Copy THEN
  569.     DO
  570.       delAfterCopy=0
  571.       ConMsg='File_Copy.8'
  572.       SampleAction=SampleCopy
  573.       SampleDone=SampleCopied
  574.       CALL Copy_Move
  575.     END
  576.  
  577.     WHEN Action=Move THEN
  578.     DO
  579.       delAfterCopy=1
  580.       ConMsg='File_Move.1'
  581.       SampleAction=SampleMove
  582.       SampleDone=SampleMoved
  583.       CALL Copy_Move
  584.       LEAVE
  585.     END
  586.  
  587.     WHEN Action=Delete THEN
  588.     DO
  589.       CALL InitTrash
  590.       CALL DeleteIt
  591.       CALL AppProfile
  592.       LEAVE
  593.     END
  594.  
  595.     WHEN Action=Rename THEN
  596.     DO
  597.       CALL RenameIt
  598.       LEAVE
  599.     END
  600.  
  601.     WHEN Action=0 THEN
  602.     DO
  603.       ExitProg=1
  604.       LEAVE
  605.     END
  606.  
  607.     WHEN Action=Choose THEN
  608.     DO
  609.       Target=Path
  610.       LEAVE
  611.     END
  612.  
  613.     WHEN Action=help THEN CALL Help
  614.     WHEN Action=next THEN FA_Msg='FileManager.2'
  615.     WHEN Action=prev THEN FA_Msg='FileManager.3'
  616.  
  617.     OTHERWISE CALL ExitMe
  618.   END /* SELECT */
  619.  END /* .1 */
  620.  
  621.  WHEN FA_Msg='FileManager.2' THEN
  622.  DO
  623.   copyAs=1
  624.   moveAs=2
  625.   sLink=3
  626.   info=4
  627.   sendto=5
  628.   prev=6
  629.   next=7
  630.   choose=8
  631.   help=9
  632.   cancel=0
  633.  
  634.   Action=ShowMessage(FA_Msg,,,,AppName,Flist,Param3)  /* Ask for Action */
  635.   SELECT
  636.     WHEN Action=info THEN CALL FileInfo
  637.     WHEN Action=CopyAs THEN
  638.     DO
  639.       AppNameBefore=AppName
  640.       CALL SaveAsStarter
  641.       AppName=AppNameBefore
  642.       LEAVE
  643.     END
  644.  
  645.     WHEN Action=MoveAs THEN
  646.     DO
  647.       AppNameBefore=AppName
  648.       CALL MoveAsStarter
  649.       AppName=AppNameBefore
  650.       LEAVE
  651.     END
  652.  
  653.     WHEN Action=sLink THEN
  654.     DO
  655.       AppNameBefore=AppName
  656.       CALL ScriptLink
  657.       AppName=AppNameBefore
  658.       LEAVE
  659.     END
  660.  
  661.     WHEN Action=sendTo THEN
  662.     DO
  663.       ADDRESS COMMAND '${RefTable/File-Starter} -FList 'FileList
  664.       LEAVE
  665.     END
  666.  
  667.     WHEN Action=0 THEN
  668.     DO
  669.       ExitProg=1
  670.       LEAVE
  671.     END
  672.  
  673.     WHEN Action=Choose THEN
  674.     DO
  675.       Target=Path
  676.       LEAVE
  677.     END
  678.  
  679.     WHEN Action=help THEN CALL Help
  680.     WHEN Action=next THEN FA_Msg='FileManager.3'
  681.     WHEN Action=prev THEN FA_Msg='FileManager.1'
  682.  
  683.     OTHERWISE CALL ExitMe
  684.   END /* SELECT */
  685.  END /* .2 */
  686.  
  687.  WHEN FA_Msg='FileManager.3' THEN
  688.  DO
  689.   edit=1
  690.   arc=2
  691.   filemoni=3
  692.   diskspace=4
  693.   tooltypes=5
  694.   prev=6
  695.   next=7
  696.   choose=8
  697.   help=9
  698.   cancel=0
  699.  
  700.   Action=ShowMessage(FA_Msg,,,,AppName,Flist,Param3)  /* Ask for Action */
  701.   SELECT
  702.     WHEN Action=Edit THEN CALL Edit
  703.     WHEN Action=filemoni THEN CALL FileMon
  704.  
  705.     WHEN Action=diskspace THEN
  706.     DO f=1 TO Files.count
  707.      ADDRESS COMMAND 'EASys!_bin:GetSize "'ConvSpecial(Files.f)'"'
  708.     END
  709.  
  710.     WHEN Action=arc THEN ADDRESS COMMAND '${RefTable/Archive-Manager} -FList 'FileList
  711.     WHEN Action=tooltypes THEN 
  712.     DO f=1 TO Files.count
  713.      ADDRESS COMMAND '${RefTable/IconToolTypes} "'Files.f'"'
  714.     END
  715.  
  716.     WHEN Action=0 THEN
  717.     DO
  718.       ExitProg=1
  719.       LEAVE
  720.     END
  721.  
  722.     WHEN Action=Choose THEN
  723.     DO
  724.       Target=Path
  725.       LEAVE
  726.     END
  727.  
  728.     WHEN Action=help THEN CALL Help
  729.     WHEN Action=next THEN FA_Msg='FileManager.1'
  730.     WHEN Action=prev THEN FA_Msg='FileManager.2'
  731.  
  732.     OTHERWISE CALL ExitMe
  733.   END /* SELECT */
  734.  END /* .3 */
  735.  
  736.  OTHERWISE NOP
  737. END /* SELECT */
  738. END /* FOREVER */
  739. RETURN
  740.  
  741. /* ------------------------- */
  742. mkReqFList:
  743. PARSE ARG begincount
  744. FList='   'Files.begincount
  745. Param3=1
  746. next=begincount+1
  747. DO f=next to Files.count UNTIL f=8
  748.    Flist=Flist''CR'   'Files.f
  749. END
  750.  
  751. IF Files.count>1 & Files.count>8 THEN Flist=Flist''CR'   'Path'...'
  752.  
  753. Param3=Files.count
  754. RETURN
  755.  
  756. /* ------------------------- */
  757. Edit:
  758.  
  759. CALL PlaySample(SampleEdit)
  760.  
  761. DO k=1 to Files.count
  762.    ADDRESS COMMAND '${RefTable/Text-Editor-Sync} "'ConvSpecial(Files.k)'"'
  763. END
  764.  
  765. RETURN
  766.  
  767. /* ------------------------- */
  768. FileMon:
  769.  
  770. CALL PlaySample(SampleFileMon)
  771.  
  772. DO k=1 to Files.count
  773.    ADDRESS COMMAND '${RefTable/File-Monitor} ${RefTable/File-Monitor-Opts} "'Files.k'"'
  774. END
  775. RETURN
  776.  
  777. /* ------------------------- */
  778. FileNote:
  779.  
  780. FileCommentDump='FN_Comment_'ProcessNumber
  781.  
  782. DO k=1 to Files.count
  783.  
  784.   aFile=ConvSpecial(Files.k)
  785.  
  786.   ADDRESS COMMAND 'SYS:c/list >ENV:'FileCommentDump' "'aFile'" LFORMAT "%c"'
  787.  
  788.   ActualComment=MyGetENV(FileCommentDump)
  789.  
  790.   length  =LENGTH(File)
  791.   IF length>55 THEN
  792.    FileString='...'RIGHT(File, 52)
  793.   ELSE
  794.    FileString=Files.k
  795.  
  796.   drop Comment
  797.   Comment=ShowMessage('FileNoteMaker.1',,,ActualComment,AppName,FileString,ActualComment)
  798.  
  799.   IF Action=1 THEN ADDRESS COMMAND 'SYS:c/FileNote "'aFile'" "'Comment'"'
  800.  
  801.   ADDRESS COMMAND 'delete >NIL: ENV:'FileCommentDump' QUIET'
  802. END
  803.  
  804. drop FileCommentDump
  805.  
  806. RETURN
  807.  
  808. /* ------------------------- */
  809. RenameIt:
  810.  
  811. TimeStamp=GetTime()
  812. CALL PlaySample(SampleRename)
  813. IF ConStat=0 THEN CALL ShowMessage('File_Rename.4',,,,AppName)
  814.  
  815. cpy=cpy_yes
  816. DoNotReplaceFile=0
  817.  
  818. DO k=1 to Files.count
  819.  
  820.  NoOper=0
  821.  
  822.  IF POS('+',Files.k)>0 THEN
  823.  DO
  824.   CALL ShowMessage('FileManager.9',,,,AppName,Files.k)
  825.   NoOper=1
  826.  END
  827.  
  828.  str_AttrSource=GetFileAttributes(Files.k)
  829.  
  830.  IF NoOper=0 & Files.count=1 THEN
  831.  DO
  832.      NewName=ShowMessage('File_Rename.1',,,FileName.k,str_AttrSource)
  833.      IF Action=0 THEN LEAVE
  834.      IF Action=1 & ~(FileName.k=NewName) THEN CALL Renamer
  835.  END
  836.  
  837.  IF NoOper=0 & Files.count>1 THEN
  838.  DO
  839.   NewName=ShowMessage('File_Rename.2',,,FileName.k,str_AttrSource,k,Files.count)
  840.  
  841.   WildCard=0
  842.   NoAsterisk=0
  843.  
  844.   IF LEFT(NewName,1)='*' | RIGHT(NewName,1)='*' THEN WildCard=1
  845.  
  846.   SELECT
  847.    WHEN Action=0 THEN LEAVE
  848.    WHEN Action=1 & WildCard=0 THEN CALL Renamer
  849.    WHEN Action=2 THEN NOP
  850.    WHEN Action=3 THEN WildCard=1
  851.    OTHERWISE NOP
  852.   END
  853.  
  854.   IF WildCard=1 THEN
  855.   DO
  856.    PatternPrev=NewName
  857.    PatternNew=ShowMessage('File_Rename.3',,,PatternPrev,PatternPrev)
  858.    IF Action=0 THEN LEAVE
  859.  
  860.    RenLeading=0
  861.    RenTrailing=0
  862.    RenString=0
  863.    RenTrailToLead=0
  864.    RenLeadToTrail=0
  865.    Prev=STRIP(PatternPrev,'B','*')
  866.  
  867.    SELECT
  868.     WHEN LENGTH(PatternPrev)>1 & LEFT(PatternPrev,1)="*" & RIGHT(PatternPrev,1)="*" THEN
  869.     DO
  870.       RenString=1
  871.       Prev=STRIP(PatternPrev,'B','*')
  872.       PatternNew=STRIP(PatternNew,'B','*')
  873.     END
  874.  
  875.     WHEN LEFT(PatternPrev,1)="*" & LEFT(PatternNew,1)="*" THEN
  876.     DO
  877.       RenTrailing=1
  878.       Prev=STRIP(PatternPrev,'L','*')
  879.       PatternNew=STRIP(PatternNew,'L','*')
  880.     END
  881.  
  882.     WHEN RIGHT(PatternPrev,1)="*" & RIGHT(PatternNew,1)="*" THEN
  883.     DO
  884.       RenLeading=1
  885.       Prev=STRIP(PatternPrev,'T','*')
  886.       PatternNew=STRIP(PatternNew,'T','*')
  887.     END
  888.  
  889.     WHEN LEFT(PatternPrev,1)="*" & RIGHT(PatternNew,1)="*" THEN
  890.     DO
  891.       RenTrailToLead=1
  892.       Prev=STRIP(PatternPrev,'L','*')
  893.       PatternNew=STRIP(PatternNew,'T','*')
  894.     END
  895.  
  896.     WHEN RIGHT(PatternPrev,1)="*" & LEFT(PatternNew,1)="*" THEN
  897.     DO
  898.       RenLeadToTrail=1
  899.       Prev=STRIP(PatternPrev,'T','*')
  900.       PatternNew=STRIP(PatternNew,'L','*')
  901.     END
  902.  
  903.     OTHERWISE
  904.     DO
  905.       CALL CloseCon(50)
  906.       RETURN
  907.     END
  908.    END /* SELECT */
  909.  
  910.    LengP=LENGTH(Prev)
  911.  
  912.    IF Files.count>1 THEN CALL CreateBarWin(AppName,BarWinL,BarWinT,BarWinW,'Sto_p','Progress',Files.count,0,3,2,,,,)
  913.  
  914.    DO k=1 to Files.count
  915.  
  916.      ADDRESS 'FRESHBAR_REXX.1'
  917.      SETCURRENT WinHandle1 BarHandle1 k
  918.      TESTOKBUTTON WinHandle1
  919.      IF RESULT=1 THEN LEAVE k
  920.  
  921.      NewName=Filename.k
  922.      LengF=LENGTH(FileName.k)
  923.  
  924.      SELECT
  925.       WHEN RenLeading=1 THEN
  926.       DO
  927.         IF PatternPrev="*" THEN NewName=PatternNew''FileName.k
  928.         ELSE
  929.            IF POS(Prev,FileName.k)=1 THEN NewName=PatternNew''STRIP(FileName.k,'L',Prev)
  930.       END
  931.  
  932.       WHEN RenTrailing=1 THEN
  933.       DO
  934.         IF PatternPrev="*" THEN NewName=FileName.k''PatternNew
  935.         ELSE
  936.            IF LASTPOS(Prev,FileName.k)=LengF-LengP+1 THEN NewName=STRIP(FileName.k,'T',Prev)''PatternNew
  937.       END
  938.  
  939.       WHEN RenString=1 THEN
  940.       DO
  941.         Posi=POS(Prev,FileName.k)
  942.         IF Posi>0 THEN
  943.         DO
  944.           NewL=''
  945.           NewR=''
  946.           IF Posi>1 THEN NewL=LEFT(FileName.k,Posi-1)
  947.           IF Posi<LengF-LengP+1 THEN NewR=RIGHT(FileName.k,LengF-Posi-LengP+1)
  948.           NewName=NewL''PatternNew''NewR
  949.         END
  950.       END
  951.  
  952.       WHEN RenTrailToLead=1 THEN NewName=PatternNew''LEFT(FileName.k,LENGTH(FileName.k)-LengP)
  953.       WHEN RenLeadToTrail=1 THEN NewName=RIGHT(FileName.k,LENGTH(FileName.k)-LengP)''PatternNew
  954.  
  955.       OTHERWISE NOP
  956.      END /* SELECT */
  957.  
  958.      IF ~(FileName.k=NewName) THEN CALL Renamer
  959.  
  960.    END /* subloop k */
  961.    CALL CloseBarWin
  962.    LEAVE
  963.   END /* WildCard */
  964.  END /* Files.count>1 */
  965.  IF cpy=cpy_none | cpy=cpy_stop THEN LEAVE
  966. END /* mainloop k */
  967.  
  968. CALL CloseCon(50)
  969. RETURN
  970.  
  971. /* ------------------------- */
  972. Renamer:
  973.  
  974. r=writeln(Con,"7H"k" / "Files.count"HH"FileName.k"0H9H9H"NewName"0H")
  975.  
  976. IF UPPER(FileName.k)=UPPER(NewName) THEN
  977. DO
  978.  r=PRAGMA('DIRECTORY',Path.k)
  979.  
  980.  aName=ConvSpecial(FileName.k)
  981.  bName=ConvSpecial(NewName)
  982.  
  983.  ADDRESS COMMAND 'rename "'aName'" "'bName'" QUIET'
  984.  IF RC>5 THEN r=ShowMessage('File_Rename.5',,,,AppName,ActualFile,Target,RC)
  985.  
  986.  RETURN
  987. END
  988.  
  989. IF ~(cpy=cpy_all | cpy=cpy_none) THEN
  990. DO
  991.  SourceCount=Files.count
  992.  NominalCount=Files.count
  993.  SubCount=k
  994.  ActualFile=Files.k
  995.  
  996.  IF RIGHT(Path.k,1)=':' THEN
  997.   Target=Path.k''NewName
  998.  ELSE
  999.   Target=Path.k'/'NewName
  1000.  
  1001.  CALL CheckExist
  1002. END
  1003.  
  1004. IF cpy=cpy_yes | cpy=cpy_yesbak | cpy=cpy_all THEN
  1005. DO
  1006.  r=PRAGMA('DIRECTORY',Path.k)
  1007.  
  1008.  IF cpy=cpy_yesbak & ~(UPPER(Target)=UPPER(ActualFile)) THEN
  1009.  DO
  1010.    tg=ConvSpecial(Target)
  1011.    tginf=tg'.info'
  1012.    tgfnt=tg'.font'
  1013.    ADDRESS COMMAND 'rename "'tg'" "'tg''TimeStamp'"'
  1014.  
  1015.    SELECT
  1016.     WHEN EXISTS(Target'.info') THEN ADDRESS COMMAND 'rename "'tginf'" "'tginf''TimeStamp'"'
  1017.     WHEN EXISTS(Target'.font') THEN ADDRESS COMMAND 'rename "'tgfnt'" "'tgfnt''TimeStamp'"'
  1018.     OTHERWISE NOP
  1019.    END
  1020.  END
  1021.  
  1022.  aName=ConvSpecial(FileName.k)
  1023.  bName=ConvSpecial(NewName)
  1024.  
  1025.  ADDRESS COMMAND
  1026.  'delete >NIL: "'bName'" FORCE QUIET'
  1027.  'rename "'aName'" "'bName'" QUIET'
  1028.  
  1029.  IF RC>5 THEN
  1030.  DO
  1031.   r=ShowMessage('File_Rename.5',,,,AppName,ActualFile,Target,RC)
  1032.   RETURN
  1033.  END
  1034.  
  1035.  SELECT
  1036.   WHEN EXISTS(FileName.k'.info') THEN
  1037.   DO
  1038.    ADDRESS COMMAND
  1039.    'delete >NIL: "'bName'.info" FORCE QUIET'
  1040.    'rename "'aName'.info" "'bName'.info" QUIET'
  1041.   END
  1042.   WHEN UPPER(RIGHT(FileName.k,5))='.INFO' THEN
  1043.   DO
  1044.    ADDRESS COMMAND
  1045.    'delete >NIL: "'LEFT(bName,LENGTH(bName)-5)'" FORCE QUIET'
  1046.    'rename "'LEFT(aName,LENGTH(aName)-5)" "'LEFT(bName,LENGTH(bName)-5)'" QUIET'
  1047.   END
  1048.   WHEN EXISTS(FileName.k'.font') THEN
  1049.   DO
  1050.    ADDRESS COMMAND
  1051.    'delete >NIL: "'bName'.font" FORCE QUIET'
  1052.    'rename "'aName'.font" "'bName'.font" QUIET'
  1053.   END
  1054.   WHEN UPPER(RIGHT(FileName.k,5))='.FONT' THEN
  1055.   DO
  1056.    ADDRESS COMMAND
  1057.    'delete >NIL: "'LEFT(bName,LENGTH(bName)-5)'" FORCE QUIET'
  1058.    'rename "'LEFT(aName,LENGTH(aName)-5)" "'LEFT(bName,LENGTH(bName)-5)'" QUIET'
  1059.   END
  1060.   OTHERWISE NOP
  1061.  END
  1062. END
  1063.  
  1064. r=PRAGMA('DIRECTORY','T:')
  1065. RETURN
  1066.  
  1067. /* ------------------------- */
  1068. InitTrash:
  1069.  
  1070. AppName="EasyTrash  © EASys!)"
  1071.  
  1072. FileReq='TrashManager.0'
  1073. SampleChooseFiles=SampleDir'TrashManagerChooseFile.8SVX'
  1074. SampleChooseOp=SampleDir'FileManagerChooseOp.8SVX'
  1075. SampleDel=SampleDir'FileManagerDel.8SVX'
  1076. SampleDeleted=SampleDir'FileManagerDeleted.8SVX'
  1077. SampleDone=SampleDir'FileManagerDeleted.8SVX'
  1078. SampleMoveTrash=SampleDir'FileManagerMoveTrash.8SVX'
  1079. RETURN
  1080.  
  1081. /* ------------------------- */
  1082. Trash:
  1083.  
  1084. CALL InitTrash
  1085.  
  1086. SELECT
  1087.  WHEN Files.1='' | Files.1='FILES.1' THEN
  1088.  DO FOREVER
  1089.     IF SelectFiles()=0 THEN LEAVE
  1090.     ELSE CALL SetActualPath
  1091.  
  1092.     CALL DeleteIt
  1093.     IF ExitProg=1 THEN LEAVE
  1094.  
  1095.     MovedTrash=0
  1096.     drop Action
  1097.     drop Files
  1098.     UserArgs=''
  1099.  END
  1100.  
  1101.  OTHERWISE CALL DeleteIt
  1102. END
  1103.  
  1104. RETURN
  1105.  
  1106. /* ------------------------- */
  1107. DeleteIt:
  1108.  
  1109. Fprocessed=1  /* File Counter */
  1110.  
  1111. cancel=0
  1112. del=1
  1113. movetrash=2
  1114. single=3
  1115. fast=4
  1116.  
  1117. /* Automatic commandline Restorage yet available within GlobalTrash:
  1118.  
  1119.  DO r=1 to Files.count
  1120.   IF POS(':TRASHCAN/',UPPER(Files.r))>0 THEN
  1121.    DO
  1122.       IF(GlobalTrash_active=1) THEN
  1123.          ADDRESS COMMAND 'EASys!_bin:GlobalTrashClient WAITRESTORE "'Files.r'"'
  1124.       ELSE
  1125.          ADDRESS COMMAND '${RefTable/File-MoveServer} "'ConvSpecial(Files.r)'"'
  1126.    END
  1127.   RETURN
  1128.  END
  1129. */
  1130.  
  1131. DO FOREVER
  1132.  
  1133.  CALL RequestDel
  1134.  Act=Action
  1135.  
  1136.  IF Act=1 & (Files.count>10 | OneDir=1) THEN Act=fast
  1137.  
  1138.  SELECT
  1139.   WHEN Act=Cancel THEN
  1140.   DO
  1141.      UserArgs=''
  1142.      drop Files
  1143.      CALL ExitMe
  1144.   END
  1145.  
  1146.   WHEN Act=fast | Act=del THEN
  1147.   DO
  1148.     IF Act=fast THEN
  1149.     DO
  1150.      r=FastModeOp('del',1)
  1151.      IF ~(r=2) THEN RETURN
  1152.      ELSE Act=del
  1153.     END
  1154.  
  1155.     ActualFile=" "
  1156.     DO k=1 to Files.count
  1157.        IF ~EXISTS(Files.k) THEN IF EXISTS(Files.k'.info') THEN Files.k=Files.k'.info'
  1158.        CALL CheckSource
  1159.        CALL DelMonitor(k,Files.k)
  1160.        IF Source_Is_Dir THEN
  1161.        DO
  1162.          IF SourceCount>0 THEN
  1163.          DO
  1164.            DO SubCount=1 to SourceCount
  1165.               ActualFile=SourceDirs.SubCount''SourceFiles.SubCount
  1166.               Rest=100-ABS((SourceCount-Subcount)*100 % SourceCount)
  1167.               ADDRESS 'FRESHBAR_REXX.1'
  1168.               SETCURRENT WinHandle1 BarHandle1 k
  1169.               TESTOKBUTTON WinHandle1
  1170.               IF RESULT=1 THEN LEAVE k
  1171.  
  1172.               CALL DeleteFile
  1173.               ADDRESS 'FRESHBAR_REXX.1'
  1174.               SETCURRENT WinHandle1 BarHandle2 Rest
  1175.            END
  1176.          END
  1177.  
  1178.          IF DirCount>0 THEN
  1179.          DO SubCount=1 to DirCount
  1180.             ActualFile=SourceDirs.SubCount
  1181.             CALL DeleteFile
  1182.          END
  1183.        END
  1184.        CALL DelFile
  1185.     END
  1186.  
  1187.     CALL CloseBarWin
  1188.     CALL PlaySample(SampleDeleted)
  1189.     LEAVE
  1190.   END
  1191.  
  1192.   WHEN Act=movetrash THEN
  1193.   DO
  1194.     CALL PlaySample(SampleMoveTrash)
  1195.  
  1196.     DO k=1 to Files.count
  1197.        ADDRESS 'FRESHBAR_REXX.1'
  1198.        SETCURRENT WinHandle1 BarHandle1 k
  1199.        TESTOKBUTTON WinHandle1
  1200.        IF RESULT=1 THEN LEAVE k
  1201.        ActualFile=Files.k
  1202.  
  1203.        CALL MoveTrash
  1204.        Rest=100-ABS((Files.count-k)*100 % Files.count)
  1205.        ADDRESS 'FRESHBAR_REXX.1'
  1206.        SETCURRENT WinHandle1 BarHandle2 Rest
  1207.     END
  1208.     CALL CloseBarWin
  1209.     LEAVE
  1210.   END
  1211.  
  1212.   WHEN Act=single & Files.count=1 THEN LEAVE
  1213.  
  1214.   WHEN Act=single THEN
  1215.   DO
  1216.    delete=1
  1217.    MoveTrash=2
  1218.    jump=3
  1219.    all=4
  1220.    Cancel=0
  1221.  
  1222.    IF Files.count>1 THEN
  1223.    DO
  1224.     ActualFile=" "
  1225.     DO k=1 TO Files.count
  1226.       CALL DelMonitor(k,Files.k)
  1227.       ActualFile=Files.k
  1228.       IF ~Exists(Files.k) & Exists(Files.k'.info') THEN Files.k=Files.k'.info'
  1229.       str_AttrSource=GetFileAttributes(Files.k)
  1230.       Action=ShowMessage('TrashManager.2',,,,AppName,k'/'Files.count,str_AttrSource)
  1231.  
  1232.       SELECT
  1233.        WHEN Action=Cancel THEN LEAVE
  1234.        WHEN Action=delete THEN CALL DeleteFile
  1235.        WHEN Action=MoveTrash THEN CALL MoveTrash
  1236.        WHEN Action=all THEN
  1237.        DO
  1238.          Fprocessed=k
  1239.          DO k=Fprocessed TO Files.count
  1240.              CALL DelFile
  1241.          END
  1242.          LEAVE
  1243.        END
  1244.  
  1245.        WHEN Action=jump THEN NOP
  1246.        OTHERWISE NOP
  1247.       END /* SELECT Action */
  1248.     END /* DO k */
  1249.  
  1250.     LEAVE /* FOREVER */
  1251.    END /* DO */
  1252.   END
  1253.  
  1254.   OTHERWISE NOP
  1255.  END /* SELECT act */
  1256. END /* FOREVER */
  1257.  
  1258. IF GlobalTrash_active=1 & MovedTrash=1 THEN ADDRESS COMMAND 'EASys!_bin:GlobalTrashClient PERFORM'
  1259.  
  1260. CALL CloseBarWin
  1261. CALL CloseCon(50)
  1262. RETURN
  1263.  
  1264. /* ------------------------- */
  1265. RequestDel:
  1266.  
  1267. CALL PlaySample(SampleDel)
  1268.  
  1269. IF Files.count=1 THEN
  1270. DO
  1271.   Mesg='TrashManager.3'
  1272.   IF ~Exists(Files.1) & Exists(Files.1'.info') THEN Files.1=Files.1'.info'
  1273.   Parameter2=GetFileAttributes(Files.1)
  1274.   Parameter3=''
  1275. END
  1276. ELSE
  1277. DO
  1278.   drop SelList
  1279.   SelList='   'Files.Fprocessed
  1280.  
  1281.   DO j=(Fprocessed+1) to 5 WHILE (j < Files.count+1)
  1282.      SelList=SelList''CR'   'Files.j
  1283.   END
  1284.  
  1285.   IF Files.count>j THEN
  1286.      SelList=SelList''CR'   'Path' ...'
  1287.  
  1288.   IF Files.count>1 THEN
  1289.   DO
  1290.      Mesg='TrashManager.1'
  1291.      Parameter2=SelList
  1292.      Parameter3=Files.count-Fprocessed+1
  1293.   END
  1294. END
  1295. Action=ShowMessage(Mesg,,,,AppName,Parameter2,Parameter3)
  1296.  
  1297. RETURN
  1298.  
  1299. /* ------------------------- */
  1300. DelFile:
  1301.  
  1302. ADDRESS 'FRESHBAR_REXX.1'
  1303. SETCURRENT WinHandle1 BarHandle1 k
  1304. TESTOKBUTTON WinHandle1
  1305. IF RESULT=1 THEN LEAVE k
  1306. CALL DelMonitor(k,Files.k)
  1307. ActualFile=Files.k
  1308.  
  1309. CALL DeleteFile
  1310. Rest=100-ABS((Files.count-k)*100 % Files.count)
  1311. ADDRESS 'FRESHBAR_REXX.1'
  1312. SETCURRENT WinHandle1 BarHandle2 Rest
  1313. RETURN
  1314.  
  1315. /* ------------------------- */
  1316. DeleteFile:
  1317.  
  1318. FileIsDir=0
  1319. delFile=0
  1320. delFileIcon=0
  1321. delDirIcon=0
  1322. delDir=0
  1323. delFont=0
  1324. delFontDir=0
  1325. delSimple=0
  1326.  
  1327. aFile=ConvSpecial(ActualFile)
  1328. FileSfx=UPPER(RIGHT(ActualFile,5))
  1329. IF IsDir(ActualFile)=1 THEN
  1330. DO
  1331.  FileIsDir=1
  1332.  aFile=STRIP(aFile,'T','/')
  1333. END
  1334.  
  1335. IF (FileIsDir=1 & FileSfx='.INFO') | FileSfx='.FONT' THEN DirName=LEFT(ActualFile,LENGTH(ActualFile)-5)
  1336.  
  1337. CALL DelMonitor(k,Files.k)
  1338.  
  1339. SELECT
  1340.  WHEN FileSfx='.FONT' THEN delFont=1
  1341.  WHEN FileSfx='.INFO' THEN delFileIcon=1
  1342.  WHEN EXISTS(ActualFile'.FONT') THEN delFontDir=1
  1343.  WHEN FileIsDir=1 & ~(FileSfx='.INFO') THEN delDir=1
  1344.  WHEN FileIsDir=1 & FileSfx='.INFO' THEN delDirIcon=1
  1345.  WHEN Source_is_Dir=1 THEN delSimple=1
  1346.  WHEN FileIsDir=0 & ~(FileSfx='.INFO') & ~EXISTS(ActualFile'.info') THEN delFile=1
  1347.  OTHERWISE delFile=1
  1348. END
  1349.  
  1350. SELECT
  1351.   WHEN delSimple THEN
  1352.   DO
  1353.    ADDRESS COMMAND 'delete >NIL: "'aFile'" FORCE QUIET'
  1354.    rCode=RC
  1355.   END
  1356.  
  1357.   WHEN delFile THEN
  1358.   DO
  1359.    ADDRESS COMMAND 'delete >NIL: "'aFile'" FORCE QUIET'
  1360.    rCode=RC
  1361.    ADDRESS COMMAND 'EASys!_bin:IconDelete "'aFile'"'
  1362.   END
  1363.  
  1364.   WHEN delFileIcon THEN
  1365.   DO
  1366.    ADDRESS COMMAND 'EASys!_bin:IconDelete "'aFile'"'
  1367.    rCode=RC
  1368.   END
  1369.  
  1370.   WHEN delDir THEN
  1371.   DO
  1372.     ADDRESS COMMAND 'delete >NIL: "'aFile'" FORCE ALL QUIET'
  1373.     rCode=RC
  1374.     ADDRESS COMMAND 'EASys!_bin:IconDelete "'aFile'"'
  1375.   END
  1376.  
  1377.   WHEN delDirIcon THEN
  1378.   DO
  1379.    ADDRESS COMMAND 'EASys!_bin:IconDelete "'aFile'"'
  1380.    rCode=RC
  1381.   END
  1382.  
  1383.   WHEN delFont THEN
  1384.   DO
  1385.     ADDRESS COMMAND 'EASys!_bin:IconDelete  "'aFile'"'
  1386.  
  1387.     IF EXISTS(DirName) THEN
  1388.     DO
  1389.       ADDRESS COMMAND
  1390.       'EASys!_bin:IconDelete "'ConvSpecial(DirName)'"'
  1391.       'delete >NIL: "'ConvSpecial(DirName)'" FORCE ALL QUIET'
  1392.     END
  1393.   END
  1394.  
  1395.   WHEN delFontDir THEN
  1396.   DO
  1397.     ADDRESS COMMAND
  1398.     'EASys!_bin:IconDelete "'aFile'"'
  1399.     'delete >NIL: "'aFile'" FORCE ALL QUIET'
  1400.     rCode=RC
  1401.  
  1402.     IF EXISTS(aFile'.font') THEN
  1403.     DO
  1404.       'delete >NIL: "'aFile'.font" FORCE QUIET'
  1405.       'EASys!_bin:IconDelete "'aFile'.font"'
  1406.     END
  1407.   END
  1408.  
  1409.   OTHERWISE NOP
  1410. END
  1411.  
  1412. IF rCode<5 THEN Deleted=1
  1413. RETURN
  1414.  
  1415. /* ------------------------- */
  1416. MoveTrash:
  1417.  
  1418. CALL DelMonitor(k,Files.k)
  1419.  
  1420. aFile=ConvSpecial(ActualFile)
  1421. bFile=ConvSpecial(Path_Dir.k''Prefix.k)
  1422.  
  1423. IF GlobalTrash_active=1 THEN
  1424. DO
  1425.   IF POS('[',ActualFile)>0 | POS(']',ActualFile)>0 | POS('{',ActualFile)>0 | POS('}',ActualFile)>0 THEN
  1426.   DO
  1427.    CALL ShowMessage('FileManager.9',,,,AppName,ActualFile)
  1428.    MovedTrash=0
  1429.    RETURN
  1430.   END
  1431.  
  1432.   ADDRESS COMMAND 'EASys!_bin:GlobalTrashClient WAIT "'ActualFile'"'
  1433.   IF ~(Suffix.k='INFO') & EXISTS(ActualFile'.info') THEN ADDRESS COMMAND 'EASys!_bin:GlobalTrashClient WAIT "'ActualFile'.info"'
  1434. END
  1435. ELSE
  1436. DO
  1437.   ADDRESS COMMAND 'copy "'aFile'" "${RefTable/TrashCan}" CLONE ALL QUIET'
  1438.   IF EXISTS(ActualFile'.info') THEN ADDRESS COMMAND 'copy "'aFile'.info" "${RefTable/TrashCan}" CLONE QUIET'
  1439.  
  1440.   IF Suffix.k='FONT' THEN
  1441.      IF EXISTS(Path_Dir.k''Prefix.k) THEN ADDRESS COMMAND 'copy "'bFile'" "${RefTable/TrashCan}" ALL QUIET'
  1442.   ELSE
  1443.      IF EXISTS(ActualFile'.font') THEN ADDRESS COMMAND 'copy "'aFile'.font" "${RefTable/TrashCan}" QUIET'
  1444.  
  1445.   CALL DeleteFile
  1446. END
  1447.  
  1448. MovedTrash=1
  1449. RETURN
  1450.  
  1451. /* ------------------------- */
  1452. DelMonitor:
  1453. PARSE ARG num,file
  1454.  
  1455. IF Files.count=1 & Source_Is_Dir=0 THEN RETURN
  1456.  
  1457. file=STRIP(file,'B','"')
  1458.  
  1459. IF ConStat=0 THEN
  1460. DO
  1461.   CALL ShowMessage('TrashManager.4',,,,AppName)
  1462.   CALL CreateBarWin(AppName,BarWinL,BarWinT,BarWinW,'Sto_p','Progress',Files.Count,0,3,2,'Drawer',100,0,3,1)
  1463. END
  1464.  
  1465. r=writeln(Con,"7H"num" / "Files.count"2H2H"file"0H")
  1466. RETURN
  1467.  
  1468. /* ------------------------- */
  1469. FileInfo:
  1470. CALL PlaySample(SampleFileInfo)
  1471.  
  1472. DO k=1 to Files.count
  1473.  ActualFile=Files.k
  1474.  
  1475.  DO FOREVER
  1476.   str_AttrSource=GetFileAttributes(ActualFile)
  1477.  
  1478.   Action=ShowMessage('File_Info.1',,,,AppName,str_AttrSource)
  1479.   SELECT
  1480.    WHEN Action=0 THEN LEAVE k
  1481.    WHEN Action=1 THEN LEAVE
  1482.    WHEN Action=2 THEN ADDRESS COMMAND '${RefTable/ManualServer} "'ConvSpecial(FileName.k)'"'
  1483.    WHEN Action=3 THEN
  1484.    DO
  1485.      TrueCount=Files.count  /* Store State */
  1486.      TrueFirstFile=Files.1
  1487.      ActualFile=Files.k
  1488.      ActualNum=k
  1489.  
  1490.      Files.count=1          /* Manipulate for internal use */
  1491.      Files.1=Files.k
  1492.  
  1493.      CALL FileMon
  1494.  
  1495.      Files.count=TrueCount   /* Restore */
  1496.      Files.1=TrueFirstFile
  1497.      Files.k=ActualFile
  1498.      k=ActualNum
  1499.    END
  1500.  
  1501.    WHEN Action=4 THEN
  1502.    DO
  1503.      TrueCount=Files.count  /* Store State */
  1504.      TrueFirstFile=Files.1
  1505.      ActualFile=Files.k
  1506.      ActualNum=k
  1507.  
  1508.      Files.count=1          /* Manipulate for internal use */
  1509.      Files.1=Files.k
  1510.  
  1511.      CALL FileNote
  1512.  
  1513.      Files.count=TrueCount   /* Restore */
  1514.      Files.1=TrueFirstFile
  1515.      Files.k=ActualFile
  1516.      k=ActualNum
  1517.    END
  1518.  
  1519.    WHEN wb_port=1 & Action=5 THEN ADDRESS WORKBENCH 'INFO "'Files.k'"'
  1520.    WHEN Action=5 THEN ADDRESS COMMAND '${RefTable/IconToolTypes} "'ConvSpecial(Files.k)'"'
  1521.    OTHERWISE CALL ExitMe
  1522.   END /* SELECT */
  1523.  END /* DO FOREVER */
  1524. END /* DO k */
  1525. RETURN
  1526.  
  1527. /* ------------------------- */
  1528. StartProg:
  1529.  
  1530. DO i=1 to Files.count
  1531.  CALL ChooseProg
  1532.  
  1533.  drop Action
  1534.  
  1535.  DO UNTIL(Action=1 | Action=0)
  1536.    str_AttrSource=GetFileAttributes(Files.i)
  1537.    CmdLine=ShowMessage('StartProg.1',,,CommandLine,AppName,str_AttrSource)
  1538.  
  1539.    SELECT
  1540.     WHEN Action=1 THEN ADDRESS COMMAND ConvSpecial(CmdLine)
  1541.     WHEN Action=2 THEN ADDRESS COMMAND '${RefTable/File-Monitor} ${RefTable/File-Monitor-Opts} "'ConvSpecial(Files.i)'"'
  1542.     WHEN Action=3 THEN ADDRESS COMMAND '${RefTable/ManualServer} "'ConvSpecial(FileName.i)'"'
  1543.     OTHERWISE CALL ExitMe
  1544.    END
  1545.  END
  1546. END
  1547.  
  1548. RETURN
  1549.  
  1550. /* ------------------------- */
  1551. ChooseProg:
  1552.  
  1553. ActualPath=TestPath(ActualPath)
  1554. IF UPPER(LEFT(FileName.i, 7))="-OTHERS" THEN
  1555.  DO
  1556.   i=i+1
  1557.  
  1558.   theProg=ShowMessage('StartProg.2',ActualPath,'',,FileName.i'    'AppName)
  1559.  
  1560.   TheConsole='>'ConsoleType''ConsoleSize'/'FileName.i'_Messages.../AUTO/CLOSE/WAIT'
  1561.   CommandLine=theProg TheConsole '"'Files.i'"'
  1562.  END
  1563. ELSE
  1564.  DO
  1565.   IF EXISTS(Files.i'.info') THEN CommandLine='EASys!_bin:WBrun "'Files.i'"'
  1566.   ELSE
  1567.    DO
  1568.     theProg="run"
  1569.     TheConsole='>'ConsoleType''ConsoleSize'/'FileName.i'_Messages.../AUTO/CLOSE/WAIT'
  1570.     CommandLine=theProg  TheConsole '"'Files.i'"'
  1571.    END
  1572.  END
  1573.  
  1574. IF theProg="" THEN CALL ExitMe
  1575. ELSE RETURN
  1576.  
  1577. /* ------------------------- */
  1578. ScriptLink:
  1579.  
  1580. AppName="EasyLink  © EASys!)"
  1581.  
  1582. k=1
  1583. IF ~(addWBstart=1) THEN
  1584. DO
  1585.  CALL RequestDest('File_ScriptLink.1','getpath')
  1586.  IF DestDir='' THEN RETURN
  1587. END
  1588.  
  1589. DO i=1 to Files.count
  1590.  
  1591.  SourceFile=Files.i
  1592.  SourceIcon=Files.i'.info'
  1593.  
  1594.  IF RIGHT(SourceFile,1)=':' THEN
  1595.  DO
  1596.   PARSE VAR SourceFile FileName.i':'
  1597.   SourceIcon=Files.i'disk.info'
  1598.  END
  1599.  
  1600.  DestFile=DestDir'_'FileName.i
  1601.  DestIcon=DestFile'.info'
  1602.  
  1603.  IF ~EXISTS(SourceFile) THEN
  1604.  DO
  1605.    IF ~EXISTS(SourceIcon) THEN RETURN
  1606.  
  1607.    DestIcon=DestDir''FileName.i'.info'
  1608.  
  1609.    aIcon=ConvSpecial(SourceFile)
  1610.  
  1611.    ADDRESS COMMAND
  1612.    'delete >NIL: "'DestIcon'" FORCE QUIET'
  1613.    iconcopy' "'aIcon''infoSfx'" "'DestFile''infoSfx'" 'iconcopyOpts
  1614.    RETURN
  1615.  END
  1616.  
  1617.  SELECT
  1618.   WHEN IsDir(SourceFile) THEN
  1619.   DO
  1620.     IF ~(WB_port=1) THEN r=rtezrequest("Get OS3.5! It's worth it."CR"Drawer-Links are only possible on OS3.5 systems.",'Aha!',ReqTitle,PosTags)
  1621.     ELSE
  1622.     DO
  1623.      IF ~Open(FILE,DestFile,'write') THEN CALL Err_ShowMessage(msg_no_wr''DestFile)
  1624.      ELSE
  1625.      DO
  1626.       r=WriteLn(FILE, '/* EASys! Scriptlink: open OS3.5 WB Drawer */')
  1627.       r=WriteLn(FILE, 'ADDRESS WORKBENCH')
  1628.       r=WriteLn(FILE, 'WINDOW "'SourceFile'" OPEN')
  1629.       r=Close(FILE)
  1630.       CALL MakeIcon('rx')
  1631.      END
  1632.     END
  1633.   END
  1634.  
  1635.   WHEN CheckExecutable(SourceFile) THEN
  1636.   DO
  1637.     IF ~Open(FILE,DestFile,'write') THEN CALL Err_ShowMessage(msg_no_wr''DestFile)
  1638.     ELSE
  1639.     DO
  1640.      r=WriteLn(FILE, '.key Arg')
  1641.      r=WriteLn(FILE, ';Script_link EASys!-System')
  1642.  
  1643.      IF exists(SourceIcon) THEN
  1644.         r=WriteLn(FILE, 'EASys!_bin:WBrun "'SourceFile'" <Arg>')
  1645.      ELSE
  1646.         r=WriteLn(FILE, 'run 'Console' "'SourceFile'" <Arg>')
  1647.  
  1648.      r=Close(FILE)
  1649.      CALL MakeIcon('exe')
  1650.     END
  1651.   END
  1652.  
  1653.   OTHERWISE
  1654.   DO
  1655.     IF ~Open(FILE,DestFile,'write') THEN CALL Err_ShowMessage(msg_no_wr''DestFile)
  1656.     ELSE
  1657.     DO
  1658.      r=WriteLn(FILE, '.key Arg')
  1659.      r=WriteLn(FILE, ';Script_link EASys!-System')
  1660.  
  1661.      IF EXISTS(SourceIcon) THEN
  1662.          r=WriteLn(FILE, 'EASys!_bin:WBrun "'SourceFile'" <Arg>')
  1663.      ELSE
  1664.          r=WriteLn(FILE, '${RefTable/View-Master} "'SourceFile'" <Arg>')
  1665.  
  1666.      r=Close(FILE)
  1667.      CALL MakeIcon('other')
  1668.     END
  1669.   END
  1670.  END
  1671. END
  1672. CALL OpenDestDrawer(STRIP(DestDir,'T','/'))
  1673.  
  1674. RETURN
  1675.  
  1676. /* ------------------------- */
  1677. MakeIcon:
  1678. PARSE ARG type
  1679.  
  1680. PARSE VAR SourceIcon aIcon'.info'
  1681. aIcon=ConvSpecial(aIcon)
  1682.  
  1683. SELECT
  1684.  WHEN type='rx' THEN
  1685.  DO
  1686.    IF EXISTS(SourceIcon) THEN
  1687.      ADDRESS COMMAND 'copy "'aIcon'.info" "'DestFile'.info" CLONE QUIET'
  1688.    ELSE
  1689.      ADDRESS COMMAND 'copy "ENV:Sys/def_Drawer.info" "'DestFile'.info" CLONE QUIET'
  1690.  
  1691.    ADDRESS COMMAND
  1692.    'EASys!_bin:DoIcon "'DestFile'" newT="Project" QUIET'
  1693.    'EASys!_bin:DoIcon "'DestFile'" newDT=rx QUIET'
  1694.    'EASys!_bin:DoIcon "'DestFile'" ClearTT QUIET'
  1695.    'EASys!_bin:DoIcon "'DestFile'" aTT="CONSOLE=NIL:" QUIET'
  1696.    'EASys!_bin:DoIcon "'DestFile'" aTT="DONOTWAIT" QUIET'
  1697.  END
  1698.  
  1699.  OTHERWISE
  1700.  DO
  1701.    IF EXISTS(SourceIcon) THEN
  1702.    DO
  1703.      ADDRESS COMMAND
  1704.      'copy "'aIcon'.info" "'DestFile'.info" CLONE QUIET'
  1705.      'EASys!_bin:DoIcon "'DestFile'" NEWT="Project" QUIET'
  1706.      'EASys!_bin:DoIcon "'DestFile'" NEWDEFAULTTOOL=c:IconX QUIET'
  1707.      'EASys!_bin:DoIcon "'DestFile'" ClearTT QUIET'
  1708.      'EASys!_bin:DoIcon "'DestFile'" aTT="DONOTWAIT" QUIET'
  1709.    END
  1710.  END
  1711. END
  1712. RETURN
  1713.  
  1714. /* ------------------------- */
  1715. CopyClip:
  1716.  
  1717. IF WB_port=1 THEN
  1718. DO
  1719.  ADDRESS WORKBENCH
  1720.  
  1721.  GETATTR OBJECT WINDOWS.ACTIVE
  1722.  Files.1=result
  1723. END
  1724.  
  1725. SELECT
  1726.  WHEN Files.1='' | Files.1='FILES.1' THEN destreq=1
  1727.  WHEN IsDir(Files.1)=1 THEN DestDir=Files.1
  1728.  OTHERWISE DestDir=ExtractPath(Files.1)
  1729. END
  1730.  
  1731. IF ~(destreq=1) THEN
  1732. DO
  1733.   destreq=0
  1734.   DestDir=STRIP(DestDir,'B','"')
  1735.   r=RIGHT(DestDir,1)
  1736.   IF ~(r='/' | r=':') THEN DestDir=DestDir'/'
  1737. END
  1738.  
  1739. IF WB_port=1 THEN
  1740.  SELECT
  1741.   WHEN EXISTS('T:FM_mv_clip') THEN
  1742.   DO
  1743.      CALL ReadFileList('T:FM_mv_clip')
  1744.      ADDRESS COMMAND 'delete >NIL: T:FM_mv_clip QUIET'
  1745.      mv=1
  1746.   END
  1747.  
  1748.   WHEN EXISTS('T:FM_cp_clip') THEN
  1749.   DO
  1750.      CALL ReadFileList('T:FM_cp_clip')
  1751.      cp=1
  1752.   END
  1753.  
  1754.   OTHERWISE CALL ExitMe
  1755.  END
  1756. ELSE
  1757. DO
  1758.  SELECT
  1759.   WHEN EXISTS('ENV:FM_mv_clip') THEN
  1760.   DO
  1761.      UserArgs=MyGetENV('FM_mv_clip')
  1762.      ADDRESS COMMAND 'delete >NIL: ENV:FM_mv_clip QUIET'
  1763.      mv=1
  1764.   END
  1765.  
  1766.   WHEN EXISTS('ENV:FM_cp_clip') THEN
  1767.   DO
  1768.      UserArgs=MyGetENV('FM_cp_clip')
  1769.      cp=1
  1770.   END
  1771.  
  1772.   OTHERWISE CALL ExitMe
  1773.  END
  1774.  
  1775.  Files.1='FILES.1'
  1776.  Files.count=0
  1777.  
  1778.  UserArgs=STRIP(UserArgs,'L',' ')
  1779.  CALL FileParser
  1780. END
  1781.  
  1782. IF Files.count=0 THEN CALL ExitMe
  1783.  
  1784. IF cp=1 THEN CALL CopyStarter
  1785. IF mv=1 THEN CALL MoveStarter
  1786.  
  1787. CALL ExitMe
  1788.  
  1789. /* ------------------------- */
  1790. CopyStarter:
  1791. AppName='EasyCopy  © EASys!)'
  1792. ConMsg='File_Copy.8'
  1793.  
  1794. SampleAction=SampleCopy
  1795. SampleDone=SampleCopied
  1796.  
  1797. delAfterCopy=0
  1798. CALL Copy_Move
  1799. RETURN
  1800.  
  1801. /* ------------------------- */
  1802. MoveStarter:
  1803. AppName='EasyMove  © EASys!)'
  1804. ConMsg='File_Move.1'
  1805.  
  1806. SampleAction=SampleMove
  1807. SampleDone=SampleMoved
  1808.  
  1809. delAfterCopy=1
  1810. CALL Copy_Move
  1811. RETURN
  1812.  
  1813. /* ------------------------- */
  1814. SaveAsStarter:
  1815. AppName='SaveAsEasy  © EASys!)'
  1816. ConMsg='File_Rename.4'
  1817. DestMsg='File_SaveAs.2'
  1818.  
  1819. SampleAction=SampleCopy
  1820. SampleDone=SampleCopied
  1821.  
  1822. delAfterCopy=0
  1823. CALL SaveMoveAs
  1824. RETURN
  1825.  
  1826. /* ------------------------- */
  1827. MoveAsStarter:
  1828. AppName='MoveAsEasy  © EASys!)'
  1829. ConMsg='File_Rename.4'
  1830. DestMsg='File_SaveAs.3'
  1831.  
  1832. SampleAction=SampleMove
  1833. SampleDone=SampleMoved
  1834.  
  1835. delAfterCopy=1
  1836. CALL SaveMoveAs
  1837. RETURN
  1838.  
  1839. /* ------------------------- */
  1840. SaveMoveAs:
  1841.  
  1842. DoneOnce=0
  1843. DO k=1 to Files.count
  1844.  IF ~EXISTS(Files.k) THEN
  1845.  DO
  1846.    r=ShowMessage('File_SaveAs.1',,,,AppName,Files.k)
  1847.    RETURN
  1848.  END
  1849.  
  1850.  CALL PlaySample(SampleSaveAs)
  1851.  
  1852.  /* Action="Save As" */
  1853.  
  1854.  CALL RequestDest(DestMsg,'getfile')
  1855.  IF DestFile='' THEN RETURN
  1856.  
  1857.  ActualFile=Files.k
  1858.  Target=DestFile
  1859.  
  1860.  TmpIcon=0
  1861.  IF UPPER(RIGHT(Target,5))=".INFO" & ~(UPPER(RIGHT(ActualFile,5))=".INFO") THEN
  1862.  DO
  1863.     ADDRESS COMMAND 'copy "'ActualFile'" "T:'FileName.k'.info"'
  1864.     ActualFile='T:'FileName.k'.info'
  1865.     TmpIcon=1
  1866.  END
  1867.  
  1868.  COPYALL="ALL"
  1869.  CopyRelatedFiles=1
  1870.  DoNotReplaceFile=0
  1871.  cpy=cpy_yes
  1872.  
  1873.  IF ConStat=0 THEN CALL ShowMessage('File_rename.4',,,,AppName)
  1874.  
  1875.  CALL CheckSource
  1876.  CALL ManageCopying
  1877.  
  1878.  IF TmpIcon=1 THEN
  1879.  DO
  1880.     ADDRESS COMMAND 'delete >NIL: "T:'FileName.k'.info" QUIET'
  1881.     TmpIcon=0
  1882.  END
  1883.  
  1884.  CALL CloseCon(50)
  1885.  CALL ErrHandler
  1886. END
  1887. COPYALL=''
  1888.  
  1889. RETURN
  1890.  
  1891. /* ------------------------- */
  1892. Copy_Move:
  1893.  
  1894. CALL PlaySample(SampleAction)
  1895.  
  1896. k=1
  1897.  
  1898. IF ~(destreq=0) THEN
  1899. DO
  1900.    IF DelAfterCopy=0 THEN
  1901.       CALL RequestDest('File_Copy.1','getpath')
  1902.    ELSE
  1903.       CALL RequestDest('File_Move.2','getpath')
  1904. END
  1905.  
  1906. IF DestDir='' THEN RETURN
  1907.  
  1908. IF POS('@',DestDir)>1 THEN  /* send by EMail */
  1909. DO
  1910.  DestAddr=STRIP(DestDir,'T','/')
  1911.  DevPos=POS(':',DestAddr)
  1912.  SlashPos=LASTPOS('/',DestAddr)
  1913.  IF SlashPos>0 THEN
  1914.     DestAddr=RIGHT(DestAddr,LENGTH(DestAddr)-SlashPos)
  1915.  ELSE
  1916.     DestAddr=RIGHT(DestAddr,LENGTH(DestAddr)-DevPos)
  1917.  
  1918.  ADDRESS COMMAND '${RefTable/Archive-Manager} -sendMail "'DestAddr'" -FList 'FileList
  1919.  RETURN
  1920. END
  1921.  
  1922. DoneOnce=0
  1923. cpy=cpy_yes
  1924.  
  1925. CALL CopyLoop
  1926. CALL ErrHandler
  1927.  
  1928. RETURN
  1929.  
  1930. /* ----------------------------- */
  1931. CopyLoop:
  1932.  
  1933. normalcopy='?'
  1934.  
  1935. /* create Freshbar window and status console */
  1936. Barwin=0
  1937. IF ConStat=0 THEN CALL ShowMessage(ConMsg,,,,AppName,'kopiert')
  1938. IF Files.count>1 THEN CALL CreateBarWin(AppName,BarWinL,BarWinT,BarWinW,'Sto_p','Progress',Files.count,0,3,2,'Drawer',100,0,3,1)
  1939.  
  1940. exist=0
  1941. DO k=1 TO Files.count
  1942.  IF ~(Files.k='') & EXISTS(DestDir''FileName.k) THEN
  1943.  DO
  1944.   exist=1
  1945.   LEAVE k
  1946.  END
  1947. END
  1948.  
  1949. IF exist=0 THEN /* if none exists, do fast mode copy/move */
  1950. DO
  1951.   CALL FastModeOp('copy',1,'noask')
  1952.   CALL CloseBarWin
  1953.   CALL CloseCon(50)
  1954.   RETURN
  1955. END
  1956.  
  1957. IF ~(Files.1='') & IsDir(Files.1)=1 | ~(Files.2='') & IsDir(Files.2)=1 | ~(Files.3='') & IsDir(Files.3)=1 | Files.count>10 THEN
  1958.  IF FastModeOp('copy',1)=1 THEN
  1959.  DO
  1960.   CALL CloseBarWin
  1961.   CALL CloseCon(50)
  1962.   RETURN
  1963.  END
  1964.  
  1965. DoNotReplaceFile=0
  1966.  
  1967. DO k=1 to Files.count
  1968.  CALL CheckSource
  1969.  IF Barwin=0 & SourceCount>1 THEN CALL CreateBarWin(AppName,BarWinL,BarWinT,BarWinW,'Sto_p','Progress',Files.count,0,3,2,'Drawer',100,0,3,1)
  1970.  
  1971.  CopyRelatedFiles=1
  1972.  IF ~(Source_is_Dir) THEN
  1973.  DO
  1974.    ActualFile=Files.k
  1975.    Target=DestDir''Filename.k
  1976.    CopyRelatedFiles=1
  1977.    CALL ManageCopying
  1978.    IF cpy=cpy_stop THEN LEAVE k
  1979.  END
  1980.  ELSE
  1981.  DO
  1982.    MainDestDir=DestDir''Filename.k
  1983.    MainDirLength=LENGTH(Files.k)
  1984.    IF IsDir(MainDestDir)=0 THEN /* dest is a file, no folder */
  1985.    DO
  1986.     r=ShowMessage('FileManager.8',,,,AppName,Files.k,MainDestDir)
  1987.     LEAVE
  1988.    END
  1989.  
  1990.    IF IsDir(MainDestDir)=-1 THEN r=makedir(ConvSpecial(MainDestDir))
  1991.    IF normalcopy='?' THEN IF FastModeOp('copy',k)=1 THEN LEAVE k
  1992.  
  1993.    /* Create Destination Sub-Directories */
  1994.  
  1995.    IF DirCount>0 THEN
  1996.    DO SubCount=1 to DirCount
  1997.       ThisDestDir=MainDestDir''RIGHT(SourceDir.SubCount, LENGTH(SourceDir.SubCount)-MainDirLength)
  1998.       MakeDestDir=Strip(ThisDestDir,'T','/')
  1999.  
  2000.       IF IsDir(MakeDestDir)=-1 THEN r=makedir(ConvSpecial(MakeDestDir))
  2001.    END
  2002.  
  2003.    IF SourceCount>0 THEN
  2004.    DO
  2005.      CopyRelatedFiles=0
  2006.      DO SubCount=1 to SourceCount
  2007.         ActualFile=SourceDirs.SubCount''SourceFiles.SubCount
  2008.         Target=MainDestDir''RIGHT(SourceDirs.SubCount, LENGTH(SourceDirs.SubCount)-MainDirLength)''SourceFiles.SubCount
  2009.  
  2010.         ADDRESS 'FRESHBAR_REXX.1'
  2011.         TESTOKBUTTON WinHandle1
  2012.         IF RESULT=1 THEN LEAVE k
  2013.  
  2014.         CALL ManageCopying
  2015.         IF cpy=cpy_stop THEN LEAVE k
  2016.      END
  2017.    END
  2018.  
  2019.    /* Operations on Directory Files.k finally */
  2020.    NominalCount=NominalCount+1
  2021.    ActualFile=Files.k
  2022.    Target=DestDir''Filename.k
  2023.    CopyRelatedFiles=1
  2024.  
  2025.    CALL ManageCopying
  2026.  
  2027.    IF cpy=cpy_stop THEN LEAVE k
  2028.  END
  2029.  
  2030.  /* test the button state */
  2031.  ADDRESS 'FRESHBAR_REXX.1'
  2032.  TESTOKBUTTON WinHandle1
  2033.  IF RESULT=1 THEN LEAVE
  2034. END
  2035.  
  2036. IF k>=Files.count THEN
  2037. DO
  2038.  ADDRESS 'FRESHBAR_REXX.1'
  2039.  SETCURRENT WinHandle1 BarHandle2 100
  2040. END
  2041.  
  2042. CALL EndLoop
  2043. RETURN
  2044.  
  2045. /* ----------------------------- */
  2046. EndLoop:
  2047.  
  2048. CALL CloseBarWin
  2049.  
  2050. IF DoneOnce=1 THEN
  2051. DO
  2052.  CALL CloseCon(1)
  2053.  CALL PlaySample(SampleDone)
  2054. END
  2055. ELSE RETURN
  2056.  
  2057. CALL CloseCon(50)
  2058. CALL OpenDestDrawer(DestDir)
  2059.  
  2060. RETURN
  2061.  
  2062. /* ----------------------------- */
  2063. OpenDestDrawer:
  2064. PARSE ARG Dir
  2065.  
  2066. IF WB_port=1 THEN
  2067. DO
  2068.  ADDRESS 'WORKBENCH'
  2069.  WINDOWTOFRONT Dir
  2070.  
  2071.  IF ~(WORKBENCH.LASTERROR = 205) THEN
  2072.  DO
  2073.   ADDRESS WORKBENCH
  2074.   MENU WINDOW Dir INVOKE WINDOW.UPDATE
  2075.  END
  2076. END
  2077. RETURN
  2078.  
  2079. /* ----------------------------- */
  2080. FastModeOp:
  2081. PARSE ARG mode,startnum,ask
  2082.  
  2083. CALL mkReqFList(startnum)
  2084. RestFiles=Files.count-startnum+1
  2085. ShowCon='>"'ConsoleType''ReqLE'/'ReqTE+220'/'ConW'/90/FM Stop: [Ctrl] c .. Pause: [SPACE] ..'
  2086.  
  2087. IF DelAfterCopy=1 THEN mode='move'
  2088.  
  2089. r=5
  2090.  
  2091. SELECT
  2092.  WHEN mode='copy' THEN 
  2093.  DO
  2094.   IF ~(ask='noask') THEN r=ShowMessage('FileManager.10',,,,AppName,FList,RestFiles,DestDir)
  2095.   IF r=0 THEN RETURN 1
  2096.   IF r=2 THEN
  2097.   DO
  2098.    NormalCopy=1
  2099.    RETURN 0
  2100.   END
  2101.  
  2102.   IF ~(ask='noask') THEN r=ShowMessage('FileManager.11',,,,AppName,FList,RestFiles,DestDir)
  2103.   IF r=0 THEN RETURN 1
  2104.   IF r=2 THEN
  2105.   DO
  2106.    NormalCopy=1
  2107.    RETURN 0
  2108.   END
  2109.  
  2110.   ShowCon=ShowCon'Fast mode copying ../AUTO/NOCLOSE"'
  2111.  END
  2112.  
  2113.  WHEN mode='del' THEN
  2114.  DO
  2115.   IF ~(ask='noask') THEN r=ShowMessage('TrashManager.5',,,,AppName,FList,RestFiles)
  2116.   IF r=2 THEN RETURN 2
  2117.   IF r=0 THEN RETURN 0
  2118.  
  2119.   CALL DelMonitor(startnum,Files.startnum)
  2120.   ShowCon=ShowCon'Fast mode deleting ../AUTO/NOCLOSE"'
  2121.  END
  2122.  
  2123.  WHEN mode='move' THEN
  2124.  DO
  2125.   IF ~(ask='noask') THEN r=ShowMessage('FileManager.10',,,,AppName,FList,RestFiles,DestDir)
  2126.   IF r=0 THEN RETURN 1
  2127.   IF r=2 THEN
  2128.   DO
  2129.    NormalCopy=1
  2130.    RETURN 0
  2131.   END
  2132.  
  2133.   IF ~(ask='noask') THEN r=ShowMessage('FileManager.11',,,,AppName,FList,RestFiles,DestDir)
  2134.   IF r=0 THEN RETURN 1
  2135.   IF r=2 THEN
  2136.   DO
  2137.    NormalCopy=1
  2138.    RETURN 0
  2139.   END
  2140.  
  2141.   ShowCon=ShowCon'Fast mode moving ../AUTO/NOCLOSE"'
  2142.  END
  2143.  
  2144.  OTHERWISE NOP
  2145. END
  2146.  
  2147. DO k=startnum TO Files.count
  2148.  
  2149.  aFile=ConvSpecial(Files.k)
  2150.  DestFile=DestDir''FileName.k
  2151.  reqfile=STRIP(RIGHT(FileName.k,20),'L',' ')
  2152.  
  2153.  Rest=Files.count-k
  2154.  c=100-ABS(Rest*100 % Files.count)
  2155.  ADDRESS 'FRESHBAR_REXX.1'
  2156.  SETCURRENT WinHandle1 BarHandle1 k
  2157.  TESTOKBUTTON WinHandle1
  2158.  IF RESULT=1 THEN LEAVE k
  2159.  
  2160.  SELECT
  2161.   WHEN mode='copy' THEN
  2162.   DO
  2163.    r=writeln(Con,"7H"k" / "Files.count"0H0H"Rest"HH"Files.k"0H9H9H"DestFile"0H")
  2164.  
  2165.    IF IsDir(Files.k)=1 THEN ADDRESS COMMAND 'copy 'ShowCon' "'aFile'" "'DestFile'" CLONE ALL'
  2166.    ELSE ADDRESS COMMAND 'copy "'aFile'" "'DestFile'" CLONE QUIET'
  2167.  
  2168.    IF EXISTS(Files.k'.info') THEN ADDRESS COMMAND iconcopy' "'aFile''infoSfx'" "'DestFile''infoSfx'" 'iconcopyOpts
  2169.    IF EXISTS(Files.k'.font') THEN ADDRESS COMMAND 'copy "'aFile'.font" "'DestFile'.font" CLONE QUIET'
  2170.   END
  2171.  
  2172.   WHEN mode='del' THEN
  2173.   DO
  2174.    IF IsDir(Files.k)=1 THEN
  2175.    DO
  2176.     ADDRESS COMMAND
  2177.     'delete 'ShowCon' "'aFile'" FORCE ALL'
  2178.     'EASys!_bin:IconDelete "'aFile'"'
  2179.    END
  2180.    ELSE ADDRESS COMMAND 'EASys!_bin:IconKill "'aFile'"'
  2181.  
  2182.    IF EXISTS(Files.k'.font') THEN ADDRESS COMMAND 'delete >NIL: "'aFile'.font" FORCE QUIET'
  2183.    CALL DelMonitor(k,Files.k)
  2184.   END
  2185.  
  2186.   WHEN mode='move' THEN
  2187.   DO
  2188.    r=writeln(Con,"7H"k" / "Files.count"0H0H"Rest"HH"Files.k"0H9H9H"DestFile"0H")
  2189.  
  2190.    movedir=STRIP(DestDir,'T','/')
  2191.    DeviceSrc=LEFT(Files.k,LASTPOS(':',Files.k))
  2192.    DeviceDest=LEFT(DestDir,LASTPOS(':',DestDir))
  2193.    IF DeviceSrc=DeviceDest & ~EXISTS(DestDir''FileName.k) THEN
  2194.    DO
  2195.     ADDRESS COMMAND 'rename "'aFile'" "'DestFile'" QUIET'
  2196.     IF EXISTS(Files.k'.font') THEN ADDRESS COMMAND 'rename "'aFile'.font" "'DestFile'.font" QUIET'
  2197.    END
  2198.    ELSE
  2199.    DO
  2200.     IF IsDir(Files.k)=1 THEN ADDRESS COMMAND 'move 'ShowCon' "'aFile'" "'movedir'" CLONE FORCE'
  2201.     ELSE ADDRESS COMMAND 'move >NIL: "'aFile'" "'movedir'" CLONE FORCE QUIET'
  2202.  
  2203.     IF EXISTS(Files.k'.font') THEN ADDRESS COMMAND 'move "'aFile'.font" "'movedir'" CLONE FORCE QUIET'
  2204.    END
  2205.    IF EXISTS(Files.k'.info') THEN ADDRESS COMMAND iconcopy' "'aFile''infoSfx'" "'DestFile''infoSfx'" 'iconcopyOpts
  2206.  
  2207.    ADDRESS COMMAND 'EASys!_bin:IconKill "'aFile'"'
  2208.   END
  2209.  
  2210.   OTHERWISE NOP
  2211.  END /* SELECT */
  2212.  
  2213.  ADDRESS 'FRESHBAR_REXX.1'
  2214.  SETCURRENT WinHandle1 BarHandle2 c
  2215. END
  2216.  
  2217. IF k>=Files.count THEN
  2218. DO
  2219.  ADDRESS 'FRESHBAR_REXX.1'
  2220.  SETCURRENT WinHandle1 BarHandle2 100
  2221. END
  2222.  
  2223. DoneOnce=1
  2224. deleted=1
  2225.  
  2226. CALL EndLoop
  2227. RETURN 1
  2228.  
  2229. /* ----------------------------- */
  2230. ManageCopying:
  2231.  
  2232. IF EXISTS(Target) & DoNotReplaceFile=1 THEN RETURN
  2233.  
  2234. Target_Path=''
  2235. IF POS('[',ActualFile)>0 | POS(']',ActualFile)>0 | POS('{',ActualFile)>0 | POS('}',ActualFile)>0 | POS('#',ActualFile)>0 THEN
  2236. DO
  2237.  IF IsDir(ActualFile)=1 THEN
  2238.  DO
  2239.   IF ~(cpy=cpy_all) THEN CALL ShowMessage('FileManager.9',,,,AppName,ActualFile)
  2240.   ADDRESS COMMAND 'echo >>'ErrLog' "Copying failed, special characters in filename:*n'ActualFile'*n"'
  2241.   RETURN
  2242.  END
  2243.  ELSE Target_Path=ExtractPath(Target)
  2244. END
  2245.  
  2246. delAfterCopyPrev=delAfterCopy
  2247.  
  2248. IF ~(cpy=cpy_all) THEN CALL CheckExist
  2249. IF cpy=cpy_stop | cpy=cpy_no | cpy=cpy_none THEN RETURN
  2250.  
  2251. TimeStamp=GetTime()
  2252. CALL ExecuteCopying
  2253.  
  2254. IF jump=1 THEN
  2255. DO
  2256.   jump=0
  2257.   delAfterCopy=delAfterCopyPrev
  2258.   RETURN
  2259. END
  2260.  
  2261. IF (CopyRelatedFiles) THEN
  2262. DO
  2263.   IF EXISTS(ActualFile'.info') THEN
  2264.   DO
  2265.     ActualFile=ActualFile'.info'
  2266.     Target=Target'.info'
  2267.  
  2268.     IF ~(cpy=cpy_all) THEN CALL CheckExist
  2269.     IF cpy=cpy_stop | cpy=cpy_no THEN RETURN
  2270.     CALL ExecuteCopying
  2271.   END
  2272.  
  2273.   IF EXISTS(ActualFile'.font') THEN
  2274.   DO
  2275.     ActualFile=ActualFile'.font'
  2276.     Target=Target'.font'
  2277.  
  2278.     IF ~(cpy=cpy_all) THEN CALL CheckExist
  2279.     IF cpy=cpy_stop | cpy=cpy_no THEN RETURN
  2280.     CALL ExecuteCopying
  2281.   END
  2282.   ELSE IF UPPER(RIGHT(ActualFile,5))='.FONT' THEN
  2283.   DO
  2284.    FontDir=LEFT(ActualFile,LENGTH(ActualFile)-5)
  2285.    IF EXISTS(FontDir) THEN
  2286.    DO
  2287.      Target=LEFT(Target,LENGTH(Target)-5)
  2288.      ActualFile=FontDir
  2289.  
  2290.      IF ~(cpy=cpy_all) THEN CALL CheckExist
  2291.      IF cpy=cpy_stop | cpy=cpy_no THEN RETURN
  2292.      CALL ExecuteCopying
  2293.    END
  2294.   END
  2295. END
  2296.  
  2297. delAfterCopy=delAfterCopyPrev
  2298. DoneOnce=1
  2299. RETURN
  2300.  
  2301. /* ----------------------------- */
  2302. ExecuteCopying:
  2303.  
  2304. aFile=ConvSpecial(ActualFile)
  2305. bFile=ConvSpecial(Target)
  2306. IF ~(Target_Path='') THEN bFile=Target_Path
  2307.  
  2308. CALL CalculateRest
  2309.  
  2310. r=writeln(Con,"7H"k" / "Files.count"0H0H"Rest"HH"ActualFile"0H9H9H"Target"0H")
  2311.  
  2312. ADDRESS 'FRESHBAR_REXX.1'
  2313. SETCURRENT WinHandle1 BarHandle1 k
  2314.  
  2315. TargetIconExists=0
  2316. IF UPPER(RIGHT(Target,5))='.INFO' THEN
  2317. DO
  2318.   TargetIconExists=1
  2319.   TargetFileName=LEFT(Target,LENGTH(Target)-5) /* needed below */
  2320.  
  2321.   IF cpy=cpy_yesbak THEN ADDRESS COMMAND iconcopy' "'TargetFileName''infoSfx'" "'TargetFileName''TimeStamp''infoSfx'" 'iconcopyOpts
  2322.  
  2323.   ADDRESS COMMAND
  2324.   'delete >NIL: "'bFile'" FORCE QUIET'
  2325.   iconcopy' "'LEFT(aFile,LENGTH(aFile)-5)''infoSfx'" "'TargetFileName''infoSfx'" 'iconcopyOpts
  2326. END
  2327. ELSE
  2328. DO
  2329.   IF cpy=cpy_yesbak THEN ADDRESS COMMAND 'copy "'bFile'" "'bFile''TimeStamp'" CLONE 'COPYALL' QUIET'
  2330.  
  2331.   ADDRESS COMMAND 'copy "'aFile'" "'bFile'" CLONE 'COPYALL' QUIET'
  2332.   rCode=RC
  2333. END
  2334.  
  2335. jump=0
  2336.  
  2337. SELECT
  2338.   WHEN rCode=5 THEN
  2339.   DO
  2340.     IF ~(cpy=cpy_all) THEN Action=ShowMessage('FileManager.7',,,,AppName,Target)
  2341.     ELSE Action=1
  2342.  
  2343.     IF Action=1 THEN
  2344.     DO
  2345.        ADDRESS COMMAND
  2346.        'delete >NIL: "'bFile'" FORCE QUIET'
  2347.        'copy "'aFile'" "'bFile'" CLONE 'COPYALL' QUIET'
  2348.  
  2349.        rCode=RC
  2350.     END
  2351.     ELSE
  2352.     DO
  2353.        ADDRESS COMMAND 'echo >>'ErrLog' "Not replaced, destination writeprotected:*n'ActualFile'*n"'
  2354.        delAfterCopy=0  /* avoid IconKill */
  2355.     END
  2356.   END
  2357.  
  2358.   WHEN rCode=10 THEN
  2359.   DO
  2360.     j=0 
  2361.     DO i=1 to Files.count
  2362.        IF i=k THEN i=i+1 /* continue with next file */
  2363.        ELSE
  2364.        DO
  2365.         j=j+1
  2366.         Files.j=Files.i
  2367.         FileName.j=FileName.i
  2368.         Path.j=Path.i
  2369.         Prefix.j=Prefix.i
  2370.         Suffix.j=Suffix.i
  2371.        END
  2372.     END
  2373.  
  2374.     Files.count=Files.count-1
  2375.     SourceCount=SourceCount-1
  2376.     NominalCount=NominalCount-1
  2377.  
  2378.     ADDRESS COMMAND 'echo >>'ErrLog' "Copying failed, special characters in filename, or destination full:*n'ActualFile'*n"'
  2379.     IF ~(cpy=cpy_all) THEN CALL ShowMessage('FileManager.6',,,,AppName,ActualFile,rCode,Target)
  2380.  
  2381.     jump=1
  2382.   END
  2383.  
  2384.   WHEN delAfterCopy=1 THEN
  2385.   DO
  2386.    IF IsDir(ActualFile)=1 THEN ADDRESS COMMAND 'delete >NIL: "'aFile'" ALL QUIET'
  2387.    SELECT
  2388.     WHEN TargetIconExists=0 & ~EXISTS(Actualfile'.info') THEN ADDRESS COMMAND 'EASys!_bin:IconKill "'aFile'"'
  2389.     WHEN TargetIconExists & EXISTS(TargetFileName) THEN ADDRESS COMMAND 'EASys!_bin:IconKill "'aFile'"'
  2390.     OTHERWISE NOP
  2391.    END
  2392.   END
  2393.  
  2394.   OTHERWISE NOP
  2395. END
  2396.  
  2397. ADDRESS 'FRESHBAR_REXX.1'
  2398. SETCURRENT WinHandle1 BarHandle2 c
  2399.  
  2400. RETURN
  2401.  
  2402. /* ----------------------------- */
  2403. CheckExist:
  2404.  
  2405. cpy=cpy_yes /* Preset */
  2406.  
  2407. IF EXISTS(Target) & IsDir(Target)=0 THEN
  2408. DO
  2409.  IF DoNotReplaceFile=0 THEN
  2410.  DO
  2411.   str_AttrSource=GetFileAttributes(ActualFile)
  2412.   str_AttrDest=GetFileAttributes(Target)
  2413.   IF str_AttrDest='DOESNOTEXIST' THEN RETURN /* File exists in other Assign Directory but is not really here */
  2414.  
  2415.   CALL CalculateRest
  2416.  
  2417.   IF Files.count>1 | Source_is_Dir=1 THEN
  2418.    MsgOffset=3
  2419.   ELSE
  2420.    MsgOffset=0
  2421.  
  2422.   MsgNr=2
  2423.   SELECT
  2424.    WHEN Rest>1 THEN MsgNr=2+MsgOffset
  2425.    WHEN Rest=1 THEN MsgNr=3+MsgOffset
  2426.    WHEN Rest=0 THEN MsgNr=4+MsgOffset
  2427.    OTHERWISE
  2428.    DO
  2429.      Rest=0
  2430.      MsgNr=4+MsgOffset
  2431.    END
  2432.   END
  2433.  
  2434.   cpy=ShowMessage('File_Copy.'MsgNr,,,,str_AttrDest,str_AttrSource,Rest,k,Files.count,AppName)
  2435.   IF cpy=cpy_none THEN DoNotReplaceFile=1
  2436.  END
  2437.  ELSE cpy=cpy_no
  2438. END
  2439. RETURN
  2440.  
  2441. /* ----------------------------- */
  2442. GetFileAttributes:
  2443. PARSE ARG CheckedFile
  2444.  
  2445. BytesTemp='T:FM_Bytes'ProcessNumber
  2446. AttrFile='T:FM_Attr_'ProcessNumber
  2447. DirChecked=0
  2448.  
  2449. aFile=ConvSpecial(CheckedFile)
  2450.  
  2451. IF IsDir(CheckedFile)=1 THEN
  2452. DO
  2453.   DirChecked=1
  2454.   ADDRESS COMMAND 'list >'AttrFile' "'aFile'" FILES LFORMAT "    'CheckedFile'*n    DIRECTORY*n*n    %d   %t*n    %c"'
  2455. END
  2456. ELSE
  2457. DO
  2458.   ADDRESS COMMAND 'list >'BytesTemp' "'aFile'" LFORMAT "%l"'
  2459.  
  2460.   IF RC>0 THEN RETURN "DOESNOTEXIST"
  2461.  
  2462.   IF ~Open(fTMP,BytesTemp,'read') THEN CALL Err_ShowMessage(msg_no_r''BytesTemp)
  2463.   ELSE
  2464.   DO
  2465.     Bytes=VALUE(ReadLn(fTMP))
  2466.     StrBytes=Bytes' Bytes'
  2467.     r=Close(fTMP)
  2468.   END
  2469.  
  2470.   ADDRESS COMMAND
  2471.   'delete >NIL: 'BytesTemp' QUIET'
  2472.   'list >'AttrFile' "'aFile'" LFORMAT "    %n*n    %p*n    'StrBytes'*n    %d   %t*n    %c"'
  2473. END
  2474.  
  2475. IF DirChecked=0 THEN
  2476. DO
  2477.   IsExecutable=CheckExecutable(CheckedFile)
  2478.  
  2479.   Ver=???
  2480.   VerName=''
  2481.   VerTmp='FMver_'ProcessNumber
  2482.   sz_version=''
  2483.  
  2484.   IF Bytes<850000 & (IsExecutable | UPPER(RIGHT(CheckedFile,8))='.CATALOG') THEN
  2485.   DO
  2486.    ADDRESS COMMAND 'version >ENV:'VerTmp' "'aFile'"'
  2487.    IF RC<20 THEN
  2488.    DO
  2489.     transfrom='a0'x || ''
  2490.     transto='  '
  2491.     Version=Translate(MyGetENV(VerTmp),transto,transfrom,' ')
  2492.     VerName=Word(Version,1)
  2493.     IF ~((LEFT(Version, 14)="Could not find") | Words(Version)<2) THEN
  2494.     DO
  2495.       transfrom='AaßbBcCdDeEfFgGhH¹²³,_iIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ;::/+-~#"&$%§[]{}=>|<!?@ '
  2496.       transto=  '11222334455667788123.'
  2497.       VersionNr=STRIP(Translate(Word(Version,2),transto,transfrom,' '),'B',' ')
  2498.       IF POS(' ',VersionNr)=0 THEN Ver=Value(STRIP(VersionNr,'T','.'))
  2499.     END
  2500.    END
  2501.    ADDRESS COMMAND 'delete >NIL: ENV:'VerTmp' QUIET'
  2502.   END
  2503.  
  2504.   IF (IsExecutable) THEN sz_Version='    Version:       'VerName Ver
  2505. END
  2506.  
  2507. IF ~Open(fTMP,AttrFile,'read') THEN CALL Err_ShowMessage(msg_no_r''AttrFile)
  2508. ELSE
  2509. DO
  2510.   str_Attr=ReadLn(fTMP)
  2511.   IF LENGTH(str_attr)>0 THEN
  2512.   DO
  2513.    str_Attr=str_Attr''CR''ReadLn(fTMP)
  2514.    str_Attr=str_Attr''CR''LEFT(ReadLn(fTMP), 85)
  2515.    str_Attr=str_Attr''CR''ReadLn(fTMP)
  2516.    str_Attr=str_Attr''CR''LEFT(ReadLn(fTMP), 85)
  2517.    IF DirChecked=0 THEN str_Attr=str_Attr''CR''LEFT(sz_Version, 80)
  2518.   END
  2519.   ELSE SELECT
  2520.     WHEN DirChecked=1 THEN str_Attr='    DIRECTORY'CR'    'CheckedFile
  2521.     OTHERWISE str_Attr='    FILE'CR'    'CheckedFile
  2522.   END
  2523.  
  2524.   r=Close(fTMP)
  2525. END
  2526.  
  2527. ADDRESS COMMAND 'delete >NIL: 'AttrFile' QUIET'
  2528. RETURN str_Attr
  2529.  
  2530. /*-----------------------------*/
  2531. CalculateRest:
  2532.  
  2533. IF Source_is_Dir=1 & SourceCount>0 THEN
  2534.   Rest=NominalCount-SubCount
  2535. ELSE
  2536.   Rest=NominalCount-k
  2537.  
  2538. c=100-ABS(Rest*100 % NominalCount)
  2539. RETURN
  2540.  
  2541. /* ----------------------------- */
  2542. ErrHandler:
  2543.  
  2544. IF EXISTS(ErrLog) THEN
  2545. DO
  2546.   ADDRESS COMMAND
  2547.   '${RefTable/Text-ViewASCII} 'ErrLog
  2548.   'delete >NIL: 'ErrLog' QUIET'
  2549. END
  2550. RETURN
  2551.  
  2552. /*-----------------------------*/
  2553. CheckExecutable:
  2554. PARSE ARG CheckExeFile
  2555.  
  2556. Flag=0
  2557.  
  2558. IF ~Open(fTMP,CheckExeFile,'read') THEN CALL Err_ShowMessage(msg_no_r''CheckExeFile)
  2559. ELSE
  2560. DO
  2561.  Head=ReadCh(fTMP, 4)
  2562.  HeaderBytes=c2x(Head)
  2563.  r=Close(fTMP)
  2564. END
  2565.  
  2566. IF HeaderBytes='000003F3' THEN Flag=1    /* Executable */
  2567.  
  2568. RETURN Flag
  2569.  
  2570. /* ----------------------------- */
  2571. CheckSource:
  2572.  
  2573. Source_is_Dir=0   /* Preset */
  2574. SourceCount=Files.count - k
  2575. SubCount=0
  2576.  
  2577. IF ~(IsDir(Files.k)=1) THEN
  2578. DO
  2579.   NominalCount=Files.count
  2580.   RETURN
  2581. END
  2582. ELSE
  2583. DO
  2584.   Source_is_Dir=1
  2585.  
  2586.   aFile=ConvSpecial(Files.k)
  2587.  
  2588.   ADDRESS COMMAND
  2589.   'list "'aFile'" >'CheckSourceDirs' ALL DIRS LFORMAT="%p%s"'
  2590.   'list "'aFile'" >'CheckSourceFile' ALL FILES LFORMAT="%p*n%s"'
  2591.  
  2592.   SourceCount=1
  2593.   IF ~Open(fTMP,CheckSourceFile,'read') THEN CALL Err_ShowMessage(msg_no_r''CheckSourceFile)
  2594.   ELSE
  2595.   DO
  2596.     DO UNTIL (EOF(fTMP))
  2597.       SourceDirs.SourceCount=ReadLn(fTMP)
  2598.       SourceFiles.SourceCount=ReadLn(fTMP)
  2599.       SourceCount=SourceCount + 1
  2600.     END
  2601.  
  2602.     SourceCount=SourceCount - 2  /* 2 Lines Overhead in each "list" File */
  2603.  
  2604.     r=Close(fTMP)
  2605.     ADDRESS COMMAND 'delete >NIL: 'CheckSourceFile' QUIET'
  2606.   END
  2607.   NominalCount=SourceCount
  2608.  
  2609.   IF ~Open(fTMP,CheckSourceDirs,'read') THEN CALL Err_ShowMessage(msg_no_r''CheckSourceDirs)
  2610.   ELSE
  2611.   DO
  2612.     DirCount=1
  2613.     DO UNTIL (EOF(fTMP))
  2614.       SourceDir.DirCount=ReadLn(fTMP)
  2615.       DirCount=DirCount + 1
  2616.     END
  2617.  
  2618.     DirCount=DirCount - 2  /* 2 Lines Overhead in each "list" File */
  2619.     r=Close(fTMP)
  2620.  
  2621.     ADDRESS COMMAND 'delete >NIL: 'CheckSourceDirs' QUIET'
  2622.   END
  2623. END
  2624. RETURN
  2625.  
  2626. /* ------------------------- */
  2627. IsDir:     PROCEDURE
  2628. PARSE ARG name
  2629.  
  2630. r=PRAGMA('DIRECTORY',name)
  2631. IF ~(r='') THEN
  2632.    DirFlag=1
  2633. ELSE
  2634. DO
  2635.  IF ~Exists(name) THEN
  2636.    DirFlag=-1
  2637.  ELSE
  2638.    DirFlag=0
  2639. END
  2640.  
  2641. r=PRAGMA('DIRECTORY','T:')
  2642. RETURN DirFlag
  2643.  
  2644. /* ----------------------------- */
  2645. RequestDest:
  2646. PARSE ARG Mesg,Mode
  2647.  
  2648. IF LENGTH(FileName.k)>18 THEN Parameter2=LEFT(FileName.k,18)'..'
  2649. ELSE Parameter2=FileName.k
  2650.  
  2651. IF Files.count>1 THEN Parameter2=Parameter2', ...'
  2652.  
  2653. ActualPathDest=TestPath(ActualPathDest)
  2654. Chosen=ShowMessage(Mesg,ActualPathDest,FileName.k,,AppName,Parameter2)
  2655.  
  2656. IF Mode='getpath' THEN
  2657. DO
  2658.  DestDir=Chosen
  2659.  IF DestDir='' THEN RETURN
  2660. END
  2661. ELSE
  2662. DO
  2663.  DestFile=Chosen
  2664.  IF DestFile='' THEN RETURN
  2665.  
  2666.  DevicePos=LastPos(':',DestFile)
  2667.  DirPos=LastPos('/',DestFile)
  2668.  IF DirPos>0 THEN
  2669.     DestDir=LEFT(DestFile,DirPos)
  2670.  ELSE
  2671.     DestDir=LEFT(DestFile,DevicePos)
  2672. END
  2673.  
  2674. ActualPathDest=DestDir
  2675.  
  2676. ADDRESS COMMAND
  2677. 'SetEnv Flags/ActualPathDest "'DestDir'"'
  2678. 'SetEnv Flags/ActualPath "'Path.1'"'
  2679.  
  2680. CALL SaveFlags
  2681. RETURN
  2682.  
  2683. /* ------------------------- */
  2684. ShowMessage:
  2685. PARSE ARG Mesg,ReqPath,ReqFile,PresetString,Parameter1,Parameter2,Parameter3,Parameter4,Parameter5,Parameter6
  2686.  
  2687. drop Action
  2688. ReqType=''
  2689.  
  2690. MsgFile='EASys!_rexx:'Language'/'Mesg
  2691. IF ~Open(fTMP,MsgFile,'read') THEN CALL Err_ShowMessage(msg_no_r''MsgFile)
  2692. ELSE
  2693. DO
  2694.   ReqType=ReadLn(fTMP)  /* read Requester-Type */
  2695.  
  2696.   Line=ReadLn(fTMP)  /* read Title-Line */
  2697.   CALL Substitutions
  2698.   ReqTitle=Line
  2699.  
  2700.   Line=ReadLn(fTMP)  /* free line after Title */
  2701.  
  2702.   Message=''
  2703.  
  2704.   DO UNTIL EOF(fTMP)
  2705.  
  2706.     Line=ReadLn(fTMP)
  2707.     CALL Substitutions
  2708.  
  2709.     IF POS(">>>", Line) > 0 THEN
  2710.     DO
  2711.       rtBtns=STRIP(Line, 'L', '>')
  2712.       LEAVE
  2713.     END
  2714.     ELSE
  2715.         Message=Message''CR''Line
  2716.   END
  2717.  
  2718.   r=Close(fTMP)
  2719. END
  2720.  
  2721. uReqType=UPPER(ReqType)
  2722. pubname=getpubscreen()
  2723. IF ~(pubname='') THEN r=setpubscreen(pubname' Default')
  2724.  
  2725. SELECT
  2726.  WHEN (uReqType='MULTI REQUEST') THEN
  2727.  DO
  2728.   r=rtezrequest(Message,rtBtns,ReqTitle,PosTags)
  2729.   RETURN r
  2730.  END
  2731.  
  2732.  WHEN (uReqType='GET ONE FILE') THEN
  2733.  DO
  2734.   r=rtfilerequest(ReqPath,ReqFile,ReqTitle,rtBtns,ONEFILE_TAG, Files)
  2735.   RETURN r
  2736.  END
  2737.  
  2738.  WHEN (uReqType='GETFILES') THEN
  2739.  DO
  2740.   r=rtfilerequest(ReqPath,ReqFile,ReqTitle,rtBtns, FILE_TAGS, Files)
  2741.   RETURN r
  2742.  END
  2743.  
  2744.  WHEN (uReqType='GETPATH') THEN
  2745.  DO
  2746.   r=rtfilerequest(ReqPath,,ReqTitle,rtBtns, DIR_TAGS)
  2747.   RETURN r
  2748.  END
  2749.  
  2750.  WHEN (uReqType='GETSTRING') THEN
  2751.  DO
  2752.   r=rtgetstring(PresetString,Message,ReqTitle,rtBtns,GStags,Action)
  2753.   RETURN r
  2754.  END
  2755.  
  2756.  WHEN (uReqType='GETSTRING SIMPLE') THEN
  2757.  DO
  2758.   r=rtgetstring(PresetString,Message,ReqTitle,,GStags,Action)
  2759.   RETURN r
  2760.  END
  2761.  
  2762.  WHEN (uReqType='CONSOLE') THEN
  2763.  DO
  2764.   ShowConsole=ConsoleType''ReqLE'/'ReqTE'/'ConW'/'ConH'/'ReqTitle'/NOCLOSE'
  2765.   IF ~Open(Con,ShowConsole,'write') THEN CALL Err_ShowMessage(msg_no_wr''ShowConsole)
  2766.   ELSE ConStat=1
  2767.  
  2768.   r=WriteLn(Con,Message)
  2769.   RETURN 1
  2770.  END
  2771.  
  2772.  OTHERWISE CALL Err_ShowMessage('ReqType unknown: 'MsgFile)  /* Error if arrived here */
  2773. END /* SELECT */
  2774.  
  2775. RETURN
  2776.  
  2777. /* ------------------------- */
  2778. Substitutions:
  2779.  
  2780. IF POS("%1", Line) > 0 THEN             /* substitution parameters for each message */
  2781. DO UNTIL POS("%1", Line)=0            /* and per line */
  2782.    parse var Line part1 '%1' part2
  2783.    Line=part1''parameter1''part2
  2784. END
  2785.  
  2786. IF POS("%2", Line) > 0 THEN
  2787. DO UNTIL POS("%2", Line)=0
  2788.    parse var Line part1 '%2' part2
  2789.    Line=part1''parameter2''part2
  2790. END
  2791.  
  2792. IF POS("%3", Line) > 0 THEN
  2793. DO UNTIL POS("%3", Line)=0
  2794.    parse var Line part1 '%3' part2
  2795.    Line=part1''parameter3''part2
  2796. END
  2797.  
  2798. IF POS("%4", Line) > 0 THEN
  2799. DO UNTIL POS("%4", Line)=0
  2800.    parse var Line part1 '%4' part2
  2801.    Line=part1''parameter4''part2
  2802. END
  2803.  
  2804. IF POS("%5", Line) > 0 THEN
  2805. DO UNTIL POS("%5", Line)=0
  2806.    parse var Line part1 '%5' part2
  2807.    Line=part1''parameter5''part2
  2808. END
  2809.  
  2810. IF POS("%6", Line) > 0 THEN
  2811. DO UNTIL POS("%6", Line)=0
  2812.    parse var Line part1 '%6' part2
  2813.    Line=part1''parameter6''part2
  2814. END
  2815.  
  2816. RETURN
  2817.  
  2818. /* ------------------------- */
  2819. Err_ShowMessage:
  2820. PARSE ARG Msg
  2821.  
  2822. Message=AppName':' CR CR "Sorry, an error has occured:" CR CR "    "Msg CR CR "... exiting."
  2823. rtBtns='Oh no!'
  2824. r=rtezrequest(Message,rtBtns,ReqTitle,PosTags)
  2825. CALL ExitMe
  2826.  
  2827. RETURN
  2828.  
  2829. /* ------------------------- */
  2830. CloseCon:
  2831. PARSE ARG wait
  2832.  
  2833. IF ConStat=1 THEN
  2834. DO
  2835.  CALL DELAY(wait)
  2836.  r=Close(Con)
  2837.  ConStat=0
  2838. END
  2839. RETURN
  2840.  
  2841. /* ----------------------------- */
  2842. CreateBarWin:
  2843. PARSE ARG wTitle,wLeft,wTop,wWidth,btn,Bar1Title,Bar1Count,Bar1BG,Bar1Fill,Bar1Mode,Bar2Title,Bar2Count,Bar2BG,Bar2Fill,Bar2Mode
  2844.  
  2845. IF Barwin=1 THEN RETURN
  2846.  
  2847. ADDRESS 'FRESHBAR_REXX.1'
  2848. 'CREATEBARWINDOW TITLE "'wTitle'" BUTTONTEXT "'btn'"'
  2849. WinHandle1=RESULT
  2850. SETBARWINDOWWIDTH WinHandle1 wWidth
  2851.  
  2852. /* bars */
  2853. IF ~(Bar1Title='BAR1TITLE' | Bar1Title='') THEN
  2854. DO
  2855.  ADDBAR WinHandle1 Bar1Count NAME Bar1Title
  2856.  BarHandle1=RESULT
  2857.  SETBACKPEN WinHandle1 BarHandle1 Bar1BG
  2858.  SETFILLPEN WinHandle1 BarHandle1 Bar1Fill
  2859.  SETPROGRESSMODE WinHandle1 BarHandle1 Bar1Mode
  2860. END
  2861.  
  2862. IF ~(Bar2Title='BAR2TITLE' | Bar2Title='') THEN
  2863. DO
  2864.  ADDBAR WinHandle1 Bar2Count NAME Bar2Title
  2865.  BarHandle2=RESULT
  2866.  SETBACKPEN WinHandle1 BarHandle2 Bar2BG
  2867.  SETFILLPEN WinHandle1 BarHandle2 Bar2Fill
  2868.  SETPROGRESSMODE WinHandle1 BarHandle2 Bar2Mode
  2869. END
  2870.  
  2871. /* Now open the window */
  2872. OPENBARWINDOW WinHandle1
  2873. SETBARWINDOWPOS WinHandle1 wLeft wTop
  2874. Barwin=1
  2875. RETURN
  2876.  
  2877. /* ------------------------- */
  2878. CloseBarWin:
  2879.  
  2880. ADDRESS "FRESHBAR_REXX.1"
  2881. DELETEBARWINDOW WinHandle1
  2882. Barwin=0
  2883. RETURN
  2884.  
  2885. /* ---------------------- */
  2886. MyGetENV:     PROCEDURE
  2887. PARSE ARG name
  2888.  
  2889. TheFile="ENV:" || name
  2890. IF (open(TEMPFILE, TheFile, 'read')) THEN
  2891. DO
  2892.  ENVvalue=READLN(TEMPFILE)
  2893.  Result=close(TEMPFILE)
  2894. END
  2895. ELSE
  2896.  ENVvalue=''
  2897.  
  2898. RETURN ENVvalue
  2899.  
  2900. /* ------------------------- */
  2901. ExtractPath:
  2902. PARSE ARG File
  2903.  
  2904. LengF=LENGTH(File)
  2905. DevicePos=LASTPOS(':',File)
  2906. DirPos=LASTPOS('/',File)
  2907.  
  2908. IF DirPos>1 THEN
  2909. DO
  2910.   PrognameBegPos=DirPos
  2911.   P_Dir=LEFT(File, DirPos)
  2912.   P=strip(P_Dir, T, '/')
  2913. END
  2914. ELSE
  2915. DO
  2916.   PrognameBegPos=DevicePos
  2917.   P=LEFT(File, DevicePos)
  2918.   P_Dir.i=P
  2919. END
  2920.  
  2921. RETURN P
  2922.  
  2923. /* ---------------------- */
  2924. TestPath:
  2925. PARSE ARG tstpath
  2926.  
  2927. Drive=LEFT(tstpath,POS(':',tstpath))
  2928. ADDRESS COMMAND 'assign >NIL: "'ConvSpecial(Drive)'" EXISTS'
  2929.  
  2930. IF RC>0 | tstPath='' THEN tstPath="SYS:"
  2931. ELSE IF ~EXISTS(tstPath) THEN tstPath="SYS:"
  2932.  
  2933. RETURN tstpath
  2934.  
  2935. /* ------------------------- */
  2936. ConvSpecial:
  2937. PARSE ARG File
  2938.  
  2939. posi=POS('~',File)
  2940. IF posi>0 THEN File=INSERT("'",File,posi-1)
  2941.  
  2942. posi=POS('(',File)
  2943. IF posi>0 THEN File=INSERT("'",File,posi-1)
  2944.  
  2945. posi=POS(')',File)
  2946. IF posi>0 THEN File=INSERT("'",File,posi-1)
  2947.  
  2948. posi=POS('[',File)
  2949. IF posi>0 THEN File=INSERT("'",File,posi-1)
  2950.  
  2951. posi=POS(']',File)
  2952. IF posi>0 THEN File=INSERT("'",File,posi-1)
  2953.  
  2954. posi=POS('{',File)
  2955. IF posi>0 THEN File=INSERT("'",File,posi-1)
  2956.  
  2957. posi=POS('}',File)
  2958. IF posi>0 THEN File=INSERT("'",File,posi-1)
  2959.  
  2960. posi=POS('#',File)
  2961. IF posi>0 THEN File=INSERT("'",File,posi-1)
  2962.  
  2963. posi=POS('?',File)
  2964. IF posi>0 THEN File=INSERT("'",File,posi-1)
  2965.  
  2966. RETURN File
  2967.  
  2968. /* ---------------------- */
  2969. WriteFileList:
  2970. PARSE ARG listname
  2971.  
  2972. IF ~Open(fTMP,listname,'write') THEN CALL Err_ShowMessage(msg_no_wr''listname)
  2973. ELSE
  2974. DO
  2975.   DO k=1 to Files.count
  2976.     r=WriteLn(fTMP,Files.k)
  2977.     r=WriteLn(fTMP,Path.k)
  2978.     r=WriteLn(fTMP,FileName.k)
  2979.     r=WriteLn(fTMP,Prefix.k)
  2980.     r=WriteLn(fTMP,Suffix.k)
  2981.   END
  2982.  
  2983.   r=Close(fTMP)
  2984. END
  2985. RETURN
  2986.  
  2987. /* ---------------------- */
  2988. ReadFileList:
  2989. PARSE ARG list
  2990. i=0
  2991.  
  2992. IF ~Open(TMP,list,'read') THEN CALL ExitMe
  2993. DO UNTIL EOF(TMP)
  2994.  i=i+1
  2995.  Files.i=READLN(TMP)
  2996.  Path.i=READLN(TMP)
  2997.  FileName.i=READLN(TMP)
  2998.  Prefix.i=READLN(TMP)
  2999.  Suffix.i=READLN(TMP)
  3000. END
  3001.  
  3002. Result=Close(TMP)
  3003.  
  3004. n=i-1
  3005. Files.count=n
  3006. Path=Path.n
  3007.  
  3008. RETURN
  3009.  
  3010. /* ---------------------- */
  3011. Help:
  3012. ADDRESS COMMAND '${RefTable/Text-ViewGuide} EASys!:Help/'Language'/EASys!_FM.guide'
  3013. RETURN
  3014.  
  3015. /* ---------------------- */
  3016. PlaySample:
  3017. PARSE ARG Sample
  3018.  
  3019. IF TalkToUser="0" THEN RETURN
  3020.  
  3021. IF EXISTS('ENV:ProcessTalk') THEN
  3022. DO
  3023.   ProcessTalk=Strip(SubWord(MyGetENV("ProcessTalk"),2), T, ']')
  3024.  
  3025.   ADDRESS COMMAND 'status >ENV:VoiceSTATUS PROCESS 'ProcessTalk
  3026.   VStatus=MyGetENV('VoiceSTATUS')
  3027.  
  3028.   IF POS(Play_Voice_Cmd,VStatus)>0 THEN ADDRESS COMMAND 'break' ProcessTalk 'c'
  3029. END
  3030.  
  3031. ADDRESS COMMAND Play_Voice Sample
  3032.  
  3033. RETURN
  3034.  
  3035. /*-----------------------*/
  3036. GetTime:   PROCEDURE
  3037.  
  3038. today=Date(n)
  3039. date=Date(s)
  3040. yy=LEFT(date,4)
  3041. mmdd=RIGHT(date,4)
  3042. mm=LEFT(mmdd,2)
  3043. dd=RIGHT(mmdd,2)
  3044.  
  3045. time=RIGHT(Time(n),8)
  3046. MinSec=Right(time,5)
  3047. Hrs=Left(time,2)
  3048. Mins=Left(MinSec,2)
  3049. Secs=Right(time,2)
  3050.  
  3051. time_hhmmss=Hrs''Mins''Secs
  3052. TimeStamp=RIGHT(yy,2)''mmdd''Hrs''Mins
  3053. RETURN TimeStamp
  3054.  
  3055. /* ---------------------- */
  3056. Init:
  3057.  
  3058. CR='0a'x
  3059.  
  3060. Language=GetClip('Language')
  3061. IF ~EXISTS('EASys!_rexx:'Language'/FileManager.1') THEN Language='english'
  3062.  
  3063. ProcessNumber=PRAGMA('ID')
  3064.  
  3065. MaxTitleChars=MyGetENV("RefTable/GUI-ShellTitleChars")
  3066.  
  3067. ConsoleType=MyGetENV('RefTable/GUI-ConsoleType')
  3068. IF ConsoleType='' THEN ConsoleType="CON:"
  3069.  
  3070. ConsoleSize=MyGetENV('SHELLsize')
  3071. IF ConsoleSize='' THEN ConsoleSize="40/50/600/200"
  3072.  
  3073. ReqLE=MyGetENV('RefTable/GUI-ReqLE')  /* Main Window */
  3074. ReqTE=MyGetENV('RefTable/GUI-ReqTE')
  3075. ReqHeight=MyGetENV("RefTable/GUI-ReqHeight")
  3076.  
  3077. ConW=520
  3078. ConH=210
  3079.  
  3080. BarWinW=250
  3081. BarWinL=ReqLE+ConW-BarWinW
  3082. BarWinT=ReqTE
  3083.  
  3084. PosTags="rt_reqpos=reqpos_topleftscr rt_leftoffset=" ReqLE " rt_topoffset=" ReqTE
  3085. EZtags=PosTags
  3086. GLtags=PosTags' rtgl_min=0 rtgl_max=1500 rtgl_backfill=true '
  3087. GStags=PosTags' rtgs_backfill=false rtgs_width=300'
  3088.  
  3089. POINTER_TAGS='rt_reqpos=reqpos_pointer'
  3090. DIR_TAGS=PosTags' rtfi_flags=freqf_nofiles|freqf_save rtfi_height='ReqHeight
  3091. FILE_TAGS=PosTags' rtfi_flags=freqf_multiselect|freqf_selectdirs rtfi_height='ReqHeight
  3092. ONEFILE_TAG=PosTags' rtfi_height='ReqHeight
  3093.  
  3094. Console='>"'ConsoleType''ConsoleSize'/'AppName' Messages.../AUTO/NOClose/ALT'ReqLE'/'ReqTE'/ConW/ConH"'
  3095.  
  3096. ConStat=0
  3097. msg_no_wr='Writing impossible: '
  3098. msg_no_r='Reading impossible: '
  3099.  
  3100. /* OS 3.5 WB Port */
  3101. IF SHOW('P','WORKBENCH') THEN
  3102. DO
  3103.  WB_port=1
  3104.  iconcopy='EASys!_bin:IconCopy'
  3105.  iconcopyOpts=''
  3106.  InfoSfx=''
  3107. END
  3108. ELSE
  3109. DO
  3110.  iconcopy='EASys!_bin:IconCopy'
  3111.  iconcopyOpts=''
  3112.  infoSfx=''
  3113. END
  3114.  
  3115.  
  3116. /* --------- pathes -------- */
  3117. r=PRAGMA('DIRECTORY', 'T:')
  3118. TempPath='FM_path_'ProcessNumber
  3119.  
  3120. CALL GetActualPath
  3121.  
  3122. CheckSourceFile='T:FM_FileList_'ProcessNumber
  3123. CheckSourceDirs='T:FM_DirsList_'ProcessNumber
  3124. FileList='T:FM_FileList_'ProcessNumber
  3125. ErrLog='T:FM_'ProcessNumber'_ErrorLog'
  3126.  
  3127. ADDRESS COMMAND 'EASys!_bin:CLIexchange >ENV:GT_info GlobalTrash INFO'
  3128.  
  3129. IF LEFT(MyGetENV('GT_info'),11)='GlobalTrash' THEN
  3130.   GlobalTrash_active=1
  3131. ELSE
  3132.   GlobalTrash_active=0
  3133.  
  3134. IF ~SHOW('P','FRESHBAR_REXX.1') THEN ADDRESS COMMAND 'run >NIL: SYS:RexxC/freshbar'
  3135.  
  3136. COPYALL=''
  3137.  
  3138. /* File_Copy.x Buttonbank */
  3139. cpy_yes=1
  3140. cpy_yesbak=2
  3141. cpy_no=3
  3142. cpy_all=4
  3143. cpy_none=5
  3144. cpy_stop=0
  3145.  
  3146. /* --------- Voice ------------ */
  3147. TalkToUser=MyGetENV("Flags/TalkToUser")
  3148. Play_Voice='run >ENV:ProcessTalk ${RefTable/Sound-voice}'
  3149. Play_Voice_Cmd=SubWord(MyGetENV('RefTable/Sound-voice'),1,1)
  3150. SampleDir='EASys!:Voice/'Language'/'
  3151.  
  3152. SampleCopy=SampleDir'FileManagerCopy.8SVX'
  3153. SampleCopied=SampleDir'FileManagerCopied.8SVX'
  3154. SampleChooseOp=SampleDir'FileManagerChooseOp.8SVX'
  3155. SampleChooseFiles=SampleDir'FileManagerChooseFile.8SVX'
  3156. SampleEdit=SampleDir'FileManagerStartEdit.8SVX'
  3157. SampleFileInfo=SampleDir'FileManagerFileInfo.8SVX'
  3158. SampleFileMon=SampleDir'FileManagerFileMon.8SVX'
  3159. SampleMove=SampleDir'FileManagerMove.8SVX'
  3160. SampleMoved=SampleDir'FileManagerMoved.8SVX'
  3161. SampleRename=SampleDir'FileManagerRename.8SVX'
  3162. SampleSaveAs=SampleDir'FileSaveAs.8SVX'
  3163.  
  3164. SampleBye=SampleDir'AppSayBye.8SVX'
  3165.  
  3166. /* --------- Special ------------ */
  3167. AppProfile:
  3168.  
  3169. AppName="EasyFiler  © EASys!)"
  3170. FileReq='FileManager.4' /* standard */
  3171. RETURN
  3172.  
  3173. /* --------------------- */
  3174. GetActualPath:
  3175. ActualPath=MyGetENV('Flags/ActualPath')
  3176. ActualPathDest=MyGetENV('Flags/ActualPathDest')
  3177. RETURN
  3178.  
  3179. /* --------------------- */
  3180. SaveFlags:
  3181.  
  3182. IF ~(Files.1='' | "FILES.1"=Files.1) THEN
  3183. DO
  3184.  ADDRESS COMMAND
  3185.  'assign >NIL: Profile: EXISTS'
  3186.  IF RC=0 THEN
  3187.  DO
  3188.   ADDRESS COMMAND
  3189.   'copy ENV:Flags/ActualPath Profile:ENV/Flags CLONE'
  3190.   'copy ENV:Flags/ActualPathDest Profile:ENV/Flags CLONE'
  3191.  END
  3192.  ELSE
  3193.  DO
  3194.   ADDRESS COMMAND
  3195.   'copy ENV:Flags/ActualPath EASys!:Flags CLONE'
  3196.   'copy ENV:Flags/ActualPathDest EASys!:Flags CLONE'
  3197.  END
  3198. END
  3199. RETURN
  3200.  
  3201. /* ---------------------- */
  3202. ExitMe:
  3203.  
  3204. IF ConStat=1 THEN r=Close(Con)
  3205.  
  3206. r=PRAGMA('DIRECTORY', 'T:')
  3207.  
  3208. drop UserArgs
  3209. drop Files
  3210. drop FileName
  3211. drop Suffix
  3212. drop Prefix
  3213. drop Path
  3214.  
  3215. drop SourceDir
  3216. drop SourceDirs
  3217. drop SourceFiles
  3218.  
  3219. IF EXISTS('ENV:ProcessTalk') THEN ADDRESS COMMAND 'delete >NIL: ENV:ProcessTalk QUIET'
  3220. IF EXISTS('ENV:VoiceSTATUS') THEN ADDRESS COMMAND 'delete >NIL: ENV:VoiceSTATUS QUIET'
  3221. IF EXISTS(FileList) THEN ADDRESS COMMAND 'delete >NIL: 'FileList' QUIET'
  3222. IF EXISTS('ENV:GT_info') THEN ADDRESS COMMAND 'delete >NIL: ENV:GT_info QUIET'
  3223.  
  3224.  
  3225. CALL setclip('FMlistpos',FM_ListPos)
  3226.  
  3227. FM_cnt=GetClip('FMcnt')-1
  3228. CALL setclip('FMcnt',FM_cnt)
  3229.  
  3230. r=setpubscreen('Workbench Default')
  3231.  
  3232. EXIT 0
  3233.  
  3234.