#pragma hdrstop
#endif
+#if wxUSE_MENUS
+
#ifndef WX_PRECOMP
#include "wx/font.h"
#include "wx/bitmap.h"
// dynamic classes implementation
// ----------------------------------------------------------------------------
-#if !defined(USE_SHARED_LIBRARY) || !USE_SHARED_LIBRARY
- #if wxUSE_OWNER_DRAWN
- IMPLEMENT_DYNAMIC_CLASS2(wxMenuItem, wxMenuItemBase, wxOwnerDrawn)
- #else //!USE_OWNER_DRAWN
- IMPLEMENT_DYNAMIC_CLASS(wxMenuItem, wxMenuItemBase)
- #endif //USE_OWNER_DRAWN
-#endif //USE_SHARED_LIBRARY
+#if wxUSE_OWNER_DRAWN
+ IMPLEMENT_DYNAMIC_CLASS2(wxMenuItem, wxMenuItemBase, wxOwnerDrawn)
+#else //!USE_OWNER_DRAWN
+ IMPLEMENT_DYNAMIC_CLASS(wxMenuItem, wxMenuItemBase)
+#endif //USE_OWNER_DRAWN
// ----------------------------------------------------------------------------
// wxMenuItem
const wxString& text,
const wxString& strHelp,
bool bCheckable,
- wxMenu *pSubMenu) :
+ wxMenu *pSubMenu)
#if wxUSE_OWNER_DRAWN
- wxOwnerDrawn(text, bCheckable)
+ : wxOwnerDrawn(GetLabelFromText(text), bCheckable)
#endif // owner drawn
{
wxASSERT_MSG( pParentMenu != NULL, wxT("a menu item should have a parent") );
SetTextColour(SYS_COLOR(MENUTEXT));
SetBackgroundColour(SYS_COLOR(MENU));
+ #undef SYS_COLOR
+
// we don't want normal items be owner-drawn
ResetOwnerDrawn();
- #undef SYS_COLOR
+ // tell the owner drawing code to to show the accel string as well
+ SetAccelString(text.AfterFirst(_T('\t')));
#endif // wxUSE_OWNER_DRAWN
m_parentMenu = pParentMenu;
{
int flag = ::GetMenuState(GetHMenuOf(m_parentMenu), GetId(), MF_BYCOMMAND);
- // don't "and" with MF_ENABLED because its value is 0
- return (flag & MF_DISABLED) == 0;
-}
-
-wxString wxMenuItem::GetLabel() const
-{
- return wxStripMenuCodes(m_text);
+ return (flag & MF_CHECKED) != 0;
}
-// accelerators
-// ------------
-
-#if wxUSE_ACCEL
-
-wxAcceleratorEntry *wxMenuItem::GetAccel() const
+/* static */
+wxString wxMenuItemBase::GetLabelFromText(const wxString& text)
{
- return wxGetAccelFromString(GetText());
+ return wxStripMenuCodes(text);
}
-#endif // wxUSE_ACCEL
-
// change item state
// -----------------
(enable ? MF_ENABLED : MF_GRAYED));
if ( rc == -1 ) {
- wxLogLastError("EnableMenuItem");
+ wxLogLastError(wxT("EnableMenuItem"));
}
wxMenuItemBase::Enable(enable);
(check ? MF_CHECKED : MF_UNCHECKED));
if ( rc == -1 ) {
- wxLogLastError("CheckMenuItem");
+ wxLogLastError(wxT("CheckMenuItem"));
}
wxMenuItemBase::Check(check);
UINT flagsOld = ::GetMenuState(hMenu, id, MF_BYCOMMAND);
if ( flagsOld == 0xFFFFFFFF )
{
- wxLogLastError("GetMenuState");
+ wxLogLastError(wxT("GetMenuState"));
}
else
{
#endif //owner drawn
{
flagsOld |= MF_STRING;
- data = (char*) text.c_str();
+ data = (wxChar*) text.c_str();
}
if ( ::ModifyMenu(hMenu, id,
{
return new wxMenuItem(parentMenu, id, name, help, isCheckable, subMenu);
}
+
+#endif // wxUSE_MENUS