]> git.saurik.com Git - wxWidgets.git/blob - src/palmos/notebook.cpp
wxSYS_COLOUR_WINDOW is better for window backgrounds on PPC/Smartphone
[wxWidgets.git] / src / palmos / notebook.cpp
1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: src/palmos/notebook.cpp
3 // Purpose: implementation of wxNotebook
4 // Author: William Osborne - minimal working wxPalmOS port
5 // Modified by:
6 // Created: 10/13/04
7 // RCS-ID: $Id$
8 // Copyright: (c) William Osborne
9 // Licence: wxWindows licence
10 ///////////////////////////////////////////////////////////////////////////////
11
12 #if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
13 #pragma implementation "notebook.h"
14 #endif
15
16 // For compilers that support precompilation, includes "wx.h".
17 #include "wx/wxprec.h"
18
19 #ifdef __BORLANDC__
20 #pragma hdrstop
21 #endif
22
23 #if wxUSE_NOTEBOOK
24
25 // wxWidgets
26 #ifndef WX_PRECOMP
27 #include "wx/string.h"
28 #endif // WX_PRECOMP
29
30 // ----------------------------------------------------------------------------
31 // macros
32 // ----------------------------------------------------------------------------
33
34 // check that the page index is valid
35 #define IS_VALID_PAGE(nPage) ((nPage) < GetPageCount())
36
37 // ----------------------------------------------------------------------------
38 // event table
39 // ----------------------------------------------------------------------------
40
41 #include <wx/listimpl.cpp>
42
43 WX_DEFINE_LIST( wxNotebookPageInfoList ) ;
44
45 DEFINE_EVENT_TYPE(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED)
46 DEFINE_EVENT_TYPE(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING)
47
48 BEGIN_EVENT_TABLE(wxNotebook, wxControl)
49 EVT_NOTEBOOK_PAGE_CHANGED(-1, wxNotebook::OnSelChange)
50
51 EVT_SIZE(wxNotebook::OnSize)
52
53 EVT_NAVIGATION_KEY(wxNotebook::OnNavigationKey)
54 END_EVENT_TABLE()
55
56 #if wxUSE_EXTENDED_RTTI
57 WX_DEFINE_FLAGS( wxNotebookStyle )
58
59 wxBEGIN_FLAGS( wxNotebookStyle )
60 // new style border flags, we put them first to
61 // use them for streaming out
62 wxFLAGS_MEMBER(wxBORDER_SIMPLE)
63 wxFLAGS_MEMBER(wxBORDER_SUNKEN)
64 wxFLAGS_MEMBER(wxBORDER_DOUBLE)
65 wxFLAGS_MEMBER(wxBORDER_RAISED)
66 wxFLAGS_MEMBER(wxBORDER_STATIC)
67 wxFLAGS_MEMBER(wxBORDER_NONE)
68
69 // old style border flags
70 wxFLAGS_MEMBER(wxSIMPLE_BORDER)
71 wxFLAGS_MEMBER(wxSUNKEN_BORDER)
72 wxFLAGS_MEMBER(wxDOUBLE_BORDER)
73 wxFLAGS_MEMBER(wxRAISED_BORDER)
74 wxFLAGS_MEMBER(wxSTATIC_BORDER)
75 wxFLAGS_MEMBER(wxBORDER)
76
77 // standard window styles
78 wxFLAGS_MEMBER(wxTAB_TRAVERSAL)
79 wxFLAGS_MEMBER(wxCLIP_CHILDREN)
80 wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW)
81 wxFLAGS_MEMBER(wxWANTS_CHARS)
82 wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE)
83 wxFLAGS_MEMBER(wxALWAYS_SHOW_SB )
84 wxFLAGS_MEMBER(wxVSCROLL)
85 wxFLAGS_MEMBER(wxHSCROLL)
86
87 wxFLAGS_MEMBER(wxNB_FIXEDWIDTH)
88 wxFLAGS_MEMBER(wxNB_LEFT)
89 wxFLAGS_MEMBER(wxNB_RIGHT)
90 wxFLAGS_MEMBER(wxNB_BOTTOM)
91
92 wxEND_FLAGS( wxNotebookStyle )
93
94 IMPLEMENT_DYNAMIC_CLASS_XTI(wxNotebook, wxControl,"wx/notebook.h")
95 IMPLEMENT_DYNAMIC_CLASS_XTI(wxNotebookPageInfo, wxObject , "wx/notebook.h" )
96
97 wxCOLLECTION_TYPE_INFO( wxNotebookPageInfo * , wxNotebookPageInfoList ) ;
98
99 template<> void wxCollectionToVariantArray( wxNotebookPageInfoList const &theList, wxxVariantArray &value)
100 {
101 wxListCollectionToVariantArray<wxNotebookPageInfoList::compatibility_iterator>( theList , value ) ;
102 }
103
104 wxBEGIN_PROPERTIES_TABLE(wxNotebook)
105 wxEVENT_PROPERTY( PageChanging , wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING , wxNotebookEvent )
106 wxEVENT_PROPERTY( PageChanged , wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED , wxNotebookEvent )
107
108 wxPROPERTY_COLLECTION( PageInfos , wxNotebookPageInfoList , wxNotebookPageInfo* , AddPageInfo , GetPageInfos , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
109 wxPROPERTY_FLAGS( WindowStyle , wxNotebookStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , EMPTY_MACROVALUE , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style
110 wxEND_PROPERTIES_TABLE()
111
112 wxBEGIN_HANDLERS_TABLE(wxNotebook)
113 wxEND_HANDLERS_TABLE()
114
115 wxCONSTRUCTOR_5( wxNotebook , wxWindow* , Parent , wxWindowID , Id , wxPoint , Position , wxSize , Size , long , WindowStyle)
116
117
118 wxBEGIN_PROPERTIES_TABLE(wxNotebookPageInfo)
119 wxREADONLY_PROPERTY( Page , wxNotebookPage* , GetPage , EMPTY_MACROVALUE , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
120 wxREADONLY_PROPERTY( Text , wxString , GetText , wxString() , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
121 wxREADONLY_PROPERTY( Selected , bool , GetSelected , false, 0 /*flags*/ , wxT("Helpstring") , wxT("group") )
122 wxREADONLY_PROPERTY( ImageId , int , GetImageId , -1 , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
123 wxEND_PROPERTIES_TABLE()
124
125 wxBEGIN_HANDLERS_TABLE(wxNotebookPageInfo)
126 wxEND_HANDLERS_TABLE()
127
128 wxCONSTRUCTOR_4( wxNotebookPageInfo , wxNotebookPage* , Page , wxString , Text , bool , Selected , int , ImageId )
129
130 #else
131 IMPLEMENT_DYNAMIC_CLASS(wxNotebook, wxControl)
132 IMPLEMENT_DYNAMIC_CLASS(wxNotebookPageInfo, wxObject )
133 #endif
134 IMPLEMENT_DYNAMIC_CLASS(wxNotebookEvent, wxNotifyEvent)
135
136 // ============================================================================
137 // implementation
138 // ============================================================================
139
140 // ----------------------------------------------------------------------------
141 // wxNotebook construction
142 // ----------------------------------------------------------------------------
143
144 const wxNotebookPageInfoList& wxNotebook::GetPageInfos() const
145 {
146 wxNotebookPageInfoList* list;
147
148 return m_pageInfos ;
149 }
150
151 // common part of all ctors
152 void wxNotebook::Init()
153 {
154 }
155
156 // default for dynamic class
157 wxNotebook::wxNotebook()
158 {
159 }
160
161 // the same arguments as for wxControl
162 wxNotebook::wxNotebook(wxWindow *parent,
163 wxWindowID id,
164 const wxPoint& pos,
165 const wxSize& size,
166 long style,
167 const wxString& name)
168 {
169 }
170
171 // Create() function
172 bool wxNotebook::Create(wxWindow *parent,
173 wxWindowID id,
174 const wxPoint& pos,
175 const wxSize& size,
176 long style,
177 const wxString& name)
178 {
179 return false;
180 }
181
182 // ----------------------------------------------------------------------------
183 // wxNotebook accessors
184 // ----------------------------------------------------------------------------
185
186 size_t wxNotebook::GetPageCount() const
187 {
188 return 0;
189 }
190
191 int wxNotebook::GetRowCount() const
192 {
193 return 0;
194 }
195
196 int wxNotebook::SetSelection(size_t nPage)
197 {
198 return 0;
199 }
200
201 bool wxNotebook::SetPageText(size_t nPage, const wxString& strText)
202 {
203 return false;
204 }
205
206 wxString wxNotebook::GetPageText(size_t nPage) const
207 {
208 return wxEmptyString;
209 }
210
211 int wxNotebook::GetPageImage(size_t nPage) const
212 {
213 return -1;
214 }
215
216 bool wxNotebook::SetPageImage(size_t nPage, int nImage)
217 {
218 return false;
219 }
220
221 void wxNotebook::SetImageList(wxImageList* imageList)
222 {
223 }
224
225 // ----------------------------------------------------------------------------
226 // wxNotebook size settings
227 // ----------------------------------------------------------------------------
228
229 void wxNotebook::SetPageSize(const wxSize& size)
230 {
231 }
232
233 void wxNotebook::SetPadding(const wxSize& padding)
234 {
235 }
236
237 void wxNotebook::SetTabSize(const wxSize& sz)
238 {
239 }
240
241 wxSize wxNotebook::CalcSizeFromPage(const wxSize& sizePage) const
242 {
243 return wxSize(0,0);
244 }
245
246 void wxNotebook::AdjustPageSize(wxNotebookPage *page)
247 {
248 }
249
250 // ----------------------------------------------------------------------------
251 // wxNotebook operations
252 // ----------------------------------------------------------------------------
253
254 // remove one page from the notebook, without deleting
255 wxNotebookPage *wxNotebook::DoRemovePage(size_t nPage)
256 {
257 return NULL;
258 }
259
260 // remove all pages
261 bool wxNotebook::DeleteAllPages()
262 {
263 return true;
264 }
265
266 // same as AddPage() but does it at given position
267 bool wxNotebook::InsertPage(size_t nPage,
268 wxNotebookPage *pPage,
269 const wxString& strText,
270 bool bSelect,
271 int imageId)
272 {
273 return false;
274 }
275
276 int wxNotebook::HitTest(const wxPoint& pt, long *flags) const
277 {
278 return 0;
279 }
280
281
282 // ----------------------------------------------------------------------------
283 // wxNotebook callbacks
284 // ----------------------------------------------------------------------------
285
286 void wxNotebook::OnSize(wxSizeEvent& event)
287 {
288 }
289
290 void wxNotebook::OnSelChange(wxNotebookEvent& event)
291 {
292 }
293
294 void wxNotebook::OnNavigationKey(wxNavigationKeyEvent& event)
295 {
296 }
297
298 // ----------------------------------------------------------------------------
299 // wxNotebook base class virtuals
300 // ----------------------------------------------------------------------------
301
302 #if wxUSE_CONSTRAINTS
303
304 // override these 2 functions to do nothing: everything is done in OnSize
305
306 void wxNotebook::SetConstraintSizes(bool WXUNUSED(recurse))
307 {
308 }
309
310 bool wxNotebook::DoPhase(int WXUNUSED(nPhase))
311 {
312 return true;
313 }
314
315 #endif // wxUSE_CONSTRAINTS
316
317 #endif // wxUSE_NOTEBOOK