X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/97c58531bf6912d5b6214b4bd6298466ebcb87ca..b156929dd096cb0c0c46cd4a5747556dde228675:/include/wx/bookctrl.h diff --git a/include/wx/bookctrl.h b/include/wx/bookctrl.h index 95e79de2ab..171366205f 100644 --- a/include/wx/bookctrl.h +++ b/include/wx/bookctrl.h @@ -118,6 +118,18 @@ public: // calculate the size of the control from the size of its page virtual wxSize CalcSizeFromPage(const wxSize& sizePage) const = 0; + // get/set size of area between book control area and page area + inline unsigned int GetInternalBorder() const + { + return m_internalBorder; + } + void SetInternalBorder(unsigned int internalBorder) + { + m_internalBorder = internalBorder; + } + + // returns true if we have wxCHB_TOP or wxCHB_BOTTOM style + bool IsVertical() const { return HasFlag(wxBK_BOTTOM | wxBK_TOP); } // operations // ---------- @@ -176,6 +188,13 @@ public: } 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; @@ -185,13 +204,9 @@ protected: // helper: get the next page wrapping if we reached the end int GetNextPage(bool forward) const; - // common part of all ctors - void Init(); - // 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; @@ -201,8 +216,27 @@ protected: // true if we must delete m_imageList bool m_ownsImageList; + // get the page area + wxRect GetPageRect() const; + + // event handlers + virtual wxSize GetControllerSize() const; + void OnSize(wxSizeEvent& event); + + // controller buddy if available, NULL otherwise (usually for native book controls like wxNotebook) + wxControl *m_bookctrl; + +private: + + // common part of all ctors + void Init(); + // internal border + unsigned int m_internalBorder; + + DECLARE_ABSTRACT_CLASS(wxBookCtrlBase) DECLARE_NO_COPY_CLASS(wxBookCtrlBase) + DECLARE_EVENT_TABLE() }; // ---------------------------------------------------------------------------- @@ -215,10 +249,17 @@ public: wxBookCtrlBaseEvent(wxEventType commandType = wxEVT_NULL, int winid = 0, int nSel = -1, int nOldSel = -1) : wxNotifyEvent(commandType, winid) - { - m_nSel = nSel; - m_nOldSel = nOldSel; - } + { + m_nSel = nSel; + m_nOldSel = nOldSel; + } + + wxBookCtrlBaseEvent(const wxBookCtrlBaseEvent& event) + : wxNotifyEvent(event) + { + m_nSel = event.m_nSel; + m_nOldSel = event.m_nOldSel; + } // accessors // the currently selected page (-1 if none) @@ -243,11 +284,6 @@ private: #define wxEVT_COMMAND_BOOKCTRL_PAGE_CHANGING wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING #define EVT_BOOKCTRL_PAGE_CHANGED(id, fn) EVT_NOTEBOOK_PAGE_CHANGED(id, fn) #define EVT_BOOKCTRL_PAGE_CHANGING(id, fn) EVT_NOTEBOOK_PAGE_CHANGING(id, fn) - #define wxBC_TOP wxNB_TOP - #define wxBC_BOTTOM wxNB_BOTTOM - #define wxBC_LEFT wxNB_LEFT - #define wxBC_RIGHT wxNB_RIGHT - #define wxBC_DEFAULT wxNB_DEFAULT #else // dedicated to Smartphones #include "wx/choicebk.h" @@ -257,11 +293,14 @@ private: #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 + +#if WXWIN_COMPATIBILITY_2_6 + #define wxBC_TOP wxBK_TOP + #define wxBC_BOTTOM wxBK_BOTTOM + #define wxBC_LEFT wxBK_LEFT + #define wxBC_RIGHT wxBK_RIGHT + #define wxBC_DEFAULT wxBK_DEFAULT #endif #endif // wxUSE_BOOKCTRL