]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/menuitem.h
Ensure that the overall table border doesn't get overdrawn by cell borders with a...
[wxWidgets.git] / interface / wx / menuitem.h
index da71be9190dab3b11efa55a2030f26a922e4051b..af5a6d29435fe191a93e1909f5f518483a82da1e 100644 (file)
@@ -2,8 +2,7 @@
 // Name:        menuitem.h
 // Purpose:     interface of wxMenu, wxMenuItem
 // Author:      wxWidgets team
-// RCS-ID:      $Id$
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 /**
 
     @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 
         <tt>\\t</tt> followed by a valid key combination (e.g. <tt>CTRL+V</tt>).
-        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.