Choose one: (1) Install Package, (2) No-Install Package (each about 1 MB).
Code: Select all
v7.40.0030 - 2008-08-24 16:42
! Color Filters: Due to a temporary glitch, patterns like
"D:\*readme*" did not work anymore. Fixed.
Code: Select all
v7.40.0030 - 2008-08-24 16:42
! Color Filters: Due to a temporary glitch, patterns like
"D:\*readme*" did not work anymore. Fixed.
Code: Select all
v7.50.0000 - 2008-08-25 15:00
= NEW OFFICIAL RELEASE. Main changes since last release:
+++ Folder View Settings: Now you can save and auto-restore folder-
specific view settings.
+++ The thumbnails view mode has been redesigned.
+++ Scripting. A new "timestamp" command gives you programmatic
control over all three file dates of any file or folder on your
system.
+++ Start Up. Now you can select the Application Data Path using a
command line switch. This means you can have any number of totally
independent configurations for one single executable. Choose your
preferred work environment via a simple Windows shortcut!
+++ Tabs. List Style (line numbers, auto-size, grid...) and Column
visibility are now tab-wise.
+++ Now the Catalog can be moved above the Tree.
+++ Rename Preview. The size of the preview window now automatically
adjusts to best fit the info.
+++ Batch Rename. New "Increment On Collision" switch (/i).
Automatically avoids collisions with existing files.
Code: Select all
v7.50.0001 - 2008-08-28 13:16
*** Scripting syntax enhanced:
(1) Blocking of variable interpolation
Variables embedded in double-quoted or unquoted strings are
replaced with their corresponding value. Now, you can block
variables from this so-called variable interpolation by
putting them inside single-quoted strings.
This applies to all types of variables in XYplorer scripting:
1. xy native vars (<date>...)
2. environments vars (%TMP%...)
3. user vars in scripting ($a...)
(2) Introduction of a concatenation operator
Strings and variables now can be concatenated by . (dot). Any
number of blanks surrounding the concatenator are ignored. The
following scripts are identical:
::msg "Hi there!"
::msg "Hi "."there!"
::msg "Hi " . "there!"
::msg "Hi " . "there!"
::msg "Hi"." "."there!"
Examples
~~~~~~~~
::msg "The time is " . <date hh:nn:ss> . "."
> The time is 08:40:17.
Variable is outside of any quotes and simply resolved.
::msg "The time is <date hh:nn:ss>."
> The time is 08:40:17.
Variable is in dbl-quotes and interpolated.
::msg 'The time is <date hh:nn:ss>.'
> The time is <date hh:nn:ss>.
Variable is not resolved because it's in sgl-quotes.
::msg "The time is '<date hh:nn:ss>'."
> The time is '08:40:17'.
Variable is resolved because it's in a dbl-quoted string.
The additional sgl-quotes do not count because they themselves
are inside a dbl-quoted string.
::set $a, "Hi!"; msg $a
> Hi!
::set $a, "Hi!"; msg "$a"
> Hi!
::set $a, "Hi!"; msg '$a'
> $a
::msg '%TMP% = ' . %TMP%
> %TMP% = C:\Temp
::set $date, <date>; msg '$date = ' . $date
> $date = 28.08.2008 12:23:12
This would not have been possible with the previous syntax.
Since unquoted dots are now interpreted as concatenators you must
quote your dots if you want them as dots:
Old: ::msg Hi.
Now: ::msg "Hi." OR ::msg Hi."."
BTW, you could also use single quotes here, of course. They make a
difference to dbl-quotes only if variables are included.
Note that sgl-quotes within sgl-quotes have to be doubled
(analogue to dbl-quotes within dbl-quotes)!
:: msg 'You can''t!'
> You can't!
But dbl-quotes within sgl-quotes (and vice versa) do not have to
doubled:
:: msg 'Hi, "baby"!'
> Hi, "baby"!
You can, of course, as well concatenate variables using the dot.
But the dot is not necessary since interpolation sets in in
unquoted and dbl-quoted strings:
::set $a, 1; set $b, 2; msg $a.$b
::set $a, 1; set $b, 2; msg $a$b
::set $a, 1; set $b, 2; msg "$a$b"
> all the same: 12
If a variable is undefined it will not be replaced by anything:
::set $a, 1; msg $a.$b
> 1$b
The new syntax allows for special options with Batch Rename
scripts. This will be resolved to the modified date of each
selected file (the date variable is resolved by the rename
function, not by the script parser!):
::rename b, '*-<datem yyyy>', p
This will be resolved to the modified date of the focused &
selected file (the date variable is resolved by the script
parser):
::rename b, "*-".<datem yyyy>, p
::rename b, "*-<datem yyyy>", p
::rename b, *-<datem yyyy>, p
(all are identical)
! Scripting: Resolved variables were resolved again (aka repeated
processing). Fixed. For example:
::set $a, "$b"; set $b, "B"; msg $a and $b;
was: > B and B = WRONG
now: > $b and B = OKAY
*** Scripting: Now variable names must conform to strict rules.
(1) Variables are represented by a dollar sign followed by the
name of the variable.
(2) The variable name is case-sensitive (this is NOT new).
(3) A valid variable name starts with a letter or underscore,
followed by any number of letters, numbers, or underscores.
(4) A letter is a-z, A-Z (different here from PHP which also
allows the ASCII characters from 127 through 255).
Good variables: $a, $ABC, $good_variable, $a1, $a_, $_a, $_
Bad variables: a, ABC, $1, $ä, $., $
This change also allows to handle the following issue in previous
versions, where variable parsing had ignored word boundaries
because word boundaries had been allowed inside variables:
::set $a, "1"; set $ab, "2"; msg $ab;
was: > 1b = WRONG
now: > 2 = OKAY
Also the order of variable declaration is now completely
irrelevant.
- Scripting "addstr" command removed. Reason: same can be done
using concatenators now.
Before:
::addstr $x, 1,2,3,4,5,6,7,8,9,10,11
> $x = "12345678910"
The 11th argument is discarded.
Now:
::set $x, 1.2.3.4.5.6.7.8.9.10.11
> $x = "1234567891011"
Any number of parts can be concatenated.
! Scripting: Arguments containing the characters ~ AND % anywhere
where converted to UPPERCASE. Arguments containing the characters ~
AND % AND \ were cropped after (and including) \. Extremely
bizarre bug. Fixed.
* XYplorer Variables: The following deprecated date variables are
not supported anymore from now on:
<dyyyymmdd_hhnnss> : date now
<myyyymmdd_hhnnss> : modified date of current item
<srcmyyyymmdd_hhnnss> : modified date of source item
Use these forms instead:
<date yyyymmdd_hhnnss> : date now
<datem yyyymmdd_hhnnss> : modified date of current item
<srcdatem yyyymmdd_hhnnss> : modified date of source item
Code: Select all
v7.50.0002 - 2008-08-29 09:50
* Scripting command enhanced:
- set
Now it can be used to resolve any environment and XY-native
variables found inside the 'value' argument. It's like a second
processing, since all arguments get already resolved one time
when they are passed to the function.
New Syntax: set output, value, [r]
output: required, variable
value: required, anything goes
r: optional, resolve any env and xy vars found in value
Examples:
::copytext '%tmp%'; set $a, <clipboard>; msg $a
> %tmp%
::copytext '%tmp%'; set $a, <clipboard>, r; msg $a
> C:\Temp
::copytext '<date>'; set $a, <clipboard>; msg $a;
> <date>
::copytext '<date>'; set $a, <clipboard>, r; msg $a;
> 29.08.2008 08:34:37
::set $a, '<date>'; set $b, $a; msg $b;
> <date>
::set $a, '<date>'; set $b, $a, r; msg $b;
> 29.08.2008 08:34:37
! Scripting: Fixed further issues with repeated processing.
These examples now work as expected:
::copytext '%tmp%'; msg <clipboard> + %windir%;
> %Tmp% + C:\WINDOWS
::copytext '<date>'; set $cb, <clipboard>; msg $cb;
> <date>
::copytext 'The <clipboard> is exploding!';
set $a, <clipboard>; msg $a
> The <clipboard> is exploding!
::set $c, 'ROAAR!!!'; copytext '$c'; msg <clipboard>
> $c
* Release Package: From now on a sample catalog.dat file is
distributed and will be installed by the installer if no
catalog.dat file already exists.
Code: Select all
v7.50.0003 - 2008-08-29 21:00
+ Catalog Properties Dialog: The edit boxes now support UNICODE.
! Scripting: Fixed two glitches with variable processing.
+ New variable: <xyver> = current XYplorer version.
+ Scripting got a new command:
- Self
Action: get info about the currently running script
resp. script file
Syntax: self output, info
output: required, variable
info: required, any of the following:
file = current script file (empty if none)
path = current script file's path (app data if none)
base = current script file's base (empty if none)
script = current script
Examples:
::self $a, path; msg $a;
::self $a, script; msg $a;
Of course, the info types file, path, and base only make sense
when the script is running from a script file.
Code: Select all
v7.50.0005 - 2008-08-31 13:38
* Menu File | To Clipboard: Added command "Image". If the current
file is an image file this command will copy the image directly to
the clipboard.
* Release Package: Now, a default catalog file called
"CatalogDefault.dat" is installed in (copied to) the application
path (AP).
If on application startup no "catalog.dat" file is found in the
application data path (ADP), then "[AP]\CatalogDefault.dat" is
copied to "[ADP]\catalog.dat".
Note that the installer will copy "CatalogDefault.dat" only if it
does not exist. It will never overwrite any already existing
"CatalogDefault.dat" even if it is older.
This means:
(1) The installation, even if using the non-install package, and
even if your ADP is identical to your AP, will never overwrite
your current "catalog.dat".
(2) You can use "[AP]\CatalogDefault.dat" for your own purpose as
a backup for "[ADP]\catalog.dat". But note that when you use
the *non*-install package, "CatalogDefault.dat" might be
overwritten on extracting the archive.
Code: Select all
v7.50.0008 - 2008-09-01 15:35
+ List Management Dialog: The Editor now supports UNICODE.
+ Edit boxes: Added a few service key combos to convert selected text
F5: to Title Case (converts the first letter of every
word in string to upper case); this is for ANSI
strings only
Shift+F5: to UPPER CASE
Ctrl+F5: to lower case
If no text is selected then the conversion applies to the
character right after the caret. Works in all editable multiline
boxes, and also in Rename Boxes and Font Preview Sample.
BTW, took those KS from UltraEdit.
+ Scripting: Now you have the usual variable assignment syntax using
the equal(=)-operator. Any number of blanks surrounding the "=" are
ignored. This syntax is an alternative to the set command, and
internally it's converted to a set command.
For example, these now work indentically:
::set $a, "Hi!"; msg $a;
::$a = "Hi!"; msg $a;
Note that the syntax also supports a 2nd parameter -- a bit unusal
but why not:
::copytext '%tmp%'; set $a, <clipboard>, r; msg $a
::copytext '%tmp%'; $a = <clipboard>, r; msg $a
* Scripting commands enhanced:
- getkey, setkey
Now they support reading/writing values of up to 32,766
characters. Before the limit was 1,023.
! Scripting command "self": Output variable was not reset to empty
when an illegal parameter was passed. Fixed.
* Menu File | To Clipboard | Image: Now you can assign a KS.
! Preview Tab | Image Preview | Context Menu: "Copy Original" failed
with crash on big pictures (approx 10+ Megapixels, depending on
system). Now it does not crash anymore.
! Wildchar use in Go to feature was broken. Fixed.
+ INI-Tweak to automatically reconnect mapped drives on startup.
[General]
ReconnectMappedDrives=1
Code: Select all
v7.50.0009 - 2008-09-01 23:00
! FVS: On a fresh install removing a previously saved Folder View
could lead to a total reset of all applied settings (because the
Automatic Default Folder View was not yet initialized but
applied). While totally harmless because only display is
concerned, especially the disappearing icons in the file list
(because the List Style was set to all False) could easily lead to
a state of shock with some user. Fixed.
! Various bugs. Don't ask. ;)
Code: Select all
v7.50.0010 - 2008-09-02 15:26
+ Scripting got a new command:
- LoadSearch
Action: Load a previously stored search template and
(optionally) run a search based on it.
Syntax: loadsearch template, [options=rl]
template: [required] search template name
as displayed in the search template dialog
options: [optional, default = rl]
r = Run Search
Run search after the template is loaded. Else
just the Find Files tab is adjusted to the
loaded template.
Run search after the template is loaded. Else
just the Find Files tab is adjusted to the
loaded template.
l = Load Search Location
Search the location that's stored with the
template. Else search the current location.
e = Load Excluded Folders
Exclude folders as stored with the template.
Else use the currently excluded folders.
x = (none of the above)
Examples:
::loadsearch "Created or Modified This Hour", r
= Load template "Created or Modified This Hour" and run a
search in the current location.
::loadsearch "Reset Find Options", x
= Load template "Reset Find Options" and do nothing else.
::loadsearch "Videos in Temp Internet Files"
= Load template "Videos in Temp Internet Files" and run a
search in the stored location (Temporary Internet Files).
Remarks
~~~~~~~
- Search templates are INI-files that are all stored in a predefined
folder: <xydata>\FindTemplates. The template name (as used in
loadsearch) is usually identical to the base name of the
template file. Template names, however, may contain characters
that are illegal for file names; these characters are encoded in
the filename using the scheme "% & Hex(charcode)".
You create and manage search templates using menu Edit | Search
Templates...
- The loadsearch command is the nexus of two of XYplorer's
strongest features: Scripting and File Search. In combination
with the Catalog, UDCs, and XYS files, you can now easily built
handy libraries of complex live searches. A Pan Galactic Time
Saver!
* Menu Edit | Search Templates...: Pimped up the dialog with
icons, tooltips, and better logic.
! Scripting: Command "new" was partly broken for a day. Fixed.
- Removed (v7.50.0008 - 2008-09-01 15:35):
INI-Tweak to automatically reconnect mapped drives on startup.
[General]
ReconnectMappedDrives=1
Code: Select all
v7.50.0011 - 2008-09-02 21:36
+ INI-Tweak to make dropping images from Firefox 3 work.
[General]
WorkAroundFirefox3ImageDropBug=1
If set to 1, the images are actually *downloaded* from their web
location to your harddisk.
Code: Select all
v7.50.0012 - 2008-09-03 15:31
! Scripting: Variable assignment did not resolve any variables in
the part right of the equal(=)-operator. Fixed.
! INI-Tweak WorkAroundFirefox3ImageDropBug: When you dropped an
image that was a link at the same time, you would get the HTML
code of the linked page under the name of the image file. Fixed:
Now, you still get the linked HTML but under the full name of the
corresponding URL (illegal chars replaced by the user-configured
replacement char), with the extension .HTM appended.
If the resulting path/name is longer than 200 chars it is cropped
(to give you a little room for moving that file).
Code: Select all
v7.50.0013 - 2008-09-04 15:13
+ Scripting got a new command:
- Download
Action: Download a file from the internet to a specified
location.
Syntax: download sourceurl, [targetfile], [options]
sourceurl: [required] any URL (http:// or ftp://)
targetfile: [optional] full path/file of desired target
UNC works as well
Defaults:
- if empty: <curpath>\sourceurlfilename
- if only file (or relative path): <curpath>\targetfile
- if only path: <targetfile>\sourceurlfilename
- if sourceurl has no filename: "Download.dat"
options: [optional] choose one or none:
o = on collision: overwrite without asking
i = on collision: auto-increment targetfile
(empty) = on collision: ask before overwriting
Examples:
::download "http://www.xyplorer.com/tour/images/pfa.png"
= downloads "pfa.png" to "<curpath>\pfa.png"
::download "http://www.xyplorer.com/tour/images/pfa.png", , i
= downloads "pfa.png" to "<curpath>\pfa.png"
adds increment (e.g. pfa-01.png) if pfa.png already exists
::download "http://www.xyplorer.com/download/xyplorer_full.zip",
"xy.zip"
= downloads "xyplorer_full.zip" to "<curpath>\xy.zip"
::download "http://www.xyplorer.com/"
= downloads "index.htm" to "<curpath>\Download.dat"
::download "ftp://ftp.editplus.com/epp230hlp.zip", "D:\Download\"
= downloads "epp230hlp.zip" to "D:\Download\epp230hlp.zip"
Remarks
~~~~~~~
- The application waits until the download is complete. You can
abort the download at any time by pressing ESC.
- The maximum file size is set to 100 MB (but see the previous
point...).
- The download progress is shown in the statusbar.
- If there is no internet connection, your system might attempt to
establish one (if you configured it like that) and then continue
with the download.
- If sourceurl is ftp:// then there is currently no test for
existence of the remote file, nor can its size be determined.
Nevertheless the download works (but you cannot know how long it
will take).
- Only anonymous FTP is supported.
- After a successful download the Last Target Path is set (menu Go
| Go To Last Target).
+ Scripting commands enhanced:
- setting, settingp
New named argument "nowatchduringfileop"
= enable/disable "No Refresh during File Operations"
Example:
::setting nowatchduringfileop, 1;
= Auto-Refresh is suspended during file operations
As with all setting statements, the original state from before
the script is automatically restored when the script is done.
* Scripting: The "Continue the script?" prompt now displays the
current script line.
Code: Select all
v7.50.0014 - 2008-09-04 21:42
* Scripting command "download": Changed the default file name for
the target from "Download.dat" to "Download.htm". Reason: it is very
likely HTML code what you get when you pass just a folder to a
http:// address.
Code: Select all
v7.50.0016 - 2008-09-06 10:13
+ Scripting got a new command:
- ReadURL
Action: Read the contents of a web file into a variable.
Syntax: readurl output, url
output: [required] variable
url: [required] URL
Examples:
::readurl $a, "http://www.xyplorer.com/index.htm"; text $a
* Scripting command "download": Changed the default file name for
the target *again*. Now, to keep it in line with those other
creations of XYplorer, the current date is added (and only then,
if necessary, a number increment):
Download-20080905.htm (download URL to file)
DroppedText-20080905.txt (drop text to file)
Clipboard-20080905.png (paste text/image to file)
BTW, you can define the format of those dates in Configuration |
Report | Filename templates | Date suffix.
* Scripting command "status": Now it waits until any pending
processes are completed before setting the new status message.
* Scripting: Before, line breaking of texts was handled by a global
"line breaker" (that could be defined using the command "br"). This
line breaker was unconditionally active in three commands:
copytext, msg, and text. Now, the line breaker is passed as an
optional argument to each of these commands and thus handled
individually. This gives you much better control.
New syntax for the following commands:
- copytext text, [append], [linebreaker]
- msg text, [buttons], [linebreaker]
- text Text, [Width=600], [Height=400], [WindowCaption],
[Wrap], [linebreaker]
Where linebreaker (optional) is any character sequence to be
replaced by a line break.
Examples:
::copytext "Blah<br>Blah", , "<br>"
::msg "Continue script?##Sure??", 1, "#"
- Scripting: Removed command "br" (see previous paragraph).
* Statusbar: Now displays a Pilcrow (¶) where a message has a line
break. Try this to see it:
::copytext "Blah<br>Blah", , "<br>"
Code: Select all
v7.50.0018 - 2008-09-07 10:42
* Scripting: Backward-compatibility needs made it necessary to set
the old line breaker <br> as default for the optional linebreaker
argument in the following functions:
- copytext text, [append], [linebreaker="<br>"]
- msg text, [buttons], [linebreaker="<br>"]
- text Text, [Width=600], [Height=400], [WindowCaption],
[Wrap], [linebreaker="<br>"]
This means, to avoid the automatic replacing of <br> with CRLF you
have to pass an empty string ("") as line breaker argument.
Examples:
::copytext "Blah<br>Blah"
= copies "Blah¶Blah" (<br> is replaced with CRLF)
::copytext "Blah<br>Blah", , "<br>"
= copies "Blah¶Blah" (<br> is replaced with CRLF)
::copytext "Blah<br>Blah", , ""
= copies "Blah<br>Blah" (<br> is NOT replaced)
::readurl $a, "http://www.xyplorer.com/index.htm";
text $a,,,,,""
= shows HTML without replacing <br> with CRLF
! Menu File | Settings | Load Configuration: INI-files containing
extra-dots (e.g. "XYplorer7.50.ini") would not be loaded nor
remembered correctly. Fixed.