#if wxUSE_ACCEL
+static inline bool CompareAccelString(const wxString& str, const wxChar *accel)
+{
+#if wxUSE_INTL
+ return str == accel || str == wxGetTranslation(accel);
+#else
+ return str == accel;
+#endif
+}
+
// return wxAcceleratorEntry for the given menu string or NULL if none
// specified
wxAcceleratorEntry *wxGetAccelFromString(const wxString& label)
wxString current;
for ( size_t n = (size_t)posTab + 1; n < label.Len(); n++ ) {
if ( (label[n] == '+') || (label[n] == '-') ) {
- if ( current == _("ctrl") )
+ if ( CompareAccelString(current, wxTRANSLATE("ctrl")) )
accelFlags |= wxACCEL_CTRL;
- else if ( current == _("alt") )
+ else if ( CompareAccelString(current, wxTRANSLATE("alt")) )
accelFlags |= wxACCEL_ALT;
- else if ( current == _("shift") )
+ else if ( CompareAccelString(current, wxTRANSLATE("shift")) )
accelFlags |= wxACCEL_SHIFT;
else {
// we may have "Ctrl-+", for example, but we still want to
else {
// several special cases
current.MakeUpper();
- if ( current == wxT("DEL") ) {
+ if ( current == wxT("DEL") )
keyCode = WXK_DELETE;
- }
- else if ( current == wxT("DELETE") ) {
+ else if ( current == wxT("DELETE") )
keyCode = WXK_DELETE;
- }
- else if ( current == wxT("INS") ) {
+ else if ( current == wxT("INS") )
keyCode = WXK_INSERT;
- }
- else if ( current == wxT("INSERT") ) {
+ else if ( current == wxT("INSERT") )
keyCode = WXK_INSERT;
- }
- else if ( current == wxT("ENTER") || current == wxT("RETURN") ) {
+ else if ( current == wxT("ENTER") || current == wxT("RETURN") )
keyCode = WXK_RETURN;
- }
- else if ( current == wxT("PGUP") ) {
+ else if ( current == wxT("PGUP") )
keyCode = WXK_PRIOR;
- }
- else if ( current == wxT("PGDN") ) {
+ else if ( current == wxT("PGDN") )
keyCode = WXK_NEXT;
- }
- else if ( current == wxT("LEFT") ) {
+ else if ( current == wxT("LEFT") )
keyCode = WXK_LEFT;
- }
- else if ( current == wxT("RIGHT") ) {
+ else if ( current == wxT("RIGHT") )
keyCode = WXK_RIGHT;
- }
- else if ( current == wxT("UP") ) {
+ else if ( current == wxT("UP") )
keyCode = WXK_UP;
- }
- else if ( current == wxT("DOWN") ) {
+ else if ( current == wxT("DOWN") )
keyCode = WXK_DOWN;
- }
- else if ( current == wxT("HOME") ) {
+ else if ( current == wxT("HOME") )
keyCode = WXK_HOME;
- }
- else if ( current == wxT("END") ) {
+ else if ( current == wxT("END") )
keyCode = WXK_END;
- }
- else if ( current == wxT("SPACE") ) {
+ else if ( current == wxT("SPACE") )
keyCode = WXK_SPACE;
- }
- else if ( current == wxT("TAB") ) {
+ else if ( current == wxT("TAB") )
keyCode = WXK_TAB;
- }
+ else if ( current == wxT("ESC") || current == wxT("ESCAPE") )
+ keyCode = WXK_ESCAPE;
else
{
wxLogDebug(wxT("Unrecognized accel key '%s', accel string ignored."),
wxCHECK_MSG( item, FALSE, wxT("invalid item in wxMenu::Append()") );
m_items.Append(item);
+ item->SetMenu((wxMenu*)this);
if ( item->IsSubMenu() )
{
AddSubMenu(item->GetSubMenu());
wxCHECK_MSG( node, FALSE, wxT("invalid index in wxMenu::Insert()") );
m_items.Insert(node, item);
+ item->SetMenu((wxMenu*)this);
if ( item->IsSubMenu() )
{
AddSubMenu(item->GetSubMenu());
m_items.DeleteNode(node);
// item isn't attached to anything any more
+ item->SetMenu((wxMenu *)NULL);
wxMenu *submenu = item->GetSubMenu();
if ( submenu )
{
return item;
}
+// find by position
+wxMenuItem* wxMenuBase::FindItemByPosition(size_t position) const
+{
+ wxCHECK_MSG( position < m_items.GetCount(), NULL,
+ _T("wxMenu::FindItemByPosition(): invalid menu index") );
+
+ return m_items.Item( position )->GetData();
+}
+
// ----------------------------------------------------------------------------
// wxMenu helpers used by derived classes
// ----------------------------------------------------------------------------