]>
git.saurik.com Git - wxWidgets.git/blob - include/wx/gtk/menu.h
1 /////////////////////////////////////////////////////////////////////////////
4 // Author: Robert Roebling
6 // Copyright: (c) 1998 Robert Roebling, Julian Smart
7 // Licence: wxWindows licence
8 /////////////////////////////////////////////////////////////////////////////
19 #include "wx/object.h"
21 #include "wx/window.h"
22 #include "wx/menuitem.h"
24 //-----------------------------------------------------------------------------
26 //-----------------------------------------------------------------------------
32 //-----------------------------------------------------------------------------
34 //-----------------------------------------------------------------------------
36 #define ID_SEPARATOR (-1)
38 //-----------------------------------------------------------------------------
40 //-----------------------------------------------------------------------------
42 class wxMenuBar
: public wxWindow
44 DECLARE_DYNAMIC_CLASS(wxMenuBar
)
49 wxMenuBar(long style
);
50 wxMenuBar(int n
, wxMenu
*menus
[], const wxString titles
[]);
53 // menubar construction
54 void Append( wxMenu
*menu
, const wxString
&title
);
57 // by menu and item names, returns wxNOT_FOUND if not found
58 virtual int FindMenuItem(const wxString
& menuString
,
59 const wxString
& itemString
) const;
60 // returns NULL if not found
61 wxMenuItem
* FindItem( int id
) const;
62 // returns NULL if not found, fills menuForItem if !NULL
63 wxMenuItem
*FindItemForId(int itemId
, wxMenu
**menuForItem
= NULL
) const;
66 void Check( int id
, bool check
);
67 bool IsChecked( int id
) const;
68 void Enable( int id
, bool enable
);
69 bool IsEnabled( int id
) const;
71 void SetLabel( int id
, const wxString
&label
);
72 wxString
GetLabel( int id
) const;
73 wxString
GetLabel() const { return wxWindow::GetLabel(); }
75 void EnableTop( int pos
, bool flag
);
76 void SetLabelTop( int pos
, const wxString
& label
);
77 wxString
GetLabelTop( int pos
) const;
79 virtual void SetHelpString( int id
, const wxString
& helpString
);
80 virtual wxString
GetHelpString( int id
) const;
82 int GetMenuCount() const { return m_menus
.Number(); }
83 wxMenu
*GetMenu( int n
) const { return (wxMenu
*)m_menus
.Nth(n
)->Data(); }
85 #ifdef WXWIN_COMPATIBILITY
86 // compatibility: these functions are deprecated
87 bool Enabled(int id
) const { return IsEnabled(id
); }
88 bool Checked(int id
) const { return IsChecked(id
); }
90 wxMenuItem
* FindMenuItemById( int id
) const { return FindItem(id
); }
91 #endif // WXWIN_COMPATIBILITY
93 // implementation only
94 wxList
& GetMenus() { return m_menus
; }
96 void SetInvokingWindow( wxWindow
*win
);
97 void UnsetInvokingWindow( wxWindow
*win
);
99 GtkAccelGroup
*m_accel
;
100 GtkItemFactory
*m_factory
;
102 GtkWidget
*m_menubar
;
106 //-----------------------------------------------------------------------------
108 //-----------------------------------------------------------------------------
110 class wxMenu
: public wxEvtHandler
112 DECLARE_DYNAMIC_CLASS(wxMenu
)
115 wxMenu( const wxString
& title
= wxEmptyString
,
116 const wxFunction func
= (wxFunction
) NULL
,
118 wxMenu( long style
);
123 void SetTitle(const wxString
& label
);
124 const wxString
GetTitle() const;
126 void AppendSeparator();
127 void Append(int id
, const wxString
&item
,
128 const wxString
&helpStr
= "", bool checkable
= FALSE
);
129 void Append(int id
, const wxString
&item
,
130 wxMenu
*subMenu
, const wxString
&helpStr
= "" );
131 void Append(wxMenuItem
*pItem
);
134 // find item by name/id
135 int FindItem( const wxString itemString
) const;
136 wxMenuItem
*FindItem( int id
) const;
138 // get/set item's state
139 void Enable( int id
, bool enable
);
140 bool IsEnabled( int id
) const;
141 void Check( int id
, bool check
);
142 bool IsChecked( int id
) const;
144 void SetLabel( int id
, const wxString
&label
);
145 wxString
GetLabel( int id
) const;
148 virtual void SetHelpString(int id
, const wxString
& helpString
);
149 virtual wxString
GetHelpString(int id
) const ;
152 wxList
& GetItems() { return m_items
; }
154 void SetEventHandler(wxEvtHandler
*handler
) { m_eventHandler
= handler
; }
155 wxEvtHandler
*GetEventHandler() { return m_eventHandler
; }
157 void SetClientData( void* clientData
) { m_clientData
= clientData
; }
158 void* GetClientData() const { return m_clientData
; }
160 // Updates the UI for a menu and all submenus recursively.
161 // source is the object that has the update event handlers
162 // defined for it. If NULL, the menu or associated window
164 void UpdateUI(wxEvtHandler
* source
= (wxEvtHandler
*) NULL
);
166 wxMenuItem
*FindItemForId( int id
) const { return FindItem( id
); }
168 #ifdef WXWIN_COMPATIBILITY
169 wxFunction
GetCallback() const { return m_callback
; }
170 void Callback(const wxFunction func
) { m_callback
= func
; }
172 // compatibility: these functions are deprecated
173 bool Enabled(int id
) const { return IsEnabled(id
); }
174 bool Checked(int id
) const { return IsChecked(id
); }
175 #endif // WXWIN_COMPATIBILITY
178 int FindMenuIdByMenuItem( GtkWidget
*menuItem
) const;
179 void SetInvokingWindow( wxWindow
*win
);
180 wxWindow
*GetInvokingWindow();
182 // implementation GTK only
183 GtkWidget
*m_menu
; // GtkMenu
185 GtkAccelGroup
*m_accel
;
186 GtkItemFactory
*m_factory
;
189 inline long GetStyle(void) const { return m_style
; }
191 // common code for both constructors:
192 void Init( const wxString
& title
,
193 const wxFunction func
,
198 wxWindow
*m_invokingWindow
;
199 wxFunction m_callback
;
200 wxEvtHandler
*m_eventHandler
;
205 #endif // __GTKMENUH__