// Construct a menu with optional title (then use append)
-static
-wxMenu *
-_wxMenuAt(const wxMenuList &menuList, size_t pos)
-{
- wxMenuList::compatibility_iterator menuIter = menuList.GetFirst();
-
- while (pos-- > 0)
- menuIter = menuIter->GetNext();
-
- return menuIter->GetData() ;
-}
-
void wxMenu::Init()
{
m_doBreak = false;
{
Init();
- m_titles.Alloc(count);
-
for ( size_t i = 0; i < count; i++ )
{
m_menus.Append(menus[i]);
- m_titles.Add(titles[i]);
menus[i]->Attach(this);
Append( menus[i], titles[i] );
UMASetMenuTitle( MAC_WXHMENU(menu->GetHMenu()) , m_titles[i], GetFont().GetEncoding() ) ;
menu->MacBeforeDisplay(false) ;
- ::InsertMenu(MAC_WXHMENU(_wxMenuAt(m_menus, i)->GetHMenu()), 0);
+ ::InsertMenu(MAC_WXHMENU(GetMenu(i)->GetHMenu()), 0);
}
}
{
wxCHECK_RET( pos < GetMenuCount(), wxT("invalid menu index") );
- m_titles[pos] = label;
-
- if ( !IsAttached() )
- return;
-
- _wxMenuAt(m_menus, pos)->SetTitle( label ) ;
+ GetMenu(pos)->SetTitle( label ) ;
}
wxString wxMenuBar::GetMenuLabel(size_t pos) const
wxCHECK_MSG( pos < GetMenuCount(), wxEmptyString,
wxT("invalid menu index in wxMenuBar::GetMenuLabel") );
- return m_titles[pos];
-}
-
-int wxMenuBar::FindMenu(const wxString& title)
-{
- wxString menuTitle = wxStripMenuCodes(title);
-
- size_t count = GetMenuCount();
- for ( size_t i = 0; i < count; i++ )
- {
- wxString title = wxStripMenuCodes(m_titles[i]);
- if ( menuTitle == title )
- return i;
- }
-
- return wxNOT_FOUND;
+ return GetMenu(pos)->GetTitle();
}
// ---------------------------------------------------------------------------
if ( !menuOld )
return NULL;
- m_titles[pos] = title;
-
wxMenuItem* item = m_rootMenu->FindItemByPosition(pos+firstMenuPos);
m_rootMenu->Remove(item);
m_rootMenu->Insert( pos+firstMenuPos, wxMenuItem::New( m_rootMenu, wxID_ANY, title, "", wxITEM_NORMAL, menu ) );
if ( !wxMenuBarBase::Insert(pos, menu, title) )
return false;
- m_titles.Insert(title, pos);
-
m_rootMenu->Insert( pos+firstMenuPos, wxMenuItem::New( m_rootMenu, wxID_ANY, title, "", wxITEM_NORMAL, menu ) );
return true;
wxMenuItem* item = m_rootMenu->FindItemByPosition(pos+firstMenuPos);
m_rootMenu->Remove(item);
- m_titles.RemoveAt(pos);
-
return menu;
}
if ( !wxMenuBarBase::Append(menu, title) )
return false;
- m_titles.Add(title);
-
m_rootMenu->AppendSubMenu(menu, title);
+ menu->SetTitle(title);
return true;
}
wxMenuBarBase::Attach( frame ) ;
}
-// ---------------------------------------------------------------------------
-// wxMenuBar searching for menu items
-// ---------------------------------------------------------------------------
-
-// Find the itemString in menuString, and return the item id or wxNOT_FOUND
-int wxMenuBar::FindMenuItem(const wxString& menuString,
- const wxString& itemString) const
-{
- wxString menuLabel = wxStripMenuCodes(menuString);
- size_t count = GetMenuCount();
- for ( size_t i = 0; i < count; i++ )
- {
- wxString title = wxStripMenuCodes(m_titles[i]);
- if ( menuLabel == title )
- return _wxMenuAt(m_menus, i)->FindItem(itemString);
- }
-
- return wxNOT_FOUND;
-}
-
-wxMenuItem *wxMenuBar::FindItem(int id, wxMenu **itemMenu) const
-{
- if ( itemMenu )
- *itemMenu = NULL;
-
- wxMenuItem *item = NULL;
- size_t count = GetMenuCount();
- for ( size_t i = 0; !item && (i < count); i++ )
- item = _wxMenuAt(m_menus, i)->FindItem(id, itemMenu);
-
- return item;
-}
-
-#endif
+#endif // wxUSE_MENUS