#include "wx/defs.h"
#include "wx/event.h"
#include "wx/dynarray.h"
+#include "wx/string.h"
+
+#if wxUSE_ACCEL
+#include "wx/accel.h"
+#endif // wxUSE_ACCEL
class WXDLLEXPORT wxMenuItem;
class WXDLLEXPORT wxMenuBar;
DECLARE_DYNAMIC_CLASS(wxMenu)
public:
- // ctor & dtor
- wxMenu(const wxString& title = wxEmptyString, const wxFunction func = NULL);
+ // ctors & dtor
+ wxMenu(const wxString& title,
+ const wxFunction func)
+ {
+ Init(title, func);
+ }
+
+ wxMenu( long WXUNUSED(style) )
+ {
+ Init( wxEmptyString );
+ }
+
+ wxMenu(const wxString& title = wxEmptyString, long WXUNUSED(style) = 0)
+ {
+ Init(title);
+ }
+
virtual ~wxMenu();
// construct menu
void Attach(wxMenuBar *menubar);
void Detach();
+#if wxUSE_ACCEL
size_t GetAccelCount() const { return m_accelKeyCodes.GetCount(); }
size_t CopyAccels(wxAcceleratorEntry *accels) const;
+#endif // wxUSE_ACCEL
-#ifdef WXWIN_COMPATIBILITY
+ wxFunction GetCallback() const { return m_callback; }
void Callback(const wxFunction func) { m_callback = func; }
+ wxFunction m_callback;
+#ifdef WXWIN_COMPATIBILITY
// compatibility: these functions are deprecated
bool Enabled(int id) const { return IsEnabled(id); }
bool Checked(int id) const { return IsChecked(id); }
-private:
- wxFunction m_callback;
#endif // WXWIN_COMPATIBILITY
private:
+ // common part of all ctors
+ void Init(const wxString& title, const wxFunction func = NULL );
+
bool m_doBreak;
// This is used when m_hMenu is NULL because we don't want to
wxWindow *m_pInvokingWindow;
void* m_clientData;
+#if wxUSE_ACCEL
// the accelerators data
wxArrayInt m_accelKeyCodes, m_accelFlags, m_accelIds;
+#endif // wxUSE_ACCEL
};
// ----------------------------------------------------------------------------
// menubar construction
WXHMENU Create();
void Append(wxMenu *menu, const wxString& title);
+ void Insert(int pos, wxMenu * menu, const wxString& title);
+ void ReplaceMenu(int pos, wxMenu * new_menu, const wxString& title);
+ int FindMenu(const wxString& title);
+ void Detach();
virtual void Delete(wxMenu *menu, int index = 0); /* Menu not destroyed */
// state control
// notifications: return FALSE to prevent the menu from being
// appended/deleted
- virtual bool OnAppend(wxMenu *menu, const char *title);
+ virtual bool OnAppend(wxMenu *menu, const wxChar *title);
virtual bool OnDelete(wxMenu *menu, int index);
// item search
// attach to a frame
void Attach(wxFrame *frame);
+#if wxUSE_ACCEL
// get the accel table for the menus
const wxAcceleratorTable& GetAccelTable() const { return m_accelTable; }
+#endif // wxUSE_ACCEL
+
// get the menu handle
WXHMENU GetHMenu() const { return m_hMenu; }
-protected:
- // common part of all ctors
- void Init();
-
// if the menubar is modified, the display is not updated automatically,
// call this function to update it (m_menuBarFrame should be !NULL)
void Refresh();
+protected:
+ // common part of all ctors
+ void Init();
+
wxEvtHandler *m_eventHandler;
int m_menuCount;
wxMenu **m_menus;
wxFrame *m_menuBarFrame;
WXHMENU m_hMenu;
+#if wxUSE_ACCEL
// the accelerator table for all accelerators in all our menus
wxAcceleratorTable m_accelTable;
+#endif // wxUSE_ACCEL
};
#endif // _WX_MENU_H_