]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/notebook/notebook.cpp
wxTinderbox build fix.
[wxWidgets.git] / samples / notebook / notebook.cpp
index 319c60e0553dec1acaf3f45bf6d317a95f5bc8ea..b0eb08c72fba382ec1f7514fb1a4a1fe02158b37 100644 (file)
@@ -211,6 +211,9 @@ MyFrame::MyFrame()
 #if wxUSE_TREEBOOK
     menuType->AppendRadioItem(ID_BOOK_TREEBOOK,   wxT("&Treebook\tCtrl-4"));
 #endif
+#if wxUSE_TOOLBOOK
+    menuType->AppendRadioItem(ID_BOOK_TOOLBOOK,   wxT("T&oolbook\tCtrl-5"));
+#endif
 
     menuType->Check(ID_BOOK_NOTEBOOK + m_type, true);
 
@@ -307,87 +310,81 @@ MyFrame::~MyFrame()
 // part is control class-specific
 #if wxUSE_NOTEBOOK
     #define CASE_NOTEBOOK(x) case Type_Notebook: x; break;
-    #define FLAG_NOTEBOOK(x) wxNB_##x
 #else
     #define CASE_NOTEBOOK(x)
-    #define FLAG_NOTEBOOK(x) 0
 #endif
 
 #if wxUSE_LISTBOOK
     #define CASE_LISTBOOK(x) case Type_Listbook: x; break;
-    #define FLAG_LISTBOOK(x) wxLB_##x
 #else
     #define CASE_LISTBOOK(x)
-    #define FLAG_LISTBOOK(x) 0
 #endif
 
 #if wxUSE_CHOICEBOOK
     #define CASE_CHOICEBOOK(x) case Type_Choicebook: x; break;
-    #define FLAG_CHOICEBOOK(x) wxCHB_##x
 #else
     #define CASE_CHOICEBOOK(x)
-    #define FLAG_CHOICEBOOK(x) 0
 #endif
 
 #if wxUSE_TREEBOOK
     #define CASE_TREEBOOK(x) case Type_Treebook: x; break;
-    #define FLAG_TREEBOOK(x) wxTBK_##x
 #else
     #define CASE_TREEBOOK(x)
-    #define FLAG_TREEBOOK(x) 0
 #endif
 
-#define DISPATCH_ON_TYPE(before, nb, lb, cb, tb, after)                       \
+#if wxUSE_TOOLBOOK
+    #define CASE_TOOLBOOK(x) case Type_Toolbook: x; break;
+#else
+    #define CASE_TOOLBOOK(x)
+#endif
+
+#define DISPATCH_ON_TYPE(before, nb, lb, cb, tb, toolb, after)                       \
     switch ( m_type )                                                         \
     {                                                                         \
         CASE_NOTEBOOK(before nb after)                                        \
         CASE_LISTBOOK(before lb after)                                        \
         CASE_CHOICEBOOK(before cb after)                                      \
         CASE_TREEBOOK(before tb after)                                        \
+        CASE_TOOLBOOK(before toolb after)                                        \
                                                                               \
         default:                                                              \
             wxFAIL_MSG( _T("unknown book control type") );                    \
     }
 
-int MyFrame::TranslateBookFlag(int nb, int lb, int chb, int tbk) const
+int MyFrame::TranslateBookFlag(int nb, int lb, int chb, int tbk, int toolbk) const
 {
     int flag = 0;
 
-    DISPATCH_ON_TYPE(flag =, nb,  lb,  chb,  tbk, + 0);
+    DISPATCH_ON_TYPE(flag =, nb,  lb,  chb,  tbk, toolbk, + 0);
 
     return flag;
 }
 
 void MyFrame::RecreateBook()
 {
-#define SELECT_FLAG(f) \
-    TranslateBookFlag(FLAG_NOTEBOOK(f), FLAG_LISTBOOK(f), FLAG_CHOICEBOOK(f), FLAG_TREEBOOK(f))
-
     int flags;
     switch ( m_orient )
     {
         case ID_ORIENT_TOP:
-            flags = SELECT_FLAG(TOP);
+            flags = wxBK_TOP;
             break;
 
         case ID_ORIENT_BOTTOM:
-            flags = SELECT_FLAG(BOTTOM);
+            flags = wxBK_BOTTOM;
             break;
 
         case ID_ORIENT_LEFT:
-            flags = SELECT_FLAG(LEFT);
+            flags = wxBK_LEFT;
             break;
 
         case ID_ORIENT_RIGHT:
-            flags = SELECT_FLAG(RIGHT);
+            flags = wxBK_RIGHT;
             break;
 
         default:
-            flags = SELECT_FLAG(DEFAULT);
+            flags = wxBK_DEFAULT;
     }
 
-#undef SELECT_FLAG
-
     if ( m_multi && m_type == Type_Notebook )
         flags |= wxNB_MULTILINE;
     flags |= wxDOUBLE_BORDER;
@@ -401,6 +398,7 @@ void MyFrame::RecreateBook()
                          wxListbook,
                          wxChoicebook,
                          wxTreebook,
+                         wxToolbook,
                      (m_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, flags));
 
     if ( !m_bookCtrl )
@@ -438,7 +436,7 @@ void MyFrame::RecreateBook()
                 if ( parent != wxNOT_FOUND )
                 {
                     wxStaticCast(m_bookCtrl, wxTreebook)->
-                        AddSubPage(parent, page, str, false, image);
+                        InsertSubPage(parent, page, str, false, image);
 
                     // skip adding it again below
                     continue;
@@ -505,6 +503,10 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
     EVT_UPDATE_UI_RANGE(ID_ADD_PAGE_BEFORE, ID_ADD_SUB_PAGE,
                             MyFrame::OnUpdateTreeMenu)
 #endif
+#if wxUSE_TOOLBOOK
+    EVT_TOOLBOOK_PAGE_CHANGED(wxID_ANY, MyFrame::OnToolbook)
+    EVT_TOOLBOOK_PAGE_CHANGING(wxID_ANY, MyFrame::OnToolbook)
+#endif
 
     // Update title in idle time
     EVT_IDLE(MyFrame::OnIdle)
@@ -598,15 +600,18 @@ void MyFrame::OnAddSubPage(wxCommandEvent& WXUNUSED(event))
         }
 
         static unsigned s_subPageAdded = 0;
-        currBook->AddSubPage(selPos,
-                             CreateNewPage(),
-                             wxString::Format
-                             (
-                                ADDED_SUB_PAGE_NAME wxT("%u"),
-                                ++s_subPageAdded
-                             ),
-                             true,
-                             GetIconIndex(currBook));
+        currBook->InsertSubPage
+                  (
+                    selPos,
+                    CreateNewPage(),
+                    wxString::Format
+                    (
+                     ADDED_SUB_PAGE_NAME wxT("%u"),
+                     ++s_subPageAdded
+                    ),
+                    true,
+                    GetIconIndex(currBook)
+                  );
     }
 }
 
@@ -761,6 +766,13 @@ void MyFrame::OnBookCtrl(wxBookCtrlBaseEvent& event)
             _T("wxTreebook")
         },
 #endif // wxUSE_TREEBOOK
+#if wxUSE_TOOLBOOK
+        {
+            wxEVT_COMMAND_TOOLBOOK_PAGE_CHANGED,
+            wxEVT_COMMAND_TOOLBOOK_PAGE_CHANGING,
+            _T("wxToolbook")
+        },
+#endif // wxUSE_TOOLBOOK
     };
 
 
@@ -778,8 +790,11 @@ void MyFrame::OnBookCtrl(wxBookCtrlBaseEvent& event)
         else if ( eventType == ei.typeChanging )
         {
             const int idx = event.GetOldSelection();
+
+            // NB: can't use wxStaticCast here as wxBookCtrlBase is not in
+            //     wxRTTI
             const wxBookCtrlBase * const
-                book = wxStaticCast(event.GetEventObject(), wxBookCtrlBase);
+                book = wx_static_cast(wxBookCtrlBase *, event.GetEventObject());
             if ( idx != wxNOT_FOUND &&
                     book && book->GetPageText(idx) == VETO_PAGE_NAME )
             {
@@ -823,4 +838,3 @@ void MyFrame::OnBookCtrl(wxBookCtrlBaseEvent& event)
     m_text->SetInsertionPointEnd();
 #endif
 }
-