]> git.saurik.com Git - wxWidgets.git/blob - docs/latex/wx/menu.tex
wxMenu code clean up
[wxWidgets.git] / docs / latex / wx / menu.tex
1 \section{\class{wxMenu}}\label{wxmenu}
2
3 A menu is a popup (or pull down) list of items, one of which may be
4 selected before the menu goes away (clicking elsewhere dismisses the
5 menu). Menus may be used to construct either menu bars or popup menus.
6
7 A menu item has an integer ID associated with it which can be used to
8 identify the selection, or to change the menu item in some way.
9
10 \wxheading{Derived from}
11
12 \helpref{wxEvtHandler}{wxevthandler}\\
13 \helpref{wxObject}{wxobject}
14
15 \wxheading{Include files}
16
17 <wx/menu.h>
18
19 \wxheading{Event handling}
20
21 If the menu is part of a menubar, then \helpref{wxMenuBar}{wxmenubar} event processing is used.
22
23 With a popup menu, there is a variety of ways to handle a menu selection event
24 (wxEVT\_COMMAND\_MENU\_SELECTED).
25
26 \begin{enumerate}\itemsep=0pt
27 \item Define a callback of type wxFunction, which you pass to the wxMenu constructor.
28 The callback takes a reference to the menu, and a reference to a \helpref{wxCommandEvent}{wxcommandevent}.
29 \item Derive a new class from wxMenu and define event table entries using the EVT\_MENU macro.
30 \item Set a new event handler for wxMenu, using an object whose class has EVT\_MENU entries.
31 \item Provide EVT\_MENU handlers in the window which pops up the menu, or in an ancestor of
32 this window.
33 \end{enumerate}
34
35 \wxheading{See also}
36
37 \helpref{wxMenuBar}{wxmenubar}, \helpref{wxWindow::PopupMenu}{wxwindowpopupmenu},\rtfsp
38 \helpref{Event handling overview}{eventhandlingoverview}
39
40 \latexignore{\rtfignore{\wxheading{Members}}}
41
42 \membersection{wxMenu::wxMenu}\label{wxmenuconstr}
43
44 \func{}{wxMenu}{\param{const wxString\& }{title = ""}, \param{const wxFunction}{ func = NULL}}
45
46 Constructs a wxMenu object.
47
48 \wxheading{Parameters}
49
50 \docparam{title}{A title for the popup menu: the empty string denotes no title.}
51
52 \docparam{func}{A callback function if the menu is used as a popup using \helpref{wxWindow::PopupMenu}{wxwindowpopupmenu}.}
53
54 \pythonnote{The wxPython version of the \tt{wxMenu} constructor
55 doesn't accept the callback argument because of reference counting
56 issues. There is a specialized wxMenu constructor called
57 \tt{wxPyMenu} which does and can be used for PopupMenus when callbacks
58 are needed. You must retain a reference to the menu while useing it
59 otherwise your callback function will get dereferenced when the menu
60 does.
61 }
62
63 \membersection{wxMenu::\destruct{wxMenu}}
64
65 \func{}{\destruct{wxMenu}}{\void}
66
67 Destructor, destroying the menu.
68
69 Note: under Motif, a popup menu must have a valid parent (the window
70 it was last popped up on) when being destroyed. Therefore, make sure
71 you delete or re-use the popup menu {\it before} destroying the
72 parent window. Re-use in this context means popping up the menu on
73 a different window from last time, which causes an implicit destruction
74 and recreation of internal data structures.
75
76 \membersection{wxMenu::Append}\label{wxmenuappend}
77
78 \func{void}{Append}{\param{int}{ id}, \param{const wxString\& }{ item}, \param{const wxString\& }{helpString = ""},\rtfsp
79 \param{const bool}{ checkable = FALSE}}
80
81 Adds a string item to the end of the menu.
82
83 \func{void}{Append}{\param{int}{ id}, \param{const wxString\& }{ item}, \param{wxMenu *}{subMenu},\rtfsp
84 \param{const wxString\& }{helpString = ""}}
85
86 Adds a pull-right submenu to the end of the menu.
87
88 \func{void}{Append}{\param{wxMenuItem*}{ menuItem}}
89
90 Adds a menu item object. You can specify various extra properties of a menu item this way,
91 such as bitmaps and fonts.
92
93 \wxheading{Parameters}
94
95 \docparam{id}{The menu command identifier.}
96
97 \docparam{item}{The string to appear on the menu item.}
98
99 \docparam{menu}{Pull-right submenu.}
100
101 \docparam{checkable}{If TRUE, this item is checkable.}
102
103 \docparam{helpString}{An optional help string associated with the item.
104 By default, \helpref{wxFrame::OnMenuHighlight}{wxframeonmenuhighlight} displays
105 this string in the status line.}
106
107 \docparam{menuItem}{A menuitem object. It will be owned by the wxMenu object after this function
108 is called, so do not delete it yourself.}
109
110 \wxheading{Remarks}
111
112 This command can be used after the menu has been shown, as well as on initial
113 creation of a menu or menubar.
114
115 \wxheading{See also}
116
117 \helpref{wxMenu::AppendSeparator}{wxmenuappendseparator}, \helpref{wxMenu::SetLabel}{wxmenusetlabel}, \helpref{wxMenu::GetHelpString}{wxmenugethelpstring},\rtfsp
118 \helpref{wxMenu::SetHelpString}{wxmenusethelpstring}, \helpref{wxMenuItem}{wxmenuitem}
119
120
121 \pythonnote{In place of a single overloaded method name, wxPython
122 implements the following methods:\par
123 \indented{2cm}{\begin{twocollist}
124 \twocolitem{\bf{Append(id, string, helpStr="", checkable=FALSE)}}{}
125 \twocolitem{\bf{AppendMenu(id, string, aMenu, helpStr="")}}{}
126 \twocolitem{\bf{AppendItem(aMenuItem)}}{}
127 \end{twocollist}}
128 }
129
130
131 \membersection{wxMenu::AppendSeparator}\label{wxmenuappendseparator}
132
133 \func{void}{AppendSeparator}{\void}
134
135 Adds a separator to the end of the menu.
136
137 \wxheading{See also}
138
139 \helpref{wxMenu::Append}{wxmenuappend}
140
141 \membersection{wxMenu::Break}\label{wxmenubreak}
142
143 \func{void}{Break}{\void}
144
145 Inserts a break in a menu, causing the next appended item to appear in a new column.
146
147 \membersection{wxMenu::Check}\label{wxmenucheck}
148
149 \func{void}{Check}{\param{int}{ id}, \param{const bool}{ check}}
150
151 Checks or unchecks the menu item.
152
153 \wxheading{Parameters}
154
155 \docparam{id}{The menu item identifier.}
156
157 \docparam{check}{If TRUE, the item will be checked, otherwise it will be unchecked.}
158
159 \wxheading{See also}
160
161 \helpref{wxMenu::IsChecked}{wxmenuischecked}
162
163 \membersection{wxMenu::Enable}\label{wxmenuenable}
164
165 \func{void}{Enable}{\param{int}{ id}, \param{const bool}{ enable}}
166
167 Enables or disables (greys out) a menu item.
168
169 \wxheading{Parameters}
170
171 \docparam{id}{The menu item identifier.}
172
173 \docparam{enable}{TRUE to enable the menu item, FALSE to disable it.}
174
175 \wxheading{See also}
176
177 \helpref{wxMenu::IsEnabled}{wxmenuisenabled}
178
179 \membersection{wxMenu::FindItem}\label{wxmenufinditem}
180
181 \constfunc{int}{FindItem}{\param{const wxString\& }{itemString}}
182
183 Finds the menu item id for a menu item string.
184
185 \wxheading{Parameters}
186
187 \docparam{itemString}{Menu item string to find.}
188
189 \wxheading{Return value}
190
191 Menu item identifier, or -1 if none is found.
192
193 \wxheading{Remarks}
194
195 Any special menu codes are stripped out of source and target strings
196 before matching.
197
198 \wxheading{See also}
199
200 \helpref{wxMenu::FindItemForId}{wxmenufinditemforid}
201
202 \membersection{wxMenu::FindItemForId}\label{wxmenufinditemforid}
203
204 \constfunc{wxMenuItem*}{FindItemForId}{\param{int}{ id}, \param{wxMenu **}{ menuForItem = NULL}}
205
206 Finds the menu item object associated with the given menu item identifier.
207
208 \wxheading{Parameters}
209
210 \docparam{id}{Menu item identifier.}
211 \docparam{menuForItem}{will be filled with the menu for this item if not NULL.}
212
213 \wxheading{Return value}
214
215 Returns the menu item object, or NULL if it is not found.
216
217 \wxheading{See also}
218
219 \helpref{wxMenu::FindItem}{wxmenufinditem}
220
221 \membersection{wxMenu::GetHelpString}\label{wxmenugethelpstring}
222
223 \constfunc{wxString}{GetHelpString}{\param{int}{ id}}
224
225 Returns the help string associated with a menu item.
226
227 \wxheading{Parameters}
228
229 \docparam{id}{The menu item identifier.}
230
231 \wxheading{Return value}
232
233 The help string, or the empty string if there is no help string or the
234 item was not found.
235
236 \wxheading{See also}
237
238 \helpref{wxMenu::SetHelpString}{wxmenusethelpstring}, \helpref{wxMenu::Append}{wxmenuappend}
239
240 \membersection{wxMenu::GetLabel}\label{wxmenugetlabel}
241
242 \constfunc{wxString}{GetLabel}{\param{int}{ id}}
243
244 Returns a menu item label.
245
246 \wxheading{Parameters}
247
248 \docparam{id}{The menu item identifier.}
249
250 \wxheading{Return value}
251
252 The item label, or the empty string if the item was not found.
253
254 \wxheading{See also}
255
256 \helpref{wxMenu::SetLabel}{wxmenusetlabel}
257
258 \membersection{wxMenu::GetTitle}\label{wxmenugettitle}
259
260 \constfunc{wxString}{GetTitle}{\void}
261
262 Returns the title of the menu.
263
264 \wxheading{Remarks}
265
266 This is relevant only to popup menus.
267
268 \wxheading{See also}
269
270 \helpref{wxMenu::SetTitle}{wxmenusettitle}
271
272 \membersection{wxMenu::IsChecked}\label{wxmenuischecked}
273
274 \constfunc{bool}{IsChecked}{\param{int}{ id}}
275
276 Determines whether a menu item is checked.
277
278 \wxheading{Parameters}
279
280 \docparam{id}{The menu item identifier.}
281
282 \wxheading{Return value}
283
284 TRUE if the menu item is checked, FALSE otherwise.
285
286 \wxheading{See also}
287
288 \helpref{wxMenu::Check}{wxmenucheck}
289
290 \membersection{wxMenu::IsEnabled}\label{wxmenuisenabled}
291
292 \constfunc{bool}{IsEnabled}{\param{int}{ id}}
293
294 Determines whether a menu item is enabled.
295
296 \wxheading{Parameters}
297
298 \docparam{id}{The menu item identifier.}
299
300 \wxheading{Return value}
301
302 TRUE if the menu item is enabled, FALSE otherwise.
303
304 \wxheading{See also}
305
306 \helpref{wxMenu::Enable}{wxmenuenable}
307
308 \membersection{wxMenu::SetHelpString}\label{wxmenusethelpstring}
309
310 \func{void}{SetHelpString}{\param{int}{ id}, \param{const wxString\& }{helpString}}
311
312 Sets an item's help string.
313
314 \wxheading{Parameters}
315
316 \docparam{id}{The menu item identifier.}
317
318 \docparam{helpString}{The help string to set.}
319
320 \wxheading{See also}
321
322 \helpref{wxMenu::GetHelpString}{wxmenugethelpstring}
323
324 \membersection{wxMenu::SetLabel}\label{wxmenusetlabel}
325
326 \func{void}{SetLabel}{\param{int}{ id}, \param{const wxString\& }{label}}
327
328 Sets the label of a menu item.
329
330 \wxheading{Parameters}
331
332 \docparam{id}{The menu item identifier.}
333
334 \docparam{label}{The menu item label to set.}
335
336 \wxheading{See also}
337
338 \helpref{wxMenu::Append}{wxmenuappend}, \helpref{wxMenu::GetLabel}{wxmenugetlabel}
339
340 \membersection{wxMenu::SetTitle}\label{wxmenusettitle}
341
342 \func{void}{SetTitle}{\param{const wxString\& }{title}}
343
344 Sets the title of the menu.
345
346 \wxheading{Parameters}
347
348 \docparam{title}{The title to set.}
349
350 \wxheading{Remarks}
351
352 This is relevant only to popup menus.
353
354 \wxheading{See also}
355
356 \helpref{wxMenu::SetTitle}{wxmenusettitle}
357
358 \membersection{wxMenu::UpdateUI}\label{wxmenuupdateui}
359
360 \constfunc{void}{UpdateUI}{\param{wxEvtHandler*}{ source = NULL}}
361
362 Sends events to {\it source} (or owning window if NULL) to update the
363 menu UI. This is called just before the menu is popped up with \helpref{wxWindow::PopupMenu}{wxwindowpopupmenu}, but
364 the application may call it at other times if required.
365
366 \wxheading{See also}
367
368 \helpref{wxUpdateUIEvent}{wxupdateuievent}
369
370 \section{\class{wxMenuBar}}\label{wxmenubar}
371
372 A menu bar is a series of menus accessible from the top of a frame.
373
374 \wxheading{Derived from}
375
376 \helpref{wxEvtHandler}{wxevthandler}\\
377 \helpref{wxObject}{wxobject}
378
379 \wxheading{Include files}
380
381 <wx/menu.h>
382
383 \wxheading{Event handling}
384
385 To respond to a menu selection, provide a handler for EVT\_MENU, in the frame
386 that contains the menu bar.
387
388 \wxheading{See also}
389
390 \helpref{wxMenu}{wxmenu}, \helpref{Event handling overview}{eventhandlingoverview}
391
392 \latexignore{\rtfignore{\wxheading{Members}}}
393
394 \membersection{wxMenuBar::wxMenuBar}\label{wxmenubarconstr}
395
396 \func{void}{wxMenuBar}{\void}
397
398 Default constructor.
399
400 \func{void}{wxMenuBar}{\param{int}{ n}, \param{wxMenu*}{ menus[]}, \param{const wxString }{titles[]}}
401
402 Construct a menu bar from arrays of menus and titles.
403
404 \wxheading{Parameters}
405
406 \docparam{n}{The number of menus.}
407
408 \docparam{menus}{An array of menus. Do not use this array again - it now belongs to the
409 menu bar.}
410
411 \docparam{titles}{An array of title strings. Deallocate this array after creating the menu bar.}
412
413 \pythonnote{Only the default constructor is supported in wxPython.
414 Use wxMenuBar.Append instead.}
415
416
417 \membersection{wxMenuBar::\destruct{wxMenuBar}}
418
419 \func{void}{\destruct{wxMenuBar}}{\void}
420
421 Destructor, destroying the menu bar and removing it from the parent frame (if any).
422
423 \membersection{wxMenuBar::Append}\label{wxmenubarappend}
424
425 \func{void}{Append}{\param{wxMenu *}{menu}, \param{const wxString\& }{title}}
426
427 Adds the item to the end of the menu bar.
428
429 \wxheading{Parameters}
430
431 \docparam{menu}{The menu to add. Do not deallocate this menu after calling {\bf Append}.}
432
433 \docparam{title}{The title of the menu.}
434
435 \membersection{wxMenuBar::Check}\label{wxmenubarcheck}
436
437 \func{void}{Check}{\param{int}{ id}, \param{const bool}{ check}}
438
439 Checks or unchecks a menu item.
440
441 \wxheading{Parameters}
442
443 \docparam{id}{The menu item identifier.}
444
445 \docparam{check}{If TRUE, checks the menu item, otherwise the item is unchecked.}
446
447 \wxheading{Remarks}
448
449 Only use this when the menu bar has been associated
450 with a frame; otherwise, use the wxMenu equivalent call.
451
452 \membersection{wxMenuBar::Enable}\label{wxmenubarenable}
453
454 \func{void}{Enable}{\param{int}{ id}, \param{const bool}{ enable}}
455
456 Enables or disables (greys out) a menu item.
457
458 \wxheading{Parameters}
459
460 \docparam{id}{The menu item identifier.}
461
462 \docparam{enable}{TRUE to enable the item, FALSE to disable it.}
463
464 \wxheading{Remarks}
465
466 Only use this when the menu bar has been
467 associated with a frame; otherwise, use the wxMenu equivalent call.
468
469 \membersection{wxMenuBar::EnableTop}\label{wxmenubarenabletop}
470
471 \func{void}{EnableTop}{\param{int}{ pos}, \param{const bool}{ enable}}
472
473 Enables or disables a whole menu.
474
475 \wxheading{Parameters}
476
477 \docparam{pos}{The position of the menu, starting from zero.}
478
479 \docparam{enable}{TRUE to enable the menu, FALSE to disable it.}
480
481 \wxheading{Remarks}
482
483 Only use this when the menu bar has been
484 associated with a frame.
485
486 \membersection{wxMenuBar::FindMenuItem}\label{wxmenubarfindmenuitem}
487
488 \constfunc{int}{FindMenuItem}{\param{const wxString\& }{menuString}, \param{const wxString\& }{itemString}}
489
490 Finds the menu item id for a menu name/menu item string pair.
491
492 \wxheading{Parameters}
493
494 \docparam{menuString}{Menu title to find.}
495
496 \docparam{itemString}{Item to find.}
497
498 \wxheading{Return value}
499
500 The menu item identifier, or -1 if none was found.
501
502 \wxheading{Remarks}
503
504 Any special menu codes are stripped out of source and target strings
505 before matching.
506
507 \membersection{wxMenuBar::FindItemById}\label{wxmenubarfinditembyid}
508
509 \constfunc{wxMenuItem *}{FindItemById}{\param{int}{ id}}
510
511 Finds the menu item object associated with the given menu item identifier,
512
513 \wxheading{Parameters}
514
515 \docparam{id}{Menu item identifier.}
516
517 \wxheading{Return value}
518
519 The found menu item object, or NULL if one was not found.
520
521 \membersection{wxMenuBar::GetHelpString}\label{wxmenubargethelpstring}
522
523 \constfunc{wxString}{GetHelpString}{\param{int}{ id}}
524
525 Gets the help string associated with the menu item identifer.
526
527 \wxheading{Parameters}
528
529 \docparam{id}{The menu item identifier.}
530
531 \wxheading{Return value}
532
533 The help string, or the empty string if there was no help string or the menu item
534 was not found.
535
536 \wxheading{See also}
537
538 \helpref{wxMenuBar::SetHelpString}{wxmenubarsethelpstring}
539
540 \membersection{wxMenuBar::GetLabel}\label{wxmenubargetlabel}
541
542 \constfunc{wxString}{GetLabel}{\param{int}{ id}}
543
544 Gets the label associated with a menu item.
545
546 \wxheading{Parameters}
547
548 \docparam{id}{The menu item identifier.}
549
550 \wxheading{Return value}
551
552 The menu item label, or the empty string if the item was not found.
553
554 \wxheading{Remarks}
555
556 Use only after the menubar has been associated with a frame.
557
558 \membersection{wxMenuBar::GetLabelTop}\label{wxmenubargetlabeltop}
559
560 \constfunc{wxString}{GetLabelTop}{\param{int}{ pos}}
561
562 Returns the label of a top-level menu.
563
564 \wxheading{Parameters}
565
566 \docparam{pos}{Position of the menu on the menu bar, starting from zero.}
567
568 \wxheading{Return value}
569
570 The menu label, or the empty string if the menu was not found.
571
572 \wxheading{Remarks}
573
574 Use only after the menubar has been associated with a frame.
575
576 \wxheading{See also}
577
578 \helpref{wxMenuBar::SetLabelTop}{wxmenubarsetlabeltop}
579
580 \membersection{wxMenuBar::GetMenu}\label{wxmenubargetmenu}
581
582 \constfunc{wxMenu*}{GetMenu}{\param{int}{ menuIndex}}
583
584 Returns the menu at {\it menuIndex} (zero-based).
585
586 \membersection{wxMenuBar::GetMenuCount}\label{wxmenubargetmenucount}
587
588 \constfunc{int}{GetMenuCount}{\void}
589
590 Returns the number of menus in this menubar.
591
592 \membersection{wxMenuBar::IsChecked}\label{wxmenubarischecked}
593
594 \constfunc{bool}{IsChecked}{\param{int}{ id}}
595
596 Determines whether an item is checked.
597
598 \wxheading{Parameters}
599
600 \docparam{id}{The menu item identifier.}
601
602 \wxheading{Return value}
603
604 TRUE if the item was found and is checked, FALSE otherwise.
605
606 \membersection{wxMenuBar::IsEnabled}\label{wxmenubarisenabled}
607
608 \constfunc{bool}{IsEnabled}{\param{int}{ id}}
609
610 Determines whether an item is enabled.
611
612 \wxheading{Parameters}
613
614 \docparam{id}{The menu item identifier.}
615
616 \wxheading{Return value}
617
618 TRUE if the item was found and is enabled, FALSE otherwise.
619
620 \membersection{wxMenuBar::SetHelpString}\label{wxmenubarsethelpstring}
621
622 \func{void}{SetHelpString}{\param{int}{ id}, \param{const wxString\& }{helpString}}
623
624 Sets the help string associated with a menu item.
625
626 \wxheading{Parameters}
627
628 \docparam{id}{Menu item identifier.}
629
630 \docparam{helpString}{Help string to associate with the menu item.}
631
632 \wxheading{See also}
633
634 \helpref{wxMenuBar::GetHelpString}{wxmenubargethelpstring}
635
636 \membersection{wxMenuBar::SetLabel}\label{wxmenubarsetlabel}
637
638 \func{void}{SetLabel}{\param{int}{ id}, \param{const wxString\& }{label}}
639
640 Sets the label of a menu item.
641
642 \wxheading{Parameters}
643
644 \docparam{id}{Menu item identifier.}
645
646 \docparam{label}{Menu item label.}
647
648 \wxheading{Remarks}
649
650 Use only after the menubar has been associated with a frame.
651
652 \wxheading{See also}
653
654 \helpref{wxMenuBar::GetLabel}{wxmenubargetlabel}
655
656 \membersection{wxMenuBar::SetLabelTop}\label{wxmenubarsetlabeltop}
657
658 \func{void}{SetLabelTop}{\param{int}{ pos}, \param{const wxString\& }{label}}
659
660 Sets the label of a top-level menu.
661
662 \wxheading{Parameters}
663
664 \docparam{pos}{The position of a menu on the menu bar, starting from zero.}
665
666 \docparam{label}{The menu label.}
667
668 \wxheading{Remarks}
669
670 Use only after the menubar has been associated with a frame.
671
672 \wxheading{See also}
673
674 \helpref{wxMenuBar::GetLabelTop}{wxmenubargetlabeltop}
675