]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/notebook.h
avoid infinite recursion for richtooltops, (hopefully) fixes #15070
[wxWidgets.git] / interface / wx / notebook.h
index 5325aea8099e366cd06920a7d1b9c1dad4b53fba..9abb37ba47907fd374bd36828d6fc99a8194709f 100644 (file)
@@ -3,9 +3,33 @@
 // Purpose:     interface of wxNotebook
 // Author:      wxWidgets team
 // RCS-ID:      $Id$
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
+enum
+{
+    wxNB_HITTEST_NOWHERE = wxBK_HITTEST_NOWHERE,
+    wxNB_HITTEST_ONICON  = wxBK_HITTEST_ONICON,
+    wxNB_HITTEST_ONLABEL = wxBK_HITTEST_ONLABEL,
+    wxNB_HITTEST_ONITEM  = wxBK_HITTEST_ONITEM,
+    wxNB_HITTEST_ONPAGE  = wxBK_HITTEST_ONPAGE
+};
+
+#define wxNB_DEFAULT          wxBK_DEFAULT
+#define wxNB_TOP              wxBK_TOP
+#define wxNB_BOTTOM           wxBK_BOTTOM
+#define wxNB_LEFT             wxBK_LEFT
+#define wxNB_RIGHT            wxBK_RIGHT
+
+#define wxNB_FIXEDWIDTH       0x0100
+#define wxNB_MULTILINE        0x0200
+#define wxNB_NOPAGETHEME      0x0400
+#define wxNB_FLAT             0x0800
+
+wxEventType wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED;
+wxEventType wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING;
+
+
 /**
     @class wxNotebook
 
@@ -13,8 +37,8 @@
     associated tabs.
 
     To use the class, create a wxNotebook object and call wxNotebook::AddPage
-    or wxNotebook::InsertPage, passing a window to be used as the page. Do not
-    explicitly delete the window for a page that is currently managed by
+    or wxNotebook::InsertPage, passing a window to be used as the page.
+    Do not explicitly delete the window for a page that is currently managed by
     wxNotebook.
 
     @b wxNotebookPage is a typedef for wxWindow.
            (Windows CE only) Show tabs in a flat style.
     @endStyleTable
 
+    The styles wxNB_LEFT, RIGHT and BOTTOM are not supported under
+    Microsoft Windows XP when using visual themes.
+
+    @beginEventEmissionTable{wxBookCtrlEvent}
+    @event{EVT_NOTEBOOK_PAGE_CHANGED(id, func)}
+        The page selection was changed.
+        Processes a @c wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED event.
+    @event{EVT_NOTEBOOK_PAGE_CHANGING(id, func)}
+        The page selection is about to be changed.
+        Processes a @c wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING event.
+        This event can be vetoed.
+    @endEventTable
+
+
+    @section notebook_bg Page backgrounds
+
+    On Windows XP, the default theme paints a gradient on the notebook's pages.
+    If you wish to suppress this theme, for aesthetic or performance reasons,
+    there are three ways of doing it.
+    You can use @c wxNB_NOPAGETHEME to disable themed drawing for a particular
+    notebook, you can call wxSystemOptions::SetOption to disable it for the
+    whole application, or you can disable it for individual pages by using
+    SetBackgroundColour().
+
+    To disable themed pages globally:
+    @code
+    wxSystemOptions::SetOption("msw.notebook.themed-background", 0);
+    @endcode
+
+    Set the value to 1 to enable it again.
+    To give a single page a solid background that more or less fits in with the
+    overall theme, use:
+    @code
+    wxColour col = notebook->GetThemeBackgroundColour();
+    if (col.IsOk())
+    {
+        page->SetBackgroundColour(col);
+    }
+    @endcode
+
+    On platforms other than Windows, or if the application is not using Windows
+    themes, GetThemeBackgroundColour() will return an uninitialised colour object,
+    and the above code will therefore work on all platforms.
+
+
     @library{wxcore}
-    @category{miscwnd}
+    @category{bookctrl}
+    @appearance{notebook}
 
-    @see wxBookCtrl, wxBookCtrlEvent, wxImageList,
-        @ref page_samples_notebook "Notebook Sample"
+    @see wxBookCtrl, wxBookCtrlEvent, wxImageList, @ref page_samples_notebook
 */
-class wxNotebook : public wxBookCtrl overview
+class wxNotebook : public wxBookCtrlBase
 {
 public:
 
@@ -70,7 +139,7 @@ public:
         @param style
             The window style. See wxNotebook.
         @param name
-            The name of the control (used only under Motif).
+            The name of the control.
     */
     wxNotebook(wxWindow* parent, wxWindowID id,
                const wxPoint& pos = wxDefaultPosition,
@@ -84,54 +153,8 @@ public:
     virtual ~wxNotebook();
 
     /**
-        Adds a new page.
-        The call to this function may generate the page changing events.
-
-        @param page
-            Specifies the new page.
-        @param text
-            Specifies the text for the new page.
-        @param select
-            Specifies whether the page should be selected.
-        @param imageId
-            Specifies the optional image index for the new page.
-
-        @return @true if successful, @false otherwise.
-
-        @remarks Do not delete the page, it will be deleted by the notebook.
-
-        @see InsertPage()
-    */
-    bool AddPage(wxNotebookPage* page, const wxString& text,
-                 bool select = false,
-                 int imageId = -1);
-
-    /**
-        Cycles through the tabs.
-        The call to this function generates the page changing events.
-    */
-    void AdvanceSelection(bool forward = true);
-
-    /**
-        Sets the image list for the page control and takes ownership of
-        the list.
-
-        @see wxImageList, SetImageList()
-    */
-    void AssignImageList(wxImageList* imageList);
-
-    /**
-        Changes the selection for the given page, returning the previous selection.
-        The call to this function does not generate the page changing events.
-        This is the only difference with SetSelection(). See
-        @ref overview_eventhandling_prog "User Generated Events"
-        for more infomation.
-    */
-    virtual int ChangeSelection(size_t page);
-
-    /**
-        Creates a notebook control. See wxNotebook() for a description
-        of the parameters.
+        Creates a notebook control.
+        See wxNotebook() for a description of the parameters.
     */
     bool Create(wxWindow* parent, wxWindowID id,
                 const wxPoint& pos = wxDefaultPosition,
@@ -139,122 +162,20 @@ public:
                 long style = 0,
                 const wxString& name = wxNotebookNameStr);
 
-    /**
-        Deletes all pages.
-    */
-    virtual bool DeleteAllPages();
-
-    /**
-        Deletes the specified page, and the associated window.
-        The call to this function generates the page changing events.
-    */
-    bool DeletePage(size_t page);
-
-    /**
-        Returns the currently selected notebook page or @NULL.
-    */
-    wxWindow* GetCurrentPage() const;
-
-    /**
-        Returns the associated image list.
-
-        @see wxImageList, SetImageList()
-    */
-    wxImageList* GetImageList() const;
-
-    /**
-        Returns the window at the given page position.
-    */
-    wxNotebookPage* GetPage(size_t page);
-
-    /**
-        Returns the number of pages in the notebook control.
-    */
-    size_t GetPageCount() const;
-
-    /**
-        Returns the image index for the given page.
-    */
-    virtual int GetPageImage(size_t nPage) const;
-
-    /**
-        Returns the string for the given page.
-    */
-    virtual wxString GetPageText(size_t nPage) const;
 
     /**
         Returns the number of rows in the notebook control.
     */
     virtual int GetRowCount() const;
 
-    /**
-        Returns the currently selected page, or -1 if none was selected.
-        Note that this method may return either the previously or newly
-        selected page when called from the @c EVT_NOTEBOOK_PAGE_CHANGED handler
-        depending on the platform and so wxBookCtrlEvent::GetSelection should be
-        used instead in this case.
-    */
-    virtual int GetSelection() const;
-
     /**
         If running under Windows and themes are enabled for the application, this
-        function
-        returns a suitable colour for painting the background of a notebook page, and
-        can be passed
-        to @c SetBackgroundColour. Otherwise, an uninitialised colour will be returned.
-    */
-    virtual wxColour GetThemeBackgroundColour() const;
+        function returns a suitable colour for painting the background of a notebook
+        page, and can be passed to SetBackgroundColour().
 
-    /**
-        Returns the index of the tab at the specified position or @c wxNOT_FOUND
-        if none. If @a flags parameter is non-@NULL, the position of the point
-        inside the tab is returned as well.
-
-        @param pt
-            Specifies the point for the hit test.
-        @param flags
-            Return value for detailed information. One of the following values:
-            <TABLE><TR><TD>wxBK_HITTEST_NOWHERE</TD>
-            <TD>There was no tab under this point.</TD></TR>
-            <TR><TD>wxBK_HITTEST_ONICON</TD>
-            <TD>The point was over an icon (currently wxMSW only).</TD></TR>
-            <TR><TD>wxBK_HITTEST_ONLABEL</TD>
-            <TD>The point was over a label (currently wxMSW only).</TD></TR>
-            <TR><TD>wxBK_HITTEST_ONITEM</TD>
-            <TD>The point was over an item, but not on the label or icon.</TD></TR>
-            <TR><TD>wxBK_HITTEST_ONPAGE</TD>
-            <TD>The point was over a currently selected page, not over any tab.
-            Note that this flag is present only if wxNOT_FOUND is returned.</TD></TR>
-            </TABLE>
-@return Returns the zero-based tab index or wxNOT_FOUND if there is no
-                 tab at the specified position.
+        Otherwise, an uninitialised colour will be returned.
     */
-    virtual int HitTest(const wxPoint& pt, long* flags = NULL) const;
-
-    /**
-        Inserts a new page at the specified position.
-
-        @param index
-            Specifies the position for the new page.
-        @param page
-            Specifies the new page.
-        @param text
-            Specifies the text for the new page.
-        @param select
-            Specifies whether the page should be selected.
-        @param imageId
-            Specifies the optional image index for the new page.
-
-        @return @true if successful, @false otherwise.
-
-        @remarks Do not delete the page, it will be deleted by the notebook.
-
-        @see AddPage()
-    */
-    bool InsertPage(size_t index, wxNotebookPage* page,
-                    const wxString& text,
-                    bool select = false,
-                    int imageId = -1);
+    virtual wxColour GetThemeBackgroundColour() const;
 
     /**
         An event handler function, called when the page selection is changed.
@@ -263,50 +184,23 @@ public:
     */
     void OnSelChange(wxBookCtrlEvent& event);
 
-    /**
-        Deletes the specified page, without deleting the associated window.
-    */
-    bool RemovePage(size_t page);
-
-    /**
-        Sets the image list for the page control. It does not take
-        ownership of the image list, you must delete it yourself.
-
-        @see wxImageList, AssignImageList()
-    */
-    void SetImageList(wxImageList* imageList);
-
     /**
         Sets the amount of space around each page's icon and label, in pixels.
+
         @note The vertical padding cannot be changed in wxGTK.
     */
-    void SetPadding(const wxSize& padding);
+    virtual void SetPadding(const wxSize& padding);
 
-    /**
-        Sets the image index for the given page. @a image is an index into
-        the image list which was set with SetImageList().
-    */
+    // implementations of pure virtuals
+    virtual int GetPageImage(size_t nPage) const;
     virtual bool SetPageImage(size_t page, int image);
-
-    /**
-        Sets the width and height of the pages.
-        @note This method is currently not implemented for wxGTK.
-    */
-    virtual void SetPageSize(const wxSize& size);
-
-    /**
-        Sets the text for the given page.
-    */
+    virtual wxString GetPageText(size_t nPage) const;
     virtual bool SetPageText(size_t page, const wxString& text);
-
-    /**
-        Sets the selection for the given page, returning the previous selection.
-        The call to this function generates the page changing events.
-        This function is deprecated and should not be used in new code. Please use the
-        ChangeSelection() function instead.
-
-        @see GetSelection()
-    */
+    virtual int GetSelection() const;
     virtual int SetSelection(size_t page);
+    virtual int ChangeSelection(size_t page);
+    virtual bool InsertPage(size_t index, wxWindow * page, const wxString & text,
+                            bool select = false, int imageId = NO_IMAGE);
+
 };