X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/32b8ec418aee4e38877d4cb79e2984c766dcc358..c1bf3a3e90edc2ad50446c5d8891af17bb188ebf:/samples/widgets/notebook.cpp diff --git a/samples/widgets/notebook.cpp b/samples/widgets/notebook.cpp index 15e02fbfce..44279c70d1 100644 --- a/samples/widgets/notebook.cpp +++ b/samples/widgets/notebook.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Program: wxWindows Widgets Sample +// Program: wxWidgets Widgets Sample // Name: notebook.cpp // Purpose: Part of the widgets sample showing wxNotebook // Author: Vadim Zeitlin @@ -24,6 +24,8 @@ #pragma hdrstop #endif +#if wxUSE_NOTEBOOK + // for all others, include the necessary headers #ifndef WX_PRECOMP #include "wx/app.h" @@ -41,9 +43,9 @@ #include "wx/sizer.h" #include "wx/notebook.h" +#include "wx/artprov.h" #include "widgets.h" - #include "icons/notebook.xpm" // ---------------------------------------------------------------------------- @@ -77,11 +79,6 @@ enum Orient Orient_Max }; -// old versions of wxWindows don't define this style -#ifndef wxNB_TOP - #define wxNB_TOP (0) -#endif - // ---------------------------------------------------------------------------- // NotebookWidgetsPage // ---------------------------------------------------------------------------- @@ -89,9 +86,11 @@ enum Orient class NotebookWidgetsPage : public WidgetsPage { public: - NotebookWidgetsPage(wxNotebook *notebook, wxImageList *imaglist); + NotebookWidgetsPage(wxBookCtrlBase *book, wxImageList *imaglist); virtual ~NotebookWidgetsPage(); + virtual wxControl *GetWidget() const { return m_notebook; } + protected: // event handlers void OnPageChanging(wxNotebookEvent& event); @@ -133,6 +132,10 @@ protected: // get the numeric value of text ctrl int GetTextValue(wxTextCtrl *text) const; + // is the value in range? + bool IsValidValue(int val) const + { return (val >= 0) && (val < (int) m_notebook->GetPageCount()); } + // the controls // ------------ @@ -153,8 +156,8 @@ protected: wxImageList *m_imageList; private: - DECLARE_EVENT_TABLE(); - DECLARE_WIDGETS_PAGE(NotebookWidgetsPage); + DECLARE_EVENT_TABLE() + DECLARE_WIDGETS_PAGE(NotebookWidgetsPage) }; // ---------------------------------------------------------------------------- @@ -176,11 +179,11 @@ BEGIN_EVENT_TABLE(NotebookWidgetsPage, WidgetsPage) EVT_UPDATE_UI(NotebookPage_InsertPage, NotebookWidgetsPage::OnUpdateUIInsertButton) EVT_UPDATE_UI(NotebookPage_RemovePage, NotebookWidgetsPage::OnUpdateUIRemoveButton) - EVT_NOTEBOOK_PAGE_CHANGING(-1, NotebookWidgetsPage::OnPageChanging) - EVT_NOTEBOOK_PAGE_CHANGED(-1, NotebookWidgetsPage::OnPageChanged) + EVT_NOTEBOOK_PAGE_CHANGING(wxID_ANY, NotebookWidgetsPage::OnPageChanging) + EVT_NOTEBOOK_PAGE_CHANGED(wxID_ANY, NotebookWidgetsPage::OnPageChanged) - EVT_CHECKBOX(-1, NotebookWidgetsPage::OnCheckOrRadioBox) - EVT_RADIOBOX(-1, NotebookWidgetsPage::OnCheckOrRadioBox) + EVT_CHECKBOX(wxID_ANY, NotebookWidgetsPage::OnCheckOrRadioBox) + EVT_RADIOBOX(wxID_ANY, NotebookWidgetsPage::OnCheckOrRadioBox) END_EVENT_TABLE() // ============================================================================ @@ -189,9 +192,9 @@ END_EVENT_TABLE() IMPLEMENT_WIDGETS_PAGE(NotebookWidgetsPage, _T("Notebook")); -NotebookWidgetsPage::NotebookWidgetsPage(wxNotebook *notebook, +NotebookWidgetsPage::NotebookWidgetsPage(wxBookCtrlBase *book, wxImageList *imaglist) - : WidgetsPage(notebook) + : WidgetsPage(book) { imaglist->Add(wxBitmap(notebook_xpm)); @@ -205,7 +208,7 @@ NotebookWidgetsPage::NotebookWidgetsPage(wxNotebook *notebook, wxSizer *sizerTop = new wxBoxSizer(wxHORIZONTAL); // left pane - wxStaticBox *box = new wxStaticBox(this, -1, _T("&Set style")); + wxStaticBox *box = new wxStaticBox(this, wxID_ANY, _T("&Set style")); // must be in sync with Orient enum wxString orientations[] = @@ -219,8 +222,8 @@ NotebookWidgetsPage::NotebookWidgetsPage(wxNotebook *notebook, wxASSERT_MSG( WXSIZEOF(orientations) == Orient_Max, _T("forgot to update something") ); - m_chkImages = new wxCheckBox(this, -1, _T("Show &images")); - m_radioOrient = new wxRadioBox(this, -1, _T("&Tab orientation"), + m_chkImages = new wxCheckBox(this, wxID_ANY, _T("Show &images")); + m_radioOrient = new wxRadioBox(this, wxID_ANY, _T("&Tab orientation"), wxDefaultPosition, wxDefaultSize, WXSIZEOF(orientations), orientations, 1, wxRA_SPECIFY_COLS); @@ -235,20 +238,20 @@ NotebookWidgetsPage::NotebookWidgetsPage(wxNotebook *notebook, sizerLeft->Add(btn, 0, wxALIGN_CENTRE_HORIZONTAL | wxALL, 15); // middle pane - wxStaticBox *box2 = new wxStaticBox(this, -1, _T("&Contents")); + wxStaticBox *box2 = new wxStaticBox(this, wxID_ANY, _T("&Contents")); wxSizer *sizerMiddle = new wxStaticBoxSizer(box2, wxVERTICAL); wxTextCtrl *text; wxSizer *sizerRow = CreateSizerWithTextAndLabel(_T("Number of pages: "), NotebookPage_NumPagesText, &text); - text->SetEditable(FALSE); + text->SetEditable(false); sizerMiddle->Add(sizerRow, 0, wxALL | wxGROW, 5); sizerRow = CreateSizerWithTextAndLabel(_T("Current selection: "), NotebookPage_CurSelectText, &text); - text->SetEditable(FALSE); + text->SetEditable(false); sizerMiddle->Add(sizerRow, 0, wxALL | wxGROW, 5); sizerRow = CreateSizerWithTextAndButton(NotebookPage_SelectPage, @@ -279,7 +282,7 @@ NotebookWidgetsPage::NotebookWidgetsPage(wxNotebook *notebook, wxSizer *sizerRight = new wxBoxSizer(wxHORIZONTAL); m_notebook = new wxNotebook(this, NotebookPage_Notebook); sizerRight->Add(m_notebook, 1, wxGROW | wxALL, 5); - sizerRight->SetMinSize(250, 0); + sizerRight->SetMinSize(150, 0); m_sizerNotebook = sizerRight; // save it to modify it later // the 3 panes panes compose the window @@ -291,7 +294,6 @@ NotebookWidgetsPage::NotebookWidgetsPage(wxNotebook *notebook, Reset(); CreateImageList(); - SetAutoLayout(TRUE); SetSizer(sizerTop); sizerTop->Fit(this); @@ -308,7 +310,7 @@ NotebookWidgetsPage::~NotebookWidgetsPage() void NotebookWidgetsPage::Reset() { - m_chkImages->SetValue(TRUE); + m_chkImages->SetValue(true); m_radioOrient->SetSelection(Orient_Top); } @@ -320,10 +322,11 @@ void NotebookWidgetsPage::CreateImageList() { // create a dummy image list with a few icons m_imageList = new wxImageList(32, 32); - m_imageList->Add(wxTheApp->GetStdIcon(wxICON_INFORMATION)); - m_imageList->Add(wxTheApp->GetStdIcon(wxICON_QUESTION)); - m_imageList->Add(wxTheApp->GetStdIcon(wxICON_WARNING)); - m_imageList->Add(wxTheApp->GetStdIcon(wxICON_ERROR)); + wxSize size(32, 32); + m_imageList->Add(wxArtProvider::GetIcon(wxART_INFORMATION, wxART_OTHER, size)); + m_imageList->Add(wxArtProvider::GetIcon(wxART_QUESTION, wxART_OTHER, size)); + m_imageList->Add(wxArtProvider::GetIcon(wxART_WARNING, wxART_OTHER, size)); + m_imageList->Add(wxArtProvider::GetIcon(wxART_ERROR, wxART_OTHER, size)); } m_notebook->SetImageList(m_imageList); @@ -348,27 +351,27 @@ void NotebookWidgetsPage::CreateNotebook() switch ( m_radioOrient->GetSelection() ) { default: - wxFAIL_MSG( _T("unknown notebok orientation") ); + wxFAIL_MSG( _T("unknown notebook orientation") ); // fall through case Orient_Top: - flags = wxNB_TOP; + flags = wxBK_TOP; break; case Orient_Bottom: - flags = wxNB_BOTTOM; + flags = wxBK_BOTTOM; break; case Orient_Left: - flags = wxNB_LEFT; + flags = wxBK_LEFT; break; case Orient_Right: - flags = wxNB_RIGHT; + flags = wxBK_RIGHT; break; } - wxNotebook *notebook = m_notebook; + wxNotebook *old_note = m_notebook; m_notebook = new wxNotebook(this, NotebookPage_Notebook, wxDefaultPosition, wxDefaultSize, @@ -376,24 +379,24 @@ void NotebookWidgetsPage::CreateNotebook() CreateImageList(); - if ( notebook ) + if ( old_note ) { - int sel = notebook->GetSelection(); + const int sel = old_note->GetSelection(); + + const int count = old_note->GetPageCount(); - int count = notebook->GetPageCount(); + // recreate the pages for ( int n = 0; n < count; n++ ) { - wxNotebookPage *page = notebook->GetPage(0); - page->Reparent(m_notebook); - - m_notebook->AddPage(page, notebook->GetPageText(0), FALSE, - notebook->GetPageImage(0)); - - notebook->RemovePage(0); + m_notebook->AddPage(CreateNewPage(), + old_note->GetPageText(n), + false, + m_chkImages->GetValue() ? + GetIconIndex() : -1); } - m_sizerNotebook->Remove(notebook); - delete notebook; + m_sizerNotebook->Detach( old_note ); + delete old_note; // restore selection if ( sel != -1 ) @@ -435,7 +438,7 @@ int NotebookWidgetsPage::GetIconIndex() const wxWindow *NotebookWidgetsPage::CreateNewPage() { - return new wxTextCtrl(m_notebook, -1, _T("I'm a notebook page")); + return new wxTextCtrl(m_notebook, wxID_ANY, _T("I'm a notebook page")); } // ---------------------------------------------------------------------------- @@ -454,56 +457,56 @@ void NotebookWidgetsPage::OnButtonDeleteAll(wxCommandEvent& WXUNUSED(event)) m_notebook->DeleteAllPages(); } -void NotebookWidgetsPage::OnButtonSelectPage(wxCommandEvent& event) +void NotebookWidgetsPage::OnButtonSelectPage(wxCommandEvent& WXUNUSED(event)) { int pos = GetTextValue(m_textSelect); - wxCHECK_RET( pos >= 0, _T("button should be disabled") ); + wxCHECK_RET( IsValidValue(pos), _T("button should be disabled") ); m_notebook->SetSelection(pos); } void NotebookWidgetsPage::OnButtonAddPage(wxCommandEvent& WXUNUSED(event)) { - m_notebook->AddPage(CreateNewPage(), _T("Added page"), FALSE, + m_notebook->AddPage(CreateNewPage(), _T("Added page"), false, GetIconIndex()); } void NotebookWidgetsPage::OnButtonInsertPage(wxCommandEvent& WXUNUSED(event)) { int pos = GetTextValue(m_textInsert); - wxCHECK_RET( pos >= 0, _T("button should be disabled") ); + wxCHECK_RET( IsValidValue(pos), _T("button should be disabled") ); - m_notebook->InsertPage(pos, CreateNewPage(), _T("Inserted page"), FALSE, + m_notebook->InsertPage(pos, CreateNewPage(), _T("Inserted page"), false, GetIconIndex()); } void NotebookWidgetsPage::OnButtonRemovePage(wxCommandEvent& WXUNUSED(event)) { int pos = GetTextValue(m_textRemove); - wxCHECK_RET( pos >= 0, _T("button should be disabled") ); + wxCHECK_RET( IsValidValue(pos), _T("button should be disabled") ); m_notebook->DeletePage(pos); } void NotebookWidgetsPage::OnUpdateUISelectButton(wxUpdateUIEvent& event) { - event.Enable( GetTextValue(m_textSelect) >= 0 ); + event.Enable( IsValidValue(GetTextValue(m_textSelect)) ); } void NotebookWidgetsPage::OnUpdateUIInsertButton(wxUpdateUIEvent& event) { - event.Enable( GetTextValue(m_textInsert) >= 0 ); + event.Enable( IsValidValue(GetTextValue(m_textInsert)) ); } void NotebookWidgetsPage::OnUpdateUIRemoveButton(wxUpdateUIEvent& event) { - event.Enable( GetTextValue(m_textRemove) >= 0 ); + event.Enable( IsValidValue(GetTextValue(m_textRemove)) ); } void NotebookWidgetsPage::OnUpdateUIResetButton(wxUpdateUIEvent& event) { event.Enable( !m_chkImages->GetValue() || - m_radioOrient->GetSelection() != wxNB_TOP ); + m_radioOrient->GetSelection() != wxBK_TOP ); } void NotebookWidgetsPage::OnUpdateUINumPagesText(wxUpdateUIEvent& event) @@ -516,7 +519,7 @@ void NotebookWidgetsPage::OnUpdateUICurSelectText(wxUpdateUIEvent& event) event.SetText( wxString::Format(_T("%d"), m_notebook->GetSelection()) ); } -void NotebookWidgetsPage::OnCheckOrRadioBox(wxCommandEvent& event) +void NotebookWidgetsPage::OnCheckOrRadioBox(wxCommandEvent& WXUNUSED(event)) { CreateNotebook(); } @@ -541,3 +544,4 @@ void NotebookWidgetsPage::OnPageChanged(wxNotebookEvent& event) event.Skip(); } +#endif // wxUSE_NOTEBOOK