This is patch8 for Wafe 0.96. It contains: o All changes included in patch 1 to patch 7 (see wafe-0.96.p1.README, wafe-0.96.p2.README, wafe-0.96.p3.README, wafe-0.96.p4.README, wafe-0.96.p5.README, wafe-0.96.p6.README and wafe-0.96.p7.README) o A fix for Wafe on DECstations, which avoids aborts for callbacks provided in the widget creation command for the Athena List or ScrollBar widgets o Two fixes in the Plotter Widget set - for logarithmic scale axis - fixing an initialized variable for sub-ticks when autoScale is false o Using FILESEARCHPATH to locate pixmaps in 'changePixmap' o Extended widget references: A widget reference can be: - a widget name - a widget path (widget names connected with "." or "*" - a widget ID - a widget ID followed by a widget path starting with "." or "*" The last category is new and allows resolving of widget names under a given widget ID. o Error messages for invalid widget names: Wafe rejects now widget names starting with digits or '-' or '.' or '*' o Several Wafe commands return now widget IDs instead of widget names to avoid ambiguities: [gV ... children], [popupChildren ...] XmFileSelectionBoxGetChild, XmMessageBoxGetChild o Improvements for Wafe-widgets: The implementation of: PwdEntry, WarningDialog, InformationDialog, QuestionDialog, MessageDialog, FileSelection is based now on widgets instead of widget names. There is less pollution of the widget names spaces, it is possible to have multiple wafe-widgets with the same name (although not recommended) The support functions for wafe widgets support now all kinds of widget references. o Resize behavior of m-htmlBrowse fixed o Updated sample scripts, library files and Perl-written Wafe applications o More library files: XawText.tcl support functions for the Athena Text widget The following support function for the Athena Text widget class have been added to the wafe library: XawTextRead, XawTextBackSpace, XawTextDelLine, XawTextGetChar, XawTextGetCurrentLine, XawTextGetColumn, XawTextGotoColumn, XawTextSetCurrentLine, XawTextCopyCurrentLineToNext, XawTextNewlineAndIndent, XawTextSmartCloseBrace, XawTextSmartBackSpace Many of these functions were defined in wafe.config in earlier Wafe distributions. The commands above have several bugs fixed relative to its predecessors. (Thanks again to Dov Grobgeld for his input). o Faster startup of Perl written Wafe applications: Since the support functions for the Athena Text widget have been moved from wafe.config to wafe's tcllib, a shorter startup file will be read, startup time will be slightly improved. o Built-in support for shells popping up centered over the cursor. callback popupCallback positionCursor 0 defines that will pop up centered over the cursor, while callback popupCallback positionCursor 10 defines that will pop up with an offset -10/-10 from the actual cursor position (old behavior) o Additional Wafe commands nameToWidget this command is the tcl binding for XtNameToWidget and can be used to search for a widget specified in "widgetPath" in the widget tree under "widgetRef" if the command succeeds, it returns the widget ID, if it fails, it returns 0 window returns the window id of the specified widget o More percent code substitution in action procedures: %S for "state" in Key, Button or Motion events %p for Message-actions example: setWMProtocols topLevel WM_DELETE_WINDOW action topLevel override {WM_PROTOCOLS: \ exec(puts stderr {the protocol is <%p>!})} %p will be replaced by the string name of the window manager protocol (eg. WM_DELETE_WINDOW). For an example usage in a wafe script see: wafe/tcl/m-wm-message o Wafe's action and callback procedures are now executed explicitly as global procedures, seeing only global variables. o OSF/Motif improvements: Secondary resources are now evaluated by Wafe (e.g. Motif's VendorShell widget class will have now more resources available from Wafe; example: "deleteResponse" for wm interactions) (many thanks to Gabe Beged-Dov for this suggestion) ========================================================================== Update of the description of the library file widget.tcl widget.tcl ========== Since the Wafe functionality follows closely the Xt functionality, there are a variety of commands that have various argument patters originated from c-argument passing and sometime complicated names. For example for the abstract concept "widget", we can query its name, its class, its resource names, its children, its pop-up children, whether it exists, and so on. In once case we have to use [gV ...] to get the answer, in most cases the result is returned as a result of a function, in one case in a variable (Wafe is following the Xt argument conventions). I have to admit, it is not easy to remember all names, especially if you are a infrequent Wafe user. In Tcl there is the neat idea of a major and minor command, where the major command names an abstract object and the minor command an operation. For example for the abstract object string there is a [string length ...], [string match ..], [string trim ....] etc., and and if you don't remember the right command, use "string -help" and you get in the error message the list of valid minor commands. Other examples are [file MINOR ...] or [info MINOR ...]. The library widget.tcl implements a similar major/minor approach using "widget" as major command. The library defines the following commands ($w is always a widget reference, i.e. a widget path or a widget-Id): [widget name $w] ...... returns name of widget $w if it exists, "" otherwise [widget id $w] ...... returns the widget ID of $w if it exists, 0 otherwise [widget exists $w] ...... returns non-zero if $w exists, 0 otherwise [widget class $w] ...... returns the class of $w, if $w exists, an error otherwise [widget resourceNames $w] returns the list of resource names of $w, if $w exists, an error otherwise [widget path $w] ...... returns the widget path $w (up to the topLevel) if it exists, an error otherwise [widget parent $w] ...... returns the widget ID of the parent of $w if $w exists, an error otherwise [widget children $w] .... returns the list of children of $w in form of widget IDs if $w exists, an error otherwise [widget popupChildren $w] returns the list of pop-up children of $w as widget IDs if $w exists, an error otherwise [widget allChildren $w] returns the list of children and pop-up children of $w if $w exists, an error otherwise [widget names $refs] ... returns a list of widget names derived from the provided list of widget references [widget ids $refs] ...... returns a list of widget IDs derived form the provided list of widget references The major command "widget" is implemented in Tcl and will be loaded via auto-load. ========================================================================== INSTALLATION OF THIS PATCH ========================== If you have wafe-0.96p7 already installed get the file wafe-96.p7-p8.tar.gz otherwise wafe-96.p8.tar.gz. To apply this patch, "cd" to the wafe 0.96 directory, expand the tar file, and do a "rm -f ../libhtmlw/*.a src/htmlwGen.o; make". If the XmGraph widget is configured in Imakefile, make cd $WAFE/XmGraph make libgraph.a if PLOTTER is definded in the Imakefile, issue cd $WAFE/plotter/At make before the 'make' in $WAFE/src. Please note that in cases where you have 0.96 not installed, you should a) first get the wafe 0.96 distribution, expand the tar file, expand the wafeapps.tar.gz tar file as indicated in wafe/INSTALL, and b) expand this update 'over' the 0.96 distribution, and follow then the instructions in wafe/INSTALL Note, that in this patch also some Perl written wafe applications were modified; you might want to install these as well... -gustaf