1///////////////////////////////////////////////////////////////////////////////
2// Name:        wx/cocoa/NSMenu.h
3// Purpose:     wxCocoaNSMenu class
4// Author:      David Elliott
5// Modified by:
6// Created:     2002/12/09
7// RCS-ID:      $Id: NSMenu.h 38031 2006-03-12 15:10:23Z VZ $
8// Copyright:   (c) 2002 David Elliott
9// Licence:     wxWindows licence
10///////////////////////////////////////////////////////////////////////////////
11
12#ifndef __WX_COCOA_NSMENU_H__
13#define __WX_COCOA_NSMENU_H__
14
15#include "wx/hashmap.h"
16#include "wx/cocoa/ObjcAssociate.h"
17
18WX_DECLARE_OBJC_HASHMAP(NSMenu);
19
20// ========================================================================
21// wxCocoaNSMenu
22// ========================================================================
23
24class wxCocoaNSMenu
25{
26    WX_DECLARE_OBJC_INTERFACE_HASHMAP(NSMenu)
27public:
28    void AssociateNSMenu(WX_NSMenu cocoaNSMenu, unsigned int flags = 0);
29    void DisassociateNSMenu(WX_NSMenu cocoaNSMenu);
30    enum
31    {   OBSERVE_DidAddItem          = 0x01
32    ,   OBSERVE_DidChangeItem       = 0x02
33    ,   OBSERVE_DidRemoveItem       = 0x04
34    ,   OBSERVE_DidSendAction       = 0x08
35    ,   OBSERVE_WillSendAction      = 0x10
36    };
37    virtual void Cocoa_dealloc() {}
38    virtual void CocoaNotification_menuDidAddItem(WX_NSNotification notification) {}
39    virtual void CocoaNotification_menuDidChangeItem(WX_NSNotification notification) {}
40    virtual void CocoaNotification_menuDidRemoveItem(WX_NSNotification notification) {}
41    virtual void CocoaNotification_menuDidSendAction(WX_NSNotification notification) {}
42    virtual void CocoaNotification_menuWillSendAction(WX_NSNotification notification) {}
43    virtual ~wxCocoaNSMenu() { }
44
45protected:
46    static struct objc_object *sm_cocoaObserver;
47};
48
49#endif // _WX_COCOA_NSMENU_H_
50