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

通讯编程

开发平台:

Visual C++

  1. '"
  2. '" Copyright (c) 1990-1994 The Regents of the University of California.
  3. '" Copyright (c) 1994-1997 Sun Microsystems, Inc.
  4. '"
  5. '" See the file "license.terms" for information on usage and redistribution
  6. '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  7. '" 
  8. '" RCS: @(#) $Id: menu.n,v 1.8.2.2 2007/11/05 17:21:59 dgp Exp $
  9. '" 
  10. .so man.macros
  11. .TH menu n 4.1 Tk "Tk Built-In Commands"
  12. .BS
  13. '" Note:  do not modify the .SH NAME line immediately below!
  14. .SH NAME
  15. menu, tk_menuSetFocus - Create and manipulate menu widgets
  16. .SH SYNOPSIS
  17. .nf
  18. fBmenufR fIpathName fR?fIoptionsfR?
  19. fBtk_menuSetFocusfR fIpathNamefR
  20. .SO
  21. -activebackground -borderwidth -foreground
  22. -activeborderwidth -cursor -relief
  23. -activeforeground -disabledforeground -takefocus
  24. -background -font
  25. .SE
  26. .SH "WIDGET-SPECIFIC OPTIONS"
  27. .VS
  28. .OP -postcommand postCommand Command
  29. If this option is specified then it provides a Tcl command to execute
  30. each time the menu is posted.  The command is invoked by the fBpostfR
  31. widget command before posting the menu. Note that in Tk 8.0 on Macintosh
  32. and Windows, all post-commands in a system of menus are executed before any
  33. of those menus are posted.
  34. This is due to the limitations in the individual platforms' menu managers.
  35. .VE
  36. .OP -selectcolor selectColor Background
  37. For menu entries that are check buttons or radio buttons, this option
  38. specifies the color to display in the indicator when the check button
  39. or radio button is selected.
  40. .OP -tearoff tearOff TearOff
  41. This option must have a proper boolean value, which specifies
  42. whether or not the menu should include a tear-off entry at the
  43. top.  If so, it will exist as entry 0 of the menu and the other
  44. entries will number starting at 1.  The default
  45. menu bindings arrange for the menu to be torn off when the tear-off
  46. entry is invoked.
  47. .OP -tearoffcommand tearOffCommand TearOffCommand
  48. If this option has a non-empty value, then it specifies a Tcl command
  49. to invoke whenever the menu is torn off.  The actual command will
  50. consist of the value of this option, followed by a space, followed
  51. by the name of the menu window, followed by a space, followed by
  52. the name of the name of the torn off menu window.  For example, if
  53. the option's is ``fBa bfR'' and menu fB.x.yfR is torn off to
  54. create a new menu fB.x.tearoff1fR, then the command
  55. ``fBa b .x.y .x.tearoff1fR'' will be invoked.
  56. .VS
  57. .OP -title title Title
  58. The string will be used to title the window created when this menu is
  59. torn off. If the title is NULL, then the window will have the title
  60. of the menubutton or the text of the cascade item from which this menu
  61. was invoked.
  62. .OP -type type Type
  63. This option can be one of fBmenubarfR, fBtearofffR, or
  64. fBnormalfR, and is set when the menu is created. While the string
  65. returned by the configuration database will change if this option is
  66. changed, this does not affect the menu widget's behavior. This is used
  67. by the cloning mechanism and is not normally set outside of the Tk
  68. library.
  69. .VE
  70. .BE
  71. .SH INTRODUCTION
  72. .PP
  73. The fBmenufR command creates a new top-level window (given
  74. by the fIpathNamefR argument) and makes it into a menu widget.
  75. Additional
  76. options, described above, may be specified on the command line
  77. or in the option database
  78. to configure aspects of the menu such as its colors and font.
  79. The fBmenufR command returns its
  80. fIpathNamefR argument.  At the time this command is invoked,
  81. there must not exist a window named fIpathNamefR, but
  82. fIpathNamefR's parent must exist.
  83. .PP
  84. .VS
  85. A menu is a widget that displays a collection of one-line entries arranged
  86. in one or more columns.  There exist several different types of entries,
  87. each with different properties.  Entries of different types may be
  88. combined in a single menu.  Menu entries are not the same as
  89. entry widgets.  In fact, menu entries are not even distinct widgets;
  90. the entire menu is one widget.
  91. .VE
  92. .PP
  93. Menu entries are displayed with up to three separate fields.
  94. The main field is a label in the form of a text string,
  95. a bitmap, or an image, controlled by the fB-labelfR,
  96. fB-bitmapfR, and fB-imagefR options for the entry.
  97. If the  fB-acceleratorfR option is specified for an entry then a second
  98. textual field is displayed to the right of the label.  The accelerator
  99. typically describes a keystroke sequence that may be typed in the
  100. application to cause the same result as invoking the menu entry.
  101. The third field is an fIindicatorfR.  The indicator is present only for
  102. checkbutton or radiobutton entries.  It indicates whether the entry
  103. is selected or not, and is displayed to the left of the entry's
  104. string.
  105. .PP
  106. In normal use, an entry becomes active (displays itself differently)
  107. whenever the mouse pointer is over the entry.  If a mouse
  108. button is released over the entry then the entry is fIinvokedfR.
  109. The effect of invocation is different for each type of entry;
  110. these effects are described below in the sections on individual
  111. entries.
  112. .PP
  113. Entries may be fIdisabledfR, which causes their labels
  114. and accelerators to be displayed
  115. with dimmer colors.
  116. The default menu bindings will not allow
  117. a disabled entry to be activated or invoked.
  118. Disabled entries may be re-enabled, at which point it becomes
  119. possible to activate and invoke them again.
  120. .VS
  121. .PP
  122. Whenever a menu's active entry is changed, a <<MenuSelect>> virtual
  123. event is send to the menu. The active item can then be queried from
  124. the menu, and an action can be taken, such as setting
  125. context-sensitive help text for the entry.
  126. .VE
  127. .SH "COMMAND ENTRIES"
  128. .PP
  129. The most common kind of menu entry is a command entry, which
  130. behaves much like a button widget.  When a command entry is
  131. invoked, a Tcl command is executed.  The Tcl
  132. command is specified with the fB-commandfR option.
  133. .SH "SEPARATOR ENTRIES"
  134. .PP
  135. A separator is an entry that is displayed as a horizontal dividing
  136. line.  A separator may not be activated or invoked, and it has
  137. no behavior other than its display appearance.
  138. .SH "CHECKBUTTON ENTRIES"
  139. .PP
  140. A checkbutton menu entry behaves much like a checkbutton widget.
  141. When it is invoked it toggles back and forth between the selected
  142. and deselected states.  When the entry is selected, a particular
  143. value is stored in a particular global variable (as determined by
  144. the fB-onvaluefR and fB-variablefR options for the entry);  when
  145. the entry is deselected another value (determined by the
  146. fB-offvaluefR option) is stored in the global variable.
  147. An indicator box is displayed to the left of the label in a checkbutton
  148. entry.  If the entry is selected then the indicator's center is displayed
  149. in the color given by the fB-selectcolorfR option for the entry;
  150. otherwise the indicator's center is displayed in the background color for
  151. the menu.  If a fB-commandfR option is specified for a checkbutton
  152. entry, then its value is evaluated as a Tcl command each time the entry
  153. is invoked;  this happens after toggling the entry's
  154. selected state.
  155. .SH "RADIOBUTTON ENTRIES"
  156. .PP
  157. A radiobutton menu entry behaves much like a radiobutton widget.
  158. Radiobutton entries are organized in groups of which only one
  159. entry may be selected at a time.  Whenever a particular entry
  160. becomes selected it stores a particular value into a particular
  161. global variable (as determined by the fB-valuefR and
  162. fB-variablefR options for the entry).  This action
  163. causes any previously-selected entry in the same group
  164. to deselect itself.
  165. Once an entry has become selected, any change to the entry's
  166. associated variable will cause the entry to deselect itself.
  167. Grouping of radiobutton entries is determined by their
  168. associated variables:  if two entries have the same associated
  169. variable then they are in the same group.
  170. An indicator diamond is displayed to the left of the label in each
  171. radiobutton entry.  If the entry is selected then the indicator's
  172. center is displayed in the color given by the fB-selectcolorfR option
  173. for the entry;
  174. otherwise the indicator's center is displayed in the background color for
  175. the menu.  If a fB-commandfR option is specified for a radiobutton
  176. entry, then its value is evaluated as a Tcl command each time the entry
  177. is invoked;  this happens after selecting the entry.
  178. .SH "CASCADE ENTRIES"
  179. .PP
  180. A cascade entry is one with an associated menu (determined
  181. by the fB-menufR option).  Cascade entries allow the construction
  182. of cascading menus.
  183. The fBpostcascadefR widget command can be used to post and unpost
  184. the associated menu just next to of the cascade entry.
  185. The associated menu must be a child of the menu containing
  186. the cascade entry (this is needed in order for menu traversal to
  187. work correctly).
  188. .PP
  189. A cascade entry posts its associated menu by invoking a
  190. Tcl command of the form
  191. .CS
  192. fImenufB post fIx yfR
  193. .CE
  194. where fImenufR is the path name of the associated menu, and fIxfR
  195. and fIyfR are the root-window coordinates of the upper-right
  196. corner of the cascade entry.
  197. .VS
  198. On Unix, the lower-level menu is unposted by executing a Tcl command with
  199. the form
  200. .CS
  201. fImenufB unpostfR
  202. .CE
  203. where fImenufR is the name of the associated menu.
  204. On other platforms, the platform's native code takes care of unposting the
  205. menu.
  206. .VE
  207. .PP
  208. .VS
  209. If a fB-commandfR option is specified for a cascade entry then it is
  210. evaluated as a Tcl command whenever the entry is invoked. This is not
  211. supported on Windows.
  212. .VE
  213. .SH "TEAR-OFF ENTRIES"
  214. .PP
  215. A tear-off entry appears at the top of the menu if enabled with the
  216. fBtearOfffR option.  It is not like other menu entries in that
  217. it cannot be created with the fBaddfR widget command and
  218. cannot be deleted with the fBdeletefR widget command.
  219. When a tear-off entry is created it appears as a dashed line at
  220. the top of the menu.  Under the default bindings, invoking the
  221. tear-off entry causes a torn-off copy to be made of the menu and
  222. all of its submenus.
  223. .VS
  224. .SH "MENUBARS"
  225. .PP
  226. Any menu can be set as a menubar for a toplevel window (see
  227. fBtoplevelfR command for syntax). On the Macintosh, whenever the
  228. toplevel is in front, this menu's cascade items will appear in the
  229. menubar across the top of the main monitor. On Windows and Unix, this
  230. menu's items will be displayed in a menubar across the top of the
  231. window. These menus will behave according to the interface guidelines
  232. of their platforms. For every menu set as a menubar, a clone menu is
  233. made. See the fBCLONESfR section for more information.
  234. .PP
  235. As noted, menubars may behave differently on different platforms.  One
  236. example of this concerns the handling of checkbuttons and radiobuttons
  237. within the menu.  While it is permitted to put these menu elements on
  238. menubars, they may not be drawn with indicators on some platforms, due
  239. to system restrictions.
  240. .VE
  241. .VS
  242. .SH "SPECIAL MENUS IN MENUBARS"
  243. .PP
  244. Certain menus in a menubar will be treated specially.  On the Macintosh,
  245. access to the special Apple and Help menus is provided. On Windows,
  246. access to the Windows System menu in each window is provided. On X Windows,
  247. a special right-justified help menu is provided. In all cases, these
  248. menus must be created with the command name of the menubar menu concatenated
  249. with the special name. So for a menubar named .menubar, on the Macintosh,
  250. the special menus would be .menubar.apple and .menubar.help; on Windows,
  251. the special menu would be .menubar.system; on X Windows, the help
  252. menu would be .menubar.help.
  253. .PP
  254. When Tk sees an Apple menu on the Macintosh, that menu's contents make
  255. up the first items of the Apple menu on the screen whenever the window
  256. containing the menubar is in front. The menu is the
  257. first one that the user sees and has a title which is an Apple logo.
  258. After all of the Tk-defined items, the menu will have a separator,
  259. followed by all of the items in the user's Apple Menu Items folder.
  260. Since the System uses a different menu definition procedure for
  261. the Apple menu than Tk uses for its menus, and the system APIs do
  262. not fully support everything Tk tries to do, the menu item will only
  263. have its text displayed. No font attributes, images, bitmaps, or colors
  264. will be displayed. In addition, a menu with a tearoff item will have
  265. the tearoff item displayed as "(TearOff)".
  266. .PP
  267. When Tk see a Help menu on the Macintosh, the menu's contents are
  268. appended to the standard help menu on the right of the user's menubar
  269. whenever the user's menubar is in front. The first items in the menu
  270. are provided by Apple. Similar to the Apple Menu, customization in this
  271. menu is limited to what the system provides.
  272. .PP
  273. When Tk sees a System menu on Windows, its items are appended to the 
  274. system menu that the menubar is attached to. This menu has an icon
  275. representing a spacebar, and can be invoked with the mouse or by typing
  276. Alt+Spacebar.  Due to limitations in the Windows API, any font changes,
  277. colors, images, bitmaps, or tearoff images will not appear in the
  278. system menu.
  279. .PP
  280. When Tk see a Help menu on X Windows, the menu is moved to be last in
  281. the menubar and is right justified.
  282. .VE
  283. .VS
  284. .SH "CLONES"
  285. .PP
  286. When a menu is set as a menubar for a toplevel window, or when a menu
  287. is torn off, a clone of the menu is made. This clone is a menu widget
  288. in its own right, but it is a child of the original. Changes in the
  289. configuration of the original are reflected in the
  290. clone. Additionally, any cascades that are pointed to are also cloned
  291. so that menu traversal will work right. Clones are destroyed when
  292. either the tearoff or menubar goes away, or when the original menu is
  293. destroyed. 
  294. .VE
  295. .SH "WIDGET COMMAND"
  296. .PP
  297. The fBmenufR command creates a new Tcl command whose
  298. name is fIpathNamefR.  This
  299. command may be used to invoke various
  300. operations on the widget.  It has the following general form:
  301. .CS
  302. fIpathName option fR?fIarg arg ...fR?
  303. .CE
  304. fIOptionfR and the fIargfRs
  305. determine the exact behavior of the command.
  306. .PP
  307. Many of the widget commands for a menu take as one argument an
  308. indicator of which entry of the menu to operate on.  These
  309. indicators are called fIindexfRes and may be specified in
  310. any of the following forms:
  311. .TP 12
  312. fInumberfR
  313. Specifies the entry numerically, where 0 corresponds
  314. to the top-most entry of the menu, 1 to the entry below it, and
  315. so on.
  316. .TP 12
  317. fBactivefR
  318. Indicates the entry that is currently active.  If no entry is
  319. active then this form is equivalent to fBnonefR.  This form may
  320. not be abbreviated.
  321. .TP 12
  322. fBendfR
  323. Indicates the bottommost entry in the menu.  If there are no
  324. entries in the menu then this form is equivalent to fBnonefR.
  325. This form may not be abbreviated.
  326. .TP 12
  327. fBlastfR
  328. Same as fBendfR.
  329. .TP 12
  330. fBnonefR
  331. Indicates ``no entry at all'';  this is used most commonly with
  332. the fBactivatefR option to deactivate all the entries in the
  333. menu.  In most cases the specification of fBnonefR causes
  334. nothing to happen in the widget command.
  335. This form may not be abbreviated.
  336. .TP 12
  337. fB@fInumberfR
  338. In this form, fInumberfR is treated as a y-coordinate in the
  339. menu's window;  the entry closest to that y-coordinate is used.
  340. For example, ``fB@0fR'' indicates the top-most entry in the
  341. window.
  342. .TP 12
  343. fIpatternfR
  344. If the index doesn't satisfy one of the above forms then this
  345. form is used.  fIPatternfR is pattern-matched against the label of
  346. each entry in the menu, in order from the top down, until a
  347. matching entry is found.  The rules of fBTcl_StringMatchfR
  348. are used.
  349. .PP
  350. The following widget commands are possible for menu widgets:
  351. .TP
  352. fIpathName fBactivate fIindexfR
  353. Change the state of the entry indicated by fIindexfR to fBactivefR
  354. and redisplay it using its active colors.
  355. Any previously-active entry is deactivated.  If fIindexfR
  356. is specified as fBnonefR, or if the specified entry is
  357. disabled, then the menu ends up with no active entry.
  358. Returns an empty string.
  359. .TP
  360. fIpathName fBadd fItype fR?fIoption value option value ...fR?
  361. Add a new entry to the bottom of the menu.  The new entry's type
  362. is given by fItypefR and must be one of fBcascadefR,
  363. fBcheckbuttonfR, fBcommandfR, fBradiobuttonfR, or fBseparatorfR,
  364. or a unique abbreviation of one of the above.  If additional arguments
  365. are present, they specify any of the following options:
  366. .RS
  367. .TP
  368. fB-activebackground fIvaluefR
  369. Specifies a background color to use for displaying this entry when it
  370. is active.
  371. If this option is specified as an empty string (the default), then the
  372. fBactiveBackgroundfR option for the overall menu is used.
  373. If the fBtk_strictMotiffR variable has been set to request strict
  374. Motif compliance, then this option is ignored and the fB-backgroundfR
  375. option is used in its place.
  376. This option is not available for separator or tear-off entries.
  377. .TP
  378. fB-activeforeground fIvaluefR
  379. Specifies a foreground color to use for displaying this entry when it
  380. is active.
  381. If this option is specified as an empty string (the default), then the
  382. fBactiveForegroundfR option for the overall menu is used.
  383. This option is not available for separator or tear-off entries.
  384. .TP
  385. fB-accelerator fIvaluefR
  386. Specifies a string to display at the right side of the menu entry.
  387. Normally describes an accelerator keystroke sequence that may be
  388. typed to invoke the same function as the menu entry.  This option
  389. is not available for separator or tear-off entries.
  390. .TP
  391. fB-background fIvaluefR
  392. Specifies a background color to use for displaying this entry when it
  393. is in the normal state (neither active nor disabled).
  394. If this option is specified as an empty string (the default), then the
  395. fBbackgroundfR option for the overall menu is used.
  396. This option is not available for separator or tear-off entries.
  397. .TP
  398. fB-bitmap fIvaluefR
  399. Specifies a bitmap to display in the menu instead of a textual
  400. label, in any of the forms accepted by fBTk_GetBitmapfR.
  401. This option overrides the fB-labelfR option
  402. (as controlled by the fB-compoundfR option)
  403. but may be reset
  404. to an empty string to enable a textual label to be displayed.
  405. If a fB-imagefR option has been specified, it overrides
  406. fB-bitmapfR.
  407. This option is not available for separator or tear-off entries.
  408. .TP
  409. fB-columnbreak fIvaluefR
  410. .VS 8.0
  411. When this option is zero, the entry appears below the previous entry. When
  412. this option is one, the entry appears at the top of a new column in the
  413. menu.
  414. .VE 8.0
  415. .TP
  416. fB-command fIvaluefR
  417. Specifies a Tcl command to execute when the menu entry is invoked.
  418. Not available for separator or tear-off entries.
  419. .VS 8.4
  420. .TP
  421. fB-compound fIvaluefR
  422. Specifies whether the menu entry should display both an image and text,
  423. and if so, where the image should be placed relative to the text.
  424. Valid values for this option are fBbottomfR, fBcenterfR,
  425. fBleftfR, fBnonefR, fBrightfR and fBtopfR.  The default value
  426. is fBnonefR, meaning that the button will display either an image or
  427. text, depending on the values of the fB-imagefR and fB-bitmapfR
  428. options.
  429. .VE
  430. .TP
  431. fB-font fIvaluefR
  432. Specifies the font to use when drawing the label or accelerator
  433. string in this entry.
  434. If this option is specified as an empty string (the default) then
  435. the fBfontfR option for the overall menu is used.
  436. This option is not available for separator or tear-off entries.
  437. .TP
  438. fB-foreground fIvaluefR
  439. Specifies a foreground color to use for displaying this entry when it
  440. is in the normal state (neither active nor disabled).
  441. If this option is specified as an empty string (the default), then the
  442. fBforegroundfR option for the overall menu is used.
  443. This option is not available for separator or tear-off entries.
  444. .VS
  445. .TP
  446. fB-hidemargin fIvaluefR
  447. Specifies whether the standard margins should be drawn for this menu
  448. entry. This is useful when creating palette with images in them, i.e.,
  449. color palettes, pattern palettes, etc. 1 indicates that the margin for
  450. the entry is hidden; 0 means that the margin is used.
  451. .VE
  452. .TP
  453. fB-image fIvaluefR
  454. Specifies an image to display in the menu instead of a text string
  455. or bitmap.
  456. The image must have been created by some previous invocation of
  457. fBimage createfR.
  458. This option overrides the fB-labelfR and fB-bitmapfR options
  459. (as controlled by the fB-compoundfR option)
  460. but may be reset to an empty string to enable a textual or
  461. bitmap label to be displayed.
  462. This option is not available for separator or tear-off entries.
  463. .TP
  464. fB-indicatoron fIvaluefR
  465. Available only for checkbutton and radiobutton entries.
  466. fIValuefR is a boolean that determines whether or not the
  467. indicator should be displayed.
  468. .TP
  469. fB-label fIvaluefR
  470. Specifies a string to display as an identifying label in the menu
  471. entry.  Not available for separator or tear-off entries.
  472. .TP
  473. fB-menu fIvaluefR
  474. Available only for cascade entries.  Specifies the path name of
  475. the submenu associated with this entry.
  476. The submenu must be a child of the menu.
  477. .TP
  478. fB-offvalue fIvaluefR
  479. Available only for checkbutton entries.  Specifies the value to
  480. store in the entry's associated variable when the entry is
  481. deselected.
  482. .TP
  483. fB-onvalue fIvaluefR
  484. Available only for checkbutton entries.  Specifies the value to
  485. store in the entry's associated variable when the entry is selected.
  486. .TP
  487. fB-selectcolor fIvaluefR
  488. Available only for checkbutton and radiobutton entries.
  489. Specifies the color to display in the indicator when the entry is
  490. selected.
  491. If the value is an empty string (the default) then the fBselectColorfR
  492. option for the menu determines the indicator color.
  493. .TP
  494. fB-selectimage fIvaluefR
  495. Available only for checkbutton and radiobutton entries.
  496. Specifies an image to display in the entry (in place of
  497. the fB-imagefR option) when it is selected.
  498. fIValuefR is the name of an image, which must have been created
  499. by some previous invocation of fBimage createfR.
  500. This option is ignored unless the fB-imagefR option has
  501. been specified.
  502. .TP
  503. fB-state fIvaluefR
  504. Specifies one of three states for the entry:  fBnormalfR, fBactivefR,
  505. or fBdisabledfR.  In normal state the entry is displayed using the
  506. fBforegroundfR option for the menu and the fBbackgroundfR
  507. option from the entry or the menu.
  508. The active state is typically used when the pointer is over the entry.
  509. In active state the entry is displayed using the fBactiveForegroundfR
  510. option for the menu along with the fBactivebackgroundfR option from
  511. the entry.  Disabled state means that the entry
  512. should be insensitive:  the default bindings will refuse to activate
  513. or invoke the entry.
  514. In this state the entry is displayed according to the 
  515. fBdisabledForegroundfR option for the menu and the
  516. fBbackgroundfR option from the entry.
  517. This option is not available for separator entries.
  518. .TP
  519. fB-underline fIvaluefR
  520. Specifies the integer index of a character to underline in the entry.
  521. This option is also queried by the default bindings and used to
  522. implement keyboard traversal.
  523. 0 corresponds to the first character of the text displayed in the entry,
  524. 1 to the next character, and so on.
  525. If a bitmap or image is displayed in the entry then this option is ignored.
  526. This option is not available for separator or tear-off entries.
  527. .TP
  528. fB-value fIvaluefR
  529. Available only for radiobutton entries.  Specifies the value to
  530. store in the entry's associated variable when the entry is selected.
  531. If an empty string is specified, then the fB-labelfR option
  532. for the entry as the value to store in the variable.
  533. .TP
  534. fB-variable fIvaluefR
  535. Available only for checkbutton and radiobutton entries.  Specifies
  536. the name of a global value to set when the entry is selected.
  537. For checkbutton entries the variable is also set when the entry
  538. is deselected.  For radiobutton entries, changing the variable
  539. causes the currently-selected entry to deselect itself.
  540. .LP
  541. The fBaddfR widget command returns an empty string.
  542. .RE
  543. .TP
  544. fIpathName fBcgetfR fIoptionfR
  545. Returns the current value of the configuration option given
  546. by fIoptionfR.
  547. fIOptionfR may have any of the values accepted by the fBmenufR
  548. command.
  549. .VS
  550. .TP
  551. fIpathNamefR fBclonefR fInewPathname ?cloneType?fR
  552. Makes a clone of the current menu named fInewPathNamefR. This clone
  553. is a menu in its own right, but any changes to the clone are
  554. propogated to the original menu and vice versa. fIcloneTypefR can be
  555. fBnormalfR, fBmenubarfR, or fBtearofffR. Should not normally be
  556. called outside of the Tk library. See the fBCLONESfR section for
  557. more information.
  558. .VE
  559. .TP
  560. fIpathName fBconfigurefR ?fIoptionfR? ?fIvalue option value ...fR?
  561. Query or modify the configuration options of the widget.
  562. If no fIoptionfR is specified, returns a list describing all of
  563. the available options for fIpathNamefR (see fBTk_ConfigureInfofR for
  564. information on the format of this list).  If fIoptionfR is specified
  565. with no fIvaluefR, then the command returns a list describing the
  566. one named option (this list will be identical to the corresponding
  567. sublist of the value returned if no fIoptionfR is specified).  If
  568. one or more fIoption-valuefR pairs are specified, then the command
  569. modifies the given widget option(s) to have the given value(s);  in
  570. this case the command returns an empty string.
  571. fIOptionfR may have any of the values accepted by the fBmenufR
  572. command.
  573. .TP
  574. fIpathName fBdelete fIindex1fR ?fIindex2fR?
  575. Delete all of the menu entries between fIindex1fR and
  576. fIindex2fR inclusive.
  577. If fIindex2fR is omitted then it defaults to fIindex1fR.
  578. Attempts to delete a tear-off menu entry are ignored (instead, you
  579. should change the fBtearOfffR option to remove the tear-off entry).
  580. .TP
  581. fIpathName fBentrycgetfR fIindex optionfR
  582. Returns the current value of a configuration option for
  583. the entry given by fIindexfR.
  584. fIOptionfR may have any of the values accepted by the fBaddfR
  585. widget command.
  586. .TP
  587. fIpathName fBentryconfigure fIindex fR?fIoptionsfR?
  588. This command is similar to the fBconfigurefR command, except that
  589. it applies to the options for an individual entry, whereas fBconfigurefR
  590. applies to the options for the menu as a whole.
  591. fIOptionsfR may have any of the values accepted by the fBaddfR
  592. widget command.  If fIoptionsfR are specified, options are modified
  593. as indicated
  594. in the command and the command returns an empty string.
  595. If no fIoptionsfR are specified, returns a list describing
  596. the current options for entry fIindexfR (see fBTk_ConfigureInfofR for
  597. information on the format of this list).
  598. .TP
  599. fIpathName fBindex fIindexfR
  600. Returns the numerical index corresponding to fIindexfR, or
  601. fBnonefR if fIindexfR was specified as fBnonefR.
  602. .TP
  603. fIpathName fBinsert fIindexfR fItype fR?fIoption value option value ...fR?
  604. Same as the fBaddfR widget command except that it inserts the new
  605. entry just before the entry given by fIindexfR, instead of appending
  606. to the end of the menu.  The fItypefR, fIoptionfR, and fIvaluefR
  607. arguments have the same interpretation as for the fBaddfR widget
  608. command.  It is not possible to insert new menu entries before the
  609. tear-off entry, if the menu has one.
  610. .TP
  611. fIpathName fBinvoke fIindexfR
  612. Invoke the action of the menu entry.  See the sections on the
  613. individual entries above for details on what happens.  If the
  614. menu entry is disabled then nothing happens.  If the
  615. entry has a command associated with it then the result of that
  616. command is returned as the result of the fBinvokefR widget
  617. command.  Otherwise the result is an empty string.  Note:  invoking
  618. a menu entry does not automatically unpost the menu;  the default
  619. bindings normally take care of this before invoking the fBinvokefR
  620. widget command.
  621. .TP
  622. fIpathName fBpost fIx yfR
  623. Arrange for the menu to be displayed on the screen at the root-window
  624. coordinates given by fIxfR and fIyfR.  These coordinates are
  625. adjusted if necessary to guarantee that the entire menu is visible on
  626. the screen.  This command normally returns an empty string.
  627. If the fBpostCommandfR option has been specified, then its value is
  628. executed as a Tcl script before posting the menu and the result of
  629. that script is returned as the result of the fBpostfR widget
  630. command.
  631. If an error returns while executing the command, then the error is
  632. returned without posting the menu.
  633. .TP
  634. fIpathName fBpostcascade fIindexfR
  635. Posts the submenu associated with the cascade entry given by
  636. fIindexfR, and unposts any previously posted submenu.
  637. If fIindexfR doesn't correspond to a cascade entry,
  638. or if fIpathNamefR isn't posted,
  639. the command has no effect except to unpost any currently posted
  640. submenu.
  641. .TP
  642. fIpathName fBtype fIindexfR
  643. Returns the type of the menu entry given by fIindexfR.
  644. This is the fItypefR argument passed to the fBaddfR widget
  645. command when the entry was created, such as fBcommandfR
  646. or fBseparatorfR, or fBtearofffR for a tear-off entry.
  647. .TP
  648. fIpathName fBunpostfR
  649. .VS
  650. Unmap the window so that it is no longer displayed.  If a
  651. lower-level cascaded menu is posted, unpost that menu.  Returns an
  652. empty string. This subcommand does not work on Windows and the
  653. Macintosh, as those platforms have their own way of unposting menus.
  654. .VE
  655. .TP
  656. fIpathName fByposition fIindexfR
  657. Returns a decimal string giving the y-coordinate within the menu
  658. window of the topmost pixel in the entry specified by fIindexfR.
  659. .SH "MENU CONFIGURATIONS"
  660. .PP
  661. The default bindings support four different ways of using menus:
  662. .VS
  663. .TP
  664. fBPulldown Menus in MenubarfR
  665. This is the most command case. You create a menu widget that will become the
  666. menu bar. You then add cascade entries to this menu, specifying the
  667. pull down menus you wish to use in your menu bar. You then create all
  668. of the pulldowns. Once you have done this, specify the menu using the
  669. fB-menufR option of the toplevel's widget command. See the
  670. fBtoplevelfR manual entry for details.
  671. .VE
  672. .TP
  673. fBPulldown Menus in Menu ButtonsfR
  674. This is the compatible way to do menu bars.  You create one menubutton
  675. widget for each top-level menu, and typically you arrange a series of
  676. menubuttons in a row in a menubar window.  You also create the top-level menus
  677. and any cascaded submenus, and tie them together with fB-menufR
  678. options in menubuttons and cascade menu entries.  The top-level menu must
  679. be a child of the menubutton, and each submenu must be a child of the
  680. menu that refers to it.  Once you have done this, the default bindings
  681. will allow users to traverse and invoke the tree of menus via its
  682. menubutton;  see the fBmenubuttonfR manual entry for details.
  683. .TP
  684. fBPopup MenusfR
  685. Popup menus typically post in response to a mouse button press or
  686. keystroke.  You create the popup menus and any cascaded submenus,
  687. then you call the fBtk_popupfR procedure at the appropriate time
  688. to post the top-level menu.
  689. .TP
  690. fBOption MenusfR
  691. An option menu consists of a menubutton with an associated menu
  692. that allows you to select one of several values.  The current value
  693. is displayed in the menubutton and is also stored in a global
  694. variable.  Use the fBtk_optionMenufR procedure to create option
  695. menubuttons and their menus.
  696. .TP
  697. fBTorn-off MenusfR
  698. You create a torn-off menu by invoking the tear-off entry at
  699. the top of an existing menu.  The default bindings will create a new menu
  700. that is a copy of the original menu and leave it permanently
  701. posted as a top-level window.  The torn-off menu behaves just
  702. the same as the original menu.
  703. .SH "DEFAULT BINDINGS"
  704. .PP
  705. Tk automatically creates class bindings for menus that give them
  706. the following default behavior:
  707. .IP [1]
  708. When the mouse enters a menu, the entry underneath the mouse
  709. cursor activates;  as the mouse moves around the menu, the active
  710. entry changes to track the mouse.
  711. .IP [2]
  712. When the mouse leaves a menu all of the entries in the menu
  713. deactivate, except in the special case where the mouse moves from
  714. a menu to a cascaded submenu.
  715. .IP [3]
  716. When a button is released over a menu, the active entry (if any) is invoked.
  717. The menu also unposts unless it is a torn-off menu.
  718. .IP [4]
  719. The Space and Return keys invoke the active entry and
  720. unpost the menu.
  721. .IP [5]
  722. If any of the entries in a menu have letters underlined with
  723. the fB-underlinefR option, then pressing one of the underlined
  724. letters (or its upper-case or lower-case equivalent) invokes that
  725. entry and unposts the menu.
  726. .IP [6]
  727. The Escape key aborts a menu selection in progress without invoking any
  728. entry.  It also unposts the menu unless it is a torn-off menu.
  729. .IP [7]
  730. The Up and Down keys activate the next higher or lower entry
  731. in the menu.  When one end of the menu is reached, the active
  732. entry wraps around to the other end.
  733. .IP [8]
  734. The Left key moves to the next menu to the left.
  735. If the current menu is a cascaded submenu, then the submenu is
  736. unposted and the current menu entry becomes the cascade entry
  737. in the parent.
  738. If the current menu is a top-level menu posted from a
  739. menubutton, then the current menubutton is unposted and the
  740. next menubutton to the left is posted.
  741. Otherwise the key has no effect.
  742. The left-right order of menubuttons is determined by their stacking
  743. order:  Tk assumes that the lowest menubutton (which by default
  744. is the first one created) is on the left.
  745. .IP [9]
  746. The Right key moves to the next menu to the right.
  747. If the current entry is a cascade entry, then the submenu is
  748. posted and the  current menu entry becomes the first entry
  749. in the submenu.
  750. Otherwise, if the current menu was posted from a
  751. menubutton, then the current menubutton is unposted and the
  752. next menubutton to the right is posted.
  753. .PP
  754. Disabled menu entries are non-responsive:  they don't activate and
  755. they ignore mouse button presses and releases.
  756. .PP
  757. .VS 8.4
  758. Several of the bindings make use of the command fBtk_menuSetFocusfR.
  759. It saves the current focus and sets the focus to its fIpathNamefR
  760. argument, which is a menu widget.
  761. .VE
  762. .PP
  763. The behavior of menus can be changed by defining new bindings for
  764. individual widgets or by redefining the class bindings.
  765. .SH BUGS
  766. .PP
  767. At present it isn't possible to use the
  768. option database to specify values for the options to individual
  769. entries.
  770. .SH KEYWORDS
  771. menu, widget