Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
XmtLayout(3)		   Library Functions Manual		  XmtLayout(3)

NAME
       XmtLayout - a general-purpose manager widget.

SYNOPSIS
       Include File:
	      #include _Xmt/Layout.h_

       Constructor:
	      XmtCreateLayout()

       Class Name:
	      XmtLayout

       Class Pointer:
	      xmtLayoutWidgetClass

       Class Hierarchy:
	      Core  -> Composite -> Constraint -> XmManager -> XmBulletinBoard
	      -> XmtLayout

DESCRIPTION
       The XmtLayout widget is a general-purpose manager widget.  It uses con-
       straint	resources to provide a dynamic interface for positioning chil-
       dren, and also parses a simple layout grammar which describes the  wid-
       get layout with a single	string resource.

       Children	 of the	Layout widget are laid out in nested rows and columns,
       with specified amounts of blank space between them. All	children  (in-
       cluding	rows  and  columns), and the space between the children	have a
       ``stretchiness''	factor that specifies how much	each  child  or	 space
       will  grow  when	 the widget is resized.	This is	a fully	general	layout
       scheme, derived from the	TeX ``boxes-and-glue'' text layout  algorithm.
       It is as	powerful and flexible as the ``attachment'' scheme used	by the
       XmForm widget, for example, but easier to understand, and  through  the
       layout grammar, far easier to specify.

       The  Layout  widget provides some features beyond simple	layout of wid-
       gets. It	will draw a frame around any of	its children, will draw	a sep-
       arator running along any	edge of	any child, and can also	display	a text
       caption for each	of its children. Since the  Layout  widget  does  this
       drawing	itself,	 the overhead of the XmFrame, XmSeparator, and XmLabel
       widgets that would otherwise be needed is avoided.  The	Layout	widget
       also  supports special gadget children that display text	and pixmap la-
       bels. These gadgets are cheaper than widgets, and are even cheaper than
       the Motif XmGadget types.

       Finally,	the Layout widget allows the sizes of its children to be spec-
       ified in	resolution-independent units. The static layout	grammar	allows
       sizes  to  be directly specified	in inches, millimeters,	points,	ems or
       ens, and	a public function exists to convert from these units to	pixels
       for dynamic layouts.

       RESOURCES

       Layout inherits the resources of	the XmBulletinBoard class, and defines
       or overrides the	following resources:

       +-------------------+------------------------+--------------------+--------+----------------+
       |Name		   | Type		    | Class		 | Access | Default	   |
       +-------------------+------------------------+--------------------+--------+----------------+
       |XmtNdebugLayout	   | XtRBoolean		    | XmtCDebugLayout	 | CSG	  | False	   |
       +-------------------+------------------------+--------------------+--------+----------------+
       |XmtNdefaultSpacing | XtRDimension	    | XmtCDefaultSpacing | CSG	  | 10		   |
       +-------------------+------------------------+--------------------+--------+----------------+
       |XmtNfont	   | XtRFontStruct	    | XtCFont		 | CSG	  | XtDefaultFont  |
       +-------------------+------------------------+--------------------+--------+----------------+
       |XmtNfontList	   | XmRFontList	    | XmCFontList	 | CSG	  | NULL	   |
       +-------------------+------------------------+--------------------+--------+----------------+
       |XmtNlayout	   | XtRString		    | XmtCLayout	 | C	  | NULL	   |
       +-------------------+------------------------+--------------------+--------+----------------+
       |XmNmarginHeight	   | XmRVerticalDimension   | XmCMarginHeight	 | CSG	  | 5		   |
       +-------------------+------------------------+--------------------+--------+----------------+
       |XmNmarginWidth	   | XmRHorizontalDimension | XmCMarginWidth	 | CSG	  | 5		   |
       +-------------------+------------------------+--------------------+--------+----------------+
       |XmtNorientation	   | XmROrientation	    | XmCOrientation	 | CG	  | XmVERTICAL	   |
       +-------------------+------------------------+--------------------+--------+----------------+
       XmtNdebugLayout
	      If True, the Layout widget will draw  a  one  pixel  wide	 frame
	      around each of its children, including spaces, rows and columns.
	      This makes it easy to see	which nested row or column each	 child
	      is positioned in,	and can	help when debugging layouts. When this
	      resource is set, XmtNlayoutFrameType and the  other  frame  con-
	      straint resources, described below, are ignored.

       XmtNdefaultSpacing
	      The  width  or height, in	pixels,	of the fixed-size, nonstretch-
	      able space specified in the layout grammar with the `#'  charac-
	      ter. This	value is not directly used by the Layout widget	or the
	      XmtLayoutSpace gadget.

       XmtNfont
	      An XFontStruct pointer used to set the XmtNfontList resource  if
	      it  is left unspecified. This resource is	provided because it is
	      sometimes	more convenient	to specify an Xlib XFontStruct than  a
	      Motif XmFontList.

       XmtNfontList
	      The  XmFontList  that  is	 be used by all	XmtLayoutString	gadget
	      children and may also be used other  XmtLayout  Gadget  children
	      that  draw  text.	 If this resource is unspecified, the XmtNfont
	      resource will be used to create an XmFontList instead.

       XmtNlayout
	      A	string that specifies a	static layout for the children of  the
	      Layout  widget. In order for this	resource to work, the applica-
	      tion programmer must register the	layout grammar parser by call-
	      ing  XmtRegisterLayoutParser().  See the ``Layout	Grammar'' sec-
	      tion below for more information. This  resource  should  be  set
	      when  the	 Layout	 widget	 is created, and may never be changed.
	      The Layout widget	parses this string once, without modifying it,
	      and  never  refers to it again. For this reason, the widget does
	      not make a copy of the string, which means  that	this  resource
	      should not be queried.

       XmNmarginHeight
	      The  height,  in pixels of the margin between the	top and	bottom
	      edges of the widget and the nearest child. This is an  XmBullet-
	      inBoard resource;	the Layout widget over rides the default value
	      to 5 pixels.

       XmNmarginWidth
	      The width, in pixels of the margin between the  left  and	 right
	      edges  of	the widget and the nearest child. This is an XmBullet-
	      inBoard resource;	the Layout widget over rides the default value
	      to 5 pixels.

       XmtNorientation
	      The  orientation	of  the	topmost	(automatically created)	row or
	      column of	the Layout widget. Children widgets that are  not  ex-
	      plicitly positioned in a row or column with constraint resources
	      will be placed in	this toplevel row or column. Legal values  are
	      XmVERTICAL  and XmHORIZONTAL. XmVERTICAL is the default, so that
	      the Layout widget	arranges its children in a column.   This  re-
	      source  may  be  set  when the Layout widget is created, but may
	      never be changed.

       Constraint RESOURCES The	Layout widget specifies	the layout and decora-
       tion  of	 its  children	through	constraint resources. Each of the con-
       straint resource	names begins with the prefix ``layout''	 in  order  to
       avoid  name  clashes  with  the resources of the	child widgets to which
       these constraints are applied.

       The Layout constraint resources are the following:

       +-------------------------------+----------------------------+--------------------------------+--------+------------------------+
       |Name			       | Type			    | Class			     | Access |	Default		       |
       +-------------------------------+----------------------------+--------------------------------+--------+------------------------+
       |XmtNlayoutAfter		       | XtRWidget		    | XmtCLayoutAfter		     | CSG    |	NULL		       |
       +-------------------------------+----------------------------+--------------------------------+--------+------------------------+
       |XmtNlayoutAllowResize	       | XtRBoolean		    | XmtCLayoutAllowResize	     | CSG    |	True		       |
       +-------------------------------+----------------------------+--------------------------------+--------+------------------------+
       |XmtNlayoutBefore	       | XtRWidget		    | XmtCLayoutBefore		     | CSG    |	NULL		       |
       +-------------------------------+----------------------------+--------------------------------+--------+------------------------+
       |XmtNlayoutCaption	       | XmRXmString		    | XmtCLayoutCaption		     | CSG    |	NULL		       |
       +-------------------------------+----------------------------+--------------------------------+--------+------------------------+
       |XmtNlayoutCaptionAlignment     | XmRAlignment		    | XmtCLayoutCaptionAlignment     | CSG    |	XmALIGNMENT_BEGINNING  |
       +-------------------------------+----------------------------+--------------------------------+--------+------------------------+
       |XmtNlayoutCaptionJustification | XmtRXmtLayout		    | XmtCLayoutCaptionJustification | CSG    |	XmtLayoutCentered      |
       +-------------------------------+----------------------------+--------------------------------+--------+------------------------+
       |XmtNlayoutCaptionMargin	       | XtRDimension		    | XmtCLayoutCaptionMargin	     | CSG    |	2		       |
       +-------------------------------+----------------------------+--------------------------------+--------+------------------------+
       |XmtNlayoutCaptionPosition      | XmtRXmtLayoutEdge	    | XmtCLayoutCaptionPosition	     | CSG    |	XmtLayoutLeft	       |
       +-------------------------------+----------------------------+--------------------------------+--------+------------------------+
       |XmtNlayoutFrameLineType	       | XmtRXmtLayoutFrameLineType | XmtCLayoutFrameLineType	     | CSG    |	XmtLayoutFrameEtchedIn |
       +-------------------------------+----------------------------+--------------------------------+--------+------------------------+
       |XmtNlayoutFrameMargin	       | XtRDimension		    | XmtCLayoutFrameMargin	     | CSG    |	5		       |
       +-------------------------------+----------------------------+--------------------------------+--------+------------------------+
       |XmtNlayoutFramePosition	       | XmtRXmtLayoutFramePosition | XmtCLayoutFramePosition	     | CSG    |	XmtLayoutFrameInside   |
       +-------------------------------+----------------------------+--------------------------------+--------+------------------------+
       |XmtNlayoutFrameThickness       | XtRDimension		    | XmtCLayoutFrameThickness	     | CSG    |	2		       |
       +-------------------------------+----------------------------+--------------------------------+--------+------------------------+
       |XmtNlayoutFrameType	       | XmRXmtLayoutFrameType	    | XmtCLayoutFrameType	     | CSG    |	XmtLayoutFrameNone     |
       +-------------------------------+----------------------------+--------------------------------+--------+------------------------+
       |XmtNlayoutHeight	       | XtRDimension		    | XmtCLayoutHeight		     | CSG    |	0		       |
       +-------------------------------+----------------------------+--------------------------------+--------+------------------------+
       |XmtNlayoutIn		       | XtRWidget		    | XmtCLayoutIn		     | CSG    |	NULL		       |
       +-------------------------------+----------------------------+--------------------------------+--------+------------------------+
       |XmtNlayoutJustification	       | XmtRXmtLayoutJustification | XmtCLayoutJustification	     | CSG    |	XmtLayoutFilled	       |
       +-------------------------------+----------------------------+--------------------------------+--------+------------------------+
       |XmtNlayoutMarginHeight	       | XtRDimension		    | XmtCLayoutMarginHeight	     | CSG    |	see below	       |
       +-------------------------------+----------------------------+--------------------------------+--------+------------------------+
       |XmtNlayoutMarginWidth	       | XtRDimension		    | XmtCLayoutMarginWidth	     | CSG    |	see below	       |
       +-------------------------------+----------------------------+--------------------------------+--------+------------------------+
       |XmtNlayoutPosition	       | XtRPosition		    | XmtCLayoutPosition	     | CSG    |	-1		       |
       +-------------------------------+----------------------------+--------------------------------+--------+------------------------+
       |XmtNlayoutSensitive	       | XtRBoolean		    | XmtCLayoutSensitive	     | CSG    |	True		       |
       +-------------------------------+----------------------------+--------------------------------+--------+------------------------+
       |XmtNlayoutShrinkability	       | XtRDimension		    | XmtCLayoutShrinkability	     | CSG    |	see below	       |
       +-------------------------------+----------------------------+--------------------------------+--------+------------------------+
       |XmtNlayoutStretchability       | XtRDimension		    | XmtCLayoutStretchability	     | CSG    |	see below	       |
       +-------------------------------+----------------------------+--------------------------------+--------+------------------------+
       |XmtNlayoutWidth		       | XtRDimension		    | XmtCLayoutWidth		     | CSG    |	0		       |
       +-------------------------------+----------------------------+--------------------------------+--------+------------------------+
       XmtNlayoutAfter
	      The widget directly after	which, in the same row or column, this
	      child  should  be	 laid out. Setting this	resource positions the
	      child in the Layout  widget  and	causes	the  XmtNlayoutBefore,
	      XmtNlayout In, and XmtNlayoutPosition constraint resources to be
	      updated to reflect the new position. If this resource is set, it
	      overrides	those other position resources.

       XmtNlayoutAllowResize
	      Whether  the Layout widget will attempt to grant resize requests
	      from children. If	False, any geometry request  from  this	 child
	      will be refused. The default is True.

       XmtNlayoutBefore
	      The  widget  directly  before  which, in the same	row or column,
	      this child should	be laid	out. Setting this  resource  positions
	      the  child  in the Layout	widget and causes the XmtNlayoutAfter,
	      XmtNlayoutIn, and	XmtNlayoutPosition constraint resources	to  be
	      updated  to  reflect  the	 new position. The XmtNlayoutAfter re-
	      source overrides this resource, if it is set, and	this  resource
	      overrides	the XmtNlayoutIn and XmtNlayoutPosition	resources.

       XmtNlayoutCaption
	      An  XmString  to	be displayed by	the Layout widget as a caption
	      for this child. This string is drawn entirely by the Layout wid-
	      get  without the need for	an XmLabel or any other	widget or gad-
	      get.

       XmtNlayoutCaptionAlignment
	      The alignment of lines within a multi-line  caption.   This  re-
	      source  is  of the same type as the XmNalignment resource	of the
	      XmLabel widget and has three legal values: XmALIGNMENT_BEGINNING
	      which  draws  the	 lines flush left with the bounding box	of the
	      whole string, XmALIGNMENT_CENTER,	which centers  the  individual
	      lines  within the	box, and XmALIGNMENT_END which draws the lines
	      flush right.  This resource only has effect when the caption has
	      more  than  one  line; it	controls the positioning of individual
	      lines relative to	the caption as a whole.	Do not confuse it with
	      the  XmtNlayoutCaptionJustification  resource which controls the
	      positioning of the entire	caption	relative to the	widget.

       XmtNlayoutCaptionJustification
	      The justification	of the caption along the edge specified	by the
	      XmtNlayoutCaptionPosition	 resource.  For	 captions placed along
	      the left or right	edges of the widget,  this  resource  controls
	      the  vertical  justification  of	the  caption, and for captions
	      placed along the top or bottom edges, it controls	the horizontal
	      justification. The values	XmtLayoutFlushLeft and XmtLayoutFlush-
	      Top are equivalent and both produce left	or  top	 justification
	      depending	upon the XmtNlayoutCaptionPosition resource. The value
	      XmtLayoutCentered	centers	the  caption  vertically  or  horizon-
	      tally, and the values XmtLayoutFlushRight	and XmtLayoutFlushBot-
	      tom produce right	or bottom justification.

       XmtNlayoutCaptionMargin
	      The distance, in pixels, between the closest edge	of the caption
	      and  the child widget, or	between	the caption and	the frame sur-
	      rounding the child widget.  To save space	 in  the  Layout  con-
	      straint  record, this resource is	stored in a unsigned character
	      field, and therefore has a maximum value of 255 pixels.

       XmtNlayoutCaptionPosition
	      The edge of the child widget along which the caption  should  be
	      displayed.  Legal	values are XmtLayoutLeft, XmtLayoutRight, Xmt-
	      LayoutTop, and XmtLayoutBottom.

       XmtNlayoutFrameLineType
	      The style	of line	to be used for the frame. The  values  XmtLay-
	      outFrameShadowIn,	      XmtLayoutFrameShadowOut,	    XmtLayout-
	      FrameEtchedIn, and  XmtLayoutFrameEtchedOut  draw	 the  standard
	      shadowed	and  etched  frames  supported	by the XmFrame widget.
	      XmtLayoutFrameSingleLine draws a single line in  the  foreground
	      color,  with its width specified by the XmtNlayoutFrameThickness
	      constraint.   XmtLayoutFrameDoubleLine  draws  two  single-pixel
	      wide lines, with a separation determined by the XmtNlayoutFrame-
	      Thickness	 constraint.  When  the	 XmtNlayoutFrameType  resource
	      specifies	 that  the  frame should be drawn as a separator along
	      only one edge of the widget,  the	 ``shadow  in''	 and  ``shadow
	      out'' types are drawn as ``etched	in'' and ``etched out''.

       XmtNlayoutFrameMargin
	      The distance, in pixels, between the inside of the frame and the
	      child widget, or the frame and the  caption,  if	a  caption  is
	      specified	and appears within the frame. For efficiency, this re-
	      source is	stored in an unsigned character	field  of  the	Layout
	      constraint record. This means that the maximum value of this re-
	      source is	255.

       XmtNlayoutFramePosition
	      How the frame should be positioned with respect to the  caption,
	      if  any,	of the child. The value	XmtLayoutFrameInside specifies
	      that the frame should be drawn inside of the  caption.  In  this
	      case,  the position of the caption may be	adjusted, depending on
	      its justification, so that it is flush with an outside  edge  of
	      the  frame  rather  than an edge of the child widget itself. The
	      value XmtLayoutFrameOutside specifies that the frame should sur-
	      round  both  the child widget and	its caption. The value XmtLay-
	      outFrameThrough specifies	that the frame and caption  should  be
	      drawn independently at the distances from	the child specified by
	      the  XmtNlayout  FrameMargin  and	 XmtNlayoutCaptionMargin  con-
	      straints.	 By  default,  this will cause the caption to be drawn
	      over a portion of	the frame, which produces an appealing	visual
	      effect with some line types.

       XmtNlayoutFrameThickness
	      The  line	 thickness  of the frame to be drawn. This resource is
	      stored in	an unsigned character field of the  Layout  constraint
	      record.  This  means that	the maximum value for this resource is
	      255.

       XmtNlayoutFrameType
	      The type of frame	to be drawn. The default value,	 XmtLayoutFra-
	      meNone specifies that no frame is	to be drawn. XmtLayoutFrameBox
	      specifies	that a traditional frame is  to	 be  drawn  as	a  box
	      around  the child. The remaining legal values for	this resource,
	      XmtLayoutFrameLeft, XmtLayoutFrameRight, XmtLayoutFrameTop,  and
	      XmtLayoutFrameBottom, specify that the frame is to be drawn only
	      along one	edge of	the widget. In this case, the frame serves  as
	      a	separator, like	those drawn by the Motif XmSeparator widget.

       XmtNlayoutHeight
	      The  preferred  height,  in pixels, of this child. If specified,
	      this is the initial height of the	child, and is the base	height
	      from  which  the	child will stretch or shrink. If set to	0, the
	      child's preferred	height will be used. Note that this size  does
	      not include any space required for the child's margins, caption,
	      or frame.

       XmtNlayoutIn
	      The row or column	gadget within which this child should be  laid
	      out.  Setting  this  constraint  resource,  in  conjunction with
	      XmtNlayoutPosition resource, positions the child in  the	Layout
	      widget  and  causes the XmtNlayoutAfter and XmtNlayoutBefore re-
	      sources to be set	to reflect the position.  The  XmtNlayoutAfter
	      and XmtNlayoutBefore resources override this resource, if	either
	      is set. If none of these resources are set, then the child  will
	      be  positioned  in the topmost row or column. The	orientation of
	      this topmost box is determined by	the Layout XmtNorientation re-
	      source.

       XmtNlayoutJustification
	      The  justification of this child within the width	of its column,
	      or within	the height of its row. This resource is	of  type  Xmt-
	      LayoutJustification which	is an enumerated type with the follow-
	      ing legal	values:	XmtLayoutFilled, XmtLayoutCentered, XmtLayout-
	      FlushLeft,  XmtLayoutFlushTop,  XmtLayoutFlushRight, and XmtLay-
	      outFlushBottom. The default is XmtLayoutFilled  which  specifies
	      that  the	child should be	as wide	as its containing column or as
	      high as its containing row. The other values indicate  that  the
	      child  should  be	laid out at its	natural	size against the left,
	      top, right, or bottom edges of the containing row	or column,  or
	      centered within its containing row or column. Note that this re-
	      source only positions child widgets within  the  ``minor	dimen-
	      sion''  of  a row	or column-vertically in	a row and horizontally
	      in a column.

       XmtNlayoutMarginHeight
	      The height, in pixels, of	a margin to be placed above and	 below
	      the  child  widget.  This	margin falls outside of	any caption or
	      frame that the child might have. For memory efficiency, this re-
	      source  is  stored in an unsigned	character field, and therefore
	      has a maximum value of 255. The default margin for most children
	      is  one-half of the space	size specified by the XmtNdefaultSpac-
	      ing resource of the Layout widget	itself,	but the	default	margin
	      for  rows	 and  columns is 0, so that children positioned	within
	      nested rows and columns do not  become  nested  within  multiple
	      margins.

       XmtNlayoutMarginWidth
	      The  width,  in pixels, of a margin to be	placed to the left and
	      to the right of the child	widget.	 This margin falls outside  of
	      any caption or frame that	the child might	have. For memory effi-
	      ciency, this resource is stored in an unsigned character	field,
	      and  therefore  has  a maximum value of 255.  The	default	margin
	      for most children	is one-half of the space size specified	by the
	      XmtNdefaultSpacing resource of the Layout	widget itself, but the
	      default margin for rows and columns is 0,	so that	children posi-
	      tioned  within  nested  rows  and	 columns  do not become	nested
	      within multiple margins.

       XmtNlayoutPosition
	      The numerical position within the	containing row	or  column  at
	      which  this  child  should be laid out.  Setting this constraint
	      resource,	in conjunction with XmtNlayoutIn  resource,  positions
	      the  child  in  the Layout widget	and causes the XmtNlayoutAfter
	      and XmtNlayoutBefore resources to	be set to reflect  that	 posi-
	      tion.  The  XmtNlayoutAfter and XmtNlayoutBefore resources over-
	      ride this	resource, if either is set. The	position  0  specifies
	      that  the	child is to be the first in the	row or column, and the
	      special value -1 (the default) specifies that it is  to  be  the
	      last.  The defaults for the positioning constraint resources are
	      chosen so	that children will be positioned by default at the end
	      of the topmost (automatically created) row or column.

       XmtNlayoutSensitive
	      Specifies	 whether the child is sensitive	or not.	 If False, the
	      child's caption, if any, will be drawn  ``greyed	out''  with  a
	      stipple.	Generally,  if	a child	has a caption, this constraint
	      resource should be set whenever a	widget's XtNsensitive resource
	      is set either directly or	with XtSetSensitive().	The XmtChooser
	      and XmtInputField	wid gets are often used	with  a	 caption,  and
	      automatically  set this resource whenever	their XtNsensitive re-
	      source changes.

       XmtNlayoutShrinkability
	      The ``shrinkability factor''  for	 this  child,  which  controls
	      whether,	and  in	 what proportion to other children, this child
	      will shrink when the parent Layout widget	is made	 smaller  than
	      its  default  size. The default value is 10 for all widgets, Xm-
	      Gadgets, rows, columns, and XmtLayoutSpace gadgets.  For	Layout
	      string, pixmap, and separator gadgets, the default is 0.

       XmtNlayoutStretchability
	      The  ``stretchability  factor''  for  this child,	which controls
	      whether, and in what proportion to other	children,  this	 child
	      will  stretch  when the parent Layout widget is made larger than
	      its default size.	 The default value is 10 for all widgets,  Xm-
	      Gadgets,	rows,  columns,	and XmtLayoutSpace gadgets. For	Layout
	      string, pixmap, and separator gadgets, the default is 0.

       XmtNlayoutWidth
	      The preferred width, in pixels, of  this	child.	If  specified,
	      this  is the initial width of the	child, and the base width from
	      which the	child will stretch  or	shrink.	 If  unspecified,  the
	      child's  preferred  width	will be	used. Note that	this size does
	      not include any space required for the child's margins, caption,
	      or frame.

       Row and Column Resources

       The  Layout  widget arranges its	children into nested rows and columns.
       These rows and columns are themselves children of  the  Layout  widget,
       implemented as a	special	gadget type, the XmtLayoutBox. The Layout wid-
       get and the XmtLayoutBox	gadget work together closely, and much of  the
       important  layout  functionality	of the Layout widget is	in fact	imple-
       mented by the XmtLayoutBox. Because the XmtLayoutBox is so important to
       the  layout  process, its resources are summarized here.	You can	find a
       more complete listing in	the XmtLayoutBox reference page.

       +-----------------+------------------------+------------------+--------+--------------------+
       |Name		 | Type			  | Class	     | Access |	Default		   |
       +-----------------+------------------------+------------------+--------+--------------------+
       |XmtNbackground	 | XtRPixel		  | XtCBackground    | CSG    |	unspecified	   |
       +-----------------+------------------------+------------------+--------+--------------------+
       |XmtNequal	 | XtRBoolean		  | XmtCEqual	     | CSG    |	(XtPointer)False   |
       +-----------------+------------------------+------------------+--------+--------------------+
       |XmtNitemStretch	 | XtRDimension		  | XmtCItemStretch  | CSG    |	1		   |
       +-----------------+------------------------+------------------+--------+--------------------+
       |XmtNorientation	 | XmROrientation	  | XmCOrientation   | CSG    |	XmHORIZONTAL	   |
       +-----------------+------------------------+------------------+--------+--------------------+
       |XmtNspace	 | XtRDimension		  | XmtCSpace	     | CSG    |	0		   |
       +-----------------+------------------------+------------------+--------+--------------------+
       |XmtNspaceStretch | XtRDimension		  | XmtCSpaceStretch | CSG    |	1		   |
       +-----------------+------------------------+------------------+--------+--------------------+
       |XmtNspaceType	 | XmtRXmtLayoutSpaceType | XmtCSpaceType    | CSG    |	XmtLayoutSpaceNone |
       +-----------------+------------------------+------------------+--------+--------------------+

       Layout Grammar

       The XmtNlayout resource is a string which specifies the layout  of  the
       Widget  and  XmGadget  children	of  the	XmtLayout widget, and may also
       specify XmtLayoutGadget	children  to  be  automatically	 created.  The
       string  is  a  list  of items that appear in the	toplevel row or	column
       (its orientation	is determined by the XmtNorientation resource).	 These
       items may include nested	rows or	columns	which have a list of their own
       items within curly braces. Any item may have a list of modifiers	 which
       specify	size,  stretchability, justification, captions,	frames,	and so
       on.

       Rows, columns, and other	layout gadgets are  automatically  created  as
       the  layout  specification is parsed. Widgets and XmGadget items	can be
       specified by name in the	layout string. When an item  name  is  encoun-
       tered  without  any  type,  it is assumed to be a widget	or gadget that
       will be created later. The XmtLayout widget remembers the position  and
       modifiers  specified for	this widget, and applies them when a widget by
       that name is eventually created.

       The XmtLayout widget does not link the parser for this  layout  grammar
       by  default.  If	 you  specify a	value for the XmtNlayout resource, you
       should also register the	parser by  calling  XmtRegisterLayoutParser().
       If  an  application  never calls	this function, that code will never be
       linked.	This means that	statically linked applications that do not use
       the parser do not pay the overhead of the parser	code.

       The  layout  grammar  was designed to be	easily readable	and intuitive.
       Chapter 18, The Layout Widget: A	Tutorial, provides an  extended	 tuto-
       rial  on	 using the grammar, and	Chapter	19, The	Layout Widget: The De-
       tails, contains an annotated definition of the  grammar	that  explains
       the semantics as	well as	the syntax.

       For  reference,	the  layout  grammar  is summarized in BNF form	below.
       Items within single quotes are terminal symbols of the grammar-keywords
       or punctuation that should appear exactly as shown.    Items in italics
       are non-terminals-items that are	defined	elsewhere in the  grammar,  or
       which  are  implicitly  defined.	Items within curly braces are repeated
       zero or more times and items within square brackets are optional.  When
       a  non-terminal	has  more  than	one possible definition, they are pre-
       sented on separate lines, or are	separated by vertical bars.

       Note that the grammar is	case-sensitive and that	 almost	 all  keywords
       begin with a capital letter. This means that keywords will not conflict
       with widget names which,	by convention, begin with a lowercase letter.

	    layout::
		   { { modifier	} item }

	    item:: widget | box	| label	| icon | separator | space

	    widget::
		   identifier
		   registered-widget-type identifier

	    box::  `Row' [ name	] `{' layout `}'
		   `Col' [ name	] `{' layout `}'

	    label::
		   string
		   `String' [ name ] string

	    icon:: `Pixmap' [ name ] pixmap-name [ `,' mask name ]
		   `Bitmap' [ name ] bitmap-name [ `,' mask name ]

	    separator::
		   `VSep' | `|'
		   `HSep' | `='

	    space::
		   `Space' | `#'{`#'} |	`~'{`~'} | `<>'

	    |modifier::
		   caption | frame | spacing | justification | size | resize |
		   margin | misc

	    caption::
		   `Caption' [edge[just[align]]] [ margin ] string

	    edge:: `l' | `r' | `t' | `b'

	    just:: `l' | `r' | `t' | `b' | `c'

	    align::
		   `l' | `r' | `c'

	    margin::
		   integer

	    frame::

		   `Etched[`In']      [edge ] [	position ] [ margin [ thickness	]]
		   `Etched Out'	      [edge ] [	position ] [ margin [ thickness	]]
		   `Shadowed'[`In']   [edge ] [	position ] [ margin [ thickness	]]
		   `Shadowed Out'     [edge ] [	position ] [ margin [ thickness	]]
		   `Boxed'	      [edge ] [	position ] [ margin [ thickness	]]
		   `DoubleBoxed'      [edge ] [	position ] [ margin [ thickness	]]
		   `DoubleLine'	      [edge ] [	position ] [ margin [ thickness	]]

	    edge:: `Left' | `Right' | `Top' | `Bottom'

	    position::
		   `Inside' | `Outside'	| `Through'

	    margin::
		   integer

	    thickness::
		   integer

	    spacing::

		   `Equal'

		   `Even'	      [	space ]	[ `+' space_stretch [ `/' item_stretch ] ]
		   `EvenSpaced'	      [	space ]	[ `+' space_stretch [ `/' item_stretch ] ]
		   `LREvenSpaced'     [	`+' space_stretch [ `/'	item_stretch ] ]
		   `LCRSpaced'	      [	space ]	[ `+' space_stretch [ `/' item_stretch ] ]
		   `IntervalSpaced'   [	`+' space_stretch [ `/'	item_stretch ] ]

	    space::
		   integer-or-float [ units ]

	    space_stretch::
		   integer

	    item_stretch::
		   integer

	    justification::
		   |`Filled' | `FlushLeft' | `FlushTop'	| `FlushRight' |
		   `FlushBottom' | `Centered'

	    size:: integer-or-float [ units ]
		   integer-or-float [ units ] `Wide'
		   integer-or-float [ units ] `High'
		   integer-or-float [ units ] `%' integer-or-float [ units ]

	    resize::
		   `Fixed' | `Stretchable'
		   `+' integer
		   `-' integer

	    margin::
		   `Margin' integer
		   `Margin Width' integer
		   `Margin Height' integer

	    misc:: `Color' string
		   `Unresizable'
		   `Unmanaged'

	    name:: identifier

	    units::
		   `in'	| `mm' | `pt' |	`em' | `en'

       TRANSLATIONS and	ACTIONS

       The Layout widget inherits the translations of the Xm BulletinBoard
       class which serve mainly	to allow traversal to work for XmGadget
       children	of the widget. The Layout widget does not define any new
       translations, nor any new actions.

       CALLBACKS

       The Layout widget does not define any new callback resources.

       Types

       A number	of the Layout widget and XmtLayoutBox gadget resources and
       constraint resources use	enumerated types.  These types are defined as
       follows in the header file _Xmt/Layout.h_.

	    typedef enum {
		 XmtLayoutFilled,
		 XmtLayoutFlushLeft,
		 XmtLayoutFlushTop,
		 XmtLayoutFlushRight,
		 XmtLayoutFlushBottom,
		 XmtLayoutCentered
	    } XmtLayoutJustification;

	    typedef enum {
		 XmtLayoutTop,
		 XmtLayoutBottom,
		 XmtLayoutLeft,
		 XmtLayoutRight
	    } XmtLayoutEdge;

	    typedef enum {
		 XmtLayoutFrameNone,
		 XmtLayoutFrameBox,
		 XmtLayoutFrameLeft,
		 XmtLayoutFrameRight,
		 XmtLayoutFrameTop,
		 XmtLayoutFrameBottom
	    } XmtLayoutFrameType;

	    typedef enum {
		 XmtLayoutFrameShadowIn,
		 XmtLayoutFrameShadowOut,
		 XmtLayoutFrameEtchedIn,
		 XmtLayoutFrameEtchedOut,
		 XmtLayoutFrameSingleLine,
		 XmtLayoutFrameDoubleLine,
	    } XmtLayoutFrameLineType;

	    typedef enum {
		 XmtLayoutFrameInside,
		 XmtLayoutFrameThrough,
		 XmtLayoutFrameOutside
	    } XmtLayoutFramePosition;

	    typedef enum {
		 XmtLayoutSpaceNone,
		 XmtLayoutSpaceEven,
		 XmtLayoutSpaceLREven,
		 XmtLayoutSpaceInterval,
		 XmtLayoutSpaceLCR
	    } XmtLayoutSpaceType;

	    Converters

	    The	Layout widget registers	type converters	for all	of the
	    enumerated types it	uses: XmtLayoutJustification, XmtLayoutEdge,
	    XmtLayoutFrameLineType, XmtLayoutFrameType,
	    XmtLayoutFramePosition, and	XmtLayoutSpaceType. The	converters are
	    all	case-sensitive;	the value must appear in a resource file as it
	    would in a C file, except that any of the repeated prefixes	may be
	    omitted. Thus the following	strings	can all	be converted to	the
	    value XmtLayoutFrame EtchedIn: ``XmtLayoutFrameEtchedIn'',
	    ``LayoutFrameEtchedIn'', ``FrameEtchedIn'',	and ``EtchedIn''.
	    See	the ``Types'' section above for	a complete list	of enumerated
	    types and values used by the Layout	widget.

	    The	XmtNlayout resource is of type XtRString, so the layout
	    grammar specified on this resource does not	need a resource
	    converter to convert it into some internal type.  Instead, the
	    Layout widget parses this string to	create the layout. This
	    ``layout parser'' is similar to a resource converter, but is not
	    the	same thing.

SEE ALSO
       Chapter 18, The Layout Widget: A	Tutorial, Chapter 19, The Layout
       Widget: The Details, XmtCreateLayout(), XmtCreateLayoutCol(),
       XmtCreateLayoutRow(), XmtLayoutBox, XmtLayoutConvertSizeToPixels(),
       XmtLayoutDisableLayout(), XmtLayoutEnableLayout(), XmtLayoutPixmap,
       XmtLayoutSeparator, XmtLayoutSpace, XmtLayoutString,
       XmtRegisterLayoutParser(), XmtRegisterLayoutCreateMethod().

Xmt				  Motif	Tools			  XmtLayout(3)

NAME | SYNOPSIS | DESCRIPTION | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=XmtLayout&sektion=3&manpath=FreeBSD+12.0-RELEASE+and+Ports>

home | help