]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/widgets/notebook.cpp
bakefile-generated makefiles for the sample
[wxWidgets.git] / samples / widgets / notebook.cpp
index 6d6ea111654850f86269c048f566cdc410b1b0c4..0d15102e268120dee6ff57c5388205314ee8edb1 100644 (file)
@@ -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"
@@ -44,7 +46,6 @@
 #include "wx/artprov.h"
 
 #include "widgets.h"
-#if 1
 #include "icons/notebook.xpm"
 
 // ----------------------------------------------------------------------------
@@ -78,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
 // ----------------------------------------------------------------------------
@@ -90,9 +86,12 @@ 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; }
+    virtual void RecreateWidget() { CreateNotebook(); }
+
 protected:
     // event handlers
     void OnPageChanging(wxNotebookEvent& event);
@@ -136,7 +135,7 @@ protected:
 
     // is the value in range?
     bool IsValidValue(int val) const
-        { return (val >= 0) && (val < m_notebook->GetPageCount()); }
+        { return (val >= 0) && (val < (int) m_notebook->GetPageCount()); }
 
     // the controls
     // ------------
@@ -181,11 +180,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()
 
 // ============================================================================
@@ -194,9 +193,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));
 
@@ -210,25 +209,22 @@ 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[] =
-    {
-        _T("&top"),
-        _T("&bottom"),
-        _T("&left"),
-        _T("&right"),
-    };
+    wxArrayString orientations;
+    orientations.Add(_T("&top"));
+    orientations.Add(_T("&bottom"));
+    orientations.Add(_T("&left"));
+    orientations.Add(_T("&right"));
 
-    wxASSERT_MSG( WXSIZEOF(orientations) == Orient_Max,
+    wxASSERT_MSG( orientations.GetCount() == 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);
+                                   orientations, 1, wxRA_SPECIFY_COLS);
 
     wxSizer *sizerLeft = new wxStaticBoxSizer(box, wxVERTICAL);
 
@@ -240,20 +236,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,
@@ -296,7 +292,6 @@ NotebookWidgetsPage::NotebookWidgetsPage(wxNotebook *notebook,
     Reset();
     CreateImageList();
 
-    SetAutoLayout(TRUE);
     SetSizer(sizerTop);
 
     sizerTop->Fit(this);
@@ -313,7 +308,7 @@ NotebookWidgetsPage::~NotebookWidgetsPage()
 
 void NotebookWidgetsPage::Reset()
 {
-    m_chkImages->SetValue(TRUE);
+    m_chkImages->SetValue(true);
     m_radioOrient->SetSelection(Orient_Top);
 }
 
@@ -350,31 +345,31 @@ void NotebookWidgetsPage::CreateImageList()
 
 void NotebookWidgetsPage::CreateNotebook()
 {
-    int flags;
+    int flags = ms_defaultFlags;
     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,
@@ -382,23 +377,24 @@ void NotebookWidgetsPage::CreateNotebook()
 
     CreateImageList();
 
-    if ( notebook )
+    if ( old_note )
     {
-        const int sel = notebook->GetSelection();
+        const int sel = old_note->GetSelection();
 
-        const int count = notebook->GetPageCount();
+        const int count = old_note->GetPageCount();
 
         // recreate the pages
         for ( int n = 0; n < count; n++ )
         {
             m_notebook->AddPage(CreateNewPage(),
-                                notebook->GetPageText(n),
-                                FALSE,
-                                notebook->GetPageImage(n));
+                                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 )
@@ -440,7 +436,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"));
 }
 
 // ----------------------------------------------------------------------------
@@ -459,7 +455,7 @@ 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( IsValidValue(pos), _T("button should be disabled") );
@@ -469,7 +465,7 @@ void NotebookWidgetsPage::OnButtonSelectPage(wxCommandEvent& event)
 
 void NotebookWidgetsPage::OnButtonAddPage(wxCommandEvent& WXUNUSED(event))
 {
-    m_notebook->AddPage(CreateNewPage(), _T("Added page"), FALSE,
+    m_notebook->AddPage(CreateNewPage(), _T("Added page"), false,
                         GetIconIndex());
 }
 
@@ -478,7 +474,7 @@ void NotebookWidgetsPage::OnButtonInsertPage(wxCommandEvent& WXUNUSED(event))
     int pos = GetTextValue(m_textInsert);
     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());
 }
 
@@ -508,7 +504,7 @@ void NotebookWidgetsPage::OnUpdateUIRemoveButton(wxUpdateUIEvent& event)
 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)
@@ -521,7 +517,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();
 }
@@ -546,4 +542,4 @@ void NotebookWidgetsPage::OnPageChanged(wxNotebookEvent& event)
     event.Skip();
 }
 
-#endif
+#endif // wxUSE_NOTEBOOK