]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/notebook/notebook.cpp
refresh the MDI frame window menu whenever a child frame is shown/hidden (and not...
[wxWidgets.git] / samples / notebook / notebook.cpp
index c9e3cb44cab351f47f2f846033cb7b501d7dc4c8..0931f0a56d15fa7ab35ded22d76c3e23459a3033 100644 (file)
@@ -311,18 +311,18 @@ MyFrame::~MyFrame()
     #define CASE_NOTEBOOK(x)
 #endif
 
-#if wxUSE_CHOICEBOOK
-    #define CASE_CHOICEBOOK(x) case Type_Choicebook: x; break;
-#else
-    #define CASE_CHOICEBOOK(x)
-#endif
-
 #if wxUSE_LISTBOOK
     #define CASE_LISTBOOK(x) case Type_Listbook: x; break;
 #else
     #define CASE_LISTBOOK(x)
 #endif
 
+#if wxUSE_CHOICEBOOK
+    #define CASE_CHOICEBOOK(x) case Type_Choicebook: x; break;
+#else
+    #define CASE_CHOICEBOOK(x)
+#endif
+
 #if wxUSE_TREEBOOK
     #define CASE_TREEBOOK(x) case Type_Treebook: x; break;
 #else
@@ -333,8 +333,8 @@ MyFrame::~MyFrame()
     switch ( m_type )                                                         \
     {                                                                         \
         CASE_NOTEBOOK(before nb after)                                        \
-        CASE_CHOICEBOOK(before cb after)                                      \
         CASE_LISTBOOK(before lb after)                                        \
+        CASE_CHOICEBOOK(before cb after)                                      \
         CASE_TREEBOOK(before tb after)                                        \
                                                                               \
         default:                                                              \
@@ -352,34 +352,29 @@ int MyFrame::TranslateBookFlag(int nb, int lb, int chb, int tbk) const
 
 void MyFrame::RecreateBook()
 {
-#define SELECT_FLAG(flag) \
-    TranslateBookFlag(wxNB_##flag, wxCHB_##flag, wxLB_##flag, wxTBK_##flag)
-
     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;
@@ -390,8 +385,8 @@ void MyFrame::RecreateBook()
 
     DISPATCH_ON_TYPE(m_bookCtrl = new,
                          wxNotebook,
-                         wxChoicebook,
                          wxListbook,
+                         wxChoicebook,
                          wxTreebook,
                      (m_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, flags));
 
@@ -474,8 +469,6 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
     EVT_MENU(ID_DELETE_CUR_PAGE, MyFrame::OnDeleteCurPage)
     EVT_MENU(ID_DELETE_LAST_PAGE, MyFrame::OnDeleteLastPage)
     EVT_MENU(ID_NEXT_PAGE, MyFrame::OnNextPage)
-    EVT_MENU(ID_ADD_SUB_PAGE, MyFrame::OnAddSubPage)
-    EVT_MENU(ID_ADD_PAGE_BEFORE, MyFrame::OnAddPageBefore)
 
     // Book controls
 #if wxUSE_NOTEBOOK
@@ -490,18 +483,18 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
     EVT_CHOICEBOOK_PAGE_CHANGED(wxID_ANY, MyFrame::OnChoicebook)
     EVT_CHOICEBOOK_PAGE_CHANGING(wxID_ANY, MyFrame::OnChoicebook)
 #endif
-#if wxUSE_CHOICEBOOK
+#if wxUSE_TREEBOOK
     EVT_TREEBOOK_PAGE_CHANGED(wxID_ANY, MyFrame::OnTreebook)
     EVT_TREEBOOK_PAGE_CHANGING(wxID_ANY, MyFrame::OnTreebook)
+
+    EVT_MENU(ID_ADD_SUB_PAGE, MyFrame::OnAddSubPage)
+    EVT_MENU(ID_ADD_PAGE_BEFORE, MyFrame::OnAddPageBefore)
+    EVT_UPDATE_UI_RANGE(ID_ADD_PAGE_BEFORE, ID_ADD_SUB_PAGE,
+                            MyFrame::OnUpdateTreeMenu)
 #endif
 
     // Update title in idle time
     EVT_IDLE(MyFrame::OnIdle)
-
-#if wxUSE_TREEBOOK
-    EVT_UPDATE_UI_RANGE(ID_ADD_PAGE_BEFORE, ID_ADD_SUB_PAGE,
-                            MyFrame::OnUpdateTreeMenu)
-#endif // wxUSE_TREEBOOK
 END_EVENT_TABLE()
 
 void MyFrame::OnType(wxCommandEvent& event)
@@ -734,13 +727,6 @@ void MyFrame::OnBookCtrl(wxBookCtrlBaseEvent& event)
             _T("wxNotebook")
         },
 #endif // wxUSE_NOTEBOOK
-#if wxUSE_CHOICEBOOK
-        {
-            wxEVT_COMMAND_CHOICEBOOK_PAGE_CHANGED,
-            wxEVT_COMMAND_CHOICEBOOK_PAGE_CHANGING,
-            _T("wxChoicebook")
-        },
-#endif // wxUSE_CHOICEBOOK
 #if wxUSE_LISTBOOK
         {
             wxEVT_COMMAND_LISTBOOK_PAGE_CHANGED,
@@ -748,6 +734,13 @@ void MyFrame::OnBookCtrl(wxBookCtrlBaseEvent& event)
             _T("wxListbook")
         },
 #endif // wxUSE_LISTBOOK
+#if wxUSE_CHOICEBOOK
+        {
+            wxEVT_COMMAND_CHOICEBOOK_PAGE_CHANGED,
+            wxEVT_COMMAND_CHOICEBOOK_PAGE_CHANGING,
+            _T("wxChoicebook")
+        },
+#endif // wxUSE_CHOICEBOOK
 #if wxUSE_TREEBOOK
         {
             wxEVT_COMMAND_TREEBOOK_PAGE_CHANGED,
@@ -772,8 +765,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 )
             {
@@ -817,4 +813,3 @@ void MyFrame::OnBookCtrl(wxBookCtrlBaseEvent& event)
     m_text->SetInsertionPointEnd();
 #endif
 }
-