menu.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  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. #ifndef _WX_GTKMENU_H_
  9. #define _WX_GTKMENU_H_
  10. //-----------------------------------------------------------------------------
  11. // wxMenuBar
  12. //-----------------------------------------------------------------------------
  13. class WXDLLIMPEXP_CORE wxMenuBar : public wxMenuBarBase
  14. {
  15. public:
  16. // ctors
  17. wxMenuBar();
  18. wxMenuBar(long style);
  19. wxMenuBar(size_t n, wxMenu *menus[], const wxString titles[], long style = 0);
  20. ~wxMenuBar();
  21. // implement base class (pure) virtuals
  22. virtual bool Append( wxMenu *menu, const wxString &title );
  23. virtual bool Insert(size_t pos, wxMenu *menu, const wxString& title);
  24. virtual wxMenu *Replace(size_t pos, wxMenu *menu, const wxString& title);
  25. virtual wxMenu *Remove(size_t pos);
  26. virtual int FindMenuItem(const wxString& menuString,
  27. const wxString& itemString) const;
  28. virtual wxMenuItem* FindItem( int id, wxMenu **menu = NULL ) const;
  29. virtual void EnableTop( size_t pos, bool flag );
  30. virtual bool IsEnabledTop(size_t pos) const;
  31. virtual void SetMenuLabel( size_t pos, const wxString& label );
  32. virtual wxString GetMenuLabel( size_t pos ) const;
  33. void SetLayoutDirection(wxLayoutDirection dir);
  34. wxLayoutDirection GetLayoutDirection() const;
  35. virtual void Attach(wxFrame *frame);
  36. virtual void Detach();
  37. private:
  38. // common part of Append and Insert
  39. void GtkAppend(wxMenu* menu, const wxString& title, int pos = -1);
  40. void Init(size_t n, wxMenu *menus[], const wxString titles[], long style);
  41. // wxMenuBar is not a top level window but it still doesn't need a parent
  42. // window
  43. virtual bool GTKNeedsParent() const { return false; }
  44. GtkWidget* m_menubar;
  45. DECLARE_DYNAMIC_CLASS(wxMenuBar)
  46. };
  47. //-----------------------------------------------------------------------------
  48. // wxMenu
  49. //-----------------------------------------------------------------------------
  50. class WXDLLIMPEXP_CORE wxMenu : public wxMenuBase
  51. {
  52. public:
  53. // ctors & dtor
  54. wxMenu(const wxString& title, long style = 0)
  55. : wxMenuBase(title, style) { Init(); }
  56. wxMenu(long style = 0) : wxMenuBase(style) { Init(); }
  57. virtual ~wxMenu();
  58. void Attach(wxMenuBarBase *menubar);
  59. void SetLayoutDirection(const wxLayoutDirection dir);
  60. wxLayoutDirection GetLayoutDirection() const;
  61. // Returns the title, with mnemonics translated to wx format
  62. wxString GetTitle() const;
  63. // Sets the title, with mnemonics translated to gtk format
  64. virtual void SetTitle(const wxString& title);
  65. // implementation GTK only
  66. GtkWidget *m_menu; // GtkMenu
  67. GtkWidget *m_owner;
  68. GtkAccelGroup *m_accel;
  69. bool m_popupShown;
  70. protected:
  71. virtual wxMenuItem* DoAppend(wxMenuItem *item);
  72. virtual wxMenuItem* DoInsert(size_t pos, wxMenuItem *item);
  73. virtual wxMenuItem* DoRemove(wxMenuItem *item);
  74. private:
  75. // common code for all constructors:
  76. void Init();
  77. // common part of Append (if pos == -1) and Insert
  78. void GtkAppend(wxMenuItem* item, int pos = -1);
  79. DECLARE_DYNAMIC_CLASS(wxMenu)
  80. };
  81. #endif
  82. // _WX_GTKMENU_H_