home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 May / Chip_2000-05_cd1.bin / zkuste / Perl / ActivePerl-5.6.0.613.msi / 䆊䌷䈹䈙䏵-䞅䞆䞀㡆䞃䄦䠥 / _055cfbbcba33d052436c1b6f9c5f1f9e < prev    next >
Text File  |  2000-03-23  |  21KB  |  409 lines

  1.  
  2. <HTML>
  3. <HEAD>
  4. <TITLE>Tk::form - Geometry manager based on attachment rules</TITLE>
  5. <LINK REL="stylesheet" HREF="../../../Active.css" TYPE="text/css">
  6. <LINK REV="made" HREF="mailto:">
  7. </HEAD>
  8.  
  9. <BODY>
  10. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  11. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  12. <STRONG><P CLASS=block> Tk::form - Geometry manager based on attachment rules</P></STRONG>
  13. </TD></TR>
  14. </TABLE>
  15.  
  16. <A NAME="__index__"></A>
  17. <!-- INDEX BEGIN -->
  18.  
  19. <UL>
  20.  
  21.     <LI><A HREF="#name">NAME</A></LI><LI><A HREF="#supportedplatforms">SUPPORTED PLATFORMS</A></LI>
  22.  
  23.     <LI><A HREF="#synopsis">SYNOPSIS</A></LI>
  24.     <LI><A HREF="#description">DESCRIPTION</A></LI>
  25.     <LI><A HREF="#specifying attachments">SPECIFYING ATTACHMENTS</A></LI>
  26.     <UL>
  27.  
  28.         <LI><A HREF="#abbreviations:">ABBREVIATIONS:</A></LI>
  29.     </UL>
  30.  
  31.     <LI><A HREF="#using springs">USING SPRINGS</A></LI>
  32.     <LI><A HREF="#algorithm of form">ALGORITHM OF FORM</A></LI>
  33.     <LI><A HREF="#circular dependency">CIRCULAR DEPENDENCY</A></LI>
  34.     <LI><A HREF="#bugs">BUGS</A></LI>
  35.     <LI><A HREF="#see also">SEE ALSO</A></LI>
  36.     <LI><A HREF="#keywords">KEYWORDS</A></LI>
  37. </UL>
  38. <!-- INDEX END -->
  39.  
  40. <HR>
  41. <P>
  42. <H1><A NAME="name">NAME</A></H1>
  43. <P>Tk::form - Geometry manager based on attachment rules</P>
  44. <P>
  45. <HR>
  46. <H1><A NAME="supportedplatforms">SUPPORTED PLATFORMS</A></H1>
  47. <UL>
  48. <LI>Linux</LI>
  49. <LI>Solaris</LI>
  50. <LI>Windows</LI>
  51. </UL>
  52. <HR>
  53. <H1><A NAME="synopsis">SYNOPSIS</A></H1>
  54. <P>    <EM>$widget</EM>-><STRONG>form</STRONG>?(<EM>args</EM>)?</P>
  55. <P>    <EM>$widget</EM>-><STRONG>form</STRONG><EM>Option</EM>?(<EM>args</EM>)?</P>
  56. <P>
  57. <HR>
  58. <H1><A NAME="description">DESCRIPTION</A></H1>
  59. <P>The <STRONG>form</STRONG> method is used to communicate with the
  60. <STRONG>form</STRONG> Geometry Manager, a geometry manager that arranges the
  61. geometry of the children in a parent window according to attachment
  62. rules. The <STRONG>form</STRONG> geometry manager is very flexible and
  63. powerful; it can be used to emulate all the existing features of the
  64. Tk packer and placer geometry managers (see <A HREF="../../../site/lib/Tk/pack.html">pack</A>,
  65. <A HREF="../../../site/lib/Tk/place.html">place</A>).
  66. The <STRONG>form</STRONG> method can have any of several forms,
  67. depending on <EM>Option</EM>:</P>
  68. <DL>
  69. <DT><STRONG><A NAME="item_form"><EM>$slave</EM>-><STRONG>form</STRONG>?(<EM>options</EM>)?</A></STRONG><BR>
  70. <DD>
  71. Sets or adjusts the attachment values of the slave window
  72. according to the <EM>-option</EM>=><EM>value</EM> argument pairs.
  73. <DL>
  74. <DT><STRONG><A NAME="item_%2Db_%3D%3E_attachment"><STRONG>-b</STRONG> => <EM>attachment</EM></A></STRONG><BR>
  75. <DD>
  76. Abbreviation for the <STRONG>-bottom</STRONG> option.
  77. <P></P>
  78. <DT><STRONG><A NAME="item_%2Dbottom_%3D%3E_attachment"><STRONG>-bottom</STRONG> => <EM>attachment</EM></A></STRONG><BR>
  79. <DD>
  80. Specifies an attachment for the bottom edge of the slave window. The
  81. attachment must specified according to <A HREF="#specifying attachments">SPECIFYING ATTACHMENTS</A> below.
  82. <P></P>
  83. <DT><STRONG><A NAME="item_%2Dbottomspring_%3D%3E_weight"><STRONG>-bottomspring</STRONG> => <EM>weight</EM></A></STRONG><BR>
  84. <DD>
  85. Specifies the weight of the spring at the bottom edge of the slave
  86. window. See <A HREF="#using springs">USING SPRINGS</A> below.
  87. <P></P>
  88. <DT><STRONG><A NAME="item_%2Dbp_%3D%3E_value"><STRONG>-bp</STRONG> => <EM>value</EM></A></STRONG><BR>
  89. <DD>
  90. Abbreviation for the <STRONG>-padbottom</STRONG> option.
  91. <P></P>
  92. <DT><STRONG><A NAME="item_%2Dbs_%3D%3E_weight"><STRONG>-bs</STRONG> => <EM>weight</EM></A></STRONG><BR>
  93. <DD>
  94. Abbreviation for the <STRONG>-bottomspring</STRONG> option.
  95. <P></P>
  96. <DT><STRONG><A NAME="item_%2Dfill_%3D%3E_style"><STRONG>-fill</STRONG> => <EM>style</EM></A></STRONG><BR>
  97. <DD>
  98. Specifies the fillings when springs are used for this widget. The
  99. value must be <STRONG>x</STRONG>, <STRONG>y</STRONG>, <STRONG>both</STRONG> or <STRONG>none</STRONG>.
  100. <P></P>
  101. <DT><STRONG><A NAME="item_%2Din_%3D%3E_%24master"><STRONG>-in</STRONG> => <EM>$master</EM></A></STRONG><BR>
  102. <DD>
  103. Places the slave window into the specified <EM>$master</EM> window. If the slave
  104. was originally in another master window, all attachment values with
  105. respect to the original master window are discarded. Even if the
  106. attachment values are the same as in the original master window, they
  107. need to be specified again.  The <STRONG>-in</STRONG> flag, when needed, must appear
  108. as the first flag of <EM>options</EM>. Otherwise an error is
  109. generated.
  110. <P></P>
  111. <DT><STRONG><A NAME="item_%2Dl_%3D%3E_attachment"><STRONG>-l</STRONG> => <EM>attachment</EM></A></STRONG><BR>
  112. <DD>
  113. Abbreviation for the <STRONG>-left</STRONG> option.
  114. <P></P>
  115. <DT><STRONG><A NAME="item_%2Dleft_%3D%3E_attachment"><STRONG>-left</STRONG> => <EM>attachment</EM></A></STRONG><BR>
  116. <DD>
  117. Specifies an attachment for the left edge of the slave window. The
  118. attachment must specified according to <A HREF="#specifying attachments">SPECIFYING ATTACHMENTS</A> below.
  119. <P></P>
  120. <DT><STRONG><A NAME="item_%2Dleftspring_%3D%3E_weight"><STRONG>-leftspring</STRONG> => <EM>weight</EM></A></STRONG><BR>
  121. <DD>
  122. Specifies the weight of the spring at the left edge of the slave
  123. window. See <A HREF="#using springs">USING SPRINGS</A> below.
  124. <P></P>
  125. <DT><STRONG><A NAME="item_%2Dlp_%3D%3E_value"><STRONG>-lp</STRONG> => <EM>value</EM></A></STRONG><BR>
  126. <DD>
  127. Abbreviation for the <STRONG>-padleft</STRONG> option.
  128. <P></P>
  129. <DT><STRONG><A NAME="item_%2Dls_%3D%3E_weight"><STRONG>-ls</STRONG> => <EM>weight</EM></A></STRONG><BR>
  130. <DD>
  131. Abbreviation for the <STRONG>-leftspring</STRONG> option.
  132. <P></P>
  133. <DT><STRONG><A NAME="item_%2Dpadbottom_%3D%3E_value"><STRONG>-padbottom</STRONG> => <EM>value</EM></A></STRONG><BR>
  134. <DD>
  135. Specifies the amount of external padding to leave on the bottom side
  136. of the slave. The <EM>value</EM> may have any of the forms acceptable to
  137. <STRONG>Tk_GetPixels</STRONG>.
  138. <P></P>
  139. <DT><STRONG><A NAME="item_%2Dpadleft_%3D%3E_value"><STRONG>-padleft</STRONG> => <EM>value</EM></A></STRONG><BR>
  140. <DD>
  141. Specifies the amount of external padding to leave on the left side of
  142. the slave.
  143. <P></P>
  144. <DT><STRONG><A NAME="item_%2Dpadright_%3D%3E_value"><STRONG>-padright</STRONG> => <EM>value</EM></A></STRONG><BR>
  145. <DD>
  146. Specifies the amount of external padding to leave on the right side of
  147. the slave.
  148. <P></P>
  149. <DT><STRONG><A NAME="item_%2Dpadtop_%3D%3E_value"><STRONG>-padtop</STRONG> => <EM>value</EM></A></STRONG><BR>
  150. <DD>
  151. Specifies the amount of external padding to leave on the top side of
  152. the slave.
  153. <P></P>
  154. <DT><STRONG><A NAME="item_%2Dpadx_%3D%3E_value"><STRONG>-padx</STRONG> => <EM>value</EM></A></STRONG><BR>
  155. <DD>
  156. Specifies the amount of external padding to leave on both the left and
  157. the right sides of the slave.
  158. <P></P>
  159. <DT><STRONG><A NAME="item_%2Dpady_%3D%3E_value"><STRONG>-pady</STRONG> => <EM>value</EM></A></STRONG><BR>
  160. <DD>
  161. Specifies the amount of external padding to leave on both the top and
  162. the bottom sides of the slave.
  163. <P></P>
  164. <DT><STRONG><A NAME="item_%2Dr_%3D%3E_attachment"><STRONG>-r</STRONG> => <EM>attachment</EM></A></STRONG><BR>
  165. <DD>
  166. Abbreviation for the <STRONG>-right</STRONG> option.
  167. <P></P>
  168. <DT><STRONG><A NAME="item_%2Dright_%3D%3E_attachment"><STRONG>-right</STRONG> => <EM>attachment</EM></A></STRONG><BR>
  169. <DD>
  170. Specifies an attachment for the right edge of the slave window. The
  171. attachment must specified according to <A HREF="#specifying attachments">SPECIFYING ATTACHMENTS</A> below.
  172. <P></P>
  173. <DT><STRONG><A NAME="item_%2Drightspring_%3D%3E_weight"><STRONG>-rightspring</STRONG> => <EM>weight</EM></A></STRONG><BR>
  174. <DD>
  175. Specifies the weight of the spring at the right edge of the slave
  176. window. See <A HREF="#using springs">USING SPRINGS</A> below.
  177. <P></P>
  178. <DT><STRONG><A NAME="item_%2Drp_%3D%3E_value"><STRONG>-rp</STRONG>  => <EM>value</EM></A></STRONG><BR>
  179. <DD>
  180. Abbreviation for the <STRONG>-padright</STRONG> option.
  181. <P></P>
  182. <DT><STRONG><A NAME="item_%2Drs_%3D%3E_weight"><STRONG>-rs</STRONG> => <EM>weight</EM></A></STRONG><BR>
  183. <DD>
  184. Abbreviation for the <STRONG>-rightspring</STRONG> option.
  185. <P></P>
  186. <DT><STRONG><A NAME="item_%2Dt_%3D%3E_attachment"><STRONG>-t</STRONG> => <EM>attachment</EM></A></STRONG><BR>
  187. <DD>
  188. Abbreviation for the <STRONG>-top</STRONG> option.
  189. <P></P>
  190. <DT><STRONG><A NAME="item_%2Dtop_%3D%3E_attachment"><STRONG>-top</STRONG> => <EM>attachment</EM></A></STRONG><BR>
  191. <DD>
  192. Specifies an attachment for the top edge of the slave window. The
  193. attachment must specified according to <A HREF="#specifying attachments">SPECIFYING ATTACHMENTS</A> below.
  194. <P></P>
  195. <DT><STRONG><A NAME="item_%2Dtopspring_%3D%3E_weight"><STRONG>-topspring</STRONG> => <EM>weight</EM></A></STRONG><BR>
  196. <DD>
  197. Specifies the weight of the spring at the top edge of the slave
  198. window. See <A HREF="#using springs">USING SPRINGS</A> below.
  199. <P></P>
  200. <DT><STRONG><A NAME="item_%2Dtp_%3D%3E_value"><STRONG>-tp</STRONG> => <EM>value</EM></A></STRONG><BR>
  201. <DD>
  202. Abbreviation for the <STRONG>-padtop</STRONG> option.
  203. <P></P>
  204. <DT><STRONG><A NAME="item_%2Dts_%3D%3E_weight"><STRONG>-ts</STRONG> => <EM>weight</EM></A></STRONG><BR>
  205. <DD>
  206. Abbreviation for the <STRONG>-topspring</STRONG> option.
  207. <P></P></DL>
  208. <DT><STRONG><A NAME="item_formCheck"><EM>$master</EM>-><STRONG>formCheck</STRONG></A></STRONG><BR>
  209. <DD>
  210. This method checks whether there is circular dependency in the
  211. attachments of the master's slaves (see <A HREF="#circular dependency">CIRCULAR DEPENDENCY</A> below).
  212. It returns the Boolean value <STRONG>TRUE</STRONG> if it
  213. discover circular dependency and <STRONG>FALSE</STRONG> otherwise.
  214. <P></P>
  215. <DT><STRONG><A NAME="item_formForget"><EM>$slave</EM>-><STRONG>formForget</STRONG></A></STRONG><BR>
  216. <DD>
  217. Removes the slave from its master and unmaps its window.
  218. The slave will no longer be managed by form. All attachment values
  219. with respect to its master window are discarded. If another slave
  220. is attached to this slave, then the attachment of the other slave will
  221. be changed to grid attachment based on its geometry.
  222. <P></P>
  223. <DT><STRONG><A NAME="item_formGrid"><EM>$master</EM>-><STRONG>formGrid</STRONG>?(<EM>x_size, y_size</EM>)?</A></STRONG><BR>
  224. <DD>
  225. When <EM>x_size</EM> and <EM>y_size</EM> are given, this method returns the
  226. number of grids of the <EM>$master</EM> window in a pair of integers of the form
  227. (<EM>x_size, y_size</EM>). When both <EM>x_size</EM> and <EM>y_size</EM> are
  228. given, this method changes the number of horizontal and vertical
  229. grids on the master window.
  230. <P></P>
  231. <DT><STRONG><A NAME="item_formInfo"><EM>$slave</EM>-><STRONG>formInfo</STRONG>?(<EM>-option)</EM>?</A></STRONG><BR>
  232. <DD>
  233. Queries the attachment options of a slave window. <EM>-option</EM> can be
  234. any of the options accepted by the <STRONG>form</STRONG> method. If
  235. <EM>-option</EM> is given, only the value of that option is returned.
  236. Otherwise, this method returns a list whose elements are the current
  237. configuration state of the slave given in the same <EM>option-value</EM> form
  238. that might be specified to <STRONG>form</STRONG>. The first two
  239. elements in this list list are ``<STRONG>-in</STRONG>=><EM>$master</EM>'' where
  240. <EM>$master</EM> is the slave's master window.
  241. <P></P>
  242. <DT><STRONG><A NAME="item_formSlaves"><EM>$master</EM>-><STRONG>formSlaves</STRONG></A></STRONG><BR>
  243. <DD>
  244. Returns a list of all of the slaves for the master window. The order
  245. of the slaves in the list is the same as their order in the packing
  246. order. If master has no slaves then an empty string is returned.
  247. <P></P></DL>
  248. <P>
  249. <HR>
  250. <H1><A NAME="specifying attachments">SPECIFYING ATTACHMENTS</A></H1>
  251. <P>One can specify an attachment for each side of a slave window managed
  252. by form. An attachment is specified in the the form ``-<EM>side</EM> =>
  253. [<EM>anchor_point</EM>, <EM>offset</EM>]''. -<EM>side</EM> can be one of
  254. <STRONG>-top</STRONG>, <STRONG>-bottom</STRONG>, <STRONG>-left</STRONG> or <STRONG>-right</STRONG>.</P>
  255. <P><EM>Offset</EM> is given in screen units (i.e. any of the forms
  256. acceptable to <STRONG>Tk_GetPixels</STRONG>).  A positive offset indicates
  257. shifting to a position to the right or bottom of an anchor point. A
  258. negative offset indicates shifting to a position to the left or top of
  259. an anchor point.</P>
  260. <P><EM>Anchor_point</EM> can be given in one of the
  261. following forms:</P>
  262. <DL>
  263. <DT><STRONG><A NAME="item_Grid_Attachment"><STRONG>Grid Attachment</STRONG></A></STRONG><BR>
  264. <DD>
  265. The master window is divided into a number of horizontal and vertical
  266. grids. By default the master window is divided into 100x100 grids; the
  267. number of grids can be adjusted by the <STRONG>formGrid</STRONG> method. A
  268. grid attachment anchor point is given by a <STRONG>%</STRONG> sign followed by an
  269. integer value. For example, <STRONG>'%0'</STRONG> specifies the first grid
  270. line (the top or left edge of the master window). <STRONG>'%100'</STRONG> specifies
  271. the last grid line (the bottom or right edge of the master window).
  272. <P></P>
  273. <DT><STRONG><A NAME="item_Opposite_Side_Attachment"><STRONG>Opposite Side Attachment</STRONG></A></STRONG><BR>
  274. <DD>
  275. Opposite attachment specifies an anchor point located on the
  276. <STRONG>opposite</STRONG> side of another slave widget, which must be managed by
  277. form in the same master window. An opposite attachment anchor point
  278. is given by the name of another widget. For example,
  279. ``<EM>$b</EM>-><STRONG>form</STRONG>(<STRONG>-top</STRONG>=>[<EM>$a</EM>,0])'' attaches the top side of the widget <EM>$b</EM> to the
  280. bottom of the widget <EM>$a</EM>.
  281. <P></P>
  282. <DT><STRONG><A NAME="item_Parallel_Side_Attachment"><STRONG>Parallel Side Attachment</STRONG></A></STRONG><BR>
  283. <DD>
  284. Opposite attachment specifies an anchor point located on the
  285. <STRONG>same</STRONG> side of another slave widget, which must be managed by
  286. form in the same master window. An parallel attachment anchor point
  287. is given by the sign <STRONG>&</STRONG> follwed by the name of another widget.
  288. For example, ``<EM>$b</EM>-><STRONG>form</STRONG>(<STRONG>-top</STRONG>=>['&',<EM>$a</EM>,0])'' attaches the top side of
  289. the widget <EM>$b</EM> to the top of the widget <EM>$a</EM>, making
  290. the top sides of these two widgets at the same vertical position
  291. in their parent window.
  292. <P></P>
  293. <DT><STRONG><A NAME="item_No_Attachment"><STRONG>No Attachment</STRONG></A></STRONG><BR>
  294. <DD>
  295. Specifies a side of the slave to be attached to nothing, indicated by
  296. the keyword <STRONG>none</STRONG>. When the <STRONG>none</STRONG> anchor point is given, the
  297. offset must be zero (or not present).
  298. When a side of a slave is attached to <STRONG>['none', 0]</STRONG>, the position
  299. of this side is calculated by the position of the other side and the
  300. natural size of the slave. For example, if a the left side of a
  301. widget is attached to <STRONG>['%0', 100]</STRONG>, its right side attached to
  302. <STRONG>['none', 0]</STRONG>, and the natural size of the widget is <STRONG>50</STRONG> pixels,
  303. the right side of the widget will be positioned at pixel
  304. <STRONG>['%0', 149]</STRONG>.
  305. When both <STRONG>-top</STRONG> and <STRONG>-bottom</STRONG> are attached to <STRONG>none</STRONG>,
  306. then by default <STRONG>-top</STRONG> will be attached to <STRONG>['%0', 0]</STRONG>. When both
  307. <STRONG>-left</STRONG> and <STRONG>-right</STRONG> are attached to none, then by default
  308. <STRONG>-left</STRONG> will be attached to <STRONG>['%0', 0]</STRONG>.
  309. <P></P></DL>
  310. <P>Shifting effects can be achieved by specifying a non-zero offset with
  311. an anchor point. In the following example, the top side of
  312. widget <EM>\$b</EM> is attached to the bottom of
  313. <EM>\$a</EM>; hence <EM>\$b</EM>
  314. always appears below <EM>\$a</EM>.  Also, the left edge of <EM>\$b</EM>
  315. is attached to the left side of <EM>\$a</EM> with a 10
  316. pixel offest.  Therefore, the left edge of <EM>\$b</EM> is always
  317. shifted 10 pixels to the right of <EM>\$a</EM>'s left edge:</P>
  318. <P>    <EM>$b</EM>-><STRONG>form</STRONG>(<STRONG>-left</STRONG>=>[<EM>$a</EM>,10], <STRONG>-top</STRONG>=>[<EM>$a</EM>,0]);</P>
  319. <P>
  320. <H2><A NAME="abbreviations:">ABBREVIATIONS:</A></H2>
  321. <P>Certain abbreviations can be made on the
  322. attachment specifications: First an offset of zero can be omitted.
  323. Thus, the following two lines are equivalent:</P>
  324. <P>    <EM>$b</EM>-><STRONG>form</STRONG>(<STRONG>-top</STRONG>=>[<EM>$a</EM>,0], <STRONG>-right</STRONG>=>['%100',0]);</P>
  325. <P>    <EM>$b</EM>-><STRONG>form</STRONG>(<STRONG>-top</STRONG>=>[<EM>$a</EM>], <STRONG>-right</STRONG>=>'%100');</P>
  326. <P>In the second case, when the anchor point is omitted, the offset must
  327. be given. A default anchor point is chosen according to the value of
  328. the offset. If the anchor point is <STRONG>0</STRONG> or positive, the default
  329. anchor point %0 is used; thus, ``<EM>$b</EM>-><STRONG>form</STRONG>(<STRONG>-top</STRONG>=>15)'' attaches the top
  330. edge of <EM>$b</EM> to a position 15 pixels below the top edge of the
  331. master window. If the anchor point is ``<STRONG>-0</STRONG>'' or negative, the
  332. default anchor point <STRONG>%100</STRONG> is used; thus, ``<EM>$a</EM>-><STRONG>form</STRONG>(<STRONG>-right</STRONG>=>-2)''
  333. attaches the right edge of <EM>\$a</EM> to a position 2 pixels to
  334. the left of the master window's right edge.  An further example
  335. below shows a method with its equivalent abbreviation.</P>
  336. <P>    <EM>$b</EM>-><STRONG>form</STRONG>(<STRONG>-top</STRONG>=>['%0',10], <STRONG>-bottom</STRONG>=>['%100',0]);</P>
  337. <P>    <EM>$b</EM>-><STRONG>form</STRONG>(<STRONG>-top</STRONG>=>10, <STRONG>-bottom</STRONG>=>-0);</P>
  338. <P>
  339. <HR>
  340. <H1><A NAME="using springs">USING SPRINGS</A></H1>
  341. <P>To be written.</P>
  342. <P>
  343. <HR>
  344. <H1><A NAME="algorithm of form">ALGORITHM OF FORM</A></H1>
  345. <P><STRONG>form</STRONG> starts with any slave in the list of slaves of the master
  346. window. Then it tries to determine the position of each side of the
  347. slave.</P>
  348. <P>If the attachment of a side of the slave is grid attachment, the
  349. position of the side is readily determined.</P>
  350. <P>If the attachment of this side is <STRONG>none</STRONG>, then form tries to
  351. determine the position of the opposite side first, and then use the
  352. position of the opposite side and the natural size of the slave to
  353. determine the position of this side.</P>
  354. <P>If the attachment is opposite or parallel widget attachments, then
  355. form tries to determine the positions of the other widget first,
  356. and then use the positions of the other widget and the natural size of
  357. the slave determine the position of this side. This recursive
  358. algorithmis carried on until the positions of all slaves are
  359. determined.</P>
  360. <P>
  361. <HR>
  362. <H1><A NAME="circular dependency">CIRCULAR DEPENDENCY</A></H1>
  363. <P>The algorithm of form will fail if a circular dependency exists in
  364. the attachments of the slaves. For example:</P>
  365. <P>    <EM>$c</EM>-><STRONG>form</STRONG>(<STRONG>-left</STRONG>=><EM>$b</EM>);</P>
  366. <P>    <EM>$b</EM>-><STRONG>form</STRONG>(<STRONG>-right</STRONG>=><EM>$c</EM>);</P>
  367. <P>In this example, the position of the left side of <EM>$b</EM> depends on
  368. the right side of <EM>$c</EM>, which in turn depends on the left side of <EM>$b</EM>.</P>
  369. <P>When a circular dependency is discovered during the execution of the
  370. form algorithm, form will generate a background error and the
  371. geometry of the slaves are undefined (and will be arbitrary). Notice
  372. that form only executes the algorithm when the specification of the
  373. slaves' attachments is complete.  Therefore, it allows intermediate
  374. states of circular dependency during the specification of the slaves'
  375. attachments.  Also, unlike the Motif Form manager widget, form
  376. defines circular dependency as
  377. ``<EM>dependency in the same dimension</EM>''.
  378. Therefore, the following code fragment will does not
  379. have circular dependency because the two widgets do not depend on each
  380. other in the same dimension (<EM>$b</EM> depends <EM>$c</EM> in the
  381. horizontal dimension and <EM>$c</EM> depends on <EM>$b</EM> in the vertical
  382. dimension):</P>
  383. <P>    <EM>$b</EM>-><STRONG>form</STRONG>(<STRONG>-left</STRONG>=><EM>$c</EM>);</P>
  384. <P>    <EM>$c</EM>-><STRONG>form</STRONG>(<STRONG>-top</STRONG>=><EM>$b</EM>);</P>
  385. <P>
  386. <HR>
  387. <H1><A NAME="bugs">BUGS</A></H1>
  388. <P>Springs have not been fully implemented yet.</P>
  389. <P>
  390. <HR>
  391. <H1><A NAME="see also">SEE ALSO</A></H1>
  392. <P><A HREF="../../../site/lib/Tk/grid.html">Tk::grid</A>
  393. <A HREF="../../../site/lib/Tk/pack.html">Tk::pack</A>
  394. <A HREF="../../../site/lib/Tk/place.html">Tk::place</A></P>
  395. <P>
  396. <HR>
  397. <H1><A NAME="keywords">KEYWORDS</A></H1>
  398. <P>geometry manager, form, attachment, spring, propagation, size, pack,
  399. tix, master, slave</P>
  400. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  401. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  402. <STRONG><P CLASS=block> Tk::form - Geometry manager based on attachment rules</P></STRONG>
  403. </TD></TR>
  404. </TABLE>
  405.  
  406. </BODY>
  407.  
  408. </HTML>
  409.