1 /////////////////////////////////////////////////////////////////////////////
4 // Author: Robert Roebling
6 // Copyright: (c) 1998 Robert Roebling, Julian Smart
7 // Licence: wxWindows licence
8 /////////////////////////////////////////////////////////////////////////////
10 #ifndef _WX_GTKMENU_H_
11 #define _WX_GTKMENU_H_
13 //-----------------------------------------------------------------------------
15 //-----------------------------------------------------------------------------
17 class WXDLLIMPEXP_CORE wxMenuBar
: public wxMenuBarBase
22 wxMenuBar(long style
);
23 wxMenuBar(size_t n
, wxMenu
*menus
[], const wxString titles
[], long style
= 0);
26 // implement base class (pure) virtuals
27 virtual bool Append( wxMenu
*menu
, const wxString
&title
);
28 virtual bool Insert(size_t pos
, wxMenu
*menu
, const wxString
& title
);
29 virtual wxMenu
*Replace(size_t pos
, wxMenu
*menu
, const wxString
& title
);
30 virtual wxMenu
*Remove(size_t pos
);
32 virtual int FindMenuItem(const wxString
& menuString
,
33 const wxString
& itemString
) const;
34 virtual wxMenuItem
* FindItem( int id
, wxMenu
**menu
= NULL
) const;
36 virtual void EnableTop( size_t pos
, bool flag
);
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 // wxMenuBar is not a top level window but it still doesn't need a parent
45 virtual bool GTKNeedsParent() const { return false; }
47 void Attach(wxFrame
*frame
);
49 // implementation only from now on
50 void SetInvokingWindow( wxWindow
*win
);
51 void UnsetInvokingWindow( wxWindow
*win
);
54 // common part of Append and Insert
55 bool GtkAppend(wxMenu
*menu
, const wxString
& title
, int pos
=-1);
58 wxWindow
*m_invokingWindow
;
60 void Init(size_t n
, wxMenu
*menus
[], const wxString titles
[], long style
);
62 DECLARE_DYNAMIC_CLASS(wxMenuBar
)
65 //-----------------------------------------------------------------------------
67 //-----------------------------------------------------------------------------
69 class WXDLLIMPEXP_CORE wxMenu
: public wxMenuBase
73 wxMenu(const wxString
& title
, long style
= 0)
74 : wxMenuBase(title
, style
) { Init(); }
76 wxMenu(long style
= 0) : wxMenuBase(style
) { Init(); }
80 void Attach(wxMenuBarBase
*menubar
);
82 void SetLayoutDirection(const wxLayoutDirection dir
);
83 wxLayoutDirection
GetLayoutDirection() const;
85 // TODO: virtual void SetTitle(const wxString& title);
88 int FindMenuIdByMenuItem( GtkWidget
*menuItem
) const;
90 // implementation GTK only
91 GtkWidget
*m_menu
; // GtkMenu
93 GtkAccelGroup
*m_accel
;
97 virtual wxMenuItem
* DoAppend(wxMenuItem
*item
);
98 virtual wxMenuItem
* DoInsert(size_t pos
, wxMenuItem
*item
);
99 virtual wxMenuItem
* DoRemove(wxMenuItem
*item
);
102 // common code for all constructors:
105 // common part of Append (if pos == -1) and Insert
106 bool GtkAppend(wxMenuItem
*item
, int pos
=-1);
108 GtkWidget
*m_prevRadio
;
110 DECLARE_DYNAMIC_CLASS(wxMenu
)