Monday, March 31, 2008

v7.00.0000 - 2008-03-31 12:00

= NEW OFFICIAL RELEASE.
Main changes since last release:

  • +++ Scripting. Ultimate file management efficiency. Roll your own custom commands, wrap them in an XYplorer Script file (XYS), or a User-Defined Command, and trigger them by just a click or a keystroke. Can't get any better? It can! Share scripts with colleagues: Just drop a script file into your app folder and fresh plug-in commands are at your finger tips.
  • +++ Now tabs can be iconized. Shrunk to the size of an icon. A mind-blowing space saver.
  • +++ Now you can freely determine XYplorer's application data path and thus banish any UAC (User Account Control) issues.
  • +++ Now you can search for folders by size.
  • +++ Now you can turn a text or image from clipboard directly into a new file.
  • +++ Now there's secondary sorting. Simply hold Shift while you click on a column header to sub-sort the file list by this column.

v6.80.0118 - 2008-03-31 10:47

  • ! The default secondary sorting (which is always on Name) got lost when switching folders. Fixed.
  • ! A CKS to pop up a menu would not work sometimes because the menu was still disabled when it should be enabled. Fixed.

Sunday, March 30, 2008

v6.80.0117 - 2008-03-30 17:14

  • * Updated the help file.
  • + Scripting command enhanced:
      - addstr
        Now it can take up to 10 arguments:
        ::addstr $x, 1,2,3,4,5,6,7,8,9,10,11
        Sets $x to "12345678910". The 11th argument is discarded.

Saturday, March 29, 2008

v6.80.0116 - 2008-03-29 09:41

  • ! Configuration dialog did not keep position on DPI settings other than 96. Fixed.
  • ! Variable <focitem> returned paths with a backslash while it should not. Fixed.
  • ! Toolbar button Nuke: Could not nuke files that were locked due to being previewed or raw viewed. Fixed. Any preview is closed now before nuke is executed.
    Remark: Take care with "Nuke"! While it currently does not erase data beyond restorability, you will need specialized software to restore a nuked file. In a planned future version of Nuke, not even this will help...
  • ! Reposition of tree in some cases didn't always give desired results. Fixed.

Friday, March 28, 2008

v6.80.0115 - 2008-03-28 10:39

  • ! Find Files tab | Name field: Fixed some issues with alignment and auto-completion when using the > or : prefix in patterns.
  • ! Changing sort order when list is empty did not work anymore. Fixed.
  • ! INI tweak
      [Settings]
      PopupFullFavMenu=1
    did not work as expected. (If PopupFullFavMenu=1 then the full Favorites menu is popped up on a right-click in the tree's white space.) Fixed.

Monday, March 17, 2008

v6.80.0114 - 2008-03-17 12:29

  • + Scripting got new commands:
      - StrLen
        Action: Returns the length of a string.
        Syntax: StrLen OutputVar, String
        Examples:
          ::strlen $a, "abcdef";  // 6
          ::strlen $a, <curitem>; // length of current item

      - StrPos
        Action: Returns position of first occurrence of a string.
        Syntax: StrPos OutputVar, Haystack, Needle, [Start],
                [MatchCase]
          - OutputVar: Required, anything goes, case matters.
          - Haystack:  String to search in.
          - Needle:    String to search for.
          - Start:     [optional; defaults to 0] Allows you to specify
            which position in haystack to start searching. The
            position returned is still relative to the beginning
            of haystack.
          - MatchCase: [optional; defaults to 0] Compare method.
            0: A=a
            1: A<>a
        Examples:
          ::strpos $a, "abcabc", "a";      // returns 0
          ::strpos $a, "abcabc", "d";      // returns -1 (not found)
          ::strpos $a, "abcAbc", "A";      // returns 0
          ::strpos $a, "abcAbc", "A", , 1; // returns 3
          ::strpos $a, "abcAbc", "a", 1;   // returns 3
          ::strpos $a, "abcAbc", "a", 10;  // returns -1 (not found)
          ::strpos $a, "abcAbc", ""; // returns -1 (not found)
          ::strpos $a, "", "a";      // returns -1 (not found)
          ::strpos $a, "", "";       // returns -1 (not found)

      - Incr
        Action: Increment a numerical value.
        Syntax: Incr OutputVar, [Value], [Increment=1]
          - OutputVar: Required, anything goes, case matters.
          - Value:     Value defaults to OutputVar(!);
            can be negative.
          - Increment: Defaults to 1; can be negative.
        Examples:
          ::incr $a;          // returns $a + 1
          ::set $a, 5; incr $a;  // returns 6 (5 + 1)
          ::incr $a, 1;       // returns 2 (1 + 1)
          ::incr $a, 1, 2;    // returns 3 (1 + 2)
          ::incr $a, -1, 2;   // returns 1 (-1 + 2)
          ::incr $a, 1, -2;   // returns -1 (1 - 2)
          ::incr $a, -1, -2;  // returns -3 (-1 - 2)
          ::incr $a, "Paul";  // returns 1 (0 + 1)
          ::incr $a, "3Paul"; // returns 4 (3 + 1)
  • * Scripting: Renamed "Add" renamed to "AddStr". Reason: "Add" implies a numerical operation.
  • * Scripting: Renamed "Mid" to "SubStr". Also changed its syntax as to match SubStr in PHP. So forget yesterday's "Mid", here's "SubStr":
      - SubStr
        Action: returns part of a string
        Syntax: SubStr OutputVar, String, [Start], [Length]
          - OutputVar: Required, anything goes, case matters.
          - String:    Input string.
          - Start:     Start of returned part; defaults to 0, first
            position is 0. If Start is negative, the returned string
            will start at the start'th character from the end of
            string.
          - Length:    Length of returned part (number of characters).
            If missing then the whole string is returned (beginning
            from Start). If Length is negative, then that many
            characters will be omitted from the end of string
            (after the start position has been calculated when
            Start is negative). If Start denotes a position beyond
            this truncation, an empty string will be returned.
        Examples:
          ::substr $a, "abcdef", 1;       // returns "bcdef"
          ::substr $a, "abcdef", 1, 1;    // returns "b"
          ::substr $a, "abcdef", -1);     // returns "f"
          ::substr $a, "abcdef", -2);     // returns "ef"
          ::substr $a, "abcdef", -3, 1);  // returns "d"
          ::substr $a, "abcdef", 0, -1);  // returns "abcde"
          ::substr $a, "abcdef", 2, -1);  // returns "cde"
          ::substr $a, "abcdef", 4, -4);  // returns ""
          ::substr $a, "abcdef", -3, -1); // returns "de"
  • + New variable: <focitem> = currently focused item in tree or list. Useful in scripting; for example, this works in tree or list depending on focus:
      ::copytext <focitem>
    Note that, contrary to <curitem>, <focitem> will also return the focused item if it is not selected.
  • * Scripting RegExReplace: Now caret (^) & dollar ($) match the beginning & end of every line, before they'd only match the very start and very end of the entire string.

Sunday, March 16, 2008

v6.80.0112 - 2008-03-16 11:37

  • + Scripting got new commands:
      - Add
        Action: concatenates two or three strings
        Syntax: Add OutputVar, [String1], [String2], [String3]
          - OutputVar:   required, anything goes, case matters
          - String1/2/3: the strings
        Examples:
          ::add $x, "a", "b"      = ab
          ::add $x, "a", "b", "c" = abc

      - Mid
        Action: returns a part of a string
        Syntax: Mid OutputVar, String, [Start], [Length]
          - OutputVar: required, anything goes, case matters
          - String:    first string
          - Start:     start of returned part (defaults to 1)
          - Length:    length of returned part
        Examples:
          ::mid $a, "Maxi", 3    = xi
          ::mid $a, "Maxi", 3, 0 = x
          ::mid $a, "Maxi", 3, 1 = x
          ::mid $a, "Maxi", 3, 2 = xi
          ::mid $a, "Maxi", 3, 3 = xi
          ::mid $a, "Maxi", , 2  = Ma

      - Replace
        Action: replaces parts of a string
        Syntax: Replace OutputVar, String, Search, Replacement,
                MatchCase
          - OutputVar:   required, anything goes, case matters
          - String:      string to work on (haystack)
          - Search:      string to be replaced (needle)
          - Replacement: string to replace with
          - MatchCase:   compare method
            0: A=a
            1: A<>a
        Examples:
          ::Replace $a, "Maxi", "max", "Min"    = Mini
          ::Replace $a, "Maxi", "max", "Min", 1 = Maxi

      - RegExReplace
        Action: replaces parts of a string using a regular
                expression pattern
        Syntax: RegExReplace OutputVar, String, RegExPattern,
                Replacement, MatchCase
          - OutputVar:    required, anything goes, case matters
          - String:       string to work on (haystack)
          - RegExPattern: string to be replaced (needle)
          - Replacement:  string to replace with; may include
                          backreferences like $1
          - MatchCase:    compare method
            0: A=a
            1: A<>a
        Examples:
          ::RegExReplace $a, "Image[1].png",
            "(?#Remove common IE suffix)^(.+)\[[0-9]+\](\..+)$",
            "$1$2"
            (= Image.png)
          ::RegExReplace $a, "bob", "b$", "p"
            (= bop)

      - Status
        Action: shows text in statusbar
        Syntax: Status Text
        Examples:
          ::Status Done!
          ::Status It's <dhh:nn:ss>

Saturday, March 15, 2008

v6.80.0111 - 2008-03-15 11:35

  • + Menu Help: Added command to open the help file at section Scripting Commands Reference.
  • * Menu File | Settings: the Save... commands now feedback via statusbar, not via message box anymore.
  • * Time-stamping, aka "Touch": From now on, the milliseconds (yes, NTFS supports milliseconds in file times) will be set to 0 (zero) when you touch a file date. Before they were ignored, resp. set to some uncontrolled random value.
    Tip 1: Use the undocumented scripting command "msecs" to toggle showing milliseconds in the file list! :)
    Tip 2: Use the undocumented scripting command "touch" to set all three file dates of all currently selected items to now (setting the milliseconds to zero! :)

Friday, March 14, 2008

v6.80.0110 - 2008-03-14 13:42

  • + Added scripting to the help file. This was harder for me than coding scripting, and I'm ultra-ready for holiday now.
    A big thanks to jacky, the wicked wiki master -- the XYwiki helped a lot in organizing the stuff and even providing some copy+paste text snippets!
  • * Variables: <srctitle> is deprecated (but still supported). Use <srcname> instead.
  • ! Network: The logon dialog would not pop for mapped drives. Fixed.

Wednesday, March 12, 2008

v6.80.0108 - 2008-03-12 11:38

  • + Secondary Sorting: Now it's remembered between sessions and in tabs. Note that it was not possible to write backward compatibility code for all possible situations, so some of your saved tabs might be sorted differently than they were before when you open them the first time.
  • + Info Panel | Find Files: the "..." (Browse) button's context menu got two more entries. Just like that.