]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/widgets/notebook.cpp
demonstrate tab order
[wxWidgets.git] / samples / widgets / notebook.cpp
index 4491785d2f73c1bf02f9f4ca2d64a8f1d77e210f..adfbb5ad2e7d5c56ad84f8876b7d9fd29e5fc07b 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
 // Name:        notebook.cpp
 // Purpose:     Part of the widgets sample showing wxNotebook
 // Author:      Vadim Zeitlin
@@ -78,7 +78,7 @@ enum Orient
     Orient_Max
 };
 
     Orient_Max
 };
 
-// old versions of wxWindows don't define this style
+// old versions of wxWidgets don't define this style
 #ifndef wxNB_TOP
     #define wxNB_TOP (0)
 #endif
 #ifndef wxNB_TOP
     #define wxNB_TOP (0)
 #endif
@@ -134,6 +134,10 @@ protected:
     // get the numeric value of text ctrl
     int GetTextValue(wxTextCtrl *text) const;
 
     // 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
     // ------------
 
     // the controls
     // ------------
 
@@ -177,11 +181,11 @@ BEGIN_EVENT_TABLE(NotebookWidgetsPage, WidgetsPage)
     EVT_UPDATE_UI(NotebookPage_InsertPage, NotebookWidgetsPage::OnUpdateUIInsertButton)
     EVT_UPDATE_UI(NotebookPage_RemovePage, NotebookWidgetsPage::OnUpdateUIRemoveButton)
 
     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()
 
 // ============================================================================
 END_EVENT_TABLE()
 
 // ============================================================================
@@ -206,7 +210,7 @@ NotebookWidgetsPage::NotebookWidgetsPage(wxNotebook *notebook,
     wxSizer *sizerTop = new wxBoxSizer(wxHORIZONTAL);
 
     // left pane
     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[] =
 
     // must be in sync with Orient enum
     wxString orientations[] =
@@ -220,8 +224,8 @@ NotebookWidgetsPage::NotebookWidgetsPage(wxNotebook *notebook,
     wxASSERT_MSG( WXSIZEOF(orientations) == Orient_Max,
                   _T("forgot to update something") );
 
     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);
                                    wxDefaultPosition, wxDefaultSize,
                                    WXSIZEOF(orientations), orientations,
                                    1, wxRA_SPECIFY_COLS);
@@ -236,20 +240,20 @@ NotebookWidgetsPage::NotebookWidgetsPage(wxNotebook *notebook,
     sizerLeft->Add(btn, 0, wxALIGN_CENTRE_HORIZONTAL | wxALL, 15);
 
     // middle pane
     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);
     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);
     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,
     sizerMiddle->Add(sizerRow, 0, wxALL | wxGROW, 5);
 
     sizerRow = CreateSizerWithTextAndButton(NotebookPage_SelectPage,
@@ -292,7 +296,6 @@ NotebookWidgetsPage::NotebookWidgetsPage(wxNotebook *notebook,
     Reset();
     CreateImageList();
 
     Reset();
     CreateImageList();
 
-    SetAutoLayout(TRUE);
     SetSizer(sizerTop);
 
     sizerTop->Fit(this);
     SetSizer(sizerTop);
 
     sizerTop->Fit(this);
@@ -309,7 +312,7 @@ NotebookWidgetsPage::~NotebookWidgetsPage()
 
 void NotebookWidgetsPage::Reset()
 {
 
 void NotebookWidgetsPage::Reset()
 {
-    m_chkImages->SetValue(TRUE);
+    m_chkImages->SetValue(true);
     m_radioOrient->SetSelection(Orient_Top);
 }
 
     m_radioOrient->SetSelection(Orient_Top);
 }
 
@@ -380,21 +383,20 @@ void NotebookWidgetsPage::CreateNotebook()
 
     if ( notebook )
     {
 
     if ( notebook )
     {
-        int sel = notebook->GetSelection();
+        const int sel = notebook->GetSelection();
+
+        const int count = notebook->GetPageCount();
 
 
-        int count = notebook->GetPageCount();
+        // recreate the pages
         for ( int n = 0; n < count; n++ )
         {
         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(),
+                                notebook->GetPageText(n),
+                                false,
+                                notebook->GetPageImage(n));
         }
 
         }
 
-        m_sizerNotebook->Remove(notebook);
+        m_sizerNotebook->Detach( notebook );
         delete notebook;
 
         // restore selection
         delete notebook;
 
         // restore selection
@@ -437,7 +439,7 @@ int NotebookWidgetsPage::GetIconIndex() const
 
 wxWindow *NotebookWidgetsPage::CreateNewPage()
 {
 
 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"));
 }
 
 // ----------------------------------------------------------------------------
 }
 
 // ----------------------------------------------------------------------------
@@ -456,50 +458,50 @@ void NotebookWidgetsPage::OnButtonDeleteAll(wxCommandEvent& WXUNUSED(event))
     m_notebook->DeleteAllPages();
 }
 
     m_notebook->DeleteAllPages();
 }
 
-void NotebookWidgetsPage::OnButtonSelectPage(wxCommandEvent& event)
+void NotebookWidgetsPage::OnButtonSelectPage(wxCommandEvent& WXUNUSED(event))
 {
     int pos = GetTextValue(m_textSelect);
 {
     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->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);
                         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);
                            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)
 {
 
     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)
 {
 }
 
 void NotebookWidgetsPage::OnUpdateUIInsertButton(wxUpdateUIEvent& event)
 {
-    event.Enable( GetTextValue(m_textInsert) >= 0 );
+    event.Enable( IsValidValue(GetTextValue(m_textInsert)) );
 }
 
 void NotebookWidgetsPage::OnUpdateUIRemoveButton(wxUpdateUIEvent& event)
 {
 }
 
 void NotebookWidgetsPage::OnUpdateUIRemoveButton(wxUpdateUIEvent& event)
 {
-    event.Enable( GetTextValue(m_textRemove) >= 0 );
+    event.Enable( IsValidValue(GetTextValue(m_textRemove)) );
 }
 
 void NotebookWidgetsPage::OnUpdateUIResetButton(wxUpdateUIEvent& event)
 }
 
 void NotebookWidgetsPage::OnUpdateUIResetButton(wxUpdateUIEvent& event)
@@ -518,7 +520,7 @@ void NotebookWidgetsPage::OnUpdateUICurSelectText(wxUpdateUIEvent& event)
     event.SetText( wxString::Format(_T("%d"), m_notebook->GetSelection()) );
 }
 
     event.SetText( wxString::Format(_T("%d"), m_notebook->GetSelection()) );
 }
 
-void NotebookWidgetsPage::OnCheckOrRadioBox(wxCommandEvent& event)
+void NotebookWidgetsPage::OnCheckOrRadioBox(wxCommandEvent& WXUNUSED(event))
 {
     CreateNotebook();
 }
 {
     CreateNotebook();
 }
@@ -543,4 +545,4 @@ void NotebookWidgetsPage::OnPageChanged(wxNotebookEvent& event)
     event.Skip();
 }
 
     event.Skip();
 }
 
-#endif
\ No newline at end of file
+#endif