void wxMenu::Attach( wxMenuBarBase* pMenubar ) { wxMenuBase::Attach(pMenubar); EndRadioGroup(); } // end of wxMenu::Break;
wxMenuItem* wxMenu::DoAppend(wxMenuItem *item) { wxCHECK_MSG( item, NULL, _T("NULL item in wxMenu::DoAppend") ); bool check = false; if ( item->GetKind() == wxITEM_RADIO ) { int count = GetMenuItemCount(); if ( m_startRadioGroup == -1 ) { // start a new radio group m_startRadioGroup = count; // for now it has just one element item->SetAsRadioGroupStart(); item->SetRadioGroupEnd(m_startRadioGroup); // ensure that we have a checked item in the radio group check = true; } else // extend the current radio group { // we need to update its end item item->SetRadioGroupStart(m_startRadioGroup); wxMenuItemList::compatibility_iterator node = GetMenuItems().Item(m_startRadioGroup); if ( node ) { node->GetData()->SetRadioGroupEnd(count); } else { wxFAIL_MSG( _T("where is the radio group start item?") ); } } } else // not a radio item { EndRadioGroup(); } if ( !wxMenuBase::DoAppend(item) || !DoInsertOrAppend(item) ) { return NULL; } if ( check ) { // check the item initially item->Check(true); } return item; }
void wxMenu::Attach(wxMenuBarBase *menubar) { wxMenuBase::Attach(menubar); EndRadioGroup(); }
wxMenuItem* wxMenu::DoAppend( wxMenuItem* pItem ) { wxCHECK_MSG( pItem, NULL, wxT("NULL item in wxMenu::DoAppend") ); bool bCheck = false; if (pItem->GetKind() == wxITEM_RADIO) { int nCount = GetMenuItemCount(); if (m_nStartRadioGroup == -1) { // // Start a new radio group // m_nStartRadioGroup = nCount; // // For now it has just one element // pItem->SetAsRadioGroupStart(); pItem->SetRadioGroupEnd(m_nStartRadioGroup); // // Ensure that we have a checked item in the radio group // bCheck = true; } else // extend the current radio group { // // We need to update its end item // pItem->SetRadioGroupStart(m_nStartRadioGroup); wxMenuItemList::compatibility_iterator node = GetMenuItems().Item(m_nStartRadioGroup); if (node) { node->GetData()->SetRadioGroupEnd(nCount); } else { wxFAIL_MSG( wxT("where is the radio group start item?") ); } } } else // not a radio item { EndRadioGroup(); } if (!wxMenuBase::DoAppend(pItem) || !DoInsertOrAppend(pItem)) { return NULL; } if (bCheck) { // // Check the item initially // pItem->Check(true); } return pItem; } // end of wxMenu::DoAppend