Thursday, January 31, 2008

v6.80.0053 - 2008-01-31 18:16

  • * Scripting command enhanced:
      - LoadScriptFile
        News: Now, you can reference the scripts to execute
              directly from file by an ID (your free choice),
              not just by its position.
        Syntax: loadscriptfile scriptfile, [script to run]
          - script to run: optional, will directly run the
            script identified by this argument.
            If the argument start with #, the script is
            identified by its position.
            Else the script is identified by an ID which is
            defined in the script file.
            See next paragraph for how to define this ID.
        Examples:
          ::loadscriptfile testscripts.txt, #1
            = run the 1st script found in testscripts.txt
          ::loadscriptfile testscripts.txt, demo
            = run the (first) "demo" script in testscripts.txt

  • * Script Files syntax. Now, the script caption can contain a 2nd optional field for an ID (anything goes) that you can assign to the script. The separator is " : " (comma would be unpractical because it might be used in captions).
    If no ID is defined the ID defaults to the caption itself.
    If no caption is defined then there is no ID for this script.
    New general syntax:
      [Caption [ : ID]]::command::command::command [...]
      [Caption [ : ID]]::command::command::command [...]
      [etc]
    For example:
    - Paste this script to a file scripts.xys in app path:
    Copy the newest file from Desktop : copynew
      ::step
      ::set $path, <curpath>
      ::goto Desktop|
      ::sortby m, d
      ::selpos 1
      // foc list
      ::#1016
      // copy
      ::#201
      ::goto $path
    - Each of these scripts will execute it:
      ::loadscriptfile scripts, #1
      ::loadscriptfile scripts, copynew

  • ! Fixed some glitches conc. scripting.

v6.80.0052 - 2008-01-31 10:26

  • * Scripting commands enhanced:
      - SelPos
        New Syntax: selpos ["+"|"-"]position|"a"|"i"|"f", [count=1]
          count: number of items to select, starting with position
                 if missing defaults to 1
                 if position is a, i, or f, count is ignored
      New Examples:
        ::selpos 1, 3
          = select 3 items starting with pos 1
        ::selpos +3, 3
          = select next 3 items

      - Set
        Now allows having the argument separator (by default a comma
         + blank) in the value. This gives you an easier way to
         supply arguments containing the argument separator without
         having to reset it using the "sep" command.
        New Examples:
          ::set ;, ,::copytext a; a
            = sets ";" to "," and copies "a, a" to the clipboard
          ::set well, well, well, well::copytext well
            = sets "well" to "well, well, well" and copies
             "well, well, well" to the clipboard

      - LoadScriptFile
        Action: Load a file with scripts and pop up a menu made from
          those scripts, or execute one of the scripts in the file
          directly.
        Syntax: loadscriptfile scriptfile, [# script to run]
        - scriptfile: required, can be relative to app path.
          If the given file is not found then XY will look for
          "file.xys", so if you call your script files *.xys
          you can skip adding the extension in the loadscriptfile
          statement.
          - # script to run: optional, will directly run the script
            of that number (first script = 1) without popping a menu.
            If no script of that number exists, the menu is popped.
            Note that separators and other non-script items do NOT
             count, so script #2 is the 2nd script, not necessarily
             the 2nd menu item.
      Examples:
        ::loadscriptfile RegExp-Both
          = loads RegExp-Both.xys if it exists and RegExp-Both doesn't.
        ::loadscriptfile testscripts.txt
          = popup a menu based on testscripts.txt
        ::loadscriptfile testscripts.txt, 2
          = run the 2nd script found in testscripts.txt
  • * SC (Scripting Command) "set": now, any general XY variables found in the value are resolved.
    Resolved variables:
      <curpath>
      <curfolder>
      <d...>     (current date)
      <m....>    (modified date of current list item)
      <curext>   (of current list item)
      <curbase>  (of current list item)
      <curtitle> (of current list item)
      <curver>   (of current list item)
    Examples:
      ::set $path, <curpath>::copytext $path
        = copies the current path to the clipboard
      ::set $x, <dyyyy-mm-dd>::copytext $x
        = copies the current date to the clipboard
      ::set $x, <ddddd>::copytext $x
        = copies the current weekday to the clipboard
  • * Script files: now, there is NO blank inserted between appended lines. Solves a problem, and gives you more control.

Wednesday, January 30, 2008

v6.80.0051 - 2008-01-30 12:01

  • * Scripting command "UserInput": changed name to "Input".
  • * Scripting command "Input": now, when you cancel the input dialog the current script is immediately ended.
  • + Indenting in script files now also supports tab characters: Have any number of tabs at the beginning of a line, and it will be appended (after trimming the tabs) to the previous line.
  • * Script files: Menu separators "-" now can be surrounded by any number of blanks (" - ") And are still recognized.
  • + Scripting got new commands:
      - InputFile
        Action: Sets a user variable to a file name that can be selected via the common Windows Open dialog.
        Syntax: inputfile [variable name], [path], [extension], [caption]
          - variable name:        required, anything goes, case matters
          - path:                 required, can be relative to app path
          - extension:            optional, just the extension, no dot
          - caption (for dialog): optional, anything goes
        Examples:
          ::inputfile $file, C:\, bat, Select Batch File
            = Presents dialog for opening *.bat files at C:\.
              If user selects a file, its full path/file name is set to user variable $file.
          ::inputfile $file, C:\Windows
            = Presents dialog for opening any file at C:\Windows.
          ::inputfile $file
            = Presents dialog for opening any file at app path.

      - InputFolder
        Action: Sets a user variable to a folder name that can be selected via the common Windows Browse For Folder dialog.
        Syntax: inputfolder [variable name], [path], [caption]
          - variable name:        required, anything goes, case matters
          - path:                 required, default initial path
          - caption (for dialog): optional, anything goes
        Examples:
          ::inputfolder $folder, C:\, Select Folder::copytext $folder

      - Set
        Action: Sets a user variable to fixed value.
        Syntax: set [variable name], [value]
          - variable name: required, anything goes, case matters
          - value:         required, anything goes
        Examples:
          ::set $year, 2008::copytext $year
            = Copies "2008" to the clipboard.

      - Unset
        Action: Unsets a user variable that was previously set by Set, Input, InputFile, or InputFolder.
        Syntax: unset [variable name]
          - variable name: required, should exist
        Examples:
          ::set $year, 2008::unset $year::copytext $year
            = copies "$year" to the clipboard
  • * Scripting command enhanced:
      - CopyText
        New Syntax: copytext [text], [a]
          text: required, anything goes
          a:    optional, if set text is appended
        Example:
          ::copytext Blah, a
            = append "Blah" to the clipboard

Tuesday, January 29, 2008

v6.80.0050 - 2008-01-29 14:43

  • +++ Scripting (r)evolution is in full swing: Here's User-Defined Variables!
    Using the brand new scripting command "UserInput" you can freely define and set one or more variables that live until they are reset or the current script batch is done. The variables will be auto-replaced by their values in all arguments of all following scripts inside the current script batch.
    Obvious exception: Within "UserInput" commands no user variables are resolved (else it would not be possible to reset a variable). Obvious advice: To avoid unwanted replacements your variable names should contain some special characters that are unlikely to find outside variables, e.g. $ or %. In other words, if you call your variable "e" you might run into some surprises... ;-)

       Syntax: userinput [variable name], [caption], [default value]
         variable name:        required, anything goes, case matters
         caption (for dialog): optional, anything goes
         default value:        optional, anything goes

       Example:
         ::userinput $i, Enter increment start value, 01::rename , File-<#$i>

       If you run this script batch, you'll get an input dialog where you can enter some value, say 007. The following command will then rename the currently selected file(s) to File-007.ext, File-008.ext, etc.

    No time now for more examples, but believe me, this is an efficiency volcano!

  • + Scripting got two new commands:
      - HighLight and Box
        Action: Highlight/Boxcolor the current tree folder.
        Syntax: highlight/box [|rrggbb]
           Pass nothing to turn any current highlight off.
        Examples:
           ::highlight FF0000 = set very red highlight
           ::highlight        = remove any highlight
           ::box eeddcc       = set pale brownish box
           ::box              = remove any box color

  • * Scripting command "SelPos" has been enhanced: Now you can define positions relative to the currently focused item.
      Syntax: selpos [[|+|-]position]|a|i|f
      Examples:
         ::selpos 1  = select first item in list
         ::selpos 2  = select second item in list
         ::selpos +1 = select the next item
         ::selpos +5 = select the item 5 positions after current
         ::selpos -1 = select the item before current
      Examples for some further enhancements:
         ::selpos    = deselect all
         ::selpos a  = select all
         ::selpos i  = invert selections
         ::selpos f  = select all files

v6.80.0045 - 2008-01-29 10:08

  • + Script files now support comments: Each line starting with // is treated as comment (= ignored by the script).

  • + Script files now support continuation of a script over several lines: Simply have any number of blanks at the beginning of a line, and it will be appended (after trimming the blanks) to the previous line.
    Example for a script file:
    -----------------------------------------------------------------
    // here's a dummy script file showing some possibilities
    // =====================================================
    // (1) comment lines start with //
    // (2) a script may run over many lines: A line beginning with
    //      one or more blanks is appended to the previous line,
    //      with one blank auto-inserted between them
    // (3) empty lines are always welcome:

    //goto Desktop, sort by Modified
    Desktop, Modified
      // remove any visual filter (indented comments work as well)
      ::goto Desktop
      ::sortby m, d
    // this is a menu separator:
    -
    // various test scripts
    Copy Blah::copytext Blah
    Copy Blah (2 lines)::copytext Blah <br> Blah
    Copy Blah (2 longer lines)
      // set " # " as line breaker, just for fun
      ::br " # "
      // change argument separator to allow commas in text!
      ::sep /
      ::copytext Blah # Blah
        // larger indents are no problem!
        and this text goes on and on, and the lines do not have to end
        with a blank to avoid that the words will clutch together on
        appending: one blank is auto-inserted between appended lines!
    // load the same file again; pointless but possible :)
    // no menu caption = no problem
    ::loadscriptfile testscripts.txt
    -
    // add a caption without a script to have a clickable
    // menu item without any function
    Cancel
    -----------------------------------------------------------------


  • * Rename Special Batch Rename. Before: "The original file extensions are preserved if the pattern contains no extension." Now: "The original file extensions remain unchanged." Always. Always? No, there's a switch now: If you really want to batch-change your extensions as well, append a "/e" to your pattern!
    Examples:
           Original name: test.txt
      *-<myyyymmdd>       test-20070607.txt
      *-<myyyymmdd>.htm   test-20070607.htm.txt
      *-<myyyymmdd>/e     test-20070607
      *-<myyyymmdd>.htm/e test-20070607.htm
      New<#01>            New01.txt
      New<#01>/e          New01
      New<#01>.csv        New01.csv.txt
      New<#01>.csv/e      New01.csv
    As you see, the /e switch simply means: drop the original extension. Then it depends on the pattern whether a new extension is supplied or not. But wait a minute! Now here's an interesting side effect of the new rules:
           Original name: test.txt
      ping.png/e          ping.png
    See? You can hard-replace the old name completely! And if a file ping.png already exists? Then the collision is auto-avoided like this:
           Original name: test.txt; ping.png exists
      ping.png/e          ping-01.png
    Not bad! BTW, the format of -01 depends on your settings in Configuration Report Number Suffix.

Monday, January 28, 2008

v6.80.0044 - 2008-01-28 11:40

  • +++ Evolution goes on: Added Plugin Scripts! Extremely powerful, portable, light-weight, and easy-as-can-be -- believe me, it took me only 10 minutes to code it! (Plus 1 hour debugging... ;-))
    Here's the concept
    ~~~~~~~~~~~~~~~~~~
      - In a nutshell: Popup a menu that's user-defined by a text file.
      - You create a text file containing scripts (or script batches), one per line. At the beginning of each line (i.e. left of the first "::" script marker) you may define a caption. A "-" (no quotes) line will generate a separator in the menu. So, the general form of such a file could look like this:
        [Caption]::command::command::command [...]
        [Caption]::command::command::command [...]
        [etc]
      - There is a new scripting command LoadScriptFile (see next paragraph).
      - Now when you run a "::loadscriptfile [scriptfile]" (the Catalog is a nice place for such loadscriptfile commands!), the script file is loaded and parsed, and a popup menu is created on the fly and popped at your mouse cursor, listing all the scripts (resp. their captions) found in the script file! What's left to do for you now is point and click.
      - I guess you know what this means:
        (1) You can have hundreds of hand-tailored commands just 2 clicks away, and they won't make the app one byte heavier or one millisecond slower.
        (2) You can bundle commands needed for a particular project in one script file.
        (3) You can easily share complex commands (e.g. RegExp Renames) with other users, and give them friendly names as captions.
        (4) You can place a loadscriptfile command inside another script batch to present you a *choice* while a script is running; e.g.
        "::goto Desktop::loadscriptfile scriptsortby.txt::selpos 1"
    where scriptsortby.txt offers you a number of sort options right at your mouse cursor.
  • + Scripting got a new command:
      - LoadScriptFile
        Action: Loads a file with scripts and pops up a menu made from those scripts.
        Syntax: loadscriptfile [scriptfile]
        - scriptfile: can be relative to app path
        Example:
           ::loadscriptfile testscripts.txt
  • + Scripting got a new command:
      - CopyText
        Action: Copies a piece of text to the clipboard; for multiline text you can use the line breaker <br>. It will be converted to a CRLF (= x0D0A) sequence.
        Syntax: copytext [text]
        Examples:
           ::copytext Blah
           ::copytext Blah <br> Blah
           ::br " # "::copytext Blah # Blah (see next paragraph)
  • + Scripting got a new command:
      - BR
        Action: Resets the line breaker <BR>.
        Syntax: br [new line breaker]
        - To include leading/trailing blanks the argument must be quoted.
        Examples:
           ::br #
           ::br " # "
  • + Scripting got a new command:
      - SelPos
        Action: Selects one list item by position.
        Syntax: selpos [position]
        Examples:
           ::selpos 1 selects first item in list
  • ! UDC: Could crash when you added a new UDC, under certain conditions. Fixed.
  • * Scripting: On scripting errors (invalid commands, missing script files) you are now prompted whether to continue the script or cancel.

Sunday, January 27, 2008

v6.80.0043 - 2008-01-27 15:16

  • + Copy/Move Here To New Subfolder: Now supports "/" as alternative folder separator.
  • * Configuration | Tabs: renamed "Max number of tabs (0 for unlimited)" to "Maximum number of tabs (0 = unlimited)" and fixed a little bug when trying to open a new tab beyond the limit: Now you get a message that the limit is reached.
  • ! Free Keyboard Shortcuts dialog: The key "#" did not jump to the correct line in the list. Fixed.
  • ! Fixed some other glitches with box-colored list.
  • * In a box-colored list, the color of the sorted column is now determined automatically. Looks better.
  • + Scripting: Now you can force stepping (prompting) per command. Simply prefix a ? to the command. For example, the following script will goto Desktop (and remove any Visual Filters), and then prompt you before executing the sortby command:
      ::goto Desktop|::?sortby m, d
    Works as well with ID-based scripts:
      ::?#1016::?#101
  • * UDC dialog: Now, the obligatory fields are marked by a bold label.
  • * Favorite Folders/Files: removed the auto-sorting of those lists. Now *you* determine the order of your favorites! Much better, ain't it? You also can add separators to the menu by inserting "-" items.

Saturday, January 26, 2008

v6.80.0042 - 2008-01-26 12:24

  • + Menu File | Settings | Load Configuration...: Now can can load a configuration file (*.ini) from anywhere (not just from application path as it has been before)! However, to keep things in one place, a copy of that file will be auto-created in the application path (no overwriting will happen), and that copy will be used as the new configuration file.
  • * UDC dialog: The "Tips..." interface now allows you to copy selected parts of the information.
  • + UDC New: If a source is defined then the following variables in the Name field refer to the source: <srcbase>, <srcext>, <srctitle>, <srcver>, <srcmyyyymmdd>.
    They obviously correspond to <curbase>, <curext>, <curtitle>, <curver>, and <myyyymmdd>, which will now refer to the current item always (before they referred to the source if there was one).
  • + Copy/Move Here To New Subfolder: Now, you can define a whole new subpath (e.g. download\2008\new) as target. It will be created on the fly (if necessary).
  • + Configuration | Tabs: Added option "Always keep right end of tab bar empty". Ensures, independently of the setting of Max Tab Width, an empty space of 16 pixels at the right end of the tab bar. This space can be dbl-clicked to create a new tab, or right-clicked to pop a list of all tabs.
  • ! Fixed some glitches with iconized tabs.
  • ! Fixed some glitches with box-colored list.

Friday, January 25, 2008

v6.80.0041 - 2008-01-25 13:19

  • + Configuration Tabs On dbl-click: Added Iconize.
  • ! Tabs: Crash when the right-most tab was iconized. Fixed.

v6.80.0040 - 2008-01-25 11:44

  • +++ Tabs: Now tabs can be iconized! Shrunk to the size of an icon. Mindblowing space saver! Handling is ultra-simple: Find new option "Iconize" in tab's context menu.
  • + Configuration Tabs: Now you can define a maximum tab width. Default is 250 pixels. Set to 0 to have it as it has been all the time before: Tabs use all space available.
  • + Tabs: If you set a maximum tab width you will also get a guaranteed empty space (16 pixels) at the right end of the tab bar. Dbl-clicking this space will now open a new tab (clone of current tab). Right-clicking this space will popup the Tab List (which now has icons!).
  • + Also improved the tabs' background graphics (if you use themes) and insertion point icon (when dragging tabs to new position).
  • + Configuration Interface Colors: Added option "Apply box color to list". When checked, the list background color will adapt to the current tree boxed branch color.
  • + Info Panel Find Files Excluded Folders: Now the "Add Current" button will add the current path (as before), OR (new!) the path of the currently focused list item if different. That way you can quickly exclude folders right from a search results listing.
  • ! Info Panel Find Files Excluded Folders: Did not correctly remember folders with UNICODE characters in the name. Fixed.
  • ! CKS: "Find Files: Excluded Folders..." appeared twice, and "Find Files: Name..." was missing. Fixed.
  • ! Did not handle shortcuts to special system items (e.g. control panel items) correctly. Fixed.

Wednesday, January 23, 2008

v6.80.0032 - 2008-01-23 10:38

  • + Menu File: Added command "Swap Names" (Ctrl+Shift+F2). Swaps the names of two selected List items. Is identical to the scripting command ::swapnames.
  • + Configuration | Advanced: Added option "Default items only in shell context menu". Check to have a clean context menu without all those funky shell extensions. For purists only.
  • + Scripting got a new command:
    - SortBy
      Syntax: sortby [column name], |a|d
      - column name: first partial match from left wins, so e.g. "m" will be enough to identify the "Modified" column.
      - |a|d = toggle/default|ascending|descending
      toggle/default is the exact behavior when you'd click on that column header: reverses the order if the column is already sorted, otherwise sets the default order for that column.
      Examples:
        ::sortby        sorts by Name, toggle/default
        ::sortby n      ~
        ::sortby , a    sorts by Name, ascending
        ::sortby m, d   sorts by Modified, descending
        ::sortby MOD, d ~
  • * Catalog: Now, the Caption property of an item can be left empty and will NOT be hard-set to the Data property (the field below) automatically anymore. Instead the displayed caption of such an item will softly adjust to any changes in the Data property. That was probably a bad explanation but the change is good.
  • ! Raw View: Wrong line parsing with files that were mixed DOS/UNIX. Fixed.

Tuesday, January 22, 2008

v6.80.0031 - 2008-01-22 11:59

  • + Scripting got new commands:

    - MoveTo
      Syntax: moveto [location]
      Examples (use Go To dialog to test!):
         ::moveto D:\Archives\<dyyyy-mm-dd>

    - CopyTo
      Syntax: copyto [location]
      Examples (use Go To dialog to test!):
         ::copyto D:\Archives\<dyyyy-mm-dd>

    - BackupTo
      Syntax: backupto [location]
      Examples (use Go To dialog to test!):
         ::backupto D:\Archives\<dyyyy-mm-dd>

    - Rename
      Syntax: rename bat|re|sr|kc|ext, [pattern], |p
      - bat|re|sr|kc|ext =
        batch|regexp|search&replace|keepchars|extension
      - |p = no preview|preview
        (simply omit the argument to skip preview)
      Examples:
         ::rename bat, *-<myyyymmdd>, p
         ::rename bat, *-<myyyymmdd>
         ::rename , *-<myyyymmdd>
         ::rename re, \.html$>.htm, p
         ::rename sr, ΓΌ/ue
         ::rename kc, 0123456789, p
         ::rename ext, htm
    Note that the third example is a batch rename since "bat" is the first (=default) value for this option field.
  • * Scripting: when processing scripts stepwise, you now are presented a preparsed version of your script in the form:
      Command Name
      Arg1
      Arg2
      ...
    Helps you to immediately see if the parsing went alright.
  • + Scripting command "Goto". Addendum: while XYplorer accepts scripts in all places where a location to go to is expected (Address Bar, Catalog, Favorites, Goto UDC, etc...) the "Goto" scripting command is, of course, an exception! This will NOT work
      ::goto ::#222
    and is totally superfluous anyway because if it would work it would be identical to
      ::#222
  • + Free Keyboard Shortcuts dialog: Added keyboard support. You press your desired key (incl. Ctrl, Shift, Alt combos) and if it is in the list, it will be focused. Otherwise, if at least your key (without Ctrl, Shift, Alt) exists, its first occurrence will be focused. The Enter, ESC, and cursor keys are excluded from this service to keep the dialog efficiently usable for keyboarders.
  • + Info Panel Properties: Type and Location now support UNICODE.

Monday, January 21, 2008

v6.80.0030 - 2008-01-21 14:44

  • +++ Scripting: I took some time to decide about the scripting syntax to have it maximally easy, efficient and robust at the same time. Here's what I came up with.

    General Rules
    ~~~~~~~~~~~~~
    - A script begins with "::". Scripts can be concatenated to script batches:
      ::script::script::script ...
    - A script consists of a command name plus a couple of arguments separated by a separator. The separator is by default a comma (,) that MUST be followed by a blank. While the number of arguments varies between commands (some have even none), the general form of a script looks like this:
      ::command arg1, arg2, arg3
    Example:
      ::goto C:\
    Abundant blanks are okay. The following line works identical as the one above.
      ::command arg1 , arg2 , arg3
    - The order of arguments is fixed and given in each command definition. Any arguments can be left out in which case the default is taken.
      ::command arg1, , arg3 'arg2 are set to the default
      ::command arg1         'arg2 and arg3 ~ ~ ~ ~ ~ ~ ~
    - If one of your arguments happens to contain the argument separator + blank, parsing would fail. In this case you have to redefine the separator by the following command:
      ::sep [new separator]
    Example:
      ::sep ;::new a, b.txt; ; <curitem>
      creates a copy of the current item and calls it "a, b.txt"
    The redefined separator is valid until you redefine it again, or until the current script batch ends. IOW, it is automatically reset to comma if you call another script or script batch.
    - All predefined keywords in scripting ignore case, so A=a.
    - All arguments have leading and trailing blanks trimmed off.
    Abundant blanks are okay. The following two lines are equivalent
      ::command arg1, arg2, arg3
      ::command   arg1   ,   arg2   ,     arg3

    New Commands
    ~~~~~~~~~~~~
    Now, let's add some flesh to the bones! A couple of important commands are now available through scripting: Goto, Open, Openwith, and New! All four work identical to the corresponding UDC categories, so you can think of them as the UDC GUI rolled out into a line of characters.
    To test the examples paste them into the address bar and Enter.

    - Goto
      Syntax: goto [target location]
      Examples:
         ::goto C:\
         ::goto %temp%
    - Open
      Syntax: open [item to open]
      Examples:
         ::open "winzip32" -min
         ::open firefox
         ::open C:\Programme\Mozilla Firefox\firefox.exe
      Note that locations containing blanks do not have to be quoted.
    - OpenWith
      Syntax: openwith [application], s|m {= single|multi instance}
      Examples:
         ::openwith UEdit32
         ::openwith UEdit32, s
         ::openwith UEdit32, m
      Note that "s|m" means you have the option between s and m. The first option in such kind of arguments is always the default. So in this case, passing nothing is equivalent to passing s.
    - New
      Syntax: new [name], file|dir, [source]
      Examples:
         ::new new file.txt
         ::new NewFolder, dir
         ::new <dyyyy-mm-dd>.txt
         ::new <curbase>_<curver>.<curext>, , XYplorer.exe
  • ! Renaming files while they are previewed. Some heavy apps like Word and Acrobat Reader did not get enough time by XY to release their documents to let them be renamed. Fixed.

Sunday, January 20, 2008

v6.80.0029 - 2008-01-20 13:43

  • + Scripting: New command "swapnames". Will swap the names of the (first) two selected list items. Usage:
      ::swapnames
    This is the first "real" scripting-only command (more will follow soon), i.e. its functionality is only accessible via scripts. For a one-click interface use the Catalog, for one-stroke access create a Goto UDC with a custom keyboard shortcut (a new UDC category "Script" will come soon).
  • * Now, you see Command ID related information only when scripting is enabled. Keeps it tidy for the "illiterate".
  • + CKS dialog | Options button: Added two commands that help you getting those Command IDs up to the clipboard:
      Copy Command ID
      Copy-Append Command ID
    I also included the "::" scripting marker since it's very likely that youΓ„ll want it there as well. So you find something like this ready for pasting:
      ::#1001::#1002::#1003 [...]

Friday, January 18, 2008

v6.80.0028 - 2008-01-18 12:39

  • ! Issue with Japanese (and probably other DBCS systems) when writing and reading non-ASCII characters to/from the INI. Might be fixed.
  • + Configuration | File Info Tips: added yet another extra field to the bottom of the list: "Junction Target". Shows, what a surprise, the target of NTFS junctions.

Thursday, January 17, 2008

v6.80.0027 - 2008-01-17 11:25

  • * Changed handling of UNICODE strings in the INI file. Might solve a related problem under some Windows locales.
  • * CKS dialog | menu captions: replaced " » " by ", " (as symbol for the TAB character) because upper ASCII characters are not correctly displayed in all Windows locales.
  • * Now, each finding (Search results) tab stores and remembers the path it was pointing to before it was turned into a finding tab (i.e. the current path in the moment you press F3). Now, when you Refresh (F5) an unlocked finding tab, this stored path will be used as current path when the tab returns to browsing mode.
    Note that this change will be rarely notable when "Synchronize tree with search location" (Config/General) is OFF. The differences will surface, however, when the search location was entered via the location combo (and differed from the current path at that moment). The "Synchronize..." setting will point the tree to the search location (or the *first* location in case of a multi-location search), whereas F5 will point the tree to the current path at the moment of the search.
    I admit this is a bit confusing... it might be better to always use the (first) search location and forget about the old current path at all... time will show...
  • * Now, the default in MRU-based auto-completion of drop-downs is "MatchAnywhere", before it was "MatchFromBeginning". Accordingly I reversed the logic/semantic of the INI Tweak:
  • + New INI Tweak. In the INI you'll find a new key:
      [Settings]
      AutoCompleteMatchFromBeginning=0
    Set it to 1 to only count a match from the beginning (left end) of the recently used strings. Else matching is counted anywhere in the string.
  • ! Could crash when pressing F5 on a search results tab while the mouse hovered the path column header. Fixed.

Wednesday, January 16, 2008

v6.80.0026 - 2008-01-16 12:02

  • + CKS | Options button context menu: added toggle command "Include Command IDs". Check it to include command IDs in cheat sheets. This setting is currently not saved in the INI. I'm not decided yet about the best way to handle this.
  • ! Raw View: fixed a bug concerning line wrapping and extracted text.
  • ! Fixed a difficult bug concerning the wheel mouse support.
  • + Added preview of *.m2v files (MPEG Video). As always: XY can play it if WMP can play it.

Saturday, January 12, 2008

v6.80.0012 - 2008-01-12 09:55

  • + Toolbar Visual Filter: Added a Visual Filter MRU (last 10) to the button's context menu. The items can be accelerator-selected by pressing numbers 1 to 0 (zero). Also ensured that the positions in MRU do not change when items are selected from here (normally the selected item would shift to the top of the list).
  • + New INI Tweak. In the INI you'll find a new key:
      [Settings]
      AutoCompleteMatchAnywhere=0
    Set it to 1 to count a match anywhere in the recently used strings. Else matching is from start of the string.

Friday, January 11, 2008

v6.80.0011 - 2008-01-11 10:01

  • + Scripting: Added new command for easier switching of the stepwise mode:
      CKS | Miscellaneous | Scripting | Step Through Scripts
  • + Toolbar: Added button "Step Through Scripts" pointing to the same command as here above. If pressed, scripting is stepwise, regardless of the presence of a "step" command in the script.
  • + Catalog: Added an icon for scripts. It's not the usual choice (lightnings, magic wands, script rolls) but something simpler with more opto-power to make it really distinctive and stand-out.
  • ! Scripting: Crashed on huge command IDs (overflow). Fixed.
  • ! Scripting: Did try to process command IDs pointing to mere menu separators. Fixed.
  • * Menu File | Copy/Move Here With [...]: Now, IF the target directory is different from the source directory, AND the target directory is the current one after the file operation is finished, THEN the newly created target file is auto-selected.

Thursday, January 10, 2008

v6.80.0010 - 2008-01-10 21:12

  • !!! UDC: The command IDs were not stable after you deleted a UDC, closed, and restarted the app. It was some stupid "optimization" in writing udc.dat that made the IDs shift downwards into the holes resulting from the deletion(s) instead of staying fixed. This bug could get nasty only when you had keyboard shortcuts assigned to UDCs (or recently with scripts calling commands by ID). In the worst case a keyboard shortcut would trigger a UDC function that you would not like be triggered in that moment. Fixed.
  • ! There were ways to crash the app by passing invalid command IDs via a script. Fixed.
  • * WOW64 File System Redirection: Changed the command caption from "Wow64 Redirection (64-bit)" to "WOW64 Redirection (64-bit only)". Also reversed the logic in marking the state of affairs in the titel bar. Before, if Redirection was disabled you got a "- [64]" appended to the window title. Now, if Redirection is *enabled* you get a " - [WOW64]" appended to the window title.

v6.80.0007 - 2008-01-10 11:24

  • + Scripting: Added a way to step through a script command by command, with an option to step out at each point. It's very easy to do: Simply add the new script keyword "step" to your script, and all following script commands will be presented stepwise. To disable the stepping mode at any time in your script you can use the new script keyword "unstep".
    For example, the script
      ::step::#534::#1017::#222
    will present you the following 3 commands step by step:
      Go | Go to Application Folder
      Miscellaneous | Focus Functions | Focus Tree
      Edit | Backup To...
    The script
      ::step::#534::#1017::unstep::#222
    would present you only the following 2 commands:
      Go | Go to Application Folder
      Miscellaneous | Focus Functions | Focus Tree
  • + Scripting: Now you can terminate a running script by pressing ESC. The next to follow functions will not be executed anymore.
  • + Menu View | Show Items: Added command "Wow64 Redirection (64-bit)". It replaces the following command, respectively makes it more visible:
      - CKS | Miscellaneous | 64-bit | Toggle Wow64 File System
    Redirection, which allows you to disable/re-enable Wow64 File Redirection on 64-bit Windows. The command is enabled only on 64-bit platforms.
  • * Copy/Move Here with Suffix Number: Now, a number is *always* suffixed, even if there is no collision, in which case the suffixed number is "-01" (or whatever format you configured suffixed numbers to). Before, the filename was not altered when there was no collision in the target path.

Monday, January 7, 2008

v6.80.0006 - 2008-01-07 11:05

  • +++ Scripting, part 2: You can concatenate any number of command IDs!
    General syntax:
      ::#[ID]::#[ID]::#[ID]::#[ID] ... etc.
    For example:
      ::#559::#250::#171
    will
      - Go to the Temporary Internet Files folder
      - Select All
      - Delete (Skip Locked)
    !!! However, here comes a serious WARNING!!! Scripting is an advanced hardcore feature, and the above example is a good one to show you why. If the Temp folder cannot be shown (e.g., because you opted to not show hidden items), then the script will happily go on with the next commands (select all and delete) IN THE FOLDER YOU END UP IN *instead* of the Temp folder! So, do not expect any smart checking here, scripting (at least this calling commands by ID) is as if you press a serious of buttons without looking. It's a stupid robot pressing buttons! Take care...
    Another thing to watch is recursion: If you create a "Go to"-UDC that calls itself, then don't blame me! :)
  • * Configuration dialog: Heavily re-arranged the first two sections. Spare me a detailed explanation, but I'm sure it is better now than before.
  • * Configuration | Advanced: Added option "Enable scripting".
    Scripting is potentially dangerous since you could you inadvertently enter "::#[ID of nuke command]" into the Address Bar and then wonder where your files are gone. So as a security measurement I force you to actively enable scripting.
  • * CKS dialog: Renamed button "Free Shortcuts..." to "All Free Shortcuts..." because the former caption was ambiguous and could be read as "Free All Shortcuts!".
  • * Copy/Move Here To New Subfolder: Now, the new folder is auto-selected if it is contained in the current file list. Before, all selections had been removed.
  • ! You could not select a file in the list by clicking on the icon left of the file name when "Details with Thumbnails" View was active. Fixed.

Sunday, January 6, 2008

v6.80.0005 - 2008-01-06 10:28

  • +++ Here is Scripting! Scripting is a long way to go, but today we take the first step and it already takes us into a powerful position: Now, you can call commands by their internal number, their ID!!!
    The syntax is like this:
      ::#[ID]
    The first part, ::, is the general script marker. The second part, #, is the keyword for calling commands by number. The third part, [ID], is the number.
    For example:
      ::#571
    will call command number 571, which happens to be the command added in the paragraph here below (go to the Temporary Internet Files folder).
    These commands are internally treated as locations! So, simply paste ::#571 into the Address Bar (Catalog, Favorites, etc.) and "go to it".
    Now, how to find out the command IDs? Very easy: they are now displayed in the CKS dialog (which contains all commands available), above the Description box.
    What's so great about this? Well, for example, now you can have your UDCs in the Catalog and trigger them from there!
  • + Menu Favorites Special System Folders: added command "Temporary Internet Files" (or whatever this folder is called on your system/language).
  • + Now, "MyComputer", "Desktop", and "MyDocuments" (or whatever they are called on your system/language) can be passed as command line parameters to control the startup path.
      XYplorer.exe "MyComputer" = open XYplorer at drives listing
      XYplorer MyComputer = (same)
      XYplorer Desktop = open XYplorer at Desktop folder
  • ! List: Display of thumbnails was not always correctly adjusted on on-the-fly changes of views or thumbnail dimensions. Fixed.

Friday, January 4, 2008

v6.80.0000 - 2008-01-04 09:44

= NEW OFFICIAL RELEASE.
Main changes since last release:

  • +++ Now you can drag-drop items onto shortcuts in List and Catalog.
  • +++ Targets of shortcuts are shown in File Info Tips on mouse hover.
  • +++ Now you can one-click jump to the target of a shortcut.

Thursday, January 3, 2008

v6.70.0012 - 2008-01-03 11:08

  • + New INI Tweak. In the INI you'll find a new key:
      [Settings]
      iUDCNoMenuIcons=0
    Set it to 1 to suppress UDC menu icons.
  • * Menu User | Goto: Items that trigger a search now show the typical "Find" icon.
  • ! Tree/List: Status bar description for context menu submenu items was missing. Fixed.

Wednesday, January 2, 2008

v6.70.0011 - 2008-01-02 12:29

  • + Media Preview: Added *.m4a (MPEG-4) format.
  • ! MP3 preview: Fixed an error in the song length calculation of some songs.
  • ! MP3 preview: Fixed another very small but real rounding error in the song length calculation of all songs.
  • ! MP4 preview: Now, audio information is displayed for MP4 audios.
  • * Rewrote tooltips for the Catalog. Now they throw a shadow and position correctly in a dual monitors setup.