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	tutor-
       ial 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)

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

home | help