wxWidgets/interface/wx/treebook.h

294 lines
9.5 KiB
Objective-C

/////////////////////////////////////////////////////////////////////////////
// Name: treebook.h
// Purpose: interface of wxTreebookEvent
// Author: wxWidgets team
// RCS-ID: $Id$
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
/**
@class wxTreebookEvent
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
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);
};