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