]> 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
 // 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)}
 
     @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)}
         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
         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.
         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.
 
         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);
 
         // 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);
 
         // use all stock properties except for the bitmap:
         wxMenuItem *mymenu = new wxMenuItem(helpMenu, wxID_ABOUT);
@@ -155,7 +156,7 @@ public:
         
         @onlyfor{wxmsw}
     */
         
         @onlyfor{wxmsw}
     */
-    wxColour GetBackgroundColour() const;
+    wxColour& GetBackgroundColour() const;
 
     /**
         Returns the checked or unchecked bitmap.
 
     /**
         Returns the checked or unchecked bitmap.
@@ -169,7 +170,7 @@ public:
         
         @onlyfor{wxmsw}
     */
         
         @onlyfor{wxmsw}
     */
-    wxFont GetFont() const;
+    wxFont& GetFont() const;
 
     /**
         Returns the help string associated with the menu item.
 
     /**
         Returns the help string associated with the menu item.
@@ -255,7 +256,7 @@ public:
         
         @onlyfor{wxmsw}
     */
         
         @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.
     /**
         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;
 
     */
     bool IsCheckable() const;
 
@@ -281,6 +295,13 @@ public:
     */
     virtual bool IsEnabled() const;
 
     */
     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.
     */
     /**
         Returns @true if the item is a separator.
     */
@@ -305,7 +326,7 @@ public:
         
         @onlyfor{wxmsw}
     */
         
         @onlyfor{wxmsw}
     */
-    void SetBackgroundColour(const wxColour& colour) const;
+    void SetBackgroundColour(const wxColour& colour);
 
     /**
         Sets the bitmap for the menu item.
 
     /**
         Sets the bitmap for the menu item.
@@ -314,6 +335,16 @@ public:
         @a checked is @true (default value) or SetBitmaps(wxNullBitmap, bmp)
         otherwise.
 
         @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);
         @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.
         
     /**
         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.
         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>).
         
         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
         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
         - @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
         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);
         @see GetItemLabel(), GetItemLabelText()
     */
     virtual void SetItemLabel(const wxString& label);
@@ -394,7 +439,7 @@ public:
         
         @onlyfor{wxmsw}
     */
         
         @onlyfor{wxmsw}
     */
-    void SetMarginWidth(int width) const;
+    void SetMarginWidth(int width);
 
     /**
         Sets the parent menu which will contain this menu item.
 
     /**
         Sets the parent menu which will contain this menu item.