1 /////////////////////////////////////////////////////////////////////////////// 
   2 // Name:        wx/cocoa/menuitem.h 
   3 // Purpose:     wxMenuItem class 
   4 // Author:      David Elliott 
   8 // Copyright:   (c) 2002 David Elliott 
   9 // Licence:     wxWindows licence 
  10 /////////////////////////////////////////////////////////////////////////////// 
  12 #ifndef _WX_COCOA_MENUITEM_H_ 
  13 #define _WX_COCOA_MENUITEM_H_ 
  15 #include "wx/hashmap.h" 
  16 #include "wx/bitmap.h" 
  18 // ======================================================================== 
  20 // ======================================================================== 
  22 #define wxMenuItemCocoa wxMenuItem 
  23 class wxMenuItemCocoa
; 
  24 WX_DECLARE_HASH_MAP(WX_NSMenuItem
,wxMenuItem
*,wxPointerHash
,wxPointerEqual
,wxMenuItemCocoaHash
); 
  26 class WXDLLEXPORT wxMenuItemCocoa 
: public wxMenuItemBase
 
  29 // ------------------------------------------------------------------------ 
  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(); 
  40 // ------------------------------------------------------------------------ 
  42 // ------------------------------------------------------------------------ 
  44     inline WX_NSMenuItem 
GetNSMenuItem() { return m_cocoaNSMenuItem
; } 
  45     static inline wxMenuItem
* GetFromCocoa(WX_NSMenuItem cocoaNSMenuItem
) 
  47         wxMenuItemCocoaHash::iterator iter
=sm_cocoaHash
.find(cocoaNSMenuItem
); 
  48         if(iter
!=sm_cocoaHash
.end()) 
  53     WX_NSMenuItem m_cocoaNSMenuItem
; 
  54     static wxMenuItemCocoaHash sm_cocoaHash
; 
  55     static struct objc_object 
*sm_cocoaTarget
; 
  56 // ------------------------------------------------------------------------ 
  58 // ------------------------------------------------------------------------ 
  60     // override base class virtuals to update the item appearance on screen 
  61     virtual void SetText(const wxString
& text
); 
  62     virtual void SetCheckable(bool checkable
); 
  64     virtual void Enable(bool enable 
= TRUE
); 
  65     virtual void Check(bool check 
= TRUE
); 
  67     // we add some extra functions which are also available under MSW from 
  68     // wxOwnerDrawn class - they will be moved to wxMenuItemBase later 
  70     void SetBitmaps(const wxBitmap
& bmpChecked
, 
  71                     const wxBitmap
& bmpUnchecked 
= wxNullBitmap
); 
  72     void SetBitmap(const wxBitmap
& bmp
) { SetBitmaps(bmp
); } 
  73     const wxBitmap
& GetBitmap(bool checked 
= TRUE
) const 
  74       { return checked 
? m_bmpChecked 
: m_bmpUnchecked
; } 
  77     // notify the menu about the change in this item 
  78     inline void NotifyMenu(); 
  80     // set the accel index and string from text 
  81     void UpdateAccelInfo(); 
  83     // the bitmaps (may be invalid, then they're not used) 
  84     wxBitmap m_bmpChecked
, 
  87     // the accel string (i.e. "Ctrl-Q" or "Alt-F1") 
  91     DECLARE_DYNAMIC_CLASS(wxMenuItem
) 
  94 #endif // _WX_COCOA_MENUITEM_H_