X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8864388cf203f3238d45f283676744f624304c71..615f68c6b9fb887d2cfcbc6a3c6c3716a34a914e:/samples/notebook/notebook.cpp diff --git a/samples/notebook/notebook.cpp b/samples/notebook/notebook.cpp index b56dbaeb9f..200ed5e34c 100644 --- a/samples/notebook/notebook.cpp +++ b/samples/notebook/notebook.cpp @@ -239,6 +239,8 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(ID_NEXT_PAGE, MyFrame::OnNextPage) EVT_MENU(ID_CHANGE_SELECTION, MyFrame::OnChangeSelection) EVT_MENU(ID_SET_SELECTION, MyFrame::OnSetSelection) + EVT_MENU(ID_GET_PAGE_SIZE, MyFrame::OnGetPageSize) + EVT_MENU(ID_SET_PAGE_SIZE, MyFrame::OnSetPageSize) #if wxUSE_HELP EVT_MENU(ID_CONTEXT_HELP, MyFrame::OnContextHelp) @@ -271,6 +273,10 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_TOOLBOOK_PAGE_CHANGED(wxID_ANY, MyFrame::OnToolbook) EVT_TOOLBOOK_PAGE_CHANGING(wxID_ANY, MyFrame::OnToolbook) #endif +#if wxUSE_AUI + EVT_AUINOTEBOOK_PAGE_CHANGED(wxID_ANY, MyFrame::OnAuiNotebook) + EVT_AUINOTEBOOK_PAGE_CHANGING(wxID_ANY, MyFrame::OnAuiNotebook) +#endif // Update title in idle time EVT_IDLE(MyFrame::OnIdle) @@ -293,6 +299,8 @@ MyFrame::MyFrame() m_type = Type_Treebook; #elif wxUSE_TOOLBOOK m_type = Type_Toolbook; +#elif wxUSE_AUI + m_type = Type_Aui; #else #error "Don't use Notebook sample without any book enabled in wxWidgets build!" #endif @@ -324,6 +332,9 @@ MyFrame::MyFrame() #if wxUSE_TOOLBOOK menuType->AppendRadioItem(ID_BOOK_TOOLBOOK, wxT("T&oolbook\tCtrl-5")); #endif +#if wxUSE_AUI + menuType->AppendRadioItem(ID_BOOK_AUINOTEBOOK, wxT("&AuiNotebook\tCtrl-6")); +#endif menuType->Check(ID_BOOK_NOTEBOOK + m_type, true); @@ -360,6 +371,9 @@ MyFrame::MyFrame() menuPageOperations->AppendSeparator(); menuPageOperations->Append(ID_CHANGE_SELECTION, wxT("&Change selection to 0\tCtrl-0")); menuPageOperations->Append(ID_SET_SELECTION, wxT("&Set selection to 0\tShift-Ctrl-0")); + menuPageOperations->AppendSeparator(); + menuPageOperations->Append(ID_GET_PAGE_SIZE, "Sho&w page size"); + menuPageOperations->Append(ID_SET_PAGE_SIZE, "Set &page size"); wxMenu *menuOperations = new wxMenu; #if wxUSE_HELP @@ -469,7 +483,13 @@ MyFrame::~MyFrame() #define CASE_TOOLBOOK(x) #endif -#define DISPATCH_ON_TYPE(before, nb, lb, cb, tb, toolb, after) \ +#if wxUSE_AUI + #define CASE_AUINOTEBOOK(x) case Type_AuiNotebook: x; break; +#else + #define CASE_AUINOTEBOOK(x) +#endif + +#define DISPATCH_ON_TYPE(before, nb, lb, cb, tb, toolb, aui, after) \ switch ( m_type ) \ { \ CASE_NOTEBOOK(before nb after) \ @@ -477,16 +497,17 @@ MyFrame::~MyFrame() CASE_CHOICEBOOK(before cb after) \ CASE_TREEBOOK(before tb after) \ CASE_TOOLBOOK(before toolb after) \ + CASE_AUINOTEBOOK(before aui after) \ \ default: \ wxFAIL_MSG( wxT("unknown book control type") ); \ } -int MyFrame::TranslateBookFlag(int nb, int lb, int chb, int tbk, int toolbk) const +int MyFrame::TranslateBookFlag(int nb, int lb, int chb, int tbk, int toolbk, int aui) const { int flag = 0; - DISPATCH_ON_TYPE(flag =, nb, lb, chb, tbk, toolbk, + 0); + DISPATCH_ON_TYPE(flag =, nb, lb, chb, tbk, toolbk, aui, + 0); return flag; } @@ -541,6 +562,7 @@ void MyFrame::RecreateBook() wxChoicebook, wxTreebook, wxToolbook, + wxAuiNotebook, (m_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, flags)); if ( !m_bookCtrl ) @@ -548,7 +570,8 @@ void MyFrame::RecreateBook() m_bookCtrl->Hide(); - if ( m_chkShowImages ) + // wxToolbook doesn't work without icons so always use them for it. + if ( m_chkShowImages || m_type == Type_Toolbook ) { m_bookCtrl->SetImageList(m_imageList); } @@ -890,6 +913,33 @@ void MyFrame::OnSetSelection(wxCommandEvent& WXUNUSED(event)) currBook->SetSelection(0); } +void MyFrame::OnGetPageSize(wxCommandEvent& WXUNUSED(event)) +{ + wxBookCtrlBase* const currBook = GetCurrentBook(); + if ( !currBook ) + return; + + const wxSize sizePage = currBook->GetPage(0)->GetSize(); + const wxSize sizeBook = currBook->GetSize(); + + wxLogMessage("Page size is (%d, %d), book size (%d, %d)", + sizePage.x, sizePage.y, + sizeBook.x, sizeBook.y); +} + +void MyFrame::OnSetPageSize(wxCommandEvent& WXUNUSED(event)) +{ + wxBookCtrlBase* const currBook = GetCurrentBook(); + if ( !currBook ) + return; + + const wxSize sizePage(300, 300); + currBook->SetPageSize(sizePage); + + wxLogMessage("Page size set to (%d, %d)", + sizePage.x, sizePage.y); +} + void MyFrame::OnIdle( wxIdleEvent& WXUNUSED(event) ) { static int s_nPages = wxNOT_FOUND; @@ -964,6 +1014,13 @@ void MyFrame::OnBookCtrl(wxBookCtrlBaseEvent& event) wxT("wxToolbook") }, #endif // wxUSE_TOOLBOOK +#if wxUSE_AUI + { + wxEVT_COMMAND_AUINOTEBOOK_PAGE_CHANGED, + wxEVT_COMMAND_AUINOTEBOOK_PAGE_CHANGING, + wxT("wxAuiNotebook") + }, +#endif // wxUSE_AUI }; @@ -971,6 +1028,12 @@ void MyFrame::OnBookCtrl(wxBookCtrlBaseEvent& event) nameControl, veto; const wxEventType eventType = event.GetEventType(); + + // NB: can't use wxStaticCast here as wxBookCtrlBase is not in + // wxRTTI + const wxBookCtrlBase * const + book = static_cast(event.GetEventObject()); + for ( size_t n = 0; n < WXSIZEOF(events); n++ ) { const EventInfo& ei = events[n]; @@ -982,10 +1045,6 @@ void MyFrame::OnBookCtrl(wxBookCtrlBaseEvent& event) { const int idx = event.GetOldSelection(); - // NB: can't use wxStaticCast here as wxBookCtrlBase is not in - // wxRTTI - const wxBookCtrlBase * const - book = static_cast(event.GetEventObject()); if ( idx != wxNOT_FOUND && book && book->GetPageText(idx) == VETO_PAGE_NAME ) { @@ -1016,13 +1075,14 @@ void MyFrame::OnBookCtrl(wxBookCtrlBaseEvent& event) static int s_num = 0; - wxLogMessage(wxT("Event #%d: %s: %s (%d) new sel %d, old %d%s"), + wxLogMessage(wxT("Event #%d: %s: %s (%d) new sel %d, old %d, current %d%s"), ++s_num, nameControl.c_str(), nameEvent.c_str(), eventType, event.GetSelection(), event.GetOldSelection(), + book->GetSelection(), veto.c_str()); #if USE_LOG