1 /////////////////////////////////////////////////////////////////////////////
4 // Author: Robert Roebling
5 // Copyright: (c) 1998 Robert Roebling, Julian Smart
6 // Licence: wxWindows licence
7 /////////////////////////////////////////////////////////////////////////////
10 #define _WX_GTKMENU_H_
12 //-----------------------------------------------------------------------------
14 //-----------------------------------------------------------------------------
16 class WXDLLIMPEXP_CORE wxMenuBar
: public wxMenuBarBase
21 wxMenuBar(long style
);
22 wxMenuBar(size_t n
, wxMenu
*menus
[], const wxString titles
[], long style
= 0);
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
);
31 virtual int FindMenuItem(const wxString
& menuString
,
32 const wxString
& itemString
) const;
33 virtual wxMenuItem
* FindItem( int id
, wxMenu
**menu
= NULL
) const;
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;
40 void SetLayoutDirection(wxLayoutDirection dir
);
41 wxLayoutDirection
GetLayoutDirection() const;
43 virtual void Attach(wxFrame
*frame
);
44 virtual void Detach();
47 // common part of Append and Insert
48 void GtkAppend(wxMenu
* menu
, const wxString
& title
, int pos
= -1);
50 void Init(size_t n
, wxMenu
*menus
[], const wxString titles
[], long style
);
52 // wxMenuBar is not a top level window but it still doesn't need a parent
54 virtual bool GTKNeedsParent() const { return false; }
58 DECLARE_DYNAMIC_CLASS(wxMenuBar
)
61 //-----------------------------------------------------------------------------
63 //-----------------------------------------------------------------------------
65 class WXDLLIMPEXP_CORE wxMenu
: public wxMenuBase
69 wxMenu(const wxString
& title
, long style
= 0)
70 : wxMenuBase(title
, style
) { Init(); }
72 wxMenu(long style
= 0) : wxMenuBase(style
) { Init(); }
76 void Attach(wxMenuBarBase
*menubar
);
78 void SetLayoutDirection(const wxLayoutDirection dir
);
79 wxLayoutDirection
GetLayoutDirection() const;
81 // Returns the title, with mnemonics translated to wx format
82 wxString
GetTitle() const;
84 // Sets the title, with mnemonics translated to gtk format
85 virtual void SetTitle(const wxString
& title
);
87 // implementation GTK only
88 GtkWidget
*m_menu
; // GtkMenu
90 GtkAccelGroup
*m_accel
;
94 virtual wxMenuItem
* DoAppend(wxMenuItem
*item
);
95 virtual wxMenuItem
* DoInsert(size_t pos
, wxMenuItem
*item
);
96 virtual wxMenuItem
* DoRemove(wxMenuItem
*item
);
99 // common code for all constructors:
102 // common part of Append (if pos == -1) and Insert
103 void GtkAppend(wxMenuItem
* item
, int pos
= -1);
106 DECLARE_DYNAMIC_CLASS(wxMenu
)