X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1e6feb95a79834836e88143b15d9f424ebe79621..01c6f3724ed22b2b2a0851b358532ed5c37b1bb0:/include/wx/notebook.h?ds=inline diff --git a/include/wx/notebook.h b/include/wx/notebook.h index efec6fc928..ec0dfa5ba3 100644 --- a/include/wx/notebook.h +++ b/include/wx/notebook.h @@ -12,6 +12,10 @@ #ifndef _WX_NOTEBOOK_H_BASE_ #define _WX_NOTEBOOK_H_BASE_ +#if defined(__GNUG__) && !defined(__APPLE__) + #pragma interface "notebookbase.h" +#endif + // ---------------------------------------------------------------------------- // headers // ---------------------------------------------------------------------------- @@ -22,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 @@ -46,7 +62,7 @@ public: // ctor wxNotebookBase() { - m_imageList = NULL; + Init(); } // quasi ctor @@ -57,11 +73,14 @@ public: long style = 0, const wxString& name = wxNOTEBOOK_NAME); + // dtor + virtual ~wxNotebookBase(); + // accessors // --------- // 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]; } @@ -75,10 +94,10 @@ public: // image list stuff: each page may have an image associated with it (all // images belong to the same image list) - virtual void SetImageList(wxImageList* imageList) - { - m_imageList = imageList; - } + virtual void SetImageList(wxImageList* imageList); + + // as SetImageList() but we will delete the image list ourselves + void AssignImageList(wxImageList* imageList); // get pointer (may be NULL) to the associated image list wxImageList* GetImageList() const { return m_imageList; } @@ -101,33 +120,13 @@ 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) - { - // this was just taken from wxNotebookSizer::CalcMin() and is, of - // course, totally bogus - just like the original code was - wxSize sizeTotal = sizePage; - if ( HasFlag(wxNB_LEFT) || HasFlag(wxNB_RIGHT) ) - sizeTotal.x += 90; - else - sizeTotal.y += 40; - - return sizeTotal; - } + virtual wxSize CalcSizeFromPage(const wxSize& sizePage) const; // operations // ---------- // remove one page from the notebook and delete it - virtual bool DeletePage(int nPage) - { - wxNotebookPage *page = DoRemovePage(nPage); - if ( !page ) - return FALSE; - - delete page; - - return TRUE; - } + virtual bool DeletePage(int nPage); // remove one page from the notebook, without deleting it virtual bool RemovePage(int nPage) { return DoRemovePage(nPage) != NULL; } @@ -158,6 +157,13 @@ 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& pt, long *flags = NULL) const + { + return wxNOT_FOUND; + } + // cycle thru the tabs void AdvanceSelection(bool forward = TRUE) { @@ -168,34 +174,21 @@ 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; - // get the next page wrapping if we reached the end - int GetNextPage(bool forward) const - { - int nPage; - - int nMax = GetPageCount(); - if ( nMax-- ) // decrement it to get the last valid index - { - int nSel = GetSelection(); + // common part of all ctors + void Init(); - // change selection wrapping if it becomes invalid - nPage = forward ? nSel == nMax ? 0 - : nSel + 1 - : nSel == 0 ? nMax - : nSel - 1; - } - else // notebook is empty, no next page - { - nPage = -1; - } + // get the next page wrapping if we reached the end + int GetNextPage(bool forward) const; - return nPage; - } + 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 - wxImageList *m_imageList; // we can have an associated image list - wxArrayPages m_pages; // array of pages + DECLARE_NO_COPY_CLASS(wxNotebookBase) }; // ---------------------------------------------------------------------------- @@ -232,12 +225,6 @@ private: // 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) @@ -245,28 +232,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, \ @@ -285,8 +250,6 @@ typedef void (wxEvtHandler::*wxNotebookEventFunction)(wxNotebookEvent&); NULL \ ), -#endif - // ---------------------------------------------------------------------------- // wxNotebook class itself // ---------------------------------------------------------------------------- @@ -294,23 +257,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