]> git.saurik.com Git - wxWidgets.git/blob - docs/latex/wx/notebook.tex
Introduced the ability to size a book control based on the currently selected page
[wxWidgets.git] / docs / latex / wx / notebook.tex
1 \section{\class{wxNotebook}}\label{wxnotebook}
2
3 This class represents a notebook control, which manages multiple windows with associated tabs.
4
5 To use the class, create a wxNotebook object and call \helpref{AddPage}{wxnotebookaddpage} or \helpref{InsertPage}{wxnotebookinsertpage},
6 passing a window to be used as the page. Do not explicitly delete the window for a page that is currently
7 managed by wxNotebook.
8
9 {\bf wxNotebookPage} is a typedef for wxWindow.
10
11 \wxheading{Derived from}
12
13 \helpref{wxControl}{wxcontrol}\\
14 \helpref{wxWindow}{wxwindow}\\
15 \helpref{wxEvtHandler}{wxevthandler}\\
16 \helpref{wxObject}{wxobject}
17
18 \wxheading{Include files}
19
20 <wx/notebook.h>
21
22 \wxheading{Window styles}
23
24 \twocolwidtha{5cm}
25 \begin{twocollist}\itemsep=0pt
26 \twocolitem{\windowstyle{wxNB\_TOP}}{Place tabs on the top side.}
27 \twocolitem{\windowstyle{wxNB\_LEFT}}{Place tabs on the left side.}
28 \twocolitem{\windowstyle{wxNB\_RIGHT}}{Place tabs on the right side.}
29 \twocolitem{\windowstyle{wxNB\_BOTTOM}}{Place tabs under instead of above the notebook pages.}
30 \twocolitem{\windowstyle{wxNB\_FIXEDWIDTH}}{(Windows only) All tabs will have same width.}
31 \twocolitem{\windowstyle{wxNB\_MULTILINE}}{(Windows only) There can be several rows of tabs.}
32 \twocolitem{\windowstyle{wxNB\_NOPAGETHEME}}{(Windows only) Display a solid colour on notebook pages, and not a gradient, which can reduce performance.}
33 \twocolitem{\windowstyle{wxNB\_FLAT}}{(Windows CE only) Show tabs in a flat style.}
34
35 \end{twocollist}
36
37 The styles \texttt{wxNB\_LEFT}, \texttt{RIGHT} and \texttt{BOTTOM} are not
38 supported under Microsoft Windows XP when using visual themes.
39
40 See also \helpref{window styles overview}{windowstyles}.
41
42 \input noteevt.inc
43
44 \wxheading{Page backgrounds}
45
46 On Windows XP, the default theme paints a gradient on the notebook's pages.
47 If you wish to suppress this theme, for aesthetic or performance reasons,
48 there are three ways of doing it. You can use wxNB\_NOPAGETHEME to disable
49 themed drawing for a particular notebook, you can call {\tt wxSystemOptions::SetOption}
50 to disable it for the whole application, or you can disable it for individual
51 pages by using {\tt SetBackgroundColour}.
52
53 To disable themed pages globally:
54
55 \begin{verbatim}
56 wxSystemOptions::SetOption(wxT("msw.notebook.themed-background"), 0);
57 \end{verbatim}
58
59 Set the value to 1 to enable it again.
60
61 To give a single page a solid background that more or less fits in with the
62 overall theme, use:
63
64 \begin{verbatim}
65 wxColour col = notebook->GetThemeBackgroundColour();
66 if (col.Ok())
67 {
68 page->SetBackgroundColour(col);
69 }
70 \end{verbatim}
71
72 On platforms other than Windows, or if the application is not using Windows
73 themes, {\tt GetThemeBackgroundColour} will return an uninitialised colour object,
74 and the above code will therefore work on all platforms.
75
76 \wxheading{See also}
77
78 \helpref{wxBookCtrl}{wxbookctrloverview}, \helpref{wxNotebookEvent}{wxnotebookevent}, \helpref{wxImageList}{wximagelist}, \helpref{notebook sample}{samplenotebook}\rtfsp
79
80 \latexignore{\rtfignore{\wxheading{Members}}}
81
82 \membersection{wxNotebook::wxNotebook}\label{wxnotebookctor}
83
84 \func{}{wxNotebook}{\void}
85
86 Default constructor.
87
88 \func{}{wxNotebook}{\param{wxWindow*}{ parent}, \param{wxWindowID }{id}, \param{const wxPoint\&}{ pos = wxDefaultPosition},
89 \param{const wxSize\&}{ size = wxDefaultSize}, \param{long}{ style = 0}, \param{const wxString\& }{name = wxNotebookNameStr}}
90
91 Constructs a notebook control.
92
93 Note that sometimes you can reduce flicker by passing the wxCLIP\_CHILDREN window style.
94
95 \wxheading{Parameters}
96
97 \docparam{parent}{The parent window. Must be non-NULL.}
98
99 \docparam{id}{The window identifier.}
100
101 \docparam{pos}{The window position.}
102
103 \docparam{size}{The window size.}
104
105 \docparam{style}{The window style. See \helpref{wxNotebook}{wxnotebook}.}
106
107 \docparam{name}{The name of the control (used only under Motif).}
108
109
110 \membersection{wxNotebook::\destruct{wxNotebook}}\label{wxnotebookdtor}
111
112 \func{}{\destruct{wxNotebook}}{\void}
113
114 Destroys the wxNotebook object.
115
116
117 \membersection{wxNotebook::AddPage}\label{wxnotebookaddpage}
118
119 \func{bool}{AddPage}{\param{wxNotebookPage*}{ page},
120 \param{const wxString\&}{ text},
121 \param{bool}{ select = false},
122 \param{int}{ imageId = -1}}
123
124 Adds a new page.
125
126 The call to this function may generate the page changing events.
127
128 \wxheading{Parameters}
129
130 \docparam{page}{Specifies the new page.}
131
132 \docparam{text}{Specifies the text for the new page.}
133
134 \docparam{select}{Specifies whether the page should be selected.}
135
136 \docparam{imageId}{Specifies the optional image index for the new page.}
137
138 \wxheading{Return value}
139
140 true if successful, false otherwise.
141
142 \wxheading{Remarks}
143
144 Do not delete the page, it will be deleted by the notebook.
145
146 \wxheading{See also}
147
148 \helpref{wxNotebook::InsertPage}{wxnotebookinsertpage}
149
150
151 \membersection{wxNotebook::AdvanceSelection}\label{wxnotebookadvanceselection}
152
153 \func{void}{AdvanceSelection}{\param{bool}{ forward = true}}
154
155 Cycles through the tabs.
156
157 The call to this function generates the page changing events.
158
159
160 \membersection{wxNotebook::AssignImageList}\label{wxnotebookassignimagelist}
161
162 \func{void}{AssignImageList}{\param{wxImageList*}{ imageList}}
163
164 Sets the image list for the page control and takes ownership of
165 the list.
166
167 \wxheading{See also}
168
169 \helpref{wxImageList}{wximagelist},
170 \helpref{SetImageList}{wxnotebooksetimagelist}
171
172
173 \membersection{wxNotebook::Create}\label{wxnotebookcreate}
174
175 \func{bool}{Create}{\param{wxWindow*}{ parent}, \param{wxWindowID }{id}, \param{const wxPoint\&}{ pos = wxDefaultPosition},
176 \param{const wxSize\&}{ size}, \param{long}{ style = 0}, \param{const wxString\& }{name = wxNotebookNameStr}}
177
178 Creates a notebook control. See \helpref{wxNotebook::wxNotebook}{wxnotebookctor} for a description
179 of the parameters.
180
181
182 \membersection{wxNotebook::DeleteAllPages}\label{wxnotebookdeleteallpages}
183
184 \func{bool}{DeleteAllPages}{\void}
185
186 Deletes all pages.
187
188
189 \membersection{wxNotebook::DeletePage}\label{wxnotebookdeletepage}
190
191 \func{bool}{DeletePage}{\param{size\_t}{ page}}
192
193 Deletes the specified page, and the associated window.
194
195 The call to this function generates the page changing events.
196
197
198 \membersection{wxNotebook::GetCurrentPage}\label{wxnotebookgetcurrentpage}
199
200 \constfunc{wxWindow *}{GetCurrentPage}{\void}
201
202 Returns the currently selected notebook age or \texttt{NULL}.
203
204
205 \membersection{wxNotebook::GetImageList}\label{wxnotebookgetimagelist}
206
207 \constfunc{wxImageList*}{GetImageList}{\void}
208
209 Returns the associated image list.
210
211 \wxheading{See also}
212
213 \helpref{wxImageList}{wximagelist}, \helpref{wxNotebook::SetImageList}{wxnotebooksetimagelist}
214
215
216 \membersection{wxNotebook::GetPage}\label{wxnotebookgetpage}
217
218 \func{wxNotebookPage*}{GetPage}{\param{size\_t}{ page}}
219
220 Returns the window at the given page position.
221
222
223 \membersection{wxNotebook::GetPageCount}\label{wxnotebookgetpagecount}
224
225 \constfunc{size\_t}{GetPageCount}{\void}
226
227 Returns the number of pages in the notebook control.
228
229
230 \membersection{wxNotebook::GetPageImage}\label{wxnotebookgetpageimage}
231
232 \constfunc{int}{GetPageImage}{\param{size\_t }{nPage}}
233
234 Returns the image index for the given page.
235
236
237 \membersection{wxNotebook::GetPageText}\label{wxnotebookgetpagetext}
238
239 \constfunc{wxString}{GetPageText}{\param{size\_t }{nPage}}
240
241 Returns the string for the given page.
242
243
244 \membersection{wxNotebook::GetRowCount}\label{wxnotebookgetrowcount}
245
246 \constfunc{int}{GetRowCount}{\void}
247
248 Returns the number of rows in the notebook control.
249
250
251 \membersection{wxNotebook::GetSelection}\label{wxnotebookgetselection}
252
253 \constfunc{int}{GetSelection}{\void}
254
255 Returns the currently selected page, or $-1$ if none was selected.
256
257 Note that this method may return either the previously or newly selected page
258 when called from the {\tt EVT\_NOTEBOOK\_PAGE\_CHANGED} handler depending on
259 the platform and so\rtfsp
260 \helpref{wxNotebookEvent::GetSelection}{wxnotebookeventgetselection} should be
261 used instead in this case.
262
263 \membersection{wxNotebook::GetThemeBackgroundColour}\label{wxnotebookgetthemebackgroundcolour}
264
265 \constfunc{wxColour}{GetThemeBackgroundColour}{\void}
266
267 If running under Windows and themes are enabled for the application, this function
268 returns a suitable colour for painting the background of a notebook page, and can be passed
269 to {\tt SetBackgroundColour}. Otherwise, an uninitialised colour will be returned.
270
271 \membersection{wxNotebook::HitTest}\label{wxnotebookhittest}
272
273 \func{int}{HitTest}{\param{const wxPoint\&}{ pt}, \param{long}{ *flags = {\tt NULL}}}
274
275 Returns the index of the tab at the specified position or {\tt wxNOT\_FOUND}
276 if none. If {\it flags} parameter is non {\tt NULL}, the position of the point
277 inside the tab is returned as well.
278
279 {\bf NB: } This method is currently only implemented under wxMSW and wxUniv.
280
281 \wxheading{Parameters}
282
283 \docparam{pt}{Specifies the point for the hit test.}
284
285 \docparam{flags}{Return value for detailed information. One of the following values:
286 \twocolwidtha{7cm}
287 \begin{twocollist}\itemsep=0pt
288 \twocolitem{{\bf wxNB\_HITTEST\_NOWHERE}}{There was no tab under this point.}
289 \twocolitem{{\bf wxNB\_HITTEST\_ONICON}}{The point was over an icon (currently wxMSW only).}
290 \twocolitem{{\bf wxNB\_HITTEST\_ONLABEL}}{The point was over a label (currently wxMSW only).}
291 \twocolitem{{\bf wxNB\_HITTEST\_ONITEM}}{The point was over an item, but not on the label or icon.}
292 \end{twocollist}
293 }
294
295 \wxheading{Return value}
296
297 Returns the zero-based tab index or {\tt wxNOT\_FOUND} if there is no tab is at
298 the specified position.
299
300
301
302 \membersection{wxNotebook::InsertPage}\label{wxnotebookinsertpage}
303
304 \func{bool}{InsertPage}{\param{size\_t}{ index}, \param{wxNotebookPage*}{ page},
305 \param{const wxString\&}{ text},
306 \param{bool}{ select = false},
307 \param{int}{ imageId = -1}}
308
309 Inserts a new page at the specified position.
310
311 \wxheading{Parameters}
312
313 \docparam{index}{Specifies the position for the new page.}
314
315 \docparam{page}{Specifies the new page.}
316
317 \docparam{text}{Specifies the text for the new page.}
318
319 \docparam{select}{Specifies whether the page should be selected.}
320
321 \docparam{imageId}{Specifies the optional image index for the new page.}
322
323 \wxheading{Return value}
324
325 true if successful, false otherwise.
326
327 \wxheading{Remarks}
328
329 Do not delete the page, it will be deleted by the notebook.
330
331 \wxheading{See also}
332
333 \helpref{wxNotebook::AddPage}{wxnotebookaddpage}
334
335
336 \membersection{wxNotebook::OnSelChange}\label{wxnotebookonselchange}
337
338 \func{void}{OnSelChange}{\param{wxNotebookEvent\&}{ event}}
339
340 An event handler function, called when the page selection is changed.
341
342 \wxheading{See also}
343
344 \helpref{wxNotebookEvent}{wxnotebookevent}
345
346
347 \membersection{wxNotebook::RemovePage}\label{wxnotebookremovepage}
348
349 \func{bool}{RemovePage}{\param{size\_t}{ page}}
350
351 Deletes the specified page, without deleting the associated window.
352
353
354 \membersection{wxNotebook::SetImageList}\label{wxnotebooksetimagelist}
355
356 \func{void}{SetImageList}{\param{wxImageList*}{ imageList}}
357
358 Sets the image list for the page control. It does not take
359 ownership of the image list, you must delete it yourself.
360
361 \wxheading{See also}
362
363 \helpref{wxImageList}{wximagelist},
364 \helpref{AssignImageList}{wxnotebookassignimagelist}
365
366
367 \membersection{wxNotebook::SetPadding}\label{wxnotebooksetpadding}
368
369 \func{void}{SetPadding}{\param{const wxSize\&}{ padding}}
370
371 Sets the amount of space around each page's icon and label, in pixels.
372
373 {\bf NB:} The vertical padding cannot be changed in wxGTK.
374
375
376 \membersection{wxNotebook::SetPageSize}\label{wxnotebooksetpagesize}
377
378 \func{void}{SetPageSize}{\param{const wxSize\&}{ size}}
379
380 Sets the width and height of the pages.
381
382 {\bf NB:} This method is currently not implemented for wxGTK.
383
384
385 \membersection{wxNotebook::SetPageImage}\label{wxnotebooksetpageimage}
386
387 \func{bool}{SetPageImage}{\param{size\_t}{ page}, \param{int }{image}}
388
389 Sets the image index for the given page. {\it image} is an index into
390 the image list which was set with \helpref{wxNotebook::SetImageList}{wxnotebooksetimagelist}.
391
392
393 \membersection{wxNotebook::SetPageText}\label{wxnotebooksetpagetext}
394
395 \func{bool}{SetPageText}{\param{size\_t}{ page}, \param{const wxString\& }{text}}
396
397 Sets the text for the given page.
398
399
400 \membersection{wxNotebook::SetSelection}\label{wxnotebooksetselection}
401
402 \func{int}{SetSelection}{\param{size\_t}{ page}}
403
404 Sets the selection for the given page, returning the previous selection.
405
406 The call to this function generates the page changing events.
407
408 \wxheading{See also}
409
410 \helpref{wxNotebook::GetSelection}{wxnotebookgetselection}
411
412