menu.h 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. /////////////////////////////////////////////////////////////////////////////
  2. // Name: wx/gtk1/menu.h
  3. // Purpose:
  4. // Author: Robert Roebling
  5. // Copyright: (c) 1998 Robert Roebling, Julian Smart
  6. // Licence: wxWindows licence
  7. /////////////////////////////////////////////////////////////////////////////
  8. #ifndef __GTKMENUH__
  9. #define __GTKMENUH__
  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. virtual ~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 void SetMenuLabel( size_t pos, const wxString& label );
  31. virtual wxString GetMenuLabel( size_t pos ) const;
  32. // common part of Append and Insert
  33. bool GtkAppend(wxMenu *menu, const wxString& title, int pos=-1);
  34. virtual void Attach(wxFrame *frame);
  35. virtual void Detach();
  36. GtkAccelGroup *m_accel;
  37. GtkWidget *m_menubar;
  38. long m_style;
  39. private:
  40. void Init(size_t n, wxMenu *menus[], const wxString titles[], long style);
  41. DECLARE_DYNAMIC_CLASS(wxMenuBar)
  42. };
  43. //-----------------------------------------------------------------------------
  44. // wxMenu
  45. //-----------------------------------------------------------------------------
  46. class WXDLLIMPEXP_CORE wxMenu : public wxMenuBase
  47. {
  48. public:
  49. // ctors & dtor
  50. wxMenu(const wxString& title, long style = 0)
  51. : wxMenuBase(title, style) { Init(); }
  52. wxMenu(long style = 0) : wxMenuBase(style) { Init(); }
  53. virtual ~wxMenu();
  54. // implement base class virtuals
  55. virtual wxMenuItem* DoAppend(wxMenuItem *item);
  56. virtual wxMenuItem* DoInsert(size_t pos, wxMenuItem *item);
  57. virtual wxMenuItem* DoRemove(wxMenuItem *item);
  58. // Returns the title, with mnemonics translated to wx format
  59. wxString GetTitle() const;
  60. // TODO: virtual void SetTitle(const wxString& title);
  61. // implementation
  62. int FindMenuIdByMenuItem( GtkWidget *menuItem ) const;
  63. // implementation GTK only
  64. GtkWidget *m_menu; // GtkMenu
  65. GtkWidget *m_owner;
  66. GtkAccelGroup *m_accel;
  67. private:
  68. // common code for all constructors:
  69. void Init();
  70. // common part of Append (if pos == -1) and Insert
  71. bool GtkAppend(wxMenuItem *item, int pos=-1);
  72. GtkWidget *m_prevRadio;
  73. DECLARE_DYNAMIC_CLASS(wxMenu)
  74. };
  75. #endif
  76. // __GTKMENUH__