Sophie

Sophie

distrib > Mandriva > 9.1 > ppc > by-pkgid > aa66b5cd050a4c33de73f05d5e6bf3a7 > files > 12

libXbae4-4.9.11-2mdk.ppc.rpm

<HTML><HEAD><TITLE>Manpage of XbaeMatrix</TITLE>
</HEAD><BODY>
<H1>XbaeMatrix</H1>
Section: Misc. Reference Manual Pages (3x)<BR>Updated: 4.9.11<BR><A HREF="#index">Index</A>
<BR><A HREF="lesstif.html">Return to Main Contents</A>
<HR>

<A NAME="lbAB">&nbsp;</A>
<H2>NAME</H2>

XbaeMatrix
- The Bellcore Application Environment (BAE) XbaeMatrix widget class.
<A NAME="lbAC">&nbsp;</A>
<H2>SYNOPSIS</H2>

#include &lt;<A HREF="include/Xbae/Matrix.h">Xbae/Matrix.h</A>&gt;
<A NAME="lbAD">&nbsp;</A>
<H2>DESCRIPTION</H2>

<B>XbaeMatrix</B>

presents an editable array of string data to the user in a
scrollable grid-like format similar to a spreadsheet.  Non editable pixmaps
can also be displayed on the matrix.  The rows and
columns of the Matrix may optionally be labeled.  Also, a number of
fixed leading or trailing rows or columns may be specified - these
behave similarly to the labels.  While
<B>XbaeMatrix</B>

looks and acts like a grid of
<B>XmText</B>

widgets, it actually contains only one
<B>XmText</B>.

This means that
<B>XbaeMatrix</B>

widgets with hundreds or thousands of rows have
much less overhead than they would if they used an
<B>XmText</B>

for each cell.
<P>

Clicking on a cell with 
<B>Button1</B>

will edit the cell.  While a cell is
being edited,
<B>Tab</B>

and
<B>Shift-Tab</B>

will edit the cell to the right or left
respectively.  The
<B>osfUp</B>

and
<B>osfDown</B>

keys will edit the cell above or
below.
<B>Ctrl-Tab</B>

and
<B>Shift-Ctrl-Tab will traverse out of the Matrix and</B>

into the next or previous tab groups.
<P>

The
<B>osfCancel</B>

key will cancel any edits made to a cell.  The
<B>osfActivate</B>

key will commit any edits made to a cell and store them in the Matrix.
When traversing from another tab group into the Matrix, the focus will
go to whichever cell is currently being edited.  If no cells are being
edited, then the upper left most visible non-fixed cell will be edited.
<P>

The column sizes may be dynamically resized by pressing the Shift-Button2
combination when over a column boundary, similar to the behaviour of some
popular spreadsheets.  After a column has been resized in this manner,
the
<B>XbaeMatrix</B>

calls the callbacks on the
<B>XmNresizeColumnCallback</B>

callback list for post processing.
<P>

If the Matrix is resized until it is too small to display all of the
cells in a given dimension, then it will display a ScrollBar for that
dimension.  The horizontal ScrollBar will scroll the cells and column
labels, but not the row labels, fixed columns or trailing fixed columns.
The vertical ScrollBar will scroll the cells and row labels, but not the
column labels, fixed rows or trailing fixed rows.
<P>

For the application programmer,
<B>XbaeMatrix</B>

provides callbacks to assist in data validation.  The callbacks on the
<B>XmNmodifyVerifyCallback</B>

callback list are called before text is inserted into, or deleted from,
a cell.  This callback list can be used to force user input to match a
certain pattern (e.g. a date format).  Similarly, the
<B>XmNvalueChangedCallback</B>

is called after text is inserted or deleted.
<P>

When a cell is edited (by clicking on it or tabbing into it), the
<B>XmNleaveCellCallback</B>

callbacks are called for the previous cell being
edited, if any.  The application can verify the data entered in that
cell and disallow editing of the new cell if the data is invalid.  If
the data was valid, then the
<B>XmNenterCellCallback</B>

callbacks for the new cell are called.  These callbacks can be used to
specify the editability of the new cell.
<P>

The
<B>XmNtraverseCellCallback</B>

callbacks are also called when the user attempts to edit a new cell.
This allows the application to override the default traversal behavior
of
<B>XbaeMatrix</B>.

<P>

The
<B>XmNdefaultActionCallback</B>

is provided to allow a double click action in a cell to perform
some function.
<P>

Motif's Drag and Drop functionality can be achieved via the
<B>XmNprocessDragCallback</B>.

<P>

For large amounts of data, the overhead of assigning data to the widget
can be avoided using the
<B>XmNdrawCellCallback</B>.

This callback also allows user defined pixmaps to be placed in a certain
cell.
When using this callback, data for string fields can be written back to the
application by using the
<B>XmNwriteCellCallback</B>.

<A NAME="lbAE">&nbsp;</A>
<H3>Classes</H3>

<B>XbaeMatrix</B>

inherits behavior and resources from the 
<B>Core</B>,

<B>Composite</B>,

<B>Constraint</B>,

and 
<B>XmManager</B>

widget classes.
<BR>

The class pointer is 
<B>xbaeMatrixWidgetClass</B>.

<BR>

The class name is 
<B>XbaeMatrix</B>.

<A NAME="lbAF">&nbsp;</A>
<H3>New Resources</H3>

The following table lists the new resources defined by
<B>XbaeMatrix</B>.

The codes in the ``Access'' column indicate whether the given resource can be
set at creation time (C), or set by using XtSetValues (S), or retrieved
by using XtGetValues (G).
<P>
<TABLE BORDER><TR><TD><TABLE WIDTH=100%>
<TR VALIGN=top><TD ALIGN=center COLSPAN=5>XbaeMatrix Resource Set<BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><B>Name</B></TD><TD><B>Class</B></TD><TD><B>Type</B></TD><TD><B>Default</B></TD><TD><B>Access</B><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNallowColumnResize</FONT></TD><TD><FONT SIZE=-9>XmCAllowResize</FONT></TD><TD><FONT SIZE=-9>Boolean</FONT></TD><TD><FONT SIZE=-9>True</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNallowRowResize</FONT></TD><TD><FONT SIZE=-9>XmCAllowResize</FONT></TD><TD><FONT SIZE=-9>Boolean</FONT></TD><TD><FONT SIZE=-9>True</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNaltRowCount</FONT></TD><TD><FONT SIZE=-9>XmCAltRowCount</FONT></TD><TD><FONT SIZE=-9>int</FONT></TD><TD><FONT SIZE=-9>1</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNboldLabels</FONT></TD><TD><FONT SIZE=-9>XmCBoldLabels</FONT></TD><TD><FONT SIZE=-9>Boolean</FONT></TD><TD><FONT SIZE=-9>False</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNbuttonLabels</FONT></TD><TD><FONT SIZE=-9>XmCButtonLabels</FONT></TD><TD><FONT SIZE=-9>Boolean</FONT></TD><TD><FONT SIZE=-9>False</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNbuttonLabelBackground</FONT></TD><TD><FONT SIZE=-9>XmCColor</FONT></TD><TD><FONT SIZE=-9>Pixel</FONT></TD><TD><FONT SIZE=-9>dynamic</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNcalcCursorPosition</FONT></TD><TD><FONT SIZE=-9>XmCCalcCursorPosition</FONT></TD><TD><FONT SIZE=-9>Boolean</FONT></TD><TD><FONT SIZE=-9>False</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNcellBackgrounds</FONT></TD><TD><FONT SIZE=-9>XmCColors</FONT></TD><TD><FONT SIZE=-9>PixelTable</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNcellHighlightThickness</FONT></TD><TD><FONT SIZE=-9>XmCHighlightThickness</FONT></TD><TD><FONT SIZE=-9>Dimension</FONT></TD><TD><FONT SIZE=-9>2</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNcellMarginHeight</FONT></TD><TD><FONT SIZE=-9>XmCMarginHeight</FONT></TD><TD><FONT SIZE=-9>Dimension</FONT></TD><TD><FONT SIZE=-9>3</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNcellMarginWidth</FONT></TD><TD><FONT SIZE=-9>XmCMarginWidth</FONT></TD><TD><FONT SIZE=-9>Dimension</FONT></TD><TD><FONT SIZE=-9>3</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNcellShadowThickness</FONT></TD><TD><FONT SIZE=-9>XmCShadowThickness</FONT></TD><TD><FONT SIZE=-9>Dimension</FONT></TD><TD><FONT SIZE=-9>2</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNcellShadowType</FONT></TD><TD><FONT SIZE=-9>XmCShadowType</FONT></TD><TD><FONT SIZE=-9>unsigned char</FONT></TD><TD><FONT SIZE=-9>XmSHADOW_OUT</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNcellShadowTypes</FONT></TD><TD><FONT SIZE=-9>XmCCellShadowTypes</FONT></TD><TD><FONT SIZE=-9>unsigned char **</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNcellUserData</FONT></TD><TD><FONT SIZE=-9>XmCCellUserData</FONT></TD><TD><FONT SIZE=-9>XtPointer **</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNclipWindow</FONT></TD><TD><FONT SIZE=-9>XmCClipWindow</FONT></TD><TD><FONT SIZE=-9>Widget</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>G</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNcells</FONT></TD><TD><FONT SIZE=-9>XmCCells</FONT></TD><TD><FONT SIZE=-9>CellTable</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNcolors</FONT></TD><TD><FONT SIZE=-9>XmCColors</FONT></TD><TD><FONT SIZE=-9>PixelTable</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNcolumnAlignments</FONT></TD><TD><FONT SIZE=-9>XmCAlignments</FONT></TD><TD><FONT SIZE=-9>AlignmentArray</FONT></TD><TD><FONT SIZE=-9>dynamic</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNcolumnButtonLabels</FONT></TD><TD><FONT SIZE=-9>XmCButtonLabels</FONT></TD><TD><FONT SIZE=-9>BooleanArray</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNcolumnLabelAlignments</FONT></TD><TD><FONT SIZE=-9>XmCAlignments</FONT></TD><TD><FONT SIZE=-9>AlignmentArray</FONT></TD><TD><FONT SIZE=-9>dynamic</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNcolumnLabelColor</FONT></TD><TD><FONT SIZE=-9>XmCColor</FONT></TD><TD><FONT SIZE=-9>Pixel</FONT></TD><TD><FONT SIZE=-9>dynamic</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNcolumnLabels</FONT></TD><TD><FONT SIZE=-9>XmCLabels</FONT></TD><TD><FONT SIZE=-9>StringArray</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNcolumnMaxLengths</FONT></TD><TD><FONT SIZE=-9>XmCColumnMaxLengths</FONT></TD><TD><FONT SIZE=-9>MaxLengthArray</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNcolumnShadowTypes</FONT></TD><TD><FONT SIZE=-9>XmCShadowTypes</FONT></TD><TD><FONT SIZE=-9>unsigned char *</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNcolumnUserData</FONT></TD><TD><FONT SIZE=-9>XmCUserDatas</FONT></TD><TD><FONT SIZE=-9>XtPointer *</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNcolumnWidths</FONT></TD><TD><FONT SIZE=-9>XmCColumnWidths</FONT></TD><TD><FONT SIZE=-9>WidthArray</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNcolumns</FONT></TD><TD><FONT SIZE=-9>XmCColumns</FONT></TD><TD><FONT SIZE=-9>int</FONT></TD><TD><FONT SIZE=-9>0</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNdefaultActionCallback</FONT></TD><TD><FONT SIZE=-9>XmCCallback</FONT></TD><TD><FONT SIZE=-9>XtCallbackList</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNdoubleClickInterval</FONT></TD><TD><FONT SIZE=-9>XmCDoubleClickInterval</FONT></TD><TD><FONT SIZE=-9>int</FONT></TD><TD><FONT SIZE=-9>dynamic</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNdrawCellCallback</FONT></TD><TD><FONT SIZE=-9>XmCCallback</FONT></TD><TD><FONT SIZE=-9>Callback</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNenterCellCallback</FONT></TD><TD><FONT SIZE=-9>XmCCallback</FONT></TD><TD><FONT SIZE=-9>Callback</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNevenRowBackground</FONT></TD><TD><FONT SIZE=-9>XmCBackground</FONT></TD><TD><FONT SIZE=-9>Pixel</FONT></TD><TD><FONT SIZE=-9>dynamic</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNfill</FONT></TD><TD><FONT SIZE=-9>XmCFill</FONT></TD><TD><FONT SIZE=-9>Boolean</FONT></TD><TD><FONT SIZE=-9>False</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNfixedColumns</FONT></TD><TD><FONT SIZE=-9>XmCFixedColumns</FONT></TD><TD><FONT SIZE=-9>Dimension</FONT></TD><TD><FONT SIZE=-9>0</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNfixedRows</FONT></TD><TD><FONT SIZE=-9>XmCFixedRows</FONT></TD><TD><FONT SIZE=-9>Dimension</FONT></TD><TD><FONT SIZE=-9>0</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNfontList</FONT></TD><TD><FONT SIZE=-9>XmCFontList</FONT></TD><TD><FONT SIZE=-9>FontList</FONT></TD><TD><FONT SIZE=-9>fixed</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNgridLineColor</FONT></TD><TD><FONT SIZE=-9>XmCColor</FONT></TD><TD><FONT SIZE=-9>Pixel</FONT></TD><TD><FONT SIZE=-9>dynamic</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNgridType</FONT></TD><TD><FONT SIZE=-9>XmCGridType</FONT></TD><TD><FONT SIZE=-9>GridType</FONT></TD><TD><FONT SIZE=-9>XmGRID_CELL_LINE</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
</TABLE></TABLE>

<TABLE BORDER><TR><TD><TABLE WIDTH=100%>
<TR VALIGN=top><TD ALIGN=center COLSPAN=5>XbaeMatrix Resource Set (continued)<BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><B>Name</B></TD><TD><B>Class</B></TD><TD><B>Type</B></TD><TD><B>Default</B></TD><TD><B>Access</B><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNhighlightedCells</FONT></TD><TD><FONT SIZE=-9>XmCHighlightedCells</FONT></TD><TD><FONT SIZE=-9>HighlightTable *</FONT></TD><TD><FONT SIZE=-9>dynamic</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNhorizontalScrollBar</FONT></TD><TD><FONT SIZE=-9>XmCHorizontalScrollBar</FONT></TD><TD><FONT SIZE=-9>Widget</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>G</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNhorizontalScrollBarDisplayPolicy</FONT></TD><TD><FONT SIZE=-9>XmCMatrixScrollBarDisplayPolicy</FONT></TD><TD><FONT SIZE=-9>unsigned char</FONT></TD><TD><FONT SIZE=-9>XmDISPLAY_AS_NEEDED</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNlabelActivateCallback</FONT></TD><TD><FONT SIZE=-9>XmCCallback</FONT></TD><TD><FONT SIZE=-9>Callback</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNlabelFont</FONT></TD><TD><FONT SIZE=-9>XmCFontList</FONT></TD><TD><FONT SIZE=-9>FontList</FONT></TD><TD><FONT SIZE=-9>dynamic</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNleaveCellCallback</FONT></TD><TD><FONT SIZE=-9>XmCCallback</FONT></TD><TD><FONT SIZE=-9>Callback</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNleftColumn</FONT></TD><TD><FONT SIZE=-9>XmCLeftColumn</FONT></TD><TD><FONT SIZE=-9>int</FONT></TD><TD><FONT SIZE=-9>0</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNmodifyVerifyCallback</FONT></TD><TD><FONT SIZE=-9>XmCCallback</FONT></TD><TD><FONT SIZE=-9>Callback</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNmultiLineCell</FONT></TD><TD><FONT SIZE=-9>XmCMultiLineCell</FONT></TD><TD><FONT SIZE=-9>Boolean</FONT></TD><TD><FONT SIZE=-9>False</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNoddRowBackground</FONT></TD><TD><FONT SIZE=-9>XmCBackground</FONT></TD><TD><FONT SIZE=-9>Pixel</FONT></TD><TD><FONT SIZE=-9>dynamic</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNprocessDragCallback</FONT></TD><TD><FONT SIZE=-9>XmCCallback</FONT></TD><TD><FONT SIZE=-9>Callback</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNresizeCallback</FONT></TD><TD><FONT SIZE=-9>XmCCallback</FONT></TD><TD><FONT SIZE=-9>Callback</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNresizeColumnCallback</FONT></TD><TD><FONT SIZE=-9>XmCCallback</FONT></TD><TD><FONT SIZE=-9>Callback</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNreverseSelect</FONT></TD><TD><FONT SIZE=-9>XmCReverseSelect</FONT></TD><TD><FONT SIZE=-9>Boolean</FONT></TD><TD><FONT SIZE=-9>False</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNrowButtonLabels</FONT></TD><TD><FONT SIZE=-9>XmCButtonLabels</FONT></TD><TD><FONT SIZE=-9>BooleanArray</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNrowHeights</FONT></TD><TD><FONT SIZE=-9>XmCColumnWidths</FONT></TD><TD><FONT SIZE=-9>WidthArray</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNrowLabelAlignment</FONT></TD><TD><FONT SIZE=-9>XmCAlignment</FONT></TD><TD><FONT SIZE=-9>Alignment</FONT></TD><TD><FONT SIZE=-9>XmALIGNMENT_END</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNrowLabelColor</FONT></TD><TD><FONT SIZE=-9>XmCColor</FONT></TD><TD><FONT SIZE=-9>Pixel</FONT></TD><TD><FONT SIZE=-9>dynamic</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNrowLabelWidth</FONT></TD><TD><FONT SIZE=-9>XmCRowLabelWidth</FONT></TD><TD><FONT SIZE=-9>Short</FONT></TD><TD><FONT SIZE=-9>dynamic</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNrowLabels</FONT></TD><TD><FONT SIZE=-9>XmCLabels</FONT></TD><TD><FONT SIZE=-9>StringArray</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNrowShadowTypes</FONT></TD><TD><FONT SIZE=-9>XmCShadowTypes</FONT></TD><TD><FONT SIZE=-9>unsigned char *</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNrowUserData</FONT></TD><TD><FONT SIZE=-9>XmCUserDatas</FONT></TD><TD><FONT SIZE=-9>XtPointer *</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNrows</FONT></TD><TD><FONT SIZE=-9>XmCRows</FONT></TD><TD><FONT SIZE=-9>int</FONT></TD><TD><FONT SIZE=-9>0</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNscrollBarPlacement</FONT></TD><TD><FONT SIZE=-9>XmCScrollBarPlacement</FONT></TD><TD><FONT SIZE=-9>unsigned char</FONT></TD><TD><FONT SIZE=-9>XmBOTTOM_RIGHT</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNselectCellCallback</FONT></TD><TD><FONT SIZE=-9>XmCCallback</FONT></TD><TD><FONT SIZE=-9>Callback</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNselectScrollVisible</FONT></TD><TD><FONT SIZE=-9>XmCSelectScrollVisible</FONT></TD><TD><FONT SIZE=-9>Boolean</FONT></TD><TD><FONT SIZE=-9>True</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNselectedBackground</FONT></TD><TD><FONT SIZE=-9>XmCColor</FONT></TD><TD><FONT SIZE=-9>Pixel</FONT></TD><TD><FONT SIZE=-9>dynamic</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNselectedCells</FONT></TD><TD><FONT SIZE=-9>XmCSelectedCells</FONT></TD><TD><FONT SIZE=-9>BooleanTable</FONT></TD><TD><FONT SIZE=-9>dynamic</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNselectedForeground</FONT></TD><TD><FONT SIZE=-9>XmCColor</FONT></TD><TD><FONT SIZE=-9>Pixel</FONT></TD><TD><FONT SIZE=-9>dynamic</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNshadowType</FONT></TD><TD><FONT SIZE=-9>XmCShadowType</FONT></TD><TD><FONT SIZE=-9>unsigned char</FONT></TD><TD><FONT SIZE=-9>XmSHADOW_IN</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNshowArrows</FONT></TD><TD><FONT SIZE=-9>XmCShowArrows</FONT></TD><TD><FONT SIZE=-9>Boolean</FONT></TD><TD><FONT SIZE=-9>False</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNspace</FONT></TD><TD><FONT SIZE=-9>XmCSpace</FONT></TD><TD><FONT SIZE=-9>Dimension</FONT></TD><TD><FONT SIZE=-9>4</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNtextBackground</FONT></TD><TD><FONT SIZE=-9>XmCBackground</FONT></TD><TD><FONT SIZE=-9>Pixel</FONT></TD><TD><FONT SIZE=-9>dynamic</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNtextField</FONT></TD><TD><FONT SIZE=-9>XmCTextField</FONT></TD><TD><FONT SIZE=-9>Widget</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>G</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNtextShadowThickness</FONT></TD><TD><FONT SIZE=-9>XmCTextShadowThickness</FONT></TD><TD><FONT SIZE=-9>Dimension</FONT></TD><TD><FONT SIZE=-9>0</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNtextTranslations</FONT></TD><TD><FONT SIZE=-9>XmCTranslations</FONT></TD><TD><FONT SIZE=-9>TranslationTable</FONT></TD><TD><FONT SIZE=-9>dynamic</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNtopRow</FONT></TD><TD><FONT SIZE=-9>XmCTopRow</FONT></TD><TD><FONT SIZE=-9>int</FONT></TD><TD><FONT SIZE=-9>0</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNtrailingAttachedBottom</FONT></TD><TD><FONT SIZE=-9>XmCTrailingAttachedBottom</FONT></TD><TD><FONT SIZE=-9>Boolean</FONT></TD><TD><FONT SIZE=-9>False</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNtrailingFixedColumns</FONT></TD><TD><FONT SIZE=-9>XmCTrailingFixedColumns</FONT></TD><TD><FONT SIZE=-9>Dimension</FONT></TD><TD><FONT SIZE=-9>0</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNtrailingFixedRows</FONT></TD><TD><FONT SIZE=-9>XmCTrailingFixedRows</FONT></TD><TD><FONT SIZE=-9>Dimension</FONT></TD><TD><FONT SIZE=-9>0</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNtraverseCellCallback</FONT></TD><TD><FONT SIZE=-9>XmCCallback</FONT></TD><TD><FONT SIZE=-9>Callback</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNtraverseFixedCells</FONT></TD><TD><FONT SIZE=-9>XmCTraverseFixedCells</FONT></TD><TD><FONT SIZE=-9>Boolean</FONT></TD><TD><FONT SIZE=-9>False</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
</TABLE></TABLE>

<TABLE BORDER><TR><TD><TABLE WIDTH=100%>
<TR VALIGN=top><TD ALIGN=center COLSPAN=5>XbaeMatrix Resource Set (continued)<BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><B>Name</B></TD><TD><B>Class</B></TD><TD><B>Type</B></TD><TD><B>Default</B></TD><TD><B>Access</B><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNuseXbaeInput</FONT></TD><TD><FONT SIZE=-9>XmCUseXbaeInput</FONT></TD><TD><FONT SIZE=-9>Boolean</FONT></TD><TD><FONT SIZE=-9>True</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNvalueChangedCallback</FONT></TD><TD><FONT SIZE=-9>XmCCallback</FONT></TD><TD><FONT SIZE=-9>Callback</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNverticalScrollBar</FONT></TD><TD><FONT SIZE=-9>XmCVerticalScrollBar</FONT></TD><TD><FONT SIZE=-9>Widget</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>G</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNverticalScrollBarDisplayPolicy</FONT></TD><TD><FONT SIZE=-9>XmCMatrixScrollBarDisplayPolicy</FONT></TD><TD><FONT SIZE=-9>unsigned char</FONT></TD><TD><FONT SIZE=-9>XmDISPLAY_AS_NEEDED</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNvisibleColumns</FONT></TD><TD><FONT SIZE=-9>XmCVisibleColumns</FONT></TD><TD><FONT SIZE=-9>Dimension</FONT></TD><TD><FONT SIZE=-9>0</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNvisibleRows</FONT></TD><TD><FONT SIZE=-9>XmCVisibleRows</FONT></TD><TD><FONT SIZE=-9>Dimension</FONT></TD><TD><FONT SIZE=-9>0</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNwriteCellCallback</FONT></TD><TD><FONT SIZE=-9>XmCCallback</FONT></TD><TD><FONT SIZE=-9>Callback</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
</TABLE></TABLE>

<P>

This resource cannot be specified in a resource file
<P>


<DL COMPACT>
<DT><B>XmNallowColumnResize</B><DD>

If True, allows the columns to be dynamically resized via the ResizeColumns() action.
The default value is to allow column resizing.

<DT><B>XmNallowRowResize</B><DD>

If True, allows the rows to be dynamically resized via the ResizeRows() action.
The default value is to allow row resizing.

<DT><B>XmNaltRowCount</B><DD>

Specifies the number of rows to use for each of the
<B>XmNevenRowBackground</B>

and
<B>XmNoddRowBackround</B>

colors. This resource is ignored if
<B>XmNevenRowBackground</B>

and
<B>XmNoddRowBackround</B>

are not used.

<DT><B>XmNboldLabels</B><DD>

Overstrikes the row and column labels to create a bold font appearance
when True.
If False, the labels will appear the same as the text in the cells.  This
resource will be overriden and set to False if
<B>XmNlabelFont</B>

is set.

<DT><B>XmNbuttonLabels</B><DD>

When set to True, the labels will be drawn with a shadow around them similar
to an
<B>XmPushButton</B>

widget. A ButtonPress event generated on the labels, when
<B>XmNbuttonLabels</B>

is True will cause the label to reverse the shadow and take on a pushed in
appearance.  A ButtonRelease event on the same label will invoke callbacks
on the
<B>XmNlabelActivateCallback</B>,

list. The default value is False.

<DT><B>XmNbuttonLabelBackground</B><DD>

Specifies a Pixel value in which to draw the
<B>XmNbuttonLabels</B>.


<DT><B>XmNcalcCursorPosition</B><DD>

If set to True, the insertion position on the text field is calculated
with respect to where the pointer was clicked in the cell.  The default
value is False.  The insertion position will be overridden if the
<I>position</I>

member of the
<B>XbaeEnterCellCallbackStruct</B>

is set to a valid position.

<DT><B>XmNcellBackgrounds</B><DD>

Points to an array of pointers to rows. Each row is an array of Pixel
values, one for each column in that row. This data structure is the same
as that for
<B>XmNcells</B>,

except each entry is a Pixel instead of a String.
The background of a cell will be drawn in the color specified for that cell.
If
<B>XmNcellBackgrounds</B>

is 
<FONT SIZE=-1>NULL,</FONT>
backgrounds will be drawn using the color specified by
<B>XmNbackground</B>.

This resource is copied.
<B>XmNcellBackgrounds may be specified in a resource file but due to the</B>

two dimensional nature of the
<B>XbaeMatrix</B>

widget, it must be done by terminating each line with a \n character.
If the
<B>XbaeMatrix widget had</B>

<B>XmNrows</B>

set to 5 and
<B>XmNcolumns</B>

set to 5,
<B>XmNcellBackgrounds</B>

would be specified as:
<P>

<TABLE>
<TR VALIGN=top><TD>*mw.cellBackgrounds:</TD><TD>blue, white, blue, white, blue\n\ <BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>white, blue, white, blue, white\n\ <BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>blue, white, blue, white, blue\n\ <BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>white, blue, white, blue, white\n\ <BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>blue, white, blue, white, blue\n<BR></TD></TR>
</TABLE>


Care must be taken when specifying these values in a resource file as
an incorrect format can produce undesirable results.

<DT><B>XmNcellHighlightThickness</B><DD>

Specifies the
<B>XmNhighlightThickness</B>

resource of the
<B>XmText</B>

cell
edit widget. This resource is also used to compute the size of each
cell. See the description of
<B>XmNhighlightThickness</B>

in
<B><A HREF="XmText.html">XmText</A>(3X)</B>.


<DT><B>XmNcellMarginHeight</B><DD>

Specifies the
<B>XmNmarginHeight </B>

resource of the
<B>XmText</B>

widget. This resource is also used to compute the size of each cell. See
the description of
<B>XmNmarginHeight</B>

in
<B><A HREF="XmText.html">XmText</A>(3X)</B>.


<DT><B>XmNcellMarginWidth</B><DD>

Specifies the
<B>XmNmarginWidth</B>

resource of the
<B>XmText</B>

cell edit
widget. This resource is also used to compute the size of each cell. See
the description of
<B>XmNmarginWidth</B>

in
<B><A HREF="XmText.html">XmText</A>(3X)</B>.


<DT><B>XmNcellShadowThickness</B><DD>

Specifies the
<B>XmNshadowThickness</B>

resource of the
<B>XmText</B>

cell edit
widget. This resource is also used to compute the size of each cell. See
the description of
<B>XmNshadowThickness</B>

in
<B><A HREF="XmText.html">XmText</A>(3X)</B>.


<DT><B>XmNcellShadowType</B><DD>

Specifies the type of shadow drawn around each cell.  Possible values for
this resource are
<B>XmSHADOW_OUT</B>,

<B>XmSHADOW_IN</B>,

<B>XmSHADOW_ETCHED_OUT</B>,

and
<B>XmSHADOW_ETCHED_IN</B>.

The default shadow type is
<B>XmSHADOW_OUT</B>.


<DT><B>XmNcellShadowTypes</B><DD>

Specifies on a per cell basis, the
<B>XmNcellShadowType</B>.

Values for the resource are the same as for 
<B>XmNcellShadowType</B>.

This resource is copied.

<DT><B>XmNcellUserData</B><DD>

Points to an array of pointers to individual user defined data areas
associated with each cell.
The data should be set using
<B>XbaeMatrixSetCellUserData()</B>

and retrieved using
<B>XbaeMatrixGetCellUserData()</B>.

This resource cannot be specified in a resource file and is copied.

<DT><B>XmNcells</B><DD>

Points to an array of pointers to rows. Each row is an array of String,
one for each column in that row. For example, the cells for a 2x3 Matrix
could be set up as follows: 
<P>

<TABLE>
<TR VALIGN=top><TD COLSPAN=4>String rows[2][3] =<BR></TD></TR>
<TR VALIGN=top><TD>{</TD><TD></TD><TD></TD><TD><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>&quot;00&quot;,</TD><TD>&quot;01&quot;,</TD><TD>&quot;02&quot;,<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>&quot;10&quot;,</TD><TD>&quot;11&quot;,</TD><TD>&quot;12&quot;<BR></TD></TR>
<TR VALIGN=top><TD>};</TD><TD></TD><TD></TD><TD><BR></TD></TR>
</TABLE>


String *cells[2];
<BR>

cells[0] = &amp;rows[0][0];
<BR>

cells[1] = &amp;rows[1][0];


<P>
Now cells could be used as the
<B>XmNcells</B>

resource. If
<B>XmNcells</B>

is
<FONT SIZE=-1>NULL,</FONT>
<B>XbaeMatrix</B>

will
<B>not</B>

generate an internal table of empty Strings. This implies that if
<B>XmNcells </B>

is
<B>NULL</B>,

no cells have been set.
This resource is copied.  See the discussion in
<B>XmNcellBackgrounds</B>

for how to specify
<B>XmNcells</B>

in a resource file.

<DT><B>XmNclipWindow</B><DD>

The widget ID of the clip window.  The clip window is the widget that
contains the non-fixed region of cells. This resource can not be set
to a new value.

<DT><B>XmNcolors</B><DD>

Points to an array of pointers to rows. Each row is an array of Pixel
values, one for each column in that row. This data structure is the same
as that for
<B>XmNcells</B>,

except each entry is a Pixel instead of a String.
The text in a cell will be drawn in the color specified for that cell.
If
<B>XmNcolors</B>

is 
<FONT SIZE=-1>NULL,</FONT>
text will be drawn using the color specified by
<B>XmNforeground</B>.

This resource is copied. See the discussion in
<B>XmNcellBackgrounds</B>

for how to specify
<B>XmNcolors</B>

in a resource file.

<DT><B>XmNcolumnAlignments</B><DD>

Points to an array of alignments (unsigned char), one for each column.
Each element can be one of 
<B>XmALIGNMENT_BEGINNING</B>,

<B>XmALIGNMENT_CENTER</B> or <B>XmALIGNMENT_END</B>.

This specifies the alignment of the text or pixmap in each cell
of that column. See the description of 
<B>XmNalignment</B>

for 
<B><A HREF="XmLabel.html">XmLabel</A>(3X)</B>.

If
<B>XmNcolumnAlignments</B>

is 
<FONT SIZE=-1>NULL, </FONT>
each column will default to
<B>XmALIGNMENT_BEGINNING</B>.

This resource is copied.

<DT><B>XmNcolumnButtonLabels</B><DD>

An array of Booleans that tells the
<B>XbaeMatrix</B>

which column labels should be drawn as a button.  Each Boolean can be
specified as a Boolean string or integer. In order to use this resource,
<B>XmNbuttonLabels</B>

should be set to False.

<DT><B>XmNcolumnLabelAlignments</B><DD>

Points to an array of alignments (unsigned char), one for each column
label. Each element can be one of 
<B>XmALIGNMENT_BEGINNING,</B>

<B>XmALIGNMENT_CENTER</B> or <B>XmALIGNMENT_END</B>.

This specifies the alignment of
the text of each column label. See the description of 
<B>XmNalignment</B>

for
<B><A HREF="XmLabel.html">XmLabel</A>(3X)</B>.

If 
<B>XmNcolumnLabelAlignments</B>

is
<FONT SIZE=-1>NULL,</FONT>
each column label will
default to 
<B>XmALIGNMENT_BEGINNING</B>.

This resource is copied.

<DT><B>XmNcolumnLabelColor</B><DD>

Specifies a Pixel value in which to draw the
<B>XmNcolumnLabels</B>.


<DT><B>XmNcolumnLabels</B><DD>

Points to an array of Strings to be drawn above each column. Each String
may have embedded newline characters, in which case the label will be
drawn on multiple lines. If 
<B>XmNcolumnLabels</B>

is
<FONT SIZE=-1>NULL,</FONT>
no labels will be
drawn. This resource is copied.

<DT><B>XmNcolumnMaxLengths</B><DD>

Points to an array of int, one for each column. These specify the
maximum length of a String which can be entered in the cells in that
column. See the description of the 
<B><A HREF="XmText.html">XmText</A>(3X) XmNmaxLength</B>

resource. If 
<B>XmNcolumnMaxLengths</B>

is
<FONT SIZE=-1>NULL,</FONT>
then the corresponding width
from 
<B>XmNcolumnWidths</B>

is used. This resource is copied.

<DT><B>XmNcolumnShadowTypes</B><DD>

Specifies on a per column basis, the
<B>XmNcellShadowType</B>.

Values for the resource are the same as for 
<B>XmNcellShadowType</B>.

This resource is copied.

<DT><B>XmNcolumnUserData</B><DD>

Points to a user defined data area associated with a particular column.
The data should be set using
<B>XbaeMatrixSetColumnUserData()</B>

and retrieved using
<B>XbaeMatrixGetColumnUserData()</B>.

This resource cannot be specified in a resource file.

<DT><B>XmNcolumnWidths</B><DD>

Points to an array of short, one for each column. These specify the
visible width the cells in each column. See the description of the
<B><A HREF="XmText.html">XmText</A>(3X) XmNcolumns</B>

resource. 
<B>XmNcolumnWidths</B>

must not be
<FONT SIZE=-1>NULL.</FONT>
This resource is copied.

<DT><B>XmNcolumns</B><DD>

Specifies the total number of columns of cells. 
<B>XmNcolumns</B>

must be at
least one. If the number of columns is changed via XtSetValues, then
<B>XmNcolumnWidths</B>

must change, 
<B>XmNcolumnMaxLengths</B>

must change or be
<FONT SIZE=-1>NULL,</FONT>
<B>XmNcolumnLabels</B>

must change or be
<FONT SIZE=-1>NULL,</FONT>
<B>XmNcolumnAlignments</B>

must change
or be
<FONT SIZE=-1>NULL </FONT>
and 
<B>XmNcolumnLabelAlignments</B>

must change or be
<FONT SIZE=-1>NULL.</FONT>
The preferred way to dynamically change the number of columns is to use
<B>XbaeMatrixAddColumns()</B> or <B>XbaeMatrixDeleteColumns()</B>.


<DT><B>XmNdefaultActionCallback</B><DD>

Specifies a list of callbacks to be called when a double click occurs
in a cell.  A pointer to an
<B>XbaeMatrixDefaultActionCallbackStruct</B>

is passed to the callbacks. Events are reported to the cell in which the
double click occurs regardless of whether or not a callback exists.  This
callback is called by the DefaultAction() action and is NULL by default.
The
<B>XmNdefaultActionCallback</B>

is ideal for popping up a dialog or other window when a double click occurs.

<DT><B>XmNdoubleClickInterval</B><DD>

Specifies the amount of time between mouse clicks before it is considered
a double click.  A double click is defined to be the time between the
realease of the mouse button and subsequent press in the same cell.  The
default value is inherited from the display.

<DT><B>XmNdrawCellCallback</B><DD>

Specifies a list of callbacks to be called when a cell needs to be
drawn. A pointer to an
<B>XbaeMatrixDrawCellCallbackStruct</B>

is passed to
the callbacks. The application can specify what to put in a cell by modifying
the callback struct's data fields. When the
application callback returns to the widget code, the type field will
determine what the widget draws on the screen. If the value is
<B>XbaeString</B>,

then the regular string drawing function for the widget
will be called with the value the applicaton assigned to the string
field in the struct. Else, if the value is
<B>XbaePixmap</B>,

the widget will
do an
<B>XCopyPlane()</B>,

in the case of a single plane bitmap, or
<B>XCopyArea()</B>,

in the case of a color pixmap.
The width and height of cell is passed
in the struct so the application can know how big to make the
pixmap. In neither case will a copy of the string or the pixmap value
be made. The widget also uses the
<B>XmNcolumnAlignments</B>

resource to determine the horizontal alignment of the Pixmap.
To have an editable array of data when the
<B>XmNdrawCellCallback</B>

is used and the cell is of type XbaeString, use the
<B>XmNwriteCellCallback</B>.


<DT><B>XmNenterCellCallback</B><DD>

Specifies a list of callbacks to be called immediately before a cell is
to be edited. This callback list is called by the EditCell() action. A
pointer to an
<B>XbaeMatrixEnterCellCallbackStruct</B>

is passed to the
callbacks. The application can specify the editability of specific cells
using this callback list as well as specifying configuration options
for the
<B>XmText</B>.


<DT><B>XmNevenRowBackground</B><DD>

Specifies a background cell Pixel value to use on even rows. This allows the
matrix to look like computer paper. For wider bands of color,
increase the size of
<B>XmNaltRowCount</B>.


<DT><B>XmNfill</B><DD>

If True, controls whether the matrix should fill all of its available
space when additional space if available, or if it should simply size
itself as large as necessary, regardless of any additonal available space.

<DT><B>XmNfixedColumns</B><DD>

Specifies the number of leading columns (starting from the left column)
which should not be horizontally scrollable.
<B>XmNfixedColumns</B>

must be less
than 
<B>XmNcolumns</B>-<B>XmNtrailingFixedColumns</B>.

Cells in fixed columns are not editable unless
<B>XmNtraverseFixedCells</B>

is set to True.

<DT><B>XmNfixedRows</B><DD>

Specifies the number of leading rows (starting from the top row) which
should not be vertically scrollable.
<B>XmNfixedRows</B>

must be less than 
<B>XmNrows</B>-<B>XmNtrailingFixedRows</B>.

Cells in fixed rows are not editable unless
<B>XmNtraverseFixedCells</B>

is set to True.

<DT><B>XmNfontList</B><DD>

Specifies the font list to be used for the text displayed in the cells and the 
<B>XmText</B>

cell edit widget. See
<B><A HREF="XmFontListCreate.html">XmFontListCreate</A>(3X)</B>

to create a font list. This resource is copied.  The preferred way 
of specifying a font for the table is in a resource file.

<DT><B>XmNgridLineColor</B><DD>

Specifies the color in which the grid line should be drawn if
<B>XmNgridType</B>

is set to
<B>XmGRID_CELL_LINE</B>,

<B>XmGRID_ROW_LINE</B>

or
<B>XmGRID_COLUMN_LINE</B>.

The default is that of
<B>XmNforeground</B>.


<DT><B>XmNgridType</B><DD>

Sets the way the matrix grid is drawn.  The grid types available include
<B>XmGRID_NONE</B>,

<B>XmGRID_CELL_LINE</B>,

<B>XmGRID_CELL_SHADOW</B>,

<B>XmGRID_ROW_LINE</B>,

<B>XmGRID_ROW_SHADOW</B>,

<B>XmGRID_COLUMN_LINE</B>

and
<B>XmGRID_COLUMN_SHADOW</B>.

All of the grid types vary the way the shadow or line is drawn around
the cell.
<B>XmGRID_ROW_LINE</B>,

<B>XmGRID_ROW_SHADOW</B>,

<B>XmGRID_COLUMN_LINE</B>,

and
<B>XmGRID_COLUMN_SHADOW</B>

only draw a border around the rows and columns, giving a more tabular rather
than spreadsheet appearance. The default is
<B>XmGRID_CELL_LINE</B>

which draws a solid line around the cells.

<DT><B>XmNhighlightedCells</B><DD>

Points to an array of pointers to rows. Each row is an array of unsigned
char values, one for each column in that row. This data structure is the same
as that for 
<B>XmNcells</B>,

except each entry is an unsigned char instead of a
String. Each entry in the array will have a value that
is either
<B>HighlightNone</B>,

<B>HighlightCell</B>,

<B>HighlightRow</B>,

<B>HighlightColumn</B>,

<B>HighlightOther</B>

or the bitwise OR of those values, depending on the value of
<B>XmNgridType</B>

and which call was used to highlight the cell.
A cell will be drawn as highlighted if the
corresponding unsigned char does not have the value
<B>HighlightNone</B>.

If 
<B>XmNhighlightedCells</B>

is
<FONT SIZE=-1>NULL,</FONT>
<B>XbaeMatrix</B>

then no cells have been highlighted.
This resource is copied, and cannot be specified in a resource file.

<DT><B>XmNhorizontalScrollBar</B><DD>

The widget ID of the horizontal 
<B>XmScrollBar</B>.

This resource exists only for those applications that need to tie
another scrollbar to the matrix's for synchronized scrolling.
This resource can not be set to a new value.

<DT><B>XmNhorizontalScrollBarDisplayPolicy</B><DD>

Determines when to display a horizontal scrollbar in the matrix. Possible
values are
<B>XmDISPLAY_NONE</B>,

which makes the matrix never display the scrollbar,
<B>XmDISPLAY_AS_NEEDED</B>,

which makes the matrix display the scrollbar when the list is too large,
and
<B>XmDISPLAY_STATIC</B>,

which makes the matrix always display the scrollbar.

<DT><B>XmNlabelFont</B><DD>

Specifies the font list to be used for the text displayed in the row and
column labels. If
<B>XmNlabelFont</B>

is not specified, the value of
<B>XmNfontList</B>

is copied and used for the label fonts. If
<B>XmNboldLabels</B>

is set, this resource will override the value and set it to False. See
<B><A HREF="XmFontListCreate.html">XmFontListCreate</A>(3X)</B>

to create a font list. This resource is copied.  The preferred way 
of specifying a font for the labels is in a resource file.

<DT><B>XmNlabelActivateCallback</B><DD>

Specifies a list of callbacks to be called after a button label has been
pressed.  A pointer to an
<B>XbaeMatrixLabelActivateCallbackStruct</B>

is passed to the callbacks on this list.

<DT><B>XmNleaveCellCallback</B><DD>

Specifies a list of callbacks to be called immediately after a cell has
been edited. This callback list is called by the EditCell() and
CommitEdit() actions. A pointer to an
<B>XbaeMatrixLeaveCellCallbackStruct</B>

is passed to the callbacks. The application can perform cell specific
data checks using this callback list.

<DT><B>XmNleftColumn</B><DD>

Allows the programmer to specify the first non fixed column to appear on the
leftmost side of the matrix.  This resource compliments the
<B>XmNtopRow</B>

resource. See the discussion of
<B>XmNtopRow</B>

for more details.

<DT><B>XmNmodifyVerifyCallback</B><DD>

Specifies a list of callbacks to be called before text is deleted from
or inserted into the 
<B>XmText</B>

cell edit widget. A pointer to an
<B>XbaeMatrixModifyVerifyCallbackStruct</B>

is passed to the callbacks. See the
description of the 
<B><A HREF="XmText.html">XmText</A>(3X) XmNmodifyVerifyCallback</B>

resource.

<DT><B>XmNmultiLineCell</B><DD>

is a boolean (default False) which specifies whether the matrix displays
more than one line of text in a cell, when appropriate.

<DT><B>XmNoddRowBackground</B><DD>

Specifies a background cell color to use on odd rows. This allows the matrix to
look like computer paper. For wider bands of color, increase the size of
<B>XmNaltRowCount</B>.


<DT><B>XmNprocessDragCallback</B><DD>

Specifies a list of callbacks to be called from the ProcessDrag() action
A pointer to an
<B>XbaeMatrixProcessDragCallbackStruct</B>

will be passed to the
callbacks. The application can use this callback list to perform
particular processing during a drag.

<DT><B>XmNresizeCallback</B><DD>

Specifies a list of callbacks to be called when the matrix is resized.

<DT><B>XmNresizeColumnCallback</B><DD>

Specifies a list of callbacks to be called when a column is dynamically
resized by the user.

<DT><B>XmNreverseSelect</B><DD>

Overrides the default
<B>XmNselectedForeground</B>

and
<B>XmNselectedBackground</B>

and draws a selected cell in the colours specified by
<B>XmNcellBackgrounds</B>

and
<B>XmNcolors</B>

for the particular cell.  If these values are not set then the default colours
will be used.

<DT><B>XmNrowButtonLabels</B><DD>

An array of Booleans that tells the
<B>XbaeMatrix</B>

which row labels should be drawn as a button.  Each Boolean can be
specified as a Boolean string or integer. In order to use this resource,
<B>XmNbuttonLabels</B>

should be set to False.

<DT><B>XmNrowLabelAlignment</B><DD>

Specifies the alignment of the row labels. It can be one of
<B>XmALIGNMENT_BEGINNING</B>, <B>XmALIGNMENT_CENTER</B> or <B>XmALIGNMENT_END</B>.

See the description of 
<B>XmNalignment</B>

for 
<B><A HREF="XmLabel.html">XmLabel</A>(3X)</B>.

<B>XmNrowLabelAlignment</B>

defaults to
<B>XmALIGNMENT_END</B>.


<DT><B>XmNrowLabelColor</B><DD>

Specifies a Pixel value in which to draw the
<B>XmNrowLabels</B>.


<DT><B>XmNrowLabelWidth</B><DD>

Specifies the width of the row labels. 
<B>XmNrowLabelWidth</B>

defaults to the
width of the longest row label.

<DT><B>XmNrowLabels</B><DD>

Points to an array of Strings to be drawn to the left of each row. If
<B>XmNrowLabels</B>

is
<FONT SIZE=-1>NULL,</FONT>
no labels will be drawn. This resource is copied.

<DT><B>XmNrowShadowTypes</B><DD>

Specifies on a per row basis, the
<B>XmNcellShadowType</B>.

Values for the resource are the same as for 
<B>XmNcellShadowType</B>.

This resource is copied.

<DT><B>XmNrowUserData</B><DD>

Points to a user defined data area associated with a particular row.
The data should be set using
<B>XbaeMatrixSetRowUserData()</B>

and retrieved using
<B>XbaeMatrixGetRowUserData()</B>.

This resource cannot be specified in a resource file.

<DT><B>XmNrows</B><DD>

Specifies the total number of rows of cells. 
<B>XmNrows</B>

must be at least
one. If the number of rows is changed via XtSetValues, then 
<B>XmNrowLabels</B>

must change or be
<FONT SIZE=-1>NULL.</FONT>
The preferred way to dynamically change the
number of rows is to use
<B>XbaeMatrixAddRows()</B> or <B>XbaeMatrixDeleteRows()</B>.


<DT><B>XmNscrollBarPlacement</B><DD>

Determines where the scrollbars will be drawn.
See the discussion of
<B>XmNscrollBarPlacement</B>

in
<B><A HREF="XmScrolledWindow.html">XmScrolledWindow</A>(3)</B>

for a complete discussion on this resource.

<DT><B>XmNselectCellCallback</B><DD>

Specifies a list of callbacks to be called from the SelectCell() action.
A pointer to an
<B>XbaeMatrixSelectCellCallbackStruct</B>

will be passed to the
callbacks. The application can use this callback list to perform
selection/deselection of cells using the provided widget methods.

<DT><B>XmNselectScrollVisible</B><DD>

Specifies whether the matrix will scroll to make the selected cell visible.
This flag is only checked when cells are selected programmatically,
as when the user selects a cell with the mouse, it will already be visible.

<DT><B>XmNselectedBackground</B><DD>

Allows the background of selected cells in
<B>XmNselectedCells</B>

to be specified.

<DT><B>XmNselectedCells</B><DD>

Points to an array of pointers to rows. Each row is an array of Boolean
values, one for each column in that row. This data structure is the same
as that for 
<B>XmNcells</B>,

except each entry is a Boolean instead of a
String. A cell will be drawn as selected if the
corresponding Boolean is True. If 
<B>XmNselectedCells</B>

is
<FONT SIZE=-1>NULL,</FONT>
then no cells have been selected.
This resource is copied.  It cannot be specified in a resource file.

<DT><B>XmNselectedForeground</B><DD>

Allows the foreground of selected cells in
<B>XmNselectedCells</B>

to be specified.

<DT><B>XmNshadowType</B><DD>

Specifies the type of shadow drawn around the border of the matrix.
Possible values for this resource are
<B>XmSHADOW_OUT</B>,

<B>XmSHADOW_IN</B>,

<B>XmSHADOW_ETCHED_OUT</B>,

and
<B>XmSHADOW_ETCHED_IN</B>.

The default shadow type is XmSHADOW_OUT.

<DT><B>XmNshowArrows</B><DD>

Specifies whether arrows should be drawn when data in a cell has been
obscured due to the value of
<B>XmNcolumnWidths</B>.


<DT><B>XmNspace</B><DD>

Specifies the distance that separates the ScrollBars from the cell grid. The
default value is 4 pixels.

<DT><B>XmNtextBackground</B><DD>

Specifies the background of the 
<B>XmText</B>

cell edit widget. This can be used to
make the 
<B>XmText</B>

stand out against a uniformly colored matrix.

<DT><B>XmNtextField</B><DD>

The widget ID of the
<B>XmText</B>.

This resource cannot be set to a new value.

<DT><B>XmNtextShadowThickness</B><DD>

Specifies the
<B>XmNshadowThickness</B>

of the
<B>XmText</B>.

Interesting effects can be achieved by setting the
<B>XmNcellHighlightThickness</B>

to 0 and replacing the highlight with an indented shadow.

<DT><B>XmNtextTranslations</B><DD>

Specifies the 
<B>XmNtranslations</B>

resource of the 
<B>XmText</B>

cell edit
widget. See the description of 
<B>XmNtranslations</B>

in 
<B><A HREF="XmText.html">XmText</A>(3X)</B>.


<DT><B>XmNtopRow</B><DD>

Specifies the row which should be displayed at the top of the non-fixed
rows. 
<B>XmNtopRow</B>

is specified relative to the first non-fixed row, so
(XmNfixedRows + XmNtopRow) is the actual row number which will be moved
to the top. If (XmNtopRow &gt; (XmNrows - (&lt;number of rows visible&gt; + 
XmNfixedRows), then the actual row which will be moved to the top is
(XmNrows - (&lt;number of rows visible&gt; + XmNfixedRows).

<DT><B>XmNtrailingAttachedBottom</B><DD>

Indicated that any trailing fixed rows should be attached to the bottom
of the matrix. This resource only has effect when
<B>XmNfill</B>

is true and
<B>XmNtrailingFixedRows</B>

is greater than zero.

<DT><B>XmNtrailingFixedColumns</B><DD>

Specifies the number of trailing columns (starting from the right column)
which should not be horizontally scrollable.
<B>XmNtrailingFixedColumns</B>

must be less
than 
<B>XmNcolumns</B>-<B>XmNfixedColumns</B>.

Cells in trailing fixed columns are not editable unless
<B>XmNtraverseFixedCells</B>

is set to True.

<DT><B>XmNtrailingFixedRows</B><DD>

Specifies the number of trailing rows (starting from the bottom row) which
should not be vertically scrollable.
<B>XmNtrailingFixedRows</B>

must be less than 
<B>XmNrows</B>-<B>XmNfixedRows</B>.

Cells in trailing fixed rows are not editable unless
<B>XmNtraverseFixedCells</B>

is set to True.

<DT><B>XmNtraverseCellCallback</B><DD>

Specifies a list of callbacks to be called before a new cell is edited.
These callbacks are called by the EditCell() action, they are also
called when
<B>XbaeMatrix</B>

receives the focus while the 
<B>XmText</B>

edit widget is unmapped. A pointer to an
<B>XbaeMatrixTraverseCellCallbackStruct</B>

is passed to the callbacks. The application can specify the next cell
which should be edited via this callback list, thereby performing custom
traversal.

<DT><B>XmNtraverseFixedCells</B><DD>

If True, this resource allows fixed cells and columns to be edited.  The
default is to not allow fixed rows or columns to be edited.

<DT><B>XmNuseXbaeInput</B><DD>

This boolean value determines whether to use XbaeInput or XmTextField
as the widget used for editing cells.
Default is to use XbaeInput.

<DT><B>XmNvalueChangedCallback</B><DD>

Specifies a list of callbacks to be called after text is deleted from
or inserted into the 
<B>XmText</B>

cell edit widget. A pointer to an
<B>XbaeMatrixValueChangedCallbackStruct</B>

is passed to the callbacks. See the
description of the 
<B><A HREF="XmText.html">XmText</A>(3X) XmNvalueChangedCallback</B>

resource.

<DT><B>XmNverticalScrollBar</B><DD>

The widget ID of the vertical 
<B>XmScrollBar</B>.

This resource exists only for those applications that need to tie
another scrollbar to the matrix's for synchronized scrolling.
This resource can not be set to a new value.

<DT><B>XmNverticalScrollBarDisplayPolicy</B><DD>

Determines when to display a horizontal scrollbar in the matrix. Possible
values and their effects are listed under
<B>XmNhorizontalScrollBarDisplayPolicy</B>.


<DT><B>XmNvisibleColumns</B><DD>

Specifies the number of non-fixed columns which should be
visible. The widget will request a size which will allow
<B>XmNvisibleColumns</B>

columns to be displayed.  The programmer should take into allowance
any
<B>XmNfixedColumns</B>

that are specified.  This feature becomes even more apparent if the
number of
<B>XmNfixedColumns</B>

changes at runtime as the value may need to be adjusted to avoid a
warning.

<DT><B>XmNvisibleRows</B><DD>

Specifies the number of rows which should be visible at any
one time. The widget will request a size which will allow 
<B>XmNvisibleRows</B>

rows to be displayed.

<DT><B>XmNwriteCellCallback</B><DD>

Specifies  a  list  of  callbacks to be called when a
cell value changes and an
<B>XmNdrawCellCallback</B>

is defined. A pointer to  an 
<B>XbaeMatrixWriteCellCallbackStruct</B>

is passed to the callbacks.  The
<B>XmNwriteCellCallback</B>

allows data to be written back into the application's data structure and must
be defined for an editable
<B>XbaeMatrix</B>

with an 
<B>XmNdrawCellCallback</B>.

</DL>
<P>

<A NAME="lbAG">&nbsp;</A>
<H3>Inherited Resources</H3>

The following table lists the resources which
<B>XbaeMatrix</B>

inherits from
it's superclasses
<B>XmManager</B>,

<B>Compositeand</B>

<B>Core</B>.

For a complete
description of each resource, refer to the man page for that superclass.
The codes in the ``Access'' column indicate whether the given resource can
be set at creation time (C), or set by using XtSetValues (S), or
retrieved by using XtGetValues (G).
<P>

<TABLE BORDER><TR><TD><TABLE WIDTH=100%>
<TR VALIGN=top><TD ALIGN=center COLSPAN=5>XmManager Resource Set<BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><B>Name</B></TD><TD><B>Class</B></TD><TD><B>Type</B></TD><TD><B>Default</B></TD><TD><B>Access</B><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNbottomShadowColor</FONT></TD><TD><FONT SIZE=-9>XmCBottomShadowColor</FONT></TD><TD><FONT SIZE=-9>Pixel</FONT></TD><TD><FONT SIZE=-9>dynamic</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNbottomShadowPixmap</FONT></TD><TD><FONT SIZE=-9>XmCBottomShadowPixmap</FONT></TD><TD><FONT SIZE=-9>Pixmap</FONT></TD><TD><FONT SIZE=-9>XmUNSPECIFIED_PIXMAP</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNforeground</FONT></TD><TD><FONT SIZE=-9>XmCForeground</FONT></TD><TD><FONT SIZE=-9>Pixel</FONT></TD><TD><FONT SIZE=-9>dynamic</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNhighlightColor</FONT></TD><TD><FONT SIZE=-9>XmCHighlightColor</FONT></TD><TD><FONT SIZE=-9>Pixel</FONT></TD><TD><FONT SIZE=-9>dynamic</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNhighlightPixmap</FONT></TD><TD><FONT SIZE=-9>XmCHighlightPixmap</FONT></TD><TD><FONT SIZE=-9>Pixmap</FONT></TD><TD><FONT SIZE=-9>dynamic</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNinitialFocus</FONT></TD><TD><FONT SIZE=-9>XmCInitialFocus</FONT></TD><TD><FONT SIZE=-9>Widget</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNnavigationType</FONT></TD><TD><FONT SIZE=-9>XmCNavigationType</FONT></TD><TD><FONT SIZE=-9>XmNavigationType</FONT></TD><TD><FONT SIZE=-9>XmTAB_GROUP</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNshadowThickness</FONT></TD><TD><FONT SIZE=-9>XmCShadowThickness</FONT></TD><TD><FONT SIZE=-9>Dimension</FONT></TD><TD><FONT SIZE=-9>0</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNstringDirection</FONT></TD><TD><FONT SIZE=-9>XmCStringDirection</FONT></TD><TD><FONT SIZE=-9>XmStringDirection</FONT></TD><TD><FONT SIZE=-9>dynamic</FONT></TD><TD><FONT SIZE=-9>CG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNtopShadowColor</FONT></TD><TD><FONT SIZE=-9>XmCTopShadowColor</FONT></TD><TD><FONT SIZE=-9>Pixel</FONT></TD><TD><FONT SIZE=-9>dynamic</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNtopShadowPixmap</FONT></TD><TD><FONT SIZE=-9>XmCTopShadowPixmap</FONT></TD><TD><FONT SIZE=-9>Pixmap</FONT></TD><TD><FONT SIZE=-9>dynamic</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNtraversalOn</FONT></TD><TD><FONT SIZE=-9>XmCTraversalOn</FONT></TD><TD><FONT SIZE=-9>Boolean</FONT></TD><TD><FONT SIZE=-9>True</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNunitType</FONT></TD><TD><FONT SIZE=-9>XmCUnitType</FONT></TD><TD><FONT SIZE=-9>unsigned char</FONT></TD><TD><FONT SIZE=-9>dynamic</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNuserData</FONT></TD><TD><FONT SIZE=-9>XmCUserData</FONT></TD><TD><FONT SIZE=-9>XtPointer</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
</TABLE></TABLE>

<P>

<P>
<TABLE BORDER><TR><TD><TABLE WIDTH=100%>
<TR VALIGN=top><TD ALIGN=center COLSPAN=5>Composite Resource Set<BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR><HR></TD></TR>
<TR VALIGN=top><TD><B>Name</B></TD><TD><B>Class</B></TD><TD><B>Type</B></TD><TD><B>Default</B></TD><TD><B>Access</B><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNchildren</FONT></TD><TD><FONT SIZE=-9>XmCReadOnly</FONT></TD><TD><FONT SIZE=-9>WidgetList</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>G</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNinsertPosition</FONT></TD><TD><FONT SIZE=-9>XmCInsertPosition</FONT></TD><TD><FONT SIZE=-9>XtOrderProc</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNnumChildren</FONT></TD><TD><FONT SIZE=-9>XmCReadOnly</FONT></TD><TD><FONT SIZE=-9>Cardinal</FONT></TD><TD><FONT SIZE=-9>0</FONT></TD><TD><FONT SIZE=-9>G</FONT><BR></TD></TR>
</TABLE></TABLE>

<P>

<TABLE BORDER><TR><TD><TABLE WIDTH=100%>
<TR VALIGN=top><TD ALIGN=center COLSPAN=5>Core Resource Set<BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR><HR></TD></TR>
<TR VALIGN=top><TD><B>Name</B></TD><TD><B>Class</B></TD><TD><B>Type</B></TD><TD><B>Default</B></TD><TD><B>Access</B><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNaccelerators</FONT></TD><TD><FONT SIZE=-9>XmCAccelerators</FONT></TD><TD><FONT SIZE=-9>XtAccelerators</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNancestorSensitive</FONT></TD><TD><FONT SIZE=-9>XmCSensitive</FONT></TD><TD><FONT SIZE=-9>Boolean</FONT></TD><TD><FONT SIZE=-9>dynamic</FONT></TD><TD><FONT SIZE=-9>G</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNbackground</FONT></TD><TD><FONT SIZE=-9>XmCBackground</FONT></TD><TD><FONT SIZE=-9>Pixel</FONT></TD><TD><FONT SIZE=-9>dynamic</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNbackgroundPixmap</FONT></TD><TD><FONT SIZE=-9>XmCPixmap</FONT></TD><TD><FONT SIZE=-9>Pixmap</FONT></TD><TD><FONT SIZE=-9>XmUNSPECIFIED_PIXMAP</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNborderColor</FONT></TD><TD><FONT SIZE=-9>XmCBorderColor</FONT></TD><TD><FONT SIZE=-9>Pixel</FONT></TD><TD><FONT SIZE=-9>XtDefaultForeground</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNborderPixmap</FONT></TD><TD><FONT SIZE=-9>XmCPixmap</FONT></TD><TD><FONT SIZE=-9>Pixmap</FONT></TD><TD><FONT SIZE=-9>XmUNSPECIFIED_PIXMAP</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNborderWidth</FONT></TD><TD><FONT SIZE=-9>XmCBorderWidth</FONT></TD><TD><FONT SIZE=-9>Dimension</FONT></TD><TD><FONT SIZE=-9>1</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNcolormap</FONT></TD><TD><FONT SIZE=-9>XmCColormap</FONT></TD><TD><FONT SIZE=-9>Colormap</FONT></TD><TD><FONT SIZE=-9>dynamic</FONT></TD><TD><FONT SIZE=-9>CG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNdepth</FONT></TD><TD><FONT SIZE=-9>XmCDepth</FONT></TD><TD><FONT SIZE=-9>int</FONT></TD><TD><FONT SIZE=-9>dynamic</FONT></TD><TD><FONT SIZE=-9>CG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNdestroyCallback</FONT></TD><TD><FONT SIZE=-9>XmCCallback</FONT></TD><TD><FONT SIZE=-9>XtCallbackList</FONT></TD><TD><FONT SIZE=-9>NULL</FONT></TD><TD><FONT SIZE=-9>C</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNheight</FONT></TD><TD><FONT SIZE=-9>XmCHeight</FONT></TD><TD><FONT SIZE=-9>Dimension</FONT></TD><TD><FONT SIZE=-9>dynamic</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNinitialResourcesPersistent</FONT></TD><TD><FONT SIZE=-9>XmCInitialResourcesPersistent</FONT></TD><TD><FONT SIZE=-9>Boolean</FONT></TD><TD><FONT SIZE=-9>True</FONT></TD><TD><FONT SIZE=-9>C</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNmappedWhenManaged</FONT></TD><TD><FONT SIZE=-9>XmCMappedWhenManaged</FONT></TD><TD><FONT SIZE=-9>Boolean</FONT></TD><TD><FONT SIZE=-9>True</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNscreen</FONT></TD><TD><FONT SIZE=-9>XmCScreen</FONT></TD><TD><FONT SIZE=-9>Screen</FONT></TD><TD><FONT SIZE=-9>dynamic</FONT></TD><TD><FONT SIZE=-9>CG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNsensitive</FONT></TD><TD><FONT SIZE=-9>XmCSensitive</FONT></TD><TD><FONT SIZE=-9>Boolean</FONT></TD><TD><FONT SIZE=-9>True</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNtranslations</FONT></TD><TD><FONT SIZE=-9>XmCTranslations</FONT></TD><TD><FONT SIZE=-9>XtTranslations</FONT></TD><TD><FONT SIZE=-9>dynamic</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNwidth</FONT></TD><TD><FONT SIZE=-9>XmCWidth</FONT></TD><TD><FONT SIZE=-9>Dimension</FONT></TD><TD><FONT SIZE=-9>dynamic</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNx</FONT></TD><TD><FONT SIZE=-9>XmCPosition</FONT></TD><TD><FONT SIZE=-9>Position</FONT></TD><TD><FONT SIZE=-9>0</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=5><HR></TD></TR>
<TR VALIGN=top><TD><FONT SIZE=-9>XmNy</FONT></TD><TD><FONT SIZE=-9>XmCPosition</FONT></TD><TD><FONT SIZE=-9>Position</FONT></TD><TD><FONT SIZE=-9>0</FONT></TD><TD><FONT SIZE=-9>CSG</FONT><BR></TD></TR>
</TABLE></TABLE>

<P>

<A NAME="lbAH">&nbsp;</A>
<H3>Callback Information</H3>

<P>


<DL COMPACT>
<DT><B>XbaeMatrixAnyCallbackStruct</B><DD>

A callback struct that is suitable for all callbacks that require
the
<I>reason</I>,

<I>event</I>,

<I>row</I>

and
<I>column</I>

to be available.  Any callback called may therefore cast the third
parameter to the following struct in 
<B>XbaeMatrix</B>

and can rest assured that evrything in it will be available.
<P>

<TABLE>
<TR VALIGN=top><TD COLSPAN=3><B>typedef struct</B><BR></TD></TR>
<TR VALIGN=top><TD>{</TD><TD><B></B></TD><TD><I></I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>XbaeReasonType</B></TD><TD><I>reason;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>column;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>XEvent</B></TD><TD><I>*event;</I><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=3><B>} XbaeMatrixAnyCallbackStruct;</B><BR></TD></TR>
</TABLE>

<DL COMPACT><DT><DD>
<P>
Each of the members are set to the appropriate struct for the callback.
<P>

If this idea is a little foreign to you, recommended
reading is K&amp;R II page 213.
</DL>

</DL>
<P>


<DL COMPACT>
<DT><B>XmNdefaultActionCallback</B><DD>

Callbacks on the
<B>XmNdefaultActionCallback</B>

list are called when the DefaultAction() action occurs.  The
application can bind the DefaultAction() action to any pointer
based event. When a double click occurs on this pointer event,
DefaultAction() will call the callbacks on the
<B>XmNdefaultActionCallback</B>

list. A pointer to the following structure is passed to each callback on the
<B>XmNdefaultActionCallback</B>

list:
<P>

<TABLE>
<TR VALIGN=top><TD COLSPAN=3><B>typedef struct</B><BR></TD></TR>
<TR VALIGN=top><TD>{</TD><TD><B></B></TD><TD><I></I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>XbaeReasonType</B></TD><TD><I>reason;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>XEvent</B></TD><TD><I>*event;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>column;</I><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=3><B>} XbaeMatrixDefaultActionCallbackStruct;</B><BR></TD></TR>
</TABLE>

<DL COMPACT><DT><DD>
<P>

<DL COMPACT>
<DT><I>reason</I><DD>

Set to
<B>XbaeDefaultActionReason .</B>


<DT><I>event</I><DD>

The event that invoked this callback.

<DT><I>row</I><DD>

The row number of the cell in which the double click occurred.

<DT><I>column</I><DD>

The column number of the cell in which the double click occurred.

<DT><I>event</I><DD>

</DL>
<P>

If an application has an
<B>XmNdefaultActionCallback</B>,

then the callbacks on the list will be called when the user clicks
twice in a cell within
<B>XmNdoubleClickInterval</B>,

enabling some action to occur for the particular cell.
</DL>

</DL>
<P>


<DL COMPACT>
<DT><B>XmNdrawCellCallback</B><DD>

Callbacks on the
<B>XmNdrawCellCallback</B>

list are called when the widget needs to
draw a cell. A pointer to the following structure is passed to each
callback on the
<B>XmNdrawCellCallback</B>

list:
<P>

<TABLE>
<TR VALIGN=top><TD COLSPAN=3><B>typedef struct</B><BR></TD></TR>
<TR VALIGN=top><TD>{</TD><TD><B></B></TD><TD><I></I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>XbaeReasonType</B></TD><TD><I>reason;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>XEvent</B></TD><TD><I>*event;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>column;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>width;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>height;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>XbaeCellType</B></TD><TD><I>type;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>String</B></TD><TD><I>string;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>Pixmap</B></TD><TD><I>pixmap;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>Pixmap</B></TD><TD><I>mask;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>Pixel</B></TD><TD><I>foreground;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>Pixel</B></TD><TD><I>background;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>depth;</I><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=3><B>} XbaeMatrixDrawCellCallbackStruct;</B><BR></TD></TR>
</TABLE>

<DL COMPACT><DT><DD>
<P>

<DL COMPACT>
<DT><I>reason</I><DD>

Set to
<B>XbaeDrawCellReason</B>.


<DT><I>event</I><DD>

Always set to
<FONT SIZE=-1>NULL</FONT>

<DT><I>row</I><DD>

The row number of the cell that needs to be drawn.

<DT><I>column</I><DD>

The column number of the cell that needs to be drawn.

<DT><I>width</I><DD>

The width of the cell that needs to be drawn.

<DT><I>height</I><DD>

The height of the cell that needs to be drawn.

<DT><I>type</I><DD>

The type of ``data'' the programmer wants drawn in the cell, or
which field should be looked at for data to draw:  string or pixmap.

<DT><I>string</I><DD>

The string to draw if <I>type</I> is set to
<B>XbaeString</B>.


<DT><I>pixmap</I><DD>

The pixmap to copy if <I>type</I> is set to
<B>XbaePixmap</B>.

It will be clipped
to width by height if necessary.

<DT><I>mask</I><DD>

A mask for the pixmap as obtained from the XPM library.  <I>mask</I> is only
necessary when <I>pixmap</I> has a depth greater than one.

<DT><I>foreground</I><DD>

The foreground color of the cell.

<DT><I>background</I><DD>

The background color of the cell.

<DT><I>depth</I><DD>

The depth of the pixmap image (in bits per pixel).  
</DL>
<P>

If the application adds this callback, when the
<B>XbaeMatrix</B>

determines that a
cell at (row, column) needs to be redrawn, the normal cell drawing
mechanism will be skipped and this callback called so the application can
tell the widget what to put in the cell.
<P>

The <I>type</I> field is defaulted to
<B>XbaeString</B>

and no cacheing or saving of the string or pixmap is done.
<P>

If the application sets <I>type</I> to XbaePixmap, the width, height and depth
of the returned pixmap will be calculated with a call to
<B>XGetGeometry()</B>.

If the programmer wishes to supply the width, height and depth there is a
marked improvement as a round trip to the X server is avoided.  Note that
all geometry parameters must be supplied to ensure successful display of
the pixmap.
<P>

If a <I>mask</I> is also provided, it will be used to display the pixmap
transparently.
Pixmaps drawn in cells also respect the value of
<B>XmNcolumnAlignments</B>.

<P>

By defining an
<B>XmNdrawCellCallback</B>

the need for the storage of the
<B>XbaeMatrix</B>

data within the matrix is eliminated and can prove to be advantageous
for memory usage.
<P>

To write the data back to the application, use the
<B>XmNwriteCellCallback</B>

described below.
</DL>


<DT><B>XmNenterCellCallback</B><DD>

Callbacks on the
<B>XmNenterCellCallback</B>

list are called from the
EditCell() action just before a cell is edited to determine it's
editability. A pointer to the following structure is passed to each
callback on the
<B>XmNenterCellCallback</B>

list:
<P>

<TABLE>
<TR VALIGN=top><TD COLSPAN=3><B>typedef struct</B><BR></TD></TR>
<TR VALIGN=top><TD>{</TD><TD><B></B></TD><TD><I></I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>XbaeReasonType</B></TD><TD><I>reason;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>XEvent</B></TD><TD><I>*event;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>column;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>position;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>String</B></TD><TD><I>pattern;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>Boolean</B></TD><TD><I>auto_fill;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>Boolean</B></TD><TD><I>convert_case;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>Boolean</B></TD><TD><I>overwrite_mode;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>Boolean</B></TD><TD><I>select_text;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>Boolean</B></TD><TD><I>map;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>Cardinal</B></TD><TD><I>num_params;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>String</B></TD><TD><I>*params;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>Boolean</B></TD><TD><I>doit;</I><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=3><B>} XbaeMatrixEnterCellCallbackStruct;</B><BR></TD></TR>
</TABLE>

<DL COMPACT><DT><DD>
<P>

<DL COMPACT>
<DT><I>reason</I><DD>

Set to
<B>XbaeEnterCellReason</B>.


<DT><I>event</I><DD>

The event that invoked the callback.

<DT><I>row</I><DD>

The row number of the cell about to be edited.

<DT><I>column</I><DD>

The column number of the cell about to be edited.

<DT><I>position</I><DD>

The location of the cursor in the text field.  The default is to
place the cursor at the end of the string in the cell.

<DT><I>pattern</I><DD>

A pattern for the 
<B>XbaeInput</B>

widget (see <A HREF="XbaeInput.html">XbaeInput</A>(3)).  The default is to not specify a
<I>pattern</I>.


<DT><I>auto_fill</I><DD>

Used in conjunction with the setting of the
<I>pattern</I>

to allow literals in the
<I>pattern</I>

to be automatically inserted.

<DT><I>convert_case</I><DD>

If the <I>pattern</I> specifies an upper or lower case letter, the
character typed in the position can automatically be converted to
the appropriate case when set to True.  The default is to not convert
the case of the typed letter.

<DT><I>overwrite_mode</I><DD>

Normally, the cursor appears as the familiar I caret.  By setting
<I>overwrite_mode</I> to True, the text field will go into overwrite
mode where keystrokes replace the character underneath the block
cursor.

<DT><I>select_text</I><DD>

Indicates whether the text in the cell should be highlighted (only valid if
<I>doit</I> is set to True also.

<DT><I>map</I><DD>

Tells the matrix if the
<B>XmText</B>

should be mapped onto the cell.  Only makes sense if <I>doit</I> is set to
False.

<DT><I>num_params</I><DD>

The number of String parameters passed to the EditCell() action.

<DT><I>params</I><DD>

An array containing the num_params String parameters passed to the
EditCell() action.

<DT><I>doit</I><DD>

Indicates whether or not this cell is editable. Setting doit to False
will make this cell not editable. The default value is True.
</DL>
<P>

If the application determines that the cell at (<I>row</I>, <I>column</I>) is
not editable, it should set the doit flag to False.
If the <I>map</I> flag is also set to False,
<B>XbaeMatrix</B>

will not place the
<B>XmText</B>

cell editor on the cell.  If <I>map</I> is left as True, the
<B>XmText</B>

will be placed on the cell but the user
will not be able to add or delete characters from it. If the application
leaves <I>doit</I> as True, then the TextField will be editable. 
In addition, if <I>select_text</I> is set to True, the text in the cell
will be selected via
<B>XmTextSetSelection</B>.

Assuming
<B>XmNpendingDelete</B>

for the
<B>XmText</B>

is also True, the selected text will be deleted as soon as the next
text insertion occurs.
</DL>

</DL>
<P>


<DL COMPACT>
<DT><B>XmNlabelActivateCallback</B><DD>

Callbacks on the
<B>XmNlabelActivateCallback</B>

list are called after a button label has been activated via a mouse click.
A pointer to the following structure is passed to each callback on the
<B>XmNlabelActivateCallback</B>

list:
<P>

<TABLE>
<TR VALIGN=top><TD COLSPAN=3><B>typedef struct</B><BR></TD></TR>
<TR VALIGN=top><TD>{</TD><TD><B></B></TD><TD><I></I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>XbaeReasonType</B></TD><TD><I>reason;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>XEvent</B></TD><TD><I>*event;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>column;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>Boolean</B></TD><TD><I>row_label;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>String</B></TD><TD><I>label;</I><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=3><B>} XbaeMatrixLabelActivateCallbackStruct;</B><BR></TD></TR>
</TABLE>

<DL COMPACT><DT><DD>
<P>

<DL COMPACT>
<DT><I>reason</I><DD>

Set to
<B>XbaeLabelActivateReason</B>.


<DT><I>event</I><DD>

The event that invoked this callback.

<DT><I>row</I><DD>

The row number of the button label or -1 if the button was a column label.

<DT><I>column</I><DD>

The column number of the button label or -1 if the button was a row label.

<DT><I>row_label</I><DD>

If the button label that invoked the callback is a row label, then this
value is set to True.  If it was a column label then it is set to False.

<DT><I>label</I><DD>

The label on the button that was pressed.
</DL>
<P>

When the
<B>XbaeMatrix</B>

receives a ButtonRelease event on the same button label that it received
a ButtonPress event, the
<B>XmNlabelActivateCallback</B>

is called to allow the programmer to respond to the event.  The callback
has been provided to emulate some popular spreadsheets on the market.
</DL>

</DL>
<P>


<DL COMPACT>
<DT><B>XmNleaveCellCallback</B><DD>

Callbacks on the
<B>XmNleaveCellCallback</B>

list are called from the
EditCell() and CommitEdit() actions just before the edit to the current
cell is committed. The application can validate the changes made to the
cell, and allow or disallow them. A pointer to the following structure
is passed to each callback on the
<B>XmNleaveCellCallback</B>

list:
<P>

<TABLE>
<TR VALIGN=top><TD COLSPAN=3><B>typedef struct</B><BR></TD></TR>
<TR VALIGN=top><TD>{</TD><TD><B></B></TD><TD><I></I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>XbaeReasonType</B></TD><TD><I>reason;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>XEvent</B></TD><TD><I>*event;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>row, column;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>String</B></TD><TD><I>value;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>Boolean</B></TD><TD><I>doit;</I><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=3><B>} XbaeMatrixLeaveCellCallbackStruct;</B><BR></TD></TR>
</TABLE>

<DL COMPACT><DT><DD>
<P>

<DL COMPACT>
<DT><I>reason</I><DD>

Set to
<B>XbaeLeaveCellReason</B>.


<DT><I>event</I><DD>

The event that invoked this callback.

<DT><I>row</I><DD>

The row number of the cell being edited.

<DT><I>column</I><DD>

The column number of the cell being edited.

<DT><I>value</I><DD>

Contains the new data which will be stored in this cell if doit is True.
The memory pointed to by value may be modified, or if the new contents
are larger than the current contents, then value should be set to point
to a larger piece of allocated memory.

<DT><I>doit</I><DD>

Indicates whether the edits applied to this cell should actually be
stored into
<B>XbaeMatrix</B>.

Setting doit to False will cause the changes to
be discarded and the cell will retain its original value. The default
value is True.
</DL>
<P>

If the application determines that the value entered in the cell at
(row, column) is not valid, it should set the doit flag to False. This
will prevent the changes from being stored in the cell. The TextField
edit widget will remain on the current cell. If the application leaves
doit as True, then the changes made to the cell will be committed and
the TextField will move to the next cell or be unmapped. The application
can also modify the String in value, e.g. to force a String to be all
upper case.
</DL>

</DL>
<P>


<DL COMPACT>
<DT><B>XmNmodifyVerifyCallback</B><DD>

Callbacks on the
<B>XmNmodifyVerifyCallback</B>

list are called while a cell is
being edited. The callbacks are called before text is inserted into or
deleted from the TextField edit widget. A pointer to the following
structure is passed to each callback on the
<B>XmNmodifyVerifyCallback</B>

list:
<P>

<TABLE>
<TR VALIGN=top><TD COLSPAN=3><B>typedef struct</B><BR></TD></TR>
<TR VALIGN=top><TD>{</TD><TD><B></B></TD><TD><I></I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>XbaeReasonType</B></TD><TD><I>reason;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>XEvent</B></TD><TD><I>*event;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>column;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>XmTextVerifyCallbackStruct</B></TD><TD><I>*verify;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>const char</B></TD><TD><I>*prev_text;</I><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=3><B>} XbaeMatrixModifyVerifyCallbackStruct;</B><BR></TD></TR>
</TABLE>

<DL COMPACT><DT><DD>
<P>

<DL COMPACT>
<DT><I>reason</I><DD>

Set to
<B>XbaeModifyVerifyReason</B>.


<DT><I>event</I><DD>

Always set to NULL.

<DT><I>row</I><DD>

The row number of the cell being edited.

<DT><I>column</I><DD>

The column number of the cell being edited.

<DT><I>verify</I><DD>

The contents of this structure and its use are documented in the
<B><A HREF="XmText.html">XmText</A>(3X)</B>

man page.

<DT><I>prev_text</I><DD>

The contents of the cell as seen by this user before the new text.  If
other text has already been entered, this value will not match the
official
<B>XbaeMatrix</B>

value of the cell.  This pointer and the string
should not be modified.
</DL></DL>

</DL>
<P>


<DL COMPACT>
<DT><B>XmNprocessDragCallback</B><DD>

Callbacks on the
<B>XmNprocessDragCallback</B>

list are called from the
ProcessDrag() action. The application can bind the ProcessDrag() 
action to any pointer based event, though by default it is bound to
the Button2Down event.
When this event occurs, ProcessDrag() will call the callbacks on the
<B>XmNprocessDragCallback</B>

list. A pointer to the
following structure is passed to each callback on the
<B>XmNprocessDragCallback</B>

list:
<P>

<TABLE>
<TR VALIGN=top><TD COLSPAN=3><B>typedef struct</B><BR></TD></TR>
<TR VALIGN=top><TD>{</TD><TD><B></B></TD><TD><I></I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>XbaeReasonType</B></TD><TD><I>reason;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>XEvent</B></TD><TD><I>*event;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>column;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>String</B></TD><TD><I>string;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>XbaeCellType</B></TD><TD><I>type;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>Pixmap</B></TD><TD><I>pixmap;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>Pixmap</B></TD><TD><I>mask;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>Cardinal</B></TD><TD><I>num_params;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>String</B></TD><TD><I>*params;</I><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=3><B>} XbaeMatrixProcessDragCallbackStruct; </B><BR></TD></TR>
</TABLE>

<DL COMPACT><DT><DD>
<P>

<DL COMPACT>
<DT><I>reason</I><DD>

Set to
<B>XbaeProcessDragReason</B>.


<DT><I>event</I><DD>

The XEvent which invoked the ProcessDrag() action.

<DT><I>row</I><DD>

The row number of the cell where the drag was initiated..

<DT><I>column</I><DD>

The column number of the cell where the drag was initiated..

<DT><I>string</I><DD>

The string in the cell where the drag was initiated if <I>type</I> is
<B>XbaeString</B>.

This is provided as a convenience to the application.

<DT><I>type</I><DD>

The type of the cell in which the drag was initiated.

<DT><I>pixmap</I><DD>

The pixmap in the cell where the drag was initiated if <I>type</I> is
<B>XbaePixmap</B>.

This is provided as a convenience to the application.

<DT><I>mask</I><DD>

A mask for the pixmap as obtained from the XPM library.  <I>mask</I> is only
necessary when <I>pixmap</I> has a depth greater than one.  Also provided as 
a convenience to the application.

<DT><I>num_params</I><DD>

The number of String parameters passed to the ProcessDrag() action.

<DT><I>params</I><DD>

An array containing the num_params String parameters passed to the
ProcessDrag() action.
</DL>
<P>

The application can use the
<B>XmNprocessDragCallback</B>

list to implement particular processing for Motif's drag-and-drop.
</DL>

</DL>
<P>


<DL COMPACT>
<DT><B>XmNresizeCallback</B><DD>

Callbacks on the
<B>XmNresizeCallback</B>

list are called when the
<B>XbaeMatrix</B>

widget is resized.  A pointer to the following structure is passed to
<BR>&nbsp;each&nbsp;callback&nbsp;on&nbsp;the
<B>XmNresizeCallback</B>

list:
<P>

<TABLE>
<TR VALIGN=top><TD COLSPAN=3><B>typedef struct</B><BR></TD></TR>
<TR VALIGN=top><TD>{</TD><TD><B></B></TD><TD><I></I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>XbaeReasonType</B></TD><TD><I>reason;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>XEvent</B></TD><TD><I>*event;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>column;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>Dimension</B></TD><TD><I>width;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>Dimension</B></TD><TD><I>height;</I><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=3><B>} XbaeMatrixResizeCallbackStruct; </B><BR></TD></TR>
</TABLE>

<DL COMPACT><DT><DD>
<P>

<DL COMPACT>
<DT><I>reason</I><DD>

Set to
<B>XbaeResizeReason</B>.


<DT><I>event</I><DD>

Always set to
<FONT SIZE=-1>NULL</FONT>

<DT><I>row</I><DD>

Set to the number of rows in the matrix (provided for convenience).

<DT><I>column</I><DD>

Set to the number of colums in the matrix (provided for convenience).

<DT><I>width</I><DD>

The new width of the
<B>XbaeMatrix</B>

widget.

<DT><I>height</I><DD>

The new height of the
<B>XbaeMatrix</B>

widget.
</DL>
<P>

The application can use the
<B>XmNresizeCallback</B>

to adjust such resources as
<B>XmNcolumnWidths</B>,

<B>XmNvisibleColumns</B>

and
<B>XmNvisibleRows</B>

when the widget containing an
<B>XbaeMatrix</B>

widget is resized.
</DL>

</DL>
<P>


<DL COMPACT>
<DT><B>XmNresizeColumnCallback</B><DD>

Callbacks on the
<B>XmNresizeColumnCallback</B>

list are called when a column of the
<B>XbaeMatrix</B>

widget is dynamically resized by the user.  A pointer to the following
structure is passed to each callback on the
<B>XmNresizeColumnCallback</B>

list:
<P>

<TABLE>
<TR VALIGN=top><TD COLSPAN=3><B>typedef struct</B><BR></TD></TR>
<TR VALIGN=top><TD>{</TD><TD><B></B></TD><TD><I></I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>XbaeReasonType</B></TD><TD><I>reason;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>XEvent </B></TD><TD><I>*event;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>column;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>which;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>columns;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>short</B></TD><TD><I>*column_widths;</I><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=3><B>} XbaeMatrixResizeColumnCallbackStruct; </B><BR></TD></TR>
</TABLE>

<DL COMPACT><DT><DD>
<P>

<DL COMPACT>
<DT><I>reason</I><DD>

Set to
<B>XbaeResizeColumnReason</B>.


<DT><I>event</I><DD>

The XEvent that ended the resize.  The event will be of type
<B>XButtonReleasedEvent</B>.


<DT><I>row</I><DD>

The row in which the
<B>ResizeColumn()</B>

action began.

<DT><I>column</I><DD>

The column in which the
<B>ResizeColumn()</B>

action began (and ended).

<DT><I>which</I><DD>

The column that was resized in the
<B>ResizeColumn()</B>

action.

<DT><I>columns</I><DD>

The number of columns in the
<B>XbaeMatrix</B>

widget.

<DT><I>column_widths</I><DD>

The widths of each column as they stand <I>after</I> the
<B>ResizeColumn()</B>

action.
</DL>
<P>

The application can use the
<B>XmNresizeColumnCallback</B>

to perform post processing after a column has been resized.  By adjusting
the values contained in <I>column_widths</I> the
<B>XbaeMatrix</B>

widget will use the values upon return from the callback.  Changing the
number of columns in the matrix in the
<B>XmNresizeColumnCallback</B>

should be used carefully as it may cause unexpected results.
</DL>

</DL>
<P>


<DL COMPACT>
<DT><B>XmNselectCellCallback</B><DD>

Callbacks on the
<B>XmNselectCellCallback</B>

list are called from the
SelectCell() action. The application can bind the SelectCell() action to
any pointer based event. When this event occurs, SelectCell() will call
the callbacks on the
<B>XmNselectCellCallback</B>

list. A pointer to the
following structure is passed to each callback on the
<B>XmNselectCellCallback</B>

list:
<P>

<TABLE>
<TR VALIGN=top><TD COLSPAN=3><B>typedef struct</B><BR></TD></TR>
<TR VALIGN=top><TD>{</TD><TD><B></B></TD><TD><I></I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>XbaeReasonType</B></TD><TD><I>reason;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>XEvent</B></TD><TD><I>*event;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>column;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>Boolean</B></TD><TD><I>**selected_cells;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>String</B></TD><TD><I>**cells;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>Cardinal</B></TD><TD><I>num_params;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>String</B></TD><TD><I>*params;</I><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=3><B>} XbaeMatrixSelectCellCallbackStruct; </B><BR></TD></TR>
</TABLE>

<DL COMPACT><DT><DD>
<P>

<DL COMPACT>
<DT><I>reason</I><DD>

Set to
<B>XbaeSelectCellReason</B>.


<DT><I>event</I><DD>

The XEvent which invoked the SelectCell() action.

<DT><I>row</I><DD>

The row number of the cell which was selected.

<DT><I>column</I><DD>

The column number of the cell which was selected.

<DT><I>selected_cells</I><DD>

The value of the
<B>XmNselectedCells</B>

resource. This is provided as a convenience to the application and will
be 
<FONT SIZE=-1>NULL</FONT>
if no cells have yet been selected. 

<DT><I>cells</I><DD>

The value of the
<B>XmNcells</B>

resource. This is provided as a convenience to
the application and will be 
<FONT SIZE=-1>NULL</FONT>
if no cells have been specified or the 
<B>XmNdrawCellCallback</B>

is being used.

<DT><I>num_params</I><DD>

The number of String parameters passed to the SelectCell() action.

<DT><I>params</I><DD>

An array containing the num_params String parameters passed to the
SelectCell() action.
</DL>
<P>

The application can use the
<B>XmNselectCellCallback</B>

list to implement it's
own selection model. The
<B>XbaeMatrixSelectCellCallbackStruct</B>

contains the
array of String parameters passed to the SelectCell() action which
invoked this callback. By binding the SelectCell() action to various
events via the translation manager, and using String action parameters
to distinguish them, the application can implement various selection
models. For example, the following translations could be used to
implement a model in which a modifier key indicates whether a single
cell or an entire row should be selected. The callbacks on the
<B>XmNselectCellCallback</B>

list would examine the parameter and take the
appropriate action.
<P>




<BR>&nbsp;&nbsp;&nbsp;#override\n\
<BR>&nbsp;&nbsp;&nbsp;Shift&lt;Btn1Down&gt;:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SelectCell(cell)\n\
<BR>&nbsp;&nbsp;&nbsp;Ctrl&lt;Btn1Down&gt;:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SelectCell(row)


<P>

The callbacks on the
<B>XmNselectCellCallback</B>

list can also be used in
other ways, e.g. to pop up a cell specific menu.
<P>

<B>NOTE:</B>

If no cells have been selected, the value of <I>selected_cells</I> will be
<FONT SIZE=-1>NULL.</FONT>
The same applies for <I>cells</I>.  Care must be taken so as not to dereference
these members of the callback struct.
</DL>

</DL>
<P>


<DL COMPACT>
<DT><B>XmNtraverseCellCallback</B><DD>

Callbacks on the
<B>XmNtraverseCellCallback</B>

list are called from the
EditCell() action, they are also called when
<B>XbaeMatrix</B>

receives the
focus while the TextField edit widget is unmapped. The application can
customize cell traversal using these callbacks.
<B>XbaeMatrix</B>

has a default
traversal order, outlined below, which the application can override. A
pointer to the following structure is passed to each callback on the
<B>XmNtraverseCellCallback</B>

list:
<P>

<TABLE>
<TR VALIGN=top><TD COLSPAN=3><B>typedef struct</B><BR></TD></TR>
<TR VALIGN=top><TD>{</TD><TD><B></B></TD><TD><I></I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>XbaeReasonType</B></TD><TD><I>reason;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>XEvent</B></TD><TD><I>*event;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>column;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>next_row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>next_column;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>fixed_rows;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>fixed_columns;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>trailing_fixed_rows;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>trailing_fixed_columns;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>num_rows;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>num_columns;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>String</B></TD><TD><I>param;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>XrmQuark</B></TD><TD><I>qparam;</I><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=3><B>} XbaeMatrixTraverseCellCallbackStruct;</B><BR></TD></TR>
</TABLE>

<DL COMPACT><DT><DD>

<DL COMPACT>
<DT><I>reason</I><DD>

Set to
<B>XbaeTraverseCellReason</B>.


<DT><I>event</I><DD>

The event that invoked this callback.

<DT><I>row</I><DD>

The row number of the cell currently being edited.

<DT><I>column</I><DD>

The column number of the cell currently being edited.

<DT><I>next_row</I><DD>

The row number of the next cell to be edited, this can be changed by the
application.

<DT><I>next_column</I><DD>

The column number of the next cell to be edited, this can be changed by
the application.

<DT><I>fixed_rows</I><DD>

The value of the
<B>XmNfixedRows</B>

resource. This is provided as a
convenience for the application in calculating the next_row and
next_column fields.

<DT><I>fixed_columns</I><DD>

The value of the
<B>XmNfixedColumns</B>

resource. This is provided as a
convenience for the application in calculating the next_row and
next_column fields.

<DT><I>trailing_fixed_rows</I><DD>

The value of the
<B>XmNtrailingFixedRows</B>

resource. This is provided as a
convenience for the application in calculating the next_row and
next_column fields.

<DT><I>trailing_fixed_columns</I><DD>

The value of the
<B>XmNtrailingFixedColumns</B>

resource. This is provided as a
convenience for the application in calculating the next_row and
next_column fields.

<DT><I>num_rows</I><DD>

The value of the
<B>XmNrows</B>

resource. This is provided as a convenience for
the application in calculating the next_row and next_column fields.

<DT><I>num_columns</I><DD>

The value of the
<B>XmNcolumns</B>

resource. This is provided as a convenience
for the application in calculating the next_row and next_column fields.

<DT><I>param</I><DD>

The String value of the parameter passed to the EditCell() action.

<DT><I>qparam</I><DD>

The XrmQuark value of the parameter passed to the EditCell() action.
</DL>
<P>

The EditCell() action takes an arbitrary parameter which it passes
through to the callbacks on the
<B>XmNtraverseCellCallback</B>

list in both
String and XrmQuark forms. The EditCell() action recognizes five special
parameters which it uses to implement it's default cell traversal. These
parameters and their corresponding traversal results are:
<P>


<DL COMPACT>
<DT><I>Pointer</I><DD>

Set next_row and next_column to the cell underneath the mouse pointer.

<DT><I>Left</I><DD>

If we are currently editing cell (XmNfixedRows, XmNfixedColumns), then
do not move. Otherwise move one column to the left, if that column is
less than
<B>XmNfixedColumns</B>

, then move up to the last column of the row
above.

<DT><I>Right</I><DD>

If we are currently editing cell (XmNrows - 1, XmNcolumns - 1), then do
not move. Otherwise move one column to the right, if that column is
greater than or equal to
<B>XmNcolumns</B>

, then move down to column
<B>XmNfixedColumns</B>

of the row below.

<DT><I>Up</I><DD>

Move up one row. If that row is less than
<B>XmNfixedRows</B>

, then move to the
last row.

<DT><I>Down</I><DD>

Move down one row. If that row is greater than or equal to
<B>XmNrows</B>

, then
move to row
<B>XmNfixedRows</B>.

</DL>
<P>

If the EditCell() action recognizes one of these special parameters, it
calculates the new cell to be edited accordingly and stores the results
in the next_row and next_column fields of the
<B>XbaeMatrixTraverseCellCallbackStruct</B>.

If EditCell() does not recognize it's parameter, it sets next_row and
next_column to the current row and column.
It also stores a String and XrmQuark version of it's parameter in the
param and qparam fields.
EditCell() then calls the callbacks on the
<B>XmNtraverseCellCallback</B>

list.
These callbacks can examine the parameter and recalculate the next_row
and next_column fields appropriately.
The application can override the default calculation for the special
parameters, or it can define an entirely new parameter with a
corresponding new calculation.
It would do this by binding EditCell() with a new application specific
parameter to an event in a translation table.
It is expected that application callbacks will use the XrmQuark version
of the parameter for efficiency reasons (by statically creating the new
XrmQuarks and comparing them against the incoming qparam).
<P>

When
<B>XbaeMatrix</B>

receives the focus and the TextField edit widget is
unmapped, it will call the
<B>XmNtraverseCellCallback</B>

callbacks before
attempting to automatically edit the upper left most visible cell. The
<B>XbaeMatrixTraverseCellCallbackStruct</B>

will have a param of
<FONT SIZE=-1>NULL,</FONT>
a qparam
of
<FONT SIZE=-1>NULLQUARK </FONT>
and a row and column of 0.
</DL>

</DL>
<P>

<P>


<DL COMPACT>
<DT><B>XmNvalueChangedCallback</B><DD>

Callbacks on the
<B>XmNvalueChangedCallback</B>

list are called while a cell is
being edited. The callbacks are called after text is inserted into or
deleted from the TextField edit widget. A pointer to the following
structure is passed to each callback on the
<B>XmNvalueChangedCallback</B>

list:
<P>

<TABLE>
<TR VALIGN=top><TD COLSPAN=3><B>typedef struct</B><BR></TD></TR>
<TR VALIGN=top><TD>{</TD><TD><B></B></TD><TD><I></I><BR></TD></TR>
<TR VALIGN=top><TD><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XbaeReasonType&nbsp;&nbsp;reason;</TD><TD><B></B></TD><TD><I></I><BR></TD></TR>
<TR VALIGN=top><TD><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XEvent&nbsp;&nbsp;*event;</TD><TD><B></B></TD><TD><I></I><BR></TD></TR>
<TR VALIGN=top><TD><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;row;</TD><TD><B></B></TD><TD><I></I><BR></TD></TR>
<TR VALIGN=top><TD><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;column;</TD><TD><B></B></TD><TD><I></I><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=3><B>} XbaeMatrixValueChangedCallbackStruct;</B><BR></TD></TR>
</TABLE>

<DL COMPACT><DT><DD>
<P>

<DL COMPACT>
<DT><I>reason</I><DD>

Set to
<B>XbaeValueChangedReason</B>.


<DT><I>event</I><DD>

The event that triggered this callback.

<DT><I>row</I><DD>

The row number of the cell being edited.

<DT><I>column</I><DD>

The column number of the cell being edited.
</DL></DL>

</DL>
<P>


<DL COMPACT>
<DT><B>XmNwriteCellCallback</B><DD>

Callbacks (although it probably only makes sense to have one) on the
<B>XmNwriteCellCallback</B>

list are called when the widget needs to
write data to a cell, but only when
<B>XmNdrawCellCallback</B>

is defined. A pointer to the following structure is passed to each
callback on the
<B>XmNwriteCellCallback</B>

list:
<P>

<TABLE>
<TR VALIGN=top><TD COLSPAN=3><B>typedef struct</B><BR></TD></TR>
<TR VALIGN=top><TD>{</TD><TD><B></B></TD><TD><I></I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>XbaeReasonType</B></TD><TD><I>reason;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>XEvent</B></TD><TD><I>*event;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>int</B></TD><TD><I>column;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>XbaeCellType</B></TD><TD><I>type;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>String</B></TD><TD><I>string;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>Pixmap</B></TD><TD><I>pixmap;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD><B>Pixmap</B></TD><TD><I>mask;</I><BR></TD></TR>
<TR VALIGN=top><TD COLSPAN=3><B>} XbaeMatrixWriteCellCallbackStruct;</B><BR></TD></TR>
</TABLE>

<DL COMPACT><DT><DD>
<P>

<DL COMPACT>
<DT><I>reason</I><DD>

Set to
<B>XbaeWriteCellReason</B>.


<DT><I>event</I><DD>

Always set to
<FONT SIZE=-1>NULL</FONT>

<DT><I>row</I><DD>

The row number of the cell that needs to be written.

<DT><I>column</I><DD>

The column number of the cell that needs to be written.

<DT><I>type</I><DD>

The type of ``data'' contained in the cell, either
<B>XbaeString</B> or <B>XbaePixmap</B>.


<DT><I>string</I><DD>

The string to store if <I>type</I> is set to
<B>XbaeString</B>.


<DT><I>pixmap</I><DD>

The pixmap to store if <I>type</I> is set to
<B>XbaePixmap</B>.

(maybe a little meaningless unless you can edit a pixmap in a cell)

<DT><I>mask</I><DD>

A mask for the pixmap as obtained from the XPM library.  <I>mask</I> is only
necessary when <I>pixmap</I> has a depth greater than one.
</DL>
<P>

If the application adds this callback, when the
<B>XbaeMatrix</B>

is editable and has been assigned an
<B>XmNdrawCellCallback</B>,

data on the widget can be edited and stored back in the
application's data structure.  Only if an
<B>XmNdrawCellCallback</B>

has been assigned to the
<B>XbaeMatrix</B>

widget, will the
<B>XmNwriteCellCallback</B>

be called.
<P>

At the moment, <I>pixmap</I> and <I>mask</I> will be sent to the
<B>XmNwriteCellCallback</B>

as
<FONT SIZE=-1>NULL.</FONT>

<P>

</DL>
</DL>
<A NAME="lbAI">&nbsp;</A>
<H3>Translations</H3>

<B>XbaeMatrix</B>

inherits translations from
<B>XmManager</B>.

In addition,
<B>XbaeMatrix</B>

uses the following translation:


<TABLE>
<TR VALIGN=top><TD>:&lt;Btn1Up&gt;:</TD><TD>DefaultAction()\n\ <BR></TD></TR>
<TR VALIGN=top><TD>:&lt;Btn1Down&gt;:</TD><TD>DefaultAction() EditCell(Pointer)\n\ <BR></TD></TR>
<TR VALIGN=top><TD>:Shift&lt;Btn2Down&gt;:</TD><TD>ResizeColumns()\n\ <BR></TD></TR>
<TR VALIGN=top><TD>:&lt;Btn2Down&gt;:</TD><TD>ProcessDrag()<BR></TD></TR>
</TABLE>


<P>

<B>XbaeMatrix</B>

installs the following default
<B>XmNtextTranslations</B>

on the
<B>TextField</B>

edit widget:


<TABLE>
<TR VALIGN=top><TD>#override\n\ </TD><TD><BR></TD></TR>
<TR VALIGN=top><TD>Shift ~Ctrl ~Meta ~Alt &lt;Key&gt;Tab:</TD><TD>EditCell(Left)\n\ <BR></TD></TR>
<TR VALIGN=top><TD>~Ctrl ~Meta ~Alt &lt;Key&gt;Tab:</TD><TD>EditCell(Right)\n\ <BR></TD></TR>
<TR VALIGN=top><TD>&lt;Key&gt;osfUp:</TD><TD>EditCell(Up)\n\ <BR></TD></TR>
<TR VALIGN=top><TD>&lt;Key&gt;osfDown:</TD><TD>EditCell(Down)\n\ <BR></TD></TR>
<TR VALIGN=top><TD>&lt;Key&gt;osfActivate:</TD><TD>CommitEdit(False)\n\ <BR></TD></TR>
<TR VALIGN=top><TD>~Shift ~Meta ~Alt &lt;Key&gt;Return:</TD><TD>CommitEdit(False)\n\ <BR></TD></TR>
<TR VALIGN=top><TD>&lt;Key&gt;osfCancel:</TD><TD>CommitEdit(False)\n\ <BR></TD></TR>
<TR VALIGN=top><TD>Shift Ctrl ~Meta ~Alt &lt;Key&gt;Tab:</TD><TD>TraversePrev()\n\ <BR></TD></TR>
<TR VALIGN=top><TD>Ctrl ~Meta ~Alt &lt;Key&gt;Tab:</TD><TD>TraverseNext()\n\ <BR></TD></TR>
<TR VALIGN=top><TD>&lt;Key&gt;osfPageDown:</TD><TD>PageDown()\n\ <BR></TD></TR>
<TR VALIGN=top><TD>&lt;Key&gt;osfPageUp:</TD><TD>PageUp()\n<BR></TD></TR>
</TABLE>


<P>

<A NAME="lbAJ">&nbsp;</A>
<H3>Action Routines</H3>

<P>

<P>
<DL COMPACT>
<DT>CancelEdit()<DD>
If the single parameter to CancelEdit() is the String True, then it
unmaps the edit TextField, discarding any changes which were made to the
cell being edited. If the parameter is False, then CancelEdit() restores
the edit TextField to the original contents of the cell, discarding any
changes made to the cell being edited. The TextField is not unmapped.
<DT>CommitEdit()<DD>
<DL COMPACT><DT><DD>
CommitEdit() first calls any callbacks on the
<B>XmNleaveCellCallback</B>

list
to determine if the changes made to the current cell are valid. If they
are, it then saves any changes made to the cell into the cell. If the
callbacks on the
<B>XmNleaveCellCallback</B>

list return that the changes are
not valid, CommitEdit() does nothing.
<P>

If the changes are valid, CommitEdit() examines it's one parameter,
which must be the string True or False. If the parameter is True, then
the edit TextField is unmapped. If it is False, then the TextField is
not unmapped.
</DL>

<DT>DefaultAction()<DD>
<DL COMPACT><DT><DD>
DefaultAction() sets up a mechanism for determining whether two successive
mouse clicks form a double click.  The DefaultAction() should normally be
used in conjunction with other pointer based events and provides a mechanism
for acting on double clicks in a cell.
</DL>

<DT>EditCell()<DD>
<DL COMPACT><DT><DD>
EditCell() edits a new cell. EditCell() first calculates the new cell to
edit based on it's single parameter. It then calls the callbacks on the
<B>XmNtraverseCellCallback</B>

list to allow them to specify a different cell
to edit (see the discussion of
<B>XmNtraverseCellCallback</B>

above).
EditCell() then calls the callbacks on the
<B>XmNleaveCellCallback</B>

list to
determine if the changes made to the current cell are valid. If they
are, it then saves any changes made to the cell into the cell. If the
changes are not valid, EditCell() does nothing further.
<P>

If the changes are valid, EditCell() attempts to scroll the new cell to
be edited so that it is fully visible. If the new cell is in a fixed row
or column, EditCell() returns and does nothing further (these cells are
not editable). Otherwise, EditCell() calls the callbacks on the
<B>XmNenterCellCallback</B>

list to determine if the new cell is editable. It
then moves the
<B>XmText</B>

edit widget to the new cell, setting it's
editability based on the return from the
<B>XmNenterCellCallback</B>

callbacks.
</DL>

<DT>ProcessDrag()<DD>
<DL COMPACT><DT><DD>
ProcessDrag() calls the callbacks on the
<B>XmNprocessDragCallback</B>

list, passing them a pointer to a
<B>XbaeMatrixProcessDragCallbackStruct</B>.

</DL>

<DT>ResizeColumns()<DD>
<DL COMPACT><DT><DD>
Allows the user to dynamically resize the column widths, provided that
<B>XmNallowColumnResize</B>

is True.
</DL>

<DT>SelectCell()<DD>
SelectCell() calls the callbacks on the
<B>XmNselectCellCallback</B>

list,
passing them a pointer to a
<B>XbaeMatrixSelectCellCallbackStruct</B>.

This structure will contain the String parameters passed to the SelectCell()
action, among other things (see the discussion of
<B>XmNselectCellCallback</B>

above).
<DT>TraverseNext()<DD>
TraverseNext() will traverse out of the Matrix and into the next tab
group.
<DT>TraversePrev()<DD>
TraversePrev() will traverse out of the Matrix and into the previous tab
group.
<DT>PageDown()<DD>
PageDown() causes the Matrix to scroll down a full page.  The text
widget is placed on the first non fixed row of the new page.
<DT>PageUp()<DD>
PageUp() causes the Matrix to scroll up a full page.  The text
widget is placed on the first non fixed row of the new page.
</DL>
<A NAME="lbAK">&nbsp;</A>
<H3>Type Converters</H3>

<P>
<P>

In addition to the standard type converters registered by Xt and Motif,
<B>XbaeMatrix</B>

registers the following additional type converters:
<DL COMPACT>
<DT>CvtStringToStringArray()<DD>
Converts a comma separated list of Strings to an array of String
pointers, one for each substring. Commas in the list may be escaped with
the character `\'. This converter allows the
<B>XmNrowLabels</B>

and
<B>XmNcolumnLabels</B>

resources to be specified in resource files.
<DT>CvtStringToWidthArray()<DD>
Converts a comma separated list of numeric Strings to an array of short
integers. This converter allows the
<B>XmNcolumnWidths</B>

resource to be
specified in resource files.
<DT>CvtStringToMaxLengthArray()<DD>
Converts a comma separated list of numeric Strings to an array of
integers. This converter allows the
<B>XmNcolumnMaxLengths</B>

resource to be
specified in resource files.
<DT>CvtStringToAlignmentArray()<DD>
Converts a comma separated list of alignments to an array of unsigned
chars. This converter allows the
<B>XmNcolumnLabelAlignments</B>

and
<B>XmNcolumnAlignments</B>

resources to be specified in resource files.
<DT>CvtStringToGridType()<DD>
Converts a single string as discussed in
<B>XmNgridType</B>

to a grid type value.  This converter allows
<B>XmNgridType</B>

to be specified in resource files.
<DT>CvtStringToMatrixScrollBarDisplayPolicy()<DD>
Converts a single string as discussed in
<B>XmNhorizontalScrollBarDisplayPolicy</B>

and
<B>XmNverticalScrollBarDisplayPolicy</B>

to a display policy value.  This converter allows
<B>XmNhorizontalScrollBarDisplayPolicy</B>

and
<B>XmNverticalScrollBarDisplayPolicy</B>

to be specified in resource files.
<DT>CvtStringToCellTable()<DD>
Converts a comma separated list of Strings with \n delimited rows to a
two dimensional array of String
pointers. This converter allows the
<B>XmNcells</B>

resource to be specified in resource files.
<DT>CvtStringToPixelTable()<DD>
Converts a comma separated list of color names with \n delimited rows to a
two dimensional array of Pixel values. This converter allows the
<B>XmNcellBackgrounds</B>and<B>XmNcolors</B>

resources to be specified in resource files.
<DT>CvtStringToBooleanArray()<DD>
Converts a comma separated list of string or numeric values to an
array of Booleans.  The converter recongnises a comma separated list
of values. Each value is parsed such that if the first character is


This converter allows the
<B>XmNcolumnButtonLabels</B>

and
<B>XmNrowButtonLabels</B>

resources to be
specified in resource files.
</DL>
<A NAME="lbAL">&nbsp;</A>
<H3>Public Functions</H3>

<P>
The following external entry points to
<B>XbaeMatrix</B>

class methods are
defined:
<P>

<B>XbaeCreateMatrix()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>Widget XbaeCreateMatrix()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>parent;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>String</TD><TD><I>name;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>ArgList</TD><TD><I>arglist;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Cardinal</TD><TD><I>argcount;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>parent</I><DD>

Specifies the parent widget ID.

<DT><I>name</I><DD>

Specifies the name of the created widget

<DT><I>arglist</I><DD>

Specifies the argument list

<DT><I>argcount</I><DD>

Specifies the number of attribute/value pairs in the argument list (arglist)
</DL>
<P>

<B>XbaeCreateMatrix()</B>

creates an unmanaged instance of an XbaeMatrix widget and returns
the associated widget ID.
<P>

<P>

<B>XbaeMatrixAddColumns()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixAddColumns()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>position;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>String</TD><TD><I>*columns;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>String</TD><TD><I>*labels;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>short</TD><TD><I>*widths;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>*max_lengths;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>unsigned</TD><TD><I>char *alignments;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>unsigned</TD><TD><I>char *label_alignments;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Pixel</TD><TD><I>*colors;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>num_columns;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>position</I><DD>

The column position before which to add the new columns. Must be greater
than or equal to zero, and less than or equal to
<B>XmNcolumns</B>.


<DT><I>columns</I><DD>

Points to an ordinary two dimensional array of String, or
<FONT SIZE=-1>NULL.</FONT>
These Strings will be used to modify the
<B>XmNcells</B>

resource to populate the new
columns. Each row in the array must have
<B>XmNrows</B>

elements and represents
one of the new columns. columns must have num_columns rows. If columns
is
<FONT SIZE=-1>NULL,</FONT>
empty columns will be added.

<DT><I>labels</I><DD>

Points to an array of String, or
<FONT SIZE=-1>NULL.</FONT>
These Strings will be used as the
<B>XmNcolumnLabels</B>

for the new columns. The labels array must have
num_columns elements. If
<B>XmNcolumnLabels</B>

is not set, then this argument
will be ignored. If labels is
<FONT SIZE=-1>NULL,</FONT>
and
<B>XmNcolumnLabels</B>

is set, then
blank column labels will be used.

<DT><I>widths</I><DD>

Points to an array of short. These values will be used as the
<B>XmNcolumnWidths</B>

for the new columns. The widths array must have
num_columns elements. This argument must not be
<FONT SIZE=-1>NULL.</FONT>

<DT><I>max_lengths</I><DD>

Points to an array of int, or
<FONT SIZE=-1>NULL.</FONT>
These values will be used as the
<B>XmNcolumnMaxLengths</B>

for the new columns. The max_lengths array must have
num_columns elements. If max_lengths is
<FONT SIZE=-1>NULL,</FONT>
then the corresponding
value from widths will be used.

<DT><I>alignments</I><DD>

Points to an array of unsigned char, or
<FONT SIZE=-1>NULL.</FONT>
These values will be used
as the
<B>XmNcolumnAlignments</B>

for the new columns. If
<B>XmNcolumnAlignments</B>

is not set, then this argument will be ignored. The alignments array
must have num_columns elements. If alignments is
<FONT SIZE=-1>NULL,</FONT>
then
<B>XmALIGNMENT_BEGINNING</B>

will be used.

<DT><I>label_alignments</I><DD>

Points to an array of unsigned char, or
<FONT SIZE=-1>NULL.</FONT>
These values will be used
as the
<B>XmNcolumnLabelAlignments</B>

for the new column labels. If
<B>XmNcolumnLabelAlignments</B>

is not set, then this argument will be ignored.
The label_alignments array must have num_columns elements. If
label_alignments is
<FONT SIZE=-1>NULL,</FONT>
then
<B>XmALIGNMENT_BEGINNING</B>

will be used.

<DT><I>colors</I><DD>

Points to an array of Pixel, or
<FONT SIZE=-1>NULL.</FONT>
These values will be used to set
the corresponding columns in the
<B>XmNcolors</B>

table for the new columns. If
<B>XmNcolors</B>

is
<FONT SIZE=-1>NULL,</FONT>
then this argument will be ignored. The colors array
must have num_columns elements. If colors is
<FONT SIZE=-1>NULL,</FONT>
then
<B>XmNforeground</B>

will be used.

<DT><I>num_columns</I><DD>

The number of columns which are being added to the widget.
</DL>
<P>

<B>XbaeMatrixAddColumns()</B>

allows the application developer to dynamically
add new columns anywhere in the Matrix. The columns will be added before
the column specified in position. Columns are numbered starting at zero.
To append new columns onto the end of the Matrix, specify position as
the total number of columns. Most of the arguments to
<B>XbaeMatrixAddColumns()</B>

may be specified as
<FONT SIZE=-1>NULL.</FONT>
Default values will be
used by the widget.
<P>

If the programmer attempts to add columns using
<B>XbaeMatrixAddColumns()</B>

when there are no rows, it will result in a warning message.  There must be
at least one row in the
<B>XbaeMatrix</B>

widget to add columns.
<P>

To maintain backward compatability, the cell backgrounds cannot be set
in a call to 
<B>XbaeMatrixAddColumns()</B>

and must be set (if so desired) in a separate call to
<B>XtVaSetValues()</B>.

<P>
</DL>


<B>XbaeMatrixAddRows()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixAddRows()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>position;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>String</TD><TD><I>*rows;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>String</TD><TD><I>*labels;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Pixel</TD><TD><I>*colors;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>num_rows;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>position</I><DD>

The row position before which to add the new rows. Must be greater than
or equal to zero, and less than or equal to
<B>XmNrows</B>.


<DT><I>rows</I><DD>

Points to an ordinary two dimensional array of String, or
<FONT SIZE=-1>NULL.</FONT>
These
Strings will be used to modify the
<B>XmNcells</B>

resource to populate the new
rows. Each row in the array must have
<B>XmNcolumns</B>

elements and represents
one of the new rows. rows must have num_rows rows. If rows is
<FONT SIZE=-1>NULL,</FONT>
empty rows will be added.

<DT><I>labels</I><DD>

Points to an array of String, or
<FONT SIZE=-1>NULL.</FONT>
These Strings will be used as the
<B>XmNrowLabels</B>

for the new rows. The labels array must have num_rows
elements. If
<B>XmNrowLabels</B>

is not set, then this argument will be
ignored. If labels is
<FONT SIZE=-1>NULL,</FONT>
and
<B>XmNrowLabels</B>

is set, then blank row
labels will be used

<DT><I>colors</I><DD>

Points to an array of Pixel, or
<FONT SIZE=-1>NULL.</FONT>
These values will be used to set
the corresponding rows in the
<B>XmNcolors</B>

table for the new rows. If
<B>XmNcolors</B>

is
<FONT SIZE=-1>NULL,</FONT>
then this argument will be ignored. The colors array
must have num_rows elements. If colors is
<FONT SIZE=-1>NULL,</FONT>
then
<B>XmNforeground</B>

will
be used.

<DT><I>num_rows</I><DD>

The number of rows which are being added to the widget.
</DL>
<P>

<B>XbaeMatrixAddRows()</B>

allows the application developer to dynamically add
new rows anywhere in the Matrix. The rows will be added before the row
specified in position. Rows are numbered starting at zero. To append new
rows onto the end of the Matrix, specify position as the total number of
rows.
<P>

To maintain backward compatability, the cell backgrounds cannot be set
in a call to 
<B>XbaeMatrixAddRows()</B>

and must be set (if so desired) in a separate call to
<B>XtVaSetValues()</B>.

</DL>

<P>

<B>XbaeMatrixCancelEdit()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixCancelEdit()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Boolean</TD><TD><I>unmap;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>unmap</I><DD>

Specifies whether the TextField cell edit widget should be unmapped
after the edit is canceled.
</DL>
<P>

<B>XbaeMatrixCancelEdit()</B>

allows the application developer to
programmatically cancel a cell edit in progress, discarding any changes
made by the user. This function unmaps the TextField edit widget if the
unmap flag is True. If unmap is False, the contents of the TextField are
restored to their original value, and the TextField is not unmapped.
<P>

</DL>

<B>XbaeMatrixCommitEdit()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>Boolean XbaeMatrixCommitEdit()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Boolean</TD><TD><I>unmap;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An XbaeMatrix widget.

<DT><I>unmap</I><DD>

Specifies whether the TextField cell edit widget should be unmapped
after an edit is successfully committed.
</DL>
<P>

<B>XbaeMatrixCommitEdit()</B>

can be used by the application developer to
programmatically commit an edit, saving any changes made by the user.
This will cause the callbacks on the
<B>XmNleaveCellCallback</B>

list to be
called to verify that the changes the user made are valid. If the
changes are valid, then they are saved into the cell and if the unmap
flag is True, the TextField widget will be unmapped.
<P>

</DL>

<B>XbaeMatrixDeleteColumns()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixDeleteColumns()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>position;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>num_columns;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>position</I><DD>

The column position at which to begin deleting columns. Must be greater
than or equal to zero, and (position + num_columns) must be less than or
equal to
<B>XmNcolumns</B>.


<DT><I>num_columns</I><DD>

The number of columns to delete from the widget.
</DL>
<P>

<B>XbaeMatrixDeleteColumns()</B>

allows the application developer to
dynamically delete columns from anywhere in the Matrix. Columns will be
deleted starting at the column specified by position.
<P>

</DL>

<B>XbaeMatrixDeleteRows()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixDeleteRows()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>position;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>num_rows;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An XbaeMatrix widget.

<DT><I>position</I><DD>

The row position at which to begin deleting rows. Must be greater than
or equal to zero, and (position + num_rows) must be less than or equal
to
<B>XmNrows</B>.


<DT><I>num_rows</I><DD>

The number of rows to delete from the widget.
</DL>
<P>

<B>XbaeMatrixDeleteRows()</B>

allows the application developer to dynamically
delete rows from anywhere in the Matrix. Rows will be deleted starting
at the row specified by position.
<P>

</DL>

<B>XbaeMatrixDeselectAll()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixDeselectAll()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.
</DL>
<P>

<B>XbaeMatrixDeselectAll()</B>

allows the application developer to programmatically deselect all cells.
<B>XbaeMatrixDeselectAll()</B>

redraws the
cells in normal video. All Booleans in the
<B>XmNselectedCells</B>

array will
be set to False.
<P>

</DL>

<B>XbaeMatrixDeselectCell()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixDeselectCell()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>column;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>row</I><DD>

The row of the cell to deselect.

<DT><I>column</I><DD>

The column of the cell to deselect.
</DL>
<P>

<B>XbaeMatrixDeselectCell()</B>

allows the application developer to programmatically deselect a cell.
<B>XbaeMatrixDeselectCell()</B>

redraws the
cell in normal video. The corresponding Boolean in the
<B>XmNselectedCells</B>

array will be set to False.
<P>

</DL>

<B>XbaeMatrixDeselectColumn()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixDeselectColumn()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>column;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>column</I><DD>

The column to deselect.
</DL>
<P>

<B>XbaeMatrixDeselectColumn()</B>

allows the application developer to programmatically deselect a column.
<B>XbaeMatrixDeselectColumn()</B>

draws the column in normal video. The corresponding Booleans in the
<B>XmNselectedCells</B>

array will be set to False.
<P>

</DL>

<B>XbaeMatrixDeselectRow()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixDeselectRow()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>row;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>row</I><DD>

The row to deselect.
</DL>
<P>

<B>XbaeMatrixDeselectRow()</B>

allows the application developer to programmatically deselect a row.
<B>XbaeMatrixDeselectRow()</B>

draws the row in reverse video (or selectedForeground / selectedBackground
if set). The corresponding Booleans in the
<B>XmNselectedCells</B>

array will be set to False.
<P>

</DL>

<B>XbaeMatrixDisableRedisplay()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>int XbaeMatrixDisableRedisplay()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.
</DL>
<P>

<B>XbaeMatrixDisableRedisplay()</B>

and
<B>XbaeMatrixEnableRedisplay()</B>

allow an application to make multiple changes to a matrix
without immediate visual updates. When multiple changes are
made with redisplay enabled, visual flashing often occurs.
These routines help eliminate this problem.
<P>

</DL>

<B>XbaeMatrixEditCell()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixEditCell()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>column;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>row</I><DD>

The row of the cell to be edited.

<DT><I>column</I><DD>

The column of the cell to be edited.
</DL>
<P>

<B>XbaeMatrixEditCell()</B>

<P>
allows the application developer to programmatically force a specific
cell to be edited. This function will first attempt to commit the edit
in the current cell. If the
<B>XmNleaveCellCallback</B>

callbacks disallow this commit, then
<B>XbaeMatrixEditCell()</B>

will return. Otherwise the specified cell is
scrolled until it is visible. If the specified cell is in a fixed row or
column, it cannot be edited and
<B>XbaeMatrixEditCell()</B>

will return. Next, the callbacks on the
<B>XmNenterCellCallback</B>

callback list are called for
the specified cell to determine it's editability. Then the TextField
edit widget is mapped on top of the specified cell.
<P>

</DL>

<B>XbaeMatrixEnableRedisplay()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>int XbaeMatrixEnableRedisplay()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Boolean</TD><TD><I>redisplay;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>redisplay</I><DD>

Force the matrix to redisplay if True and no other
calls to
<B>XbaeMatrixDisableRedisplay()</B>

have been made.
</DL>
<P>

<B>XbaeMatrixDisableRedisplay()</B>

and
<B>XbaeMatrixEnableRedisplay()</B>

allow an application to make multiple changes to a matrix
without immediate visual updates. When multiple changes are
made with redisplay enabled, visual flashing often occurs.
These routines help eliminate this problem.
<P>

</DL>

<B>XbaeMatrixEventToXY()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>Boolean XbaeMatrixEventToXY()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>XEvent</TD><TD><I>*event;  </I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>*x;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>*y;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>event</I><DD>

An X event structure pointer, usually from an XEventHandler function.

<DT><I>x</I><DD>

The translated x coordinate.

<DT><I>y</I><DD>

The translated y coordinate.
</DL>
<P>

<B>XbaeMatrixEventToXY</B>

enables the programmer to determine the x and y values of a given event
with respect to the
<B>XbaeMatrix</B>

widget.  The returned values are also adjusted to allow for the
<B>XbaeClip</B>

widget.
<P>

</DL>

<B>XbaeMatrixFirstSelectedCell()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixFirstSelectedCell()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>*row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>*column;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>row</I><DD>

The first selected row.

<DT><I>column</I><DD>

The first selected column.
</DL>
<P>

<B>XbaeMatrixFirstSelectedCell()</B>

allows the application developer to find out which cell is the first selected.
The function traverses the
<B>XbaeMatrix</B>

widget in a left to right, top to bottom manner to determine this value.
If no cell is selected, row and column are set to -1.
<P>

</DL>

<B>XbaeMatrixFirstSelectedColumn()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>int XbaeMatrixFirstSelectedColumn()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.
</DL>
<P>

<B>XbaeMatrixFirstSelectedColumn()</B>

returns the column number of the first selected column in the
<B>XbaeMatrix</B>

widget.  The function traverses the matrix from column 0.  A column must
be entirely selected for the column to be considered selected.  If no
column is selected then -1 is returned.
<P>

</DL>

<B>XbaeMatrixFirstSelectedRow()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>int XbaeMatrixFirstSelectedRow()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.
</DL>
<P>

<B>XbaeMatrixFirstSelectedRow()</B>

returns the row number of the first selected row in the
<B>XbaeMatrix</B>

widget.  The function traverses the matrix from row 0.  A row must
be entirely selected for the row to be considered selected.  If no
row is selected then -1 is returned.
<P>

</DL>

<B>XbaeMatrixGetCell()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>String XbaeMatrixGetCell()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>column;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>row</I><DD>

The row of the cell whose value should be retrieved.

<DT><I>column</I><DD>

The column of the cell whose value should be retrieved.
</DL>
<P>

<B>XbaeMatrixGetCell()</B>

returns the String value stored in the specified
cell. This String should not be freed. To examine many cells, it is more
efficient to do an XtGetValues() on
<B>XmNcells</B>

and examine the values in
that array.
<P>

</DL>

<B>XbaeMatrixGetCellUserData()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>XtPointer XbaeMatrixGetCellUserData()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>column;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>row</I><DD>

The row of the cell whose data should be retrieved.

<DT><I>column</I><DD>

The column of the cell whose data should be retrieved.
</DL>
<P>

<B>XbaeMatrixGetCellUserData()</B>

returns a pointer to the data assigned to the cell in the given coordinates.
The data should be set using
<B>XbaeMatrixSetCellUserData()</B>.

If no data is found to be associated with the particular cell,
<FONT SIZE=-1>NULL</FONT>
is returned.
<P>

</DL>

<B>XbaeMatrixGetColumnWidth()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>int XbaeMatrixGetColumnWidth()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>column;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>column</I><DD>

The column whose width we're querying.
</DL>
<P>

<B>XbaeMatrixGetColumnWidth()</B>

is a convenient way to query a column width.
<P>

</DL>

<B>XbaeMatrixGetColumnLabel()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>String XbaeMatrixGetColumnLabel()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>column;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>column</I><DD>

The column of the label that should be retrieved.
</DL>
<P>

<B>XbaeMatrixGetColumnLabel()</B>

returns a pointer to the label of the given column.  If no column labels
exist or the given column is not a valid column 
<FONT SIZE=-1>NULL</FONT>
is returned.
If no data is found to be associated with the particular column,
<FONT SIZE=-1>NULL</FONT>
is returned.
<P>

</DL>

<B>XbaeMatrixGetColumnUserData()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>XtPointer XbaeMatrixGetColumnUserData()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>column;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>column</I><DD>

The column of the cell whose data should be retrieved.
</DL>
<P>

<B>XbaeMatrixGetColumnUserData()</B>

returns a pointer to the data assigned to the given column.
The data should be set using
<B>XbaeMatrixSetColumnUserData()</B>.

If no data is found to be associated with the particular column,
<FONT SIZE=-1>NULL</FONT>
is returned.
<P>

</DL>

<B>XbaeMatrixGetCurrentCell()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixGetCurrentCell()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>*row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>*column;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>row</I><DD>

The row of the cell the ``cursor'' or TextField is in.

<DT><I>column</I><DD>

The column of the cell the ``cursor'' or TextField is in.
</DL>
<P>

<B>XbaeMatrixGetCurrentCell()</B>

allows the application developer to determine what cell is being edited
or has focus.
<P>

</DL>

<B>XbaeMatrixGetEventRowColumn()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>int XbaeMatrixGetEventRowColumn()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>XEvent</TD><TD><I>*event;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>*row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>*column;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>event</I><DD>

An X event structure pointer.  This is usually from an XEventHandler
function.  It can be either a button or a key event.

<DT><I>row</I><DD>

The row of the cell the ``cursor'' or TextField is in.

<DT><I>column</I><DD>

The column of the cell the ``cursor'' or TextField is in.
</DL>
<P>

<B>XbaeMatrixGetEventRowColumn()</B>

allows the application developer to
determine what cell corresponds to an (x, y) in an event.  If the (x, y)
of the event is a legal cell, row and column are set and True is
returned.  However, if the (x, y) is not over a cell, False is returned,
and row and column will have undefined values.
<P>

</DL>

<B>XbaeMatrixGetNumSelected()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>int XbaeMatrixGetNumSelected()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.
</DL>
<P>

<B>XbaeMatrixGetNumSelected()</B>

returns the number of cells that are currently selected in the given
matrix.  The widget maintains an internal variable as cells are selected
and deselected so a complete traversal of the widget is avoided.
<P>

</DL>

<B>XbaeMatrixGetRowHeight()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>int XbaeMatrixGetRowHeight()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>row;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>row</I><DD>

The row whose height we query.
</DL>
<P>

<B>XbaeMatrixGetRowHeight()</B>

is a convenient way to query a row height.
<P>

</DL>

<B>XbaeMatrixGetRowLabel()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>String XbaeMatrixGetRowLabel()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>row;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>row</I><DD>

The row of the label that should be retrieved.
</DL>
<P>

<B>XbaeMatrixGetRowLabel()</B>

returns a pointer to the label of the given row.  If no row labels
exist or the given row is not a valid row 
<FONT SIZE=-1>NULL</FONT>
is returned.
<P>

</DL>

<B>XbaeMatrixGetRowUserData()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>XtPointer XbaeMatrixGetRowUserData()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>row;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>row</I><DD>

The row of the cell whose data should be retrieved.
</DL>
<P>

<B>XbaeMatrixGetRowUserData()</B>

returns a pointer to the data assigned to the given row.
The data should be set using
<B>XbaeMatrixSetRowUserData()</B>.

If no data is found to be associated with the particular row,
<FONT SIZE=-1>NULL</FONT>
is returned.
<P>

</DL>

<B>XbaeMatrixHighlightCell()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixHighlightCell()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>column;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>row</I><DD>

The row of the cell to highlight.

<DT><I>column</I><DD>

The column of the cell to highlight.
</DL>
<P>

<B>XbaeMatrixHighlightCell()</B>

allows the application developer to programmatically highlight a cell.
<B>XbaeMatrixHighlightCell()</B>

draws the highlight around the cell. The corresponding unsigned char in the
<B>XmNhighlightedCells</B>

array will be have its
<B>HighlightCell</B>

bit set.
<P>

</DL>

<B>XbaeMatrixHighlightColumn()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixHighlightColumn()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>column;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>column</I><DD>

The column to highlight.
</DL>
<P>

<B>XbaeMatrixHighlightColumn()</B>

allows the application developer to programmatically highlight a column.
<B>XbaeMatrixHighlightColumn()</B>

draws the highlight around the column if
<B>XmNgridType</B>

is
<B>XmGRID_COLUMN_SHADOW</B>

or from around each cell in the column otherwise.
The corresponding unsigned chars in the
<B>XmNhighlightedCells</B>

array will be have its
<B>HighlightColumn</B>

or
<B>HighlightOther</B>

bit set, depending on whether
<B>XmNgridType</B>

is set to
<B>XmGRID_COLUMN_SHADOW</B>

or not.
<P>

</DL>

<B>XbaeMatrixHighlightRow()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixHighlightRow()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>row;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>row</I><DD>

The row to highlight.
</DL>
<P>

<B>XbaeMatrixHighlightRow()</B>

allows the application developer to
programmatically highlight a row.
<B>XbaeMatrixHighlightRow()</B>

draws the highlight around the row if
<B>XmNgridType</B>

is
<B>XmGRID_ROW_SHADOW</B>

or from around each cell in the row otherwise.
The corresponding unsigned chars in the
<B>XmNhighlightedCells</B>

array will be have its
<B>HighlightRow</B>

or
<B>HighlightOther</B>

bit set, depending on whether
<B>XmNgridType</B>

is set to
<B>XmGRID_ROW_SHADOW</B>

or not.
<P>

</DL>

<B>XbaeMatrixIsCellSelected()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>Boolean XbaeMatrixIsCellSelected()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>column;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>row</I><DD>

The row of the cell to check.

<DT><I>column</I><DD>

The column of the cell to check.
</DL>
<P>

<B>XbaeMatrixIsCellSelected()</B>

allows the application developer to determine whether or not a particular
cell is selected. The function returns True if the cell is selected and False
otherwise.
<P>

</DL>

<B>XbaeMatrixIsCellVisible()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>Boolean XbaeMatrixIsCellVisible()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>column;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>row</I><DD>

The row of the cell to check.

<DT><I>column</I><DD>

The column of the cell to check.
</DL>
<P>

<B>XbaeMatrixIsCellVisible()</B>

allows the application developer to determine whether or not a particular
cell is in the visible area of the
<B>XbaeMatrix</B>

widget. The function returns True if the cell is visible and False otherwise.
<P>

</DL>

<B>XbaeMatrixIsColumnSelected()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>Boolean XbaeMatrixIsColumnSelected()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>column;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>column</I><DD>

The column of the matrix to check.
</DL>
<P>

<B>XbaeMatrixIsColumnSelected()</B>

allows the application developer to determine whether or not a particular column is
selected. The function returns True if the column is selected and False
otherwise. A column must be selected in its entirety for
<B>XbaeMatrixIsColumnSelected()</B>

to return True.
<P>

</DL>

<B>XbaeMatrixIsColumnVisible()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>Boolean XbaeMatrixIsColumnVisible()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>column;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>column</I><DD>

The column of the matrix to check.
</DL>
<P>

<B>XbaeMatrixIsColumnVisible()</B>

allows the application developer to determine whether or not a particular column is
in the visible area of the
<B>XbaeMatrix</B>

widget. The function returns True if the column is visible and False
otherwise.
<P>

</DL>

<B>XbaeMatrixIsRowSelected()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>Boolean XbaeMatrixIsRowSelected()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>row;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>row</I><DD>

The row of the matrix to check.
</DL>
<P>

<B>XbaeMatrixIsRowSelected()</B>

allows the application developer to determine whether or not a particular row is
selected. The function returns True if the row is selected and False
otherwise. A row must be selected in its entirety for
<B>XbaeMatrixIsRowSelected()</B>

to return True.
<P>

</DL>

<B>XbaeMatrixIsRowVisible()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>Boolean XbaeMatrixIsRowVisible()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>row;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>row</I><DD>

The row of the matrix to check.
</DL>
<P>

<B>XbaeMatrixIsRowVisible()</B>

allows the application developer to determine whether or not a particular row is
in the visible area of the
<B>XbaeMatrix</B>

widget. The function returns True if the row is visible and False
otherwise.
<P>

</DL>

<B>XbaeMatrixMakeCellVisible()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>int XbaeMatrixMakeCellVisible()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>column;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>row</I><DD>

The row to scroll into the visible area of the matrix.

<DT><I>column</I><DD>

The column to scroll into the visible area of the matrix.
</DL>
<P>

<B>XbaeMatrixMakeCellVisible()</B>

allows a cell to be programatically scrolled into the visible area of the
<B>XbaeMatrix</B>

widget.  By calling this function, the
<B>XmNselectScrollVisible</B>

resource is ignored.  For a more accurate cell location after scrolling,
the programmer should use the
<B>XmNleftColumn</B>and<B>XmNtopRow</B>

resources.
<P>

</DL>

<B>XbaeMatrixNumRows()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>int XbaeMatrixNumRows()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.
</DL>
<P>

<B>XbaeMatrixNumRows()</B>

returns the number of rows in the given matrix.
<P>
<P>

</DL>

<B>XbaeMatrixNumColumns()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>int XbaeMatrixNumColumns()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.
</DL>
<P>

<B>XbaeMatrixNumColumns()</B>

returns the number of columns in the given matrix.
<P>

</DL>

<B>XbaeMatrixNumRows()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>int XbaeMatrixNumRows()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.
</DL>
<P>

<B>XbaeMatrixNumRows()</B>

returns the number of rows in the given matrix.
<P>

</DL>

<B>XbaeMatrixRefresh()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixRefresh()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.
</DL>
<P>

<B>XbaeMatrixRefresh()</B>

allows the application developer to
force the widget to redraw itself.  This might be used when the
programmer knows the widget's values have changed, but the widget
has not detected the change.  For example, the quickest way to swap
the values of 2 rows would be to do an XtGetValues on
<B>XmNcells</B>,

swap the values of the 2 rows, and then do an XtSetValues on
<B>XmNcells</B>

with the same StringTable variable.  Because of the way the Intrinsics
work, the widget will not see this change and will display the old
values until a redraw is preformed because of a resize or scroll event
(assuming no other change in the XtSetValues caused a redraw).
Calling
<B>XbaeMatrixRefresh()</B>

will cause the correct values to be drawn
and overcome this limitation in the Intrinsics.  While this function
should rarely be needed, it is provided ``just in case''.
<P>

</DL>

<B>XbaeMatrixRefreshCell()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixRefreshCell()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>column;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>row</I><DD>

The row of the cell to redraw.

<DT><I>column</I><DD>

The column of the cell to redraw.
</DL>
<P>

<B>XbaeMatrixRefreshCell()</B>

allows the application developer to redraw a specific cell of the
matrix.  This function is particularly useful when used with the
<B>XbaeMatrixDrawCellCallback</B>

as it allows updates of the data without an explicit expose event.
<P>

</DL>

<B>XbaeMatrixRefreshColumn()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixRefreshColumn()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>column;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>column</I><DD>

The column of the matrix to redraw.
</DL>
<P>

<B>XbaeMatrixRefreshColumn()</B>

allows the application developer to efficiently redraw a specific column
<BR>&nbsp;of&nbsp;the&nbsp;matrix.
<P>

</DL>

<B>XbaeMatrixRefreshRow()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixRefreshRow()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>row;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>row</I><DD>

The row of the matrix to redraw.
</DL>
<P>

<B>XbaeMatrixRefreshRow()</B>

allows the application developer to efficiently redraw a specific row
<BR>&nbsp;of&nbsp;the&nbsp;matrix.
<P>

</DL>

<B>XbaeMatrixRowColToXY()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>int XbaeMatrixRowColToXY()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>column;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>*x;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>*y;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>row</I><DD>

The row the of the cell in question.

<DT><I>column</I><DD>

The column the of the cell in question.

<DT><I>x</I><DD>

The x coordinate returned that represents the left coordinates of the given
cell.

<DT><I>y</I><DD>

The y coordinate returned that represents the upper coordinates of the given
cell.
</DL>
<P>

<B>XbaeMatrixRowColToXY()</B>

allows the application developer to determine the coordinates of the upper
left corner of a given cell.  If the given widget is not an
<B>XbaeMatrix</B>

widget, False will be returned and the values of x and y will be undefined.
This function is useful for drag and drop calculations.
<P>

</DL>

<B>XbaeMatrixSelectAll()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixSelectAll()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.
</DL>
<P>

<B>XbaeMatrixSelectAll()</B>

allows the application developer to
programmatically select all cells.
<B>XbaeMatrixSelectAll()</B>

redraws the
cells in reverse video. All Booleans in the
<B>XmNselectedCells</B>

array will
be set to True.
<P>

</DL>

<B>XbaeMatrixSelectCell()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixSelectCell()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>column;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>row</I><DD>

The row of the cell to select.

<DT><I>column</I><DD>

The column of the cell to select.
</DL>
<P>

<B>XbaeMatrixSelectCell()</B>

allows the application developer to
programmatically select a cell.
<B>XbaeMatrixSelectCell()</B>

first scrolls the
specified cell until it is visible, and then draws the cell in reverse
video (or selectedForeground / selectedBackground if set).
<BR>&nbsp;The&nbsp;corresponding&nbsp;Boolean&nbsp;in&nbsp;the
<B>XmNselectedCells</B>

array will be
set to True.
<P>

</DL>

<B>XbaeMatrixSelectColumn()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixSelectColumn()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>column;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>column</I><DD>

The column to select.
</DL>
<P>

<B>XbaeMatrixSelectColumn()</B>

allows the application developer to
programmatically select a column.
<B>XbaeMatrixSelectColumn()</B>

first scrolls
the specified column until it is visible, and then draws the column in
reverse video (or selectedForeground / selectedBackground if set).
The corresponding Booleans in the
<B>XmNselectedCells</B>

array
will be set to True.
<P>

</DL>

<B>XbaeMatrixSelectRow()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixSelectRow()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>row;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>row</I><DD>

The row to select.
</DL>
<P>

<B>XbaeMatrixSelectRow()</B>

allows the application developer to
programmatically select a row.
<B>XbaeMatrixSelectRow()</B>

first scrolls the
specified row until it is visible, and then draws the row in reverse
video (or selectedForeground / selectedBackground if set).
The corresponding Booleans in the
<B>XmNselectedCells</B>

array will be
set to True.
<P>

</DL>

<B>XbaeMatrixSetCell()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixSetCell()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>column;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>const</TD><TD><I>String value;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>row</I><DD>

The row of the cell whose value should be set.

<DT><I>column</I><DD>

The column of the cell whose value should be set.

<DT><I>value</I><DD>

The new value to set this cell to.
</DL>
<P>

<B>XbaeMatrixSetCell()</B>

allows the application developer to programmatically
set the value of the specified cell. To set the values of many cells, it
may be more efficient to do an XtSetValues() on the
<B>XmNcells</B>

resource.
<P>

</DL>

<B>XbaeMatrixSetCellBackground()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixSetCellBackground()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>column;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Pixel</TD><TD><I>color;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>row</I><DD>

The row of the cell whose backgroundshould be set.

<DT><I>column</I><DD>

The column of the cell whose background should be set.

<DT><I>color</I><DD>

The new color to which to set this cell's background.
</DL>
<P>

<B>XbaeMatrixSetCellBackground()</B>

is a convenient way to specify and modify the
<B>XmNcellBackgrounds</B>

resource when changing the background of a single cell. If
<B>XmNcellBackgrounds</B>

is
<FONT SIZE=-1>NULL,</FONT>
then
<B>XbaeMatrixSetCellBackground()</B>

will create a Pixel
table initialized to
<B>XmNforeground</B>

except for the cell specified in it's arguments. If
<B>XmNcellBackgrounds</B>

is not
<FONT SIZE=-1>NULL,</FONT>
then
<B>XbaeMatrixSetCellBackground()</B>

will changed the specified cell in that resource to the specified color.
<P>

</DL>

<B>XbaeMatrixSetCellColor()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixSetCellColor()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>column;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Pixel</TD><TD><I>color;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>row</I><DD>

The row of the cell whose color should be set.

<DT><I>column</I><DD>

The column of the cell whose color should be set.

<DT><I>color</I><DD>

The new color to which to set this cell.
</DL>
<P>

<B>XbaeMatrixSetCellColor()</B>

is a convenient way to specify and modify the
<B>XmNcolors</B>

resource when changing the color of a single cell. If
<B>XmNcolors</B>

is
<FONT SIZE=-1>NULL,</FONT>
then
<B>XbaeMatrixSetCellColor()</B>

will create a Pixel
table initialized to
<B>XmNforeground</B>

except for the cell specified in it's arguments. If
<B>XmNcolors</B>

is not
<FONT SIZE=-1>NULL,</FONT>
then
<B>XbaeMatrixSetCellColor()</B>

will changed the specified cell in that resource to the specified color.
<P>

</DL>

<B>XbaeMatrixSetCellUserData()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixSetCellUserData()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>column;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>XtPointer</TD><TD><I>data;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>row</I><DD>

The row of the cell whose value should be set.

<DT><I>column</I><DD>

The column of the cell whose value should be set.

<DT><I>data</I><DD>

A pointer to a user defined data area.
</DL>
<P>

<B>XbaeMatrixSetCellUserData()</B>

allows the application developer to programmatically
set the user data of a specified cell. To set the data value of many cells,
it may be more efficient to do an XtSetValues() on the
<B>XmNcellUserData</B>

resource.  This resource is copied.
<P>

</DL>

<B>XbaeMatrixSetCellWidget()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixSetCellWidget(w, row, column, widget) <BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>column;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>widget;</I><BR></TD></TR>
</TABLE>

<P>
<B>XbaeMatrixSetCellWidget()</B>

is a function to attach a widget to a matrix cell.
The cell is selected by specifying its
<B>row</B>

and
<B>column ,</B>

<B>widget</B>

is the cell widget to be associated with that cell.
XbaeMatrix will manage the cell widget's position and size so it
is displayed inside the cell at all times, including when scrolling.
<P>

Using a NULL
<B>widget</B>

removes the link between a widget and its cell.
Only one widget can be in a cell,
a widget should also be in only one cell at a time.
<P>

</DL>

<B>XbaeMatrixSetColumnBackgrounds()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixSetColumnBackgrounds()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>position;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Pixel</TD><TD><I>*colors;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>num_colors;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>position</I><DD>

The column position at which to begin applying the new backgrounds. Must be
greater than or equal to zero, and (position + num_colors) must be less
than or equal to
<B>XmNcolumns</B>.


<DT><I>colors</I><DD>

Points to an array of Pixel. These specify the backgrounds for the cells in
the specified columns. The colors array must have num_colors elements.

<DT><I>num_colors</I><DD>

The number of colors in the colors array.
</DL>
<P>

<B>XbaeMatrixSetColumnBackgrounds()</B>

is a convenient way to specify and modify the
<B>XmNcellBackgrounds</B>

resource when setting the background of an entire column or columns. If
<B>XmNcellBackgrounds</B>

is
<FONT SIZE=-1>NULL,</FONT>
then
<B>XbaeMatrixSetColumnBackgrounds()</B>

will create a Pixel table initialized to
<B>XmNforeground</B>

except for the columns specified in it's arguments. If
<B>XmNcellBackgrounds</B>

is not
<FONT SIZE=-1>NULL,</FONT>
then
<B>XbaeMatrixSetColumnBackgrounds()</B>

will changed the specified columns in that
resource to the specified colors.
<P>

</DL>

<B>XbaeMatrixSetColumnColors()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixSetColumnColors()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>position;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Pixel</TD><TD><I>*colors;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>num_colors;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>position</I><DD>

The column position at which to begin applying the new colors. Must be
greater than or equal to zero, and (position + num_colors) must be less
than or equal to
<B>XmNcolumns</B>.


<DT><I>colors</I><DD>

Points to an array of Pixel. These specify the colors for the cells in
the specified columns. The colors array must have num_colors elements.

<DT><I>num_colors</I><DD>

The number of colors in the colors array.
</DL>
<P>

<B>XbaeMatrixSetColumnColors()</B>

is a convenient way to specify and modify the
<B>XmNcolors</B>

resource when setting the color of an entire column or columns. If
<B>XmNcolors</B>

is
<FONT SIZE=-1>NULL,</FONT>
then
<B>XbaeMatrixSetColumnColors()</B>

will create a Pixel table initialized to
<B>XmNforeground</B>

except for the columns specified in it's arguments. If
<B>XmNcolors</B>

is not
<FONT SIZE=-1>NULL,</FONT>
then
<B>XbaeMatrixSetColumnColors()</B>

will changed the specified columns in that
resource to the specified colors.
<P>

</DL>

<B>XbaeMatrixSetColumnWidth()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixSetColumnWidth()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>column;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>width;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>column</I><DD>

The column whose width we'll be changing.

<DT><I>width</I><DD>

The new width of this column.
A column width can be 0 to hide a column.
</DL>
<P>

<B>XbaeMatrixSetColumnWidth()</B>

is a convenient way to change the width of a column without the
need to allocate an array with column width numbers.
Passing -1 as the new width will reset the column width to the default value.
<P>

</DL>

<B>XbaeMatrixSetColumnLabel()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixSetColumnLabel()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>column;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>String</TD><TD><I>value;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>column</I><DD>

The column of the label is to be set.

<DT><I>value</I><DD>

The new value of the label.
</DL>
<P>

<B>XbaeMatrixSetColumnLabel()</B>

allows the application developer to programmatically
change the label of a specified column. The resource
<B>XmNcolumnLabels</B>

must be set before using
<B>XbaeMatrixSetColumnLabel()</B>

and the number of lines in the column label being set cannot be different
to the existing label.
<P>

</DL>

<B>XbaeMatrixSetColumnUserData()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixSetColumnUserData()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>column;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>XtPointer</TD><TD><I>data;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>column</I><DD>

The column whose value should be set.

<DT><I>data</I><DD>

A pointer to a user defined data area.
</DL>
<P>

<B>XbaeMatrixSetColumnUserData()</B>

allows the application developer to programmatically
associate user data for the specified column.
<P>

</DL>

<B>XbaeMatrixSetRowBackgrounds()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixSetRowBackgrounds()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>position;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Pixel</TD><TD><I>*colors;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>num_colors;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>position</I><DD>

The row position at which to begin applying the new colors. Must be
greater than or equal to zero, and (position + num_colors) must be less
than or equal to
<B>XmNrows</B>.


<DT><I>colors</I><DD>

Points to an array of Pixel. These specify the backgrounds for the cells in
the specified rows. The colors array must have num_colors elements.

<DT><I>num_colors</I><DD>

The number of colors in the colors array.
</DL>
<P>

<B>XbaeMatrixSetRowBackgrounds()</B>

is a convenient way to specify and modify the
<B>XmNcellBackgrounds</B>

resource when setting the background of an entire row or rows. If
<B>XmNcellBackgrounds</B>

is
<FONT SIZE=-1>NULL,</FONT>
then
<B>XbaeMatrixSetRowBackgrounds()</B>

will create a Pixel
table initialized to
<B>XmNforeground</B>

except for the rows specified in it's arguments. If
<B>XmNcellBackgrounds</B>

is not
<FONT SIZE=-1>NULL,</FONT>
then
<B>XbaeMatrixSetRowBackgrounds()</B>

will changed the specified rows in that resource to the specified colors.
</DL>

<P>

<B>XbaeMatrixSetRowColors()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixSetRowColors()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>position;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Pixel</TD><TD><I>*colors;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>num_colors;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>position</I><DD>

The row position at which to begin applying the new colors. Must be
greater than or equal to zero, and (position + num_colors) must be less
than or equal to
<B>XmNrows</B>.


<DT><I>colors</I><DD>

Points to an array of Pixel. These specify the colors for the cells in
the specified rows. The colors array must have num_colors elements.

<DT><I>num_colors</I><DD>

The number of colors in the colors array.
</DL>
<P>

<B>XbaeMatrixSetRowColors()</B>

is a convenient way to specify and modify the
<B>XmNcolors</B>

resource when setting the color of an entire row or rows. If
<B>XmNcolors</B>

is
<FONT SIZE=-1>NULL,</FONT>
then
<B>XbaeMatrixSetRowColors()</B>

will create a Pixel
table initialized to
<B>XmNforeground</B>

except for the rows specified in it's arguments. If
<B>XmNcolors</B>

is not
<FONT SIZE=-1>NULL,</FONT>
then
<B>XbaeMatrixSetRowColors()</B>

will changed the specified rows in that resource to the specified colors.
<P>

</DL>

<B>XbaeMatrixSetRowHeight()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixSetRowHeight()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>height;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>row</I><DD>

The row whose height we'll be changing.

<DT><I>height</I><DD>

The new height of this row.
A row height can be 0 to hide a row.
</DL>
<P>

<B>XbaeMatrixSetRowHeight()</B>

is a convenient way to change the height of a row without the
need to allocate an array with row height numbers.
Passing -1 as the new height will reset the row's height to the default value.
<P>

</DL>

<B>XbaeMatrixSetRowLabel()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixSetRowLabel()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>String</TD><TD><I>value;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>row</I><DD>

The row of the label is to be set.

<DT><I>value</I><DD>

The new value of the label.
</DL>
<P>

<B>XbaeMatrixSetRowLabel()</B>

allows the application developer to programmatically
change the label of the specified row. The resource
<B>XmNrowLabels</B>

must be set before using
<B>XbaeMatrixSetRowLabel() .</B>

<P>

</DL>

<B>XbaeMatrixSetRowUserData()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixSetRowUserData()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>column;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>XtPointer</TD><TD><I>data;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>row</I><DD>

The row whose value should be set.

<DT><I>data</I><DD>

A pointer to a user defined data area.
</DL>
<P>

<B>XbaeMatrixSetRowUserData()</B>

allows the application developer to programmatically
associate user data for the specified row.
<P>

</DL>

<B>XbaeMatrixUnhighlightAll()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixUnhighlightAll()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.
</DL>
<P>

<B>XbaeMatrixUnhighlightAll()</B>

allows the application developer to
programmatically unhighlight all cells.
<B>XbaeMatrixUnhighlightAll()</B>

erases the highlight from all cells.
All unsigned chars in the
<B>XmNhighlightedCells</B>

array will
be set to 
<B>HighlightNone</B>.

<P>

</DL>

<B>XbaeMatrixUnhighlightCell()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixUnhighlightCell()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>column;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>row</I><DD>

The row of the cell to unhighlight.

<DT><I>column</I><DD>

The column of the cell to unhighlight.
</DL>
<P>

<B>XbaeMatrixUnhighlightCell()</B>

allows the application developer to
programmatically unhighlight a cell.
<B>XbaeMatrixUnhighlightCell()</B>

erases the highlight from the cell.
The corresponding unsigned char in the
<B>XmNhighlightedCells</B>

array will be have its
<B>HighlightCell</B>

bit cleared.
<P>

</DL>

<B>XbaeMatrixUnhighlightColumn()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixUnhighlightColumn()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>column;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>column</I><DD>

The column to unhighlight.
</DL>
<P>

<B>XbaeMatrixUnhighlightColumn()</B>

allows the application developer to programmatically unhighlight a column.
<B>XbaeMatrixUnhighlightColumn()</B>

erases the highlight from around the column if
<B>XmNgridType</B>

is
<B>XmGRID_COLUMN_SHADOW</B>

or from around each cell in the column otherwise.
The corresponding unsigned chars in the
<B>XmNhighlightedCells</B>

array will be have its
<B>HighlightColumn</B>

or
<B>HighlightOther</B>

bit cleared, depending on whether
<B>XmNgridType</B>

is set to
<B>XmGRID_COLUMN_SHADOW</B>

or not.
<P>

</DL>

<B>XbaeMatrixUnhighlightRow()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>void XbaeMatrixUnhighlightRow()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>row;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>row</I><DD>

The row to unhighlight.
</DL>
<P>

<B>XbaeMatrixUnhighlightRow()</B>

allows the application developer to
programmatically unhighlight a row.
<B>XbaeMatrixUnhighlightRow()</B>

erases the highlight from around the row if
<B>XmNgridType</B>

is
<B>XmGRID_ROW_SHADOW</B>

or from around each cell in the row otherwise.
The corresponding unsigned chars in the
<B>XmNhighlightedCells</B>

array will be have its
<B>HighlightRow</B>

or
<B>HighlightOther</B>

bit cleared, depending on whether
<B>XmNgridType</B>

is set to
<B>XmGRID_ROW_SHADOW</B>

or not.
<P>

</DL>

<B>XbaeMatrixVisibleCells()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>int XbaeMatrixVisibleCells()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>*top_row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>*bottom_row;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>*left_column;</I><BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>int</TD><TD><I>*right_column;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.

<DT><I>top_row</I><DD>

The first row that is currently visible in the matrix.

<DT><I>bottom_row</I><DD>

The last row that is currently visible in the matrix.

<DT><I>left_column</I><DD>

The leftmost column that is currently visible in the matrix.

<DT><I>right_column</I><DD>

The rightmost column that is currently visible in the matrix.
</DL>
<P>

<B>XbaeMatrixVisibleCells()</B>

allows the the application developer to obtain the currently visible
portion of the
<B>XbaeMatrix</B>

<I>w</I>.

<P>

</DL>

<B>XbaeMatrixVisibleColumns()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>int XbaeMatrixVisibleColumns()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.
</DL>
<P>

<B>XbaeMatrixVisibleColumns()</B>

allows the the application developer to programmatically check how many
columns are currently displayed in the
<B>XbaeMatrix</B>

<I>w</I>.

A partially visible column will be declared an entire column.
<P>

</DL>

<B>XbaeMatrixVisibleRows()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>int XbaeMatrixVisibleRows()<BR></TD></TR>
<TR VALIGN=top><TD></TD><TD>Widget</TD><TD><I>w;</I><BR></TD></TR>
</TABLE>

<P>

<DL COMPACT>
<DT><I>w</I><DD>

An
<B>XbaeMatrix</B>

widget.
</DL>
<P>

<B>XbaeMatrixVisibleRows()</B>

allows the the application developer to programmatically check how many
rows are currently displayed in the
<B>XbaeMatrix</B>

<I>w</I>.

A partially visible row will be declared an entire row.
<P>

<P>
<P>

</DL>

<B>XbaeGetVersionNum()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>int XbaeGetVersionNum()<BR></TD></TR>
</TABLE>

<P>
<P>

<B>XbaeGetVersionNum()</B>

is a function that returns the numeric representation of the version
of the Xbae library that your program is working with.
This is the run-time version of the Xbae widgets, where
<B>XbaeVersion</B>

is a macro that represents the compile-time version.
<P>

The numeric representation is a simple calculation based on the
major, minor, and pico numbers representing an Xbae widget release.
E.g. version 4.8.1 would be represented as 40801.
<P>

Releases prior to 4.8.0 didn't have this functionality.
<P>

<P>

</DL>

<B>XbaeGetVersionText()</B>

<P>

<DL COMPACT><DT><DD>
<TABLE>
<TR VALIGN=top><TD COLSPAN=3>char * XbaeGetVersionText()<BR></TD></TR>
</TABLE>

<P>
<P>

<B>XbaeGetVersionText()</B>

is a function that returns the textual representation of the version
of the Xbae library that your program is working with.
This is the run-time version of the Xbae widgets, where
<B>XbaeVersionTxt</B>

is a macro that represents the compile-time version.
<P>

</DL>

<P>
<P>
</DL>

<P>
<P>
<P>
<P>
<P>
<A NAME="lbAM">&nbsp;</A>
<H3>Additional Behavior</H3>

<P>
Using XtSetValues to set the Matrix's
<B>XmNwidth</B>

resource to 0 will cause
it to recompute it's horizontal size. It will request a new size which
results in
<B>XmNvisibleColumns</B>

columns being displayed. If
<B>XmNvisibleColumns</B>

is 0, then it will request a new size such that it
does not need a horizontal ScrollBar (full horizontal size).
<P>

Using XtSetValues to set the Matrix's
<B>XmNheight</B>

resource to 0 will cause
it to recompute it's vertical size. It will request a new size which
results in
<B>XmNvisibleRows</B>

rows being displayed. If
<B>XmNvisibleRows</B>

is 0,
then it will request a new size such that it does not need a vertical
ScrollBar (full vertical size).
<P>

An XtSetValues on
<B>XmNvisibleRows</B>

will cause the Matrix to request a new
size which results in
<B>XmNvisibleRows</B>

non-fixed rows being displayed,
only if the new value is different than the old one.
<P>

An XtSetValues on
<B>XmNvisibleColumns</B>

will cause the Matrix to request a
new size which results in the first
<B>XmNvisibleColumns</B>

non-fixed columns
being displayed, only if the new value is different than the old one.
<P>

An XtSetValues on any other resource will not result in a request for a
new size. Setting other resources in conjunction with setting
<B>XmNwidth</B>

and/or
<B>XmNheight</B>

to 0 allows for more control of the Matrix's geometry.
<P>

An XtSetValues setting
<B>XmNrowLabelWidth</B>

to 0 will cause
<B>XmNrowLabelWidth</B>

to be set to the width of the longest row label.
<P>
<A NAME="lbAN">&nbsp;</A>
<H3>Virtual Bindings</H3>

<P>
The bindings for virtual keys are vendor specific. For information about
bindings for virtual buttons and keys, see
<B><A HREF="VirtualBindings.html">VirtualBindings</A>(3X)</B>.

<A NAME="lbAO">&nbsp;</A>
<H2>AUTHOR</H2>

<B>Andrew Wason</B>

(<A HREF="mailto:aw@bae.bellcore.com">aw@bae.bellcore.com</A>) of Bellcore, 
Piscataway NJ, wrote the original version of the Xbae widgets.  His final
release of the widgets was version 3.8.
<P>
<B>Kevin Brannen</B>

(<A HREF="mailto:kbrannen@metronet.com">kbrannen@metronet.com</A>) took over maintainership
following Andrew Wason's departure and released version 4.0.
<P>
<B>Andrew Lister</B>

(<A HREF="mailto:lister@db.com">lister@db.com</A>) maintained from 1995 to 1999.
<A NAME="lbAP">&nbsp;</A>
<H2>SPECIAL THANKS</H2>

Andrew Wason for the original idea and source code.
<BR>

Jay Schmidgall for his contributions.
<BR>

Nick Banyard for providing the multibyte extensions.
<BR>

Callum Gibson for the pattern parsing in the XbaeInput widget.

<A NAME="lbAQ">&nbsp;</A>
<H2>RELEASE</H2>

<P>
This document describes XbaeMatrix from Xbae Version 4.9.
<A NAME="lbAR">&nbsp;</A>
<H2>SEE ALSO</H2>

<B><A HREF="Core.html">Core</A>(3X), <A HREF="Composite.html">Composite</A>(3X), <A HREF="XmManager.html">XmManager</A>(3X), <A HREF="XmScrollBar.html">XmScrollBar</A>(3X), <A HREF="XbaeInput.html">XbaeInput</A>(3X),</B>

<A HREF="XmText.html">XmText</A>(3X)
<A NAME="lbAS">&nbsp;</A>
<H2>Notice of Limitation</H2>

<P>
Bellcore, previous and current maintainers of the Xbae widgets
(collectively 'authors') provide this information solely
to professionals who have the appropriate degree of experience to
understand and interpret its contents in accordance with generally
accepted engineering or other professional standards and applicable
regulations. No recommendations as to products or vendors is made or
should be implied.
<P>

While the information contained herein has been prepared from sources
deemed to be reliable, the authors reserve the right to revise the
information without notice, but has no obligation to do so. Unless the
recipient has been expressly granted a license by Bellcore under
separate applicable written agreement with Bellcore, no license,
expressed or implied, is granted under any patents, copyrights or other
intellectual property rights. Use of the information is at your
discretion and shall not be deemed an inducement by Bellcore to infringe
any existing or later-issued patent, copyrights or other intellectual
property right.
<P>

THE AUTHORS MAKE NO REPRESENTATIONS AND EXTENDS NO WARRANTIES, EXPRESS OR
IMPLIED, WITH RESPECT TO THE INFORMATION, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ANY PARTICULAR
PURPOSE, AND THE WARRANTY AGAINST INFRINGEMENT OF PATENTS OR OTHER
INTELLECTUAL PROPERTY RIGHTS. THE INFORMATION IS PROVIDED ``AS IS'', AND
IN NO EVENT SHALL THE AUTHORS OR ANY OF ITS AFFILIATES BE LIABLE FOR ANY
DAMAGES, INCLUDING ANY LOST PROFITS OR OTHER INCIDENTAL OR CONSEQUENTIAL
DAMAGES RELATING TO THE INFORMATION.
<P>

Copyright 1991, 1992 Bellcore.
<BR>

Copyright 1995-99 Andrew Lister
All Rights Reserved.
<BR>

Copyright 1999-2002 LessTif Developers
<P>
The above no warranty extends to all additions and contributions.  No
contributor shall be held liable; this work is provided ``as is''.  If
this is a problem for you, then don't use this software.
<P>

<HR>
<A NAME="index">&nbsp;</A><H2>Index</H2>
<DL>
<DT><A HREF="#lbAB">NAME</A><DD>
<DT><A HREF="#lbAC">SYNOPSIS</A><DD>
<DT><A HREF="#lbAD">DESCRIPTION</A><DD>
<DL>
<DT><A HREF="#lbAE">Classes</A><DD>
<DT><A HREF="#lbAF">New Resources</A><DD>
<DT><A HREF="#lbAG">Inherited Resources</A><DD>
<DT><A HREF="#lbAH">Callback Information</A><DD>
<DT><A HREF="#lbAI">Translations</A><DD>
<DT><A HREF="#lbAJ">Action Routines</A><DD>
<DT><A HREF="#lbAK">Type Converters</A><DD>
<DT><A HREF="#lbAL">Public Functions</A><DD>
<DT><A HREF="#lbAM">Additional Behavior</A><DD>
<DT><A HREF="#lbAN">Virtual Bindings</A><DD>
</DL>
<DT><A HREF="#lbAO">AUTHOR</A><DD>
<DT><A HREF="#lbAP">SPECIAL THANKS</A><DD>
<DT><A HREF="#lbAQ">RELEASE</A><DD>
<DT><A HREF="#lbAR">SEE ALSO</A><DD>
<DT><A HREF="#lbAS">Notice of Limitation</A><DD>
</DL>
<HR>
This document was created by
<A HREF="http://www.debian.org/Packages/unstable/doc/man2html.html">man2html</A>,
using the manual pages.<BR>
Time: 18:51:49 GMT, September 26, 2002
</BODY>
</HTML>