Xaw(3)
NAME
Xaw - X Athena Widgets
DESCRIPTION
Xaw is a widget set based on the X Toolkit Intrinsics (Xt) Library.
This release by the X.org Foundation includes additions and modifica-
tions originally made for The XFree86 Project, Inc. This manual page
describes these changes as well as some of the common interfaces
between its version and the previous X Consortium release (Xaw6).
ACTIONS
All of the Xaw widgets now have the additional translations call-proc,
declare, get-values and set-values. The syntax for these actions is:
action-name (boolean-expression, arguments)
Action-name is one of call-proc, declare, get-values or set-values.
Boolean-expression is composed with the operators | (or), & (and), ^
(xor), and ~ (not). The operands can be a variable name, which starts
with a $; a resource name without the bindings . or *; or a constant
name, including mine (event->xany.window == XtWindow(widget)), faked
(event->xany.send_event != 0), true (1) and false (0).
Arguments are self-explanatory; when starting with a $ they name a
variable, otherwise, they indicate a resource name.
call-proc (boolean-expression, procedure-name)
This action allows the evaluation of a boolean expression in
the first parameter before calling a action procedure. The
procedure is only called if the expression evaluates as true.
Example:
call-proc("$inside & $pressed", notify)
declare (boolean-expression, variable, value, ...)
This action is used to create new variables or change their
values. Any number of variable-value tuples may be specified.
Example:
declare(1, $pressed, 1)
get-values (boolean-expression, variable, value, ...)
This action reads a widget resource value into a variable. Any
number of variable-value tuples may be specified. Example:
get-values(1, $fg, foreground, $bg, background)
set-values (boolean-expression, variable, value, ...)
This action sets a widget resource to the given value, which
may be a variable. Any number of variable-value tuples may be
specified. Example:
set-values(1, foreground, $bg, background, $fg)
Here is a sample translation to make a label widget behave like a but-
ton:
<Map>: get-values(1, $fg, foreground, $bg, background)\n\
<Btn1Down>: set-values(1, foreground, yellow, background, gray30)\n\
<Btn1Up>: set-values(1, foreground, $fg, background, $bg)
DISPLAY LISTS
All of the Xaw widgets have now the additional resource displayList.
This resource allows drawing the widget decorations using commands
embedded in a resource string. The displayList resource has the syn-
tax:
[class-name:]function-name arguments[[{;\n}]...]
Class-name is any registered set of functions to draw in the widget.
Currently the only existing class is xlib, which provides access to the
Xlib drawing primitives.
Function-name is the drawing or configuration function to be called,
described bellow.
Arguments may be anything suitable to the displayList function being
called. When the function requires a coordinate, the syntax is
{+-}<integer> or <integer>/<integer>. Examples:
+0,+0 top, left
-0,-0 bottom, right
-+10,-+10 bottom+10, right+10
+0,1/2 left, vertical-center
arc-mode mode
Sets the arc mode. Accepted modes are "pieslice" and "chord",
which set the arc to ArcPieSlice or ArcChord, respectively.
Example:
arc-mode chord
bg color-spec
background color-spec
Sets the background color. color-spec must a valid color
specification. Example:
background red
cap-style style
Sets the cap style. Accepted styles are "notlast", "butt",
"round", and "projecting", which set the cap style to CapNot-
Last, CapBut, CapRound or CapProjecting, respectively. Exam-
ple:
cap-style round
clip-mask pixmap-spec
Sets the pixmap for the clip mask. Requires a pixmap parame-
ter, as described in the PIXMAPS section below. Example:
clip-mask xlogo11
clip-origin x,y
Sets the clip x and y origin. Requires two arguments, the x
and y coordinates. Example:
clip-origin 10,10
clip-rects x1,y1,x2,y2 [...,xn,yn]
clip-rectangles x1,y1,x2,y2 [...,xn,yn]
Sets a list of rectangles to the clip mask. The number of
arguments must be a multiple of four. The arguments are coor-
dinates. The parser calculates the width and height of the
rectangles. Example:
clip-rects 0,0,10,20, 20,10,30,30
coord-mode mode
Changes the coord mode for fill-polygon, draw-lines, and draw-
points. Accepted parameters are "modeorigin" and "previous",
that sets the coord mode to CoordModeOrigin or CoordModePrevi-
ous, respectively. Example:
coord-mode previous
copy-area {pixmap-spec|.},dstx,dsty[,x2,y2,srcx,srcy]
Calls XCopyArea. The character . means copy the window con-
tents; pixmap-spec is as defined in the PIXMAPS section below.
X2 and y2 are the coordinates of the end copy, not the width
and height; if not defined, the parser calculates them. src_x
and src_y default to zero. Example:
copy-area Term,10,10
copy-plane {pixmap-spec|.},dstx,dsty[,x2,y2,srcx,srcy,plane]
Calls XCopyPlane. The character . means copy the window con-
tents; pixmap-spec is as defined in the PIXMAPS section below.
X2 and y2 are the coordinates of the end copy, not the width
and height; if not defined, the parser calculates them. src_x
and src_y default to zero. Plane defaults to one. Example:
copy-plane star,10,10
dashes i1[...,in]
Sets the dashes for line drawing. Accepts up to 127 arguments.
Example:
dashes 3,7 9,10
draw-arc x1,y1,x2,y2[,start-angle,end-angle]
Draws an arc. The four first arguments are the rectangle
enclosing the arc. The two remaining arguments, if specified,
are the start and end angle, in degrees. Example:
draw-arc +0,+0,-1,-1,0,90
draw-rect x1,y1,x2,y2
draw-rectangle x1,y1,x2,y2
Draws a rectangle. Requires four arguments, which are the
start and end coordinate pairs. Example:
draw-rect +1,+1,-5,-5
draw-string x,y,"string"
Draws a text string. Requires three arguments, a x coordinate,
a y coordinate, and a string. Strings that have white space
can be quoted with the " character; the backslash character \
can also be used, but it will be necessary escape it twice.
Example:
draw-string 10,10, "Hello world!"
exposures boolean
Sets graphics exposures in the GC. Allowed parameters are a
integer or the strings "true", "false", "on" and "off". Exam-
ple:
exposures true
fill-arc x1,y1,x2,y2[,start-angle,end-angle]
Like draw-arc, but fills the contents of the arc with the cur-
rently selected foreground. Example:
fill-arc +0,+0,-1,-1,0,180
fill-poly x1,y1 [...,xn,yn]
fill-polygon x1,y1 [...,xn,yn]
Like draw-lines, but fills the enclosed polygon and joins the
first and last point, if they are not at the same position.
Example:
fill-poly +0,+10, +10,+20, +30,+0
fill-rect x1,y1,x2,y2
fill-rectangle x1,y1,x2,y2
Like draw-rect, but fills the contents of the rectangle with
the selected foreground color. Example:
fill-rect +10,+10,-20,-20
fill-rule rule
Sets the fill rule. Accepted parameters are "evenodd" and
"winding", which set the fill rule to EvenOddRule or Windin-
gRule, respectively. Example:
fill-rule winding
fill-style style
Sets the fill style. Allowed parameters are "solid", "tiled",
"stippled" and "opaquestippled", which set the fill style to
FillSolid, FillTiled, FillStippled or FillOpaqueStippled,
respectively. Example:
fill-style tiled
font font-spec
Sets the font for text functions. Example:
font -*-*-*-R-*-*-*-120-*-*-*-*-ISO8859-1
fg color-spec
foreground color-spec
Like background, but sets the current foreground color. Exam-
ple:
foreground blue
mask This command is useful when you want to draw only in the region
that really needs to be repainted. Requires no arguments.
function function-spec
Sets the specific GC function. Allowed parameters are "set",
"clear", "and", "andreverse", "copy", "andinverted", "noop",
"xor", "or", "nor", "equiv", "invert", "orreverse", "copyin-
verted" and "nand", which set the function to GXset, GXclear,
GXand, GXandReverse, GXcopy, GXandInverted, GXnoop, GXxor,
GXor, GXnor, GXequiv, GXinvert, GXorReverse, GXcopyInverted or
GXnand, respectively. Example:
function xor
join-style style
Sets the join style. Allowed parameters are "miter", "round"
and "bevel", which set the join style to JoinMiter, JoinRound
and JoinBevel, respectively. Example:
join-style round
image {pixmap-spec},xs,ys,[xe,ye]
This function is implemented as a way to quickly compose com-
plex decorations in widgets. Pixmap-spec is as defined in the
PIXMAPS section below. xs and ys are the coordinates from where
to start copying the pixmap; xe and ye are optional (they
default to xs + pixmap.width and ys + pixmap.height, respec-
tively). If the pixmap has a mask, the copy is masked accord-
ingly. Example:
image pixmap.xpm,0,0,20,20
line x1,y1,x2,y2
draw-line x1,y1,x2,y2
Draws a line with the current foreground color. Requires four
arguments, the starting and ending coordinate pairs. Example:
line +0,+0, -1,-1
line-width integer
Selects a line width for drawing. Example:
line-width 2
line-style style
Sets the line style. Accepted parameters are "solid", "onoff-
dash" and "doubledash", which set the line style to LineSolid,
LineOnOffDash or LineDoubleDash, respectively. Example:
line-style onoffdash
lines x1,y1,x2,y2 [...,xn,yn]
draw-lines x1,y1,x2,y2 [...,xn,yn]
Draws a list of lines. Any number of argument pairs may be sup-
plied. Example:
lines +0,-1, -1,-1, -1,+0
paint-string x,y,"string"
Identical to draw-string, but also uses the background color.
Example:
paint-string 10,20, "Sample text"
point x,y
draw-point x,y
Draws a point. Requires two arguments, a coordinate pair.
Example:
point +10,+10
plane-mask integer
Sets the plane mask. Requires an integer parameter. Example:
plane-mask -1
points x1,y1 [...,xn,yn]
draw-points x1,y1 [...,xn,yn]
Draws a list of points at the specified coordinates. Example:
points +1,+2, +1,+4, +1,+6
segments x1,y1,x2,y2 [...,xn,yn]
draw-segments x1,y1,x2,y2 [...,xn,yn]
Draws a list of segment lines. The number of parameters must
be multiple of 4. Example:
segments +1,+2,+1,-3, +2,-2,-3,-2
shape-mode mode
Sets the shape mode used in fill-polygon. Accepted parameters
are "complex", "convex" or "nonconvex", which set the shape
mode to Complex, Convex or Nonconvex, accordingly. Example:
shape-mode convex
stipple pixmap-spec
Sets the pixmap for a stipple. Requires a pixmap parameter, as
described in the PIXMAPS section below. Example:
stipple plaid
subwindow-mode mode
Sets the subwindow mode in the GC. Accepted parameters are
"includeinferiors" and "clipbychildren", which set the subwin-
dow mode to IncludeInferiors or ClipByChildren, respectively.
Example:
subwindow-mode includeinferiors
tile pixmap-spec
Sets the pixmap for a tile. Requires a pixmap parameter, as
described in the PIXMAPS section below. Example:
tile xlogo11?foreground=red&background=gray80
ts-origin x,y
Sets the tile stipple x and y origin. Requires two arguments,
a x and y coordinate. Example:
ts-origin 10,10
umask Disables the GC mask, if it has been set with the command mask.
Requires no arguments.
Example for drawing a shadow effect in a widget:
foreground gray30;\
draw-lines +1,-1,-1,-1,-1,+1;\
foreground gray85;\
draw-lines -1,+0,+0,+0,+0,-1
PIXMAPS
A String to Pixmap converter has been added to Xaw. This converter is
meant to be extended, and has enough abstraction to allow loading sev-
eral image formats. It uses a format that resembles a URL, with the
syntax:
[type:]name[?arg=val[{&}...]]
Type can be one of bitmap, gradient or xpm.
Name may be a file name, or, in the case of type gradient, may be
either vertical or horizontal.
Arg=val is a list of arguments to the converter. An argument list is
preceded by a question mark, and multiple arguments are separated by
ampersands. The most common arguments are foreground and background.
Gradients also support the arguments start and end (colors with which
to start and end the gradient); the steps argument, to allow using less
colors; and the dimension argument to specify the size of the gradi-
ent. The xpm converter understands the closeness argument, which
aids in using fewer colors (useful if you have a limited colormap).
TEXT WIDGET
Most of the changes to this version of the Xaw library were done in the
TextWidget, TextSrcObject, TextSinkObject and related files.
A couple of highly visible changes in the Text widget are due to many
bugs in the Xaw6 implementation involving scrollbars and auto-resizing.
Scrollbars being added or removed caused several problems in keeping
the text cursor visible, and in Xaw6 it was very easy to have a widget
thinking the cursor was visible, when it was not. Also, permitting
automatic resizing of the widget to a larger geometry created other
problems, making it difficult to have a consistent layout in the appli-
cation, and, if the window manager did not interfere, windows larger
than the screen could result. Therefore, some functionality involving
scrollbars and auto-resizing has been disabled; see the section on new
and modified Text widget resources below.
The Text widget's default key bindings were originally based on the
Emacs text editor. In this release, even more operations familiar to
Emacs users have been added. New text actions include:
indent Indents text blocks. Not bound by default. The Text widget
also does not attempt to perform auto-indentation of its source
object by default.
keyboard-reset
Resets the keyboard state. Reverts the action multiplier to 1,
and if undo is enabled, toggles between undo and redo. Bound
by default to Control<Key>G.
kill-ring-yank
In this version of Xaw, text killed in any text field is kept
in memory, allowing cut and paste operations internally to the
program between text fields. Bound by default to Meta<Key>Y.
numeric Listed here only for purposes of documentation. Called by
default when one of the characters 1, 2, 3, 4, 5, 6, 7, 8, 9,
0, or - is typed, allowing composition of the multiplication
number of text actions.
set-keyboard-focus
Sets the input focus of the top level widget to the text field.
Not enabled by default, but bound to the <Btn1Down> event.
toggle-overwrite
Toggles overwrite mode. In overwrite mode, any text inserted
in a text field will replace existing text. Bound by default
to <Key>Insert.
undo Sets the enableUndo resource of the textSrcObject. Not enabled
by default, but bound to Control<Key>_.
New and modified Text widget resources include:
justify (Class Justify)
Sets the text justification. Can be one of left, right, cen-
ter, or full. Only enabled when the autoFill resource is set,
and the resources leftColumn and rightColumn are correctly set.
leftColumn (Class Column)
Specifies the left column at which to break text. Text lines
started with an alphanumeric character will automatically start
at this column.
positionCallback (Class Callback)
Allows installation of a callback to be called every time the
cursor is moved, and/or the file changes its size. The call-
back is called with a pointer to a structure containing the
following data:
typedef struct {
int line_number;
int column_number;
XawTextPosition insert_position;
XawTextPosition last_position;
Boolean overwrite_mode;
} XawTextPositionInfo;
This callback is intended to help programmers write text edi-
tors based on the Xaw widget set.
resize (Class Resize)
No longer supported, but recognized for backward compatibility
with resource specifications written for the Xaw6 Text widget.
rightColumn (Class Column)
Specifies the right column at which to break text. Text lines
started with an alphanumeric character will automatically end
at this column.
scrollHorizontal (Class Scroll)
scrollVertical (Class Scroll)
These resources control the placement of scrollbars on the left
and bottom edges of the Text widget. They accept the values
XawtextScrollAlways and XawtextScrollNever. A converter is
registered for this resource that will convert the following
strings: always and never. The value XawtextScrollWhenNeeded
(and whenNeeded, recognized by the converter), is accepted for
backwards compatibility with resource specifications written
for the Xaw6 Text widget, but ignored (effectively treated as
XawtextScrollNever).
TEXT SOURCE OBJECT
The textSrcObject allows display of its contents to more than one win-
dow, and also stores undo information. The new resources for the
textSrcObject are:
callback (Class Callback)
Previous versions of Xaw had this resource in subclasses of the
TextSource object. This was changed to make it possible to
tell the callback the state of the text when undo is enabled.
enableUndo (Class Undo)
A boolean resource that enables or disables the undo function.
The default value is False.
sourceChanged (Class Changed)
Like the callback resource, this resource was previously in
subclasses of the TextSource object. It is now in the textSr-
cObject to control the changed/unchanged state when undo is
enabled.
TEXT SINK OBJECT
The textSinkObject subclasses asciiSinkObject and multiSinkObject have
been changed slightly to use a new cursor shape (no longer a caret at
the baseline) that indicates the input focus of the text widget, and
allow specification of the cursor color. The new resource is:
cursorColor (Class Color)
Sets the cursor color of the text. This color is also used to
draw selected text.
SIMPLE MENU WIDGET
The simpleMenuWidget algorithm to lay out menu entries has been changed
to enable multiple columns when a single column does not fit on the
screen. It was also modified to enable submenus.
SME BSB OBJECT
A new resource has been added to the smeBSBObject to allow binding sub-
menus to it. The new resource is:
menuName (Class MenuName)
Specifies the name of the popup widget to be popped up when the
pointer is over the menu entry, or NULL. Note that the named
menu must be a child of the popup parent of the smeBSBObject.
RESTRICTIONS
Xaw is actively being developed. Programs intending to be fully com-
patible with future releases of the Xaw library should use only the
public interfaces. While widget subclassification is not a bad thing,
and sometimes an encouraged programming practice, programs that access
private data structures may have problems with newer releases in the
current stage of Xaw development. Efforts are being made to avoid such
problems and to guarantee that newer releases will be source and binary
compatible.
AUTHORS
The original X Consortium version of the Athena Widget Set and its doc-
umentation were the work of many people, including Chris D. Peterson,
Ralph Swick, Mark Ackerman, Donna Converse, Jim Fulton, Loretta Guar-
ino-Reid, Charles Haynes, Rich Hyde, Mary Larson, Joel McCormack, Ron
Newman, Jeanne Rich, Terry Weissman, Mike Gancarz, Phil Karlton, Kath-
leen Langone, Ram Rao, Smokey Wallace, Al Mento, and Jean Diaz.
The additions and modifications to Xaw which were originally made for
XFree86 were written by Paulo Csar Pereira de Andrade.
SEE ALSO
Athena Widget Set - C Language Interface
X Version 11 libXaw 1.0.3 Xaw(3)
Man(1) output converted with
man2html