// if menu is !NULL, it will be filled with wxMenu this item belongs to
virtual wxMenuItem* FindItem(int id, wxMenu **menu = NULL) const = 0;
+ // find menu by its caption, return wxNOT_FOUND on failure
+ int FindMenu(const wxString& title);
+
// item access
// -----------
// implementation from now on
WXHMENU Create();
- int FindMenu(const wxString& title);
void Detach();
// returns TRUE if we're attached to a frame
return menu;
}
+int wxMenuBarBase::FindMenu(const wxString& title)
+{
+ wxString label = wxMenuItem::GetLabelFromText(title);
+
+ size_t count = GetMenuCount();
+ for ( size_t i = 0; i < count; i++ )
+ {
+ wxString title2 = GetLabelTop(i);
+ if ( (title2 == title) ||
+ (wxMenuItem::GetLabelFromText(title2) == label) )
+ {
+ // found
+ return (int)i;
+ }
+ }
+
+ return wxNOT_FOUND;
+
+}
+
// ---------------------------------------------------------------------------
// wxMenuBar functions forwarded to wxMenuItem
// ---------------------------------------------------------------------------
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;
-
-}
-
// ---------------------------------------------------------------------------
// wxMenuBar construction
// ---------------------------------------------------------------------------