Here's the new BETA (32-bit)

Get a glimpse of the next XYplorer...
Locked
admin
Site Admin
Posts: 66427
Joined: 22 May 2004 16:48
Location: Win8.1, Win10, Win11, all @100%
Contact:

Re: Here's the new BETA

Post by admin »

Download the latest XYplorer BETA version (v7.80.0001, 07-nov-2008).
Choose one: (1) Install Package, (2) No-Install Package (each about 1 MB).

Code: Select all

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:
        [Settings]
        HideExtensions=1
    % 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.

admin
Site Admin
Posts: 66427
Joined: 22 May 2004 16:48
Location: Win8.1, Win10, Win11, all @100%
Contact:

Re: Here's the new BETA

Post by admin »

Download the latest XYplorer BETA version (v7.80.0000, 06-nov-2008).
Choose one: (1) Install Package, (2) No-Install Package (each about 1 MB).

Code: Select all

v7.80.0000 - 2008-11-06 12:00
    = NEW OFFICIAL RELEASE. Main changes since last release:
  +++ File Search: Now combines Boolean Logic with Regular Expressions.
  +++ 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.

admin
Site Admin
Posts: 66427
Joined: 22 May 2004 16:48
Location: Win8.1, Win10, Win11, all @100%
Contact:

Re: Here's the new BETA

Post by admin »

Download the latest XYplorer BETA version (v7.70.0023, 05-nov-2008).
Choose one: (1) Install Package, (2) No-Install Package (each about 1 MB).

Code: Select all

v7.70.0023 - 2008-11-05 15:58
    * Updated the help file.
    ! Fixed minor scripting glitches.

admin
Site Admin
Posts: 66427
Joined: 22 May 2004 16:48
Location: Win8.1, Win10, Win11, all @100%
Contact:

Re: Here's the new BETA

Post by admin »

Download the latest XYplorer BETA version (v7.70.0022, 04-nov-2008).
Choose one: (1) Install Package, (2) No-Install Package (each about 1 MB).

Code: Select all

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}. ");

admin
Site Admin
Posts: 66427
Joined: 22 May 2004 16:48
Location: Win8.1, Win10, Win11, all @100%
Contact:

Re: Here's the new BETA

Post by admin »

Download the latest XYplorer BETA version (v7.70.0021, 04-nov-2008).
Choose one: (1) Install Package, (2) No-Install Package (each about 1 MB).

Code: Select all

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:
        [Settings]
        HideExtensions=1
      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.

admin
Site Admin
Posts: 66427
Joined: 22 May 2004 16:48
Location: Win8.1, Win10, Win11, all @100%
Contact:

Re: Here's the new BETA

Post by admin »

Download the latest XYplorer BETA version (v7.70.0020, 03-nov-2008).
Choose one: (1) Install Package, (2) No-Install Package (each about 1 MB).

Code: Select all

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.
      Examples:
      - 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"
      Notes:
      - 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.
      Notes:
      - 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.
      Examples:
      - 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
          [General]
          RegExpRenameSep=" > "
        Example:
          ::setting "RegExpRenameSep", ">>";
        As with all setting statements, the original state from before 
        the script is automatically restored when the script is done.

admin
Site Admin
Posts: 66427
Joined: 22 May 2004 16:48
Location: Win8.1, Win10, Win11, all @100%
Contact:

Re: Here's the new BETA

Post by admin »

Download the latest XYplorer BETA version (v7.70.0018, 01-nov-2008).
Choose one: (1) Install Package, (2) No-Install Package (each about 1 MB).

Code: Select all

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})|}<crlf>");
      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.

admin
Site Admin
Posts: 66427
Joined: 22 May 2004 16:48
Location: Win8.1, Win10, Win11, all @100%
Contact:

Re: Here's the new BETA

Post by admin »

Download the latest XYplorer BETA version (v7.70.0017, 30-oct-2008).
Choose one: (1) Install Package, (2) No-Install Package (each about 1 MB).

Code: Select all

v7.70.0017 - 2008-10-30 13:09
    * Menu Go | History: The submenu has been completely removed and 
      replaced by a popup list. Reason: With a history of up to 256 
      entries a submenu is not the interface of choice anymore.
    * List Management | History:
      - The "Editor Mode" had to be disabled because it cannot handle 
        the additional data structures that are needed for HPT.
      - With HPT on, items pertaining to the current tab are displayed 
        in bold.
      - Changed order of display to latest-item-on-top, with reverse line 
        numbering. The line numbers match the numbers you see in history 
        popup menus.

admin
Site Admin
Posts: 66427
Joined: 22 May 2004 16:48
Location: Win8.1, Win10, Win11, all @100%
Contact:

Re: Here's the new BETA

Post by admin »

Download the latest XYplorer BETA version (v7.70.0016, 29-oct-2008).
Choose one: (1) Install Package, (2) No-Install Package (each about 1 MB).

Code: Select all

v7.70.0016 - 2008-10-29 15:56
    * History per Tab: Changes...
      - Now, history (per tab or global) popup menus will never contain 
        more than 32 items at once.
      - When HPT is active, Back and Forward do NOT cycle anymore 
        through the current tab's history, but show the old school 
        behavior of halting when there is no more.
      - History now can hold up to 256 items. Before it was 64.
      - Toolbar back/forward buttons are now blue if HPT is on.
    * Hotlist: Since the history got much larger, the Hotlist now is 
      confined to the 32 latest/youngest history entries of global 
      history.
    * Moved an item to a better place:  
      OLD: Menu View | Current Tab | Tab List...
      NEW: Menu Go | Tablist...
    + Menu View | Current Tab: moved these commands
        Move Tab Left (Ctrl+Shift+Left)
        Move Tab Right (Ctrl+Shift+Right)
      to the "Miscellaneous" category of CKS, into the new section "Tab 
      Functions".
      Reason: You would most likely access the functionality either by 
      KS, or by dragging the tabs with the mouse. The space in this menu 
      can be used better.
      For internal reasons I decided to give them a new Function ID, 
      which is normally a forbidden thing to do. In this case, however, 
      it could be justified because a bug was fixed by it: Their old 
      default KS (Ctrl+Shift+Left)/(Ctrl+Shift+Right) had been non-
      customizable KS, so you could not remove them, nor could you 
      actually use the keys for what they were meant originally (and 
      whence they are non-customizable): group-select in 2-dimensional 
      list views (Thumbs, List, Small Icons...).
      The commands' original IDs are now used by the functions that 
      replaced them in their original menu position. See next...
    + Menu View | Current Tab: Added commands
        Tab History...
        Tab Hotlist...
      Will do what you think they do. Even when HPT is off.
    * Icon Overlays: The recent solution for refreshing icon overlays in 
      non-current tree items lead to severe performance problems in some 
      systems. A new way will be found, later.

admin
Site Admin
Posts: 66427
Joined: 22 May 2004 16:48
Location: Win8.1, Win10, Win11, all @100%
Contact:

Re: Here's the new BETA

Post by admin »

Download the latest XYplorer BETA version (v7.70.0012, 28-oct-2008).
Choose one: (1) Install Package, (2) No-Install Package (each about 1 MB).

Code: Select all

v7.70.0012 - 2008-10-28 15:00
  +++ Added History per Tab (HPT). To enable it check "History per tab" 
      in Configuration | General. In a nutshell, HPT means that Back and 
      Forward move within each tab's individual history, as opposed to 
      the global history over all tabs.
      If HPT is enabled then:
      - Back and Forward (TB buttons and KS) are confined to each tab's 
        individual history.
      - Back and Forward will cycle through the current tab's history 
        (contrary to global history, where the move halts at both ends). 
        Seemed more natural to me. So, if there's more than one history 
        item pertaining to the current tab, then both buttons (Back and 
        Forward) are enabled, else none is enabled.
      - The Back and Forward buttons's "arrow dropdowns" will each show 
        one whole cycle in the repective back or forward order.
      - In the all-history popup menu (triggered via right-click 
        "Back"/"Forward" TB buttons, or via KS) those history items 
        belonging to the current tab are shown bold.
      - If "History without duplicates" (Config | General) is enabled 
        then duplicates on different tabs are tolerated.
      - The per-tab-data are saved between sessions. They are even 
        maintained and saved if you untick HPT. So you can enable it at 
        any time and get the desired functionality right away.
    * History now can hold up to 64 items. Before it was 32.

admin
Site Admin
Posts: 66427
Joined: 22 May 2004 16:48
Location: Win8.1, Win10, Win11, all @100%
Contact:

Re: Here's the new BETA

Post by admin »

Download the latest XYplorer BETA version (v7.70.0010, 27-oct-2008).
Choose one: (1) Install Package, (2) No-Install Package (each about 1 MB).

Code: Select all

v7.70.0010 - 2008-10-27 14:38
  +++ Scripting: Now there are global variables.
      By default, all variables in XY scripting are local, i.e. they are 
      not shared between called and calling scripts. In other words, 
      whenever one script calls another script (e.g. using commands 
      "sub" or "load"), a new local namespace is created by the called 
      script and pushed on the stack.
      Generally, global variables are shared between scripts. However, 
      the mechanism of "globalization" -- (almost) identical to the one 
      used in PHP -- now added to scripting gives you maximum control 
      over what is shared and where. It's implemented by means of a new 
      command:
      Name: Global
      Action: Define one or more variables as global
      Syntax: global variable(s)
        variable: A single variable, or a comma-separated list of up to 
          10 variables. If a variable has already been defined as global 
          before, then the global command initializes it to its current 
          global value, else it is initialized to an empty string.
      Example:
        Here are 2 scripts where the first is calling the second:
        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        "script1"
          $foo = 4; // set local value: new local var $foo is created
          msg $foo; // 4 (local)
          // now make $foo global
          // it's initialized to [empty] (assuming nothing created
          // a global $foo before with a different value, which is 
          // possible when "script1" has been called by yet another
          // script that has declared $foo as global)
          global $foo;
          msg $foo; // [empty] (global)
          $foo = 8; // set global value
          msg $foo; // 8 (global)
          
          sub script2; // go down
          
          msg $foo; // 16 (global, as set in script2)
          msg $bar; // $bar (uninitialized, not a variable)
          // make $bar global
          // it's set to "tequila" (as previously set in script2)
          global $bar;
          msg $bar; // tequila
        
        "script2"
          msg $foo;   // $foo (uninitialized, not a variable)
          $foo = 15;  // set local value: new local var $foo is created
          msg $foo;   // 15 (local)
          // now make $foo global
          // it's set to 8 (as previously set in script1)
          // also create a new global $bar
          global $foo, $bar;
          msg $foo;   // 8 (global)
          $foo = 16;  // set global value
          $bar = "tequila";  // set global value
        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      
      Notes
      - You can have as many global vars as you like, but it be no more 
        than 10 per "global" statement for internal reasons. IOW, add a 
        new "global" line for each pack of 10 variables if you really 
        need that many.
      - It's recommended that you reflect the global nature of a variable 
        in the variable name, for example by prepending $g_ to global 
        vars. It will make your code easier to read and maintain.
      
    * Scripting | Step Mode: Improved handling of binary data. There were
      some display glitches with binary file data, and unnecessary 
      slowness. Now you can make a pretty fast copy of the current file, 
      even if the file is not small and with step mode enabled, using 
      e.g. this:
        ::writefile("<curbase>-copy.<curext>", 
          readfile("<curname>", "b"), ,"b");
    * Scripting | Step Mode: Variables on stack are now displayed with 
      up to 256 chars (rest cropped). Non-printable chars are displayed 
      as ".".

admin
Site Admin
Posts: 66427
Joined: 22 May 2004 16:48
Location: Win8.1, Win10, Win11, all @100%
Contact:

Re: Here's the new BETA

Post by admin »

Download the latest XYplorer BETA version (v7.70.0007, 24-oct-2008).
Choose one: (1) Install Package, (2) No-Install Package (each about 1 MB).

Code: Select all

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

admin
Site Admin
Posts: 66427
Joined: 22 May 2004 16:48
Location: Win8.1, Win10, Win11, all @100%
Contact:

Re: Here's the new BETA

Post by admin »

Download the latest XYplorer BETA version (v7.70.0004, 21-oct-2008).
Choose one: (1) Install Package, (2) No-Install Package (each about 1 MB).

Code: Select all

v7.70.0004 - 2008-10-21 14:41
    + Scripting got a new function.
      Name:   WriteFile
      Action: Write data to file.
      Syntax: writefile(filename, data, [on_exist], [mode])
        filename: file full path/name;
                  will be created if does not exist yet
        data:     string data to write
        on_exist:
          o:  [default] create new file/if existing: overwrite
          a:  create new file/if existing: append
          n:  create new file/if existing: do nothing
        mode:
          t:  [default] text ASCII (1 byte per char);
              wide chars (upper Unicode) are represented by "?"
          u:  utf16: 2 bytes per char; with LE BOM at file beginning
              LE BOM = Little Endian Byte Order Mark: 0xFFFE
          b:  binary: raw bytes (also 2 bytes per char, but no BOM)
        return: 1 on success, 0 on failure
      Examples:
        ::$a = writefile("C:\Temp\test_A.txt", "text");
          Creates a 4 byte file.
        ::$a = writefile("C:\Temp\test_A2.txt", "text ".chr(20000));
          Creates a 6 byte file.
        ::$a = writefile("C:\Temp\test-U.txt", "text ".chr(20000), ,"u");
          Creates a 14 byte file (2 bytes BOM + 2 * 6).

      Note: WriteFile() is implemented as a function (instead of a 
      statement) because the return value will be useful once If/Then 
      blocks are implemented. You may, however, call functions without 
      using a dummy variable. See here below.
    + Scripting: Now you may call functions without caring for the 
      return. For example,
        ::writefile("C:\Temp\test_A.txt", "text");
      instead of
        ::$success = writefile("C:\Temp\test_A.txt", "text");
      Internally, the dummy statement "call" is prepended:
        ::call writefile("C:\Temp\test_A.txt", "text");
      In step mode you will see the return of writefile() as argument of 
      "call".
    + Scripting: Comparisons now support the Like (LikeI) operator. 
      General form:
        String Like Pattern   (case-sensitive)
        String LikeI Pattern  (case-insensitive)
      Where string is any string expression and Pattern may contain the 
      usual wildcards and special chars used in XY patterns (*?#[]).
      Examples:
        ::echo "abc" Like "a*"; //1
        ::echo "Abc" Like "a*"; //0!
        ::echo "Abc" LikeI "a*"; //1!
        ::echo "It's " . (<date yyyy> Like "20??"?:"not ") .
          "the 21st century";
          
      Note that capitalization matters: "LIKE" or "Likei" won't work.
    * File List: From now on, "Rename On Slow Double-Click" (menu View | 
      List Style) will only happen when no other than the clicked item is 
      selected. This is a wonderful and relaxing detour from the Windows
      Explorer standard where clicking on any out of a bunch of selected 
      files will enter rename mode -- did you really ever want this to 
      happen??

admin
Site Admin
Posts: 66427
Joined: 22 May 2004 16:48
Location: Win8.1, Win10, Win11, all @100%
Contact:

Re: Here's the new BETA

Post by admin »

Download the latest XYplorer BETA version (v7.70.0003, 20-oct-2008).
Choose one: (1) Install Package, (2) No-Install Package (each about 1 MB).

Code: Select all

v7.70.0003 - 2008-10-20 10:09
  +++ File Find | Contents: Now pattern matching is supported! This 
      means you may enter wildcards * and ? in your content definition.
      Rules:
      - Since larger files are read chunkwise (performance!) there are 
        certain limits to the scope of your pattern:
        A pattern "a*b" is guaranteed to be found if "a" and "b" are 
        within a range of 1,024 bytes! It also *might* be found if "a" 
        and "b" are within a range of 1,001 to 32,768 bytes! It will 
        certainly not be found if "a" and "b" are only within an even 
        larger range.
      - Just like with non-wildcard searches it is assumed that you look 
        for a match anywhere within the file, so asterisks (*) are 
        silently added to your pattern at both ends in case they are 
        missing. This is just to spare you typing too many asterisks. So 
        you may simply enter "D?g" to look for "D?g" anywhere in the file 
        (match file contents with "*D?g*").
    + Now you can define the default start location for a new tab. It's 
      currently done as a tweak, but I'm ready to raise it to the GUI 
      level if demand is there. For example:
        [Settings]
        StartPathNewTab=C:\
      Leave empty to use the location of the current tab.
    ! SC Report(): Returned rubbish if Line Numbers column was 
      invisible. Fixed.

admin
Site Admin
Posts: 66427
Joined: 22 May 2004 16:48
Location: Win8.1, Win10, Win11, all @100%
Contact:

Re: Here's the new BETA

Post by admin »

Download the latest XYplorer BETA version (v7.70.0002, 19-oct-2008).
Choose one: (1) Install Package, (2) No-Install Package (each about 1 MB).

Code: Select all

v7.70.0002 - 2008-10-19 15:40
  +++ Scripting got a powerful new function called Report(). Better 
      reporting has been on my list since years (i.e. long before 
      scripting) but I never got around doing it because I did not like 
      the idea of adding an extra GUI for it, resp. I did not like my 
      GUI ideas for it. Now, with scripting, the perfect GUI-free 
      environment for fully customizable one-click reports is here!
      
      Name:   Report
      Action: Return a report of the current file list contents.
      Syntax: report([template], [onlyselected=0], [header], [footer])
        template: [optional]
          Defines the layout of one line (file record); for each 
          reported file one line is created based on this template.
          If missing or empty: Take the current list data as is.
        onlyselected:
          0: [default] report all current list items
          1: report all currently selected list items
        header: any string data to be put at the top of output
        footer: any string data to be put at the bottom of output
        return: the report
        
      Omitting the Template
      ~~~~~~~~~~~~~~~~~~~~~
      If you omit the template argument (or pass "") the report you get 
      is identical to the list you see: Same types and sequence of 
      columns, same file data in same format. The fields are separated 
      by TAB characters.
      
      Using the Template
      ~~~~~~~~~~~~~~~~~~
      If you use the template argument you are in full control and can 
      decide what is shown, where it is shown, and how it is shown.
      The various file data are defined by fields, corresponding to the 
      columns the file list. A field consists of a field name and, in 
      some cases, an optional format definition, separated from the 
      field name by a single blank. The fields are enclosed in curly 
      brackets {}, and they are not case-sensitive (i.e. a=A).
      Example for a template argument:
       "No. {#}, {name}, {size kb} ({size b}), {modified yyyy-mm-dd}"
      
      The following fields are currently supported (they obviously match 
      the file list's column headers):
      - Browse Mode
        {#}, {Name}, {Ext}, {Size}, {Type}, {Created}, {Modified}, 
        {Accessed}, {Attr}, {Len}
      - Find Mode
        {#}, {Name}, {Ext}, {Size}, {Type}, {Created}, {Modified}, 
        {Accessed}, {Attr}, {Len}, {Path}
      - Drives Mode
        {#}, {Name}, {Type}, {Total Size}, {Used Space}, {Free Space}, 
        {Free %}, {Per Cluster}, {Vol Serial}, {File System}
      
      Optional format definitions for {Size}:
        {Size KBR}    KB (rounded up)
        {Size KB}     KB
        {Size B}      Bytes (no suffix)
        {Size BB}     Bytes (with suffix)
        {Size FLEXR}  Flexible (rounded up)
        {Size FLEX}   Flexible
        {Size RAW}    Raw bytes (no thousand separators)
        {Size MB}     MB
        {Size GB}     GB
        {Size}        [no format: use current Size Column Format]
      
      Optional format definitions for {Created}, {Modified}, {Accessed}:
        {Created yyyy-mm-dd hh:nn:ss}
          etc. ...    the usual date format definitions...
        {Created}     [no format: use current Date Column Format]
      
      Optional format definitions for {#}: 
        {# @@@@}      fill with leading blanks
        {# 000}       fill with leading zeroes
        Note that you cannot combine @ and 0 to have first leading 
        blanks and then leading zeroes.
      
      Additional Special Fields
      ~~~~~~~~~~~~~~~~~~~~~~~~~
      {Fullname}
        - Field is set to the full path/name of the file.
        - Obviously only for Browse and Find modes, not Drives.
      
      {Dir dir_value|file_value|drive_value}
        - Field is set to "dir_value" if item is a directory.
        - Field is set to "file_value" if item is a file.
        - Field is set to "drive_value" if item is a drive.
        Note: "Dir" might be a confusing name for this field, but find a 
        better one... "file system object type"...?

      {Zebra odd_value|even_value[|divisor=2]}
        - Field is set to "odd_value" in all odd lines.
        - Field is set to "even_value" in all even lines.
        - The divisor defaults to 2 but you can set it to any larger 
          value so that e.g. the "even_value" (the value that divides by 
          the divisor without remainder) is set to every 5th line, the 
          "odd_value" to all other lines.
        You can use this field to apply alternate formatting, e.g. to 
        achieve a zebra striping effect if you use HTML for your report, 
        or to group the output into blocks of a certain size. See 
        examples below.
      
      Examples
      ~~~~~~~~
      - ::text report();
        Displays the current file list "as is" in a multiline textbox.
      - ::text report("{modified yyyy-mm-dd hh:nn:ss}", 1);
        Displays the modified date of all selected items in a multiline 
        textbox.
      - ::text report("{name}; {size KBR}; {modified}", ,
          "Report on <curpath>, <date><crlf>", "---");
        Displays a mini-report of the current file list in a multiline 
        textbox.
      - ::text report('The item "{name}" has {size BB}.');
        These fields have nothing to do with scripting variables, hence 
        they are resolved whether single-quoted or not.
      - ::text report('The file "{fullname}" has {size BB}.');
        Displaying the full name.
      - ::text report("{name} is a {dir folder|file|drive}");
        Showing whether item is file, folder, or drive.
      - ::text report("{zebra 1|2} - {#} {name}");
        Prints "1" ("2") in front of every odd (even) line.
      - ::text report("{# @@@@} {name}{zebra |<crlf>|5}");
        Fill leading blanks to the line number, and add an empty line 
        after every 5 lines. Note that the XY variable <crlf> works 
        within the double-quoted argument.
      - ::text report("{name}, {free %}, {total size gb}");
        Mini-report for the drives listing (MyComputer node).
        
      Remarks
      ~~~~~~~
      - The sort order is the one currently present in the file list.
      - The {#} field (line number) is not filled with the line number 
        each file currently has in the file list, but simply numbers the 
        lines in the report starting with 1. This coincides with the 
        actual line numbers in the file list only if the report features 
        all files (no just a subset of selected ones).
      - You can use any number of fields in the template, and it's no 
        problem to use the same field more than once with different 
        format, as in "... {size kb} ({size bb}) ..."
      - The Report() function allows you to create full blown HTML-
        reports of any parts of your file system or of search results! 
        You may even show icons for file types if you provide the image 
        files and give them names that match the extension, e.g. type-
        txt.gif, type-png.gif, etc. which then would be referred to like 
        "C:\Your\Path\type-{ext}.gif" -- yep, as simple as that!
      - In cooperation with soon coming up function WriteFile() you will 
        be able to easily write the created reports to your harddisk.
        
    * File List: Now, no size suffix is displayed for empty files. So, 
      before you have seen "0 KB", now you just see "0". It's clearer 
      for the eye, and even slightly more correct, as "nothing" has no 
      unit.
    ! Menu User | Manage Commands...: Sorting UDCs via drag and drop 
      didn't work. The item position was changed, but it was not saved 
      when clicking ok. Fixed.

Locked