X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/136bafcd3957f958062bbe5774d3c10c060e3a83..c3be59bcdbc43ef1286cf5ea635d933bb802bd81:/samples/notebook/notebook.cpp diff --git a/samples/notebook/notebook.cpp b/samples/notebook/notebook.cpp index 319c60e055..b0eb08c72f 100644 --- a/samples/notebook/notebook.cpp +++ b/samples/notebook/notebook.cpp @@ -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 } -