X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7145bcfc4738ad54199b5ede4c45a14adf037315..36a0190ebd5bd9a7302f60f6dcd608b80574e21c:/interface/wx/menuitem.h diff --git a/interface/wx/menuitem.h b/interface/wx/menuitem.h index da71be9190..af5a6d2943 100644 --- a/interface/wx/menuitem.h +++ b/interface/wx/menuitem.h @@ -2,8 +2,7 @@ // Name: menuitem.h // Purpose: interface of wxMenu, wxMenuItem // Author: wxWidgets team -// RCS-ID: $Id$ -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// /** @@ -19,10 +18,10 @@ @beginEventEmissionTable{wxCommandEvent,wxMenuEvent} @event{EVT_MENU(id, func)} - Process a @c wxEVT_COMMAND_MENU_SELECTED command, which is generated by a menu item. + Process a @c wxEVT_MENU command, which is generated by a menu item. This type of event is sent as wxCommandEvent. @event{EVT_MENU_RANGE(id1, id2, func)} - Process a @c wxEVT_COMMAND_MENU_RANGE command, which is generated by a range of menu items. + Process a @c wxEVT_MENU command, which is generated by a range of menu items. This type of event is sent as wxCommandEvent. @event{EVT_MENU_OPEN(func)} A menu is about to be opened. On Windows, this is only sent once for each @@ -55,8 +54,10 @@ public: For the standard menu items (such as commands to open a file, exit the program and so on, see @ref page_stockitems for the full list) it is enough to specify just the stock ID and leave @a text and @a helpString empty. + Some platforms (currently wxGTK only, and see the remark in SetBitmap() + documentation) will also show standard bitmaps for stock menu items. - In fact, leaving at least @a text empty for the stock menu items is strongly + Leaving at least @a text empty for the stock menu items is actually strongly recommended as they will have appearance and keyboard interface (including standard accelerators) familiar to the user. @@ -73,7 +74,7 @@ public: helpMenu->Append(wxID_ABOUT); // use the stock label and the stock accelerator but not the stock help string: - helpMenu->Append(wxID_ABOUT, wxEmptyString, "My custom help string"); + helpMenu->Append(wxID_ABOUT, "", "My custom help string"); // use all stock properties except for the bitmap: wxMenuItem *mymenu = new wxMenuItem(helpMenu, wxID_ABOUT); @@ -155,7 +156,7 @@ public: @onlyfor{wxmsw} */ - wxColour GetBackgroundColour() const; + wxColour& GetBackgroundColour() const; /** Returns the checked or unchecked bitmap. @@ -169,7 +170,7 @@ public: @onlyfor{wxmsw} */ - wxFont GetFont() const; + wxFont& GetFont() const; /** Returns the help string associated with the menu item. @@ -255,7 +256,7 @@ public: @onlyfor{wxmsw} */ - wxColour GetTextColour() const; + wxColour& GetTextColour() const; //@} @@ -266,8 +267,21 @@ public: */ //@{ + /** + Returns @true if the item is a check item. + + Unlike IsCheckable() this doesn't return @true for the radio buttons. + + @since 2.9.5 + */ + bool IsCheck() const; + /** Returns @true if the item is checkable. + + Notice that the radio buttons are considered to be checkable as well, + so this method returns @true for them too. Use IsCheck() if you want to + test for the check items only. */ bool IsCheckable() const; @@ -281,6 +295,13 @@ public: */ virtual bool IsEnabled() const; + /** + Returns @true if the item is a radio button. + + @since 2.9.5 + */ + bool IsRadio() const; + /** Returns @true if the item is a separator. */ @@ -305,7 +326,7 @@ public: @onlyfor{wxmsw} */ - void SetBackgroundColour(const wxColour& colour) const; + void SetBackgroundColour(const wxColour& colour); /** Sets the bitmap for the menu item. @@ -314,6 +335,16 @@ public: @a checked is @true (default value) or SetBitmaps(wxNullBitmap, bmp) otherwise. + SetBitmap() must be called before the item is appended to the menu, + i.e. appending the item without a bitmap and setting one later is not + guaranteed to work. But the bitmap can be changed or reset later if it + had been set up initially. + + Notice that GTK+ uses a global setting called @c gtk-menu-images to + determine if the images should be shown in the menus at all. If it is + off (which is the case in e.g. Gnome 2.28 by default), no images will + be shown, consistently with the native behaviour. + @onlyfor{wxmsw,wxosx,wxgtk} */ virtual void SetBitmap(const wxBitmap& bmp, bool checked = true); @@ -342,7 +373,7 @@ public: /** Sets the label associated with the menu item. - Note that if the ID of this menu item corrisponds to a stock ID, then it is + Note that if the ID of this menu item corresponds to a stock ID, then it is not necessary to specify a label: wxWidgets will automatically use the stock item label associated with that ID. See the @ref wxMenuItem::wxMenuItem "constructor" for more info. @@ -355,13 +386,21 @@ public: Optionally you can specify also an accelerator string appending a tab character \\t followed by a valid key combination (e.g. CTRL+V). - Its general syntax is any combination of @c "CTRL", @c "ALT" and @c "SHIFT" strings - (case doesn't matter) separated by either @c '-' or @c '+' characters and followed - by the accelerator itself. + Its general syntax is any combination of @c "CTRL", @c "RAWCTRL", @c + "ALT" and @c "SHIFT" strings (case doesn't matter) separated by either + @c '-' or @c '+' characters and followed by the accelerator itself. + Notice that @c CTRL corresponds to the "Ctrl" key on most platforms but + not under Mac OS where it is mapped to "Cmd" key on Mac keyboard. + Usually this is exactly what you want in portable code but if you + really need to use the (rarely used for this purpose) "Ctrl" key even + under Mac, you may use @c RAWCTRL to prevent this mapping. Under the + other platforms @c RAWCTRL is the same as plain @c CTRL. + The accelerator may be any alphanumeric character, any function key (from F1 to F12) or one of the special characters listed in the table below (again, case doesn't matter): - @c DEL or @c DELETE: Delete key + - @c BACK : Backspace key - @c INS or @c INSERT: Insert key - @c ENTER or @c RETURN: Enter key - @c PGUP: PageUp key @@ -384,7 +423,13 @@ public: m_pMyMenuItem3->SetItemLabel("Simple item"); m_pMyMenuItem4->SetItemLabel("Item with &accelerator"); @endcode - + + @note In wxGTK using @c "SHIFT" with non-alphabetic characters + currently doesn't work, even in combination with other modifiers, due + to GTK+ limitation. E.g. @c Shift+Ctrl+A works but @c Shift+Ctrl+1 or + @c Shift+/ do not, so avoid using accelerators of this form in portable + code. + @see GetItemLabel(), GetItemLabelText() */ virtual void SetItemLabel(const wxString& label); @@ -394,7 +439,7 @@ public: @onlyfor{wxmsw} */ - void SetMarginWidth(int width) const; + void SetMarginWidth(int width); /** Sets the parent menu which will contain this menu item.