#ifndef _WX_BOOKCTRL_H_
#define _WX_BOOKCTRL_H_
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
- #pragma interface "bookctrl.h"
-#endif
-
// ----------------------------------------------------------------------------
// headers
// ----------------------------------------------------------------------------
virtual size_t GetPageCount() const { return m_pages.size(); }
// get the panel which represents the given page
- virtual wxWindow *GetPage(size_t n) { return m_pages[n]; }
+ wxWindow *GetPage(size_t n) { return m_pages[n]; }
+ wxWindow *GetPage(size_t n) const { return m_pages[n]; }
// get the current page or NULL if none
wxWindow *GetCurrentPage() const
{
- int n = GetSelection();
- return n == wxNOT_FOUND ? NULL
- : wx_const_cast(wxBookCtrlBase *, this)->GetPage(n);
+ const int n = GetSelection();
+ return n == wxNOT_FOUND ? NULL : GetPage(n);
}
// get the currently selected page or wxNOT_FOUND if none
}
}
- // override some base class virtuals
- virtual void ApplyParentThemeBackground(const wxColour& bg)
- { SetBackgroundColour(bg); }
- virtual bool ProvidesBackground() const { return true; }
-
protected:
+ // Should we accept NULL page pointers in Add/InsertPage()?
+ //
+ // Default is no but derived classes may override it if they can treat NULL
+ // pages in some sensible way (e.g. wxTreebook overrides this to allow
+ // having nodes without any associated page)
+ virtual bool AllowNullPage() const { return false; }
+
// remove the page and return a pointer to it
virtual wxWindow *DoRemovePage(size_t page) = 0;
// Always rely on GetBestSize, which will look at all the pages
virtual void SetInitialBestSize(const wxSize& WXUNUSED(size)) { }
+
// the array of all pages of this control
wxArrayPages m_pages;
};
// make a default book control for given platform
-#if defined(__WXMSW__) && defined(__SMARTPHONE__)
- #include "wx/choicebk.h"
- #define wxBookCtrl wxChoicebook
- #define wxBookCtrlEvent wxChoicebookEvent
- #define wxEVT_COMMAND_BOOKCTRL_PAGE_CHANGED wxEVT_COMMAND_CHOICEBOOK_PAGE_CHANGED
- #define wxEVT_COMMAND_BOOKCTRL_PAGE_CHANGING wxEVT_COMMAND_CHOICEBOOK_PAGE_CHANGING
- #define EVT_BOOKCTRL_PAGE_CHANGED(id, fn) EVT_CHOICEBOOK_PAGE_CHANGED(id, fn)
- #define EVT_BOOKCTRL_PAGE_CHANGING(id, fn) EVT_CHOICEBOOK_PAGE_CHANGING(id, fn)
- #define wxBC_TOP wxCHB_TOP
- #define wxBC_BOTTOM wxCHB_BOTTOM
- #define wxBC_LEFT wxCHB_LEFT
- #define wxBC_RIGHT wxCHB_RIGHT
- #define wxBC_DEFAULT wxCHB_DEFAULT
-#else
+#if wxUSE_NOTEBOOK
+ // dedicated to majority of desktops
#include "wx/notebook.h"
#define wxBookCtrl wxNotebook
#define wxBookCtrlEvent wxNotebookEvent
#define wxBC_LEFT wxNB_LEFT
#define wxBC_RIGHT wxNB_RIGHT
#define wxBC_DEFAULT wxNB_DEFAULT
+#else
+ // dedicated to Smartphones
+ #include "wx/choicebk.h"
+ #define wxBookCtrl wxChoicebook
+ #define wxBookCtrlEvent wxChoicebookEvent
+ #define wxEVT_COMMAND_BOOKCTRL_PAGE_CHANGED wxEVT_COMMAND_CHOICEBOOK_PAGE_CHANGED
+ #define wxEVT_COMMAND_BOOKCTRL_PAGE_CHANGING wxEVT_COMMAND_CHOICEBOOK_PAGE_CHANGING
+ #define EVT_BOOKCTRL_PAGE_CHANGED(id, fn) EVT_CHOICEBOOK_PAGE_CHANGED(id, fn)
+ #define EVT_BOOKCTRL_PAGE_CHANGING(id, fn) EVT_CHOICEBOOK_PAGE_CHANGING(id, fn)
+ #define wxBC_TOP wxCHB_TOP
+ #define wxBC_BOTTOM wxCHB_BOTTOM
+ #define wxBC_LEFT wxCHB_LEFT
+ #define wxBC_RIGHT wxCHB_RIGHT
+ #define wxBC_DEFAULT wxCHB_DEFAULT
#endif
#endif // wxUSE_BOOKCTRL