Xbae Library Version 3.8 (see src/version.c)
Xbae 3.8 is the third public release.

The Xbae library is a set of two Motif widgets XbaeMatrix and
XbaeCaption.  It was developed using X11R4/X11R5 and Motif 1.1.[0-4]
and 1.2.1 under SunOS 4.1.1.  It has also been built on an IBM RS/6000 running
AIX 3.2 and a Pyramid running OSx 5.1 (under the bsd universe).
Thaddeus O. Cooper <cooper@aloha.pas.ti.com> has ported Xbae to VAX/VMS.
Contact him for more information.  Xbae should be pretty portable to
other platforms.

To build the release:
  1) Edit Xbae.tmpl and change HaveWcl to NO if you don't have Wcl.
  2) xmkmf
  3) make World
  4) cd to 'examples' and "runtest" to see if things are working
  5) make install


What's in the release:
       src - the source code for XbaeMatrix and XbaeCaption
       doc - PostScript and FrameMaker documents for XbaeMatrix and
             XbaeCaption
  examples - some simple examples using XbaeMatrix and XbaeCaption

What the widget's do:

 XbaeMatrix:

   XbaeMatrix is a Motif widget which presents an editable array of
   string data to the user in a scrollable table similar to a
   spreadsheet. The rows and columns of the Matrix may optionally be
   labeled. Also, a number of "fixed" leading rows or columns may be
   specified - these behave similarly to the labels. While XbaeMatrix
   looks and acts like a grid of XmTextField widgets, it actually
   contains only one XmTextField.  This means that XbaeMatrix widgets
   with hundreds or thousands of rows have much less overhead than they
   would if they used an XmTextField for each cell. XbaeMatrix has
   callbacks for doing field validation and customizing traversal. It
   allows cells to be assigned independent colors.  It allows rows,
   columns and regions of cells to be selected (highlighted).  The matrix
   can be dynamically grown or shrunk by adding and deleting rows and
   columns at any position.

 XbaeCaption:

   XbaeCaption is a simple Motif manager widget used to associate an
   XmLabel (caption) with it's single child. The label may be either an
   XmString or Pixmap and can be displayed in any one of twelve positions
   around the perimeter of the child. XbaeCaption's geometry management
   technique is to simply "shrink wrap" it's child and display the
   caption alongside it.  By using XbaeCaption with an XmFrame child,
   groups of related widgets can be labeled similarly to the IBM CUA
   "Group Box", but with more flexibility.  XbaeCaption is also useful
   for associating labels with individual XmTextField widgets.


Bugs fixed in version 3.8:

 * Changes so widgets compile under Motif 1.2.1
   Known problem: the XmTextField doesn't correctly register it's dropsite
 * Fix function prototypes in Matrix.h
 * Fix Caption so a Caption Pixmap will use the Captions
   XmNforeground resource
 * Include FrameMaker source files for docs

Bugs fixed in version 3.7:

 * XbaeMatrix would occasionally steal the focus from other widgets
   in the same shell.  The Clip widget was changed to only respond
   to synthetic FocusIn events.
 * XbaeMatrix StringToAlignmentArray converter should free the array
   when the conversion fails.
 * All header files now use a more specific inclusion protection symbol
   to avoid conflicts with other packages.
 * The XbaeMatrix documentation incorrectly documented the
   XbaeMatrixLeaveCellCallbackStruct.
 
Bugs fixed in version 3.6:

 * XbaeMatrix computes a bad width when XmNvisibleColumns == XmNcolumns.
   (reported by salevin@drl.mobil.com (S. A. Levin [Stewart]))
 * Changed XbaeMatrix to allow XmNvisibleRows to be greater than XmNrows.
   (reported by mark@bryce.llnl.gov (Mark Spruiell))
 * The XbaeMatrix methods: XbaeMatrixAddRows, XbaeMatrixDeleteRows,
   XbaeMatrixAddColumns, XbaeMatrixDeleteColumns, XbaeMatrixSetRowColors,
   XbaeMatrixSetColumnColors and XbaeMatrixSetCellColor need to check
   if they are realized.
   (reported by salevin@drl.mobil.com (S. A. Levin [Stewart]))
 * Calling XbaeMatrixEditCell before the widget is realized could result
   in the edit TextField being positioned wrong.
 * XbaeMatrix needs to call the XmNtraverseCellCallback functions when
   the widget initially gets traversed into, and it is not currently
   editing a cell.
   (reported by mark@bryce.llnl.gov (Mark Spruiell))
 * Adding/deleting rows from an XbaeMatrix with XmNfixedRows could later
   result in a core dump when scrolling to the bottom of the matrix.
   (reported by nick@ps.quotron.com (Nick Aiuto))
 * Changed XbaeMatrix to use XrmPermStringToQuark for R5.


Andrew Wason
aw@bae.bellcore.com
