]>
Commit | Line | Data |
---|---|---|
fb896a32 DE |
1 | /////////////////////////////////////////////////////////////////////////////// |
2 | // Name: wx/cocoa/menuitem.h | |
3 | // Purpose: wxMenuItem class | |
4 | // Author: David Elliott | |
5 | // Modified by: | |
6 | // Created: 2002/12/13 | |
52af3158 | 7 | // RCS-ID: $Id: |
fb896a32 | 8 | // Copyright: (c) 2002 David Elliott |
65571936 | 9 | // Licence: wxWindows licence |
fb896a32 DE |
10 | /////////////////////////////////////////////////////////////////////////////// |
11 | ||
12 | #ifndef _WX_COCOA_MENUITEM_H_ | |
13 | #define _WX_COCOA_MENUITEM_H_ | |
14 | ||
15 | #include "wx/hashmap.h" | |
16 | #include "wx/bitmap.h" | |
17 | ||
d04995b3 DE |
18 | #include "wx/cocoa/ObjcRef.h" |
19 | ||
fb896a32 DE |
20 | // ======================================================================== |
21 | // wxMenuItem | |
22 | // ======================================================================== | |
23 | ||
24 | #define wxMenuItemCocoa wxMenuItem | |
25 | class wxMenuItemCocoa; | |
26 | WX_DECLARE_HASH_MAP(WX_NSMenuItem,wxMenuItem*,wxPointerHash,wxPointerEqual,wxMenuItemCocoaHash); | |
27 | ||
28 | class WXDLLEXPORT wxMenuItemCocoa : public wxMenuItemBase | |
29 | { | |
30 | public: | |
31 | // ------------------------------------------------------------------------ | |
32 | // initialization | |
33 | // ------------------------------------------------------------------------ | |
34 | wxMenuItemCocoa(wxMenu *parentMenu = (wxMenu *)NULL, | |
35 | int id = wxID_SEPARATOR, | |
36 | const wxString& name = wxEmptyString, | |
37 | const wxString& help = wxEmptyString, | |
38 | wxItemKind kind = wxITEM_NORMAL, | |
39 | wxMenu *subMenu = (wxMenu *)NULL); | |
40 | virtual ~wxMenuItemCocoa(); | |
41 | ||
42 | // ------------------------------------------------------------------------ | |
43 | // Cocoa specifics | |
44 | // ------------------------------------------------------------------------ | |
45 | public: | |
46 | inline WX_NSMenuItem GetNSMenuItem() { return m_cocoaNSMenuItem; } | |
47 | static inline wxMenuItem* GetFromCocoa(WX_NSMenuItem cocoaNSMenuItem) | |
48 | { | |
49 | wxMenuItemCocoaHash::iterator iter=sm_cocoaHash.find(cocoaNSMenuItem); | |
50 | if(iter!=sm_cocoaHash.end()) | |
51 | return iter->second; | |
52 | return NULL; | |
53 | } | |
d04995b3 DE |
54 | void CocoaItemSelected(); |
55 | bool Cocoa_validateMenuItem(); | |
fb896a32 | 56 | protected: |
1e85b547 | 57 | void CocoaSetKeyEquivalent(); |
fb896a32 DE |
58 | WX_NSMenuItem m_cocoaNSMenuItem; |
59 | static wxMenuItemCocoaHash sm_cocoaHash; | |
d04995b3 | 60 | static wxObjcAutoRefFromAlloc<struct objc_object *> sm_cocoaTarget; |
fb896a32 DE |
61 | // ------------------------------------------------------------------------ |
62 | // Implementation | |
63 | // ------------------------------------------------------------------------ | |
64 | public: | |
65 | // override base class virtuals to update the item appearance on screen | |
52af3158 | 66 | virtual void SetItemLabel(const wxString& text); |
fb896a32 DE |
67 | virtual void SetCheckable(bool checkable); |
68 | ||
69 | virtual void Enable(bool enable = TRUE); | |
70 | virtual void Check(bool check = TRUE); | |
71 | ||
72 | // we add some extra functions which are also available under MSW from | |
73 | // wxOwnerDrawn class - they will be moved to wxMenuItemBase later | |
74 | // hopefully | |
75 | void SetBitmaps(const wxBitmap& bmpChecked, | |
76 | const wxBitmap& bmpUnchecked = wxNullBitmap); | |
77 | void SetBitmap(const wxBitmap& bmp) { SetBitmaps(bmp); } | |
78 | const wxBitmap& GetBitmap(bool checked = TRUE) const | |
79 | { return checked ? m_bmpChecked : m_bmpUnchecked; } | |
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 accel string (i.e. "Ctrl-Q" or "Alt-F1") | |
93 | wxString m_strAccel; | |
94 | ||
95 | private: | |
96 | DECLARE_DYNAMIC_CLASS(wxMenuItem) | |
97 | }; | |
98 | ||
99 | #endif // _WX_COCOA_MENUITEM_H_ | |
100 |