X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/07b8d7ecc39cfc6cce17156b91c6de1cfb56ce5b..8ec1974ea170256698381cc47dd1dcd6cb494433:/include/wx/notebook.h?ds=sidebyside diff --git a/include/wx/notebook.h b/include/wx/notebook.h index ac8e965466..aac71c2032 100644 --- a/include/wx/notebook.h +++ b/include/wx/notebook.h @@ -12,7 +12,7 @@ #ifndef _WX_NOTEBOOK_H_BASE_ #define _WX_NOTEBOOK_H_BASE_ -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(__APPLE__) #pragma interface "notebookbase.h" #endif @@ -26,8 +26,20 @@ #include "wx/control.h" #include "wx/dynarray.h" +#include "wx/imaglist.h" -class WXDLLEXPORT wxImageList; +// ---------------------------------------------------------------------------- +// constants +// ---------------------------------------------------------------------------- + +// wxNotebook hit results +enum +{ + wxNB_HITTEST_NOWHERE = 1, // not on tab + wxNB_HITTEST_ONICON = 2, // on icon + wxNB_HITTEST_ONLABEL = 4, // on label + wxNB_HITTEST_ONITEM = wxNB_HITTEST_ONICON | wxNB_HITTEST_ONLABEL +}; // ---------------------------------------------------------------------------- // types @@ -36,7 +48,7 @@ class WXDLLEXPORT wxImageList; // array of notebook pages typedef wxWindow wxNotebookPage; // so far, any window can be a page -WX_DEFINE_EXPORTED_ARRAY(wxNotebookPage *, wxArrayPages); +WX_DEFINE_EXPORTED_ARRAY_NO_PTR(wxNotebookPage *, wxArrayPages); #define wxNOTEBOOK_NAME _T("notebook") @@ -68,7 +80,7 @@ public: // --------- // get number of pages in the dialog - int GetPageCount() const { return m_pages.GetCount(); } + int GetPageCount() const { return (int) m_pages.GetCount(); } // get the panel which represents the given page wxNotebookPage *GetPage(int nPage) { return m_pages[nPage]; } @@ -108,7 +120,7 @@ public: virtual void SetTabSize(const wxSize& sz) = 0; // calculate the size of the notebook from the size of its page - virtual wxSize CalcSizeFromPage(const wxSize& sizePage); + virtual wxSize CalcSizeFromPage(const wxSize& sizePage) const; // operations // ---------- @@ -145,6 +157,14 @@ public: // NB: this function will _not_ generate wxEVT_NOTEBOOK_PAGE_xxx events virtual int SetSelection(int nPage) = 0; + // hit test, returns which tab is hit and, optionally, where (icon, label) + // (not implemented on all platforms) + virtual int HitTest(const wxPoint& WXUNUSED(pt), + long * WXUNUSED(flags) = NULL) const + { + return wxNOT_FOUND; + } + // cycle thru the tabs void AdvanceSelection(bool forward = TRUE) { @@ -155,7 +175,9 @@ public: protected: // remove the page and return a pointer to it - virtual wxNotebookPage *DoRemovePage(int page) = 0; + virtual wxNotebookPage *DoRemovePage(int page); + // return the minimum size large enough to display the largest page entirely + virtual wxSize DoGetBestSize() const; // common part of all ctors void Init(); @@ -166,6 +188,8 @@ protected: wxArrayPages m_pages; // array of pages wxImageList *m_imageList; // we can have an associated image list bool m_ownsImageList; // true if we must delete m_imageList + + DECLARE_NO_COPY_CLASS(wxNotebookBase) }; // ---------------------------------------------------------------------------- @@ -195,19 +219,13 @@ private: int m_nSel, // currently selected page m_nOldSel; // previously selected page - DECLARE_DYNAMIC_CLASS(wxNotebookEvent) + DECLARE_DYNAMIC_CLASS_NO_COPY(wxNotebookEvent) }; // ---------------------------------------------------------------------------- // event types and macros for them // ---------------------------------------------------------------------------- -#if defined(__BORLANDC__) && defined(__WIN16__) - // For 16-bit BC++, these 2 would be identical otherwise (truncated) - #define wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED wxEVT_COMMAND_NB_PAGE_CHANGED - #define wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING wxEVT_COMMAND_NB_PAGE_CHANGING -#endif - BEGIN_DECLARE_EVENT_TYPES() DECLARE_EVENT_TYPE(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, 802) DECLARE_EVENT_TYPE(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, 803) @@ -215,28 +233,6 @@ END_DECLARE_EVENT_TYPES() typedef void (wxEvtHandler::*wxNotebookEventFunction)(wxNotebookEvent&); -// Truncation in 16-bit BC++ means we need to define these differently -#if defined(__BORLANDC__) && defined(__WIN16__) -#define EVT_NOTEBOOK_PAGE_CHANGED(id, fn) \ - DECLARE_EVENT_TABLE_ENTRY( \ - wxEVT_COMMAND_NB_PAGE_CHANGED, \ - id, \ - -1, \ - (wxObjectEventFunction)(wxEventFunction)(wxNotebookEventFunction) &fn, \ - NULL \ - ), - -#define EVT_NOTEBOOK_PAGE_CHANGING(id, fn) \ - DECLARE_EVENT_TABLE_ENTRY( \ - wxEVT_COMMAND_NB_PAGE_CHANGING, \ - id, \ - -1, \ - (wxObjectEventFunction)(wxEventFunction)(wxNotebookEventFunction) &fn, \ - NULL \ - ), - -#else - #define EVT_NOTEBOOK_PAGE_CHANGED(id, fn) \ DECLARE_EVENT_TABLE_ENTRY( \ wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, \ @@ -255,8 +251,6 @@ typedef void (wxEvtHandler::*wxNotebookEventFunction)(wxNotebookEvent&); NULL \ ), -#endif - // ---------------------------------------------------------------------------- // wxNotebook class itself // ---------------------------------------------------------------------------- @@ -264,23 +258,17 @@ typedef void (wxEvtHandler::*wxNotebookEventFunction)(wxNotebookEvent&); #if defined(__WXUNIVERSAL__) #include "wx/univ/notebook.h" #elif defined(__WXMSW__) - #ifdef __WIN16__ - #include "wx/generic/notebook.h" - #else - #include "wx/msw/notebook.h" - #endif + #include "wx/msw/notebook.h" #elif defined(__WXMOTIF__) #include "wx/generic/notebook.h" #elif defined(__WXGTK__) #include "wx/gtk/notebook.h" -#elif defined(__WXQT__) - #include "wx/qt/notebook.h" #elif defined(__WXMAC__) #include "wx/mac/notebook.h" +#elif defined(__WXCOCOA__) + #include "wx/generic/notebook.h" #elif defined(__WXPM__) #include "wx/os2/notebook.h" -#elif defined(__WXSTUBS__) - #include "wx/stubs/notebook.h" #endif #endif // wxUSE_NOTEBOOK