grid.n
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:18k
源码类别:

通讯编程

开发平台:

Visual C++

  1. '"
  2. '" Copyright (c) 1996 Sun Microsystems, Inc.
  3. '"
  4. '" See the file "license.terms" for information on usage and redistribution
  5. '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  6. '" 
  7. '" RCS: @(#) $Id: grid.n,v 1.5.4.3 2004/10/29 07:52:08 dkf Exp $
  8. '" 
  9. .so man.macros
  10. .TH grid n 8.4 Tk "Tk Built-In Commands"
  11. .BS
  12. '" Note:  do not modify the .SH NAME line immediately below!
  13. .SH NAME
  14. grid - Geometry manager that arranges widgets in a grid
  15. .SH SYNOPSIS
  16. fBgrid fIoption arg fR?fIarg ...fR?
  17. .BE
  18. .SH DESCRIPTION
  19. .PP
  20. The fBgridfR command is used to communicate with the grid
  21. geometry manager that arranges widgets in rows and columns inside
  22. of another window, called the geometry master (or master window).
  23. The fBgridfR command can have any of several forms, depending
  24. on the fIoptionfR argument:
  25. .TP
  26. fBgrid fIslave fR?fIslave ...fR? ?fIoptionsfR?
  27. If the first argument to fBgridfR is suitable as the first slave
  28. argument to fBgrid configurefR, either a window name (any value
  29. starting with fB.fP) or one of the characters fBxfP or fB^fP 
  30. (see the fBRELATIVE PLACEMENTfR section below), then the command is
  31. processed in the same way as fBgrid configurefR.
  32. .TP
  33. fBgrid bbox fImasterfR ?fIcolumn rowfR? ?fIcolumn2 row2fR?
  34. With no arguments, 
  35. the bounding box (in pixels) of the grid is returned.
  36. The return value consists of 4 integers.  The first two are the pixel
  37. offset from the master window (x then y) of the top-left corner of the
  38. grid, and the second two integers are the width and height of the grid,
  39. also in pixels.  If a single fIcolumnfP and fIrowfP is specified on 
  40. the command line, then the bounding box for that cell is returned, where the
  41. top left cell is numbered from zero.  If both fIcolumnfP and fIrowfP
  42. arguments are specified, then the bounding box spanning the rows and columns
  43. indicated is returned.
  44. .TP
  45. fBgrid columnconfigure fImaster index fR?fI-option value...fR?
  46. Query or set the column properties of the fIindexfP column of the 
  47. geometry master, fImasterfP.
  48. .VS 8.4
  49. The valid options are fB-minsizefP, fB-weightfP, fB-uniformfP
  50. and fB-padfP.
  51. .VE 8.4
  52. If one or more options are provided, then fIindexfP may be given as 
  53. a list of column indices to which the configuration options will operate on.
  54. The fB-minsizefP option sets the minimum size, in screen units,
  55. that will be permitted for this column.
  56. The fB-weightfP option (an integer value)
  57. sets the relative weight for apportioning
  58. any extra spaces among
  59. columns.
  60. A weight of zero (0) indicates the column will not deviate from its requested
  61. size.  A column whose weight is two will grow at twice the rate as a column
  62. of weight one when extra space is allocated to the layout.
  63. .VS 8.4
  64. The fB-uniformfP option, when a non-empty value is supplied, places
  65. the column in a fIuniform groupfP with other columns that have the
  66. same value for fB-uniformfP.  The space for columns belonging to a
  67. uniform group is allocated so that their sizes are always in strict
  68. proportion to their fB-weightfP values.  See
  69. fBTHE GRID ALGORITHMfR below for further details.
  70. .VE 8.4
  71. The fB-padfP option specifies the number of screen units that will be
  72. added to the largest window contained completely in that column when the
  73. grid geometry manager requests a size from the containing window.
  74. If only an option is specified, with no value,
  75. the current value of that option is returned.
  76. If only the master window and index is specified, all the current settings
  77. are returned in a list of "-option value" pairs.
  78. .TP
  79. fBgrid configure fIslave fR?fIslave ...fR? ?fIoptionsfR?
  80. The arguments consist of the names of one or more slave windows
  81. followed by pairs of arguments that specify how
  82. to manage the slaves.
  83. The characters fB-fP,  fBxfP and fB^fP, 
  84. can be specified instead of a window name to alter the default
  85. location of a fIslavefP, as described in the fBRELATIVE PLACEMENTfR
  86. section, below.
  87. The following options are supported:
  88. .RS
  89. .TP
  90. fB-column fInfR
  91. Insert the slave so that it occupies the fInfPth column in the grid.
  92. Column numbers start with 0.  If this option is not supplied, then the
  93. slave is arranged just to the right of previous slave specified on this
  94. call to fIgridfP, or column "0" if it is the first slave.  For each
  95. fBxfP that immediately precedes the fIslavefP, the column position
  96. is incremented by one.  Thus the fBxfP represents a blank column
  97. for this row in the grid.
  98. .TP
  99. fB-columnspan fInfR
  100. Insert the slave so that it occupies fInfP columns in the grid.
  101. The default is one column, unless the window name is followed by a
  102. fB-fP, in which case the columnspan is incremented once for each immediately
  103. following fB-fP.
  104. .TP
  105. fB-in fIotherfR
  106. Insert the slave(s) in the master
  107. window given by fIotherfR.  The default is the first slave's
  108. parent window.
  109. .TP
  110. fB-ipadx fIamountfR
  111. The fIamountfR specifies how much horizontal internal padding to
  112. leave on each side of the slave(s).  This is space is added
  113. inside the slave(s) border.
  114. The fIamountfR must be a valid screen distance, such as fB2fR or fB.5cfR.
  115. It defaults to 0.
  116. .TP
  117. fB-ipady fIamountfR
  118. The fIamountfR specifies how much vertical internal padding to
  119. leave on the top and bottom of the slave(s).
  120. This space is added inside the slave(s) border.
  121. The fIamountfR  defaults to 0.
  122. .TP
  123. fB-padx fIamountfR
  124. The fIamountfR specifies how much horizontal external padding to
  125. leave on each side of the slave(s), in screen units.
  126. fIAmountfR may be a list
  127. of two values to specify padding for left and right separately.
  128. The fIamountfR defaults to 0.
  129. This space is added outside the slave(s) border.
  130. .TP
  131. fB-pady fIamountfR
  132. The fIamountfR specifies how much vertical external padding to
  133. leave on the top and bottom of the slave(s), in screen units.
  134. fIAmountfR may be a list
  135. of two values to specify padding for top and bottom separately.
  136. The fIamountfR defaults to 0.
  137. This space is added outside the slave(s) border.
  138. .TP
  139. fB-row fInfR
  140. Insert the slave so that it occupies the fInfPth row in the grid.
  141. Row numbers start with 0.  If this option is not supplied, then the
  142. slave is arranged on the same row as the previous slave specified on this
  143. call to fBgridfP, or the first unoccupied row if this is the first slave.
  144. .TP
  145. fB-rowspan fInfR
  146. Insert the slave so that it occupies fInfP rows in the grid.
  147. The default is one row.  If the next fBgridfP command contains
  148. fB^fP characters instead of fIslavesfP that line up with the columns
  149. of this fIslavefP, then the fBrowspanfP of this fIslavefP is
  150. extended by one.
  151. .TP
  152. fB-sticky fIstylefR
  153. If a slave's cell is larger than its requested dimensions, this
  154. option may be used to position (or stretch) the slave within its cell.
  155. fIStylefR  is a string that contains zero or more of the characters
  156. fBnfP, fBsfP, fBefP or fBwfP.
  157. The string can optionally contains spaces or
  158. commas, but they are ignored.  Each letter refers to a side (north, south,
  159. east, or west) that the slave will "stick" to.  If both fBnfP and fBsfP (or
  160. fBefP and fBwfP) are specified, the slave will be stretched to fill the entire
  161. height (or width) of its cavity.  The fBstickyfP option subsumes the
  162. combination of fB-anchorfP and fB-fillfP that is used by fBpackfP.
  163. The default is fB{}fP, which causes the slave to be centered in its cavity,
  164. at its requested size.
  165. .LP
  166. If any of the slaves are already managed by the geometry manager
  167. then any unspecified options for them retain their previous values rather
  168. than receiving default values.
  169. .RE
  170. .TP
  171. fBgrid forget fIslave fR?fIslave ...fR?
  172. Removes each of the fIslavefRs from grid for its
  173. master and unmaps their windows.
  174. The slaves will no longer be managed by the grid geometry manager.
  175. The configuration options for that window are forgotten, so that if the
  176. slave is managed once more by the grid geometry manager, the initial
  177. default settings are used.
  178. .TP
  179. fBgrid info fIslavefR
  180. Returns a list whose elements are the current configuration state of
  181. the slave given by fIslavefR in the same option-value form that
  182. might be specified to fBgrid configurefR.
  183. The first two elements of the list are ``fB-in fImasterfR'' where
  184. fImasterfR is the slave's master.
  185. .TP
  186. fBgrid location fImaster x yfR
  187. Given  fIxfP and fIyfP values in screen units relative to the master window, 
  188. the column and row number at that fIxfP and fIyfP location is returned.
  189. For locations that are above or to the left of the grid, fB-1fP is returned.
  190. .TP
  191. fBgrid propagate fImasterfR ?fIbooleanfR?
  192. If fIbooleanfR has a true boolean value such as fB1fR or fBonfR
  193. then propagation is enabled for fImasterfR, which must be a window
  194. name (see fBGEOMETRY PROPAGATIONfR below).
  195. If fIbooleanfR has a false boolean value then propagation is
  196. disabled for fImasterfR.
  197. In either of these cases an empty string is returned.
  198. If fIbooleanfR is omitted then the command returns fB0fR or
  199. fB1fR to indicate whether propagation is currently enabled
  200. for fImasterfR.
  201. Propagation is enabled by default.
  202. .TP
  203. fBgrid rowconfigure fImaster index fR?fI-option value...fR?
  204. Query or set the row properties of the fIindexfP row of the 
  205. geometry master, fImasterfP.
  206. .VS 8.4
  207. The valid options are fB-minsizefP, fB-weightfP, fB-uniformfP
  208. and fB-padfP.
  209. .VE 8.4
  210. If one or more options are provided, then fIindexfP may be given as 
  211. a list of row indices to which the configuration options will operate on.
  212. The fB-minsizefP option sets the minimum size, in screen units,
  213. that will be permitted for this row.
  214. The fB-weightfP option (an integer value)
  215. sets the relative weight for apportioning
  216. any extra spaces among
  217. rows.
  218. A weight of zero (0) indicates the row will not deviate from its requested
  219. size.  A row whose weight is two will grow at twice the rate as a row
  220. of weight one when extra space is allocated to the layout.
  221. .VS 8.4
  222. The fB-uniformfP option, when a non-empty value is supplied, places
  223. the row in a fIuniform groupfP with other rows that have the
  224. same value for fB-uniformfP.  The space for rows belonging to a
  225. uniform group is allocated so that their sizes are always in strict
  226. proportion to their fB-weightfP values.  See
  227. fBTHE GRID ALGORITHMfR below for further details.
  228. .VE 8.4
  229. The fB-padfP option specifies the number of screen units that will be
  230. added to the largest window contained completely in that row when the
  231. grid geometry manager requests a size from the containing window.
  232. If only an option is specified, with no value,
  233. the current value of that option is returned.
  234. If only the master window and index is specified, all the current settings
  235. are returned in a list of "-option value" pairs.
  236. .TP
  237. fBgrid remove fIslave fR?fIslave ...fR?
  238. Removes each of the fIslavefRs from grid for its
  239. master and unmaps their windows.
  240. The slaves will no longer be managed by the grid geometry manager.
  241. However, the configuration options for that window are remembered,
  242. so that if the
  243. slave is managed once more by the grid geometry manager, the previous
  244. values are retained.
  245. .TP
  246. fBgrid size fImasterfR
  247. Returns the size of the grid (in columns then rows) for fImasterfP.
  248. The size is determined either by the fIslavefP occupying the largest
  249. row or column, or the largest column or row with a fBminsizefP, 
  250. fBweightfP, or fBpadfP that is non-zero.
  251. .TP
  252. fBgrid slaves fImasterfR ?fI-option valuefR?
  253. If no options are supplied, a list of all of the slaves in fImasterfR
  254. are returned, most recently manages first.
  255. fIOptionfP can be either fB-rowfP or fB-columnfP which
  256. causes only the slaves in the row (or column) specified by fIvaluefP
  257. to be returned.
  258. .SH "RELATIVE PLACEMENT"
  259. .PP
  260. The fBgridfP command contains a limited set of capabilities that
  261. permit layouts to be created without specifying the row and column 
  262. information for each slave.  This permits slaves to be rearranged, 
  263. added, or removed without the need to explicitly specify row and
  264. column information.
  265. When no column or row information is specified for a fIslavefP, 
  266. default values are chosen for
  267. fBcolumnfP, fBrowfP, fBcolumnspanfP and fBrowspanfP
  268. at the time the fIslavefP is managed. The values are chosen
  269. based upon the current layout of the grid, the position of the fIslavefP
  270. relative to other fIslavefPs in the same grid command, and the presence
  271. of the characters fB-fP, fBxfP, and fB^fP in fBgridfP
  272. command where fIslavefP names are normally expected.
  273. .RS
  274. .TP
  275. fB-fP
  276. This increases the columnspan of the fIslavefP to the left.  Several
  277. fB-fP's in a row will successively increase the columnspan. A fB-fP
  278. may not follow a fB^fP or a fBxfP, nor may it be the first fIslavefP
  279. argument to fBgrid configurefR.
  280. .TP
  281. fBxfP
  282. This leaves an empty column between the fIslavefP on the left and
  283. the fIslavefP on the right.
  284. .TP
  285. fB^fP
  286. This extends the fBrowspanfP of the fIslavefP above the fB^fP's
  287. in the grid.  The number of fB^fP's in a row must match the number of
  288. columns spanned by the fIslavefP above it.
  289. .RE
  290. .SH "THE GRID ALGORITHM"
  291. .PP
  292. The grid geometry manager lays out its slaves in three steps.
  293. In the first step, the minimum size needed to fit all of the slaves
  294. is computed, then (if propagation is turned on), a request is made
  295. of the master window to become that size.
  296. In the second step, the requested size is compared against the actual size
  297. of the master.  If the sizes are different, then spaces is added to or taken
  298. away from the layout as needed.
  299. For the final step, each slave is positioned in its row(s) and column(s)
  300. based on the setting of its fIstickyfP flag.
  301. .PP
  302. To compute the minimum size of a layout, the grid geometry manager
  303. first looks at all slaves whose columnspan and rowspan values are one,
  304. and computes the nominal size of each row or column to be either the
  305. fIminsizefP for that row or column, or the sum of the fIpadfPding
  306. plus the size of the largest slave, whichever is greater.  After that
  307. the rows or columns in each uniform group adapt to each other.  Then
  308. the slaves whose rowspans or columnspans are greater than one are
  309. examined.  If a group of rows or columns need to be increased in size
  310. in order to accommodate these slaves, then extra space is added to each
  311. row or column in the group according to its fIweightfP.  For each
  312. group whose weights are all zero, the additional space is apportioned
  313. equally.
  314. .PP
  315. When multiple rows or columns belong to a uniform group, the space
  316. allocated to them is always in proportion to their weights. (A weight
  317. of zero is considered to be 1.)  In other words, a row or column
  318. configured with fB-weight 1 -uniform afP will have exactly the same
  319. size as any other row or column configured with fB-weight 1 -uniform
  320. afP.  A row or column configured with fB-weight 2 -uniform bfR will 
  321. be exactly twice as large as one that is configured with fB-weight 1
  322. -uniform bfP.  
  323. .PP
  324. More technically, each row or column in the group will have a size
  325. equal to fIk*weightfP for some constant fIkfP.  The constant
  326. fIkfP is chosen so that no row or column becomes smaller than its
  327. minimum size.  For example, if all rows or columns in a group have the
  328. same weight, then each row or column will have the same size as the
  329. largest row or column in the group.
  330. .PP
  331. For masters whose size is larger than the requested layout, the additional
  332. space is apportioned according to the row and column weights.  If all of
  333. the weights are zero, the layout is centered within its master.
  334. For masters whose size is smaller than the requested layout, space is taken
  335. away from columns and rows according to their weights.  However, once a 
  336. column or row shrinks to its minsize, its weight is taken to be zero.
  337. If more space needs to be removed from a layout than would be permitted, as
  338. when all the rows or columns are at their minimum sizes, the layout is
  339. clipped on the bottom and right.
  340. .SH "GEOMETRY PROPAGATION"
  341. .PP
  342. The grid geometry manager normally computes how large a master must be to
  343. just exactly meet the needs of its slaves, and it sets the
  344. requested width and height of the master to these dimensions.
  345. This causes geometry information to propagate up through a
  346. window hierarchy to a top-level window so that the entire
  347. sub-tree sizes itself to fit the needs of the leaf windows.
  348. However, the fBgrid propagatefR command may be used to
  349. turn off propagation for one or more masters.
  350. If propagation is disabled then grid will not set
  351. the requested width and height of the master window.
  352. This may be useful if, for example, you wish for a master
  353. window to have a fixed size that you specify.
  354. .SH "RESTRICTIONS ON MASTER WINDOWS"
  355. .PP
  356. The master for each slave must either be the slave's parent
  357. (the default) or a descendant of the slave's parent.
  358. This restriction is necessary to guarantee that the
  359. slave can be placed over any part of its master that is
  360. visible without danger of the slave being clipped by its parent.
  361. In addition, all slaves in one call to fBgridfP must have the same master.
  362. .SH "STACKING ORDER"
  363. .PP
  364. If the master for a slave is not its parent then you must make sure
  365. that the slave is higher in the stacking order than the master.
  366. Otherwise the master will obscure the slave and it will appear as
  367. if the slave hasn't been managed correctly.
  368. The easiest way to make sure the slave is higher than the master is
  369. to create the master window first:  the most recently created window
  370. will be highest in the stacking order.
  371. .SH CREDITS
  372. .PP
  373. The fBgridfP command is based on ideas taken from the fIGridBagfP
  374. geometry manager written by Doug. Stein, and the fBblt_tablefR geometry
  375. manager, written by George Howlett.
  376. .SH EXAMPLES
  377. A toplevel window containing a text widget and two scrollbars:
  378. .CS
  379. # Make the widgets
  380. toplevel .t
  381. text .t.txt -wrap none -xscroll {.t.h set} -yscroll {.t.v set}
  382. scrollbar .t.v -orient vertical   -command {.t.txt xview}
  383. scrollbar .t.h -orient horizontal -command {.t.txt xview}
  384. # Lay them out
  385. fBgridfR .t.txt .t.v -sticky nsew
  386. fBgridfR .t.h        -sticky nsew
  387. # Tell the text widget to take all the extra room
  388. fBgrid rowconfigurefR    .t 0 -weight 1
  389. fBgrid columnconfigurefR .t 0 -weight 1
  390. .CE
  391. .PP
  392. Three widgets of equal width, despite their different "natural" widths:
  393. .CS
  394. button .b -text "Foo"
  395. entry .e -variable foo
  396. label .l -text "This is a fairly long piece of text"
  397. fBgridfR .b .e .l -sticky ew
  398. fBgrid columnconfigurefR . {0 1 2} -uniform allTheSame
  399. .CE
  400. .SH "SEE ALSO"
  401. pack(n), place(n)
  402. .SH KEYWORDS
  403. geometry manager, location, grid, cell, propagation, size, pack