Monday, June 30, 2008

v7.30.0000 - 2008-06-30 12:00

Main changes since last release:

  • +++ After two years of continuous development Catalog-based browsing finally takes over: Now you can hide and switch off the Tree and browse via Catalog only.
  • +++ Quick Compare: Check out with a single click whether two files are same or different.
  • +++ Support for Hard Link creation.
  • +++ List Management: Now you can move items to new list positions via drag-n-drop. Big plus in usability.
  • +++ In version 7.20 the mouse wheel did not always work depending on the manufacturer. Fixed.
  • +++ New command "Open Folders in Tabs" allows you to easily switch sets of tabs.

v7.20.0027 - 2008-06-30 10:00

  • ! Scripting: Arguments containing the %TEMP% variable and pointing to not yet existing file items would be resolved with the not yet existing part of the file items cropped. Fixed.
  • * Updated the help file.

Sunday, June 29, 2008

v7.20.0026 - 2008-06-29 18:38

  • + New Tweak:
    Set to 1 to fix focus loss of modal popups on taskbar activation. Okay, this means: When a modal MsgBox is up in XYplorer, and you then switch to another application, and then back to XYplorer *via taskbar*, then the MsgBox does not have the focus although it definitely should; instead the main window gets the focus which should not be possible while a MsgBox is up. This is, to put it short, a VB bug.
    The above tweak successfully works around that bug. However, I decided to keep it at an experimental "tweak level" for the time being (short before publication of 7.30!) to see whether there are any unwanted side-effects.
  • %%% Extreme memory usage reduction: The above tweak has at least one good side-effect. If you do...
    ... and then minimize XYplorer, the memory usage will drop from about 15 MB to below 1.5 MB (check in Task Manager)! And it will stay quite low even after restoring the window and working with it. This is true for WinXP Prof SP2 at least, don't know about other Windows versions.
  • * Menu Edit | Compare: Before, you'd have to send the reference item via a real file copy (Ctrl+C) to the clipboard. Now, both will work: Ctrl+C (file) and Ctrl+P (file name).
    Note that when there is more than one file on the clipboard only the first is used for the comparison. In case of a textual clipboard content (Ctrl+P) the separator between the file names is expected to be CRLF. XYplorer's Ctrl+P uses CRLF anyway, but if you use other means to fill the clipboard and then want to use the Compare command you should bear that in mind.

Saturday, June 28, 2008

v7.20.0025 - 2008-06-28 18:03

  • + Scripting commands enhanced:
      - GetKey
        New: Added argument to specify the name of the INI file
        Syntax: getkey OutputVar, Key, Section, [INIfile]
          INIfile: [optional] filename (with ext), can be absolute or
            relative to app data path; the file is expected to
            conform to the format of INI files.
          ::GetKey $a, "timeout", "boot loader", "C:\boot.ini"; msg $a;

      - SetKey
        Same as in GetKey above.
    This enhancement means that you can use XYplorer to read and write from/to any INI file in any location on the computer. If you write to a file that does not yet exist it will be created.
  • * Tree and List: Now, scrolling the control while a the rename ox is up will finalize the rename operation. Before, it would abort the rename operation. The new behavior is common standard in Windows.
  • ! Toolbar: Button "Show Navigation Panel" took a one-day vacation. It's back.
  • * Menu Edit | Compare: Added icons to the result dialog. Thanks for providing free icons to via
  • * Rename Special: Made the dialogs wider (was 538, now 650 pixels).
  • * Info Panel: Removed scrolling through the tabs by mouse wheel. It was mostly rather disturbing than helpful, and not working 100% reliably.

Friday, June 27, 2008

v7.20.0023 - 2008-06-27 11:33

  • +++ Menu Window: Added command Show Tree (Shift+F8), which actually allows you to *hide* the Tree. So, the Catalog finally takes over and pushes the Tree off its throne.
      (1) If both Tree and Catalog would be hidden the command is
          internally translated into the command "Show [Hide]
          Navigation Panel" (F8), else you'd see a useless grey
          area left of the List.
      (2) If the Navigation Panel is hidden the commands Show Tree and
          Show Catalog will first make it visible and then show
          the Tree resp. Catalog if they are hidden.
      (3) If you really dig the Catalog and permanently hide the Tree,
          you should also disable Auto-Synchronize Tree in menu
          View. It will give you the full speed Catalog-based
          browsing. Of course, you can easily combine the two
          commands within two scripts:
          // hide tree and disconnect it
          ::settingp showtree, 0; settingp autosynctree, 0;
          // show tree and reconnect it
          ::settingp showtree, 1; settingp autosynctree, 1;
  • + Scripting commands enhanced:
      - setting
        New setting "showtree" (show/hide tree).
          ::setting showtree, 0; msg "Look, no tree!"
  • * Menu Window: Reorganized the sections a bit.

Wednesday, June 25, 2008

v7.20.0022 - 2008-06-25 15:50

  • * Menu Edit | Compare: Changed the result message to something that's easier to read. One day I might even add an icon...

Monday, June 23, 2008

v7.20.0021 - 2008-06-23 23:13

  • * Menu User | Load Script File: The new "Label List" functionality (v7.20.0018) in command "Load" of course also works for the Label field in UDCs of type Load Script File. However, until now you had to put quotes around the Label argument inside the field. This is not necessary anymore: Both fields, "Script File" and "Label" are now auto-quoted when passed to the script parser.

v7.20.0018 - 2008-06-23 13:12

  • + Scripting Command "Load": Now, when loading a multi-script resource using the "load" command, you can easily control which scripts are displayed in the popup menu, and in which order. This is achieved via script labels and the [script to run] argument, which now should be better renamed to "labels".

      load resource, [labels], [resource type]

      Where [labels] can either be
      (1) A script label: must be a valid label of one of
          the scripts contained in the script file.
      (2) NEW: A list of script labels, separated by semi-
          colons (;). To add a menu separator you may put
          "-" instead of a label. Note that, of course,
          the label list must be quotes in order to parse
          the ";" as expected.
      (3) A number prefixed by #: must be the index of which
          script to execute. Note than only scripts get an
          index, while menu separators do not. The first
          index is 1.

      Say, this is the script file test.xys:
      - - - - - - - - - - - - - - - -
      "Go to C:\ : croot"
        goto C:\
      "Go to System Folder : system"
        goto %winsysdir%
      "Go to XYplorer Folder : xy"
        goto <xypath>
      - - - - - - - - - - - - - - - -

    - Make no use of the labels argument:
        ;::load test.xys
      Pops up menu with all scripts contained in the file in
      original order:
        Go to C:\
        Go to System Folder
        Go to XYplorer Folder

    - Use the the labels argument to pick only 2 of the scripts:
        ::load test.xys, "croot;xy"
      Pops up menu:
        Go to C:\
        Go to XYplorer Folder

    - Use the the labels argument to change the order and
      add a menu separator:
        ::load test.xys, "xy;-;system;croot"
      Pops up menu:
        Go to XYplorer Folder
        Go to System Folder
        Go to C:\

    - Use the the labels argument to run a specific script
      directly without popping a menu:
        ::load test.xys, croot
      Directly triggers script with label "croot" (= goto C:\).
  • + Menu Edit: Added a command "Compare Current File With File On Clipboard" under the new submenu "Compare". Allows you to check whether the currently selected file is same or different from the file currently on clipboard. First the file sizes are compared. If they are identical, the contents themselves are compared. The result is simply a "same" or "different" without any further information. If you need more details use a specialized comparison application (which can easily be automated from XY using UDCs or Scripting). Note that the comparison is limited to files of maximally &H7FFFFFFF (2147483647) bytes.
  • + Variable <curver>: Little addition to the syntax. When you specify a text but no place holder (*), then the text is by default prefixed to the version info proper.
    - <curname><curver, v>
      XYplorer.exe, v7.20.0009
      So it is identical to:
      <curname><curver, v*>
  • + New variable (actually it is a Constant): <crlf> which will be resolved to the Carriage Return Line Feed byte sequence (0D 0A).
  • ! Tree: Fixed some painting glitches concerning boxed branches.

Sunday, June 22, 2008

v7.20.0017 - 2008-06-22 17:19

  • + Menu Edit | Paste Special: Added command "Create Hard Link(s)".
    Creates a new file hard linked to the file currently on the
    clipboard (also works for more than one file at a time). Notes:
    (1) Hard links can only be created for files, not for folders.
    (2) All hard links to a file must be on the same volume (same
        drive letter or network share).
    (3) Hard links can only be created on NTFS volumes.
    (4) The maximum number of hard links that can be created is 1023
    per file.

    Some more reading stuff on Hard Links
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Any directory entry for a file that is created with CreateFile or CreateHardLink is a hard link to an associated file. An additional hard link that is created with the CreateHardLink function allows you to have multiple directory entries for a file, that is, multiple hard links to the same file, which can be different names in the same directory, or the same or different names in different directories. However, all hard links to a file must be on the same volume.

    Because hard links are only directory entries for a file, many changes to that file are instantly visible to applications that access it through the hard links that reference it. However, the directory entry size and attribute information is updated only for the link through which the change was made.

    The security descriptor belongs to the file to which a hard link points. The link itself is only a directory entry, and does not have a security descriptor. Therefore, when you change the security descriptor of a hard link, you a change the security descriptor of the underlying file, and all hard links that point to the file allow the newly specified access. You cannot give a file different security descriptors on a per-hard-link basis.
  • * Menu Edit | Paste Special: Renamed command "Paste Shortcut(s)" to "Create Shortcut(s)". It's semantically better, and it better matches the other entry in that section ("Create Hard Link(s)").

Saturday, June 21, 2008

v7.20.0016 - 2008-06-21 19:46

  • + Catalog | Context Menu of Categories: Added command "Open Folders in Tabs". Will do the following:
    (1) Close all unlocked tabs (apart from the current).
    (2) Create a new background tab for each folder contained within
        the Category. Items pointing to anything but straight folders
        (like not-existing-folders, files, searches, scripts, filters,
        etc.) are ignored.
    This feature allows you to easily switch sets of tabs.
  • * Shorthand date variables revised.
    - Missing format: Use general system date format.
      <date>, <datem>...
    - Format = List: Use current file list date format.
      <date>, <datem>...
    - The following syntax has been REMOVED:
      <date>, <datem>...
    - If you use <date(m|c|a)> and there is no current file then the
      variable will be replaced by nothing (i.e. be removed).
  • ! Scrolling by wheel: No longer honoured the full screen setting for the mouse scroll wheel since two days ago. Fixed.

Friday, June 20, 2008

v7.20.0015 - 2008-06-20 20:17

  • * Installer: Now, you get the option to install XYplorer per-machine (default) or per-user.

v7.20.0015 - 2008-06-20 10:25

  • + Scripting got new commands:
      - GetKey
        Action: Get the value of a configuration key in the current
          ini file.
        Syntax: getkey OutputVar, Key, Section
          ::GetKey $a, StartPath, General; msg $a;

      - SetKey
        Action: Set the value of a configuration key in the current
          ini file.
        Syntax: getkey Value, Key, Section
          ::SetKey 1, ShowFloppies, Settings;
        Note that only the key on disk is changed, not the current
        setting in memory. To realize any changes made via SetKey you
        should use "Restart without Saving" in menu File!
  • ! The new shorthand date variables for using the current file list date format did not work with all formats. Fixed. Now you can even return Zodiac and ISOWeek correctly when using any of these:
    BTW, Zodiac and ISOWeek now also work as named format:
      <date> will resolve to "Gemini".
      <date> will resolve to "2008-W25-5".

Thursday, June 19, 2008

v7.20.0013 - 2008-06-19 13:04

  • ! New List Controls (Catalog and various small Lists): Scrolling by mouse wheel did not work with certain mouse brands. Fix #3.
  • + Dialog "Stepping through a Script": Now you can continue the script without stepping by pressing Ctrl+Enter.

v7.20.0011 - 2008-06-19 11:19

  • ! You could not delete (via Shell Context Menu) the parent folder of the current folder when Auto-Refresh was enabled (because a watched folder is blocked from deletion by Windows). Fixed: Now the current folder is automatically un-watched right before the deletion.
  • ! New List Controls (Catalog and various small Lists): Scrolling by mouse wheel did not work with certain mouse brands. Fix #2.
  • ! When scrolling Tree, List, or Catalog by wheel, any visible tooltips where not updated to the new item under the mouse. Fixed.

Wednesday, June 18, 2008

v7.20.0010 - 2008-06-18 12:22

  • + Added new power and ease to the date variables.
    How to use a user-defined format (just as it was before):
      <date yyyy>
      <datem yyyy-mm-dd>
      <datec yyyy-mm-dd hh:nn:ss>
      <datea yymmdd_hh_nn_ss>
    How to use the current file list date format (date columns in Browse mode) (NEW!):
    How to use the general system date format (NEW!):
      <date >
      <datem >
      <datec >
      <datea >
    Same goes for the <src...> variants, e.g. <srcdatem> to use the current file list date format.
  • + Variable <curver>: Now you can add a textual context that only will be returned when an actual file version is present. This allows for better formatting control. The general syntax is <curver|text*text>, where * is the place holder for the actual version number.
    Examples, each resolved for two items, one with version info, and one without version info:
    - <curname><curver|, v*>
      XYplorer.exe, v7.20.0009
    - <curname><curver| [ver *]>
      XYplorer.exe [ver 7.20.0009]
    - <curname><curver>
  • + Tweak to configure Statusbar section #3: The above starts to make sense when you look at this new tweak (will be elevated to official configuration on success...). Now, you may define a template for Statusbar section #3, and use all XY variables you like in it (I hope your screen is wide enough). This template will be used whenever an item is selected in the list.
    Here's an example:
      StatusBar3OnFile="<curname><curver|, v*>, mod <datem>"
    The above example would result in the following Statusbar texts if you select XYplorer.exe resp. History.txt:
      XYplorer.exe, v7.20.0009, mod 2008-06-17 15:40:29
      History.txt, mod 2008-06-18 10:02:34
    If you do not want to use the tweak, simply do nothing and the entry will look like this...
    ... in which case the Statusbar will use the age old internal default:
      XYplorer.exe [ver 7.20.0009]
  • ! New List Controls (Catalog and various small Lists): Scrolling by mouse wheel did not work with certain mouse brands. Should be fixed.

Monday, June 16, 2008

v7.20.0004 - 2008-06-16 14:32

  • ! Crash after changing Configuration | Startup & Exit | Allow multiple instances. Fixed.

v7.20.0003 - 2008-06-16 14:13

  • ! Shell context menu did not set the working directory to the path of the owning file item. Fixed.
  • ! Configuration | Startup & Exit | Allow multiple instances: The setting was not saved between sessions -- embarrassing bug, sorry for the confusion it must have created! Fixed.

Wednesday, June 11, 2008

v7.20.0001 - 2008-06-11 07:51

  • ! Info Panel: Right-clicking right of the Options Tab on Find Files resulted in crash. Fixed.
  • ! Catalog: Categories would show icons if the description was set to a valid path. Fixed: Categories should never show icons.

Monday, June 9, 2008

v7.20.0000 - 2008-06-09 09:00

Main changes since last release:

  • +++ Support for editing Unicode filenames.
  • +++ Warp speed through new "treeless browsing".
  • +++ New popular button "Copy Path/Name".
  • +++ Faster startup.

Saturday, June 7, 2008

v7.10.0052 - 2008-06-07 20:27

  • + List Context Menu: Added special functionality to the context menu of *.LNK files (aka Shortcuts). You now have three commands:
      Go to Shortcut Target
      Copy Shortcut Target Item
      Copy Shortcut Target Name
  • ! New Editbox did not always grab focus as expected. Fixed.

Friday, June 6, 2008

v7.10.0051 - 2008-06-06 20:22

  • * Updated the help file

v7.10.0050 - 2008-06-06 09:57

  • + Menu Help: Added command "List of Functions...". It creates a list of all functions, with their permanent IDs (used in Scripting) and currently assigned keyboard shortcuts.
      Format: Function Name [TAB] Function ID [TAB] Keyboard Shortcut
    The list is copied to the clipboard from where you can paste it into any application for further processing.
  • ! List: Rename box displayed incorrectly in thumbnails mode. Fixed.
  • ! Error when terminating the app via a catalog-based script. Fixed.

Wednesday, June 4, 2008

v7.10.0047 - 2008-06-04 15:50

  • ! Rich Copy/Move commands were not available in the drop-context menu of a hover-foregrounded tab. Fixed.
  • ! Menu File: "Restart without Saving" did not work anymore since v7.10.0044. Fixed.
  • * Configuration | Startup & Exit | "Allow multiple instances": Note that if you use a switch in the command line (either /ini or /win) then you will ALWAYS get a new instance EVEN if "Allow multiple instances" is OFF. This is necessary from the programmatical POV, and I think it also makes sense from the user POV.

v7.10.0044 - 2008-06-04 11:07

  • + Configuration | Startup & Exit: Added option "Allow multiple instances". If unchecked, then XYplorer will always re-use any previous instance (and restore it if minimized), even if no path is passed as command line parameter. This was not possible before. Note that the default state of this setting is OFF, so you have to check it to return to the old state of affairs.
  • + Now the Catalog learned all the new Listbox tricks...
      - UNICODE editing
      - Touchpad scrolling
    ... and ceased being a maldito UserControl. Two yet to go.

Monday, June 2, 2008

v7.10.0036 - 2008-06-02 20:38

  • ! Crash (since v7.10.0035) when right-clicking the List and no New Items were defined. Fixed.
  • ! Tree and List: Inline Rename box was slightly misplaced *again* in Classic Theme. Fixed.

v7.10.0035 - 2008-06-02 11:31

  • + Added new Listbox to all remaining places. One UserControl removed. Three yet to go. This means that all listboxes in the various dialogs now support:
      - UNICODE editing (where applicable)
      - Touchpad scrolling
      - Drag-moving items to new positions (where applicable)
  • + Menu Edit: New Items submenu now fully supports UNICODE.

Sunday, June 1, 2008

v7.10.0034 - 2008-06-01 12:17

  • + Listbox Control: Now you can move items to new list positions via drag+drop. Big plus in usability.
    Note that currently, the new Listbox Control is only implemented on Info Panel | Find Files | Excluded, and in the Configuration dialog (where only in the Color Filters list you can actually enjoy the new drag-moving). The rest will follow soon.
  • ! User variables were not resolved anymore in the Pattern argument of a rename (BatchRename) script. Fixed. For the reference, here's how the Pattern argument in a BatchRename statement is handled.
    (1) Processing of the pattern argument in BatchRename scripts:
        - resolve user vars
        - resolve environment vars
        - pass to BatchRename function
          - resolve native vars (excl. date vars)
          - resolve date vars per item
    (2) Processing of the pattern argument in UDC/BatchRename dialog:
        - pass to BatchRename function
          - resolve native vars (excl. date vars)
          - resolve date vars per item
  • ! Some painting glitches with the new edit boxes in Tree and List. Fixed.
  • ! Crash when right-clicking on white space in Catalog. Fixed.