// Author: Stefan Csomor
// Modified by:
// Created: 1998-01-01
-// RCS-ID: $Id: menuitem.cpp 54129 2008-06-11 19:30:52Z SC $
+// RCS-ID: $Id$
// Copyright: (c) Stefan Csomor
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
#include "wx/wxprec.h"
+#if wxUSE_MENUS
+
#include "wx/menuitem.h"
#include "wx/stockitem.h"
{
}
-IMPLEMENT_DYNAMIC_CLASS(wxMenuItem, wxObject)
-
wxMenuItem::wxMenuItem(wxMenu *pParentMenu,
int id,
const wxString& t,
// In other languages there is no difference in naming the Exit/Quit menu item between MacOS and Windows guidelines
// therefore these item must not be translated
- if ( wxStripMenuCodes(m_text).Upper() == wxT("EXIT") )
- m_text = wxT("Quit\tCtrl+Q") ;
+ if (pParentMenu != NULL && !pParentMenu->GetNoEventsMode())
+ if ( wxStripMenuCodes(m_text).Upper() == wxT("EXIT") )
+ m_text = wxT("Quit\tCtrl+Q") ;
m_radioGroup.start = -1;
m_isRadioGroupStart = false;
-
- wxString text = wxStripMenuCodes(m_text);
+
+ wxString text = wxStripMenuCodes(m_text, (pParentMenu != NULL && pParentMenu->GetNoEventsMode()) ? wxStrip_Accel : wxStrip_All);
if (text.IsEmpty() && !IsSeparator())
{
wxASSERT_MSG(wxIsStockID(GetId()), wxT("A non-stock menu item with an empty label?"));
text = wxGetStockLabel(GetId(), wxSTOCK_WITH_ACCELERATOR|wxSTOCK_WITH_MNEMONIC);
}
-
+
wxAcceleratorEntry *entry = wxAcceleratorEntry::Create( m_text ) ;
- m_peer = wxMenuItemImpl::Create( this, pParentMenu, id, text, entry, strHelp, kind, pSubMenu );
+ // use accessors for ID and Kind because they might have been changed in the base constructor
+ m_peer = wxMenuItemImpl::Create( this, pParentMenu, GetId(), text, entry, strHelp, GetKind(), pSubMenu );
delete entry;
}
// eg. BeginAppModalStateForWindow() will disable menus and ignore this change
// which in turn causes m_isEnabled to become out of sync with real menuitem state
#if wxOSX_USE_CARBON
- && !(m_parentMenu && !IsMenuItemEnabled(MAC_WXHMENU(m_parentMenu->GetHMenu()), 0))
+ && !(m_parentMenu && !IsMenuItemEnabled(MAC_WXHMENU(m_parentMenu->GetHMenu()), 0))
#endif
)
// always update builtin menuitems
const wxMenuItemList& items = m_parentMenu->GetMenuItems();
int pos = items.IndexOf(this);
wxCHECK_RET( pos != wxNOT_FOUND,
- _T("menuitem not found in the menu items list?") );
+ wxT("menuitem not found in the menu items list?") );
// get the radio group range
int start, end;
{
if ( !m_parentMenu )
return;
-
- if ( m_bitmap.Ok() )
+
+ if ( m_bitmap.IsOk() )
{
- m_peer->SetBitmap( m_bitmap );
+ GetPeer()->SetBitmap( m_bitmap );
}
}
if ( IsSeparator() )
return ;
-
+
if ( IsCheckable() && IsChecked() )
- m_peer->Check( true );
+ GetPeer()->Check( true );
else
- m_peer->Check( false );
-
- m_peer->Enable( IsEnabled() );
+ GetPeer()->Check( false );
+
+ GetPeer()->Enable( IsEnabled() );
}
void wxMenuItem::UpdateItemText()
if ( !m_parentMenu )
return ;
- wxString text = wxStripMenuCodes(m_text);
+ wxString text = wxStripMenuCodes(m_text, m_parentMenu != NULL && m_parentMenu->GetNoEventsMode() ? wxStrip_Accel : wxStrip_All);
if (text.IsEmpty() && !IsSeparator())
{
wxASSERT_MSG(wxIsStockID(GetId()), wxT("A non-stock menu item with an empty label?"));
text = wxGetStockLabel(GetId(), wxSTOCK_WITH_ACCELERATOR|wxSTOCK_WITH_MNEMONIC);
}
-
+
wxAcceleratorEntry *entry = wxAcceleratorEntry::Create( m_text ) ;
- m_peer->SetLabel( text, entry );
+ GetPeer()->SetLabel( text, entry );
delete entry ;
}
{
return new wxMenuItem(parentMenu, id, name, help, kind, subMenu);
}
+
+#endif