]> git.saurik.com Git - wxWidgets.git/blame - include/wx/os2/notebook.h
Don't dispatch messages while waiting in worker thread in wxMSW.
[wxWidgets.git] / include / wx / os2 / notebook.h
CommitLineData
0e320a79
DW
1/////////////////////////////////////////////////////////////////////////////
2// Name: notebook.h
3// Purpose: MSW/GTK compatible notebook (a.k.a. property sheet)
cdf1e714 4// Author: David Webster
0e320a79
DW
5// Modified by:
6// RCS-ID: $Id$
cdf1e714 7// Copyright: (c) David Webster
65571936 8// Licence: wxWindows licence
0e320a79
DW
9/////////////////////////////////////////////////////////////////////////////
10
f289196b
DW
11#ifndef _NOTEBOOK_H
12#define _NOTEBOOK_H
0e320a79 13
f289196b 14#if wxUSE_NOTEBOOK
0e320a79
DW
15
16// ----------------------------------------------------------------------------
f289196b 17// headers
0e320a79
DW
18// ----------------------------------------------------------------------------
19
f289196b 20#include "wx/control.h"
0e320a79 21
0e320a79
DW
22// ----------------------------------------------------------------------------
23// wxNotebook
24// ----------------------------------------------------------------------------
25
53a2db12 26class WXDLLIMPEXP_CORE wxNotebook : public wxNotebookBase
0e320a79
DW
27{
28public:
f289196b
DW
29 //
30 // Ctors
31 // -----
32 // Default for dynamic class
33 //
34 wxNotebook();
35
36 //
37 // the same arguments as for wxControl
38 //
39 wxNotebook( wxWindow* pParent
40 ,wxWindowID vId
41 ,const wxPoint& rPos = wxDefaultPosition
42 ,const wxSize& rSize = wxDefaultSize
43 ,long lStyle = 0
630ad6c6 44 ,const wxString& rsName = wxNotebookNameStr
f289196b
DW
45 );
46
47 bool Create( wxWindow* pParent
48 ,wxWindowID vId
49 ,const wxPoint& rPos = wxDefaultPosition
50 ,const wxSize& rSize = wxDefaultSize
51 ,long lStyle = 0
630ad6c6 52 ,const wxString& rsName = wxNotebookNameStr
f289196b
DW
53 );
54
55 //
56 // Accessors
57 // ---------
58 // Get number of pages in the dialog
59 //
3979bf6b 60 virtual size_t GetPageCount(void) const;
f289196b
DW
61
62 //
63 // Set the currently selected page, return the index of the previously
0e320a79
DW
64 // selected one (or -1 on error)
65 // NB: this function will _not_ generate wxEVT_NOTEBOOK_PAGE_xxx events
f289196b 66 //
3979bf6b 67 int SetSelection(size_t nPage);
f289196b 68
1d6fcbcc
VZ
69 // changes selected page without sending events
70 int ChangeSelection(size_t nPage);
71
f289196b
DW
72 //
73 // Get the currently selected page
74 //
75 inline int GetSelection(void) const { return m_nSelection; }
76
77 //
78 // Set/Get the title of a page
79 //
3979bf6b
SN
80 bool SetPageText( size_t nPage
81 ,const wxString& sStrText
82 );
83 wxString GetPageText(size_t nPage) const;
f289196b
DW
84
85 //
86 // Image list stuff: each page may have an image associated with it. All
87 // the images belong to an image list, so you have to
88 // 1) create an image list
89 // 2) associate it with the notebook
90 // 3) set for each page it's image
0e320a79 91 // associate image list with a control
f289196b
DW
92 //
93 void SetImageList(wxImageList* pImageList);
94
95 //
96 // Sets/returns item's image index in the current image list
97 //
3979bf6b
SN
98 int GetPageImage(size_t nPage) const;
99 bool SetPageImage( size_t nPage
100 ,int nImage
101 );
f289196b
DW
102
103 //
104 // Currently it's always 1 because wxGTK doesn't support multi-row
0e320a79 105 // tab controls
f289196b
DW
106 //
107 int GetRowCount(void) const;
0e320a79 108
f289196b
DW
109 //
110 // control the appearance of the notebook pages
0e320a79 111 // set the size (the same for all pages)
f289196b
DW
112 //
113 void SetPageSize(const wxSize& rSize);
114
115 //
116 // Set the padding between tabs (in pixels)
117 //
118 void SetPadding(const wxSize& rPadding);
119
120 //
121 // Operations
122 // ----------
123 // Remove all pages
124 //
125 bool DeleteAllPages(void);
126
127 //
128 // Adds a new page to the notebook (it will be deleted ny the notebook,
0e320a79 129 // don't delete it yourself). If bSelect, this page becomes active.
f289196b
DW
130 //
131 bool AddPage( wxNotebookPage* pPage
132 ,const wxString& rsStrText
630ad6c6 133 ,bool bSelect = false
f289196b
DW
134 ,int nImageId = -1
135 );
136
137 //
138 // The same as AddPage(), but adds it at the specified position
139 //
3979bf6b
SN
140 bool InsertPage( size_t nPage
141 ,wxNotebookPage* pPage
142 ,const wxString& rsStrText
630ad6c6 143 ,bool bSelect = false
3979bf6b
SN
144 ,int nImageId = -1
145 );
f289196b
DW
146
147 //
cdf1e714
DW
148 // Windows-only at present. Also, you must use the wxNB_FIXEDWIDTH
149 // style.
f289196b
DW
150 //
151 void SetTabSize(const wxSize& rSize);
152
153 //
154 // Callbacks
155 // ---------
156 //
157 void OnSize(wxSizeEvent& rEvent);
3e97a905 158 void OnSelChange(wxBookCtrlEvent& rEvent);
f289196b
DW
159 void OnSetFocus(wxFocusEvent& rEvent);
160 void OnNavigationKey(wxNavigationKeyEvent& rEvent);
161
162 //
163 // Base class virtuals
164 // -------------------
165 //
166 virtual bool OS2OnScroll( int nOrientation
167 ,WXWORD wSBCode
168 ,WXWORD wPos
169 ,WXHWND hControl
170 );
630ad6c6 171 virtual void SetConstraintSizes(bool bRecurse = true);
f289196b
DW
172 virtual bool DoPhase(int nPhase);
173
174protected:
175 //
176 // Common part of all ctors
177 //
178 void Init(void);
cdf1e714 179
f289196b
DW
180 //
181 // Translate wxWin styles to the PM ones
182 //
183 virtual WXDWORD OS2GetStyle( long lFlags
184 ,WXDWORD* pwExstyle = NULL
185 ) const;
cdf1e714 186
f289196b
DW
187 //
188 // Remove one page from the notebook, without deleting
189 //
3979bf6b 190 virtual wxNotebookPage* DoRemovePage(size_t nPage);
0e320a79 191
f289196b
DW
192 //
193 // Helper functions
194 //
f289196b
DW
195
196 int m_nSelection; // The current selection (-1 if none)
0e320a79 197
f289196b
DW
198private:
199 wxArrayLong m_alPageId;
200 int m_nTabSize; // holds the largest tab size
0e320a79 201
f289196b
DW
202 DECLARE_DYNAMIC_CLASS(wxNotebook)
203 DECLARE_EVENT_TABLE()
204}; // end of CLASS wxNotebook
0e320a79 205
f289196b 206#endif // wxUSE_NOTEBOOK
0e320a79 207
f289196b 208#endif // _NOTEBOOK_H