Friday, October 24, 2008

v7.70.0007 - 2008-10-24 17:40

Publication of this update was unfortunately skipped due to very complex editing required and personal medical issues at that time. Doing now for compete documentation purposes. Sorry about the omission!

  • + Implemented the first "On Event Action" (OEA), but for now only as a tweak (still meditating about the interface).
    The event is "right-click on the list's white space", and you can currently choose between the following actions:
      0 = Popup the Edit menu (as has been before all the time)
      1 = Popup the Shell menu for the current folder
      2 = Do nothing
    Conc. option 0: Just to remind you, in Configuration Advanced, you currently have two checkboxes where you can specify which commands are shown in the Edit menu.
  • + Tree and List: Now, the shell context menu will show "extended verbs" when you hold SHIFT while right-clicking an item. What those "extended verbs" are depends on your system and software.
  • * SC writefile(): Now, the filename may be relative to the current path. For example, this line will generate a standard report of the current folder in the current folder:
      ::writefile("report.txt", report());
  • * SC WriteFile(): Changed the mode argument to better match
    ReadFile() (see below).
    Syntax: writefile(filename, data, [on_exist], [mode])
      t:  [default] text;
          auto-detects whether text can be written as ASCII or needs
          to be written as UNICODE
      ta: text ASCII (1 byte per char);
          wide chars (upper Unicode) are represented by "?"
      tu: text UNICODE (2 bytes per char);
          with LE BOM at file beginning
          LE BOM = Little Endian Byte Order Mark: 0xFFFE
      b:  binary: raw bytes
          each byte is internally stored as double-byte character
          with a zero big byte
          corresponds to mode "b" in ReadFile()
  • + Scripting got a new function.
      Name:     ReadFile
      Action:   Read data from file into string.
      Syntax:   readfile(filename, [mode])
      filename: file full path/name, or relative to current path mode:
        t: [default] text
           whether file is ASCII or UNICODE is auto-detected
        b: binary: raw bytes
           each byte is internally stored as double-byte character
           with a zero big byte
           corresponds to mode "b" in WriteFile()
        ::$a = readfile("test-in.txt");
          writefile("test-out.txt", $a);
          = Reads text from "test-in.txt" (ASCII or UNICODE) and writes
            it back to "test-out.txt" (ASCII or UNICODE).
        ::$a = readfile("test-in.txt");
          writefile("test-out-A.txt", $a, , "ta");
          = Reads text from "test-in.txt" (ASCII or UNICODE) and writes
            it back to "test-out-A.txt" in ASCII (1 byte per char).
        ::$a = readfile("test-in.txt");
          writefile("test-out-U.txt", $a, , "tu");
          = Reads text from "test-in.txt" (ASCII or UNICODE) and writes
            it back to "test-out-U.txt" in UNICODE (2 bytes per char).
    You can actually use ReadFile() and WriteFile() for file copying
    on a low level (bypassing the Shell):
      ::writefile("test-out.txt", readfile("test-in.txt"));
        = Copy "test-in.txt" to "test-out.txt" (text file).
      ::writefile("xy-out.png", readfile("xy.png", "b"), , "b");
        = Copy "xy.png" to "xy-out.png" (any file, binary or text).
  • * SC report(): Changed handling of line feeds.
    - Now, if the template is omitted, each line is terminated with
      a line feed (0x0D0A). Before, the last line was excluded from
    - Now, if you use a template, *you* are responsible for adding any
      line feed at the end of each line if you want to have one.
      Before, this was done automatically for all non-last lines.
      To add the standard Windows line feed (0x0D0A) you can use
      the internal variable <crlf>, or alternatively the functions
      chr(13) and/or chr(10).
  • ! It could happen (under quite rare circumstances) that Auto-Refresh was magically suspended. Fixed.
  • + Rename Special | Batch Rename: Since long, the self-referential wildcard (*) is replaced by the original file base (file title excluding extension). Now, there's a 2nd self-referential wildcard (?) that stands for the original file extension.
       Old    Pattern             New
      a.jpg ?                    jpg.jpg
      a.jpg *.?.bak /e           a.jpg.bak
      a.jpg ?-<#001>             jpg-001.jpg
      a.jpg *.?.<date yymmdd>    a.jpg.081023.jpg
      a.jpg *.?.<date yymmdd> /e a.jpg.081023
  • * Dialogs User | Manage Commands and Edit Copy/Move/Backup To... are now centered in screen. Before they were centered in the main window.