]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/bookctrl.h
Recognize VC12 (a.k.a. MSVS 2013) and define __VISUALC12__ for it.
[wxWidgets.git] / interface / wx / bookctrl.h
index f62f142eea145a3b32418076577abc276167fceb..27f241600f8fcffd602fa35030ed78267d568148 100644 (file)
@@ -3,9 +3,45 @@
 // Purpose:     interface of wxBookCtrlBase
 // Author:      wxWidgets team
 // RCS-ID:      $Id$
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
+/**
+    Bit flags returned by wxBookCtrl::HitTest().
+
+    Notice that wxOSX currently only returns wxBK_HITTEST_ONLABEL or
+    wxBK_HITTEST_NOWHERE and never the other values, so you should only test
+    for these two in the code that should be portable under OS X.
+ */
+enum
+{
+    /// No tab at the specified point.
+    wxBK_HITTEST_NOWHERE = 1,
+
+    /// The point is over an icon.
+    wxBK_HITTEST_ONICON  = 2,
+
+    /// The point is over a tab label.
+    wxBK_HITTEST_ONLABEL = 4,
+
+    /// The point if over a tab item but not over its icon or label.
+    wxBK_HITTEST_ONITEM  = wxBK_HITTEST_ONICON | wxBK_HITTEST_ONLABEL,
+
+    /// The point is over the page area.
+    wxBK_HITTEST_ONPAGE  = 8
+};
+
+/**
+   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)
+
+
 /**
     @class wxBookCtrlBase
 
     This is a pure virtual class so you cannot allocate it directly.
 
     @library{wxcore}
-    @category{miscwnd}
+    @category{bookctrl}
 
     @see @ref overview_bookctrl
 */
-class wxBookCtrlBase : public wxControl
+class wxBookCtrlBase : public wxControl, public wxWithImages
 {
 public:
+    enum
+    {
+        /// Symbolic constant indicating that no image should be used.
+        NO_IMAGE = -1
+    };
+
     /**
         Default ctor.
     */
@@ -65,38 +107,17 @@ public:
     */
     //@{
 
-    /**
-        Sets the image list for the page control and takes ownership of the list.
-
-        @see wxImageList, SetImageList()
-    */
-    void AssignImageList(wxImageList* imageList);
-
-    /**
-        Returns the associated image list.
-
-        @see wxImageList, SetImageList()
-    */
-    wxImageList* GetImageList() const;
 
     /**
         Returns the image index for the given page.
     */
-    virtual int GetPageImage(size_t nPage) const;
-
-    /**
-        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()
-    */
-    virtual void SetImageList(wxImageList* imageList);
+    virtual int GetPageImage(size_t nPage) const = 0;
 
     /**
         Sets the image index for the given page. @a image is an index into
         the image list which was set with SetImageList().
     */
-    virtual bool SetPageImage(size_t page, int image);
+    virtual bool SetPageImage(size_t page, int image) = 0;
 
     //@}
 
@@ -146,16 +167,15 @@ public:
     wxWindow* GetCurrentPage() const;
 
     /**
-        Sets the selection for the given page, returning the previous selection.
-        The call to this function generates the page changing events.
+        Sets the selection to the given page, returning the previous selection.
 
-        @deprecated
-        This function is deprecated and should not be used in new code.
-        Please use the ChangeSelection() function instead.
+        Notice that the call to this function generates the page changing
+        events, use the ChangeSelection() function if you don't want these
+        events to be generated.
 
         @see GetSelection()
     */
-    virtual int SetSelection(size_t page);
+    virtual int SetSelection(size_t page) = 0;
 
     /**
         Cycles through the tabs.
@@ -164,13 +184,25 @@ public:
     void AdvanceSelection(bool forward = true);
 
     /**
-        Changes the selection for the given page, returning the previous selection.
+        Changes the selection to 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 for more infomation.
+        This function behaves as SetSelection() but does @em not generate the
+        page changing events.
+
+        See @ref overview_events_prog for more information.
+    */
+    virtual int ChangeSelection(size_t page) = 0;
+
+    /**
+        Returns the index of the specified tab window or @c wxNOT_FOUND
+        if not found.
+
+        @param page One of the control pages.
+        @return The zero-based tab index or @c wxNOT_FOUND if not found.
+
+        @since 2.9.5
     */
-    virtual int ChangeSelection(size_t page);
+    int FindPage(const wxWindow* page) const;
 
     //@}
 
@@ -191,19 +223,10 @@ public:
         @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 more details about the point, see returned value is a
+            combination of ::wxBK_HITTEST_NOWHERE, ::wxBK_HITTEST_ONICON,
+            ::wxBK_HITTEST_ONLABEL, ::wxBK_HITTEST_ONITEM,
+            ::wxBK_HITTEST_ONPAGE.
 
         @return Returns the zero-based tab index or @c wxNOT_FOUND if there is no
                 tab at the specified position.
@@ -221,6 +244,10 @@ public:
 
     /**
         Adds a new page.
+
+        The page must have the book control itself as the parent and must not
+        have been added to this control previously.
+
         The call to this function may generate the page changing events.
 
         @param page
@@ -238,10 +265,8 @@ public:
 
         @see InsertPage()
     */
-    bool AddPage(wxWindow* page,
-                 const wxString& text,
-                 bool select = false,
-                 int imageId = wxNOT_FOUND);
+    virtual bool AddPage(wxWindow* page, const wxString& text,
+                         bool select = false, int imageId = NO_IMAGE);
 
     /**
         Deletes all pages.
@@ -252,7 +277,7 @@ public:
         Deletes the specified page, and the associated window.
         The call to this function generates the page changing events.
     */
-    bool DeletePage(size_t page);
+    virtual bool DeletePage(size_t page);
 
     /**
         Inserts a new page at the specified position.
@@ -278,22 +303,22 @@ public:
                             wxWindow* page,
                             const wxString& text,
                             bool select = false,
-                            int imageId = wxNOT_FOUND) = 0;
+                            int imageId = NO_IMAGE) = 0;
 
     /**
         Deletes the specified page, without deleting the associated window.
     */
-    bool RemovePage(size_t page);
+    virtual bool RemovePage(size_t page);
 
     /**
         Returns the number of pages in the control.
     */
-    size_t GetPageCount() const;
+    virtual size_t GetPageCount() const;
 
     /**
         Returns the window at the given page position.
     */
-    wxWindow* GetPage(size_t page);
+    wxWindow* GetPage(size_t page) const;
 
     //@}
 
@@ -348,7 +373,7 @@ public:
     @class wxBookCtrlEvent
 
     This class represents the events generated by book controls (wxNotebook,
-    wxListbook, wxChoicebook, wxTreebook).
+    wxListbook, wxChoicebook, wxTreebook, wxAuiNotebook).
 
     The PAGE_CHANGING events are sent before the current page is changed.
     It allows the program to examine the current page (which can be retrieved
@@ -365,9 +390,9 @@ public:
     probably unnecessary to process both events at once.
 
     @library{wxcore}
-    @category{events}
+    @category{events,bookctrl}
 
-    @see wxNotebook, wxListbook, wxChoicebook, wxTreebook, wxToolbook
+    @see wxNotebook, wxListbook, wxChoicebook, wxTreebook, wxToolbook, wxAuiNotebook
 */
 class wxBookCtrlEvent : public wxNotifyEvent
 {