// remove one page from the notebook, without deleting the window wxNotebookPage* wxNotebook::DoRemovePage(size_t nPage) { wxCHECK_MSG( IS_VALID_PAGE(nPage), NULL, wxT("DoRemovePage: invalid notebook page") ); wxNotebookPage* page = m_pages[nPage] ; m_pages.RemoveAt(nPage); m_images.RemoveAt(nPage); MacSetupTabs(); if ( m_selection >= (int)nPage ) { if ( GetPageCount() == 0 ) m_selection = wxNOT_FOUND; else m_selection = m_selection ? m_selection - 1 : 0; GetPeer()->SetValue( m_selection + 1 ) ; } if (m_selection >= 0) m_pages[m_selection]->Show(true); InvalidateBestSize(); return page; }
// remove all pages bool wxNotebook::DeleteAllPages() { WX_CLEAR_ARRAY(m_pages) ; MacSetupTabs(); m_selection = wxNOT_FOUND ; InvalidateBestSize(); return true; }
bool wxNotebook::SetPageText(size_t nPage, const wxString& strText) { wxCHECK_MSG( IS_VALID_PAGE(nPage), false, wxT("SetPageText: invalid notebook page") ); wxNotebookPage *page = m_pages[nPage]; page->SetLabel(wxStripMenuCodes(strText)); MacSetupTabs(); return true; }
// same as AddPage() but does it at given position bool wxNotebook::InsertPage(size_t nPage, wxNotebookPage *pPage, const wxString& strText, bool bSelect, int imageId ) { if ( !wxNotebookBase::InsertPage( nPage, pPage, strText, bSelect, imageId ) ) return false; wxASSERT_MSG( pPage->GetParent() == this, wxT("notebook pages must have notebook as parent") ); // don't show pages by default (we'll need to adjust their size first) pPage->Show( false ) ; pPage->SetLabel( wxStripMenuCodes(strText) ); m_images.Insert( imageId, nPage ); MacSetupTabs(); wxRect rect = GetPageRect() ; pPage->SetSize( rect ); if ( pPage->GetAutoLayout() ) pPage->Layout(); // now deal with the selection // --------------------------- // if the inserted page is before the selected one, we must update the // index of the selected page if ( int(nPage) <= m_nSelection ) { m_nSelection++; // while this still is the same page showing, we need to update the tabs m_peer->SetValue( m_nSelection + 1 ) ; } // some page should be selected: either this one or the first one if there // is still no selection int selNew = -1; if ( bSelect ) selNew = nPage; else if ( m_nSelection == -1 ) selNew = 0; if ( selNew != -1 ) SetSelection( selNew ); InvalidateBestSize(); return true; }
bool wxNotebook::SetPageImage(size_t nPage, int nImage) { wxCHECK_MSG( IS_VALID_PAGE(nPage), false, wxT("SetPageImage: invalid notebook page") ); wxCHECK_MSG( HasImageList() && nImage < GetImageList()->GetImageCount(), false, wxT("SetPageImage: invalid image index") ); if ( nImage != m_images[nPage] ) { // if the item didn't have an icon before or, on the contrary, did have // it but has lost it now, its size will change - but if the icon just // changes, it won't m_images[nPage] = nImage; MacSetupTabs() ; } return true; }
// remove one page from the notebook, without deleting the window wxNotebookPage* wxNotebook::DoRemovePage(size_t nPage) { wxCHECK_MSG( IS_VALID_PAGE(nPage), NULL, wxT("DoRemovePage: invalid notebook page") ); wxNotebookPage* page = m_pages[nPage] ; m_pages.RemoveAt(nPage); MacSetupTabs(); if (m_selection >= (int)GetPageCount()) m_selection = GetPageCount() - 1; if (m_selection >= 0) m_pages[m_selection]->Show(true); InvalidateBestSize(); return page; }