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