1 ///////////////////////////////////////////////////////////////////////////// 2 // Name: samples/notebook/notebook.h 3 // Purpose: a sample demonstrating notebook usage 4 // Author: Julian Smart 5 // Modified by: Dimitri Schoolwerth 6 // Created: 25/10/98 7 // Copyright: (c) 1998-2002 wxWidgets team 8 // Licence: wxWindows licence 9 ///////////////////////////////////////////////////////////////////////////// 10 11 #include "wx/choicebk.h" 12 #include "wx/listbook.h" 13 #include "wx/treebook.h" 14 #include "wx/notebook.h" 15 #include "wx/simplebook.h" 16 #include "wx/toolbook.h" 17 #include "wx/aui/auibook.h" 18 19 #if wxUSE_LOG 20 #define USE_LOG 1 21 #else 22 #define USE_LOG 0 23 #endif 24 25 // Define a new application 26 class MyApp : public wxApp 27 { 28 public: 29 bool OnInit() wxOVERRIDE; 30 }; 31 32 wxDECLARE_APP(MyApp); 33 34 35 class MyFrame : public wxFrame 36 { 37 public: 38 MyFrame(); 39 virtual ~MyFrame(); 40 41 void OnType(wxCommandEvent& event); 42 void OnOrient(wxCommandEvent& event); 43 void OnShowImages(wxCommandEvent& event); 44 void OnStyle(wxCommandEvent& event); 45 void OnExit(wxCommandEvent& event); 46 47 void OnAddPage(wxCommandEvent& event); 48 void OnAddPageNoSelect(wxCommandEvent& event); 49 void OnInsertPage(wxCommandEvent& event); 50 void OnDeleteCurPage(wxCommandEvent& event); 51 void OnDeleteLastPage(wxCommandEvent& event); 52 void OnNextPage(wxCommandEvent& event); 53 void OnChangeSelection(wxCommandEvent &event); 54 void OnSetSelection(wxCommandEvent &event); 55 void OnGetPageSize(wxCommandEvent &event); 56 void OnSetPageSize(wxCommandEvent &event); 57 58 void OnAddSubPage(wxCommandEvent& event); 59 void OnAddPageBefore(wxCommandEvent& event); 60 61 #if wxUSE_HELP 62 void OnContextHelp(wxCommandEvent& event); 63 #endif // wxUSE_HELP 64 65 void OnHitTest(wxCommandEvent& event); 66 67 void OnBookCtrl(wxBookCtrlBaseEvent& event); 68 #if wxUSE_NOTEBOOK OnNotebook(wxNotebookEvent & event)69 void OnNotebook(wxNotebookEvent& event) { OnBookCtrl(event); } 70 #endif 71 #if wxUSE_CHOICEBOOK OnChoicebook(wxChoicebookEvent & event)72 void OnChoicebook(wxChoicebookEvent& event) { OnBookCtrl(event); } 73 #endif 74 #if wxUSE_LISTBOOK OnListbook(wxListbookEvent & event)75 void OnListbook(wxListbookEvent& event) { OnBookCtrl(event); } 76 #endif 77 #if wxUSE_TREEBOOK OnTreebook(wxTreebookEvent & event)78 void OnTreebook(wxTreebookEvent& event) { OnBookCtrl(event); } 79 #endif 80 #if wxUSE_TOOLBOOK OnToolbook(wxToolbookEvent & event)81 void OnToolbook(wxToolbookEvent& event) { OnBookCtrl(event); } 82 #endif 83 #if wxUSE_AUI OnAuiNotebook(wxAuiNotebookEvent & event)84 void OnAuiNotebook(wxAuiNotebookEvent& event) { OnBookCtrl(event); } 85 #endif 86 87 void OnIdle(wxIdleEvent& event); 88 89 #if wxUSE_TREEBOOK 90 void OnUpdateTreeMenu(wxUpdateUIEvent& event); 91 #endif // wxUSE_TREEBOOK 92 GetCurrentBook()93 wxBookCtrlBase *GetCurrentBook() const { return m_bookCtrl; } 94 95 private: 96 wxLog *m_logTargetOld; 97 98 void RecreateBook(); 99 wxPanel *CreateNewPage() const; 100 void AddFlagStrIfFlagPresent(wxString & flagStr, long flags, long flag, const wxString& flagName) const; 101 102 // Sample setup 103 enum BookType 104 { 105 Type_Notebook, 106 Type_Listbook, 107 Type_Choicebook, 108 Type_Treebook, 109 Type_Toolbook, 110 Type_AuiNotebook, 111 Type_Simplebook, 112 Type_Max 113 } m_type; 114 int m_orient; 115 bool m_chkShowImages; 116 bool m_fixedWidth; 117 bool m_multi; 118 bool m_noPageTheme; 119 bool m_buttonBar; 120 bool m_horzLayout; 121 122 // Controls 123 124 wxPanel *m_panel; // Panel containing notebook and other controls 125 wxBookCtrlBase *m_bookCtrl; 126 127 #if USE_LOG 128 // Log window 129 wxTextCtrl *m_text; 130 #endif // USE_LOG 131 132 wxBoxSizer *m_sizerFrame; 133 134 wxImageList *m_imageList; 135 136 wxDECLARE_EVENT_TABLE(); 137 }; 138 139 enum ID_COMMANDS 140 { 141 // these should be in the same order as Type_XXX elements above 142 ID_BOOK_NOTEBOOK = wxID_HIGHEST, 143 ID_BOOK_LISTBOOK, 144 ID_BOOK_CHOICEBOOK, 145 ID_BOOK_TREEBOOK, 146 ID_BOOK_TOOLBOOK, 147 ID_BOOK_AUINOTEBOOK, 148 ID_BOOK_SIMPLEBOOK, 149 ID_BOOK_MAX, 150 151 ID_ORIENT_DEFAULT, 152 ID_ORIENT_TOP, 153 ID_ORIENT_BOTTOM, 154 ID_ORIENT_LEFT, 155 ID_ORIENT_RIGHT, 156 ID_ORIENT_MAX, 157 ID_SHOW_IMAGES, 158 ID_FIXEDWIDTH, 159 ID_MULTI, 160 ID_NOPAGETHEME, 161 ID_BUTTONBAR, 162 ID_HORZ_LAYOUT, 163 ID_ADD_PAGE, 164 ID_ADD_PAGE_NO_SELECT, 165 ID_INSERT_PAGE, 166 ID_DELETE_CUR_PAGE, 167 ID_DELETE_LAST_PAGE, 168 ID_NEXT_PAGE, 169 ID_ADD_PAGE_BEFORE, 170 ID_ADD_SUB_PAGE, 171 ID_CHANGE_SELECTION, 172 ID_SET_SELECTION, 173 ID_GET_PAGE_SIZE, 174 ID_SET_PAGE_SIZE, 175 176 #if wxUSE_HELP 177 ID_CONTEXT_HELP, 178 #endif // wxUSE_HELP 179 ID_HITTEST 180 }; 181 182 183 /* 184 Name of each notebook page. 185 Used as a label for a page, and used when cloning the notebook 186 to decide what type of page it is. 187 */ 188 189 #define I_WAS_INSERTED_PAGE_NAME "Inserted" 190 #define RADIOBUTTONS_PAGE_NAME "Radiobuttons" 191 #define VETO_PAGE_NAME "Veto" 192 #define MAXIMIZED_BUTTON_PAGE_NAME "Maximized button" 193 194 // Pages that can be added by the user 195 #define INSERTED_PAGE_NAME "Inserted " 196 #define ADDED_PAGE_NAME "Added " 197 #define ADDED_PAGE_NAME_BEFORE " Inserted before " 198 #define ADDED_SUB_PAGE_NAME " Inserted sub-page " 199 200 201