1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: wx/univ/menuitem.h
3 // Purpose: wxMenuItem class for wxUniversal
4 // Author: Vadim Zeitlin
7 // Copyright: (c) 2001 SciTech Software, Inc. (www.scitechsoft.com)
8 // Licence: wxWindows licence
9 ///////////////////////////////////////////////////////////////////////////////
11 #ifndef _WX_UNIV_MENUITEM_H_
12 #define _WX_UNIV_MENUITEM_H_
14 // ----------------------------------------------------------------------------
15 // wxMenuItem implements wxMenuItemBase
16 // ----------------------------------------------------------------------------
18 class WXDLLIMPEXP_CORE wxMenuItem
: public wxMenuItemBase
22 wxMenuItem(wxMenu
*parentMenu
= NULL
,
23 int id
= wxID_SEPARATOR
,
24 const wxString
& name
= wxEmptyString
,
25 const wxString
& help
= wxEmptyString
,
26 wxItemKind kind
= wxITEM_NORMAL
,
27 wxMenu
*subMenu
= NULL
);
28 virtual ~wxMenuItem();
30 // override base class virtuals to update the item appearance on screen
31 virtual void SetItemLabel(const wxString
& text
);
32 virtual void SetCheckable(bool checkable
);
34 virtual void Enable(bool enable
= true);
35 virtual void Check(bool check
= true);
37 // we add some extra functions which are also available under MSW from
38 // wxOwnerDrawn class - they will be moved to wxMenuItemBase later
40 void SetBitmaps(const wxBitmap
& bmpChecked
,
41 const wxBitmap
& bmpUnchecked
= wxNullBitmap
);
42 void SetBitmap(const wxBitmap
& bmp
) { SetBitmaps(bmp
); }
43 const wxBitmap
& GetBitmap(bool checked
= true) const
44 { return checked
? m_bmpChecked
: m_bmpUnchecked
; }
46 void SetDisabledBitmap( const wxBitmap
& bmpDisabled
)
47 { m_bmpDisabled
= bmpDisabled
; }
48 const wxBitmap
& GetDisabledBitmap() const
49 { return m_bmpDisabled
; }
51 // mark item as belonging to the given radio group
52 void SetAsRadioGroupStart();
53 void SetRadioGroupStart(int start
);
54 void SetRadioGroupEnd(int end
);
56 // wxUniv-specific methods for implementation only starting from here
58 // get the accel index of our label or -1 if none
59 int GetAccelIndex() const { return m_indexAccel
; }
61 // get the accel string (displayed to the right of the label)
62 const wxString
& GetAccelString() const { return m_strAccel
; }
64 // set/get the y coord and the height of this item: note that it must be
65 // set first and retrieved later, the item doesn't calculate it itself
66 void SetGeometry(wxCoord y
, wxCoord height
)
72 wxCoord
GetPosition() const
74 wxASSERT_MSG( m_posY
!= wxDefaultCoord
, wxT("must call SetHeight first!") );
79 wxCoord
GetHeight() const
81 wxASSERT_MSG( m_height
!= wxDefaultCoord
, wxT("must call SetHeight first!") );
87 // notify the menu about the change in this item
88 inline void NotifyMenu();
90 // set the accel index and string from text
91 void UpdateAccelInfo();
93 // the bitmaps (may be invalid, then they're not used)
94 wxBitmap m_bmpChecked
,
98 // the positions of the first and last items of the radio group this item
99 // belongs to or -1: start is the radio group start and is valid for all
100 // but first radio group items (m_isRadioGroupStart == false), end is valid
101 // only for the first one
108 // does this item start a radio group?
109 bool m_isRadioGroupStart
;
111 // the position of the accelerator in our label, -1 if none
114 // the accel string (i.e. "Ctrl-Q" or "Alt-F1")
117 // the position and height of the displayed item
122 DECLARE_DYNAMIC_CLASS(wxMenuItem
)
125 #endif // _WX_UNIV_MENUITEM_H_