]> git.saurik.com Git - wxWidgets.git/blob - interface/wx/menu.h
Added command to set wxPG_PROP_READONLY in the propgrid sample
[wxWidgets.git] / interface / wx / menu.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: menu.h
3 // Purpose: interface of wxMenuBar
4 // Author: wxWidgets team
5 // RCS-ID: $Id$
6 // Licence: wxWindows license
7 /////////////////////////////////////////////////////////////////////////////
8
9 /**
10 @class wxMenuBar
11
12 A menu bar is a series of menus accessible from the top of a frame.
13
14 @remarks
15 To respond to a menu selection, provide a handler for EVT_MENU, in the frame
16 that contains the menu bar.
17
18 If you have a toolbar which uses the same identifiers as your EVT_MENU entries,
19 events from the toolbar will also be processed by your EVT_MENU event handlers.
20
21 Tip: under Windows, if you discover that menu shortcuts (for example, Alt-F
22 to show the file menu) are not working, check any EVT_CHAR events you are
23 handling in child windows.
24 If you are not calling event.Skip() for events that you don't process in
25 these event handlers, menu shortcuts may cease to work.
26
27 @library{wxcore}
28 @category{menus}
29
30 @see wxMenu, @ref overview_events
31 */
32 class wxMenuBar : public wxWindow
33 {
34 public:
35 /**
36 Construct an empty menu bar.
37
38 @param style
39 If wxMB_DOCKABLE the menu bar can be detached (wxGTK only).
40 */
41 wxMenuBar(long style = 0);
42
43 /**
44 Construct a menu bar from arrays of menus and titles.
45
46 @param n
47 The number of menus.
48 @param menus
49 An array of menus. Do not use this array again - it now belongs to
50 the menu bar.
51 @param titles
52 An array of title strings. Deallocate this array after creating
53 the menu bar.
54 @param style
55 If wxMB_DOCKABLE the menu bar can be detached (wxGTK only).
56
57 @beginWxPerlOnly
58 Not supported by wxPerl.
59 @endWxPerlOnly
60 */
61 wxMenuBar(size_t n, wxMenu* menus[], const wxString titles[],
62 long style = 0);
63
64 /**
65 Destructor, destroying the menu bar and removing it from the parent
66 frame (if any).
67 */
68 virtual ~wxMenuBar();
69
70 /**
71 Adds the item to the end of the menu bar.
72
73 @param menu
74 The menu to add. Do not deallocate this menu after calling Append().
75 @param title
76 The title of the menu.
77
78 @return @true on success, @false if an error occurred.
79
80 @see Insert()
81 */
82 virtual bool Append(wxMenu* menu, const wxString& title);
83
84 /**
85 Checks or unchecks a menu item.
86
87 @param id
88 The menu item identifier.
89 @param check
90 If @true, checks the menu item, otherwise the item is unchecked.
91
92 @remarks Only use this when the menu bar has been associated with a
93 frame; otherwise, use the wxMenu equivalent call.
94 */
95 void Check(int id, bool check);
96
97 /**
98 Enables or disables (greys out) a menu item.
99
100 @param id
101 The menu item identifier.
102 @param enable
103 @true to enable the item, @false to disable it.
104
105 @remarks Only use this when the menu bar has been associated with a
106 frame; otherwise, use the wxMenu equivalent call.
107 */
108 void Enable(int id, bool enable);
109
110 /**
111 Enables or disables a whole menu.
112
113 @param pos
114 The position of the menu, starting from zero.
115 @param enable
116 @true to enable the menu, @false to disable it.
117
118 @remarks Only use this when the menu bar has been associated with a frame.
119 */
120 virtual void EnableTop(size_t pos, bool enable);
121
122 /**
123 Finds the menu item object associated with the given menu item identifier.
124
125 @param id
126 Menu item identifier.
127 @param menu
128 If not @NULL, menu will get set to the associated menu.
129
130 @return The found menu item object, or @NULL if one was not found.
131
132 @beginWxPerlOnly
133 In wxPerl this method takes just the @a id parameter;
134 in scalar context it returns the associated @c Wx::MenuItem, in list
135 context it returns a 2-element list (item, submenu).
136 @endWxPerlOnly
137 */
138 virtual wxMenuItem* FindItem(int id, wxMenu* menu = NULL) const;
139
140 /**
141 Returns the index of the menu with the given @a title or @c wxNOT_FOUND if no
142 such menu exists in this menubar.
143
144 The @a title parameter may specify either the menu title
145 (with accelerator characters, i.e. @c "&File") or just the
146 menu label (@c "File") indifferently.
147 */
148 int FindMenu(const wxString& title) const;
149
150 /**
151 Finds the menu item id for a menu name/menu item string pair.
152
153 @param menuString
154 Menu title to find.
155 @param itemString
156 Item to find.
157
158 @return The menu item identifier, or wxNOT_FOUND if none was found.
159
160 @remarks Any special menu codes are stripped out of source and target
161 strings before matching.
162 */
163 virtual int FindMenuItem(const wxString& menuString,
164 const wxString& itemString) const;
165
166 /**
167 Gets the help string associated with the menu item identifier.
168
169 @param id
170 The menu item identifier.
171
172 @return The help string, or the empty string if there was no help string
173 or the menu item was not found.
174
175 @see SetHelpString()
176 */
177 wxString GetHelpString(int id) const;
178
179 /**
180 Gets the label associated with a menu item.
181
182 @param id
183 The menu item identifier.
184
185 @return The menu item label, or the empty string if the item was not
186 found.
187
188 @remarks Use only after the menubar has been associated with a frame.
189 */
190 wxString GetLabel(int id) const;
191
192 /**
193 Returns the label of a top-level menu. Note that the returned string does not
194 include the accelerator characters which could have been specified in the menu
195 title string during its construction.
196
197 @param pos
198 Position of the menu on the menu bar, starting from zero.
199
200 @return The menu label, or the empty string if the menu was not found.
201
202 @remarks Use only after the menubar has been associated with a frame.
203
204 @deprecated
205 This function is deprecated in favour of GetMenuLabel() and GetMenuLabelText().
206
207 @see SetLabelTop()
208 */
209 wxString GetLabelTop(size_t pos) const;
210
211 /**
212 Returns the menu at @a menuIndex (zero-based).
213 */
214 wxMenu* GetMenu(size_t menuIndex) const;
215
216 /**
217 Returns the number of menus in this menubar.
218 */
219 size_t GetMenuCount() const;
220
221 /**
222 Returns the label of a top-level menu. Note that the returned string
223 includes the accelerator characters that have been specified in the menu
224 title string during its construction.
225
226 @param pos
227 Position of the menu on the menu bar, starting from zero.
228
229 @return The menu label, or the empty string if the menu was not found.
230
231 @remarks Use only after the menubar has been associated with a frame.
232
233 @see GetMenuLabelText(), SetMenuLabel()
234 */
235 virtual wxString GetMenuLabel(size_t pos) const;
236
237 /**
238 Returns the label of a top-level menu. Note that the returned string does not
239 include any accelerator characters that may have been specified in the menu
240 title string during its construction.
241
242 @param pos
243 Position of the menu on the menu bar, starting from zero.
244
245 @return The menu label, or the empty string if the menu was not found.
246
247 @remarks Use only after the menubar has been associated with a frame.
248
249 @see GetMenuLabel(), SetMenuLabel()
250 */
251 virtual wxString GetMenuLabelText(size_t pos) const;
252
253 /**
254 Inserts the menu at the given position into the menu bar. Inserting menu at
255 position 0 will insert it in the very beginning of it, inserting at position
256 GetMenuCount() is the same as calling Append().
257
258 @param pos
259 The position of the new menu in the menu bar
260 @param menu
261 The menu to add. wxMenuBar owns the menu and will free it.
262 @param title
263 The title of the menu.
264
265 @return @true on success, @false if an error occurred.
266
267 @see Append()
268 */
269 virtual bool Insert(size_t pos, wxMenu* menu, const wxString& title);
270
271 /**
272 Determines whether an item is checked.
273
274 @param id
275 The menu item identifier.
276
277 @return @true if the item was found and is checked, @false otherwise.
278 */
279 bool IsChecked(int id) const;
280
281 /**
282 Determines whether an item is enabled.
283
284 @param id
285 The menu item identifier.
286
287 @return @true if the item was found and is enabled, @false otherwise.
288 */
289 bool IsEnabled(int id) const;
290
291 /**
292 Redraw the menu bar
293 */
294 virtual void Refresh(bool eraseBackground = true, const wxRect* rect = NULL);
295
296 /**
297 Removes the menu from the menu bar and returns the menu object - the caller
298 is responsible for deleting it. This function may be used together with
299 Insert() to change the menubar dynamically.
300
301 @see Replace()
302 */
303 virtual wxMenu* Remove(size_t pos);
304
305 /**
306 Replaces the menu at the given position with another one.
307
308 @param pos
309 The position of the new menu in the menu bar
310 @param menu
311 The menu to add.
312 @param title
313 The title of the menu.
314
315 @return The menu which was previously at position pos.
316 The caller is responsible for deleting it.
317
318 @see Insert(), Remove()
319 */
320 virtual wxMenu* Replace(size_t pos, wxMenu* menu, const wxString& title);
321
322 /**
323 Sets the help string associated with a menu item.
324
325 @param id
326 Menu item identifier.
327 @param helpString
328 Help string to associate with the menu item.
329
330 @see GetHelpString()
331 */
332 void SetHelpString(int id, const wxString& helpString);
333
334 /**
335 Sets the label of a menu item.
336
337 @param id
338 Menu item identifier.
339 @param label
340 Menu item label.
341
342 @remarks Use only after the menubar has been associated with a frame.
343
344 @see GetLabel()
345 */
346 void SetLabel(int id, const wxString& label);
347
348 /**
349 Sets the label of a top-level menu.
350
351 @param pos
352 The position of a menu on the menu bar, starting from zero.
353 @param label
354 The menu label.
355
356 @remarks Use only after the menubar has been associated with a frame.
357
358 @deprecated
359 This function has been deprecated in favour of SetMenuLabel().
360
361 @see GetLabelTop()
362 */
363 void SetLabelTop(size_t pos, const wxString& label);
364
365 /**
366 Sets the label of a top-level menu.
367
368 @param pos
369 The position of a menu on the menu bar, starting from zero.
370 @param label
371 The menu label.
372
373 @remarks Use only after the menubar has been associated with a frame.
374 */
375 virtual void SetMenuLabel(size_t pos, const wxString& label);
376 };
377
378
379
380 /**
381 @class wxMenu
382
383 A menu is a popup (or pull down) list of items, one of which may be
384 selected before the menu goes away (clicking elsewhere dismisses the
385 menu). Menus may be used to construct either menu bars or popup menus.
386
387 A menu item has an integer ID associated with it which can be used to
388 identify the selection, or to change the menu item in some way. A menu item
389 with a special identifier -1 is a separator item and doesn't have an
390 associated command but just makes a separator line appear in the menu.
391
392 @note
393 Please note that @e wxID_ABOUT and @e wxID_EXIT are predefined by wxWidgets
394 and have a special meaning since entries using these IDs will be taken out
395 of the normal menus under MacOS X and will be inserted into the system menu
396 (following the appropriate MacOS X interface guideline).
397 On PalmOS @e wxID_EXIT is disabled according to Palm OS Companion guidelines.
398
399 Menu items may be either @e normal items, @e check items or @e radio items.
400 Normal items don't have any special properties while the check items have a
401 boolean flag associated to them and they show a checkmark in the menu when
402 the flag is set.
403 wxWidgets automatically toggles the flag value when the item is clicked and its
404 value may be retrieved using either wxMenu::IsChecked method of wxMenu or
405 wxMenuBar itself or by using wxEvent::IsChecked when you get the menu
406 notification for the item in question.
407
408 The radio items are similar to the check items except that all the other items
409 in the same radio group are unchecked when a radio item is checked. The radio
410 group is formed by a contiguous range of radio items, i.e. it starts at the
411 first item of this kind and ends with the first item of a different kind (or
412 the end of the menu). Notice that because the radio groups are defined in terms
413 of the item positions inserting or removing the items in the menu containing
414 the radio items risks to not work correctly.
415
416
417 @section menu_allocation Allocation strategy
418
419 All menus except the popup ones must be created on the @b heap.
420 All menus attached to a menubar or to another menu will be deleted by their
421 parent when it is deleted.
422
423 As the frame menubar is deleted by the frame itself, it means that normally
424 all menus used are deleted automatically.
425
426
427 @section menu_eventhandling Event handling
428
429 If the menu is part of a menubar, then wxMenuBar event processing is used.
430
431 With a popup menu (see wxWindow::PopupMenu), there is a variety of ways to
432 handle a menu selection event (@c wxEVT_COMMAND_MENU_SELECTED):
433 - Provide @c EVT_MENU handlers in the window which pops up the menu, or in an
434 ancestor of that window (the simplest method);
435 - Derive a new class from wxMenu and define event table entries using the @c EVT_MENU macro;
436 - Set a new event handler for wxMenu, through wxEvtHandler::SetNextHandler,
437 specifying an object whose class has @c EVT_MENU entries;
438
439 Note that instead of static @c EVT_MENU macros you can also use dynamic
440 connection; see @ref overview_events_bind.
441
442 @library{wxcore}
443 @category{menus}
444
445 @see wxMenuBar, wxWindow::PopupMenu, @ref overview_events,
446 @ref wxFileHistory "wxFileHistory (most recently used files menu)"
447 */
448 class wxMenu : public wxEvtHandler
449 {
450 public:
451 /**
452 Constructs a wxMenu object.
453
454 @param style
455 If set to wxMENU_TEAROFF, the menu will be detachable (wxGTK only).
456 */
457 wxMenu(long style);
458
459 /**
460 Constructs a wxMenu object with a title.
461
462 @param title
463 Title at the top of the menu (not always supported).
464 @param style
465 If set to wxMENU_TEAROFF, the menu will be detachable (wxGTK only).
466 */
467 wxMenu(const wxString& title, long style = 0);
468
469 /**
470 Destructor, destroying the menu.
471
472 @note
473 Under Motif, a popup menu must have a valid parent (the window
474 it was last popped up on) when being destroyed. Therefore, make sure
475 you delete or re-use the popup menu @e before destroying the parent
476 window. Re-use in this context means popping up the menu on a different
477 window from last time, which causes an implicit destruction and
478 recreation of internal data structures.
479 */
480 virtual ~wxMenu();
481
482 /**
483 Adds a menu item.
484
485 @param id
486 The menu command identifier.
487 @param item
488 The string to appear on the menu item.
489 See wxMenuItem::SetItemLabel() for more details.
490 @param helpString
491 An optional help string associated with the item.
492 By default, the handler for the @c wxEVT_MENU_HIGHLIGHT event displays
493 this string in the status line.
494 @param kind
495 May be @c wxITEM_SEPARATOR, @c wxITEM_NORMAL, @c wxITEM_CHECK or @c wxITEM_RADIO.
496
497 Example:
498 @code
499 m_pFileMenu->Append(ID_NEW_FILE, "&New file\tCTRL+N", "Creates a new XYZ document");
500 @endcode
501 or even better for stock menu items (see wxMenuItem::wxMenuItem):
502 @code
503 m_pFileMenu->Append(wxID_NEW, "", "Creates a new XYZ document");
504 @endcode
505
506 @remarks
507 This command can be used after the menu has been shown, as well as on
508 initial creation of a menu or menubar.
509
510 @see AppendSeparator(), AppendCheckItem(), AppendRadioItem(),
511 AppendSubMenu(), Insert(), SetLabel(), GetHelpString(),
512 SetHelpString(), wxMenuItem
513 */
514 wxMenuItem* Append(int id, const wxString& item = wxEmptyString,
515 const wxString& helpString = wxEmptyString,
516 wxItemKind kind = wxITEM_NORMAL);
517
518 /**
519 Adds a submenu.
520
521 @deprecated This function is deprecated, use AppendSubMenu() instead.
522
523 @param id
524 The menu command identifier.
525 @param item
526 The string to appear on the menu item.
527 @param subMenu
528 Pull-right submenu.
529 @param helpString
530 An optional help string associated with the item.
531 By default, the handler for the wxEVT_MENU_HIGHLIGHT event displays
532 this string in the status line.
533
534 @see AppendSeparator(), AppendCheckItem(), AppendRadioItem(),
535 AppendSubMenu(), Insert(), SetLabel(), GetHelpString(),
536 SetHelpString(), wxMenuItem
537 */
538 wxMenuItem* Append(int id, const wxString& item, wxMenu* subMenu,
539 const wxString& helpString = wxEmptyString);
540
541 /**
542 Adds a menu item object.
543
544 This is the most generic variant of Append() method because it may be
545 used for both items (including separators) and submenus and because
546 you can also specify various extra properties of a menu item this way,
547 such as bitmaps and fonts.
548
549 @param menuItem
550 A menuitem object. It will be owned by the wxMenu object after this
551 function is called, so do not delete it yourself.
552
553 @remarks
554 See the remarks for the other Append() overloads.
555
556 @see AppendSeparator(), AppendCheckItem(), AppendRadioItem(),
557 AppendSubMenu(), Insert(), SetLabel(), GetHelpString(),
558 SetHelpString(), wxMenuItem
559 */
560 wxMenuItem* Append(wxMenuItem* menuItem);
561
562 /**
563 Adds a checkable item to the end of the menu.
564
565 @see Append(), InsertCheckItem()
566 */
567 wxMenuItem* AppendCheckItem(int id, const wxString& item,
568 const wxString& help = wxEmptyString);
569
570 /**
571 Adds a radio item to the end of the menu.
572 All consequent radio items form a group and when an item in the group is
573 checked, all the others are automatically unchecked.
574
575 @note Radio items are not supported under wxMotif.
576
577 @see Append(), InsertRadioItem()
578 */
579 wxMenuItem* AppendRadioItem(int id, const wxString& item,
580 const wxString& help = wxEmptyString);
581
582 /**
583 Adds a separator to the end of the menu.
584
585 @see Append(), InsertSeparator()
586 */
587 wxMenuItem* AppendSeparator();
588
589 /**
590 Adds the given @a submenu to this menu. @a text is the text shown in the
591 menu for it and @a help is the help string shown in the status bar when the
592 submenu item is selected.
593 */
594 wxMenuItem* AppendSubMenu(wxMenu* submenu, const wxString& text,
595 const wxString& help = wxEmptyString);
596
597 /**
598 Inserts a break in a menu, causing the next appended item to appear in
599 a new column.
600 */
601 virtual void Break();
602
603 /**
604 Checks or unchecks the menu item.
605
606 @param id
607 The menu item identifier.
608 @param check
609 If @true, the item will be checked, otherwise it will be unchecked.
610
611 @see IsChecked()
612 */
613 void Check(int id, bool check);
614
615 /**
616 Deletes the menu item from the menu. If the item is a submenu, it will
617 @b not be deleted. Use Destroy() if you want to delete a submenu.
618
619 @param id
620 Id of the menu item to be deleted.
621
622 @see FindItem(), Destroy(), Remove()
623 */
624 bool Delete(int id);
625
626 /**
627 Deletes the menu item from the menu. If the item is a submenu, it will
628 @b not be deleted. Use Destroy() if you want to delete a submenu.
629
630 @param item
631 Menu item to be deleted.
632
633 @see FindItem(), Destroy(), Remove()
634 */
635 bool Delete(wxMenuItem* item);
636
637 /**
638 Deletes the menu item from the menu. If the item is a submenu, it will
639 be deleted. Use Remove() if you want to keep the submenu (for example,
640 to reuse it later).
641
642 @param id
643 Id of the menu item to be deleted.
644
645 @see FindItem(), Deletes(), Remove()
646 */
647 bool Destroy(int id);
648
649 /**
650 Deletes the menu item from the menu. If the item is a submenu, it will
651 be deleted. Use Remove() if you want to keep the submenu (for example,
652 to reuse it later).
653
654 @param item
655 Menu item to be deleted.
656
657 @see FindItem(), Deletes(), Remove()
658 */
659 bool Destroy(wxMenuItem* item);
660
661 /**
662 Enables or disables (greys out) a menu item.
663
664 @param id
665 The menu item identifier.
666 @param enable
667 @true to enable the menu item, @false to disable it.
668
669 @see IsEnabled()
670 */
671 void Enable(int id, bool enable);
672
673 /**
674 Finds the menu item object associated with the given menu item identifier
675 and, optionally, the position of the item in the menu.
676
677 Unlike FindItem(), this function doesn't recurse but only looks at the
678 direct children of this menu.
679
680 @param id
681 The identifier of the menu item to find.
682 @param pos
683 If the pointer is not @NULL, it is filled with the item's position if
684 it was found or @c (size_t)wxNOT_FOUND otherwise.
685 @return
686 Menu item object or @NULL if not found.
687 */
688 wxMenuItem *FindChildItem(int id, size_t *pos = NULL) const;
689
690 /**
691 Finds the menu id for a menu item string.
692
693 @param itemString
694 Menu item string to find.
695
696 @return Menu item identifier, or wxNOT_FOUND if none is found.
697
698 @remarks Any special menu codes are stripped out of source and target
699 strings before matching.
700 */
701 virtual int FindItem(const wxString& itemString) const;
702
703 /**
704 Finds the menu item object associated with the given menu item identifier and,
705 optionally, the (sub)menu it belongs to.
706
707 @param id
708 Menu item identifier.
709 @param menu
710 If the pointer is not @NULL, it will be filled with the item's
711 parent menu (if the item was found)
712
713 @return Menu item object or NULL if none is found.
714 */
715 wxMenuItem* FindItem(int id, wxMenu** menu = NULL) const;
716
717 /**
718 Returns the wxMenuItem given a position in the menu.
719 */
720 wxMenuItem* FindItemByPosition(size_t position) const;
721
722 /**
723 Returns the help string associated with a menu item.
724
725 @param id
726 The menu item identifier.
727
728 @return The help string, or the empty string if there is no help string
729 or the item was not found.
730
731 @see SetHelpString(), Append()
732 */
733 virtual wxString GetHelpString(int id) const;
734
735 /**
736 Returns a menu item label.
737
738 @param id
739 The menu item identifier.
740
741 @return The item label, or the empty string if the item was not found.
742
743 @see GetLabelText(), SetLabel()
744 */
745 wxString GetLabel(int id) const;
746
747 /**
748 Returns a menu item label, without any of the original mnemonics and
749 accelerators.
750
751 @param id
752 The menu item identifier.
753
754 @return The item label, or the empty string if the item was not found.
755
756 @see GetLabel(), SetLabel()
757 */
758 wxString GetLabelText(int id) const;
759
760 /**
761 Returns the number of items in the menu.
762 */
763 size_t GetMenuItemCount() const;
764
765 //@{
766 /**
767 Returns the list of items in the menu.
768
769 wxMenuItemList is a pseudo-template list class containing wxMenuItem
770 pointers, see wxList.
771 */
772 wxMenuItemList& GetMenuItems() const;
773 const wxMenuItemList& GetMenuItems() const;
774 //@}
775
776 /**
777 Returns the title of the menu.
778
779 @remarks This is relevant only to popup menus, use
780 wxMenuBar::GetMenuLabel for the menus in the menubar.
781
782 @see SetTitle()
783 */
784 const wxString& GetTitle() const;
785
786 /**
787 Inserts the given @a item before the position @a pos.
788
789 Inserting the item at position GetMenuItemCount() is the same
790 as appending it.
791
792 @see Append(), Prepend()
793 */
794 wxMenuItem* Insert(size_t pos, wxMenuItem* item);
795
796 /**
797 Inserts the given @a item before the position @a pos.
798
799 Inserting the item at position GetMenuItemCount() is the same
800 as appending it.
801
802 @see Append(), Prepend()
803 */
804 wxMenuItem* Insert(size_t pos, int id,
805 const wxString& item = wxEmptyString,
806 const wxString& helpString = wxEmptyString,
807 wxItemKind kind = wxITEM_NORMAL);
808
809 /**
810 Inserts a checkable item at the given position.
811
812 @see Insert(), AppendCheckItem()
813 */
814 wxMenuItem* InsertCheckItem(size_t pos, int id, const wxString& item,
815 const wxString& helpString = wxEmptyString);
816
817 /**
818 Inserts a radio item at the given position.
819
820 @see Insert(), AppendRadioItem()
821 */
822 wxMenuItem* InsertRadioItem(size_t pos, int id, const wxString& item,
823 const wxString& helpString = wxEmptyString);
824
825 /**
826 Inserts a separator at the given position.
827
828 @see Insert(), AppendSeparator()
829 */
830 wxMenuItem* InsertSeparator(size_t pos);
831
832 /**
833 Determines whether a menu item is checked.
834
835 @param id
836 The menu item identifier.
837
838 @return @true if the menu item is checked, @false otherwise.
839
840 @see Check()
841 */
842 bool IsChecked(int id) const;
843
844 /**
845 Determines whether a menu item is enabled.
846
847 @param id
848 The menu item identifier.
849
850 @return @true if the menu item is enabled, @false otherwise.
851
852 @see Enable()
853 */
854 bool IsEnabled(int id) const;
855
856 /**
857 Inserts the given @a item at position 0, i.e. before all the other
858 existing items.
859
860 @see Append(), Insert()
861 */
862 wxMenuItem* Prepend(wxMenuItem* item);
863
864 /**
865 Inserts the given @a item at position 0, i.e. before all the other
866 existing items.
867
868 @see Append(), Insert()
869 */
870 wxMenuItem* Prepend(int id, const wxString& item = wxEmptyString,
871 const wxString& helpString = wxEmptyString,
872 wxItemKind kind = wxITEM_NORMAL);
873
874 /**
875 Inserts a checkable item at position 0.
876
877 @see Prepend(), AppendCheckItem()
878 */
879 wxMenuItem* PrependCheckItem(int id, const wxString& item,
880 const wxString& helpString = wxEmptyString);
881
882 /**
883 Inserts a radio item at position 0.
884
885 @see Prepend(), AppendRadioItem()
886 */
887 wxMenuItem* PrependRadioItem(int id, const wxString& item,
888 const wxString& helpString = wxEmptyString);
889
890 /**
891 Inserts a separator at position 0.
892
893 @see Prepend(), AppendSeparator()
894 */
895 wxMenuItem* PrependSeparator();
896
897 /**
898 Removes the menu item from the menu but doesn't delete the associated C++
899 object. This allows you to reuse the same item later by adding it back to
900 the menu (especially useful with submenus).
901
902 @param id
903 The identifier of the menu item to remove.
904
905 @return A pointer to the item which was detached from the menu.
906 */
907 wxMenuItem* Remove(int id);
908
909 /**
910 Removes the menu item from the menu but doesn't delete the associated C++
911 object. This allows you to reuse the same item later by adding it back to
912 the menu (especially useful with submenus).
913
914 @param item
915 The menu item to remove.
916
917 @return A pointer to the item which was detached from the menu.
918 */
919 wxMenuItem* Remove(wxMenuItem* item);
920
921 /**
922 Sets an item's help string.
923
924 @param id
925 The menu item identifier.
926 @param helpString
927 The help string to set.
928
929 @see GetHelpString()
930 */
931 virtual void SetHelpString(int id, const wxString& helpString);
932
933 /**
934 Sets the label of a menu item.
935
936 @param id
937 The menu item identifier.
938 @param label
939 The menu item label to set.
940
941 @see Append(), GetLabel()
942 */
943 void SetLabel(int id, const wxString& label);
944
945 /**
946 Sets the title of the menu.
947
948 @param title
949 The title to set.
950
951 @remarks This is relevant only to popup menus, use
952 wxMenuBar::SetLabelTop for the menus in the menubar.
953
954 @see GetTitle()
955 */
956 virtual void SetTitle(const wxString& title);
957
958 /**
959 Sends events to @a source (or owning window if @NULL) to update the
960 menu UI.
961
962 This is called just before the menu is popped up with wxWindow::PopupMenu,
963 but the application may call it at other times if required.
964 */
965 void UpdateUI(wxEvtHandler* source = NULL);
966 };
967