Saturday, November 29, 2008

v7.80.0031 - 2008-11-29 17:00

  • + SC loadtree: Enhanced the "add" parameter, now called "modify".
      Syntax: loadtree pathlist, [modify=0]
        pathlist: list of paths separated by (pipe)
                  if modify = 0 then the current tree folder is set to
                  the first path
        [modify]: 0: [default] fresh tree from scratch
                  1: add paths to current tree
                  2: hide paths from current tree
        ::loadtree "E:F:", 2; //hide drives E: and F:
  • + Configuration | Interface Colors | Tree: Added a color field for Locked Tree.
  • % Tree and List: Increased snappiness of painting.
  • ! Mini Tree: Fixed a couple of glitches concerning Auto-Refresh. Generally, no folders should be automatically added to the Mini Tree via an Auto-Refresh. OTOH, you'd expect to see the folders created through drag-n-drop when the target parent folders are expanded. Also, rename operations should be reflected in the Mini Tree. Tricky stuff, but I'm getting there...
  • ! Mini Tree: With "Flat plus-minus icons" enabled the plus-minus icons did not show the expected white on blue coloring. Fixed.

Friday, November 28, 2008

v7.80.0030 - 2008-11-28 20:41

  • + Scripting got a new function.
      Name: Input
      Action: Returns user input.
      Syntax: input(topic, [notes], [default], [style=s])
        topic:     topic line, printed in bold on white
        [notes]:   text, can be multiline, printed on grey
                   only used with style "s" (singleline)!
        [default]: default value
        [style]:   s|m|w = singleline[default]multilinewrapped
        return:    user input
        ::$a = input("Enter Query", _
          "Codes:<crlf>h=XYwiki<crlf>x=XYforum", "Mini Tree");
        ::$a = input("Enter Script",,'echo "Hi!"', "m"); load $a,,"s";
      Note: The same-named statement "input" is still available but
  • * Scripting Step Dialog: Now "Copy Command (Parsed and Resolved)" will copy the actual data, not the version tuned for display (where non-printable chars are replaced by pilcrows or middots). Arguments are separated by CRLF----CRLF (CRLF = 0x1310).
  • * Scripting | Step Dialog: Added command "Copy Variables" to the context menu. It will copy the unaltered variables "as is" to the clipboard, in the following sample layout:
      $a =
      $b =
  • * Menu View | Lock Tree: Now, the locked tree never scrolls (whether MiniTree or not), but always selects the current folder if it is present in the tree.
  • * SC loadtree: Now, if parameter add = 1, the current folder is NOT set to the first path in the list but stays where it is.
  • ! Mini Tree: Couple of glitches fixed. Among others the following:
    - On a Mini Tree, pressing F4 (Refresh Tree) will show you the
      reality for your current tree while keeping it in "Mini" mode:
      All expanded nodes will be filled with their really existing
      child nodes.
    - On a Mini Tree, when the current node is MyComputer, then
      pressing Shift+F4 (Refresh Current Folder) will reset the Tree and
      list all child folders of MyComputer in collapsed state while
      keeping the tree in "Mini" mode.
  • * Script syntax: Before had to insert a blank after the command when the first argument was missing:
      ::loadtree , 1;
    Now you can do this:
      ::loadtree, 1;
  • * Toolbar | Mini Tree: Added the following commands to the context menu.
    - "Convert to Mini Tree"
      Converts the current Maxi Tree to a Mini Tree, but does not
      minimize the tree (which is what command/toggle "Mini Tree"
      does) but just sets it to "mini mode": From now on only used
      paths are added to the tree.
    - "Load Last Mini Tree"
      Loads the last Mini Tree before the Tree was converted to Maxi.
      Useful when you quickly turn on Maxi Tree for a task and then
      want to go back to the previous Mini state.
      If the current session did not have a Mini Tree yet, the last
      INI-stored Mini Tree is loaded.
    - "Hide Current Folder"
      Hides the current folder from the Mini Tree (not from your hard
      disk). Since there must be a selection the parent folder is
  • * Mini Tree: Now, the Mini Tree that's saved across sessions is limited by number of chars (namely 1023) rather than number of paths (was 32). This limit is caused by the current max size for INI keys which is 1023 chars.
  • * Tree: v5.60.0001 (2007-01-28 21:04) added: Hold SHIFT key when clicking plus/minus icons to "Fully Expand" and "Fully Collapse". This is now changed to "Hold CTRL key..." to avoid creating a new tab (due to held SHIFT) when the location changes because the current one is now inside a collapsed folder.

New pricing announced, with lower US dollar prices!

Prices have been adjusted for current international exchange rates, and also due to the current global economic crisis. The result is a BIG PRICE CUT, especially for customers paying in US$: The Lifetime License went down from US $59.95 to US $44.95!!!

Standard License
BEFORE: single €19.95 -- US $29.95 -- £14.95 each
   NOW: single €19.95 -- US $24.95 -- £16.95 each

Lifetime License
BEFORE: single €39.95 -- US $59.95 -- £29.95 each
   NOW: single €34.95 -- US $44.95 -- £28.95 each

Thursday, November 27, 2008

v7.80.0028 - 2008-11-27 11:35

  • + Mini Tree: Now the Mini Tree is saved across sessions. Because theoretically a tree can be very large, a limit has been built in: Only trees with maximally 32 paths are saved. Larger trees (which would not count as "Mini" anyway IMO), are not saved.
  • * Menu View | Auto-Synchronize Tree: Renamed it to "Lock Tree", inversing the logic. What was "Auto-Synchronize Tree" UN-checked before is now "Lock Tree" CHECKED. Reason: It's more intuitive this way.
  • * Menu View | Lock Tree: Undid the changes announced in v7.80.0027 (auto-select folders that are present in the tree) for non-Mini Trees, but kept them for Mini Trees.
  • + Scripting commands enhanced:
      - setting, settingp
        New named argument "locktree"
          = enable/disable Lock Tree
          ::setting "locktree", 1; msg "Look, the tree is grey!"
        Note: The old "autosynctree" (with inverse logic) is kept for
        backward compatibility, however is deprecated (and removed from
        the documentation). You should use "locktree" in your scripts
        from now on!
  • + Scripting commands enhanced:
      - setting, settingp
        New named argument "allowrecursion"
          0 = show warning on recursions
          1 = simply go on and hope that the script writer
              knows what they are doing
          ::setting "allowrecursion", 1;
        Note: This command is just using a simpler name for the
        already existing INI tweak "ScriptRecursionWarningOff".
  • * Scripting | Step Dialog: Now (non-printable) CRLF sequences are displayed using the pilcrow (¶) character. Before, they were shown as two dots (..). Other non-printable characters are now displayed as "·" (mid dot). Before, they were shown as dots (.).
  • * Scripting | Step Dialog: Pressing F1 now shows the Help chapter "Scripting Commands Reference". Same for the Edit multiline script dialogs in Catalog and UDC.

Wednesday, November 26, 2008

v7.80.0027 - 2008-11-26 13:43

  • * Menu View | Auto-Synchronize Tree: Now those folders that are already present in the Tree are selected, highlighted, and moved into view as in a normal synchronized Tree. So the non-synchronized Tree gives you as much feedback as it can without doing any browse or expansion work.
  • * Starting up with Auto-Synchronize Tree OFF and MiniTree ON did only show the MyComputer node. While technicaly correct, I felt this was a bit unsatisfying (a touch too minimal maybe?). Now the startup path is expanded and selected in the Tree.
  • * Toolbar | Mini Tree: Added "Auto-Synchronize Tree" to the context menu.

Tuesday, November 25, 2008

v7.80.0026 - 2008-11-25 21:47

  • * SC "new" enhanced. The syntax is unchanged but there are some new options and behaviors.
    Syntax: new name, [type=filedir], [source], [r]
    - Now you can pass a full path/name in the "name" argument. If no
      path is passed, the current path is taken as default.
    - If the target folder does not exist it is created on the fly.
    - The "last target" path (used by Ctrl+Alt+F7) is set to the
      target folder.
    - Not new but just as a reminder: The "new" command will never
      overwrite an existing file of the same name, but automatically
      append a number suffix to the name of the newly created file.
    - // creates new empty file "Kabul.txt" in folder "E:\Afgh\"
      ::new "E:\Afgh\Kabul.txt"
    - // creates new path "E:\Afgh\Kabul\EastEnd\"
      ::new "E:\Afgh\Kabul\EastEnd\", "dir"
    - // copies "C:\Temp\Kabul.png" to "E:\Afgh\Kabul-copy.png"
      ::new "E:\Afgh\Kabul-copy.png", , "C:\Temp\Kabul.png"
    - // copies the current item to "E:\Afgh\", suffixed with "-copy"
      ::new "E:\Afgh\<curbase>-copy.<curext>", , <curitem>
  • * UDC | New. The above enhancements also apply to the UDC New.
  • ! SC rename: When renaming a file outside of the current path (using the "source" argument), a same-named file in the current path was shown as renamed in the list (although it correctly was not renamed). Fixed.

Monday, November 24, 2008

v7.80.0025 - 2008-11-24 21:23

  • + SC loadtree enhanced by new "add" parameter.
    Syntax: loadtree pathlist, [add]
      pathlist: list of paths separated by (pipe)
                the current tree folder is set to the first path
      [add]:    0: [default] fresh tree
                1: add paths to current tree
    Remark: With add = 1 and the current tree still non-Mini, loadtree
    will convert the tree to a Mini Tree without losing any of its
    present folders. Interesting option! You can even convert it to
    Mini without adding anything by this line:
      ::loadtree , 1;
  • + SC getinfo got a new named argument "tree".
    Syntax: getinfo("tree", [delimiter = ""])
      [delimiter]: String to place between paths.
                   Defaults to "".
      return:      List of paths present in the current tree.
                   The current path is the first in the list.
      Mainly useful for creating the pathlist argument for the
      loadtree command.
      ::echo getinfo("tree");
      ::text getinfo("tree", <crlf>); //one path per line

v7.80.0024 - 2008-11-24 13:00

  • +++ Catalog: Added command "Make Mini Tree From Folders" to Category context menu. Will create a Mini Tree from all valid folders found within the Category.
    - If Mini Tree is not active it will be activated by this command
      (if any folders are found within the Category).
    - The current tree folder will be set to the first (from top)
      folder found within the category.
    - Portable Paths and Environment Variables are supported.
    Another quantum leap in file management. Finally, the Tree is yours.
  • + Catalog: The reverse command to the above is "Insert as New Category Here | Current Mini Tree". Will create a Category containing all unexpanded folders of the current Mini Tree (the command is not available if Mini Tree is off). The first folder is set to the current folder.
  • + Scripting got a new command.
      Name:   LoadTree
      Action: Load a specific Mini Tree.
      Syntax: loadtree pathlist
        pathlist: list of paths separated by (pipe)
                  the current tree folder is set to the first folder
        ::loadtree "C:D:";
        ::loadtree "<xydata>\scripts";
        ::loadtree "<curpath>|%programfiles%|<xypath>";
    Did I mention how cool this is?
  • ! Rename Special | Search and Replace: The replace-char(s)-by-string syntax did not work as expected. Fixed.
      ß>ss //replace all ß by ss
      123>(num) //replace all 1, 2, and 3 by "(num)"

Sunday, November 23, 2008

v7.80.0022 - 2008-11-23 17:54

  • ! Mini Tree: Couple of glitches fixed.
  • ! Toolbar: Drawing glitch with History per Tab buttons. Fixed.
  • * SC end: Inverted the logic of the "condition" argument. Now, as more likely to be intuitively expected, the script is terminated if the condition is TRUE, so it is the "condition to terminate".
    Syntax: end condition, [message], [scope=0]
      condition: if True the script is ended
                 else nothing happens
                 (True = anything but 0 or empty)
      ::end confirm("Are you sure to continue?") == 0, "Bye!"; _
        msg "Still here!";

v7.80.0021 - 2008-11-23 11:06

  • + Scripting got a new command.
      Name:   End
      Action: Terminate a running script.
      Syntax: end condition, [message], [scope=0]
        condition: if False (0) then the script is ended
                   else nothing happens
        [message]: message before ending
        [scope]:   0: [default] end whole script stack
                   1 (or any other value): end this script
        ::end 1==1; msg "Still here!"; //"Still here!"
        ::end 1==2; msg "Still here!"; //ends silently
        ::end 1==2, "Bye!"; msg "Still here!"; //"Bye!"
  • + Scripting got a new function.
      Name:   GetToken
      Action: Returns a substring by index.
      Syntax: gettoken(string, [index=1], [delimiter=" "])
        string:    source string; not changed by procedure
        index:     [opt.] index of token, 1-based; defaults to 1
        delimiter: [opt.] separator of tokens; defaults to " "
        ::echo gettoken("Donald Duck"); //Donald
        ::echo gettoken("a,b,c,d,e", 4, ","); //d
        ::echo gettoken("", 2, "//"); _
  • * TitlebarTemplate: Added new field which is set to the current folder (without path).
  • ! Mini Tree: You could get doubled subfolders due to a little glitch in the logic. Fixed.

Saturday, November 22, 2008

v7.80.0020 - 2008-11-22 17:40

  • +++ Name Search (aka Quick Search): Now multiple locations are supported! They have to be separated by ";" (NOT "" because this would be confused with a Visual Filter). E.g., you may paste a line like this into the Address Bar:
    The three folders E:\XY\, C:\Temp\, and D:\Backup\ will be searched for GIF files.
    - The ";" may be surrounded by any number of blanks. Built-in
      smartness will recognize a ";" that's not a separator but part
      of a folder name.
    - Multi-Location Name Searches are remembered in tabs and across
    - As always with Name Searches, the settings in the Find Tab are
      not touched.
  • * Scripting: Injected some artificial intelligence into the parser.
    Things like the following now work as expected:
      ::echo <date w> + <date w>;
      ::echo <date w> + <date w> + <date w>;
      ::echo <date w> - 1;
      ::echo 1 + <date w>;
      ::echo 1 + <date w> - 1;
      ::echo (2==3) ? <date yyyy> : <date yyyy> + 1;
  • * Mini Tree: Now the plus/minus icons in the Tree will look different when Mini Tree is active. Feedback.
  • + Toolbar | Mini Tree: The button got a context menu with some related commands. There's also a 2nd instance of "Auto-Optimize Tree" which is also available in Configuration | General.
  • ! Catalog could be fooled into thinking it got the focus while it had not, resulting in various weird effects like showing message "Pasting items here is not allowed." in the wrong contexts. Fixed.
  • ! Focus cycling between the main controls using F6 was a bit buggy since a while. It only worked as expected when all four controls were visible. Fixed.

Friday, November 21, 2008

v7.80.0018 - 2008-11-21 16:32

  • +++ Menu View: Added the revolutionary "Mini Tree". Now it's official.
  • + Toolbar: Added button "Mini Tree". Made from a racing flag (speed) and a minimal chess board (mini). (The temporary scripting command is gone now.)
  • + MiniTree: The revolution reached its final state of radicalness. Now even drives, special folders, and Nethood are shown only when they have been used.

v7.80.0012 - 2008-11-21 10:27

  • ! MiniTree: Fixed some glitches.
  • * MiniTree: Remarks on collapsing and expanding nodes if MiniTree is ON.
    - If you Fully Collapse a tree node (Numpad Divide) it is not only
      collapsed but reset to initial state: When you expand it in the
      tree it will do a fresh browse and show all existing subfolders.
    - OTOH, if you just collapse the node by clicking the minus-icon
      and then expand it again, no browsing will happen and the
      minimal tree state is preserved.
    - A destination node is never expanded.
  • * MiniTree: Now, when you de/activate MiniTree, the whole tree is rebuilt, so you have an immediate effect.
  • * Menu View | Rebuild Tree: Now the expansion state of the current node is preserved.
  • + List: Now you can toggle-select different groups of files dragging the mouse and holding CTRL. This is standard Windows behavior, and it's finally added to all List Views.

Thursday, November 20, 2008

v7.80.0011 - 2008-11-20 21:04

  • +++ Time for revolution! For now it comes as a tweak only, but it might change your view of browsing the file system forever:
    Set to 1 to show only the tree paths you have actually used. Makes browsing blindingly fast, the tree ridiculously small, and you feel like the king of the harddisk. To make testing a bit easier for you I added a temporary scripting command:
      ::MiniTree 1; // turn MiniTree on
      ::MiniTree 0; // turn MiniTree off
    Note that this feature is in experimental BETA-state. There might be glitches... I tested it for local paths, special paths (Desktop...), and UNC paths (particularly interesting because of the incredible speed). All looking great so far.

v7.80.0010 - 2008-11-20 20:15

  • + Tweak to activate a hardcore version of "Auto-Optimize Tree":
    Set to 1 to optimize the tree on each location change.
  • + Menu Favorites | Special System Folders: Added "Program Files".
  • * Scripting | Step Dialog: Now, the stepped script lines are displayed with "; " at each line end. Looks more "scripty" and makes it easier to copy and paste them (using right-click menu).

Tuesday, November 18, 2008

v7.80.0009 - 2008-11-18 10:56

  • + New variable: <xyini> = current XYplorer INI file (without path).
  • + Rename Preview: Now you can tweak the color used for zebra striping the filename lists. The format is RRGGBB (as in HTML).
    For example, this will produce a light grey:
    If you do not use the tweak (set value to nothing) then the Grid color for Browse mode is used by default.
  • * Scripting Math: Now the operator precedence is (*,/) > (+,-) meaning that * and / are of equal weight, and + and - are of equal weight. Processing is from left to right.
      ::echo 1 - 3 - 3;         // -5! (not 1)
      ::echo 5 - 2 + 1;         //  4! (not 2)
      ::echo 5 - 2 * 2 + 1;     //  2! (not 0)
      ::echo 32 / 4 / 3;        //  2.66! (not 24)
      ::echo 32 / 4 * 3;        //  24!   (not 2.66)
    The above expressions are processed like this:
      ::echo (1 - 3) - 3;       // -5! (not 1)
      ::echo (5 - 2) + 1;       //  4! (not 2)
      ::echo (5 - (2 * 2)) + 1; //  2! (not 0)
      ::echo (32 / 4) / 3;      //  2.66! (not 24)
      ::echo (32 / 4) * 3;      //  24!   (not 2.66)
  • ! Scripting: SC sortby did not work as expected on a dirty sort column (e.g. where a new item has been created but not yet sorted into position).
  • ! Scripting: SC incr did not work with global vars. Fixed.
  • * Quick Scripting: Now, when Quick Scripting is disabled, and you attempt to load a script prefixed with "::" you get a smart message like this:
      This location looks like a script:
      ::msg "Hi!"
      Press OK to process it as a script.
      Tip: Enable Quick Scripting in Configuration to skip this message!
  • * Info Panel | Properties: Time-Stamping boxes now preselect all when activated.

Monday, November 17, 2008

v7.80.0008 - 2008-11-17 12:42

Publication of this update was unfortunately skipped due to complex editing required. Doing now for documentation purposes. Sorry about that!

  • + Scripting got a new function.
      Name:   URLEncode
      Action: URL-encodes string.
      Syntax: urlencode(string, raw=0)
          0: URL-encode according to RFC 1738, except space => +
          1: URL-encode according to RFC 1738 (space => %20)
        ::echo urlencode("ä ö ü"); //%E4%20%F6%20%FC
        ::echo urlencode("ä ö ü", 1); //%E4+%F6+%FC
      POM Example:
        |"Search IMDB for '<curbase>'" *> _
          ::$a=URLEncode("<curbase>"); _
        // Mad Max => Mad+Max
  • + Scripting got a new function.
      Name:   URLDecode
      Action: Decodes URL-encoded string.
      Syntax: urldecode(string, raw=0)
          0: URL-decode according to RFC 1738, except + => space
             But it also converts %20 => space
          1: URL-decode according to RFC 1738 (%20 => space)
             It will NOT convert + => space
        ::echo urldecode("%E4%20%F6%20%FC"); //ä ö ü
        ::echo urldecode("%E4%20%F6%20%FC, 1"); //ä ö ü !
        ::echo urldecode("%E4+%F6+%FC"); //ä ö ü
        ::echo urldecode("%E4+%F6+%FC", 1); //ä+ö+ü !!!
  • + Scripting got a new function.
      Name:   md5
      Action: Calculate the md5 hash of a string.
      Syntax: md5(string)
        ::echo md5(""); //d41d8cd98f00b204e9800998ecf8427e
  • + Scripting: Now the captions of scripts in multi-script resources may contain XY variables. They are resolved in the moment the menu is popped up. For example, paste this into the Try Script box:
      "Go to <xypath>"
        goto <xypath>;
      "Is it <date hh:nn:ss>?"
        msg "It's <date hh:nn:ss>!";
    The 2nd script will show two different times if you wait longer than a second before you click the menu item.

Sunday, November 16, 2008

v7.80.0007 - 2008-11-16 15:13

  • + POM: Now the captions may contain XY variables. They are resolved in the moment the POM is generated. For example:
      "Search IMDB for '<curbase>'" *>::Open(" _
    Will show the caption "Search IMDB for 'Mad Max'" when the current file is "Mad Max.jpg".
    (Note that the line continuation using [space]_ as applied in the example above does not work in XY -- it's just done here for the change log!)
  • * SC delete: Now, any non-existing items passed in the [itemlist] argument will be simply ignored. No more error message.
  • ! Menu Go | History...: Error message when OK-ing the list without selecting an item. Fixed. Also, now the current history item is always preselected when opening the list.
  • ! Wrong icons in various List Management dialogs since v7.80.0006. Fixed.

Friday, November 14, 2008

v7.80.0006 - 2008-11-14 11:04

  • % History, Address Bar Dropdown, and various List Management dialogs now open much faster due to smarter icon handling.

Thursday, November 13, 2008

v7.80.0005 - 2008-11-13 09:09

  • * Configuration | General | Disallow dragging from tree and list: From now on, this setting only affects dragging with the *left* mouse button. The right button is always available for dragging.

Sunday, November 9, 2008

v7.80.0004 - 2008-11-09 21:47

  • * File Find | Follow Folder Links: Now there's a simple recursion blocker. If a folder link points to a location that again has a folder link, that 2nd folder link is not followed anymore.
  • * Statusbar: Tooltips were not Unicode compliant yet. Fixed.
  • ! Address Bar: Popping the dropdown's right click menu undropped the dropdown but kept the menu visible (v7.80.0000), or did not show the context menu at all (v7.80.0001). Fixed.
  • ! FVS: Fixed another glitch where the auto-default was used when it should not (when going from Search Results back to browse mode).
  • ! Info Panel | Preview: The little orange icon to open the options menu had lost it's mouseover effect recently. Fixed. It also shows the name of the previewed file now in a tooltip.
  • ! Info Panel: Did not show the version info of (*.exe, *.dll, etc. ...) files that had upper Unicode chars anywhere in the path. Also did not Raw View those files at all. Fixed.

Friday, November 7, 2008

v7.80.0001 - 2008-11-07 10:35

  • + Menu View | List Style: Added option "Hide extensions". Allows you to hide extensions in the file list on a per-tab basis (or hold SHIFT to set it for all tabs). You may assign a KS to it, and you can make certain folders hide their extensions via FVS.
  • - Tweak removed:
  • % Menu Go | History...: Opens faster.
  • * SC readfile: Now the filename argument defaults to the current file.
      ::readfile(); //opens current file
  • ! SC readfile: Error if file was empty. Fixed.

Thursday, November 6, 2008

v7.80.0000 - 2008-11-06 12:00

Main changes since last release:

  • +++ File Search: Now combines Boolean Logic with Regular Expression
  • +++ History per Tab: Optionally each tab maintains its own history.
  • +++ Scripting: Now there are global variables.
  • +++ File Search by Contents: Now supports pattern matching.
  • +++ Reporting: Now you have fully customizable one-click reports.

Wednesday, November 5, 2008

v7.70.0023 - 2008-11-05 15:58

  • * Updated the help file.
  • ! Fixed minor scripting glitches.

Tuesday, November 4, 2008

v7.70.0022 - 2008-11-04 13:12

  • * Catalog: Now, if you press F2 on an item that has no proper caption but shows its location or script data *as* caption, then the Properties dialog is opened rather than the inline rename box. This prevents you from unintentionally creating and modifying a caption when you think you are editing the actual data.
  • * SC Report(): Now, you can overwrite the default field separator through the template argument. Rule: If the template argument does not contain any opening curly brackets ( { ) (they are used to deliminate fields), then it is taken as new field separator. For example:
    - Use the default field separator TAB:
      ::text report();
    - Use ", " as field separator:
      ::text report(", ");
    - Use "{Name}. " as template:
      ::text report("{Name}. ");

v7.70.0021 - 2008-11-04 10:34

  • * SC load: Now you can pass "*" as labels to show all (hidden and visible) scripts in the resource. Example:
      ::load "test.xys", "*";
  • + Now you can opt to hide extensions from the filenames in the List. It's currently done as a tweak:
    Note that it's not recommended to hide extensions! Showing the filenames without extension is hiding super-important info from its natural place.
  • + Find Files: Now RegExp Search supports Boolean logic. v7.70.0020 allowed you to do this:
      :>.*test.* AND NOT >.*not.*test.*
    Now you can do the same search also like this (when mode "RegExp" is enabled in Find Files tab):
      ".*test.*" AND NOT ".*not.*test.*"
    Or like this (overwriting the mode setting in Find Files):
      >".*test.*" AND NOT ".*not.*test.*"
    The quotes make the difference here: If there's a double-quote anywhere in the expression it is interpreted as a Boolean RegExp. Note that, contrary to the first syntax, all patterns MUST be RegExp (resp. are interpreted as RegExp) with the second syntax -- you cannot mix RegExp with wildcard patterns. You do not have to quote all combined patterns, but it is recommended.
  • ! History per Tab: Fixed some glitches with locked tabs.
  • ! Scripting: Menu separators in script resources were hidden if they followed a hidden script. Fixed.

Monday, November 3, 2008

v7.70.0020 - 2008-11-03 13:00

  • +++ Boolean Search now supports Regular Expressions. Simply prefix
    your patterns with ">" to mark them as RegExp patterns.
    - Find all files containing "test" but not "not" before "test"
      anywhere in the name:
        :>.*test.* AND NOT >.*not.*test.*
    - Same as above, but combinig a non-RegExp with a RegExp:
      *test* AND NOT >.*not.*test.*
    - Find all *.doc files that have a date of format yyyy-[m]m-[d]d
      in the name:
        :>\\d{4}-\\d{1,2}-\\d{1,2} AND *.doc
      Note that the backslashes have to be escaped in the RegExp
      pattern \d{4}-\d{1,2}-\d{1,2}, as is generally the case for
      backslashes in *unquoted* XY Boolean search patterns. The
      alternative since today (see below!) is to quote the pattern
      (quoting *.doc is optional here):
        :>"\d{4}-\d{1,2}-\d{1,2}" AND "*.doc"
    - If the left-most pattern is RegExp you have to prefix ":" to
      the whole string else the auto-detection for single (non-
      Boolean) RegExp pattern sets in.
    - The RegExp-marker ">" must *precede* a quoted pattern!
      >"\d{4}-\d{1,2}-\d{1,2}" = OKAY
      ">\d{4}-\d{1,2}-\d{1,2}" = WRONG!
    - You can freely combine RegExp and non-RegExp patterns
  • * Search patterns: Now you can quote patterns (using double-quotes) to protect them from being parsed. This saves you escaping certain sequences with \ and makes the patterns more readable. For example, to search files that contain "(not a)" or " & M"
    anywhere in the name, you'd have to do this before:
      *\(not a\)* OR * \& M*
    Now you can do this:
      "*(not a)*" OR "* & M*"
    Note that you have to provide all wildcards in quoted patterns, since quoted patterns are not automatically supplied with surrounding asterisks and thus allow so-called "exact matches".
      "*test*" finds all items containing "test"
      test     (same as above)
      "test"   finds only items called exactly "test"!
  • ! Search: Did not work correctly with Unicode chars AND parentheses simultaneously in the search pattern. Fixed.
  • + SCs copyto and moveto enhanced: Now you can trigger Rich Copy/Move Operations directly from a script! This allows you to copy/move files together with parts of their folder structure in a fully controlled yet automatic way.
    Syntax: copyto location, [source], [rootpath]
            moveto location, [source], [rootpath]
      rootpath: Common root for the rich operation (source paths are
                recreated in the target location relative to rootpath).
                Slashed or unslashed makes no difference.
    - If a source file is not located under rootpath then its full
      path is recreated in the target location; colons (:) after drive
      letters and "\\" before UNC paths are removed to conform to
      filename syntax.
    - Creates "E:\Test\Download\New\Test.txt":
      ::copyto "E:\Test", "D:\Download\New\Test.txt", "D:\";
    - Creates "E:\Test\New\Test.txt":
      ::copyto "E:\Test", "D:\Download\New\Test.txt", "D:\Download";
    - Creates "E:\Test\D\Download\New\Test.txt" because the source
      file is not under the given rootpath "E:\":
      ::copyto "E:\Test", "D:\Download\New\Test.txt", "E:\";
    - Creates a copy of all selected files under "E:\Test" recreating
      their full source paths. Note that a dummy string "*" is passed
      as rootpath: it will never work as an actual rootpath, so all
      source paths are fully recreated.
      ::copyto "E:\Test", , "*";
  • * Rich Copy/Move operations: Before, Rich operations did not work for folders, just for files. Any folders in the source list were silently removed. This restriction has been dropped! This gives you more options and a little more responsibility: You have to take care that your sources do not contain each other (e.g. in Search Results, when you select a folder AND files contained in
    that folder) else you get lots of "Overwrite?" prompts during the copying.
  • * Scripting: Before, you could hide scripts in script files (hide them from being shown in popup menus) by beginning their caption with an underscore, or, if no caption present, by beginning their label with an underscore. Now, the caption became irrelevant here: You hide a script by beginning its label with an underscore. This way, you can explicitly show a "hidden" script by calling it by label and still have a meaningful caption.
  • * Configuration | General: Renamed "Show relative path in find results" to "Show relative path in search results".
  • ! SC report(): Field {Path} returned only the relative path when "Show relative path in search results" was enabled. Fixed. Now it returns always the absolute path.
  • * SC writefile(): On mode n (nothing) when the file existed the function popped an error message and returned 0. Now it pops no error and returns 2 in that case.
  • * SC writefile(): New return codes. The following values or OR-ed bitwise:
      0 = failed
      1 = data written
      2 = file existed
    Success codes depending on "on_exist" argument:
      "n"         AND file existed > 2
      "a"/"o"     AND file existed > 3
      "a"/"o"/"n" AND file created > 1
  • + Scripting commands enhanced:
      - setting, settingp
        New named argument "regexprenamesep"
          = set the following tweak
          RegExpRenameSep=" > "
          ::setting "RegExpRenameSep", ">>";
        As with all setting statements, the original state from before
        the script is automatically restored when the script is done.

Saturday, November 1, 2008

v7.70.0018 - 2008-11-01 17:15

  • + SC report(): Now, the field {Dir ...} may contain other fields (but not contain itself). For example, in
      ::text report("{Name} - {Dir -{Size B} ({Size FLEX})}");
    the {Dir ...} field will return:
      - for directories: -
      - for files:       {Size B} ({Size FLEX}) [resolved, of course]
      - for drives:      [nothing]
  • ! SC report(): Field {Fullname} was buggy with search results. Fixed.
  • ! SC report(): Field {Path} returned paths slashed. Fixed: For easier handling all paths in scripts are returned unslashed.
  • + Various list controls: Now there's a little right-click menu which allows you to copy the currently selected list item or all items (one per line, each line ends with CRLF (0x0d0a)).
  • + CKS Miscellaneous Tab Functions: Added command "Open Previous Tab". Opens the previously used tab.
  • ! FVS: Fixed a glitch where the auto-default was used when it should not.
  • ! Type-ahead find: Didn't take into account the time used to jump to a temporary new list position, which could lead XY to interpret the following keystroke as the beginning of a new word. Fixed.