==================== STLTask Revision Log ==================== 09/08/2004 Revised the documentation to additionally dissuade anyone from supplying a primary configuration file pathname on the STLTask command line. Improved the diagnostic dialog box that gets displayed when someone attempts to run STLTask on a platform the Proxy compiler has never been installed for. Instead of a cryptic message about the absence of a Proxy compiler, STLTask now tells you exactly what you need to do in order to install the Proxy compiler correctly (and safely) for that platform. 05/13/2004 A version of STLTask.EXE accidentally compiled with MSVC71 instead of MSVC6 has been in the distribution for a while. I've put the version compiled with MSVC6 back in, so folks aren't required to have the MSVCP71.DLL file in order to run STLTask. 04/04/2004 (STLTask v3.06) If you log in to Windows XP (and perhaps other versions as well, but I've only seen the problem under XP) too soon after it boots, STLTask fails to install its icon into the taskbar. The error dialogs pertaining to icon display problems that were being displayed in earlier versions didn't identify STLtask as the app having the problem. Now they do. 05/06/2003 (STLTask v3.05) Shortened some title-bar text that was overflowing its available space. 04/11/2003 Thanks to Graeme Prentice, the STLTask tray icon no longer disappears after a Windows Explorer / system taskbar re-initialization! This was a shortcoming of the wxWindows library, in which the message Windows sends when the taskbar is being reset was not being processed by the library. Graeme figured out how to patch the taskbar.* files in the wxWindows distribution to correct the problem, and I now compile with those updated taskbar components (and supply them in the STLTask source archive, part of the standard distribution for the MSVC, gcc and Intel versions of STLFilt). This problem has been driving me crazy for almost two years, so I'm truly appreciative of Graeme's accomplishment. Thank you, thank you, thank you! 04/08/2003 (STLTask v3.04) The Proxy-CL/GCC/ICL.INI configuration parameter for naming the native compiler executable was not being managed consistently across the different platforms STLTask supports. For MSVC, the name of the parameter is NATIVE_CL, but for the other platforms the name is supposed to be different: NATIVE_GCC for gcc, NATIVE_ICL for Intel. Unfortunately, on those two non-MSVC platforms, STLTask was still looking for a parameter named NATIVE_CL. It now looks for the correct name under each platform. Note that this only effects Proxy-*.INI, NOT the STLTask.INI multi-platform configuration file (where NATIVE_CL is in fact the correct name to use within *all* the platform sections.) 03/21/2003 (STLTask v3.03) Quotation marks (single or double) may now be placed around pathname and filename parameters in both the primary (Proxy-*.INI) and secondary (STLTask.INI) configuration files. They are not necessary, but at least now they are tolerated. Fixed a slew of messages that were still hard-wired to say "Proxy CL" instead of using the name appropriate to the currently selected platform in multi-platform mode. Removed bogus parameter COMP_BASENAME from the description of the platform-specific configuration parameters described in README-STLTask.txt. This parameter was never actually implemented. 03/20/2003 (STLTask v3.02) Added single/multi-platform status information to status dialog. Removed a bunch of old debugging code from source. 03/19/2003 (STLTask v3.01) Thanks to Charlie [I won't wait to find out his last name...not that he'd necessarily want to give it out ;-) ], STLTask.cpp now compiles with wxWindows 2.4. It no longer compiles with 2.2.9, however, but I'm not too worried about this... One that slipped through: STLTask.INI, as distributed 3/18 and 3/19, used quotation marks around the cl_dir parameter for the MSVC platform definition. The problem: quotation marks weren't supported. Oops. As a stopgap I've removed the quotation marks in the distribution, but soon I'll update STLTask to be able to handle them if they're there. 03/18/2003 (STLTask v3.00) STLTask has received a *major* face-lift. The new version's source code is now unified across all the platforms in which it is included (as of this writing, that's MSVC, gcc and Intel) with default paths and filenames switchable with a simple symbol change up at the top. More significantly for users, a single instance of STLTask now has dynamic multi-platform switching capability. You configure up to ten separate compiler platforms in the new secondary configuration file, STLTask.INI, and select between them from the STLTask context menu. For all the details, see the new README-STLTask.txt. Both of these changes have sure made *my* life a lot easier ;-). 10/20/2002 (STLTask v2.6) Fixed infinite dialog-box looping upon detection of corrupt configur- ation in certain cases. Clarified status dialog text a bit. 8/24/2002 (STLTask v2.5) STLTask is now checked out for concurrent multi-platform support, so long as the platforms associated with each instance have a distinct base directory and toggle file directory (as specified by the .INI file parameters cl_dir and toggle_file_dir. Note that the specific .INI file to use may be specified as a command-line parameter to STLTask.EXE; the default, if none is given, is Proxy-CL.INI in your %Systemroot% directory as distributed with the MSVC version, or Proxy-gcc.INI as distributed with the gcc version.) Added compiler directory (cl_dir) information to dialog captions, the context menu and all Tooltips. This allows concurrent STLTask instances (say, one for MSVC6, one for MSVC7 and one for gcc3) to be easily differentiated. Simply place the mouse over the taskbar icon to pop up a Tooltip identifying the platform and showing decryption status. Corrected button sizes so some labels display better with "large" fonts. Context menu selection "Prepare to apply Visual Studio Service Pack" is now enabled only when the active compiler name is "cl.exe" (case- insensitive). Since STLTask may now be used with gcc, we don't really want to see that option if gcc is the active compiler. 5/23/2002 (STLTask v2.4) Enhanced the taskbar icon repertoire: There are now specific icons to indicate an uninstalled Proxy CL (a big X through the icon) and Clipboard-Only mode (a paper clip holds the icon to the taskbar). Corrected bug causing a mostly blank initial dialog to appear upon start-up in Clipboard-Only mode. 3/30/2002 (STLTask v2.32) Comments (introduced with ";" characters) at the end of configuration file (Proxy-CL.INI) options are now supported (they get stripped). 3/5/2002 (STLTask v2.31) Was still getting cascading "Could not set icon" dialogs under certain circumstances, so I threw another status flag at the problem. Now, while it is still possible to end up with zombie STLTask.EXE processes, at least they don't seem to interfere with new instances. 2/13/2002 (STLTask v2.30) In preparation for the soon-to-be-released g++ versions of the Decryptor package, I've overhauled STLTask to be less MSVC-specific. Version 2.30 supports a new option in the [stltask.exe] section of the configuration file: CL_EXE=cl.exe This lets you specify the "natural" name of the native compiler. For non- MSVC platforms, this could be "g++.exe", "gpp.exe" or whatever (Up to this release of STLTask, the name was hard-wired to "CL.EXE"). Status messages that used to refer to MSVC and CL.EXE are now worded more generically (and where it now says "CL.EXE", that string tracks the CL_EXE configuration parameter.) Now that the STLTask icon changes state in sync with STLFilt.BAT (or any other manual method of toggling the toggle file), context menu items automatically come up enabled or disabled, tracking the current installation and filtering status. The status window now displays the full pathname of the "active compiler". In case you choose to use STLTask with more than one platform (say, both MSVC and g++) at different times, the status window will remind you of which one you're controlling with STLTask. I have not implemented simultaneous platform support for more than one proxy compiler, however. If someone actually wants to have two STLTasks running at the same time supporting different compilers, let me know (but I'm not making any promises...) Instead of manually hard-wiring all the text positions in the status window, I now let wxWindows take care of positioning the text (this definitely made modifying the status window's text messages a whole lot easier!) 2/11/2002 (STLTask v2.23) Settled on a state-based strategy for avoiding unnecessary SetIcon() calls in the timer service function. SetIcon() is now only called if the state of the toggle file is known to have changed. Since the original problem (described below) was happening intermittently, I can't tell for sure if all spurious "cannot set icon" dialogs have been truly avoided with this scheme, but I'm going to give it a shot. 2/10/2002 (STLTask v2.22) More fallout from the Magically Changing Icons feature: under certain circumstances, most notably under Windows 2000 during session startup (but I've also seen it happen on Win98 during shutdown), numerous "Could not set icon" error dialogs could start spewing from the app. I "fixed" this, for the time being, by suppressing all such dialogs. Eventually, when I figure out how to tell when it is safe to use SetIcon and when it is not, I'll decide whether or not to bring the dialogs back. 2/6/2002 Added a note in README-VC7.txt regarding the DLL that comes up missing if you run STLTask on a system that does not have VC6 installed. 1/31/2002 (STLTask v2.21) Fixed up some icon image issues. 1/29/2002 (STLTask v2.20) Thanks to Marco Welti, STLTask now indicates filtering status via two different taskbar icons: one when filtering is on, another when it is off (I had tried to do this a while back and gotten stuck; Marco found my bug and got it to work. I love this Open Source thing!). Since the icon gives visual feedback of filtering status, a dialog box no longer comes up just to indicate a change in filtering status. Now, the *really* cool part: if you toggle filtering status using STLFilt.BAT (or any mechanism at *all* that renames the toggle file accordingly), the STLTask icon reflects the change automatically! (Timer code courtesy of Marco.) 11/1/2001 (STLTask v2.12) Fixed the integrity check for the Perl interpreter (added for v2.11) to properly handle PERL_EXE values in Proxy-CL.INI that do not have the ".EXE" explicitly as part of the pathname. 10/30/2001 (STLTask v2.11) Added additional integrity checks to verify that the Perl interpreter and filter script are both at their configured locations upon startup. 10/08/2001 (STLTask v2.10) Realized that the "Integrity checking" logic has been thoroughly broken since the 2.02 release (oops). Fixed it, and cleaned up a bunch of other stuff in the process, including button captions and error messages. 9/14/2001 (STLTask v2.03) Enable/Disable filtering commands now give more details and diagnostics. The check_for_previous_instance feature's interactive confirmation if the sentinel file is detected upon startup is now suppressed if the /q (quiet mode) option is in effect. This makes for hassle-free automatic startup after a system crash if you're starting STLTask from the startup folder and using /q. README-STLTask.txt updated, and STLTask.cpp comments describing the config file options corrected to reflect the new .INI file format. 9/9/2001 (STLTask v2.02) Finally figured out how to make a yes/no dialog work in response to a previous instance sentinel file being detected, so I put that into effect and changed the default value of check_for_previous_instance to "true". Now, if STLTask detects a previous instance, you don't have to go in and manually delete the sentinel file--just answer "yes" to the "Are you sure..." question when STLTask comes up. Restored "STLTask installed successfully" line at the top of the dialog box upon initial startup. Fixed bug where invoking "filter clipboard" on an empty clipboard fails to produce a diagnostic. 9/4/2001 Changed all STLTask text messages/titles to say "Message Decryptor" instead of "Error Decryptor", for consistency with CL. 9/3/2001 (STLTask v2.01) Added logic to strip trailing slashes/backslashes off all pathnames specified in the config file (and in the defaults set in the source code); that way, pathname option settings may be written with or without trailing slashes. 9/1/2001 Changed config file mechanism to use Windows facilities. Config info now loaded from Proxy-CL.INI (the same file read by CL.EXE) which should be placed into the Windows directory. An alternative config file may still be specified on the command line. 8/25/2001 (version 2.0 pre-release) ********* MAJOR REVISION *********** STLTask's automatic Proxy CL Installation/uninstallation strategy has been completely redesigned for this release, due to user feedback and due to the fact that the previous scheme was incompatible with MSVC's executable file location behavior. Now, The Proxy CL resides in MSVC's bin directory (CL_DIR). Installation instructions for the Proxy CL have been updated accordingly, but the CL.CPP program itself required no changes to its own filename and directory structure. Thanks to Paul Suggs and others for their thoughtful feedback that finally convinced me to implement this new scheme. Due to the change described above, the PROXY_CL_DIR configuration option no longer exists. There is no longer a separate directory for the Proxy CL to reside in. Many internal symbol names and configuration file option names have changed, hopefully to be more self-documenting. See the new config file, Proxy-CL.INI, for a full description of all the current config options. Added a "Prepare to apply service pack" command to the context menu. When selected, it uninstalls the Proxy CL *and* removes CL2.EXE from the CL_DIR directory, clearing the way for unencumbered application of a Visual Studio service pack. Everything is "put back to normal" when STLTask is launched again after the service pack has been applied. To prevent multiple instances of STLTask from running at the same time, STLTask now has the ability to create a lock file (STLTASK.LOK) in the CL_DIR directory upon startup, and removes it upon exit. If the lock file is detected upon startup, STLTask announces the fact and exits. If the lock file is present due to a recent crash, you must remove it manually before restarting STLTask. A config option, CHECK_FOR_PREVIOUS_INSTANCE (defaults to false) switches the multiple-instance detection (as described above) on or off. The Perl script filename (FILTER_SCRIPT) is now properly enclosed in quotes when filtering the clipboard. Previously, spaces in the pathname were not properly handled when constructing the internal command line string. No longer automatically enables filtering upon startup when an installed Proxy CL is detected. The filtering toggle file is always honored. Renamed STLTask's readme file to STLTask-README.txt to avoid confusing it with the CL/STLTilt.pl README.txt file. 8/4/2001 Based on some feedback *way* above and beyond the call of duty by Dave Conrad, I did more work on the README-STLTask.txt file to help explain the behavior of the program in order to properly configure it. 8/2/2001 Rewrote the "Operation" notes in README-STLTask.txt. The descriptions were vague and, in the case of "Install" and "Uninstall", actually described the behavior of the *opposite* function! Sorry about that. 8/1/2001 (version 1.41) Changed positions of text and buttons in the pop-up window. I'd been running with "Large fonts" before; now adjusted for "small" fonts. 7/3/2001 (version 1.4) Added the CLIPBOARD_ONLY config option. This allows folks to eval- uate STLTask with only the clipboard filtering feature active. In this mode, it is unnecessary to install the rest of the Proxy CL package, rename native MSVC commands, etc. etc. When run with CLIPBOARD_ONLY set to true, the enable/disable and install/uninstall context menu items do not appear when you right-click on the STLTask icon. Added the cliponly.stl sample config file to start up STLTask in clipboard-filtering-only mode. 6/18/2001 (version 1.31) Added check for short text in the clipboard filtering function. If there are less than CLIPBOARD_WARNING_THRESHOLD (set by a #define in STLTask.CPP) characters in the clipboard when "filter Clipboard" is selected, a yes/no box pops up with the contents of the clipboard and a choice of whether to continue or not. 6/17/2001 Accidentally left the DEBUG symbol set to "1" in the 6/15 posting. corrected this in the source, and also in the precompiled version. 6/15/2001 (version 1.3) Added "filter Clipboard" feature (works only with output copied from MSVC's output area, due to funky arbitrary line breaks at col. 250) The clipboard filtering idea was suggested by Andy Philpotts. Added new configuration option, STLFILT_FULLPATH, to the STLTask program and the config file format. This tells STLTask where the Perl script is (needed for the "filter Clipboard" feature). Fixed crash bug when config file contained unrecognized key names Fixed config file comment processing; now handles trailing comments, in addition to previously supported "comment only" lines. 5/19/2001 (version 1.22) Fixed erroneous double \\ in comments at top of STLTask.cpp Left-double-click on the tray icon now brings up the status dialog. Left single-click now does nothing. 5/11/2001 (version 1.21) Tidied up the popup menu a bit, adding separators and changing capitalization on some of the choices for better text visibility. 5/10/2001 (version 1.2) Added /q ("quiet") option. If given, suppresses sign-on dialog. Useful so that STLTask may be started up from the Startup folder without user intervention. 5/9/2001 (version 1.11) Used "stay on top" dialog style to keep pop up windows from getting buried added "thick border" style...which seems to add a title bar and title, which is OK by me...unfortunately, I don't know how to make clicking on the bold "title bar" a no-op :-( Now it closes the dialog. 5/8/2001 (version 1.1): New icon (hey, old one didn't look good as a full-size desktop icon) Fixed strange behavior both proxy CL.EXE and native CL.EXE BOTH existed upon startup. Now, it renames the Proxy CL back to the inactive state under those circumstances (if ever there's a battle between the native and Proxy CLs, let the native CL prevail...) Added ID string to dialog box, first official version number (1.1).