WX_DEFINE_EXPORTED_ARRAY_PTR(wxWindow *, wxArrayPages);
-class WXDLLEXPORT wxImageList;
-class WXDLLEXPORT wxBookCtrlBaseEvent;
+class WXDLLIMPEXP_FWD_CORE wxImageList;
+class WXDLLIMPEXP_FWD_CORE wxBookCtrlBaseEvent;
// ----------------------------------------------------------------------------
// constants
wxBK_HITTEST_ONPAGE = 8 // not on tab control, but over the selected page
};
+// wxBookCtrl flags (common for wxNotebook, wxListbook, wxChoicebook, wxTreebook)
+#define wxBK_DEFAULT 0x0000
+#define wxBK_TOP 0x0010
+#define wxBK_BOTTOM 0x0020
+#define wxBK_LEFT 0x0040
+#define wxBK_RIGHT 0x0080
+#define wxBK_ALIGN_MASK (wxBK_TOP | wxBK_BOTTOM | wxBK_LEFT | wxBK_RIGHT)
+
// ----------------------------------------------------------------------------
// wxBookCtrlBase
// ----------------------------------------------------------------------------
-class WXDLLEXPORT wxBookCtrlBase : public wxControl
+class WXDLLIMPEXP_CORE wxBookCtrlBase : public wxControl
{
public:
// construction
virtual size_t GetPageCount() const { return m_pages.size(); }
// get the panel which represents the given page
- 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
// returns the sizer containing the control, if any
wxSizer* GetControlSizer() const { return m_controlSizer; }
+
// operations
// ----------
// remove one page from the notebook, without deleting it
virtual bool RemovePage(size_t n)
{
- InvalidateBestSize();
+ DoInvalidateBestSize();
return DoRemovePage(n) != NULL;
}
// remove all pages and delete them
virtual bool DeleteAllPages()
{
- InvalidateBestSize();
+ DoInvalidateBestSize();
WX_CLEAR_ARRAY(m_pages);
return true;
}
bool bSelect = false,
int imageId = -1)
{
- InvalidateBestSize();
+ DoInvalidateBestSize();
return InsertPage(GetPageCount(), page, text, bSelect, imageId);
}
// we do have multiple pages
virtual bool HasMultiplePages() const { return true; }
+ // we don't want focus for ourselves
+ virtual bool AcceptsFocus() const { return false; }
+
+ // returns true if the platform should explicitly apply a theme border
+ virtual bool CanApplyThemeBorder() const { return false; }
+
protected:
// flags for DoSetSelection()
enum
SetSelection_SendEvent = 1
};
+ // choose the default border for this window
+ virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; }
+
// set the selection to the given page, sending the events (which can
// possibly prevent the page change from taking place) if SendEvent flag is
// included
// helper: get the next page wrapping if we reached the end
int GetNextPage(bool forward) const;
- // Always rely on GetBestSize, which will look at all the pages
- virtual void SetInitialBestSize(const wxSize& WXUNUSED(size)) { }
-
// Lay out controls
void DoSize();
+ // This method also invalidates the size of the controller and should be
+ // called instead of just InvalidateBestSize() whenever pages are added or
+ // removed as this also affects the controller
+ void DoInvalidateBestSize();
+
#if wxUSE_HELP
// Show the help for the corresponding page
void OnHelp(wxHelpEvent& event);
bool m_fitToCurrentPage;
// the sizer containing the choice control
- wxSizer* m_controlSizer;
+ wxSizer *m_controlSizer;
// the margin around the choice control
- int m_controlMargin;
+ int m_controlMargin;
private:
// wxBookCtrlBaseEvent: page changing events generated by derived classes
// ----------------------------------------------------------------------------
-class WXDLLEXPORT wxBookCtrlBaseEvent : public wxNotifyEvent
+class WXDLLIMPEXP_CORE wxBookCtrlBaseEvent : public wxNotifyEvent
{
public:
wxBookCtrlBaseEvent(wxEventType commandType = wxEVT_NULL, int winid = 0,