X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/22f3361e1cf25c52a2da8fdfc5cb081809e18fb9..408ac1b8cf965067dbc0c36beabac0c8a5769501:/include/wx/notebook.h diff --git a/include/wx/notebook.h b/include/wx/notebook.h index 0afe7a1f8b..aac71c2032 100644 --- a/include/wx/notebook.h +++ b/include/wx/notebook.h @@ -28,6 +28,19 @@ #include "wx/dynarray.h" #include "wx/imaglist.h" +// ---------------------------------------------------------------------------- +// 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 // ---------------------------------------------------------------------------- @@ -35,7 +48,7 @@ // 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") @@ -67,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]; } @@ -107,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 // ---------- @@ -144,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,6 +176,8 @@ public: protected: // remove the page and return a pointer to it 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(); @@ -196,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) @@ -216,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, \ @@ -256,8 +251,6 @@ typedef void (wxEvtHandler::*wxNotebookEventFunction)(wxNotebookEvent&); NULL \ ), -#endif - // ---------------------------------------------------------------------------- // wxNotebook class itself // ---------------------------------------------------------------------------- @@ -265,21 +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(__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