X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d0a84b63384ca1c1d8d20581fb56abbd1d826617..f1d5aa4eca541a2f90044a63f555985d6bd4adf3:/samples/notebook/notebook.cpp?ds=sidebyside diff --git a/samples/notebook/notebook.cpp b/samples/notebook/notebook.cpp index a3d0d45d72..14f3fd951c 100644 --- a/samples/notebook/notebook.cpp +++ b/samples/notebook/notebook.cpp @@ -34,6 +34,13 @@ IMPLEMENT_APP(MyApp) bool MyApp::OnInit() { + if ( !wxApp::OnInit() ) + return false; + +#if wxUSE_HELP + wxHelpProvider::Set( new wxSimpleHelpProvider ); +#endif + // Create the main window MyFrame *frame = new MyFrame(); @@ -54,6 +61,10 @@ wxPanel *CreateUserCreatedPage(wxBookCtrlBase *parent) { wxPanel *panel = new wxPanel(parent); +#if wxUSE_HELP + panel->SetHelpText( wxT( "Panel with a Button" ) ); +#endif + (void) new wxButton( panel, wxID_ANY, wxT("Button"), wxPoint(10, 10), wxDefaultSize ); @@ -64,6 +75,10 @@ wxPanel *CreateRadioButtonsPage(wxBookCtrlBase *parent) { wxPanel *panel = new wxPanel(parent); +#if wxUSE_HELP + panel->SetHelpText( wxT( "Panel with some Radio Buttons" ) ); +#endif + wxString animals[] = { wxT("Fox"), wxT("Hare"), wxT("Rabbit"), wxT("Sabre-toothed tiger"), wxT("T Rex") }; @@ -89,6 +104,10 @@ wxPanel *CreateVetoPage(wxBookCtrlBase *parent) { wxPanel *panel = new wxPanel(parent); +#if wxUSE_HELP + panel->SetHelpText( wxT( "An empty panel" ) ); +#endif + (void) new wxStaticText( panel, wxID_ANY, wxT("This page intentionally left blank"), wxPoint(10, 10) ); @@ -99,6 +118,10 @@ wxPanel *CreateBigButtonPage(wxBookCtrlBase *parent) { wxPanel *panel = new wxPanel(parent); +#if wxUSE_HELP + panel->SetHelpText( wxT( "Panel with a maximized button" ) ); +#endif + wxButton *buttonBig = new wxButton(panel, wxID_ANY, wxT("Maximized button")); wxBoxSizer *sizerPanel = new wxBoxSizer(wxVERTICAL); @@ -113,6 +136,10 @@ wxPanel *CreateInsertPage(wxBookCtrlBase *parent) { wxPanel *panel = new wxPanel(parent); +#if wxUSE_HELP + panel->SetHelpText( wxT( "Maroon panel" ) ); +#endif + panel->SetBackgroundColour( wxColour( wxT("MAROON") ) ); (void) new wxStaticText( panel, wxID_ANY, wxT("This page has been inserted, not added."), wxPoint(10, 10) ); @@ -179,8 +206,12 @@ wxPanel *CreatePage(wxBookCtrlBase *parent, const wxString&pageName) } MyFrame::MyFrame() - : wxFrame(NULL, wxID_ANY, wxString(wxT("wxWidgets book controls sample"))) + : wxFrame(NULL, wxID_ANY, wxString(wxT("wxWidgets book controls sample"))) { +#if wxUSE_HELP + SetExtraStyle(wxFRAME_EX_CONTEXTHELP); +#endif // wxUSE_HELP + #if wxUSE_NOTEBOOK m_type = Type_Notebook; #elif wxUSE_CHOICEBOOK @@ -228,6 +259,7 @@ MyFrame::MyFrame() wxMenu *menuPageOperations = new wxMenu; menuPageOperations->Append(ID_ADD_PAGE, wxT("&Add page\tAlt-A")); + menuPageOperations->Append(ID_ADD_PAGE_NO_SELECT, wxT("&Add page (don't select)\tAlt-B")); menuPageOperations->Append(ID_INSERT_PAGE, wxT("&Insert page\tAlt-I")); menuPageOperations->Append(ID_DELETE_CUR_PAGE, wxT("&Delete current page\tAlt-D")); menuPageOperations->Append(ID_DELETE_LAST_PAGE, wxT("D&elete last page\tAlt-L")); @@ -237,8 +269,13 @@ MyFrame::MyFrame() menuPageOperations->Append(ID_ADD_PAGE_BEFORE, wxT("Insert page &before\tAlt-B")); menuPageOperations->Append(ID_ADD_SUB_PAGE, wxT("Add s&ub page\tAlt-U")); #endif + menuPageOperations->AppendSeparator(); + menuPageOperations->Append(ID_GO_HOME, wxT("Go to the first page\tCtrl-F")); wxMenu *menuOperations = new wxMenu; +#if wxUSE_HELP + menuOperations->Append(ID_CONTEXT_HELP, wxT("&Context help\tCtrl-F1")); +#endif // wxUSE_HELP menuOperations->Append(ID_HITTEST, wxT("&Hit test\tCtrl-H")); wxMenu *menuFile = new wxMenu; @@ -295,7 +332,6 @@ MyFrame::MyFrame() m_panel->SetSizer(m_sizerFrame); - m_sizerFrame->Fit(this); m_sizerFrame->SetSizeHints(this); Centre(wxBOTH); @@ -393,7 +429,6 @@ void MyFrame::RecreateBook() if ( m_multi && m_type == Type_Notebook ) flags |= wxNB_MULTILINE; - flags |= wxDOUBLE_BORDER; wxBookCtrlBase *oldBook = m_bookCtrl; @@ -482,11 +517,16 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) // Operations menu EVT_MENU(ID_ADD_PAGE, MyFrame::OnAddPage) + EVT_MENU(ID_ADD_PAGE_NO_SELECT, MyFrame::OnAddPageNoSelect) EVT_MENU(ID_INSERT_PAGE, MyFrame::OnInsertPage) 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_GO_HOME, MyFrame::OnGoHome) +#if wxUSE_HELP + EVT_MENU(ID_CONTEXT_HELP, MyFrame::OnContextHelp) +#endif // wxUSE_HELP EVT_MENU(ID_HITTEST, MyFrame::OnHitTest) // Book controls @@ -520,6 +560,16 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_IDLE(MyFrame::OnIdle) END_EVENT_TABLE() +#if wxUSE_HELP + +void MyFrame::OnContextHelp(wxCommandEvent& WXUNUSED(event)) +{ + // launches local event loop + wxContextHelp ch( this ); +} + +#endif // wxUSE_HELP + void MyFrame::AddFlagStrIfFlagPresent(wxString & flagStr, long flags, long flag, const wxChar * flagName) const { if( (flags & flag) == flag ) @@ -540,10 +590,10 @@ void MyFrame::OnHitTest(wxCommandEvent& WXUNUSED(event)) wxString flagsStr; - AddFlagStrIfFlagPresent( flagsStr, flags, wxNB_HITTEST_NOWHERE, _T("wxNB_HITTEST_NOWHERE") ); - AddFlagStrIfFlagPresent( flagsStr, flags, wxNB_HITTEST_ONICON, _T("wxNB_HITTEST_ONICON") ); - AddFlagStrIfFlagPresent( flagsStr, flags, wxNB_HITTEST_ONLABEL, _T("wxNB_HITTEST_ONLABEL") ); - AddFlagStrIfFlagPresent( flagsStr, flags, wxNB_HITTEST_ONPAGE, _T("wxNB_HITTEST_ONPAGE") ); + AddFlagStrIfFlagPresent( flagsStr, flags, wxBK_HITTEST_NOWHERE, _T("wxBK_HITTEST_NOWHERE") ); + AddFlagStrIfFlagPresent( flagsStr, flags, wxBK_HITTEST_ONICON, _T("wxBK_HITTEST_ONICON") ); + AddFlagStrIfFlagPresent( flagsStr, flags, wxBK_HITTEST_ONLABEL, _T("wxBK_HITTEST_ONLABEL") ); + AddFlagStrIfFlagPresent( flagsStr, flags, wxBK_HITTEST_ONPAGE, _T("wxBK_HITTEST_ONPAGE") ); wxLogMessage(wxT("HitTest at (%d,%d): %d: %s"), pt.x, @@ -603,6 +653,10 @@ wxPanel *MyFrame::CreateNewPage() const { wxPanel *panel = new wxPanel(m_bookCtrl, wxID_ANY ); +#if wxUSE_HELP + panel->SetHelpText( wxT( "Panel with \"First\" and \"Second\" buttons" ) ); +#endif + (void) new wxButton(panel, wxID_ANY, wxT("First button"), wxPoint(10, 10)); (void) new wxButton(panel, wxID_ANY, wxT("Second button"), wxPoint(50, 100)); @@ -627,6 +681,24 @@ void MyFrame::OnAddPage(wxCommandEvent& WXUNUSED(event)) } } +void MyFrame::OnAddPageNoSelect(wxCommandEvent& WXUNUSED(event)) +{ + wxBookCtrlBase *currBook = GetCurrentBook(); + + if ( currBook ) + { + static unsigned s_pageAdded = 0; + currBook->AddPage(CreateNewPage(), + wxString::Format + ( + ADDED_PAGE_NAME wxT("%u"), + ++s_pageAdded + ), + false, + GetIconIndex(currBook)); + } +} + #if wxUSE_TREEBOOK void MyFrame::OnAddSubPage(wxCommandEvent& WXUNUSED(event)) { @@ -740,6 +812,18 @@ void MyFrame::OnNextPage(wxCommandEvent& WXUNUSED(event)) } } +void MyFrame::OnGoHome(wxCommandEvent& WXUNUSED(event)) +{ + wxBookCtrlBase *currBook = GetCurrentBook(); + + if ( currBook ) + { + // ChangeSelection shouldn't send any events, SetSelection() should + currBook->ChangeSelection(0); + //currBook->SetSelection(0); + } +} + void MyFrame::OnIdle( wxIdleEvent& WXUNUSED(event) ) { static int s_nPages = wxNOT_FOUND;