fill in flags parameter of HitTest() for all book controls; added new wxNB_HITTEST_ON...
[wxWidgets.git] / samples / notebook / notebook.h
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 // RCS-ID: $Id$
8 // Copyright: (c) 1998-2002 wxWidgets team
9 // License: wxWindows license
10 /////////////////////////////////////////////////////////////////////////////
11
12 #include "wx/choicebk.h"
13 #include "wx/listbook.h"
14 #include "wx/treebook.h"
15 #include "wx/notebook.h"
16 #include "wx/toolbook.h"
17
18 #if wxUSE_LOG && !defined( __SMARTPHONE__ )
19 #define USE_LOG 1
20 #else
21 #define USE_LOG 0
22 #endif
23
24 // Define a new application
25 class MyApp : public wxApp
26 {
27 public:
28 bool OnInit();
29 };
30
31 DECLARE_APP(MyApp)
32
33
34 class MyFrame : public wxFrame
35 {
36 public:
37 MyFrame();
38 virtual ~MyFrame();
39
40 void OnType(wxCommandEvent& event);
41 void OnOrient(wxCommandEvent& event);
42 void OnShowImages(wxCommandEvent& event);
43 void OnMulti(wxCommandEvent& event);
44 void OnExit(wxCommandEvent& event);
45
46 void OnAddPage(wxCommandEvent& event);
47 void OnInsertPage(wxCommandEvent& event);
48 void OnDeleteCurPage(wxCommandEvent& event);
49 void OnDeleteLastPage(wxCommandEvent& event);
50 void OnNextPage(wxCommandEvent& event);
51
52 void OnAddSubPage(wxCommandEvent& event);
53 void OnAddPageBefore(wxCommandEvent& event);
54
55 void OnHitTest(wxCommandEvent& event);
56
57 void OnBookCtrl(wxBookCtrlBaseEvent& event);
58 #if wxUSE_NOTEBOOK
59 void OnNotebook(wxNotebookEvent& event) { OnBookCtrl(event); }
60 #endif
61 #if wxUSE_CHOICEBOOK
62 void OnChoicebook(wxChoicebookEvent& event) { OnBookCtrl(event); }
63 #endif
64 #if wxUSE_LISTBOOK
65 void OnListbook(wxListbookEvent& event) { OnBookCtrl(event); }
66 #endif
67 #if wxUSE_TREEBOOK
68 void OnTreebook(wxTreebookEvent& event) { OnBookCtrl(event); }
69 #endif
70 #if wxUSE_TOOLBOOK
71 void OnToolbook(wxToolbookEvent& event) { OnBookCtrl(event); }
72 #endif
73
74 void OnIdle(wxIdleEvent& event);
75
76 #if wxUSE_TREEBOOK
77 void OnUpdateTreeMenu(wxUpdateUIEvent& event);
78 #endif // wxUSE_TREEBOOK
79
80 wxBookCtrlBase *GetCurrentBook() const { return m_bookCtrl; }
81
82 private:
83 wxLog *m_logTargetOld;
84
85 void RecreateBook();
86 wxPanel *CreateNewPage() const;
87 int TranslateBookFlag(int nb, int lb, int chb, int tbk, int toolbk) const;
88 void AddFlagStrIfFlagPresent(wxString & flagStr, long flags, long flag, const wxChar * flagName) const;
89
90 // Sample setup
91 enum BookType
92 {
93 Type_Notebook,
94 Type_Listbook,
95 Type_Choicebook,
96 Type_Treebook,
97 Type_Toolbook,
98 Type_Max
99 } m_type;
100 int m_orient;
101 bool m_chkShowImages;
102 bool m_multi;
103
104 // Controls
105
106 wxPanel *m_panel; // Panel containing notebook and other controls
107 wxBookCtrlBase *m_bookCtrl;
108
109 #if USE_LOG
110 // Log window
111 wxTextCtrl *m_text;
112 #endif // USE_LOG
113
114 wxBoxSizer *m_sizerFrame;
115
116 wxImageList *m_imageList;
117
118 DECLARE_EVENT_TABLE()
119 };
120
121 enum ID_COMMANDS
122 {
123 // these should be in the same order as Type_XXX elements above
124 ID_BOOK_NOTEBOOK = wxID_HIGHEST,
125 ID_BOOK_LISTBOOK,
126 ID_BOOK_CHOICEBOOK,
127 ID_BOOK_TREEBOOK,
128 ID_BOOK_TOOLBOOK,
129 ID_BOOK_MAX,
130
131 ID_ORIENT_DEFAULT,
132 ID_ORIENT_TOP,
133 ID_ORIENT_BOTTOM,
134 ID_ORIENT_LEFT,
135 ID_ORIENT_RIGHT,
136 ID_ORIENT_MAX,
137 ID_SHOW_IMAGES,
138 ID_MULTI,
139 ID_ADD_PAGE,
140 ID_INSERT_PAGE,
141 ID_DELETE_CUR_PAGE,
142 ID_DELETE_LAST_PAGE,
143 ID_NEXT_PAGE,
144 ID_ADD_PAGE_BEFORE,
145 ID_ADD_SUB_PAGE,
146
147 ID_HITTEST
148 };
149
150 /*
151 Name of each notebook page.
152 Used as a label for a page, and used when cloning the notebook
153 to decide what type of page it is.
154 */
155
156 #define I_WAS_INSERTED_PAGE_NAME wxT("Inserted")
157 #define RADIOBUTTONS_PAGE_NAME wxT("Radiobuttons")
158 #define VETO_PAGE_NAME wxT("Veto")
159 #define MAXIMIZED_BUTTON_PAGE_NAME wxT("Maximized button")
160
161 // Pages that can be added by the user
162 #define INSERTED_PAGE_NAME wxT("Inserted ")
163 #define ADDED_PAGE_NAME wxT("Added ")
164 #define ADDED_PAGE_NAME_BEFORE wxT(" Inserted before ")
165 #define ADDED_SUB_PAGE_NAME wxT(" Inserted sub-page ")
166
167