This is the README file of patch4 for Wafe 1.0 The new version features in the following items: General improvements (mostly Xt specific): - new error handling and online help: Wafe gives now more detailed error messages including the correct argument conventions. For certain Wafe packages (the commands specified in XawGen.spec, Xaw5Gen.spec, XtGen.spec and htmlGen.spec) online help is available (command in wafe/mofe: wafeHelp CMDNAME). Currently, wafeHelp is available for 158 wafe commands. Both, the error messages and the online help are generated as well from the .spec files. It is planned, that this documentation is added to the printed documentation as well. In the current state there is no graphical user interface for wafeHelp, which will follow in later versions. BTW, does anyone know, whether it is legally ok to document Wafe's OSF/Motif functions via cut-and-paste from Motif manual pages? Rephrasing the functionality of Motif library calls is (a) boring and (b) counter productive, if in this process a new diction is introduced. - gV for callback resources now returns *always* the associated Wafe command, independent from the way the resource was set (Older Wafe version suffered from the bug that if for example a callback resource was set via resource file, it could not be obtained via gV. Now, the following commands work as expected: mergeResources topLevel \ *Command.callback {puts "my name is %w"} Command hugo topLevel puts "the callback is set to ``[gV hugo callback]''" - Conversions to resources of the class Pointer have been improved. These resources can be set now via resource mechanisms (resource files, mergeResources, fallbackResources) or via explicit settings (setValues or at creation time). In special cases, special conversion for resources of this class are performed. For the Athena set, the list resource of the list widget class is converted into an array of string pointer, the radioData resource of the toggle widget class is converted into a XrmQuark. In all other situations, the value is simply kept as a string. As a consequence, the userData resource (which is of class Pointer) of the OSF/Motif widget set (and a few Athena widgets in Xaw3d) can be used conveniently to associate data with a special widget instance. Example script: wafe/src/tcl/m-userData (requires mofe) - Handling of full color maps in Xpm pixmaps is now more robust - selection commands: The command for handling selections ownSelection getSelectionValue disownSelection allow to specify as first argument a widget that claims/disclaims ownership of the selection. Earlier version had the topLevel widget of the application as hard wired owner and the selection commands were only possible on one display. - Newly supported Xt commands: + mapState: Syntax: MapState mapState input arg 1: any widget Description: The function 'mapState' returns the map state of the specified widget, which is either 'IsUnmapped', 'IsUnviewable' or 'IsViewable'. A return value of 'IsUnviewable' indicates that the window of the specified widget is mapped but some ancestor is unmapped. + getActionList: Syntax: String getActionList input arg 1: widget Description: The function 'getActionList' returns the names of the actions associated with the specified widget. For example, XmText t topLevel puts stderr "The actions of widget t of class [getClass t] are:\n\ [getActionList t]" The command getActionList is a convenient alternative of obtaining the names of the actions from the intrinsics or Motif manuals. Improvements for Athena Widget set: - newly supported command XawTextSinkFindDistance to compute the distance between two text positions - fix for XawPanedAllowResize, XawPanedGetMinMax and XawPanedSetMinMax, which expected wrongly in their first arguments Paned widgets (instead of children of Paned widgets) - [gV AthenaTextWidget type] returns now "file" or "string" - Adding again support for the Simple widget class due to user demand. - Handling of radioData for Toggle Widgets improved. The resource radioData can be set now via setValues or via resource mechanisms. New example script: wafe/src/tcl/radioData.tcl Improvements for OSF/Motif Widget set: - XmTextFields support now the following percent codes (same codes as XmText) %i - position of insert cursor %n - new position of insert cursor %f - startPos(from) %t - endPos(to) %s - text - the following Motif 1.1 functions are newly available XmTextFieldGetString XmTextGetString - the following Motif 1.2 function are newly available XmTextFindString XmErrorDialog - the following Motif Text widget function have been changed to return Boolean results (in previous versions, these commands were accessible as precedures only) XmTextFieldCopy XmTextFieldCut XmTextFieldPaste XmTextCopy XmTextCut XmTextPaste - string representations of XmHIGHLIGHT_* are called now HIGHLIGHT_NORMAL HIGHLIGHT_SELECTED HIGHLIGHT_SECONDARY_SELECTED for consistency. Previously the HIGHLIGHT part was missing. This change affects commands XmTextFieldSetHighlight and XmTextSetHighlight - reduced memory consumption for mofe slightly (no copies of resources of type string are kept in Wafe) - added output converter for Motif's ShellHorizDim and ShellVertDim (needed for eg [gV topLevel width]) Improvement for additional widgets - fix for GIF pictures in HTML documents - creation commands for Xt Objects return now Object IDs like the creation commands for widgets return widgets IDs. Examples of Object classes in the Wafe distribution: AtBarPlot, AtLinePlot, AtAxis, etc. (in plotter widget set) - small change to disable flushing of first and last axis element. Now also the first and last element is centered under the tick. The old behavior was very ugly for label axis in bar graphs; if can be re-enabled by specifying AXIS_FLUSH_FIRST_LAST during compile of the plotter library. - Fix for the Layout widget implementation: The Definition of a variable in the Layout resource caused an unwanted (stretchable) rubber to be included. New Sample Scripts for mofeperl (OSF/Motif version of wafeperl): - wafe/wafeperl/mp-interact: This script illustrates basic interactions between wafe and Perl in mofeperl (Tcl calls Perl, Perl calls Tcl, argument passing, etc) - wafe/wafeperl/mp-edit: Implementation of "A Complete Editor" from Dan Heller's OSF/Motif book in mofeperl. Many thanks to Peter Sylvester for his contribution! Improvement in Perl written sample program: - improvements in wafemail: + using shaped color pixmaps for icon + improved convenience for text input: Key events from the area of the subject line and the area of the buttons towards the lower end of the application are redirected into the mail text to avoid the need of having to put the cursor exactly into the mail text + Meta CtrlReturn in the article text behaves the same ways as if the send button is pressed. + simple spell checking support for mail bodies: * Ctrlp calls the spell checker and pops up a menu of the misspelled words * the command to perform spell checking can be configured via a) Perl variable spellCommand (via system.waferc or ~/.waferc) b) config menu (temporarily) + superfluous double quotes that are inserted by some mail agents are removed from incoming mail menu and some other places + header parsing more robust: tabs characters are allowed as separators after tags - improvements in wafenews: + the save-newsrc button clears now all read articles (i.e. removes the read articles from the subject listings) + improved convenience for text input: Key events from the area of the subject line and the area of the buttons towards the lower end of the application are redirected into the article text to avoid the need of having to put the cursor exactly into the article text + Meta CtrlReturn in the article text behaves the same ways as if the send button is pressed. + simple spell checking support for news articles: * Ctrlp calls the spell checker and pops up a menu of the misspelled words * the command to perform spell checking can be configured via a) Perl variable spellCommand (via system.waferc or ~/.waferc) b) config menu (temporarily) In order to apply this patch, be sure that your Wafe installation is on the Wafe 1.0 level (or newer), cd to the Wafe home directory, expand this tar file over the old distribution, remove the libraries of the plotter widget (wafe/lib/plotter/At/libAt.a) and Xaw3d (fix for the layout widget) to perform the usual configuration in wafe/src/Imakefile (as indicated in INSTALL) or use the new TOPMAKE (read the top section of wafe/src/TOPMAKE). If you use Xaw3d, will have to rebuild the library manually. Gustaf Neumann Disclaimer: Wafe is developed and maintained on my private equipment in my free time.