NAME

       tixForm - Geometry manager based on attachment rules


SYNOPSIS

       tixForm option arg ?arg ...?
_________________________________________________________________


DESCRIPTION

       The  tixForm  command is used to communicate with the tix­
       Form 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  argu­
       ment:

       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.

                     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  mas­
                     ter 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  sec­
                     tion 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.

                     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 sec­
                     tion 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  sec­
                     tion USING SPRINGS below.

              -tp value
                     Abbreviation for the -padtop option.

              -ts weight
                     Abbreviation for the -topspring option.

              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

                     by  the tixForm grid command. A grid attach­
                     ment anchor point is given by a % sign  fol­
                     lowed  by  an integer value. For example, %0
                     spceifies the first grid line  (the  top  or
                     left edge of the master window). %100 spcei­
                     fies 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 tix­
                     Form 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  ver­
                     tical 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}.

       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 win­
       dow. 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 abbrevi­
       ation.
              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 attach­
       ment, 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


       If the attachment is opposite or parallel  widget  attach­
       ments,  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 car­
       ried  on until the positions of all slaves are determined.


CIRCULAR DEPENDENCY

       The algorithm of tixForm will fail if  a  circular  depen­
       dency  exists  in the attachments of the slaves. For exam­
       ple:

              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 execu­
       tion  of  the  tixForm  algorithm, tixForm will generate a
       background error and the geometry of the slaves are  unde­
       fined  (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". There­
       fore, the following code fragment will does not have  cir­
       cular  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

       form, geometry management


Man(1) output converted with man2html