| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 | 
							- ///////////////////////////////////////////////////////////////////////////////
 
- // Name:        wx/cocoa/menu.h
 
- // Purpose:     wxMenu and wxMenuBar classes
 
- // Author:      David Elliott
 
- // Modified by:
 
- // Created:     2002/12/09
 
- // Copyright:   (c) 2002 David Elliott
 
- // Licence:     wxWindows licence
 
- ///////////////////////////////////////////////////////////////////////////////
 
- #ifndef __WX_COCOA_MENU_H__
 
- #define __WX_COCOA_MENU_H__
 
- #include "wx/cocoa/NSMenu.h"
 
- #if wxUSE_ACCEL
 
-     #include "wx/accel.h"
 
- #endif // wxUSE_ACCEL
 
- // ========================================================================
 
- // wxMenu
 
- // ========================================================================
 
- class WXDLLIMPEXP_CORE wxMenu : public wxMenuBase, public wxCocoaNSMenu
 
- {
 
- public:
 
-     // ctors and dtor
 
-     wxMenu(const wxString& title, long style = 0)
 
-     :   wxMenuBase(title, style)
 
-     ,   m_cocoaDeletes(false)
 
-     {   Create(title,style); }
 
-     bool Create(const wxString& title, long style = 0);
 
-     wxMenu(long style = 0) : wxMenuBase(style) { Create(wxEmptyString, style); }
 
-     virtual ~wxMenu();
 
- // ------------------------------------------------------------------------
 
- // Cocoa specifics
 
- // ------------------------------------------------------------------------
 
- public:
 
-     inline WX_NSMenu GetNSMenu() { return m_cocoaNSMenu; }
 
-     void SetCocoaDeletes(bool cocoaDeletes);
 
-     virtual void Cocoa_dealloc();
 
- protected:
 
-     WX_NSMenu m_cocoaNSMenu;
 
-     bool m_cocoaDeletes;
 
- // ------------------------------------------------------------------------
 
- // Implementation
 
- // ------------------------------------------------------------------------
 
- protected:
 
-     // implement base class virtuals
 
-     virtual wxMenuItem* DoAppend(wxMenuItem *item);
 
-     virtual wxMenuItem* DoInsert(size_t pos, wxMenuItem *item);
 
-     virtual wxMenuItem* DoRemove(wxMenuItem *item);
 
- #if wxUSE_ACCEL
 
-     // add/remove accel for the given menu item
 
-     void AddAccelFor(wxMenuItem *item);
 
-     void RemoveAccelFor(wxMenuItem *item);
 
- #endif // wxUSE_ACCEL
 
- private:
 
- #if wxUSE_ACCEL
 
-     // the accel table for this menu
 
-     wxAcceleratorTable m_accelTable;
 
- #endif // wxUSE_ACCEL
 
-     DECLARE_DYNAMIC_CLASS(wxMenu)
 
- };
 
- // ========================================================================
 
- // wxMenuBar
 
- // ========================================================================
 
- class WXDLLIMPEXP_CORE wxMenuBar : public wxMenuBarBase
 
- {
 
- public:
 
-     // ctors and dtor
 
-     wxMenuBar(long style = 0) { Create(style); }
 
-     wxMenuBar(size_t n, wxMenu *menus[], const wxString titles[], long style = 0);
 
-     bool Create(long style = 0);
 
-     virtual ~wxMenuBar();
 
- // ------------------------------------------------------------------------
 
- // Cocoa specifics
 
- // ------------------------------------------------------------------------
 
- public:
 
-     inline WX_NSMenu GetNSMenu() { return m_cocoaNSMenu; }
 
- protected:
 
-     WX_NSMenu m_cocoaNSMenu;
 
- // ------------------------------------------------------------------------
 
- // Implementation
 
- // ------------------------------------------------------------------------
 
- public:
 
-     // implement base class virtuals
 
-     virtual bool Append(wxMenu *menu, const wxString &title);
 
-     virtual bool Insert(size_t pos, wxMenu *menu, const wxString& title);
 
-     virtual wxMenu *Replace(size_t pos, wxMenu *menu, const wxString& title);
 
-     virtual wxMenu *Remove(size_t pos);
 
-     virtual void EnableTop(size_t pos, bool enable);
 
-     virtual bool IsEnabledTop(size_t pos) const;
 
-     virtual void SetMenuLabel(size_t pos, const wxString& label);
 
-     virtual wxString GetMenuLabel(size_t pos) const;
 
-     virtual void Attach(wxFrame *frame);
 
-     virtual void Detach();
 
-     // get the next item for the givan accel letter (used by wxFrame), return
 
-     // -1 if none
 
-     //
 
-     // if unique is not NULL, filled with TRUE if there is only one item with
 
-     // this accel, FALSE if two or more
 
-     int FindNextItemForAccel(int idxStart,
 
-                              int keycode,
 
-                              bool *unique = NULL) const;
 
-     // called by wxFrame to set focus to or open the given menu
 
-     void SelectMenu(size_t pos);
 
- #if wxUSE_ACCEL
 
-     // find the item for the given accel and generate an event if found
 
-     bool ProcessAccelEvent(const wxKeyEvent& event);
 
- #endif // wxUSE_ACCEL
 
- protected:
 
-     // event handlers
 
-     void OnLeftDown(wxMouseEvent& event);
 
-     void OnMouseMove(wxMouseEvent& event);
 
-     void OnKeyDown(wxKeyEvent& event);
 
-     void OnKillFocus(wxFocusEvent& event);
 
-     // process the mouse move event, return TRUE if we did, FALSE to continue
 
-     // processing as usual
 
-     //
 
-     // the coordinates are client coordinates of menubar, convert if necessary
 
-     bool ProcessMouseEvent(const wxPoint& pt);
 
-     // menubar geometry
 
-     virtual wxSize DoGetBestClientSize() const;
 
-     // has the menubar been created already?
 
-     bool IsCreated() const { return m_frameLast != NULL; }
 
-     // get the (total) width of the specified menu
 
-     wxCoord GetItemWidth(size_t pos) const;
 
-     // get the rect of the item
 
-     wxRect GetItemRect(size_t pos) const;
 
-     // get the menu from the given point or -1 if none
 
-     int GetMenuFromPoint(const wxPoint& pos) const;
 
-     // refresh the given item
 
-     void RefreshItem(size_t pos);
 
-     // refresh all items after this one (including it)
 
-     void RefreshAllItemsAfter(size_t pos);
 
-     // do we show a menu currently?
 
-     bool IsShowingMenu() const { return m_menuShown != 0; }
 
-     // we don't want to have focus except while selecting from menu
 
-     void GiveAwayFocus();
 
-     // the current item (only used when menubar has focus)
 
-     int m_current;
 
- private:
 
-     // the last frame to which we were attached, NULL initially
 
-     wxFrame *m_frameLast;
 
-     // the currently shown menu or NULL
 
-     wxMenu *m_menuShown;
 
-     // should be showing the menu? this is subtly different from m_menuShown !=
 
-     // NULL as the menu which should be shown may be disabled in which case we
 
-     // don't show it - but will do as soon as the focus shifts to another menu
 
-     bool m_shouldShowMenu;
 
-     DECLARE_DYNAMIC_CLASS(wxMenuBar)
 
- };
 
- #endif // _WX_COCOA_MENU_H_
 
 
  |