<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="../../gus_xslt.xsl"?>
<howto
  xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
  xsi:noNamespaceSchemaLocation="http://starling.ws/XML/howto.xsd">
<head>
	<navigation ToC="Table of Contents" section="yes" topic="yes" subtopic="yes" subsubtopic="yes" links="yes"/>
        <cgi img="no" img_action="../../cgi-bin/gus_web_photo.pl" img_path="../tet/gus_log_pl" />
	<pdfmarks body="no" section="no" topic="no" subtopic="no" subsubtopic="no"/>
	<cgi img="no" img_action="" img_path="./" />
	<title>Test Log GUI</title>
	<description>A free GUI for electronic documentation of on-going tests at A2LA certified laboratories.</description>
	<keywords>test log, fatigue, durability</keywords>
	<author>Gan Uesli Starling</author>
	<copyright>2003, Gan Uesli Starling</copyright>
</head>
<body>
	<title>Test Log GUI</title>
	<p class="center"><b>A free GUI for electronic documentation of on-going tests<br />at A2LA certified testing laboratories.</b>
		<br/>
		<br/><a class="button" href="http://starling.us/tet/">&#160;home: http://starling.us/tet&#160;</a>
		<br/>
		<br/>by &#284;an &#364;esli Starling
		<br/>copyright 2003
	</p>

	<section>
		<title>Main features</title>
		<p>The Test Log GUI is a script for authoring test log documents. The document format is plain ASCII text. Records are line-delimited. Fields are tab-delimited. The test log document may therefor be opened in any text processor (such as Wordpad) or any spreadsheet (such as Excel). It is fully user-configurable: Name the test logs however you like; Include as many fields as you like named in any way that you like. It is even multiply configurable: create different configurations for different tests...just as many as you like.</p>
		<p><b>The user-configured GUI will:</b></p>
		<ul>
			<li>Constrain the file name of any new or re-opened logs.</li>
			<li>Prohibit revision of prior log entries.</li>
			<li>Display prior log entries on command.</li>
			<li>Constrain log entries by user-named data fields.</li>
			<li>Require that all such fields contain entries.</li>
			<li>Tag records with date and time from the system clock.</li>
		</ul>
		<p>So by means of this GUI you can replace all your old-fashioned, user unfriendly, one-size-fits-all, Xerox copies of spreadsheet forms with a clean and efficent, modern, electronic format. Easy to store and to archive. Easier yet to retrieve and to search. Imagine not having ever again to leaf through any dog-eared pages in search of an entry. Or once said entry be found, not having to decipher the hand of a technician away on vactation. More importantly yet, technicians will be more inclined to illuminate important details once freed from the constraint of crabbing their scrawl into the limited space of some boxed-in field on paper. Better quality test log notes, custom tailored for every test, all from a single Perl/Tk script, all for free.</p>
	</section>

	<section>
		<title>Conventions</title>
		<p><warn>Not a software guru? No problem!</warn> This is a brain-dead simple how-to. The write-up seems long only because of exhaustive detail.</p>
		<ul>
			<li>Regular black body-text conveys the more important instructions and comments.</li>
			<li><note>This color text denotes non-essential commentary. These will be FYI notes and the like, mostly for the first-time user.</note></li>
			<li><code>Monospace in this color denotes command-line arguments (if any), file names and/or short excerpts from either.</code></li>
			<li><cli>Monospace on this background denotes entire files, whole lines from files and/or complete cli sessions (if any) with&#160;<cmd>commands you enter</cmd>&#160;darker than OS output such as the prompt.</cli></li>
			<li><i>Italics anywhere denote a side comment only.</i></li>
		</ul>
	</section>

	<section>
		<title>Installation on Win32</title>
		<p>The GUI itself is nothing but an oversized Perl script, divided into about a dozen modules for ease of maintenance. So the<code> gus_log_pl.zip </code>file to be downloaded shortly will unpack neatly into a single directory, which you may locate to any file path that suits your whim. Can it get simpler than that?</p>
		<p>But because the GUI is written in Perl it is not a stand-alone<code> *.exe </code>file. Perl scripts require a background utility called the Perl interpreter, which is free, but does not come pre-built into Windows. This interpreter must be separately installed. That installation is also simple, but requires an administrative password on WinNT and Win2K. If on a network you may need to beg a sysadmin from your IT department to install it for you. Once that is done however, you may install any further handy little Perl scripts you like as these will run from the Perl interpreter already installed!</p>

		<topic>
			<title>Obtaining Perl</title>
			<p>As mentioned, to run any Perl script you&#8217;ll need a interpreter for Perl. For Win32 there are several to choose from. Personally, I recommend the free one from ActiveState.</p>
			<subtopic>
				<title>Easiest &amp; best way</title>
				<p>If your IT department&#8217;s sysadmin has not put up stumbling blocks in your way (via restrictions on the corporate proxy server/firewall) then just obtain Perl directly from here: <a class="button" href="http://www.activestate.com/Products/ActivePerl/">&#160;Perl download page&#160;</a></p>
			</subtopic>
			<subtopic>
				<title>Not so easy, 2nd best way</title>
				<p>If the easiest and best way above still does not work out, then break down and buy the ActiveState CD-ROM which as of this writing costs a whopping $39.95. <note>(FYI: Said CD-ROM also contains a bunch of other way-cool utilities which are not free but require a license. Resist the lure of those other goodies and you&#8217;ll not be put in debt any further.)</note> So, and only as a last resort, obtain Perl on CD-ROM from here: <a class="button" href="http://www.activestate.com/Products/ActiveCD/pricing.plex">&#160;Perl on CD-ROM&#160;</a></p>
			</subtopic>
			<subtopic>
				<title>Installing Perl</title>
				<p>A link to their documentation also exists on their download page. But just in case some folks might get lost, I present another redundant link here: <a class="button" href="http://aspn.activestate.com/ASPN/docs/ActivePerl/install.html#installing%20activeperl%20on%20windows%20(x86)">&#160;Installing Perl&#160;</a></p>
				<p>Once again, it may possibly be that your IT department&#8217;s sysadmin has restricted your ability to install Perl yourself. In that case you&#8217;ll just have to whine at them to do it for you. Explain the advantages of my Test Log GUI and hopefully they may come around.</p>
			</subtopic>
		</topic>
		<topic>
			<title>Installing the Test Log GUI</title>
			<p>Nothing could be simpler. Just download and upzip from here: <a class="button" href="http://starling.us/tet/gus_log_pl/gus_log_pl.zip">&#160;gus_log_pl.zip&#160;</a></p>
			<p>Once unzipped, relocate the directory<code> gus_log_pl </code>to wherever you like. Then create a shortcut to the file<code> gus_log_menu.pm </code>and put the shortcut wherever you like.</p>
			<p>If you chose ActiveState for your Perl interpreter, then now also do like so. With your shortcut in place, now modify it slightly. Its properties will, by default, have it pointing to<code> c:\perl\bin\perl.exe </code>as the interpreter. Change that from<code> perl.exe </code>to<code> wperl.exe </code>and the whole busines will work a touch nicer. By <i>nicer</i> I mean that you not see an empty DOS console pop up when you run the script. By default, Perl likes to have a console. But this script is entirely GUI. So the console is only redundant. Repointing the shortcut will get rid of the console.</p>
		</topic>
	</section>

	<section>
		<title>How to configure</title>
		<p>Included are a few examaple configurations. Before custom tailoring your own, may I suggest first toying with some of mine? Click on the shortcut which you made after installation. A menu will pop up listing various XML files. These are the configurations. Chose any one of them and see what you get. Then use the pull-down <b>Help</b> menu to view the current XML config in a web browser and see what&#8217;s inside. Observe how the two relate. </p>
		<p>Soon as you feel confident as to how they relate, reopen said XML config file in any text processor (such as Wordpad) and save a copy, with your own edits, under a different name:<code> foo.xml </code>for instance. Then start a new test log GUI and choose your own new file from the menu of configs. Fear not as nothing you do by way of messing up that config file can do worse than crash the GUI, and that only for a given session.</p>

		<topic>
			<title>Semi-complex config example</title>
			
			<pre>&lt;gus_log&gt;
	&lt;about&gt;This example maximalist XML config file tweaks nearly everything.&lt;/about&gt;	
	&lt;widths&gt;13,15&lt;/widths&gt;
	&lt;browser&gt;C:\Program Files\mozilla.org\Mozilla\mozilla.exe&lt;/browser&gt;
	&lt;menu&gt;
		&lt;view&gt;
			&lt;file&gt;.\maximalist.log&lt;/file&gt;
			&lt;file&gt;..\..\some_file.txt&lt;/file&gt;
			&lt;file&gt;C:\Documents and Settings\John Doe\My Documents\foo.txt&lt;/file&gt;
		&lt;/view&gt;
	&lt;/menu&gt;
	&lt;path&gt;C:\my_test_data\&lt;/path&gt;
	&lt;log&gt;example_test.log&lt;/log&gt;
	&lt;title&gt;1-Channel Fatigue Test&lt;/title&gt;
	&lt;show&gt;7&lt;/show&gt;
	&lt;hdr&gt;
		&lt;row&gt;
			&lt;col&gt;Work Order&lt;/col&gt;
			&lt;col&gt;Part ID&lt;/col&gt;
			&lt;col&gt;Samp ID&lt;/col&gt;
		&lt;/row&gt;
		&lt;row&gt;
			&lt;col&gt;MTS Station&lt;/col&gt;
			&lt;col&gt;MTS Params&lt;/col&gt;
			&lt;col&gt;MPT (*.000)&lt;/col&gt;
		&lt;/row&gt;
		&lt;row&gt;
			&lt;col&gt;Pass/Fail Mode&lt;/col&gt;
		&lt;/row&gt;
		&lt;row&gt;
			&lt;col&gt;Peak&lt;/col&gt;
			&lt;col&gt;Valley&lt;/col&gt;
			&lt;col&gt;Freq&lt;/col&gt;
			&lt;col&gt;Temp&lt;/col&gt;
		&lt;/row&gt;
		&lt;/hdr&gt;
	&lt;ftr&gt;
		&lt;row&gt;
			&lt;col widths="13,5"&gt;Pk N&lt;/col&gt;
			&lt;col widths="8,5"&gt;Val N&lt;/col&gt;
			&lt;col widths="8,5"&gt;Pk mm&lt;/col&gt;
			&lt;col widths="8,5"&gt;Val mm&lt;/col&gt;
		&lt;/row&gt;
		&lt;row&gt;
			&lt;col widths="13,9"&gt;Cycles&lt;/col&gt;
			&lt;col widths="8,9"&gt;Temp&lt;/col&gt;
			&lt;col widths="8,9"&gt;Tech&lt;/col&gt;
		&lt;/row&gt;
	&lt;/ftr&gt;
&lt;/gus_log&gt;</pre>

			<subtopic>
				<title>Key to example</title>
				<p>The above XML file determines how one particular<code> gus_log_pl </code>GUI will look. The script will build a Perl/Tk GUI with pairs of label and entry widgets. Entry widgets contain user entries. Label widgets identify those entries with a name. So tailor another such XML file to custom create your own electronic test log GUI.</p>

				<ul>
					<li><note>The<code> &lt;about&gt; </code>node is optional. The script ignores it. Use it to describe its purpose of this config.</note></li>
					<li><note>The<code> &lt;widths&gt; </code>node is optional. Use it to change the default widths for the lable and entry widgets.</note>
						<ul>
							<li><note>Must be a pair of integers.</note></li>
							<li><note>Left of comma is for labels.</note></li>
							<li><note>Right of comma is for entry boxes.</note></li>
							<li><note>Unit of measure is 1 character.</note></li>
							<li><note>The <i>feedback</i> and <i>notes</i>widgets use default default.</note></li>
							<li><note>Built-in defaults are 12 &amp; 10.</note></li>
						</ul>
					</li>
					<li><note>The<code> &lt;browser&gt; </code>node is optional. Use it to specify a viewer other than the default browser for XML and text files.</note>
						<ul>
							<li><note>For instance, you might prefer<code> C:\Program Files\mozilla.org\Mozilla\mozilla.exe</code></note></li>
						</ul>  
					</li>
					<li><note>The<code> &lt;menu&gt; </code>node is optional. Use it to nest specific menu sub-nodes:</note>
						<ul>
							<li><note>The<code> &lt;view&gt; </code>node is an optional child of the<code> &lt;menu&gt; </code>node. Use it to nest<code> &lt;file&gt; </code>nodes for the <b>View</b> menu.</note>
								<ul>
									<li><note>The<code> &lt;file&gt; </code>node is a required child of the optional<code> &lt;view&gt; </code>node. Use it to add a file to the <b>View</b> menu. Add as many files as you like. File paths may be either absolute or else relative to the directory of the current log. If in the same directory, current path delimiters (<code>.\foo.txt</code>) are not required (but recommended so as to be clear to the user).</note></li>
									<li><note>Attention MTS/MTP users! Recommend including<code>  &lt;file&gt;.\specimen.log&lt;/file&gt; </code>and perhaps also<code> &lt;file&gt;.\foo.dat&lt;/file&gt; </code>nodes here.</note></li>
								</ul>
							</li>
						</ul>
					</li>
					<li><note>The<code> &lt;path&gt; </code>node is optional. Use it to specify a default directory path for the log.</note></li>
					<li>The<code> &lt;log&gt; </code>node contains a name for the output text file.</li>
					<li>The<code> &lt;title&gt; </code>node gives a default name for the title bar of test log GUI window. <note>User can change this later.</note></li>
					<li>The<code> &lt;menu&gt; </code>node lists which among the entry widgets from the footer will display should ever the <b>Show</b> button be clicked. Comma delimited integers are what (if anything) must go here. Innumeration is from top left across, and so on down to bottom right. This feature works by reading back from the log and parsing out certain entries for a quick on-line, review. Any entries which you wish to not be so readily available, disinclude their number here.</li>
					<li>The<code> &lt;hdr&gt; </code>and<code> &lt;ftr&gt; </code>nodes segregate header rows from footer rows. The header is constants that define the test. The footer is for variables, observations taken during the test.</li>
					<li>Each<code> &lt;row&gt; </code>node delimits a row of label/entry widget pairs.</li>
					<li>Each<code> &lt;col&gt; </code>node contains the label which will identify a datum you want to be recorded. Each such label will pair at left beside a blank entry widget.
						<ul>
							<li><note>An optional<code> widths="i,j" </code>attribute may be included.</note></li>
							<li><note>Both<code> i </code>and<code> j </code>are integers. Just like for the <code> &lt;widths&gt; </code>node.</note></li>
							<li><note>Used to override default widths. Like the <code> &lt;widths&gt; </code>node, only local instead of global.</note></li>
						</ul>

					</li>
				</ul>
			</subtopic>
		</topic>
		<topic>
			<title>Ultra simple config example</title>
			<p>The best way to illustrate what you can change is with yet another example. Here is an absurdly minimalist config file.</p>
<pre>&lt;gus_log&gt;
	&lt;log&gt;minimalist.log&lt;/log&gt;
	&lt;title&gt;My Test Log&lt;/title&gt;
	&lt;hdr&gt;
		&lt;row&gt;
			&lt;col&gt;Objective&lt;/col&gt;
		&lt;/row&gt;
	&lt;/hdr&gt;
	&lt;ftr&gt;&lt;/ftr&gt;
&lt;/gus_log&gt;</pre>
			<p>I suppose you could even do without even a single row in the header. Despite the footer being empty, a <i>notes</i> text widget will nevetheless appear by default. So you see that the rows and columns in both the header and the footer are totally configurable.</p>
		</topic>
		<topic>
			<title>Troubleshooting the config</title>
			<p>There are one or two subtle things which can possibly go wrong. Usually they will not go so wrong as to halt building of the GUI. But appearances might not end up just how you like.</p>
			<p>One potential pitfall awaits those who over-punctuate. I parse these XML config files with Perl&#8217;s own very ordinary regular expressions...not by way of the more esoteric XML-ish Perl modules. So if a GUI crashes right after selecting a particular config from the XML config file menu, look first to your punctuation and consider reducing it until the problem goes away.</p>
			<p>Another pitfall that won&#8217;t crash the GUI but will very disturb its appearence is if your XML is not well formed. That is to say, the node tags have been mis-matched. A very simple troubleshooting tool is to open the file in a browser (such as Mozilla, Netscape or MISE). Those three can also parse XML. They&#8217;ll show you the file, all prettied up, if it is indeed well formed. They will complain and give detailed info on any lack of well-formedness. In short they will pinpoint the error for you.</p>
		</topic>
	</section>

	<section>
		<title>How to use</title>
		<p>There&#8217;s not very much to using the GUI. It may not do so very much. But those are accomplished elegantly, as you will see. Happy loging.</p>
		<topic>
			<title>Start the script</title>
			<p>Just click on the shortcut which was made by whoever did the installation...the one which points to<code> gus_log_menu.pm</code>. </p>
		</topic>
		<topic>
			<title>Select a configuration</title>
			<p>A window will pop up <a href="./images/gus_log_init.jpg">(screenshot)</a> asking you to select from among a list of current<code> *.xml </code>config files (as authored by you, or by your boss, or his boss...whoever). Click on one and the GUI will build to its specifications.</p>
			<p><note><b>Note: </b>In the example screenshot, a path is described for those example configs. Your path will be different. The window reports whatever path you happen to have installed them in.</note></p>
		</topic>
		<topic>
			<title>Edit window title</title>
			<p>Another window will pop up <a href="./images/gus_log_init_option.jpg">(screenshot)</a> to offer the option of changing the window title. Displayed will be the default title if nothing is changed. This default title was set by the XML config.</p>
			<p>Why this option? If you run multiple Test Log GUIs, all from the same XML config, their having each a unique window name avoids confusion. Otherwise you&#8217;d have to read their header entries to tell one apart from another.</p>
		</topic>
		<topic>
			<title>Toggle on pop-up hinting</title>
			<p><note><b>Note: </b>This step is optional, intended primarily for new users.</note></p>
			<p>From the pull-down menu <b>Help</b> select the feature <code>Toggle popup hints</code>. This feature will aid beginners with pop-up hints about various features of the Test Log GUI. Re-select the same menue sequence again to toggle this feature off.</p>
		</topic>
		<topic>
			<title>Opening a log</title>
			<p>Any log now to be opened will be, by definition, a child of the current XML config. The current XML config, as the parent, names all these logs the same. Only one file so-named may exist in a given directory. Thus will the <b>Open</b> button cause a window to pop up <a href="./images/gus_log_open.jpg">(screenshot)</a> for browsing through directories for files matching only that name.</p>
			<p>When at the directory of choice, click <b>Okay</b>. The main Test Log GUI window will now pop up <a href="./images/gus_log_main_min.jpg">(screenshot)</a> semi-minimized. Drag the lower right corner to expose its full contents <a href="./images/gus_log_main_full.jpg">(screenshot)</a>. Or at your option, drag to a partial, in-between size, and use the scrollbars.</p>
			<p>As of this point, nothing will have yet been written to the log. But the path to which it shall be writtin now should have been selected. As noted above, this path ought now be displayed in the feedback widget. Make doubly sure that it is correct.</p>
			<subtopic>
				<title>About the feedback widget</title>
				<p>When the main window has opened. First take note of the feedback widget in the controls frame, near the middle, under the buttons. Look for confirmation of the path you browsed to. If text overruns the boxe, use the <b>Arrow</b>, <b>Home</b> and <b>End</b> keys may be used to scroll the widget right &amp; left. If message text is not as expected, pull down the <b>View</b> menu and check<code> Feedback history </code> for prior error messages. <note>(FYI: The feedback window only shows the  most recent message. If the XML config held bad options, a prior error might have occured.)</note></p>
			</subtopic>
			<subtopic>
				<title>About the header</title>
				<p>When as may happen, some identically-named prior log file already exists in the opened path, that file will be re-opened. In such case the header data entryboxes will auto-fill with last-saved entries from said prior test log file. Re-loaded header entry data will present in red. The red had ought to suggest you review them, since they are in fact old data.</p>
				<p>If no prior like-named test log waits there to be re-opened, then the header entryboxes will remain blank.</p>
			</subtopic>
		</topic>
		<topic>
			<title>About the entrybox widgets</title>
			<p>Whoever authored the XML config for this particular GUI wanted certain data included. An entrybox exists for each datum. Not a one may be left blank. The GUI will refuse to append until each has something typed in. <note>(FYI: Entryboxes each display with a finite width. This however is no contstraint upon content length. Entries are permitted to overrun their box. As with the feedback widget, use the <b>Arrow</b>, <b>Home</b> and <b>End</b> keys may be used to scroll the box right &amp; left.)</note></p>
		</topic>
		<topic>
			<title>Appending an entry</title>
			<p>Click on the <b>Append</b> button and all your entries will be saved to the directory which you had opened, under the file name chosen by the XML config file&#8217;s author. That is to say it will be appended. No prior data will be overwritten.</p>
			<subtopic>
			<title>About the header</title>
				<p>Upon the very first append, header entryboxes will all ghost out <note>(become inactive to the mouse, turning gray to so indicate)</note> after the first append. Why? Because these header data define the test and are therefor regarded as constants.</p>
				<p>To un-ghost the header, re-open the log file afresh. To start a new log file with near-identical header entries <note>(as for the Nth sample of a test)</note> re-open a prior near-identical log file so as to load its header entries. Then open again to a new directory. Since you have yet to append, the header entries will be carried along non-ghosted.</p>
				<p>After the first append the header may cease to be of interest. Yet it takes up a lot of space. Click on the <b>View</b> pull-down menu and select<code> Toggle header </code> to hide and re-show the header frame at will.</p>
			</subtopic>
			<subtopic>
				<title>About the footer</title>
				<p>Similarly, the entryboxes in the footer will be refreshed. That is to say they&#8217;ll be emptied out. This is so because they&#8217;re considered variables. Future appends must all be fresh, deliberate entries. Nothing therefor is carried over in the footer.</p>
			</subtopic>
		</topic>
	  	<topic>
			<title>Re-viewing prior entries</title>
			<p>There are two ways to view prior entries, a select partial view with the <b>Show</b> button, or a full view with the <b>View</b> pull-down menue.</p>
			<p>Most often you&#8217;ll need to see only what the author of the XML config file has thought most important. <note>(Those called out in the<code> &lt;show&gt; </code>node of the XML config file.)</note> Click the <b>Show</b> button to display them in a browser window.</p>
			<p>Sometimes however you may want to see the whole log file. Click on the <b>View</b> pull-down menu and select for the current log file. The log will come up displayed in a browser.</p>
			<p><note>FYI: So as to better employ the browser&#8217;s display capabilities, the <b>View</b> pull-down menu and the <b>Show</b> button each write temporary<code> *.html  </code>files into the currently open log file directory. These both are overwritten with each successive re-display and deleted via the <b>Quit</b> button. If for any reason you need to preserve them, just perform a <i>Save As</i> from the browser.</note></p>
		</topic>
	  	<topic>
			<title>Re-viewing prior actions</title>
			<p>Nearly every button clicked since first the Test Log GUI was opened gave a report in the control frame&#8217;s feedback widget. A history array is kept of all feedbacks for so long as the GUI stays open so that past actions may be reviewed.</p>
			<p>Suppose that a distraction occurs so that it cannot be remembered what was done last. Click on the <b>View</b> pull-down menu and select for the feedback history display. All will then be revealed.</p>
			<subtopic>
				<title>Saving the log history</title>
				<p>Note the <b>Save</b> button at the bottom of the log history window. Clicking this will write a history file into the currently open log directory. This file will be named<code> log_history_YYYY-MM-DD_HH-MM-SS.txt </code> to signify the year, month, day, etc. for start of session. Any subsequent click of the button will over-write the same file, in effect updating it. Once (over-)written, the feedbacl history window will close. A browser window will then open to show the newly (over-)written file.</p>
			</subtopic>
		</topic>
		<topic>
			<title>Quiting the script</title>
			<p>Click the <b>Quit</b> button to exit. Know that in order to quit the footer entryboxes must either all have data or all be empty. This is because data in any of the footer entryboxes will trigger a final append on quitting. A problem report in the feedback widget will interrupt the GUI from quitting.</p>
		</topic>
	</section>

	<section>
		<title>Admin dos and don&#8217;ts</title>
		<p>Some few caveats apply to those who would administer the Test Log GUI, or any who might need to ex-post-facto edit the log files which it creates.</p>
		<topic>
			<title>Multiple XML configs</title>
			<p>If you create a variety of XML config files, each will comprise a separate format, each for a different kind of log. Particularly so if the header arrangement should vary. Best not to store differing formats under identical filenames. Force them to differ by way of the<code> &lt;log&gt; </code>node in each one&#8217;s respective config. This prevents users from mis-interpreting one file format for another when browsing for file names they want to open.</p>
		</topic>
		<topic>
			<title>Re-editing XML configs</title>
			<p>If you change an existing XML config, then in effect you are changing the format. Should you alter the header arangement, again the same parsing difficulties may arise as for multiple configs.</p>
		</topic>
		<topic>
			<title>Editing log files</title>
			<p>To insure against any loss of data, log files are saved as tab-delimited, pure ASCII text, which is virtually incorruptable. Further, no accidental deletions or overwrites are possible because the GUI can only append. Deliberate corruptions are however possible by way of some other editor program. The GUI does not put a lock on the file, so cannot prevent another program from opening it. This would be pointless since all anyone need do is close the GUI meanwhile. Thus editing is possible no matter how the GUI might otherwise strive to prevent it.</p>
			<p>But know that to edit a log (mid-stream or even ex-post-facto) is taking a chance. Should you only wish to open and copy data <i>out</i> from a log, then allow the GUI to assist. Open said log in the GUI pull-down its <b>View</b> menu and select<code> Current log</code>. This is the safest way.</p>
			<p>Know that to open any pure ASCII log in most of the common editor programs is unwise. Why? Because WordPerfect, MSWord, WordPad, Excel and their ilk save by default in binary. The Test Log GUI cannot re-open a log file once is binary, not at all. If ever you edit and re-save log with binary in it, then you&#8217;ll be done with the Test Log GUI as far as that one log is concerned. Only do so if you are absolutely certain to re-save it as pure, TAB-delimited ASCII. If less than certain, then best not to try.</p>
		</topic>
		<topic>
			<title>Log files in official reports</title>
			<p>The above caveat on editing pure-ASCII content will, of course, no longer apply once the test is completed and you are wholly done with the Test Log GUI. Then, most likely, you will want to display it in a spreadsheet program. As a tab-delimited, pure ASCII text file, you can do so easily. Tab-delimited ASCII text will open into a number of spreadsheets: Excel, Gnuemric, etc.</p>
			<p>Or you might prefer, as a final act of the Test Log GUI, to view the log by way of the pull-down <b>View</b> menu, selecting<code> Current log </code> to open a temporary copy of the log translated into HTML. Click <b>Save As</b> in the browser to preserve the log under some other name. Some small advantage to this is that the HTML is is merely a copy, and identifies itself as such. So more than just being a wee bit harder to edit, interested 3rd parties <note>(potentially nefarious by definition)</note> are insulated from altering the original. And further, as a legality, any copies which exist must be identified as such.</p>
		</topic>
	</section>

	<section>
		<title>Version history</title>
		<p>The Test Log GUI is updated periodically. Version IDs are by release date <note>(modification date of most recent file in the ZIP archive)</note>. This document pertains to release 2003-11-04</p>
		
				
		<topic>
			<title>2003-11-04</title>
			<p><b>Bug fixes in current, 7th release dated 2003-11-04 are:</b></p>
			<ul>
				<li><b>Fixed: </b>Sharing violation when trying to move log file while GUI still open.</li>
				<li><b>Fixed: </b>Headers ghosted redundantly on new file open so as to require manual unghosting.</li>
				<li><b>Fixed: </b>Plural shebang lines (<code>Test Log GUI = foo.xml</code>) written to new logs.</li>
			</ul>
			<br />
		</topic>		
		<topic>
			<title>2003-10-25</title>
			<p><b>Improvements in 6th release dated 2003-10-25 are:</b></p>
			<ul>
				<li>On the pull-down menu <b>Help</b>, a new sub-item<code> Toggle pop-up hints </code>has been added.
					<ul>
						<li>Intended primarily for new users.</li>
						<li>Use the same menu sequence to toggle both on and off.</li>
						<li>When toggled on, popup windows accompany every major step of using the GUI.</li>
					</ul>				
				</li>
				<li>Backwards-compatible with XML config files from prior releases.</li>
			</ul>
			<br />
		</topic>		
		<topic>
			<title>2003-10-19</title>
			<p><b>Improvements in the 5th release dated 2003-10-19 were:</b></p>
			<ul>
				<li>On the pull-down menu <b>File</b>, the sub-item<code> Open </code>now cascades into two options.
					<ul>
						<li>A<code> by matching name: foo.log </code>option to browse for logs exactly matching the current XML config.</li>
						<li>A<code> by matching regex: .*\.log$ </code> to browse for logs of a similar suffix.
							<ul>
								<li>The first append to any log now embeds a pure ASCII tag line to associate it with an XML config.</li>
								<li>Logs written by prior versions will lack this line. But once opened in the prior fashion; the next append will ammend this lack. Henceforth they too will auto-configure.</li>
								<li>Example tag line:<code> Test Log GUI = foo.xml </code></li>
							</ul>			
						</li>
					</ul>				
				</li>
				<li>On the pull-down menu <b>View</b>, the sub-item<code> Header </code>now cascades into two options.
					<ul>
						<li>A<code> toggle visibility </code>option to alternately show or hide the entire header frame.</li>
						<li>A<code> toggle ghosting </code> option to alternately in- and re-activate all header entryboxes.</li>
					</ul>				
				</li>
				<li>Backwards-compatible with XML config files from prior releases.</li>
			</ul>
			<br />
		</topic>
		<topic>
			<title>2003-10-13</title>
			<p><b>Improvements in 4th release dated 2003-10-12 were:</b></p>
			<ul>
				<li>Toggle the header frame. Hide &amp; re-show it at will.</li>
				<li>Checks XML config&#8217;s<code> &lt;path&gt; </code>node for validity.
					<ul>
						<li>Defaults to root directory if path not found.</li>
						<li>Why? Directories might later be moved, renamed or deleted.</li>
					</ul>			
				</li>
				<li>Checks XML config&#8217;s<code> &lt;browser&gt; </code>node for validity.
					<ul>
						<li>If not found, defaults to most common browser.</li>
						<li>Why? Elective browser might later be uninstalled.</li>
					</ul>			
				</li>
				<li>Two new, optional features for the XML config:
					<ul>
						<li>A<code> &lt;widths&gt; </code>node. Globally override the built-in default widths of label and entry widgets.</li>
						<li>The<code> &lt;col&gt; </code>node provided with an optional<code> widths="i,j" </code>attribute. Override the default widths of label and entry widgets on a local, per-widget basis.</li>
					</ul>
				</li>
				<li>Backwards-compatible with XML config files from prior releases.</li>
			</ul>
			<br />
		</topic>
		<topic>
			<title>2003-10-05</title>
			<p><b>Improvements in 3rd release dated 2003-10-05 were:</b></p>
			<ul>
				<li>Now supports MSIE 5 <note>(formerly MSIE 6 only)</note>.
					<ul>
						<li>Howto documentation <note>(this page)</note> now presented also as HTML <note>(formerly XML only)</note></li>		
						<li>Why? Because on WinNT and its descendents, to upgrade MSIE requires an administrative login. Not all users had this right.</li>
					</ul>
				</li>
				<li>Some data now are viewed as temporary, on-the-fly translations into HTML.
					<ul>					
						<li>Why? Because on Win32 installations, MSIE will sometimes refuse a<code> *.log </code>extension. To adjust it required an admin login. Not all users had this right.</li>
						<li>Works by writing temporary<code> *.html </code>files to the current directory. These are deleted when quitting the GUI.</li>
						<li>The workaround proved convenient for printing. So now the <b>View</b> menu and <b>Show</b> buttons now also employ this method.</li>
					</ul>
				</li>
				<li>User is now prevented from forgetting to append last entry.
					<ul>					
						<li>On quitting the GUI, a final append will now occur, provided that the header and footer both are full.</li>
						<li>Quit will abort if either the header or footer not either full or empty.</li>
					</ul>
				</li>
				<li>A <b>Save</b> button added to the history viewing window.</li>
				<li>New, optional nodes for the XML config:
					<ul>
						<li>A<code> &lt;menu&gt; </code>node with a<code> &lt;view&gt; </code>sub-node. Add user-specified files to the <b>View</b> menu list.</li>
					</ul>
				</li>
				<li>Backwards-compatible with XML config files from prior releases.</li>
			</ul>
			<br />
		</topic>
		<topic>
			<title>2003-09-20</title>
			<p><b>Improvements in 2nd release dated 2003-09-20 were:</b></p>
			<ul>
				<li><b>View</b> pull-down menu added. It will display:
					<ul>
						<li>Current log in browser.</li>
						<li>This document in browser.</li>
						<li>Current XML config in browser.
						<br /><note><i>FYI: XML docs require MSIE 6 SP 1 or Mozilla 1.4</i></note></li>
						<li>Feedback history in custom window.</li>
					</ul>
				</li>
				<li>Scrollbars added to the notes entrybox.</li>
				<li>Two new, optional nodes for the XML config:
					<ul>
						<li>A<code> &lt;path&gt; </code>node to pre-select the log file path.</li>
						<li>A<code> &lt;browser&gt; </code>node to pre-select an alternate, non-default viewer.</li>
					</ul>					
				</li>
				<li>Backwards-compatible with XML config files from initial release.</li>
			</ul>
			<br />
		</topic>
	</section>

<!--

	<section>
		<title></title>
	</section>
		<topic>
			<title></title>
		</topic>
			<subtopic>
				<title></title>
			</subtopic>
				<subsubtopic>
					<title></title>
				</subsubtopic>
-->

	<section>
		<title>License</title>
		<p>End users may employ this software to generate logs for any purposes whatsoever. End users may also modify the scripts in any way which suits their own individual needs. But no party whosoever may in any way re-distribute this script, nor any work deriving from it, nor from any module of it, without written consent of the author, namely me.</p>
		<p>As with any free, open-source software, all the softwares herein provided and any instructions pertaining to them are each one provided <i>AS IS</i> with no guarantee whatsoever being made, suggested, alluded to or even vaguely hinted at. The end users assume all risks, including but not limited to the spontaneous disintegration of persons and prorperty into their component sub-atomic particles and the dissolution of these into energy with collateral damage to the surrounding acreage. Enough said? If this disclaimer fails to dissuade any legal eagles, know that the the sole and only asset of <i>Trailing Edge Technologies</i> is its registered trademark.</p>
		<p>Respectfully,</p>
		<p>&#284;an &#364;esli Starling<br />Kalamazoo, MI, USA
		<br/><a href="mailto:gan@starling.us">gan@starling.us</a></p>
	</section>
  </body>
</howto>
