| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: bookctrl.h
- // Purpose: interface of wxBookCtrlBase
- // Author: wxWidgets team
- // 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
- A book control is a convenient way of displaying multiple pages of information,
- displayed one page at a time. wxWidgets has five variants of this control:
- @li wxChoicebook: controlled by a wxChoice
- @li wxListbook: controlled by a wxListCtrl
- @li wxNotebook: uses a row of tabs
- @li wxTreebook: controlled by a wxTreeCtrl
- @li wxToolbook: controlled by a wxToolBar
- This abstract class is the parent of all these book controls, and provides
- their basic interface.
- This is a pure virtual class so you cannot allocate it directly.
- @library{wxcore}
- @category{bookctrl}
- @see @ref overview_bookctrl
- */
- class wxBookCtrlBase : public wxControl, public wxWithImages
- {
- public:
- enum
- {
- /// Symbolic constant indicating that no image should be used.
- NO_IMAGE = -1
- };
- /**
- Default ctor.
- */
- wxBookCtrlBase();
- /**
- Constructs the book control with the given parameters.
- See Create() for two-step construction.
- */
- wxBookCtrlBase(wxWindow *parent,
- wxWindowID winid,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = 0,
- const wxString& name = wxEmptyString);
- /**
- Constructs the book control with the given parameters.
- */
- bool Create(wxWindow *parent,
- wxWindowID winid,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = 0,
- const wxString& name = wxEmptyString);
- /**
- @name Image list functions
- Each page may have an attached image.
- The functions of this group manipulate that image.
- */
- //@{
- /**
- Returns the image index for the given page.
- */
- 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) = 0;
- //@}
- /**
- @name Page text functions
- Each page has a text string attached.
- The functions of this group manipulate that text.
- */
- //@{
- /**
- Returns the string for the given page.
- */
- virtual wxString GetPageText(size_t nPage) const = 0;
- /**
- Sets the text for the given page.
- */
- virtual bool SetPageText(size_t page, const wxString& text) = 0;
- //@}
- /**
- @name Selection functions
- The functions of this group manipulate the selection.
- */
- //@{
- /**
- Returns the currently selected page, or @c wxNOT_FOUND if none was selected.
- Note that this method may return either the previously or newly
- selected page when called from the @c EVT_BOOKCTRL_PAGE_CHANGED handler
- depending on the platform and so wxBookCtrlEvent::GetSelection should be
- used instead in this case.
- */
- virtual int GetSelection() const = 0;
- /**
- Returns the currently selected page or @NULL.
- */
- wxWindow* GetCurrentPage() const;
- /**
- Sets the selection to the given page, returning the previous selection.
- 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) = 0;
- /**
- Cycles through the tabs.
- The call to this function generates the page changing events.
- */
- void AdvanceSelection(bool forward = true);
- /**
- Changes the selection to the given page, returning the previous selection.
- 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
- */
- int FindPage(const wxWindow* page) const;
- //@}
- /**
- Sets the width and height of the pages.
- @note This method is currently not implemented for wxGTK.
- */
- virtual void SetPageSize(const wxSize& size);
- /**
- 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 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.
- */
- virtual int HitTest(const wxPoint& pt, long* flags = NULL) const;
- /**
- @name Page management functions
- Functions for adding/removing pages from this control.
- */
- //@{
- /**
- 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
- 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 book control.
- @see InsertPage()
- */
- virtual bool AddPage(wxWindow* page, const wxString& text,
- bool select = false, int imageId = NO_IMAGE);
- /**
- Deletes all pages.
- */
- virtual bool DeleteAllPages();
- /**
- Deletes the specified page, and the associated window.
- The call to this function generates the page changing events.
- */
- virtual bool DeletePage(size_t page);
- /**
- 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 book control.
- @see AddPage()
- */
- virtual bool InsertPage(size_t index,
- wxWindow* page,
- const wxString& text,
- bool select = false,
- int imageId = NO_IMAGE) = 0;
- /**
- Deletes the specified page, without deleting the associated window.
- */
- virtual bool RemovePage(size_t page);
- /**
- Returns the number of pages in the control.
- */
- virtual size_t GetPageCount() const;
- /**
- Returns the window at the given page position.
- */
- wxWindow* GetPage(size_t page) const;
- //@}
- /*
- other functions which may be worth documenting:
- // geometry
- // --------
- // calculate the size of the control from the size of its page
- virtual wxSize CalcSizeFromPage(const wxSize& sizePage) const = 0;
- // get/set size of area between book control area and page area
- unsigned int GetInternalBorder() const { return m_internalBorder; }
- void SetInternalBorder(unsigned int border) { m_internalBorder = border; }
- // Sets/gets the margin around the controller
- void SetControlMargin(int margin) { m_controlMargin = margin; }
- int GetControlMargin() const { return m_controlMargin; }
- // returns true if we have wxBK_TOP or wxBK_BOTTOM style
- bool IsVertical() const { return HasFlag(wxBK_BOTTOM | wxBK_TOP); }
- // set/get option to shrink to fit current page
- void SetFitToCurrentPage(bool fit) { m_fitToCurrentPage = fit; }
- bool GetFitToCurrentPage() const { return m_fitToCurrentPage; }
- // returns the sizer containing the control, if any
- wxSizer* GetControlSizer() const { return m_controlSizer; }
- // we do have multiple pages
- virtual bool HasMultiplePages() const { return true; }
- // we don't want focus for ourselves
- virtual bool AcceptsFocus() const { return false; }
- // returns true if the platform should explicitly apply a theme border
- virtual bool CanApplyThemeBorder() const { return false; }
- */
- };
- /**
- wxBookCtrl is defined to one of the 'real' book controls.
- See @ref overview_bookctrl for more info.
- */
- #define wxBookCtrl TheBestBookCtrlForTheCurrentPlatform
- /**
- @class wxBookCtrlEvent
- This class represents the events generated by book controls (wxNotebook,
- 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
- with wxBookCtrlEvent::GetOldSelection) and to veto the page change by calling
- wxNotifyEvent::Veto if, for example, the current values in the controls
- of the old page are invalid.
- The PAGE_CHANGED events are sent after the page has been changed and the
- program cannot veto it any more, it just informs it about the page change.
- To summarize, if the program is interested in validating the page values
- before allowing the user to change it, it should process the PAGE_CHANGING
- event, otherwise PAGE_CHANGED is probably enough. In any case, it is
- probably unnecessary to process both events at once.
- @library{wxcore}
- @category{events,bookctrl}
- @see wxNotebook, wxListbook, wxChoicebook, wxTreebook, wxToolbook, wxAuiNotebook
- */
- class wxBookCtrlEvent : public wxNotifyEvent
- {
- public:
- /**
- Constructor (used internally by wxWidgets only).
- */
- wxBookCtrlEvent(wxEventType eventType = wxEVT_NULL, int id = 0,
- int sel = wxNOT_FOUND, int oldSel = wxNOT_FOUND);
- /**
- Returns the page that was selected before the change, @c wxNOT_FOUND if
- none was selected.
- */
- int GetOldSelection() const;
- /**
- Returns the currently selected page, or @c wxNOT_FOUND if none was
- selected.
- @note under Windows, GetSelection() will return the same value as
- GetOldSelection() when called from the @c EVT_BOOKCTRL_PAGE_CHANGING
- handler and not the page which is going to be selected.
- */
- int GetSelection() const;
- /**
- Sets the id of the page selected before the change.
- */
- void SetOldSelection(int page);
- /**
- Sets the selection member variable.
- */
- void SetSelection(int page);
- };
|