--- /dev/null
+///////////////////////////////////////////////////////////////////////////////
+// Name: wx/cocoa/menuitem.h
+// Purpose: wxMenuItem class
+// Author: David Elliott
+// Modified by:
+// Created: 2002/12/13
+// RCS-ID: $Id:
+// Copyright: (c) 2002 David Elliott
+// Licence: wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_COCOA_MENUITEM_H_
+#define _WX_COCOA_MENUITEM_H_
+
+#include "wx/hashmap.h"
+#include "wx/bitmap.h"
+
+// ========================================================================
+// wxMenuItem
+// ========================================================================
+
+#define wxMenuItemCocoa wxMenuItem
+class wxMenuItemCocoa;
+WX_DECLARE_HASH_MAP(WX_NSMenuItem,wxMenuItem*,wxPointerHash,wxPointerEqual,wxMenuItemCocoaHash);
+
+class WXDLLEXPORT wxMenuItemCocoa : public wxMenuItemBase
+{
+public:
+// ------------------------------------------------------------------------
+// initialization
+// ------------------------------------------------------------------------
+ wxMenuItemCocoa(wxMenu *parentMenu = (wxMenu *)NULL,
+ int id = wxID_SEPARATOR,
+ const wxString& name = wxEmptyString,
+ const wxString& help = wxEmptyString,
+ wxItemKind kind = wxITEM_NORMAL,
+ wxMenu *subMenu = (wxMenu *)NULL);
+ virtual ~wxMenuItemCocoa();
+
+// ------------------------------------------------------------------------
+// Cocoa specifics
+// ------------------------------------------------------------------------
+public:
+ inline WX_NSMenuItem GetNSMenuItem() { return m_cocoaNSMenuItem; }
+ static inline wxMenuItem* GetFromCocoa(WX_NSMenuItem cocoaNSMenuItem)
+ {
+ wxMenuItemCocoaHash::iterator iter=sm_cocoaHash.find(cocoaNSMenuItem);
+ if(iter!=sm_cocoaHash.end())
+ return iter->second;
+ return NULL;
+ }
+protected:
+ WX_NSMenuItem m_cocoaNSMenuItem;
+ static wxMenuItemCocoaHash sm_cocoaHash;
+// ------------------------------------------------------------------------
+// Implementation
+// ------------------------------------------------------------------------
+public:
+ // override base class virtuals to update the item appearance on screen
+ virtual void SetText(const wxString& text);
+ virtual void SetCheckable(bool checkable);
+
+ virtual void Enable(bool enable = TRUE);
+ virtual void Check(bool check = TRUE);
+
+ // we add some extra functions which are also available under MSW from
+ // wxOwnerDrawn class - they will be moved to wxMenuItemBase later
+ // hopefully
+ void SetBitmaps(const wxBitmap& bmpChecked,
+ const wxBitmap& bmpUnchecked = wxNullBitmap);
+ void SetBitmap(const wxBitmap& bmp) { SetBitmaps(bmp); }
+ const wxBitmap& GetBitmap(bool checked = TRUE) const
+ { return checked ? m_bmpChecked : m_bmpUnchecked; }
+
+protected:
+ // notify the menu about the change in this item
+ inline void NotifyMenu();
+
+ // set the accel index and string from text
+ void UpdateAccelInfo();
+
+ // the bitmaps (may be invalid, then they're not used)
+ wxBitmap m_bmpChecked,
+ m_bmpUnchecked;
+
+ // the accel string (i.e. "Ctrl-Q" or "Alt-F1")
+ wxString m_strAccel;
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxMenuItem)
+};
+
+#endif // _WX_COCOA_MENUITEM_H_
+