Provided by: tix-dev_8.4.3-10_amd64 bug

NAME

       tixForm - Geometry manager based on attachment rules

SYNOPSIS

       tixForm option arg ?arg ...?

DESCRIPTION

       The  tixForm  command is used to communicate with the tixForm Geometry Manager, a geometry
       manager that arranges the geometry of  the  children  in  a  parent  window  according  to
       attachment  rules.  The  tixForm geometry manager is very flexible and powerful; it can be
       used to emulate all the existing features of the Tk packer and  placer  geometry  managers
       (see  pack(n), place(n)).  The tixForm command can have any of several forms, depending on
       the option argument:

       tixForm slave ?options?
              If the first argument to tixForm is a window name (any value starting with  ``.''),
              then the command is processed in the same way as tixForm configure.

       tixForm check master
              This  command checks whether there is circular dependency in the attachments of the
              master's slaves (see the section CIRCULAR DEPENDENCY below). It returns the Boolean
              value TRUE if it discover circular dependency and FALSE otherwise.

       tixForm configure slave ?-option value ...?
              Sets  or adjusts the attachment values of the slave window according to the -option
              value argument pairs.

              -b attachment
                     Abbreviation for the -bottom option.

              -bottom attachment
                     Specifies an attachment for  the  bottom  edge  of  the  slave  window.  The
                     attachment  must  specied  according  to  the section SPECIFYING ATTACHMENTS
                     below.

              -bottomspring weight
                     Specifies the weight of the spring at the bottom edge of the  slave  window.
                     See the section USING SPRINGS below.

              -bp value
                     Abbreviation for the -padbottom option.

              -bs weight
                     Abbreviation for the -bottomspring option.

              -fill master
                     Specifies the fillings when springs are used for this widget. The value must
                     be x, y, both or none.

              -in master
                     Places the slave window into the specified master window. If the  slave  was
                     originally  in  another master window, all attachment values with respect to
                     the original master window are discarded. Even if the attachment values  are
                     the  same as in the original master window, they need to be specified again.
                     The -in flag, when needed, must appear as the first flag after the  name  of
                     the slave. Otherwise an error is generated.

              -l attachment
                     Abbreviation for the -left option.

              -left attachment
                     Specifies  an  attachment  for  the  left  edge  of  the  slave  window. The
                     attachment must specied according  to  the  section  SPECIFYING  ATTACHMENTS
                     below.

              -leftspring weight
                     Specifies the weight of the spring at the left edge of the slave window. See
                     the section USING SPRINGS below.

              -lp value
                     Abbreviation for the -padleft option.

              -ls weight
                     Abbreviation for the -leftspring option.

              -padbottom value
                     Specifies the amount of external padding to leave on the bottom side of  the
                     slave. The value may have any of the forms acceptable to Tk_GetPixels(3).

              -padleft value
                     Specifies  the  amount  of external padding to leave on the left side of the
                     slave.

              -padright value
                     Specifies the amount of external padding to leave on the right side  of  the
                     slave.

              -padtop value
                     Specifies  the  amount  of  external padding to leave on the top side of the
                     slave.

              -padx value
                     Specifies the amount of external padding to leave on both the left  and  the
                     right sides of the slave.

              -pady value
                     Specifies  the  amount  of external padding to leave on both the top and the
                     bottom sides of the slave.

              -r attachment
                     Abbreviation for the -right option.

              -right attachment
                     Specifies an attachment  for  the  right  edge  of  the  slave  window.  The
                     attachment  must  specied  according  to  the section SPECIFYING ATTACHMENTS
                     below.

              -rightspring weight
                     Specifies the weight of the spring at the right edge of  the  slave  window.
                     See the section USING SPRINGS below.

              -rp value
                     Abbreviation for the -padright option.

              -rs weight
                     Abbreviation for the -rightspring option.

              -t attachment
                     Abbreviation for the -top option.

              -top attachment
                     Specifies an attachment for the top edge of the slave window. The attachment
                     must specied according to the section SPECIFYING ATTACHMENTS below.

              -topspring weight
                     Specifies the weight of the spring at the top edge of the slave window.  See
                     the section USING SPRINGS below.

              -tp value
                     Abbreviation for the -padtop option.

              -ts weight
                     Abbreviation for the -topspring option.

       tixForm forget slave ?slave ...?
              Removes  each  of  the slaves from its master and unmaps their windows.  The slaves
              will no longer be managed by tixForm. All attachment values with respect  to  their
              master  windows are discarded. If another slave is attached to this slave, then the
              attachment of the other slave will be changed  to  grid  attachment  based  on  its
              geometry.

       tixForm grid master ?x_size y_size?
              When  x_size  and y_size are given, this command returns the number of grids of the
              master window in a pair of integers of the form {x_size y_size}. When  both  x_size
              and  y_size  are  given, this command changes the number of horizontal and vertical
              grids on the master window.

       tixForm info slave ?option?
              Queries the attachment options of a slave window. option can be any of the  options
              accepted  by  the  tixForm configure command. If option is given, only the value of
              that option is returned.  Otherwise, this command returns a list whose elements are
              the  current  configuration  state of the slave given in the same option-value form
              that might be specified to tixForm configure. The first two elements in  this  list
              list are "-in master" where master is the slave's master window.

       tixForm slaves master
              Returns  a list of all of the slaves for the master window. The order of the slaves
              in the list is the same as their order in the  packing  order.  If  master  has  no
              slaves then an empty string is returned.

SPECIFYING ATTACHMENTS

       One  can  specify  an  attachment  for  each side of a slave window managed by tixForm. An
       attachment is specified in the the form "-side {anchor_point offset}". -side can be one of
       -top, -bottom, -left or -right.

       Offset  is  given  in  screen units (i.e. any of the forms acceptable to Tk_GetPixels).  A
       positive offset indicates shifting to a position to the  right  or  bottom  of  an  anchor
       point.  A negative offset indicates shifting to a position to the left or top of an anchor
       point.

       Anchor_point can be given in one of the following forms:

              Grid Attachment
                     The master window is divided into a number of horizontal and vertical grids.
                     By  default  the  master window is divided into 100x100 grids; the number of
                     grids can be adjusted by the tixForm grid command. A grid attachment  anchor
                     point  is  given  by  a % sign followed by an integer value. For example, %0
                     spceifies the first grid line (the top or left edge of the  master  window).
                     %100  spceifies  the  last grid line (the bottom or right edge of the master
                     window).

              Opposite Side Attachment
                     Opposite attachment specifies an anchor point located on the  opposite  side
                     of another slave widget, which must be managed by tixForm in the same master
                     window. An opposite attachment anchor point is given by the name of  another
                     widget.  For  example, "tixForm .b -top {.a 0}" attaches the top side of the
                     widget .b to the bottom of the widget .a.

              Parallel Side Attachment
                     Opposite attachment specifies an anchor point located on the  same  side  of
                     another  slave  widget,  which must be managed by tixForm in the same master
                     window. An parallel attachment anchor point is given by the sign  &  follwed
                     by  the  name  of  another  widget.   For example, "tixForm .b -top {&.a 0}"
                     attaches the top side of the widget .b to the top of the widget  .a,  making
                     the  top  sides  of these two widgets at the same vertical position in their
                     parent window.

              No Attachment
                     Specifies a side of the slave to be attached to nothing,  indicated  by  the
                     keyword none. When the none anchor point is given, the offser must be zero.

                     When a side of a slave is attached to {none 0}, the position of this side is
                     calculated by the position of the other side and the  natural  size  of  the
                     slave.  For example, if a the left side of a widget is attached to {%0 100},
                     its right side attached to {none 0}, and the natural size of the  widget  is
                     50  pixels,  the  right  side  of the widget will be positioned at pixel {%0
                     149}.

                     When both -top and -bottom are attached to none, then by default  -top  will
                     be attached to {%0 0}. When both -left and -right are attached to none, then
                     by default -left will be attached to {%0 0}.

       Shifting effects can be achieved by specifying a non-zero offset with an anchor point.  In
       the following example, the top side of widget .b is attached to the bottom of .a; hence .b
       always appears below .a.  Also, the left edge of .b is attached to the  left  side  of  .a
       with a 10 pixel offest.  Therefore, the left edge of .b is always shifted 10 pixels to the
       right of .a's left edge:

       tixForm .b -left {.a 10} -top {.a 0}

       ABBREVIATIONS: Certain abbreviations can be made on the attachment  specifications:  First
       an offset of zero can be omitted.  Thus, the following two lines are equivalent:

       tixForm .b -top {.a 0} -right {%100 0} tixForm .b -top {.a}   -right {%100}

       Also,  because  of the way TCL handles lists, when you omit the offset, you can also leave
       out the braces. So you can further simplify the above to:

       tixForm .b -top .a -right %100

       In the second case, when the anchor point is omitted, the offset must be given. A  default
       anchor  point  is chosen according to the value of the offset. If the anchor point is 0 or
       positive, the default anchor point %0 is used; thus, "tixForm .b -top 15" attaches the top
       edge  of .b to a position 15 pixels below the top edge of the master window. If the anchor
       point is "-0" or negative, the default anchor point %100 is used; thus, "tixForm .a -right
       -2"  attaches  the  right  edge  of  .a  to  a position 2 pixels to the left of the master
       window's right edge.  An further  example  below  shows  a  command  with  its  equivalent
       abbreviation.  tixForm .b -top {%0 10} -bottom {%100 0} tixForm .b -top 10      -bottom -0

USING SPRINGS

       To be written.

ALGORITHM OF TIXFORM

       TixForm starts with any slave in the list of slaves of the master window. Then it tries to
       determine the position of each side of the slave.

       If the attachment of a side of the slave is grid attachment, the position of the  side  is
       readily determined.

       If  the  attachment  of this side is none, then tixForm tries to determine the position of
       the opposite side first, and then use the position of the opposite side  and  the  natural
       size of the slave to determine the position of this side.

       If  the  attachment  is  opposite  or  parallel  widget attachments, then tixForm tries to
       determine the positions of the other widget first, and then use the positions of the other
       widget  and  the  natural  size  of  the  slave  determine the position of this side. This
       recursive algorithmis carried on until the positions of all slaves are determined.

CIRCULAR DEPENDENCY

       The algorithm of tixForm will fail if a circular dependency exists in the  attachments  of
       the slaves. For example:

       tixForm .c -left .b tixForm .b -right .c

       In  this  example,  the  position  of the left side of .b depends on the right side of .c,
       which in turn depends on the left side of .b.

       When a circular dependency is discovered during the execution of  the  tixForm  algorithm,
       tixForm will generate a background error and the geometry of the slaves are undefined (and
       will be arbitrary). Notice that tixForm only executes the algorithm when the specification
       of  the  slaves'  attachments  is  complete.   Therefore, it allows intermediate states of
       circular dependency during the specification of the slaves' attachments.  Also, unlike the
       Motif  Form manager widget, tixForm defines circular dependency as "dependency in the same
       dimension". Therefore, the following code fragment will does not have circular  dependency
       because  the  two widgets do not depend on each other in the same dimension (.b depends .c
       in the horizontal dimension and .c depends on .b in the vertical dimension):

       tixForm .b -left .c tixForm .c -top .b

BUGS

       Springs have not been fully implemented yet.

KEYWORDS

       Tix(n), Form, Geometry Management