
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 <SomeShell> popupCallback positionCursor 0

     defines that <SomeShell> will pop up centered over the cursor,
     while

        callback <SomeShell> popupCallback positionCursor 10

     defines that <SomeShell> will pop up with an offset -10/-10
     from the actual cursor position (old behavior)


  o  Additional Wafe commands

     nameToWidget <widgetRef> <widgetPath>

         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 <widgetRef>

         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 {<Message>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)


  o  Updated Imakefile to produce libraries that make 
     compilation c programs accessing directly wafe components
     easier (eg.: wafeperl and mofeperl)


==========================================================================
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
