]> git.saurik.com Git - wxWidgets.git/blame - include/wx/cocoa/menuitem.h
Added wxTLW::SetShape and implementations for wxGTK, wxMSW and an
[wxWidgets.git] / include / wx / cocoa / menuitem.h
CommitLineData
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
7// RCS-ID: $Id:
8// Copyright: (c) 2002 David Elliott
9// Licence: wxWindows licence
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
18// ========================================================================
19// wxMenuItem
20// ========================================================================
21
22#define wxMenuItemCocoa wxMenuItem
23class wxMenuItemCocoa;
24WX_DECLARE_HASH_MAP(WX_NSMenuItem,wxMenuItem*,wxPointerHash,wxPointerEqual,wxMenuItemCocoaHash);
25
26class WXDLLEXPORT wxMenuItemCocoa : public wxMenuItemBase
27{
28public:
29// ------------------------------------------------------------------------
30// initialization
31// ------------------------------------------------------------------------
32 wxMenuItemCocoa(wxMenu *parentMenu = (wxMenu *)NULL,
33 int id = wxID_SEPARATOR,
34 const wxString& name = wxEmptyString,
35 const wxString& help = wxEmptyString,
36 wxItemKind kind = wxITEM_NORMAL,
37 wxMenu *subMenu = (wxMenu *)NULL);
38 virtual ~wxMenuItemCocoa();
39
40// ------------------------------------------------------------------------
41// Cocoa specifics
42// ------------------------------------------------------------------------
43public:
44 inline WX_NSMenuItem GetNSMenuItem() { return m_cocoaNSMenuItem; }
45 static inline wxMenuItem* GetFromCocoa(WX_NSMenuItem cocoaNSMenuItem)
46 {
47 wxMenuItemCocoaHash::iterator iter=sm_cocoaHash.find(cocoaNSMenuItem);
48 if(iter!=sm_cocoaHash.end())
49 return iter->second;
50 return NULL;
51 }
52protected:
53 WX_NSMenuItem m_cocoaNSMenuItem;
54 static wxMenuItemCocoaHash sm_cocoaHash;
55// ------------------------------------------------------------------------
56// Implementation
57// ------------------------------------------------------------------------
58public:
59 // override base class virtuals to update the item appearance on screen
60 virtual void SetText(const wxString& text);
61 virtual void SetCheckable(bool checkable);
62
63 virtual void Enable(bool enable = TRUE);
64 virtual void Check(bool check = TRUE);
65
66 // we add some extra functions which are also available under MSW from
67 // wxOwnerDrawn class - they will be moved to wxMenuItemBase later
68 // hopefully
69 void SetBitmaps(const wxBitmap& bmpChecked,
70 const wxBitmap& bmpUnchecked = wxNullBitmap);
71 void SetBitmap(const wxBitmap& bmp) { SetBitmaps(bmp); }
72 const wxBitmap& GetBitmap(bool checked = TRUE) const
73 { return checked ? m_bmpChecked : m_bmpUnchecked; }
74
75protected:
76 // notify the menu about the change in this item
77 inline void NotifyMenu();
78
79 // set the accel index and string from text
80 void UpdateAccelInfo();
81
82 // the bitmaps (may be invalid, then they're not used)
83 wxBitmap m_bmpChecked,
84 m_bmpUnchecked;
85
86 // the accel string (i.e. "Ctrl-Q" or "Alt-F1")
87 wxString m_strAccel;
88
89private:
90 DECLARE_DYNAMIC_CLASS(wxMenuItem)
91};
92
93#endif // _WX_COCOA_MENUITEM_H_
94