This is the README file of patch5 for Wafe 1.0 The new version features in the following items: General improvements (mostly Xt specific): - New commands for atom handling: atomName atomId isAtom The function 'isAtomId' checks, whether an atom with the specified name exists. On failure the function returns 0. Currently, isAtomId function cannot be used to check invalid atom ids. The function 'atomId' returns the atom ID of an atom. If the atom does not exist, a new atom with the given name is created. The function 'isAtomId' checks, whether an atom with the specified name exists. On failure the function returns 0. Currently, isAtomId function cannot be used to check invalid atom ids. The atom handling commands are currently only used for improved interaction with mwm or similar window managers (see also below under improvements for OSF/Motif widget set). - The generated code is again more compact (the code for the same functionality is now about 3KB smaller on a *86 processor under Linux), several improvements in the c code generator (for example: quark handling). Improvements for Athena Widget set: - List widget: ensuring that the setting of the resource 'longest' and the resource 'list' is performed at the same time when specified together. Background: setting the resource 'longest' to 0 causes the list widget to recompute the column widths. Since the resource class of the 'list' resource is the generic type 'Pointer', Wafe has to delay in certain situations the conversion, until the widget class for this resource is known (eg. when the list resource is set via resource mechanisms). In order to resize on the correct list items, the setting of the 'longest' resource has to be delayed as well. - several example scripts using the List widget have been updated to provide correct column widths (was incorrect in 1.0.4): wafe/src/tcl/l.tcl wafe/src/tcl/scrollst.tcl Improvements for OSF/Motif Widget set: - improved support for window manager interaction: a mofe application can now add additional menu items to the window specific pull down menu of mwm (or any other true Motif compliant window manager) which is typically located at the left corner of the window title bar. The following new commands are used for this purpose: XmAddProtocol \ XmAddProtocolCallback \ \ XmActivateProtocol \ XmDeactivateProtocol \ An example script for adding new window manager menu items can be found in: wafe/src/tcl/m-protocols - Support for modifying the selection array of Motif Text widgets: The following commands can be used to modify the double click, triple click, ... behavior of Text widgets: XmTextSetSelectionArray + XmTextFieldSetSelectionArray + The procedure 'XmTextSetSelectionArray' sets the selection array for the specified XmTextWidget, whereas 'XmTextFieldSetSelectionArray' sets the selection array for a XmTextFieldWidget. The selection array determines the selection behavior on single, double, triple and so on clicks with the left mouse button in the text widget. The nth position in this array determines the behavior on the nth click. Possible values in this array are: SELECT_POSITION, SELECT_WHITESPACE, SELECT_WORD, SELECT_LINE, SELECT_PARAGRAPH and SELECT_ALL. Example: XmTextSetSelectionArray $w SELECT_WORD SELECT_LINE - Support for changing callData in modifyVerify callbacks: The Motif Text widget allows to inspect, modify or veto input data before it s actually inserted. The Motif interface is the modifyVerify callback of the XmText and XmTextField widget classes. Up to version 1.0.4 Wafe had only support to read the calldata information of callbacks. The new command XmModifyVerifyCBset \ can be used in modifyVerify callbacks to change the call data as well. The first argument is a boolean value; if it is false, the input will be rejected. currInsert is the insert position (cursor), startPos and endPos denotes the text, that will be affected be the modification. The insertString is the string which will be actually inserted. If the values of , or are negative, XmModifyVerifyCBset will not alter the current settings. An example script showing - how to map all input to uppercase, - how to allow only numeric input, - how to support input of US-style telephone numbers can be found in: wafe/src/tcl/m-textEntries - added example for XmErrorDialog to wafe/src/tcl/m-dialogs - new demo script to demonstrate usage of * pull down menus * pop up menus * cascaded menus * option menus can be found in wafe/src/tcl/m-menues - Additional script m-edit: The Implementation of "A Complete Editor" from Dan Heller's OSF/Motif book in mofeperl, which was introduced in 1.0.4 is now also available as pure mofe application: wafe/src/tcl/m-edit - New percent code for XmRowColumnWidget: %e can be used in pull down or pop-up menus in entryCallbacks to determine of widget id of activated widget; an example usage can be found in wafe/src/tcl/m-menues - In all Motif callbacks information from the event structure that caused the callback can now be accessed from Wafe: The syntax is "%=X" where X is any of the percent codes valid in action routines (see under percent substitution the the Wafe manual). An example usage can be found in wafe/src/tcl/m-menues where only button presses are allowed in inputCallbacks - The %s substitution in modifyVerify callbacks has been fixed to avoid to long strings to be returned. Improvement for additional widgets: - Layout widget pulled out from Xaw3d to allow usage from Motif or plain Athena widgets. The source with the fixes and improvement described below is in wafe/lib/layout/. - The Layout widget was resubclassed under the Motif XmManager class to allow better integration into OSF/Motif applications (resubclassing is only active, when the Layout widget class was compiled with the -DMOTIF compile flag). - The Layout widget can be used now with Motif Gadgets as well Example: wafe/src/tcl/m-layout Improvement for sample scripts for mofeperl (OSF/Motif version of wafeperl): - small bug fix in wafe/wafeperl/mp-edit 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.