X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/44e1a03ff3a21cfe884946800b11b70ddf0fb162..f6def1fae7f76d4fe352c641ead088b2cb95e91d:/samples/notebook/notebook.cpp diff --git a/samples/notebook/notebook.cpp b/samples/notebook/notebook.cpp index 8625be4de8..f5ed8758e1 100644 --- a/samples/notebook/notebook.cpp +++ b/samples/notebook/notebook.cpp @@ -5,7 +5,7 @@ // Modified by: Dimitri Schoolwerth // Created: 26/10/98 // RCS-ID: $Id$ -// Copyright: (c) 1998-2002 wxWindows team +// Copyright: (c) 1998-2002 wxWidgets team // License: wxWindows license ///////////////////////////////////////////////////////////////////////////// @@ -33,15 +33,15 @@ bool MyApp::OnInit() // Problem with generic wxNotebook implementation whereby it doesn't size // properly unless you set the size again -#if defined(__WIN16__) || defined(__WXMOTIF__) +#if defined(__WXMOTIF__) int width, height; frame->GetSize(& width, & height); - frame->SetSize(-1, -1, width, height); + frame->SetSize(wxDefaultCoord, wxDefaultCoord, width, height); #endif frame->Show(); - return TRUE; + return true; } MyNotebook::MyNotebook(wxWindow *parent, wxWindowID id, @@ -92,8 +92,8 @@ wxPanel *MyNotebook::CreateUserCreatedPage() { wxPanel *panel = new wxPanel(this); - (void) new wxButton( panel, -1, wxT("Button"), - wxPoint(10, 10), wxSize(-1, -1) ); + (void) new wxButton( panel, wxID_ANY, wxT("Button"), + wxPoint(10, 10), wxDefaultSize ); return panel; } @@ -105,13 +105,13 @@ wxPanel *MyNotebook::CreateRadioButtonsPage() wxString animals[] = { wxT("Fox"), wxT("Hare"), wxT("Rabbit"), wxT("Sabre-toothed tiger"), wxT("T Rex") }; - wxRadioBox *radiobox1 = new wxRadioBox(panel, -1, wxT("Choose one"), + wxRadioBox *radiobox1 = new wxRadioBox(panel, wxID_ANY, wxT("Choose one"), wxDefaultPosition, wxDefaultSize, 5, animals, 2, wxRA_SPECIFY_ROWS); wxString computers[] = { wxT("Amiga"), wxT("Commodore 64"), wxT("PET"), wxT("Another") }; - wxRadioBox *radiobox2 = new wxRadioBox(panel, -1, + wxRadioBox *radiobox2 = new wxRadioBox(panel, wxID_ANY, wxT("Choose your favourite"), wxDefaultPosition, wxDefaultSize, 4, computers, 0, wxRA_SPECIFY_COLS); @@ -127,7 +127,7 @@ wxPanel *MyNotebook::CreateVetoPage() { wxPanel *panel = new wxPanel(this); - (void) new wxStaticText( panel, -1, + (void) new wxStaticText( panel, wxID_ANY, wxT("This page intentionally left blank"), wxPoint(10, 10) ); return panel; @@ -137,8 +137,7 @@ wxPanel *MyNotebook::CreateBigButtonPage() { wxPanel *panel = new wxPanel(this); - wxButton *buttonBig = new wxButton( panel, -1, wxT("Maximized button"), - wxPoint(0, 0), wxSize(480, 360) ); + wxButton *buttonBig = new wxButton(panel, wxID_ANY, wxT("Maximized button")); wxBoxSizer *sizerPanel = new wxBoxSizer(wxVERTICAL); sizerPanel->Add(buttonBig, 1, wxEXPAND); @@ -153,7 +152,7 @@ wxPanel *MyNotebook::CreateInsertPage() wxPanel *panel = new wxPanel(this); panel->SetBackgroundColour( wxColour( wxT("MAROON") ) ); - (void) new wxStaticText( panel, -1, + (void) new wxStaticText( panel, wxID_ANY, wxT("This page has been inserted, not added."), wxPoint(10, 10) ); return panel; @@ -161,21 +160,19 @@ wxPanel *MyNotebook::CreateInsertPage() void MyNotebook::CreateInitialPages() { - wxPanel *panel = (wxPanel *) NULL; - // Create and add some panels to the notebook - panel = CreateRadioButtonsPage(); - AddPage( panel, RADIOBUTTONS_PAGE_NAME, FALSE, GetIconIndex() ); + wxPanel *panel = CreateRadioButtonsPage(); + AddPage( panel, RADIOBUTTONS_PAGE_NAME, false, GetIconIndex() ); panel = CreateVetoPage(); - AddPage( panel, VETO_PAGE_NAME, FALSE, GetIconIndex() ); + AddPage( panel, VETO_PAGE_NAME, false, GetIconIndex() ); panel = CreateBigButtonPage(); - AddPage( panel, MAXIMIZED_BUTTON_PAGE_NAME, FALSE, GetIconIndex() ); + AddPage( panel, MAXIMIZED_BUTTON_PAGE_NAME, false, GetIconIndex() ); panel = CreateInsertPage(); - InsertPage( 0, panel, I_WAS_INSERTED_PAGE_NAME, FALSE, GetIconIndex() ); + InsertPage( 0, panel, I_WAS_INSERTED_PAGE_NAME, false, GetIconIndex() ); SetSelection(1); @@ -197,7 +194,7 @@ int MyNotebook::GetIconIndex() const MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size, long style) - : wxFrame((wxWindow *) NULL, -1, title, pos, size, style) + : wxFrame((wxWindow *) NULL, wxID_ANY, title, pos, size, style) { m_panel = (wxPanel *) NULL; m_notebook = (MyNotebook *) NULL; @@ -228,8 +225,8 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size, wxArtProvider::GetIcon(wxART_ERROR, wxART_OTHER, imageSize) ); - m_panel = new wxPanel(this, -1, wxDefaultPosition, wxDefaultSize, - wxTAB_TRAVERSAL | wxCLIP_CHILDREN | wxNO_BORDER); + m_panel = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, + wxTAB_TRAVERSAL | wxCLIP_CHILDREN | wxNO_BORDER | wxNO_FULL_REPAINT_ON_RESIZE); // Create remaining controls @@ -246,16 +243,20 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size, wxT("Forgot to update something") ); m_radioOrient = new wxRadioBox - ( - m_panel, ID_RADIO_ORIENT, - wxT("&Tab orientation"), - wxDefaultPosition, wxDefaultSize, - WXSIZEOF(strOrientations), strOrientations, - 1, wxRA_SPECIFY_COLS - ); + ( + m_panel, ID_RADIO_ORIENT, + wxT("&Tab orientation"), + wxDefaultPosition, wxDefaultSize, + WXSIZEOF(strOrientations), strOrientations, + 1, wxRA_SPECIFY_COLS + ); m_chkShowImages = new wxCheckBox( m_panel, ID_CHK_SHOWIMAGES, wxT("&Show images") ); +#ifndef TEST_LISTBOOK + m_chkMultiLine = new wxCheckBox( m_panel, ID_CHK_MULTILINE, + wxT("&Multiple lines") ); +#endif // !TEST_LISTBOOK m_btnAddPage = new wxButton( m_panel, ID_BTN_ADD_PAGE, wxT("&Add page") ); @@ -274,15 +275,12 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size, m_btnExit = new wxButton( m_panel, wxID_OK, wxT("&Exit") ); m_btnExit->SetDefault(); - m_notebook = new MyNotebook(m_panel, ID_NOTEBOOK); - - m_text = new wxTextCtrl(m_panel, -1, wxEmptyString, +#if wxUSE_LOG + m_text = new wxTextCtrl(m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE | wxTE_READONLY); m_logTargetOld = wxLog::SetActiveTarget( new wxLogTextCtrl(m_text) ); - - // Create the notebook's panels - m_notebook->CreateInitialPages(); +#endif // wxUSE_LOG // Set sizers m_sizerFrame = new wxBoxSizer(wxVERTICAL); @@ -290,36 +288,39 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size, m_sizerTop = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer *sizerLeft = new wxBoxSizer(wxVERTICAL); - { - sizerLeft->Add(m_radioOrient, 0, wxEXPAND); - sizerLeft->Add(m_chkShowImages, 0, wxEXPAND | wxTOP, 4); + sizerLeft->Add(m_radioOrient, 0, wxEXPAND); + sizerLeft->Add(m_chkShowImages, 0, wxEXPAND | wxTOP, 4); +#ifndef TEST_LISTBOOK + sizerLeft->Add(m_chkMultiLine, 0, wxEXPAND | wxTOP, 4); +#endif // !TEST_LISTBOOK - sizerLeft->Add(0, 0, 1); // Spacer + sizerLeft->Add(0, 0, 1); // Spacer - sizerLeft->Add(m_btnAddPage, 0, wxEXPAND | (wxTOP | wxBOTTOM), 4); - sizerLeft->Add(m_btnInsertPage, 0, wxEXPAND | (wxTOP | wxBOTTOM), 4); - sizerLeft->Add(m_btnDeleteCurPage, 0, wxEXPAND | (wxTOP | wxBOTTOM), 4); - sizerLeft->Add(m_btnDeleteLastPage, 0, wxEXPAND | (wxTOP | wxBOTTOM), 4); - sizerLeft->Add(m_btnNextPage, 0, wxEXPAND | (wxTOP | wxBOTTOM), 4); + sizerLeft->Add(m_btnAddPage, 0, wxEXPAND | (wxTOP | wxBOTTOM), 4); + sizerLeft->Add(m_btnInsertPage, 0, wxEXPAND | (wxTOP | wxBOTTOM), 4); + sizerLeft->Add(m_btnDeleteCurPage, 0, wxEXPAND | (wxTOP | wxBOTTOM), 4); + sizerLeft->Add(m_btnDeleteLastPage, 0, wxEXPAND | (wxTOP | wxBOTTOM), 4); + sizerLeft->Add(m_btnNextPage, 0, wxEXPAND | (wxTOP | wxBOTTOM), 4); - sizerLeft->Add(0, 0, 1); // Spacer + sizerLeft->Add(0, 0, 1); // Spacer - sizerLeft->Add(m_btnExit, 0, wxEXPAND); - } + sizerLeft->Add(m_btnExit, 0, wxEXPAND); m_sizerTop->Add(sizerLeft, 0, wxEXPAND | wxALL, 4); m_sizerFrame->Add(m_sizerTop, 1, wxEXPAND); +#if wxUSE_LOG m_sizerFrame->Add(m_text, 0, wxEXPAND); +#endif // wxUSE_LOG ReInitNotebook(); + m_notebook->CreateInitialPages(); m_panel->SetSizer(m_sizerFrame); - m_panel->SetAutoLayout(TRUE); - m_sizerFrame->Fit(this); + m_sizerFrame->SetSizeHints(this); Centre(wxBOTH); @@ -327,7 +328,9 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size, MyFrame::~MyFrame() { +#if wxUSE_LOG delete wxLog::SetActiveTarget(m_logTargetOld); +#endif // wxUSE_LOG if (m_imageList) { @@ -364,6 +367,11 @@ void MyFrame::ReInitNotebook() break; } +#ifndef TEST_LISTBOOK + if ( m_chkMultiLine->IsChecked() ) + flags |= wxNB_MULTILINE; +#endif // !TEST_LISTBOOK + MyNotebook *notebook = m_notebook; m_notebook = new MyNotebook(m_panel, ID_NOTEBOOK, @@ -384,15 +392,12 @@ void MyFrame::ReInitNotebook() { wxString str = notebook->GetPageText(n); - wxNotebookPage *page = m_notebook->CreatePage(str); - m_notebook->AddPage(page, str, FALSE, m_notebook->GetIconIndex() ); - } - - if (m_sizerNotebook) - { - m_sizerTop->Remove(m_sizerNotebook); + wxWindow *page = m_notebook->CreatePage(str); + m_notebook->AddPage(page, str, false, m_notebook->GetIconIndex() ); } + m_sizerTop->Detach(notebook); + delete notebook; // restore selection @@ -404,14 +409,16 @@ void MyFrame::ReInitNotebook() } - m_sizerNotebook = new wxNotebookSizer(m_notebook); - m_sizerTop->Add(m_sizerNotebook, 1, wxEXPAND | wxALL, 4); + m_sizerTop->Add(m_notebook, 1, wxEXPAND | wxALL, 4); m_sizerTop->Layout(); } BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_RADIOBOX(ID_RADIO_ORIENT, MyFrame::OnCheckOrRadioBox) EVT_CHECKBOX(ID_CHK_SHOWIMAGES, MyFrame::OnCheckOrRadioBox) +#ifndef TEST_LISTBOOK + EVT_CHECKBOX(ID_CHK_MULTILINE, MyFrame::OnCheckOrRadioBox) +#endif // !TEST_LISTBOOK EVT_BUTTON(ID_BTN_ADD_PAGE, MyFrame::OnButtonAddPage) EVT_BUTTON(ID_BTN_INSERT_PAGE, MyFrame::OnButtonInsertPage) @@ -429,31 +436,33 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_IDLE(MyFrame::OnIdle) END_EVENT_TABLE() -void MyFrame::OnCheckOrRadioBox(wxCommandEvent& event) +void MyFrame::OnCheckOrRadioBox(wxCommandEvent& WXUNUSED(event)) { - ReInitNotebook(); + ReInitNotebook(); } void MyFrame::OnButtonAddPage( wxCommandEvent& WXUNUSED(event) ) { - static size_t s_pageAdded = 0; + static unsigned s_pageAdded = 0; - wxPanel *panel = new wxPanel( m_notebook, -1 ); - (void) new wxButton( panel, -1, wxT("Button"), - wxPoint(10, 10), wxSize(-1, -1) ); + wxPanel *panel = new wxPanel( m_notebook, wxID_ANY ); + (void) new wxButton( panel, wxID_ANY, wxT("First button"), + wxPoint(10, 10), wxDefaultSize ); + (void) new wxButton( panel, wxID_ANY, wxT("Second button"), + wxPoint(50, 100), wxDefaultSize ); m_notebook->AddPage(panel, wxString::Format(ADDED_PAGE_NAME wxT("%u"), - ++s_pageAdded), FALSE, m_notebook->GetIconIndex() ); + ++s_pageAdded), true, m_notebook->GetIconIndex() ); } void MyFrame::OnButtonInsertPage( wxCommandEvent& WXUNUSED(event) ) { - static size_t s_pageIns = 0; + static unsigned s_pageIns = 0; wxPanel *panel = m_notebook->CreateUserCreatedPage(); m_notebook->InsertPage( 0, panel, - wxString::Format(INSERTED_PAGE_NAME wxT("%u"), ++s_pageIns), FALSE, + wxString::Format(INSERTED_PAGE_NAME wxT("%u"), ++s_pageIns), false, m_notebook->GetIconIndex() ); m_notebook->SetSelection(0); @@ -527,7 +536,9 @@ void MyFrame::OnNotebook(wxNotebookEvent& event) wxLogMessage(wxT("Notebook event #%d: %s (%d)"), s_numNotebookEvents++, str.c_str(), eventType); +#if wxUSE_LOG m_text->SetInsertionPointEnd(); +#endif // wxUSE_LOG event.Skip(); }