/*rx * * SelectFilesLhA.rexx - Allow the user to select files in an LhA buffer * window via a search pattern. * * $VER: SelectFilesLhA 40.4 (22/05/94) by Geoff Seeley * * Usage: ARexx command SelectFilesLhA.rexx (from DOpus) * */ /* configuration variables (change these to suit your setup) */ GetSizesLhARexx = "RX DOpus:ARexx/GetSizesLhA.rexx" /*--------------------------------------------------------------------------*/ /* misc. variables */ DOpusPort = 'DOPUS.1' LhaExt1 = '.lha' LhaExt2 = '.lzh' LhaHeader = '--------' SelectAll = 0 State = 1 /* select */ if ~show(l,"rexxsupport.library") then call addlib("rexxsupport.library",0,-30,0) /* make sure we've got somebody to talk to */ if showlist('Ports', DOpusPort) = 0 then do say 'Directory Opus ARexx port not found. Aborting.' call CleanUp end address 'DOPUS.1' options results /* get window information from DOpus */ Status 3 CurrentWindow = result /* get the path/name of the LhA archive file */ Status 14 CurrentWindow LhaArchive = result /* make sure it's an LhA archive listing buffer */ if right(LhaArchive, 4, ' ') ~= LhaExt1 & right(LhaArchive, 4, ' ') ~= LhaExt2 then do Notify "Sorry, buffer isn't an LhA archive.\You must use the ListLha button first." call CleanUp end TopText "Selecting Files in an LhA Archive Matching Sub-String" Busy on /* ask user for a search pattern */ Status 26 OldOkay = result Status 27 OldCancel = result Status 26 set 'Select' Status 27 set 'Cancel' MsgString = '"Please Enter A Pattern To Match:"' GetString MsgString DoSelect = RC Pattern = Result /* reset previous values */ Status 26 set OldOkay Status 27 set OldCancel if DoSelect = "0" then do /* select the files */ TopText "Checking Entries. Please Wait..." call ValidatePattern call SelectFiles /* list totals */ GetSelectedAll SelectedEntries = result if SelectedEntries = 'RESULT' then TopText "No Files Currently Selected." else address command GetSizesLhARexx end else do TopText "File Selection Aborted..." call CleanUp end call CleanUp exit /*--------------------------------------------------------------------------*/ SelectFiles: /* select files based on pattern */ Index = 1 Entry = "" Pattern = upper(Pattern) do while Entry ~= LhaHeader GetEntry Index Entry = result if Entry ~= LhaHeader then do /* grab file name/path, protect in quotes */ File = upper(substr(Entry, 10)) if SelectAll = 1 then StrIdx = 1 else do PatternMatch Pattern File StrIdx = RESULT end if StrIdx > 0 then do selection = Index - 1 ||' '|| State ||' '|| 0 SelectEntry selection end Index = Index + 1 end end 'DisplayDir -1' return /*--------------------------------------------------------------------------*/ ValidatePattern: /* make sure pattern is ok */ /* special cases */ if Pattern = "*" then do SelectAll = 1 return end if Pattern = "~" then do SelectAll = 1 State = -1 return end if Pattern = "" then do SelectAll = 1 State = 0 return end /* remove leading/trailing spaces */ Pattern = strip(Pattern) return /*--------------------------------------------------------------------------*/ CleanUp: /* clean up files and exit */ Busy off exit return