This is a list of the code modules which form part of the Transformer development project, along with details of their status. For a list of other open-source code modules required in order to build the project, see Requirements. Source code files are available from the links below; the application installer will also contain the source code for that release. Source code is released under the Mozilla Public Licence version 1.1 (http://www.mozilla.org/MPL/MPL-1.1.html). To save one of these files, right-click the link and choose Save.
This set of links will act like a CVS repository containing the most current versions of these libraries. The application installer itself can install the library versions used to compile the application executable contained by the installer. So to get the source code for the latest release of the program, just download and install the program from the downloads page. To get more up-to-date versions of code, come here.
The main Delphi project files.
This is the main form/screen for the application, and incorporates all the core GUI code.
This form provides the dialog box for creating and editing search/replace elements. Each element has a name, a search string, and a replace string.
This unit and associated form constitutes a dialog box used to create and edit a JavaScript code which can run as a "script item", which forms part of a list of "TransformItems" (which are either search-replace pairs, or script items). A ScriptItem is a block of JavaScript code (which runs in isolation from other ScriptItems, but which has access to a block of global JavaScript code, which can be edited in the other tab of any ScriptItem window).
This unit defines the objects used to store and retrieve lists of transformation operations. Transform operations or items are either find/replace pairs, or blocks of JavaScript which operate on input strings. A list object exists to marshall, sequence and manage them. It also manages the creation of a JavaScript Bridge JS Engine (using the SpiderMonkey dll), and handles the processing of scripts during a transformation sequence.
These are the modules for the batch processing window.
This form provides an interface which enables the user to change basic preferences such as the fonts used in the GUI, and the length of time tooltip hints are displayed. Data is saved and loaded from an XML file in the Application Data folder.
This is a simple implementation of a spin-edit control which can handle unicode (particularly for hints). It was needed in order to enable proper interface translation functionality.
The purpose of this unit is to provide a flexible interface for informing users when an operation will overwrite multiple files, and allowing them to confirm the overwrite of each file individually. It would be used when (for example) saving a collection of interrelated files (XML, XSLT, CSS...) where the results of a previous save might have been customized by the user, so he/she would not want to overwrite some customized files.
This form provides a a readout of the progress of an operation, and also has a Cancel button which sets a flag that can be checked by the calling process so that it knows whether it needs to abort or not.
This is the code for the interface screen used for creating a translation of the GUI. It uses mdhTranslate.pas classes, and provides an environment for examining and editing the strings in the model (accessed through a TVirtuslStringTree control).
This is a generic library with classes for parsing the structure of the application ("reflection"), generating a model from it, and reading/writing this information to and from XML files, as well as to and from a Virtual String Tree control which will allow users to edit the data, creating a translation file for the GUI of the application.
This unit aims to encapsulate a splash screen and an About box for an application. It includes an object for retrieving application version information from the executable itself through the Windows API. This information is displayed in the About box, but is also available to the main application through the SplashAbout object. Screens are created on the fly, so there is no dfm file.
This enables the saving and loading of form position and size, and the size of an ny controls with an Align setting, and the settings of various other controls, in an XML or an INI file in the AppData folder. The object also publishes its AppDirPath property so any other code using it can use the same application data folder. Whether XML or INI format is used depends on the second parameter of the Create function, the boolean UseXML. This library can also be used to handle periodic checks for application updates.
This is a general-purpose tool which is designed to keep track of recently-saved and recently-opened files, and represent them on a submenu on an associated form.
This is a general-purpose reflective class that queries the Windows API for information about the running application, retrieving the kind of info which is set in the Project Options dialog box.
This is a mass of general-purpose file-related functions developed over the years in various projects. Caveat user: many are obsolete or untested.
This is a large and unruly collection of string- and widestring-related functions which has built up over the years. Many of these functions are obsolete; beware when making use of them.
This is an older utility library that have developed over the last few years, and is included in this project for convenience. Beware of using these functions without testing first.
Utility XML functions, including routines for checking the well-formedness of blocks of XML code. Some functions use MSXML, others use XDOM; I prefer to use XDOM because it has no other dependencies, but MSXML has some useful features. This library also contains code for "fixing" ill-formed XML fragments, by adding missing close tags or removing broken tags. The form defined in the dfm file is just a convenience to allow easy instantiation of controls where necessary, and to hold translatable labels with messages stored in their captions.
These are older utility libraries that have developed over the last few years, and are included in this project for convenience.
Utility libraries for launching a browser-based Help system from the application. This is part of an effort to use Help generated from DocBook files and hosted by a local browser, while keeping it context-sensitive. WinHelp will be removed from Windows Vista, and Microsoft HTMLHelp is a mess; meanwhile, many of our projects are cross-platform so we need a system that works everywhere. The mdhHelp.pas file contains code for discovering Firefox and Opera if they are installed, and opening a local HTML file in one of them; if they're not available, it falls back to using the system default browser, which (if it is IE) is not ideal, but is still functional. The DocLauncher.dpr file is a non-GUI application which uses this functionality to start the browser and open a file based on a command-line parameter. The latter is typically installed with an application, and then referenced from shortcuts on the Start menu to launch help files, tutorials and other browser-based documentation using the best browser available on the system.