Following the development of a PDF documentation system built on the existing DocBook Help system, another release should be made, also incorporating fixes for any bugs which emerge before the end of the year.
Help for Transformer is built using a system we are developing which incorporates the Image Markup Tool (for interactive screenshots) and DocBook files. Currently this generates only an interactive HTML Help system, but it will eventually also generate printable PDF documentation. Transformer is the testbed project for this documentation system, which will be used to document all our projects in the future.
Link: http://portal.tapor.ca/news-feeds/2.rss/156
The first full version (1.1) of UVic's Transformer open-source Unicode search-and-replace tool has been released.
Back in February, we announced a beta version of this application; the full package is now complete, including documentation and source code, and is available from here: http://www.tapor.uvic.ca/~mholmes/transformer/ Transformer was created as part of a project to rescue some very old linguistics data, which was stored in a combination of Lexware and DOS WordPerfect files, by converting it to Unicode. Non-ascii characters were represented in the data by nasty sequences of control characters used to switch between obsolete character-sets and long-gone fonts in WordPerfect. In order to convert the data, we had to create and test a huge sequence of search-and-replace operations which would find these strings and replace them with the correct Unicode codepoints for IPA characters. To make this process easier for ourselves, we created a Transformer, a Windows application which enables you to create, organize and test sequences of search/replace operations (including regular expressions), then run them in batch mode on a set of files. It is released as open-source under the MPL 1.1.
November 1 2006:
- Added a Help topic for the Translation screen (interactive, with IMT).
- Added an Acknowledgements topic (DocBook XML directly coded).
- Began testing the output across various browsers.
- Determined that IE7 still has the bug relating to the absence of text in a div -- can only respond to onmouseover if there is text.
- Added some text to mitigate this, but it's impossible to make the text large enough and position it correctly to make it work well. This will have to be studied in more depth.
- Determined that Safari and Konqueror have a bug related to positioning, so offsets of click areas are wrong.
- Discovered that offsetTop and offsetLeft are calculated differently by the different browsers -- some are relative only to the offsetParent, which may be the doc and may be the actual parent. Adapted an function from the Web for calculating it recursively, which fixes that problem.
- Found another problem related to the hash in the location.hash property; Safari and Konqueror may sometimes double it. Worked around that.
One more problem with Safari not finding the data it needs to show in a popup. The problem may relate to this:
- I'm using innerHTML to copy the contents of a node to another node.
- The contents which are copied contain elements with unique ids.
- Therefore the copy operation will create duplicate ids.
This might be a solution:
- Move elements which are to be displayed as popups, rather than copying them.
- Move them back to be children of the body element and set them to display: none; before moving another element into the popup box.
- This will change the basic document structure, but none of the JavaScript will care at this point, since pointers have already been harvested on load.
- Tested on IE6 and found it's close enough to working to make it worthwhile to hack the popup code and make the popup position itself correctly in IE6. Will also do this tomorrow.
November 2 2006:
- Rewrote the DOM code to avoid innerHTML and intelligently move elements around instead of copying them.
- After proving the concept works, encapsulated this code in a DisplayHost object which can handle popups automatically.
- Tested on all browsers -- OK!
- Decided it's worth trying to support IE6, so added some special handling to make the popup work on IE6 too.
- Tested -- working.
- Began working on the problem of empty div areas not being clickable in IE. No decent solution, so we currently have a hack which does the best job possible but still leaves the edges of divs unclickable. Sad, but unavoidable; IE is crap all round (even 7, which has the same bug).
- Updated the source code on the server, and documented mdhHelp.pas library.
- Built an installer, and tested it. Seems OK.
- Tested the Help invocation system when IE is the default browser. It launches the browser, but fails to add the hash to the URL, so it doesn't navigate to the context. Will have to work on this.
- Updated the source code on the server, and added new description files where required.
November 3 2006
- Tested help system on IE6 and IE7. 6 is OK, but 7 can't handle the hash in the path which directs to a specific topic, so it's hopeless for context-sensitive help. Tested on Opera and that works fine, so:
- Rewrote the Help launching system so it looks specifically for Firefox, and failing that for Opera, before falling back to the default handler for .htm. That means that if Opera or FF is installed on the system, they will be used in preference to IE.
- Reworked the Transformer Website. In the process, added more files to the Help system, and more items to the glossary.
- Rebuilt the Help and tested it.
- Built the installer, and tested it.
- Released the application by updating the Website information.
- Posted a topic to the TAPoR news thread.
- Created an updated description of the project for the new HCMC site, and posted an inc file that can be pulled in to the HCMC projects page.