1 ///////////////////////////////////////////////////////////////////////////// 2 // Name: wx/gtk/menu.h 3 // Purpose: 4 // Author: Robert Roebling 5 // Copyright: (c) 1998 Robert Roebling, Julian Smart 6 // Licence: wxWindows licence 7 ///////////////////////////////////////////////////////////////////////////// 8 9 #ifndef _WX_GTKMENU_H_ 10 #define _WX_GTKMENU_H_ 11 12 //----------------------------------------------------------------------------- 13 // wxMenuBar 14 //----------------------------------------------------------------------------- 15 16 class WXDLLIMPEXP_CORE wxMenuBar : public wxMenuBarBase 17 { 18 public: 19 // ctors 20 wxMenuBar(); 21 wxMenuBar(long style); 22 wxMenuBar(size_t n, wxMenu *menus[], const wxString titles[], long style = 0); 23 ~wxMenuBar(); 24 25 // implement base class (pure) virtuals 26 virtual bool Append( wxMenu *menu, const wxString &title ); 27 virtual bool Insert(size_t pos, wxMenu *menu, const wxString& title); 28 virtual wxMenu *Replace(size_t pos, wxMenu *menu, const wxString& title); 29 virtual wxMenu *Remove(size_t pos); 30 31 virtual int FindMenuItem(const wxString& menuString, 32 const wxString& itemString) const; 33 virtual wxMenuItem* FindItem( int id, wxMenu **menu = NULL ) const; 34 35 virtual void EnableTop( size_t pos, bool flag ); 36 virtual bool IsEnabledTop(size_t pos) const; 37 virtual void SetMenuLabel( size_t pos, const wxString& label ); 38 virtual wxString GetMenuLabel( size_t pos ) const; 39 40 void SetLayoutDirection(wxLayoutDirection dir); 41 wxLayoutDirection GetLayoutDirection() const; 42 43 virtual void Attach(wxFrame *frame); 44 virtual void Detach(); 45 46 private: 47 // common part of Append and Insert 48 void GtkAppend(wxMenu* menu, const wxString& title, int pos = -1); 49 50 void Init(size_t n, wxMenu *menus[], const wxString titles[], long style); 51 52 // wxMenuBar is not a top level window but it still doesn't need a parent 53 // window GTKNeedsParent()54 virtual bool GTKNeedsParent() const { return false; } 55 56 GtkWidget* m_menubar; 57 58 DECLARE_DYNAMIC_CLASS(wxMenuBar) 59 }; 60 61 //----------------------------------------------------------------------------- 62 // wxMenu 63 //----------------------------------------------------------------------------- 64 65 class WXDLLIMPEXP_CORE wxMenu : public wxMenuBase 66 { 67 public: 68 // ctors & dtor 69 wxMenu(const wxString& title, long style = 0) wxMenuBase(title,style)70 : wxMenuBase(title, style) { Init(); } 71 wxMenuBase(style)72 wxMenu(long style = 0) : wxMenuBase(style) { Init(); } 73 74 virtual ~wxMenu(); 75 76 void Attach(wxMenuBarBase *menubar); 77 78 void SetLayoutDirection(const wxLayoutDirection dir); 79 wxLayoutDirection GetLayoutDirection() const; 80 81 // Returns the title, with mnemonics translated to wx format 82 wxString GetTitle() const; 83 84 // Sets the title, with mnemonics translated to gtk format 85 virtual void SetTitle(const wxString& title); 86 87 // implementation GTK only 88 GtkWidget *m_menu; // GtkMenu 89 GtkWidget *m_owner; 90 GtkAccelGroup *m_accel; 91 bool m_popupShown; 92 93 protected: 94 virtual wxMenuItem* DoAppend(wxMenuItem *item); 95 virtual wxMenuItem* DoInsert(size_t pos, wxMenuItem *item); 96 virtual wxMenuItem* DoRemove(wxMenuItem *item); 97 98 private: 99 // common code for all constructors: 100 void Init(); 101 102 // common part of Append (if pos == -1) and Insert 103 void GtkAppend(wxMenuItem* item, int pos = -1); 104 105 106 DECLARE_DYNAMIC_CLASS(wxMenu) 107 }; 108 109 #endif 110 // _WX_GTKMENU_H_ 111