///////////////////////////////////////////////////////////////////////////// // Name: samples/notebook/notebook.h // Purpose: a sample demonstrating notebook usage // Author: Julian Smart // Modified by: Dimitri Schoolwerth // Created: 25/10/98 // Copyright: (c) 1998-2002 wxWidgets team // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #include "wx/choicebk.h" #include "wx/listbook.h" #include "wx/treebook.h" #include "wx/notebook.h" #include "wx/simplebook.h" #include "wx/toolbook.h" #include "wx/aui/auibook.h" #if wxUSE_LOG #define USE_LOG 1 #else #define USE_LOG 0 #endif // Define a new application class MyApp : public wxApp { public: bool OnInit() wxOVERRIDE; }; wxDECLARE_APP(MyApp); class MyFrame : public wxFrame { public: MyFrame(); virtual ~MyFrame(); void OnType(wxCommandEvent& event); void OnOrient(wxCommandEvent& event); void OnShowImages(wxCommandEvent& event); void OnStyle(wxCommandEvent& event); void OnExit(wxCommandEvent& event); void OnAddPage(wxCommandEvent& event); void OnAddPageNoSelect(wxCommandEvent& event); void OnInsertPage(wxCommandEvent& event); void OnDeleteCurPage(wxCommandEvent& event); void OnDeleteLastPage(wxCommandEvent& event); void OnNextPage(wxCommandEvent& event); void OnChangeSelection(wxCommandEvent &event); void OnSetSelection(wxCommandEvent &event); void OnGetPageSize(wxCommandEvent &event); void OnSetPageSize(wxCommandEvent &event); void OnAddSubPage(wxCommandEvent& event); void OnAddPageBefore(wxCommandEvent& event); #if wxUSE_HELP void OnContextHelp(wxCommandEvent& event); #endif // wxUSE_HELP void OnHitTest(wxCommandEvent& event); void OnBookCtrl(wxBookCtrlBaseEvent& event); #if wxUSE_NOTEBOOK void OnNotebook(wxNotebookEvent& event) { OnBookCtrl(event); } #endif #if wxUSE_CHOICEBOOK void OnChoicebook(wxChoicebookEvent& event) { OnBookCtrl(event); } #endif #if wxUSE_LISTBOOK void OnListbook(wxListbookEvent& event) { OnBookCtrl(event); } #endif #if wxUSE_TREEBOOK void OnTreebook(wxTreebookEvent& event) { OnBookCtrl(event); } #endif #if wxUSE_TOOLBOOK void OnToolbook(wxToolbookEvent& event) { OnBookCtrl(event); } #endif #if wxUSE_AUI void OnAuiNotebook(wxAuiNotebookEvent& event) { OnBookCtrl(event); } #endif void OnIdle(wxIdleEvent& event); #if wxUSE_TREEBOOK void OnUpdateTreeMenu(wxUpdateUIEvent& event); #endif // wxUSE_TREEBOOK wxBookCtrlBase *GetCurrentBook() const { return m_bookCtrl; } private: wxLog *m_logTargetOld; void RecreateBook(); wxPanel *CreateNewPage() const; void AddFlagStrIfFlagPresent(wxString & flagStr, long flags, long flag, const wxString& flagName) const; // Sample setup enum BookType { Type_Notebook, Type_Listbook, Type_Choicebook, Type_Treebook, Type_Toolbook, Type_AuiNotebook, Type_Simplebook, Type_Max } m_type; int m_orient; bool m_chkShowImages; bool m_fixedWidth; bool m_multi; bool m_noPageTheme; bool m_buttonBar; bool m_horzLayout; // Controls wxPanel *m_panel; // Panel containing notebook and other controls wxBookCtrlBase *m_bookCtrl; #if USE_LOG // Log window wxTextCtrl *m_text; #endif // USE_LOG wxBoxSizer *m_sizerFrame; wxBookCtrlBase::Images m_images; wxDECLARE_EVENT_TABLE(); }; enum ID_COMMANDS { // these should be in the same order as Type_XXX elements above ID_BOOK_NOTEBOOK = wxID_HIGHEST, ID_BOOK_LISTBOOK, ID_BOOK_CHOICEBOOK, ID_BOOK_TREEBOOK, ID_BOOK_TOOLBOOK, ID_BOOK_AUINOTEBOOK, ID_BOOK_SIMPLEBOOK, ID_BOOK_MAX, ID_ORIENT_DEFAULT, ID_ORIENT_TOP, ID_ORIENT_BOTTOM, ID_ORIENT_LEFT, ID_ORIENT_RIGHT, ID_ORIENT_MAX, ID_SHOW_IMAGES, ID_FIXEDWIDTH, ID_MULTI, ID_NOPAGETHEME, ID_BUTTONBAR, ID_HORZ_LAYOUT, ID_ADD_PAGE, ID_ADD_PAGE_NO_SELECT, ID_INSERT_PAGE, ID_DELETE_CUR_PAGE, ID_DELETE_LAST_PAGE, ID_NEXT_PAGE, ID_ADD_PAGE_BEFORE, ID_ADD_SUB_PAGE, ID_CHANGE_SELECTION, ID_SET_SELECTION, ID_GET_PAGE_SIZE, ID_SET_PAGE_SIZE, #if wxUSE_HELP ID_CONTEXT_HELP, #endif // wxUSE_HELP ID_HITTEST }; /* Name of each notebook page. Used as a label for a page, and used when cloning the notebook to decide what type of page it is. */ #define I_WAS_INSERTED_PAGE_NAME "Inserted" #define RADIOBUTTONS_PAGE_NAME "Radiobuttons" #define VETO_PAGE_NAME "Veto" #define TEXT_PAGE_NAME "Text" // Pages that can be added by the user #define INSERTED_PAGE_NAME "Inserted " #define ADDED_PAGE_NAME "Added " #define ADDED_PAGE_NAME_BEFORE " Inserted before " #define ADDED_SUB_PAGE_NAME " Inserted sub-page "