///////////////////////////////////////////////////////////////////////////// // Name: notebook.h // Purpose: interface of wxNotebook // Author: wxWidgets team // RCS-ID: $Id$ // Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// /** @class wxNotebook This class represents a notebook control, which manages multiple windows with 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 wxNotebook. @b wxNotebookPage is a typedef for wxWindow. @beginStyleTable @style{wxNB_TOP} Place tabs on the top side. @style{wxNB_LEFT} Place tabs on the left side. @style{wxNB_RIGHT} Place tabs on the right side. @style{wxNB_BOTTOM} Place tabs under instead of above the notebook pages. @style{wxNB_FIXEDWIDTH} (Windows only) All tabs will have same width. @style{wxNB_MULTILINE} (Windows only) There can be several rows of tabs. @style{wxNB_NOPAGETHEME} (Windows only) Display a solid colour on notebook pages, and not a gradient, which can reduce performance. @style{wxNB_FLAT} (Windows CE only) Show tabs in a flat style. @endStyleTable @library{wxcore} @category{miscwnd} @see wxBookCtrl, wxBookCtrlEvent, wxImageList, @ref page_samples_notebook "Notebook Sample" */ class wxNotebook : public wxBookCtrl overview { public: /** Constructs a notebook control. */ wxNotebook(); /** Constructs a notebook control. Note that sometimes you can reduce flicker by passing the wxCLIP_CHILDREN window style. @param parent The parent window. Must be non-@NULL. @param id The window identifier. @param pos The window position. @param size The window size. @param style The window style. See wxNotebook. @param name The name of the control (used only under Motif). */ wxNotebook(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxString& name = wxNotebookNameStr); /** Destroys the wxNotebook object. */ 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. */ bool Create(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, 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; /** 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:
wxBK_HITTEST_NOWHERE | There was no tab under this point. |
wxBK_HITTEST_ONICON | The point was over an icon (currently wxMSW only). |
wxBK_HITTEST_ONLABEL | The point was over a label (currently wxMSW only). |
wxBK_HITTEST_ONITEM | The point was over an item, but not on the label or icon. |
wxBK_HITTEST_ONPAGE | The point was over a currently selected page, not over any tab. Note that this flag is present only if wxNOT_FOUND is returned. |