This is the README file of patch6 for Wafe 1.0 The new version features in the following items: - support for Perl5 (both scripts and wafeperl) - support for additional widgets (Xbae Motif Tree Widget) - support for Motif 2.0 Here are the details: Xt specific Enhancements for all version of Wafe - Additional function available: motifWMRunning The function 'motifWMRunning' returns 1 when an OSF/Motif compliant window manager (e.g. mwm or dtwm is running), otherwise 0. The provided argument can be any shell of the application (e.g. topLevel). Athena widget set specific enhancements: - fixed a bug when the list resource of the list widget was set to an empty list (the empty list triggered a setValues for numberStrings with the value of 0, which triggered an Athena function to recalculate the length of the list based on a NULL terminated array of strings, which was not available and caused a segmentation violation on some architectures). The wafeDebug program was affected. General enhancements for Motif versions: - Additional command available: XmGetDestination (used for determining the destination of paste operations) - converter for Short to String added (needed e.g. for the 'columns' or 'rows' resource of the Motif Text widget - converters for String to source and source to String added for XmText (and XmCSText, when compiled with Motif 2.0) widget classes (this modifications allows multiple XmText (or XmCSText) widgets to use the same text source in order to allow e.g. multiple views on the same text) The script wafe/src/m-editpanes shows an example of multiple text widget sharing a common source New Motif 2.0 support: - support for the widget classes new in Motif2.0 XmCSText (compound string text widget) XmComboBox (text entry widget, where the user can select from a list of possible choices) XmContainer (for child widgets with different views) XmIconGadget (widgets to be placed in a XmContainer) XmNotebook (manager widget, that arranges its children as pages, tabs, status areas and page scrollers to simulate a real notebook) XmSpinBox (allows to choose from a ring of mutual exclusive choices) - new sample scripts to demonstrate some of the Motif 2.0 functionality * wafe/src/tcl/m-combo * wafe/src/tcl/m-notebook * wafe/src/tcl/m-spinbox - output converter for three valued toggles: a toggle might be of the state "set" (returning 1 as in Motif 1.* versions), "unset" (returning 0 as in Motif 1.* versions) or "undeterminate" (returning the string "undeterminate") - various libraries shipped with wafe had to be modified slightly in order to compile these with Motif 2.0 Support for additional Motif based widget classes: - Xbae widget classes: * XbaeMatrix (a spreadsheet like table widget) * XbaeCaption (a manager widget designed to label other widgets with a caption in a flexible way) The following new commands are available for the XbaeMatrix class: XbaeMatrixAddEmptyColumns, XbaeMatrixAddEmptyRows, XbaeMatrixCancelEdit, XbaeMatrixCommitEdit, XbaeMatrixDeleteColumns, XbaeMatrixDeleteRows, XbaeMatrixDeselectAll, XbaeMatrixDeselectColumn, XbaeMatrixDeselectCell, XbaeMatrixDeselectRow, XbaeMatrixEditCell, XbaeMatrixGetCell, XbaeMatrixSelectRow, XbaeMatrixSelectColumn, XbaeMatrixSetCell, XbaeMatrixSetCellColor, XbaeEnterCellCBset, XbaeLeaveCellCBset, XbaeTraverseCellCBset, XbaeModifyVerifyCBset Wafe was tested and built with Xbae 3.8p1. For the time being the sources of Xbae are not distributed together with Wafe. The Xbae sources can be obtained from obtained from various ftp servers such as ftp.x.org. The following demo scripts are included in the Wafe distribution: * wafe/src/tcl/m-matrix * wafe/src/tcl/m-caption - Motif Tree widget class: The Motif Tree widget class was implemented by Douglas Young and is is described in a non-motif version in D. Young's book "X Window System Programming and Applications with Xt" (Prentice Hall). A modified version of the widget is shipped together with Wafe/ I have modified the following items from a version grabbed from ftp.x.org on Sat, Nov 5 1994: * added an Imakefile * changed the class of the superNode resource from Pointer to Widget to use the StringToWidget converter from Wafe * changed the string name of the Tree class to XsTree (such that the class name became consistent with the class record xsTreeWidgetClass) * fixed a small bug in the SetValues method: in the original code, when "verticalSpace" or "horizontalSpace" space was changed via setValues, the widget did (correctly) recompute the layout of the tree, but computed this with the old settings. * added a definition for _XmDestroyParentCallback for Motif 2.0 and beyond. Wafe supports the following commands to create instances of the Motif Tree Widget: XsTree XsScrolledTree The script wafe/src/m-tree demonstrate the usage of the Motif Tree widget class (XsTree) from Wafe. Perl 5 support: - all Perl written Wafe applications work now with Perl4.* or Perl5.*; the Perl side of xwafemail is about twice as fast in Perl5 compared to Perl4 (on the same machine), xwafenews is about 40% faster; xwafemail and xwafenews require between 10 and 20% more memory when Perl5 is used - fixed a bug in xwafedesign that sneaked in around version 0.96.p6 (using "form" instead of "Form"). - Wafe's c code generator has been adapted to work with Perl5 and Perl4. - dynamically loaded extensions for Perl5 using wafe or mofe are included in the Wafe package in wafe/wafeperl5/* 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; If appropriate, remove and rebuild the following libraries - wafe/lib/plotter/At/libAt.a (fixes for Axis) - wafe/lib/Xaw3d/libXaw3d (fixes for Layout) - wafe/lib/XmGraph/libgraph.a (fixes for Motif 2.0) - wafe/lib/libhtmlw/libm-htmlw.a (fixes for Motif 2.0) and 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 Xaw3d library manually. Gustaf Neumann