Provided by: tix-dev_8.4.3-13_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

Tix                                                    4.0                                                TIX(3)