no longer needed
[wxWidgets.git] / samples / notebook / notebook.cpp
index 3ed54df76a15a70149c95de164d198630ea14631..c2f40aa6d6320dbe2bfa3f3950fe44526e63af3b 100644 (file)
@@ -161,11 +161,9 @@ wxPanel *MyNotebook::CreateInsertPage()
 
 void MyNotebook::CreateInitialPages()
 {
-    wxPanel *panel = (wxPanel *) NULL;
-
     // Create and add some panels to the notebook
 
-    panel = CreateRadioButtonsPage();
+    wxPanel *panel = CreateRadioButtonsPage();
     AddPage( panel, RADIOBUTTONS_PAGE_NAME, FALSE, GetIconIndex() );
 
     panel = CreateVetoPage();
@@ -229,7 +227,7 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size,
         );
 
     m_panel = new wxPanel(this, -1, wxDefaultPosition, wxDefaultSize,
-        wxTAB_TRAVERSAL | wxCLIP_CHILDREN | wxNO_BORDER);
+        wxTAB_TRAVERSAL | wxCLIP_CHILDREN | wxNO_BORDER | wxNO_FULL_REPAINT_ON_RESIZE);
 
     // Create remaining controls
 
@@ -246,24 +244,31 @@ 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") );
 
     m_btnInsertPage = new wxButton( m_panel, ID_BTN_INSERT_PAGE,
         wxT("&Insert page") );
 
-    m_btnDeletePage = new wxButton( m_panel, ID_BTN_DELETE_PAGE,
-        wxT("&Delete page") );
+    m_btnDeleteCurPage = new wxButton( m_panel, ID_BTN_DELETE_CUR_PAGE,
+        wxT("&Delete current page") );
+
+    m_btnDeleteLastPage = new wxButton( m_panel, ID_BTN_DELETE_LAST_PAGE,
+        wxT("Delete las&t page") );
 
     m_btnNextPage = new wxButton( m_panel, ID_BTN_NEXT_PAGE,
         wxT("&Next page") );
@@ -271,37 +276,34 @@ 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,
         wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE | wxTE_READONLY);
 
     m_logTargetOld = wxLog::SetActiveTarget( new wxLogTextCtrl(m_text) );
 
-    // Create the notebook's panels
-    m_notebook->CreateInitialPages();
-
     // Set sizers
     m_sizerFrame = new wxBoxSizer(wxVERTICAL);
 
     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_btnDeletePage, 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);
 
@@ -310,6 +312,7 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size,
     m_sizerFrame->Add(m_text, 0, wxEXPAND);
 
     ReInitNotebook();
+    m_notebook->CreateInitialPages();
 
     m_panel->SetSizer(m_sizerFrame);
 
@@ -360,6 +363,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,
@@ -380,7 +388,7 @@ void MyFrame::ReInitNotebook()
         {
             wxString str = notebook->GetPageText(n);
 
-            wxNotebookPage *page = m_notebook->CreatePage(str);
+            wxWindow *page = m_notebook->CreatePage(str);
             m_notebook->AddPage(page, str, FALSE, m_notebook->GetIconIndex() );
         }
 
@@ -400,7 +408,7 @@ void MyFrame::ReInitNotebook()
     }
 
 
-    m_sizerNotebook = new wxNotebookSizer(m_notebook);
+    m_sizerNotebook = new wxBookCtrlSizer(m_notebook);
     m_sizerTop->Add(m_sizerNotebook, 1, wxEXPAND | wxALL, 4);
     m_sizerTop->Layout();
 }
@@ -408,39 +416,48 @@ void MyFrame::ReInitNotebook()
 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)
-    EVT_BUTTON(ID_BTN_DELETE_PAGE, MyFrame::OnButtonDeletePage)
+    EVT_BUTTON(ID_BTN_DELETE_CUR_PAGE, MyFrame::OnButtonDeleteCurPage)
+    EVT_BUTTON(ID_BTN_DELETE_LAST_PAGE, MyFrame::OnButtonDeleteLastPage)
     EVT_BUTTON(ID_BTN_NEXT_PAGE, MyFrame::OnButtonNextPage)
     EVT_BUTTON(wxID_OK, MyFrame::OnButtonExit)
 
+    EVT_UPDATE_UI(ID_BTN_DELETE_CUR_PAGE, MyFrame::OnUpdateUIBtnDeleteCurPage)
+    EVT_UPDATE_UI(ID_BTN_DELETE_LAST_PAGE, MyFrame::OnUpdateUIBtnDeleteLastPage)
+
     EVT_NOTEBOOK_PAGE_CHANGED(ID_NOTEBOOK, MyFrame::OnNotebook)
     EVT_NOTEBOOK_PAGE_CHANGING(ID_NOTEBOOK, MyFrame::OnNotebook)
 
     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"),
+    (void) new wxButton( panel, -1, wxT("First button"),
         wxPoint(10, 10), wxSize(-1, -1) );
+    (void) new wxButton( panel, -1, wxT("Second button"),
+        wxPoint(50, 100), wxSize(-1, -1) );
 
     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();
 
@@ -451,7 +468,17 @@ void MyFrame::OnButtonInsertPage( wxCommandEvent& WXUNUSED(event) )
     m_notebook->SetSelection(0);
 }
 
-void MyFrame::OnButtonDeletePage( wxCommandEvent& WXUNUSED(event) )
+void MyFrame::OnButtonDeleteLastPage( wxCommandEvent& WXUNUSED(event) )
+{
+    int page = m_notebook->GetPageCount();
+
+    if ( page != 0 )
+    {
+        m_notebook->DeletePage(page - 1);
+    }
+}
+
+void MyFrame::OnButtonDeleteCurPage( wxCommandEvent& WXUNUSED(event) )
 {
     int sel = m_notebook->GetSelection();
 
@@ -507,7 +534,7 @@ void MyFrame::OnNotebook(wxNotebookEvent& event)
     static int s_numNotebookEvents = 0;
 
     wxLogMessage(wxT("Notebook event #%d: %s (%d)"),
-        s_numNotebookEvents++, str, eventType);
+        s_numNotebookEvents++, str.c_str(), eventType);
 
     m_text->SetInsertionPointEnd();
 
@@ -532,3 +559,13 @@ void MyFrame::OnIdle( wxIdleEvent& WXUNUSED(event) )
         SetTitle(title);
     }
 }
+
+void MyFrame::OnUpdateUIBtnDeleteCurPage(wxUpdateUIEvent& event)
+{
+    event.Enable( m_notebook->GetSelection() != -1 );
+}
+
+void MyFrame::OnUpdateUIBtnDeleteLastPage(wxUpdateUIEvent& event)
+{
+    event.Enable( m_notebook->GetPageCount() != 0 );
+}