/////////////////////////////////////////////////////////////////////////////
-// Name: menu.h
+// Name: wx/msw/menu.h
// Purpose: wxMenu, wxMenuBar classes
// Author: Julian Smart
// Modified by: Vadim Zeitlin (wxMenuItem is now in separate file)
// Created: 01/02/97
// RCS-ID: $Id$
-// Copyright: (c) Julian Smart and Markus Holzem
-// Licence: wxWindows license
+// Copyright: (c) Julian Smart
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_MENU_H_
#define _WX_MENU_H_
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma interface "menu.h"
#endif
#include "wx/accel.h"
#include "wx/dynarray.h"
- WX_DEFINE_EXPORTED_ARRAY(wxAcceleratorEntry *, wxAcceleratorArray);
+ WX_DEFINE_EXPORTED_ARRAY_NO_PTR(wxAcceleratorEntry *, wxAcceleratorArray);
#endif // wxUSE_ACCEL
class WXDLLEXPORT wxFrame;
+#if defined(__WXWINCE__) && wxUSE_TOOLBAR
+class WXDLLEXPORT wxToolBar;
+#endif
+
+#include "wx/arrstr.h"
+
// ----------------------------------------------------------------------------
// Menu
// ----------------------------------------------------------------------------
}
#endif // wxUSE_MENU_CALLBACK
- // MSW-specific
- bool ProcessCommand(wxCommandEvent& event);
-
// implementation only from now on
// -------------------------------
+ virtual void Attach(wxMenuBarBase *menubar);
+
bool MSWCommand(WXUINT param, WXWORD id);
// semi-private accessors
// get the menu handle
WXHMENU GetHMenu() const { return m_hMenu; }
- // attach/detach menu to/from wxMenuBar
- void Attach(wxMenuBar *menubar);
- void Detach();
-
#if wxUSE_ACCEL
// called by wxMenuBar to build its accel table from the accels of all menus
bool HasAccels() const { return !m_accels.IsEmpty(); }
// common part of Append/Insert (behaves as Append is pos == (size_t)-1)
bool DoInsertOrAppend(wxMenuItem *item, size_t pos = (size_t)-1);
+ // terminate the current radio group, if any
+ void EndRadioGroup();
+
// if TRUE, insert a breal before appending the next item
bool m_doBreak;
+ // the position of the first item in the current radio group or -1
+ int m_startRadioGroup;
+
// the menu handle of this menu
WXHMENU m_hMenu;
wxAcceleratorArray m_accels;
#endif // wxUSE_ACCEL
- DECLARE_DYNAMIC_CLASS(wxMenu)
+ DECLARE_DYNAMIC_CLASS_NO_COPY(wxMenu)
};
// ----------------------------------------------------------------------------
virtual wxMenu *Replace(size_t pos, wxMenu *menu, const wxString& title);
virtual wxMenu *Remove(size_t pos);
- virtual int FindMenuItem(const wxString& menuString,
- const wxString& itemString) const;
- virtual wxMenuItem* FindItem( int id, wxMenu **menu = NULL ) const;
-
virtual void EnableTop( size_t pos, bool flag );
virtual void SetLabelTop( size_t pos, const wxString& label );
virtual wxString GetLabelTop( size_t pos ) const;
// implementation from now on
WXHMENU Create();
- void Detach();
+ virtual void Detach();
+ virtual void Attach(wxFrame *frame);
- // returns TRUE if we're attached to a frame
- bool IsAttached() const { return m_menuBarFrame != NULL; }
- // get the frame we live in
- wxFrame *GetFrame() const { return m_menuBarFrame; }
- // attach to a frame
- void Attach(wxFrame *frame);
+#if defined(__WXWINCE__) && wxUSE_TOOLBAR
+ // Under WinCE, a menubar is owned by the frame's toolbar
+ void SetToolBar(wxToolBar* toolBar) { m_toolBar = toolBar; }
+ wxToolBar* GetToolBar() const { return m_toolBar; }
+#endif
#if wxUSE_ACCEL
// get the accel table for all the menus
// call this function to update it (m_menuBarFrame should be !NULL)
void Refresh();
+ // To avoid compile warning
+ void Refresh( bool eraseBackground,
+ const wxRect *rect = (const wxRect *) NULL ) { wxWindow::Refresh(eraseBackground, rect); }
+
protected:
// common part of all ctors
void Init();
wxArrayString m_titles;
- wxFrame *m_menuBarFrame;
WXHMENU m_hMenu;
#if wxUSE_ACCEL
wxAcceleratorTable m_accelTable;
#endif // wxUSE_ACCEL
+#if defined(__WXWINCE__) && wxUSE_TOOLBAR
+ wxToolBar* m_toolBar;
+#endif
+
private:
- DECLARE_DYNAMIC_CLASS(wxMenuBar)
+ DECLARE_DYNAMIC_CLASS_NO_COPY(wxMenuBar)
};
#endif // _WX_MENU_H_