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
   modifications  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).

   The bulk of the Xaw documentation is located in the  API  specification
   which  may  be installed in /usr/share/doc/libxaw7-dev, or found on the
   X.Org website.

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
   button:

   <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
   syntax:

   [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
           CapNotLast, CapBut, CapRound  or  CapProjecting,  respectively.
           Example:
           cap-style round

   clip-mask pixmap-spec
           Sets   the  pixmap  for  the  clip  mask.   Requires  a  pixmap
           parameter, 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
           coordinates.  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
           CoordModePrevious, respectively.  Example:
           coord-mode previous

   copy-area {pixmap-spec|.},dstx,dsty[,x2,y2,srcx,srcy]
           Calls  XCopyArea.   The  character  .  means  copy  the  window
           contents; 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
           contents; 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".
           Example:
           exposures true

   fill-arc x1,y1,x2,y2[,start-angle,end-angle]
           Like draw-arc, but fills the  contents  of  the  arc  with  the
           currently 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
           WindingRule, 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.
           Example:
           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",
           "copyinverted" 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
           complex 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,
           respectively).  If the pixmap has a mask, the  copy  is  masked
           accordingly.  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",
           "onoffdash"  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
           supplied.  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
           subwindow   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
   several 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
   gradient.     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
   application, 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,
           center,  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
           callback 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
           editors 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
   window,  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
           textSrcObject  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
   submenus 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.

AUTHORS

   The  original  X  Consortium  version  of the Athena Widget Set and its
   documentation  were  the  work  of  many  people,  including  Chris  D.
   Peterson,  Ralph  Swick,  Mark  Ackerman,  Donna  Converse, Jim Fulton,
   Loretta Guarino-Reid, Charles Haynes,  Rich  Hyde,  Mary  Larson,  Joel
   McCormack,  Ron Newman, Jeanne Rich, Terry Weissman, Mike Gancarz, Phil
   Karlton, Kathleen 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





Opportunity


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.





Free Software


Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.


Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.





Free Books


The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.


Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.





Education


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.


Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.