--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name: treebook.h
+// Purpose: interface of wxTreebookEvent
+// Author: wxWidgets team
+// RCS-ID: $Id$
+// Licence: wxWindows license
+/////////////////////////////////////////////////////////////////////////////
+
+/**
+ @class wxTreebookEvent
+ @wxheader{treebook.h}
+
+ This class represents the events generated by a treebook control: currently,
+ there are four of them. The EVT_TREEBOOK_PAGE_CHANGING() and
+ EVT_TREEBOOK_PAGE_CHANGED() - have exactly the same behaviour as
+ wxNotebookEvent.
+
+ The other two EVT_TREEBOOK_NODE_COLLAPSED() and EVT_TREEBOOK_NODE_EXPANDED()
+ are triggered when page node in the tree control is collapsed/expanded. The
+ page index could be retreived by calling GetSelection().
+
+ @beginEventTable{wxTreebookEvent}
+ @event{EVT_TREEBOOK_PAGE_CHANGED(id, func)}
+ The page selection was changed. Processes a @c
+ wxEVT_COMMAND_TREEBOOK_PAGE_CHANGED event.
+ @event{EVT_TREEBOOK_PAGE_CHANGING(id, func)}
+ The page selection is about to be changed. Processes a @c
+ wxEVT_COMMAND_TREEBOOK_PAGE_CHANGING event. This event can be @ref
+ wxNotifyEvent::Veto() "vetoed".
+ @event{EVT_TREEBOOK_NODE_COLLAPSED(id, func)}
+ The page node is going to be collapsed. Processes a @c
+ wxEVT_COMMAND_TREEBOOK_NODE_COLLAPSED event.
+ @event{EVT_TREEBOOK_NODE_EXPANDED(id, func)}
+ The page node is going to be expanded. Processes a @c
+ wxEVT_COMMAND_TREEBOOK_NODE_EXPANDED event.
+ @endEventTable
+
+ @library{wxcore}
+ @category{events}
+
+ @see wxTreebook, wxNotebookEvent
+*/
+class wxTreebookEvent : public wxNotifyEvent
+{
+public:
+ /**
+ @see wxNotebookEvent
+ */
+ wxTreebookEvent(wxEventType commandType = wxEVT_NULL, int id = 0,
+ int nSel = wxNOT_FOUND,
+ int nOldSel = 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.
+
+ @see wxNotebookEvent::GetSelection()
+ */
+ int GetSelection() const;
+};
+
+
+
+/**
+ @class wxTreebook
+ @wxheader{treebook.h}
+
+ This class is an extension of the wxNotebook class that allows a tree
+ structured set of pages to be shown in a control. A classic example is a
+ netscape preferences dialog that shows a tree of preference sections on
+ the left and select section page on the right.
+
+ To use the class simply create it and populate with pages using
+ InsertPage(), InsertSubPage(), AddPage(), AddSubPage().
+
+ If your tree is no more than 1 level in depth then you could simply use
+ AddPage() and AddSubPage() to sequentially populate your tree by adding at
+ every step a page or a subpage to the end of the tree.
+
+ @beginEventTable{wxTreebookEvent}
+ @event{EVT_TREEBOOK_PAGE_CHANGED(id, func)}
+ The page selection was changed. Processes a @c
+ wxEVT_COMMAND_TREEBOOK_PAGE_CHANGED event.
+ @event{EVT_TREEBOOK_PAGE_CHANGING(id, func)}
+ The page selection is about to be changed. Processes a @c
+ wxEVT_COMMAND_TREEBOOK_PAGE_CHANGING event. This event can be @ref
+ wxNotifyEvent::Veto() "vetoed".
+ @event{EVT_TREEBOOK_NODE_COLLAPSED(id, func)}
+ The page node is going to be collapsed. Processes a @c
+ wxEVT_COMMAND_TREEBOOK_NODE_COLLAPSED event.
+ @event{EVT_TREEBOOK_NODE_EXPANDED(id, func)}
+ The page node is going to be expanded. Processes a @c
+ wxEVT_COMMAND_TREEBOOK_NODE_EXPANDED event.
+ @endEventTable
+
+ @library{wxcore}
+ @category{miscwnd}
+
+ @see wxTreebookEvent, wxNotebook, wxTreeCtrl, wxImageList,
+ @ref overview_bookctrl, @ref page_samples_notebook
+*/
+class wxTreebook : public wxBookCtrlBase
+{
+public:
+ /**
+ Default constructor.
+ */
+ wxTreebook();
+
+ /**
+ Creates an empty wxTreebook.
+
+ @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).
+ */
+ wxTreebook(wxWindow* parent, wxWindowID id,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxBK_DEFAULT,
+ const wxString& name = wxEmptyString);
+
+ /**
+ Destroys the wxTreebook object. Also deletes all the pages owned by the
+ control (inserted previously into it).
+ */
+ ~wxTreebook();
+
+ /**
+ Adds a new page. The page is placed at the topmost level after all other
+ pages. @NULL could be specified for page to create an empty page.
+ */
+ bool AddPage(wxWindow* page, const wxString& text,
+ bool bSelect = false,
+ int imageId = wxNOT_FOUND);
+
+ /**
+ Adds a new child-page to the last top-level page. @NULL could be
+ specified for page to create an empty page.
+ */
+ bool AddSubPage(wxWindow* page, const wxString& text,
+ bool bSelect = false,
+ int imageId = wxNOT_FOUND);
+
+ /**
+ 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 for more info.
+ */
+ int ChangeSelection(size_t page);
+
+ /**
+ Shortcut for @ref wxTreebook::ExpandNode() "ExpandNode"( @a pageId,
+ @false ).
+ */
+ bool CollapseNode(size_t pageId);
+
+ /**
+ Creates a treebook control. See wxTreebook::wxTreebook() for the
+ description of the parameters.
+ */
+ bool Create(wxWindow* parent, wxWindowID id,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxBK_DEFAULT,
+ const wxString& name = wxEmptyString);
+
+ /**
+ Deletes all pages inserted into the treebook. No event is generated.
+ */
+ bool DeleteAllPages();
+
+ /**
+ Deletes the page at the specified position and all its children. Could
+ trigger page selection change in a case when selected page is removed.
+ In that case its parent is selected (or the next page if no parent).
+ */
+ bool DeletePage(size_t pagePos);
+
+ /**
+ Expands (collapses) the @a pageId node. Returns the previous state. May
+ generate page changing events (if selected page is under the collapsed
+ branch, then its parent is autoselected).
+ */
+ bool ExpandNode(size_t pageId, bool expand = true);
+
+ /**
+ Returns the image index for the given page.
+ */
+ int GetPageImage(size_t n) const;
+
+ /**
+ Returns the parent page of the given one or @c wxNOT_FOUND if this is a
+ top-level page.
+ */
+ int GetPageParent(size_t page) const;
+
+ /**
+ Returns the string for the given page.
+ */
+ wxString GetPageText(size_t n) const;
+
+ /**
+ Returns the currently selected page, or @c wxNOT_FOUND if none was
+ selected.
+
+ @note This method may return either the previously or newly selected
+ page when called from the EVT_TREEBOOK_PAGE_CHANGED() handler
+ depending on the platform and so wxTreebookEvent::GetSelection()
+ should be used instead in this case.
+ */
+ int GetSelection() const;
+
+ /**
+ Inserts a new page just before the page indicated by @a pagePos. The new
+ page is placed before @a pagePos page and on the same level. @NULL could
+ be specified for page to create an empty page.
+ */
+ bool InsertPage(size_t pagePos, wxWindow* page,
+ const wxString& text,
+ bool bSelect = false,
+ int imageId = wxNOT_FOUND);
+
+ /**
+ Inserts a sub page under the specified page.
+
+ @NULL could be specified for page to create an empty page.
+ */
+ bool InsertSubPage(size_t pagePos, wxWindow* page,
+ const wxString& text,
+ bool bSelect = false,
+ int imageId = wxNOT_FOUND);
+
+ /**
+ Returns @true if the page represented by @a pageId is expanded.
+ */
+ bool IsNodeExpanded(size_t pageId) 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()
+ */
+ void SetImageList(wxImageList* imageList);
+
+ /**
+ Sets the image index for the given @a page. @a imageId is an index into
+ the image list which was set with SetImageList().
+ */
+ bool SetPageImage(size_t page, int imageId);
+
+ /**
+ Sets the @a text for the given @a page.
+ */
+ bool SetPageText(size_t page, const wxString& text);
+
+ /**
+ @deprecated Please use ChangeSelection() instead.
+
+ Sets the selection for the given page, returning the previous selection.
+
+ The call to this function generates page changing events.
+
+ @see GetSelection(), ChangeSelection()
+ */
+ int SetSelection(size_t n);
+};
+