]> git.saurik.com Git - wxWidgets.git/blob - include/wx/univ/menuitem.h
maintaint the mouse capture stack in all ports, not just wxUniv
[wxWidgets.git] / include / wx / univ / menuitem.h
1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: wx/univ/menuitem.h
3 // Purpose: wxMenuItem class for wxUniversal
4 // Author: Vadim Zeitlin
5 // Modified by:
6 // Created: 05.05.01
7 // RCS-ID: $Id$
8 // Copyright: (c) 2001 SciTech Software, Inc. (www.scitechsoft.com)
9 // Licence: wxWindows licence
10 ///////////////////////////////////////////////////////////////////////////////
11
12 #ifndef _WX_UNIV_MENUITEM_H_
13 #define _WX_UNIV_MENUITEM_H_
14
15 #ifdef __GNUG__
16 #pragma interface "univmenuitem.h"
17 #endif
18
19 // ----------------------------------------------------------------------------
20 // wxMenuItem implements wxMenuItemBase
21 // ----------------------------------------------------------------------------
22
23 class WXDLLEXPORT wxMenuItem : public wxMenuItemBase
24 {
25 public:
26 // ctor & dtor
27 wxMenuItem(wxMenu *parentMenu = (wxMenu *)NULL,
28 int id = wxID_SEPARATOR,
29 const wxString& name = wxEmptyString,
30 const wxString& help = wxEmptyString,
31 bool isCheckable = FALSE,
32 wxMenu *subMenu = (wxMenu *)NULL);
33 virtual ~wxMenuItem();
34
35 // override base class virtuals to update the item appearance on screen
36 virtual void SetText(const wxString& text);
37 virtual void SetCheckable(bool checkable);
38
39 virtual void Enable(bool enable = TRUE);
40 virtual void Check(bool check = TRUE);
41
42 // we add some extra functions which are also available under MSW from
43 // wxOwnerDrawn class - they will be moved to wxMenuItemBase later
44 // hopefully
45 void SetBitmaps(const wxBitmap& bmpChecked,
46 const wxBitmap& bmpUnchecked = wxNullBitmap);
47 void SetBitmap(const wxBitmap& bmp) { SetBitmaps(bmp); }
48 const wxBitmap& GetBitmap(bool checked = TRUE) const
49 { return checked ? m_bmpChecked : m_bmpUnchecked; }
50
51 // wxUniv-specific methods for implementation only starting from here
52
53 // get the accel index of our label or -1 if none
54 int GetAccelIndex() const { return m_indexAccel; }
55
56 // get the accel string (displayed to the right of the label)
57 const wxString& GetAccelString() const { return m_strAccel; }
58
59 // set/get the y coord and the height of this item: note that it must be
60 // set first and retrieved later, the item doesn't calculate it itself
61 void SetGeometry(wxCoord y, wxCoord height)
62 {
63 m_posY = y;
64 m_height = height;
65 }
66
67 wxCoord GetPosition() const
68 {
69 wxASSERT_MSG( m_posY != -1, _T("must call SetHeight first!") );
70
71 return m_posY;
72 }
73
74 wxCoord GetHeight() const
75 {
76 wxASSERT_MSG( m_height != -1, _T("must call SetHeight first!") );
77
78 return m_height;
79 }
80
81 protected:
82 // notify the menu about the change in this item
83 inline void NotifyMenu();
84
85 // set the accel index and string from text
86 void UpdateAccelInfo();
87
88 // the bitmaps (may be invalid, then they're not used)
89 wxBitmap m_bmpChecked,
90 m_bmpUnchecked;
91
92 // the position of the accelerator in our label, -1 if none
93 int m_indexAccel;
94
95 // the accel string (i.e. "Ctrl-Q" or "Alt-F1")
96 wxString m_strAccel;
97
98 // the position and height of the displayed item
99 wxCoord m_posY,
100 m_height;
101
102 private:
103 DECLARE_DYNAMIC_CLASS(wxMenuItem)
104 };
105
106 #endif // _WX_UNIV_MENUITEM_H_
107