+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Name: treectrl.tex
+%% Purpose: wxTreeCtrl documentation
+%% Author: wxWidgets Team
+%% Modified by:
+%% Created:
+%% RCS-ID: $Id$
+%% Copyright: (c) wxWidgets Team
+%% License: wxWindows license
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
\section{\class{wxTreeCtrl}}\label{wxtreectrl}
A tree control presents information as a hierarchy, with items that may be expanded
-to show further items. Items in a tree control are referenced by long integer handles.
+to show further items. Items in a tree control are referenced by wxTreeItemId handles,
+which may be tested for validity by calling \helpref{wxTreeItemId::IsOk}{wxtreeitemidisok}.
To intercept events from a tree control, use the event table macros described in \helpref{wxTreeEvent}{wxtreeevent}.
\helpref{wxEvtHandler}{wxevthandler}\\
\helpref{wxObject}{wxobject}
+\wxheading{Include files}
+
+<wx/treectrl.h>
+
+\wxheading{Library}
+
+\helpref{wxCore}{librarieslist}
+
\wxheading{Window styles}
\twocolwidtha{5cm}
\begin{twocollist}\itemsep=0pt
-\twocolitem{\windowstyle{wxTR\_HAS\_BUTTONS}}{Use this style to show + and - buttons to the
-left of parent items.}
-\twocolitem{\windowstyle{wxTR\_EDIT\_LABELS}}{Use this style if you wish the user to be
-able to edit labels in the tree control.}
+\twocolitem{\windowstyle{wxTR\_EDIT\_LABELS}}{Use this style
+if you wish the user to be able to edit labels in the tree control.}
+\twocolitem{\windowstyle{wxTR\_NO\_BUTTONS}}{For convenience
+to document that no buttons are to be drawn.}
+\twocolitem{\windowstyle{wxTR\_HAS\_BUTTONS}}{Use this style
+to show + and - buttons to the left of parent items.}
+\twocolitem{\windowstyle{wxTR\_NO\_LINES}}{Use this style
+to hide vertical level connectors.}
+\twocolitem{\windowstyle{wxTR\_FULL\_ROW\_HIGHLIGHT}}{Use this style to have the background
+colour and the selection highlight extend over the entire horizontal
+row of the tree control window. (This flag is ignored under Windows unless you
+specify wxTR\_NO\_LINES as well.) }
+\twocolitem{\windowstyle{wxTR\_LINES\_AT\_ROOT}}{Use this style
+to show lines between root nodes.
+Only applicable if wxTR\_HIDE\_ROOT is set and wxTR\_NO\_LINES is not set.}
+\twocolitem{\windowstyle{wxTR\_HIDE\_ROOT}}{Use this style
+to suppress the display of the root node,
+effectively causing the first-level nodes
+to appear as a series of root nodes.}
+\twocolitem{\windowstyle{wxTR\_ROW\_LINES}}{Use this style
+to draw a contrasting border between displayed rows.}
+\twocolitem{\windowstyle{wxTR\_HAS\_VARIABLE\_ROW\_HEIGHT}}{Use this style
+to cause row heights to be just big enough to fit the content.
+If not set, all rows use the largest row height.
+The default is that this flag is unset.
+Generic only.}
+\twocolitem{\windowstyle{wxTR\_SINGLE}}{For convenience
+to document that only one item may be selected at a time.
+Selecting another item causes the current selection, if any,
+to be deselected. This is the default.}
+\twocolitem{\windowstyle{wxTR\_MULTIPLE}}{Use this style
+to allow a range of items to be selected.
+If a second range is selected, the current range, if any, is deselected.}
+\twocolitem{\windowstyle{wxTR\_DEFAULT\_STYLE}}{The set of flags that are
+closest to the defaults for the native control for a particular toolkit.}
\end{twocollist}
See also \helpref{window styles overview}{windowstyles}.
\begin{twocollist}\itemsep=0pt
\twocolitem{{\bf EVT\_TREE\_BEGIN\_DRAG(id, func)}}{Begin dragging with the left mouse button.}
\twocolitem{{\bf EVT\_TREE\_BEGIN\_RDRAG(id, func)}}{Begin dragging with the right mouse button.}
-\twocolitem{{\bf EVT\_TREE\_BEGIN\_LABEL\_EDIT(id, func)}}{Begin editing a label.}
-\twocolitem{{\bf EVT\_TREE\_END\_LABEL\_EDIT(id, func)}}{Finish editing a label.}
+\twocolitem{{\bf EVT\_TREE\_END\_DRAG(id, func)}}{End dragging with the left or right mouse button.}
+\twocolitem{{\bf EVT\_TREE\_BEGIN\_LABEL\_EDIT(id, func)}}{Begin editing a label. This can be prevented by calling \helpref{Veto()}{wxnotifyeventveto}.}
+\twocolitem{{\bf EVT\_TREE\_END\_LABEL\_EDIT(id, func)}}{Finish editing a label. This can be prevented by calling \helpref{Veto()}{wxnotifyeventveto}.}
\twocolitem{{\bf EVT\_TREE\_DELETE\_ITEM(id, func)}}{Delete an item.}
\twocolitem{{\bf EVT\_TREE\_GET\_INFO(id, func)}}{Request information from the application.}
\twocolitem{{\bf EVT\_TREE\_SET\_INFO(id, func)}}{Information is being supplied.}
-\twocolitem{{\bf EVT\_TREE\_ITEM\_EXPANDED(id, func)}}{Parent has been expanded.}
-\twocolitem{{\bf EVT\_TREE\_ITEM\_EXPANDING(id, func)}}{Parent is being expanded.}
+\twocolitem{{\bf EVT\_TREE\_ITEM\_ACTIVATED(id, func)}}{The item has been activated, i.e. chosen by double clicking it with mouse or from keyboard}
+\twocolitem{{\bf EVT\_TREE\_ITEM\_COLLAPSED(id, func)}}{The item has been collapsed.}
+\twocolitem{{\bf EVT\_TREE\_ITEM\_COLLAPSING(id, func)}}{The item is being collapsed. This can be prevented by calling \helpref{Veto()}{wxnotifyeventveto}.}
+\twocolitem{{\bf EVT\_TREE\_ITEM\_EXPANDED(id, func)}}{The item has been expanded.}
+\twocolitem{{\bf EVT\_TREE\_ITEM\_EXPANDING(id, func)}}{The item is being expanded. This can be prevented by calling \helpref{Veto()}{wxnotifyeventveto}.}
+\twocolitem{{\bf EVT\_TREE\_ITEM\_RIGHT\_CLICK(id, func)}}{The user has clicked the item with the right mouse button.}
+\twocolitem{{\bf EVT\_TREE\_ITEM\_MIDDLE\_CLICK(id, func)}}{The user has clicked the item with the middle mouse button.}
\twocolitem{{\bf EVT\_TREE\_SEL\_CHANGED(id, func)}}{Selection has changed.}
-\twocolitem{{\bf EVT\_TREE\_SEL\_CHANGING(id, func)}}{Selection is changing.}
+\twocolitem{{\bf EVT\_TREE\_SEL\_CHANGING(id, func)}}{Selection is changing. This can be prevented by calling \helpref{Veto()}{wxnotifyeventveto}.}
\twocolitem{{\bf EVT\_TREE\_KEY\_DOWN(id, func)}}{A key has been pressed.}
-\end{twocollist}%
+\twocolitem{{\bf EVT\_TREE\_ITEM\_GETTOOLTIP(id, func)}}{The opportunity to set the item tooltip
+is being given to the application (call wxTreeEvent::SetToolTip). Windows only.}
+\twocolitem{{\bf EVT\_TREE\_ITEM\_MENU(id, func)}}{The context menu for the selected item has been requested, either by a right click or by using the menu key.}
+\twocolitem{{\bf EVT\_TREE\_STATE\_IMAGE\_CLICK(id, func)}}{The state image has been clicked. Windows only.}
+\end{twocollist}
\wxheading{See also}
-\helpref{wxTreeCtrl overview}{wxtreectrloverview}, \helpref{wxListBox}{wxlistbox}, \helpref{wxListCtrl}{wxlistctrl},\rtfsp
+\helpref{wxTreeItemData}{wxtreeitemdata}, \helpref{wxTreeCtrl overview}{wxtreectrloverview}, \helpref{wxListBox}{wxlistbox}, \helpref{wxListCtrl}{wxlistctrl},\rtfsp
\helpref{wxImageList}{wximagelist}, \helpref{wxTreeEvent}{wxtreeevent}
+\wxheading{Win32 notes}
+
+wxTreeCtrl class uses the standard common treeview control under Win32
+implemented in the system library {\tt comctl32.dll}. Some versions of this
+library are known to have bugs with handling the tree control colours: the
+usual symptom is that the expanded items leave black (or otherwise incorrectly
+coloured) background behind them, especially for the controls using non-default background colour. The recommended solution is to upgrade the {\tt comctl32.dll}
+to a newer version: see
+\urlref{http://www.microsoft.com/downloads/release.asp?ReleaseID=11916}{http://www.microsoft.com/downloads/release.asp?ReleaseID=11916}.
+
\latexignore{\rtfignore{\wxheading{Members}}}
+
\membersection{wxTreeCtrl::wxTreeCtrl}\label{wxtreectrlconstr}
\func{}{wxTreeCtrl}{\void}
\func{}{wxTreeCtrl}{\param{wxWindow*}{ parent}, \param{wxWindowID}{ id},\rtfsp
\param{const wxPoint\&}{ pos = wxDefaultPosition}, \param{const wxSize\&}{ size = wxDefaultSize},\rtfsp
-\param{long}{ style = wxTR\_HAS\_BUTTONS}, \param{const wxValidator\& }{validator = wxDefaultValidator}, \param{const wxString\& }{name = ``listCtrl"}}
+\param{long}{ style = wxTR\_HAS\_BUTTONS}, \param{const wxValidator\& }{validator = wxDefaultValidator}, \param{const wxString\& }{name = ``treeCtrl"}}
Constructor, creating and showing a tree control.
\wxheading{Parameters}
-\docparam{parent}{Parent window. Must not be NULL.}
+\docparam{parent}{Parent window. Must not be {\tt NULL}.}
\docparam{id}{Window identifier. A value of -1 indicates a default value.}
\helpref{wxTreeCtrl::Create}{wxtreectrlcreate}, \helpref{wxValidator}{wxvalidator}
-\membersection{wxTreeCtrl::\destruct{wxTreeCtrl}}
+
+\membersection{wxTreeCtrl::\destruct{wxTreeCtrl}}\label{wxtreectrldtor}
\func{void}{\destruct{wxTreeCtrl}}{\void}
-Destructor, destroying the list control.
+Destructor, destroying the tree control.
+
+
+\membersection{wxTreeCtrl::AddRoot}\label{wxtreectrladdroot}
+
+\func{wxTreeItemId}{AddRoot}{\param{const wxString\&}{ text},
+ \param{int}{ image = -1}, \param{int}{ selImage = -1}, \param{wxTreeItemData*}{ data = {\tt NULL}}}
+
+Adds the root node to the tree, returning the new item.
+
+The {\it image} and {\it selImage} parameters are an index within
+the normal image list specifying the image to use for unselected and
+selected items, respectively.
+If {\it image} > -1 and {\it selImage} is -1, the same image is used for
+both selected and unselected items.
+
+
+\membersection{wxTreeCtrl::AppendItem}\label{wxtreectrlappenditem}
+
+\func{wxTreeItemId}{AppendItem}{\param{const wxTreeItemId\& }{parent}, \param{const wxString\&}{ text},
+ \param{int}{ image = -1}, \param{int}{ selImage = -1}, \param{wxTreeItemData*}{ data = {\tt NULL}}}
+
+Appends an item to the end of the branch identified by {\it parent}, return a new item id.
+
+The {\it image} and {\it selImage} parameters are an index within
+the normal image list specifying the image to use for unselected and
+selected items, respectively.
+If {\it image} > -1 and {\it selImage} is -1, the same image is used for
+both selected and unselected items.
+
+
+\membersection{wxTreeCtrl::AssignButtonsImageList}\label{wxtreectrlassignbuttonsimagelist}
+
+\func{void}{AssignButtonsImageList}{\param{wxImageList*}{ imageList}}
+
+Sets the buttons image list. The button images assigned with this method will
+be automatically deleted by wxTreeCtrl as appropriate
+(i.e. it takes ownership of the list).
+
+Setting or assigning the button image list enables the display of image buttons.
+Once enabled, the only way to disable the display of button images is to set
+the button image list to {\tt NULL}.
+
+This function is only available in the generic version.
+
+See also \helpref{SetButtonsImageList}{wxtreectrlsetbuttonsimagelist}.
+
+
+\membersection{wxTreeCtrl::AssignImageList}\label{wxtreectrlassignimagelist}
+
+\func{void}{AssignImageList}{\param{wxImageList*}{ imageList}}
+
+Sets the normal image list. Image list assigned with this method will
+be automatically deleted by wxTreeCtrl as appropriate
+(i.e. it takes ownership of the list).
+
+See also \helpref{SetImageList}{wxtreectrlsetimagelist}.
+
+
+\membersection{wxTreeCtrl::AssignStateImageList}\label{wxtreectrlassignstateimagelist}
+
+\func{void}{AssignStateImageList}{\param{wxImageList*}{ imageList}}
+
+Sets the state image list. Image list assigned with this method will
+be automatically deleted by wxTreeCtrl as appropriate
+(i.e. it takes ownership of the list).
+
+See also \helpref{SetStateImageList}{wxtreectrlsetstateimagelist}.
+
+
+
+\membersection{wxTreeCtrl::Collapse}\label{wxtreectrlcollapse}
+
+\func{void}{Collapse}{\param{const wxTreeItemId\&}{ item}}
+
+Collapses the given item.
+
+
+\membersection{wxTreeCtrl::CollapseAll}\label{wxtreectrlcollapseall}
+
+\func{void}{CollapseAll}{\void}
+
+Collapses the root item.
+
+\wxheading{See also}
+
+\helpref{ExpandAll}{wxtreectrlexpandall}
+
+
+\membersection{wxTreeCtrl::CollapseAllChildren}\label{wxtreectrlcollapseallchildren}
+
+\func{void}{CollapseAllChildren}{\param{const wxTreeItemId\&}{ item}}
+
+Collapses this item and all of its children, recursively.
+
+\wxheading{See also}
+
+\helpref{ExpandAllChildren}{wxtreectrlexpandallchildren}
+
+
+\membersection{wxTreeCtrl::CollapseAndReset}\label{wxtreectrlcollapseandreset}
+
+\func{void}{CollapseAndReset}{\param{const wxTreeItemId\&}{ item}}
+
+Collapses the given item and removes all children.
+
\membersection{wxTreeCtrl::Create}\label{wxtreectrlcreate}
\func{bool}{wxTreeCtrl}{\param{wxWindow*}{ parent}, \param{wxWindowID}{ id},\rtfsp
\param{const wxPoint\&}{ pos = wxDefaultPosition}, \param{const wxSize\&}{ size = wxDefaultSize},\rtfsp
-\param{long}{ style = wxTR\_HAS\_BUTTONS}, \param{const wxValidator\& }{validator = wxDefaultValidator}, \param{const wxString\& }{name = ``listCtrl"}}
+\param{long}{ style = wxTR\_HAS\_BUTTONS}, \param{const wxValidator\& }{validator = wxDefaultValidator}, \param{const wxString\& }{name = ``treeCtrl"}}
Creates the tree control. See \helpref{wxTreeCtrl::wxTreeCtrl}{wxtreectrlconstr} for further details.
+
+\membersection{wxTreeCtrl::Delete}\label{wxtreectrldelete}
+
+\func{void}{Delete}{\param{const wxTreeItemId\&}{ item}}
+
+Deletes the specified item. A {\tt EVT\_TREE\_DELETE\_ITEM} event will be
+generated.
+
+This function may cause a subsequent call to GetNextChild to fail.
+
+
\membersection{wxTreeCtrl::DeleteAllItems}\label{wxtreectrldeleteallitems}
-\func{bool}{DeleteAllItems}{\void}
+\func{void}{DeleteAllItems}{\void}
-Deletes all the items in the control.
+Deletes all items in the control. Note that this may not generate
+{\tt EVT\_TREE\_DELETE\_ITEM} events under some Windows versions although
+normally such event is generated for each removed item.
-\membersection{wxTreeCtrl::DeleteItem}\label{wxtreectrldeleteitem}
-\func{bool}{DeleteItem}{\param{long }{item}}
+\membersection{wxTreeCtrl::DeleteChildren}\label{wxtreectrldeletechildren}
-Deletes the specified item.
+\func{void}{DeleteChildren}{\param{const wxTreeItemId\& }{item}}
-\membersection{wxTreeCtrl::Edit}\label{wxtreectrledit}
+Deletes all children of the given item (but not the item itself). Note that
+this will {\bf not} generate any events unlike
+\helpref{Delete}{wxtreectrldelete} method.
-\func{wxTextCtrl\&}{Edit}{\param{long }{item}}
+If you have called \helpref{wxTreeCtrl::SetItemHasChildren}{wxtreectrlsetitemhaschildren}, you
+may need to call it again since {\it DeleteChildren} does not automatically
+clear the setting.
+
+
+\membersection{wxTreeCtrl::EditLabel}\label{wxtreectrleditlabel}
+
+\func{void}{EditLabel}{\param{const wxTreeItemId\&}{ item}}
+
+Starts editing the label of the given item. This function generates a
+EVT\_TREE\_BEGIN\_LABEL\_EDIT event which can be vetoed so that no
+text control will appear for in-place editing.
+
+If the user changed the label (i.e. s/he does not press ESC or leave
+the text control without changes, a EVT\_TREE\_END\_LABEL\_EDIT event
+will be sent which can be vetoed as well.
+
+\wxheading{See also}
+
+\helpref{wxTreeCtrl::EndEditLabel}{wxtreectrlendeditlabel},
+\helpref{wxTreeEvent}{wxtreeevent}
+
+
+\membersection{wxTreeCtrl::EndEditLabel}\label{wxtreectrlendeditlabel}
+
+\func{void}{EndEditLabel}{\param{bool }{cancelEdit}}
+
+Ends label editing. If {\it cancelEdit} is \true, the edit will be cancelled.
+
+This function is currently supported under Windows only.
+
+\wxheading{See also}
+
+\helpref{wxTreeCtrl::EditLabel}{wxtreectrleditlabel}
-Starts editing the label of the given item, returning the text control that the tree control uses for editing.
\membersection{wxTreeCtrl::EnsureVisible}\label{wxtreectrlensurevisible}
-\func{bool}{EnsureVisible}{\param{long }{item}}
+\func{void}{EnsureVisible}{\param{const wxTreeItemId\&}{ item}}
Scrolls and/or expands items to ensure that the given item is visible.
-\membersection{wxTreeCtrl::ExpandItem}\label{wxtreectrlexpanditem}
-\func{bool}{ExpandItem}{\param{long }{item}, \param{int }{action}}
+\membersection{wxTreeCtrl::Expand}\label{wxtreectrlexpand}
+
+\func{void}{Expand}{\param{const wxTreeItemId\&}{ item}}
Expands the given item.
-{\it action} may be one of:
-\twocolwidtha{5cm}
-\begin{twocollist}\itemsep=0pt
-\twocolitem{\windowstyle{wxTREE\_EXPAND\_EXPAND}}{Expands the item.}
-\twocolitem{\windowstyle{wxTREE\_EXPAND\_COLLAPSE}}{Collapses the item.}
-\twocolitem{\windowstyle{wxTREE\_EXPAND\_COLLAPSE\_RESET}}{Collapses the item and removes the child items.}
-\twocolitem{\windowstyle{wxTREE\_EXPAND\_TOGGLE}}{Expands if the item is collapsed, collapses if the item is expanded.}
-\end{twocollist}
+\membersection{wxTreeCtrl::ExpandAll}\label{wxtreectrlexpandall}
+
+\func{void}{ExpandAll}{\void}
+
+Expands all items in the tree.
+
-\membersection{wxTreeCtrl::GetChild}\label{wxtreectrlgetchild}
+\membersection{wxTreeCtrl::ExpandAllChildren}\label{wxtreectrlexpandallchildren}
-\constfunc{long}{GetChild}{\param{long }{item}}
+\func{void}{ExpandAllChildren}{\param{const wxTreeItemId\&}{ item}}
+
+Expands the given item and all its children recursively.
+
+
+\membersection{wxTreeCtrl::GetBoundingRect}\label{wxtreectrlgetitemrect}
+
+\constfunc{bool}{GetBoundingRect}{\param{const wxTreeItemId\&}{ item}, \param{wxRect\& }{rect}, \param{bool }{textOnly = \false}}
+
+Retrieves the rectangle bounding the {\it item}. If {\it textOnly} is \true,
+only the rectangle around the item's label will be returned, otherwise the
+item's image is also taken into account.
+
+The return value is \true if the rectangle was successfully retrieved or \false
+if it was not (in this case {\it rect} is not changed) -- for example, if the
+item is currently invisible.
+
+Notice that the rectangle coordinates are logical, not physical ones. So, for
+example, the x coordinate may be negative if the tree has a horizontal
+scrollbar and its position is not $0$.
+
+\pythonnote{The wxPython version of this method requires only the
+{\tt item} and {\tt textOnly} parameters. The return value is either a
+{\tt wxRect} object or {\tt None}.}
+
+\perlnote{In wxPerl this method only takes the parameters {\tt item} and
+ {\tt textOnly}, and returns a Wx::Rect ( or undef ).}
+
+
+\membersection{wxTreeCtrl::GetButtonsImageList}\label{wxtreectrlgetbuttonsimagelist}
+
+\constfunc{wxImageList*}{GetButtonsImageList}{\void}
+
+Returns the buttons image list (from which application-defined button images are taken).
+
+This function is only available in the generic version.
+
+
+\membersection{wxTreeCtrl::GetChildrenCount}\label{wxtreectrlgetchildrencount}
+
+\constfunc{unsigned int}{GetChildrenCount}{\param{const wxTreeItemId\&}{ item}, \param{bool}{ recursively = \true}}
+
+Returns the number of items in the branch. If {\it recursively} is \true, returns the total number
+of descendants, otherwise only one level of children is counted.
-Call this function to retrieve the tree view item that is the first child of the item specified by {\it item}.
\membersection{wxTreeCtrl::GetCount}\label{wxtreectrlgetcount}
-\constfunc{int}{GetCount}{\void}
+\constfunc{unsigned int}{GetCount}{\void}
Returns the number of items in the control.
+
\membersection{wxTreeCtrl::GetEditControl}\label{wxtreectrlgeteditcontrol}
-\constfunc{wxTextCtrl\&}{GetEditControl}{\void}
+\constfunc{wxTextCtrl *}{GetEditControl}{\void}
+
+Returns the edit control being currently used to edit a label. Returns {\tt NULL}
+if no label is being edited.
+
+{\bf NB:} It is currently only implemented for wxMSW.
+
+
+\membersection{wxTreeCtrl::GetFirstChild}\label{wxtreectrlgetfirstchild}
+
+\constfunc{wxTreeItemId}{GetFirstChild}{\param{const wxTreeItemId\&}{ item}, \param{wxTreeItemIdValue \& }{cookie}}
+
+Returns the first child; call \helpref{wxTreeCtrl::GetNextChild}{wxtreectrlgetnextchild} for the next child.
+
+For this enumeration function you must pass in a `cookie' parameter
+which is opaque for the application but is necessary for the library
+to make these functions reentrant (i.e. allow more than one
+enumeration on one and the same object simultaneously). The cookie passed to
+GetFirstChild and GetNextChild should be the same variable.
+
+Returns an invalid tree item (i.e. IsOk() returns \false) if there are no further children.
+
+\wxheading{See also}
+
+\helpref{wxTreeCtrl::GetNextChild}{wxtreectrlgetnextchild},
+\helpref{wxTreeCtrl::GetNextSibling}{wxtreectrlgetnextsibling}
+
+\pythonnote{In wxPython the returned wxTreeItemId and the new cookie
+value are both returned as a tuple containing the two values.}
+
+\perlnote{In wxPerl this method only takes the {\tt item} parameter, and
+ returns a 2-element list {\tt ( item, cookie )}.}
-Returns the edit control used to edit a label.
\membersection{wxTreeCtrl::GetFirstVisibleItem}\label{wxtreectrlgetfirstvisibleitem}
-\constfunc{long}{GetFirstVisibleItem}{\void}
+\constfunc{wxTreeItemId}{GetFirstVisibleItem}{\void}
Returns the first visible item.
+
\membersection{wxTreeCtrl::GetImageList}\label{wxtreectrlgetimagelist}
-\constfunc{wxImageList*}{GetImageList}{\param{int }{which = wxIMAGE\_LIST\_NORMAL}}
+\constfunc{wxImageList*}{GetImageList}{\void}
-Returns the specified image list. {\it which} may be one of:
+Returns the normal image list.
-\twocolwidtha{5cm}
-\begin{twocollist}\itemsep=0pt
-\twocolitem{\windowstyle{wxIMAGE\_LIST\_NORMAL}}{The normal (large icon) image list.}
-\twocolitem{\windowstyle{wxIMAGE\_LIST\_SMALL}}{The small icon image list.}
-\twocolitem{\windowstyle{wxIMAGE\_LIST\_STATE}}{The user-defined state image list (unimplemented).}
-\end{twocollist}
\membersection{wxTreeCtrl::GetIndent}\label{wxtreectrlgetindent}
Returns the current tree control indentation.
-\membersection{wxTreeCtrl::GetItem}\label{wxtreectrlgetitem}
-\constfunc{bool}{GetItem}{\param{wxTreeItem\& }{info}}
+\membersection{wxTreeCtrl::GetItemBackgroundColour}\label{wxtreectrlgetitembackgroundcolour}
+
+\constfunc{wxColour}{GetItemBackgroundColour}{\param{const wxTreeItemId\&}{ item}}
+
+Returns the background colour of the item.
-Gets information about the item. See \helpref{wxTreeCtrl::SetItem}{wxtreectrlsetitem} for more
-information.
\membersection{wxTreeCtrl::GetItemData}\label{wxtreectrlgetitemdata}
-\constfunc{long}{GetItemData}{\param{long }{item}}
+\constfunc{wxTreeItemData*}{GetItemData}{\param{const wxTreeItemId\&}{ item}}
+
+Returns the tree item data associated with the item.
+
+\wxheading{See also}
+
+\helpref{wxTreeItemData}{wxtreeitemdata}
+
+\pythonnote{wxPython provides the following shortcut method:
+
+\indented{2cm}{\begin{twocollist}\itemsep=0pt
+\twocolitem{{\bf GetPyData(item)}}{Returns the Python Object
+associated with the wxTreeItemData for the given item Id.}
+\end{twocollist}}
+}%
+
+\perlnote{wxPerl provides the following shortcut method:
+\indented{2cm}{
+\begin{twocollist}\itemsep=0pt
+\twocolitem{{\bf GetPlData( item )}}{Returns the Perl data
+associated with the Wx::TreeItemData. It is just the same as
+tree->GetItemData(item)->GetData().}
+\end{twocollist}}
+}%
+
+\membersection{wxTreeCtrl::GetItemFont}\label{wxtreectrlgetitemfont}
-Returns the client data associated with the item, if any.
+\constfunc{wxFont}{GetItemFont}{\param{const wxTreeItemId\&}{ item}}
-\membersection{wxTreeCtrl::GetItemRect}\label{wxtreectrlgetitemrect}
+Returns the font of the item label.
-\constfunc{bool}{GetItemRect}{\param{long }{item}, \param{wxRect\& }{rect}, \param{bool }{textOnly = FALSE}}
-Returns the position and size of the rectangle bounding the item.
+\membersection{wxTreeCtrl::GetItemImage}\label{wxtreectrlgetitemimage}
-\membersection{wxTreeCtrl::GetItemState}\label{wxtreectrlgetitemstate}
+\constfunc{int}{GetItemImage}{\param{const wxTreeItemId\& }{item},
+ \param{wxTreeItemIcon }{which = wxTreeItemIcon\_Normal}}
-\constfunc{int}{GetItemState}{\param{long }{item}, \param{long }{stateMask}}
+Gets the specified item image. The value of {\it which} may be:
+
+\begin{itemize}\itemsep=0pt
+\item{wxTreeItemIcon\_Normal} to get the normal item image
+\item{wxTreeItemIcon\_Selected} to get the selected item image (i.e. the image
+which is shown when the item is currently selected)
+\item{wxTreeItemIcon\_Expanded} to get the expanded image (this only
+makes sense for items which have children - then this image is shown when the
+item is expanded and the normal image is shown when it is collapsed)
+\item{wxTreeItemIcon\_SelectedExpanded} to get the selected expanded image
+(which is shown when an expanded item is currently selected)
+\end{itemize}
-Gets the item state. For a list of state flags, see \helpref{wxTreeCtrl::SetItem}{wxtreectrlsetitem}.
\membersection{wxTreeCtrl::GetItemText}\label{wxtreectrlgetitemtext}
-\constfunc{wxString}{GetItemText}{\param{long }{item}}
+\constfunc{wxString}{GetItemText}{\param{const wxTreeItemId\&}{ item}}
Returns the item label.
-\membersection{wxTreeCtrl::GetNextItem}\label{wxtreectrlgetnextitem}
-\constfunc{long}{GetNextItem}{\param{long }{item}, \param{int }{code}}
+\membersection{wxTreeCtrl::GetItemTextColour}\label{wxtreectrlgetitemtextcolour}
-Searches for an item using the given criterion, starting from {\it item}.
+\constfunc{wxColour}{GetItemTextColour}{\param{const wxTreeItemId\&}{ item}}
-Returns the item or 0 if unsuccessful.
+Returns the colour of the item label.
-{\it code} can be one of:
-\twocolwidtha{5cm}
-\begin{twocollist}\itemsep=0pt
-\twocolitem{wxTREE\_NEXT\_CARET}{Retrieves the currently selected item.}
-\twocolitem{wxTREE\_NEXT\_CHILD}{Retrieves the first child item. The hItem parameter must be NULL.}
-\twocolitem{wxTREE\_NEXT\_DROPHILITE}{Retrieves the item that is the target of a drag-and-drop operation.}
-\twocolitem{wxTREE\_NEXT\_FIRSTVISIBLE}{Retrieves the first visible item.}
-\twocolitem{wxTREE\_NEXT\_NEXT}{Retrieves the next sibling item.}
-\twocolitem{wxTREE\_NEXT\_NEXTVISIBLE}{Retrieves the next visible item that follows the specified item.}
-\twocolitem{wxTREE\_NEXT\_PARENT}{Retrieves the parent of the specified item.}
-\twocolitem{wxTREE\_NEXT\_PREVIOUS}{Retrieves the previous sibling item.}
-\twocolitem{wxTREE\_NEXT\_PREVIOUSVISIBLE}{Retrieves the first visible item that precedes the specified item.}
-\twocolitem{wxTREE\_NEXT\_ROOT}{Retrieves the first child item of the root item of which the specified item is a part.}
-\end{twocollist}
+\membersection{wxTreeCtrl::GetLastChild}\label{wxtreectrlgetlastchild}
+
+\constfunc{wxTreeItemId}{GetLastChild}{\param{const wxTreeItemId\&}{ item}}
+
+Returns the last child of the item (or an invalid tree item if this item has no children).
+
+\wxheading{See also}
+
+\helpref{GetFirstChild}{wxtreectrlgetfirstchild},
+\helpref{wxTreeCtrl::GetNextSibling}{wxtreectrlgetnextsibling},
+\helpref{GetLastChild}{wxtreectrlgetlastchild}
+
+
+\membersection{wxTreeCtrl::GetNextChild}\label{wxtreectrlgetnextchild}
+
+\constfunc{wxTreeItemId}{GetNextChild}{\param{const wxTreeItemId\&}{ item}, \param{wxTreeItemIdValue \& }{cookie}}
+
+Returns the next child; call \helpref{wxTreeCtrl::GetFirstChild}{wxtreectrlgetfirstchild} for the first child.
+
+For this enumeration function you must pass in a `cookie' parameter
+which is opaque for the application but is necessary for the library
+to make these functions reentrant (i.e. allow more than one
+enumeration on one and the same object simultaneously). The cookie passed to
+GetFirstChild and GetNextChild should be the same.
+
+Returns an invalid tree item if there are no further children.
+
+\wxheading{See also}
+
+\helpref{wxTreeCtrl::GetFirstChild}{wxtreectrlgetfirstchild}
+
+\pythonnote{In wxPython the returned wxTreeItemId and the new cookie
+value are both returned as a tuple containing the two values.}
+
+\perlnote{In wxPerl this method returns a 2-element list
+ {\tt ( item, cookie )}, instead of modifying its parameters.}
+
+
+\membersection{wxTreeCtrl::GetNextSibling}\label{wxtreectrlgetnextsibling}
+
+\constfunc{wxTreeItemId}{GetNextSibling}{\param{const wxTreeItemId\&}{ item}}
-\membersection{wxTreeCtrl::GetNextVisibleItem}\label{wxtreectrlgetnextvisibleitem}
+Returns the next sibling of the specified item; call \helpref{wxTreeCtrl::GetPrevSibling}{wxtreectrlgetprevsibling} for the previous sibling.
-\constfunc{long}{GetNextVisibleItem}{\param{long }{item}}
+Returns an invalid tree item if there are no further siblings.
-Returns the next visible item.
+\wxheading{See also}
+
+\helpref{wxTreeCtrl::GetPrevSibling}{wxtreectrlgetprevsibling}
+
+
+\membersection{wxTreeCtrl::GetNextVisible}\label{wxtreectrlgetnextvisible}
+
+\constfunc{wxTreeItemId}{GetNextVisible}{\param{const wxTreeItemId\&}{ item}}
+
+Returns the next visible item or an invalid item if this item is the last
+visible one.
-\membersection{wxTreeCtrl::GetParent}\label{wxtreectrlgetparent}
+Notice that the \arg{item} itself must be visible.
-\constfunc{long}{GetParent}{\param{long }{item}}
+
+\membersection{wxTreeCtrl::GetItemParent}\label{wxtreectrlgetitemparent}
+
+\constfunc{wxTreeItemId}{GetItemParent}{\param{const wxTreeItemId\&}{ item}}
Returns the item's parent.
+
+\membersection{wxTreeCtrl::GetPrevSibling}\label{wxtreectrlgetprevsibling}
+
+\constfunc{wxTreeItemId}{GetPrevSibling}{\param{const wxTreeItemId\&}{ item}}
+
+Returns the previous sibling of the specified item; call \helpref{wxTreeCtrl::GetNextSibling}{wxtreectrlgetnextsibling} for the next sibling.
+
+Returns an invalid tree item if there are no further children.
+
+\wxheading{See also}
+
+\helpref{wxTreeCtrl::GetNextSibling}{wxtreectrlgetnextsibling}
+
+
+\membersection{wxTreeCtrl::GetPrevVisible}\label{wxtreectrlgetprevvisible}
+
+\constfunc{wxTreeItemId}{GetPrevVisible}{\param{const wxTreeItemId\&}{ item}}
+
+Returns the previous visible item or an invalid item if this item is the first
+visible one.
+
+Notice that the \arg{item} itself must be visible.
+
+
+\membersection{wxTreeCtrl::GetQuickBestSize}\label{wxtreectrlgetquickbestsize}
+
+\constfunc{bool}{GetQuickBestSize}{\void}
+
+Returns true if the control will use a quick calculation for the best size,
+looking only at the first and last items. The default is false.
+
+\wxheading{See also}
+
+\helpref{wxTreeCtrl::SetQuickBestSize}{wxtreectrlsetquickbestsize}
+
+
\membersection{wxTreeCtrl::GetRootItem}\label{wxtreectrlgetrootitem}
-\constfunc{long}{GetRootItem}{\void}
+\constfunc{wxTreeItemId}{GetRootItem}{\void}
Returns the root item for the tree control.
+
+\membersection{wxTreeCtrl::GetItemSelectedImage}\label{wxtreectrlgetitemselectedimage}
+
+\constfunc{int}{GetItemSelectedImage}{\param{const wxTreeItemId\& }{item}}
+
+Gets the selected item image (this function is obsolete, use
+{\tt GetItemImage(item, wxTreeItemIcon\_Selected)} instead).
+
+
\membersection{wxTreeCtrl::GetSelection}\label{wxtreectrlgetselection}
-\constfunc{long}{GetSelection}{\void}
+\constfunc{wxTreeItemId}{GetSelection}{\void}
+
+Returns the selection, or an invalid item if there is no selection.
+This function only works with the controls without wxTR\_MULTIPLE style, use
+\helpref{GetSelections}{wxtreectrlgetselections} for the controls which do have
+this style.
+
+
+\membersection{wxTreeCtrl::GetSelections}\label{wxtreectrlgetselections}
+
+\constfunc{unsigned int}{GetSelections}{\param{wxArrayTreeItemIds\& }{selection}}
+
+Fills the array of tree items passed in with the currently selected items. This
+function can be called only if the control has the wxTR\_MULTIPLE style.
+
+Returns the number of selected items.
+
+\pythonnote{The wxPython version of this method accepts no parameters
+and returns a Python list of {\tt wxTreeItemId}s.}
+
+\perlnote{In wxPerl this method takes no parameters and returns a list of
+ {\tt Wx::TreeItemId}s.}
+
+
+\membersection{wxTreeCtrl::GetStateImageList}\label{wxtreectrlgetstateimagelist}
+
+\constfunc{wxImageList*}{GetStateImageList}{\void}
+
+Returns the state image list (from which application-defined state images are taken).
-Returns the selection, or 0 if there is no selection.
\membersection{wxTreeCtrl::HitTest}\label{wxtreectrlhittest}
-\func{long}{HitTest}{\param{const wxPoint\& }{point}, \param{int\& }{flags}}
+\constfunc{wxTreeItemId}{HitTest}{\param{const wxPoint\& }{point}, \param{int\& }{flags}}
-Calculates which (if any) item is under the given point, returning extra information
-in {\it flags}. {\it flags} is a bitlist of the following:
+Calculates which (if any) item is under the given point, returning the tree item
+id at this point plus extra information {\it flags}. {\it flags} is a bitlist of the following:
\twocolwidtha{5cm}
\begin{twocollist}\itemsep=0pt
\twocolitem{wxTREE\_HITTEST\_TORIGHT}{To the left of the client area.}
\end{twocollist}
-\membersection{wxTreeCtrl::InsertItem}\label{wxtreectrlinsertitem}
+\pythonnote{in wxPython both the wxTreeItemId and the flags are
+returned as a tuple.}
-\func{long}{InsertItem}{\param{long }{parent}, \param{wxTreeItem\& }{info}, \param{long }{insertAfter = wxTREE\_INSERT\_LAST}}
+\perlnote{In wxPerl this method only takes the {\tt point} parameter
+ and returns a 2-element list {\tt ( item, flags )}.}
-Inserts an item. For more information on {\it info}, see \helpref{wxTreeCtrl::SetItem}{wxtreectrlsetitem}.
-\func{long}{InsertItem}{\param{long }{parent}, \param{const wxString\& }{label}, \param{int }{image = -1}, \param{int }{selImage = -1}, \param{long }{insertAfter = wxTREE\_INSERT\_LAST}}
+\membersection{wxTreeCtrl::InsertItem}\label{wxtreectrlinsertitem}
+
+\func{wxTreeItemId}{InsertItem}{\param{const wxTreeItemId\& }{parent}, \param{const wxTreeItemId\& }{previous}, \param{const wxString\&}{ text},
+ \param{int}{ image = -1}, \param{int}{ selImage = -1}, \param{wxTreeItemData*}{ data = {\tt NULL}}}
+
+\func{wxTreeItemId}{InsertItem}{\param{const wxTreeItemId\& }{parent}, \param{size\_t}{ before}, \param{const wxString\&}{ text},
+ \param{int}{ image = -1}, \param{int}{ selImage = -1}, \param{wxTreeItemData*}{ data = {\tt NULL}}}
-Inserts an item.
+Inserts an item after a given one ({\it previous}) or before one identified by its position ({\it before}).
+{\it before} must be less than the number of children.
+The {\it image} and {\it selImage} parameters are an index within
+the normal image list specifying the image to use for unselected and
+selected items, respectively.
If {\it image} > -1 and {\it selImage} is -1, the same image is used for
both selected and unselected items.
+\pythonnote{The second form of this method is called
+{\tt InsertItemBefore} in wxPython.}
+
+
+\membersection{wxTreeCtrl::IsBold}\label{wxtreectrlisbold}
+
+\constfunc{bool}{IsBold}{\param{const wxTreeItemId\& }{item}}
+
+Returns \true if the given item is in bold state.
+
+See also: \helpref{SetItemBold}{wxtreectrlsetitembold}
+
+
+\membersection{wxTreeCtrl::IsEmpty}\label{wxtreectrlisempty}
+
+\constfunc{bool}{IsEmpty}{}
+
+Returns \true if the control is empty (i.e. has no items, even no root one).
+
+
+\membersection{wxTreeCtrl::IsExpanded}\label{wxtreectrlisexpanded}
+
+\constfunc{bool}{IsExpanded}{\param{const wxTreeItemId\&}{ item}}
+
+Returns \true if the item is expanded (only makes sense if it has children).
+
+
+\membersection{wxTreeCtrl::IsSelected}\label{wxtreectrlisselected}
+
+\constfunc{bool}{IsSelected}{\param{const wxTreeItemId\&}{ item}}
+
+Returns \true if the item is selected.
+
+
+\membersection{wxTreeCtrl::IsVisible}\label{wxtreectrlisvisible}
+
+\constfunc{bool}{IsVisible}{\param{const wxTreeItemId\&}{ item}}
+
+Returns \true if the item is visible on the screen.
+
+
\membersection{wxTreeCtrl::ItemHasChildren}\label{wxtreectrlitemhaschildren}
-\constfunc{bool}{ItemHasChildren}{\param{long }{item}}
+\constfunc{bool}{ItemHasChildren}{\param{const wxTreeItemId\&}{ item}}
+
+Returns \true if the item has children.
+
+
+\membersection{wxTreeCtrl::OnCompareItems}\label{wxtreectrloncompareitems}
+
+\func{int}{OnCompareItems}{\param{const wxTreeItemId\& }{item1}, \param{const wxTreeItemId\& }{item2}}
+
+Override this function in the derived class to change the sort order of the
+items in the tree control. The function should return a negative, zero or
+positive value if the first item is less than, equal to or greater than the
+second one.
+
+Please note that you \textbf{must} use wxRTTI macros
+\helpref{DECLARE\_DYNAMIC\_CLASS}{declaredynamicclass} and
+\helpref{IMPLEMENT\_DYNAMIC\_CLASS}{implementdynamicclass} if you override this
+function because otherwise the base class considers that it is not overridden
+and uses the default comparison, i.e. sorts the items alphabetically, which
+allows it optimize away the calls to the virtual function completely.
+
+See also: \helpref{SortChildren}{wxtreectrlsortchildren}
+
+
+\membersection{wxTreeCtrl::PrependItem}\label{wxtreectrlprependitem}
+
+\func{wxTreeItemId}{PrependItem}{\param{const wxTreeItemId\& }{parent}, \param{const wxString\&}{ text},
+ \param{int}{ image = -1}, \param{int}{ selImage = -1}, \param{wxTreeItemData*}{ data = {\tt NULL}}}
+
+Appends an item as the first child of {\it parent}, return a new item id.
+
+The {\it image} and {\it selImage} parameters are an index within
+the normal image list specifying the image to use for unselected and
+selected items, respectively.
+If {\it image} > -1 and {\it selImage} is -1, the same image is used for
+both selected and unselected items.
-Returns TRUE if the item has children.
\membersection{wxTreeCtrl::ScrollTo}\label{wxtreectrlscrollto}
-\func{bool}{ScrollTo}{\param{long }{item}}
+\func{void}{ScrollTo}{\param{const wxTreeItemId\&}{ item}}
+
+Scrolls the specified item into view.
-selects the specified item and scrolls the item into view,
\membersection{wxTreeCtrl::SelectItem}\label{wxtreectrlselectitem}
-\func{bool}{SelectItem}{\param{long }{item}}
+\func{void}{SelectItem}{\param{const wxTreeItemId\&}{ item}, \param{bool }{select = \true}}
+
+Selects the given item. In multiple selection controls, can be also used to
+deselect a currently selected item if the value of \arg{select} is false.
+
+
+\membersection{wxTreeCtrl::SetButtonsImageList}\label{wxtreectrlsetbuttonsimagelist}
+
+\func{void}{SetButtonsImageList}{\param{wxImageList*}{ imageList}}
+
+Sets the buttons image list (from which application-defined button images are taken).
+The button images assigned with this method will
+{\bf not} be deleted by wxTreeCtrl's destructor, you must delete it yourself.
+
+Setting or assigning the button image list enables the display of image buttons.
+Once enabled, the only way to disable the display of button images is to set
+the button image list to {\tt NULL}.
+
+This function is only available in the generic version.
+
+See also \helpref{AssignButtonsImageList}{wxtreectrlassignbuttonsimagelist}.
-Selects the given item.
\membersection{wxTreeCtrl::SetIndent}\label{wxtreectrlsetindent}
Sets the indentation for the tree control.
+
\membersection{wxTreeCtrl::SetImageList}\label{wxtreectrlsetimagelist}
-\func{void}{SetImageList}{\param{wxImageList*}{ imageList}, \param{int }{which = wxIMAGE\_LIST\_NORMAL}}
+\func{void}{SetImageList}{\param{wxImageList*}{ imageList}}
-Sets the image list. {\it which} should be one of wxIMAGE\_LIST\_NORMAL, wxIMAGE\_LIST\_SMALL and
-wxIMAGE\_LIST\_STATE.
+Sets the normal image list. Image list assigned with this method will
+{\bf not} be deleted by wxTreeCtrl's destructor, you must delete it yourself.
-\membersection{wxTreeCtrl::SetItem}\label{wxtreectrlsetitem}
+See also \helpref{AssignImageList}{wxtreectrlassignimagelist}.
-\func{bool}{SetItem}{\param{wxTreeItem\& }{info}}
-Sets the properties of the item.
-The members of wxTreeItem are as follows:
+\membersection{wxTreeCtrl::SetItemBackgroundColour}\label{wxtreectrlsetitembackgroundcolour}
-\twocolwidtha{5cm}
-\begin{twocollist}\itemsep=0pt
-\twocolitem{m\_mask}{A bitlist specifying the valid members. See below for mask flags.}
-\twocolitem{m\_itemId}{The item identifier.}
-\twocolitem{m\_state}{The item state. See below for state flags.}
-\twocolitem{m\_stateMask}{A bitlist specifying the valid contents of {\it m\_state}. These flags
-are taken from the same set of symbols as {\it m\_state}.}
-\twocolitem{m\_text}{The item label.}
-\twocolitem{m\_image}{The item image index (an index into the appropriate image list).}
-\twocolitem{m\_selectedImage}{The item selected index (an index into the appropriate image list).}
-\twocolitem{m\_children}{The number of child items that this item has.}
-\twocolitem{m\_data}{The application-defined data associated with this item.}
-\end{twocollist}
+\func{void}{SetItemBackgroundColour}{\param{const wxTreeItemId\&}{ item}, \param{const wxColour\& }{col}}
-Valid mask flags are:
+Sets the colour of the item's background.
-\twocolwidtha{5cm}
-\begin{twocollist}\itemsep=0pt
-\twocolitem{wxTREE\_MASK\_HANDLE}{The {\it m\_itemId} member is valid.}
-\twocolitem{wxTREE\_MASK\_STATE}{The {\it m\_state} member is valid.}
-\twocolitem{wxTREE\_MASK\_TEXT}{The {\it m\_text} member is valid.}
-\twocolitem{wxTREE\_MASK\_IMAGE}{The {\it m\_image} member is valid.}
-\twocolitem{wxTREE\_MASK\_SELECTED\_IMAGE}{The {\it m\_selectedImage} member is valid.}
-\twocolitem{wxTREE\_MASK\_CHILDREN}{The {\it m\_children} member is valid.}
-\twocolitem{wxTREE\_MASK\_DATA}{The {\it m\_data} member is valid.}
-\end{twocollist}
-Valid state and state mask flags are:
+\membersection{wxTreeCtrl::SetItemBold}\label{wxtreectrlsetitembold}
-\twocolwidtha{5cm}
+\func{void}{SetItemBold}{\param{const wxTreeItemId\& }{item}, \param{bool}{ bold = \true}}
+
+Makes item appear in bold font if {\it bold} parameter is \true or resets it to
+the normal state.
+
+See also: \helpref{IsBold}{wxtreectrlisbold}
+
+
+\membersection{wxTreeCtrl::SetItemData}\label{wxtreectrlsetitemdata}
+
+\func{void}{SetItemData}{\param{const wxTreeItemId\&}{ item}, \param{wxTreeItemData* }{data}}
+
+Sets the item client data.
+
+\pythonnote{wxPython provides the following shortcut method:\par
+\indented{2cm}{\begin{twocollist}\itemsep=0pt
+\twocolitem{{\bf SetPyData(item, obj)}}{Associate the given Python
+Object with the wxTreeItemData for the given item Id.}
+\end{twocollist}}
+}%
+
+\perlnote{wxPerl provides the following shortcut method:
+\indented{2cm}{
\begin{twocollist}\itemsep=0pt
-\twocolitem{wxTREE\_STATE\_BOLD}{The label is emboldened.}
-\twocolitem{wxTREE\_STATE\_DROPHILITED}{The item indicates it is a drop target.}
-\twocolitem{wxTREE\_STATE\_EXPANDED}{The item is expanded.}
-\twocolitem{wxTREE\_STATE\_EXPANDEDONCE}{The item's list of child items has been expanded at least once.}
-\twocolitem{wxTREE\_STATE\_FOCUSED}{The item has the focus, so it is surrounded by a standard focus rectangle.
-Only one item can have the focus.}
-\twocolitem{wxTREE\_STATE\_SELECTED}{The item is selected.}
-\twocolitem{wxTREE\_STATE\_CUT}{The item is selected as part of a cut and paste operation.}
-\end{twocollist}
+\twocolitem{{\bf SetPlData( item, data )}}{Sets the Perl data
+associated with the Wx::TreeItemData. It is just the same as
+tree->GetItemData(item)->SetData(data).}
+\end{twocollist}}
+}%
+
+\membersection{wxTreeCtrl::SetItemDropHighlight}\label{wxtreectrlsetitemdrophighlight}
+
+\func{void}{SetItemDropHighlight}{\param{const wxTreeItemId\&}{ item}, \param{bool}{highlight = \true}}
+
+Gives the item the visual feedback for Drag'n'Drop actions, which is
+useful if something is dragged from the outside onto the tree control
+(as opposed to a DnD operation within the tree control, which already
+is implemented internally).
+
+\membersection{wxTreeCtrl::SetItemFont}\label{wxtreectrlsetitemfont}
+
+\func{void}{SetItemFont}{\param{const wxTreeItemId\&}{ item}, \param{const wxFont\& }{font}}
+
+Sets the item's font. All items in the tree should have the same height to avoid
+text clipping, so the fonts height should be the same for all of them,
+although font attributes may vary.
+
+\wxheading{See also}
+
+\helpref{SetItemBold}{wxtreectrlsetitembold}
+
+
+\membersection{wxTreeCtrl::SetItemHasChildren}\label{wxtreectrlsetitemhaschildren}
+
+\func{void}{SetItemHasChildren}{\param{const wxTreeItemId\&}{ item}, \param{bool }{hasChildren = \true}}
+
+Force appearance of the button next to the item. This is useful to
+allow the user to expand the items which don't have any children now,
+but instead adding them only when needed, thus minimizing memory
+usage and loading time.
+
\membersection{wxTreeCtrl::SetItemImage}\label{wxtreectrlsetitemimage}
-\func{bool}{SetItemImage}{\param{long }{item}, \param{int }{image}, \param{int }{selImage}}
+\func{void}{SetItemImage}{\param{const wxTreeItemId\&}{ item},
+ \param{int }{image}, \param{wxTreeItemIcon }{which = wxTreeItemIcon\_Normal}}
-Sets the item image and selected image. These are indices into the assciated image list.
+Sets the specified item image. See \helpref{GetItemImage}{wxtreectrlgetitemimage}
+for the description of the {\it which} parameter.
-\membersection{wxTreeCtrl::SetItemState}\label{wxtreectrlsetitemstate}
-\func{bool}{SetItemState}{\param{long }{item}, \param{long }{state}, \param{long }{stateMask}}
+\membersection{wxTreeCtrl::SetItemSelectedImage}\label{wxtreectrlsetitemselectedimage}
+
+\func{void}{SetItemSelectedImage}{\param{const wxTreeItemId\&}{ item}, \param{int }{selImage}}
+
+Sets the selected item image (this function is obsolete, use
+{\tt SetItemImage(item, wxTreeItemIcon\_Selected)} instead).
-Sets the item state. See \helpref{wxTreeCtrl::SetItem}{wxtreectrlsetitem} for valid state and state mask flags.
\membersection{wxTreeCtrl::SetItemText}\label{wxtreectrlsetitemtext}
-\func{void}{SetItemText}{\param{long }{item}, \param{const wxString\& }{text}}
+\func{void}{SetItemText}{\param{const wxTreeItemId\&}{ item}, \param{const wxString\& }{text}}
Sets the item label.
-\membersection{wxTreeCtrl::SetItemData}\label{wxtreectrlsetitemdata}
-\func{bool}{SetItemData}{\param{long }{item}, \param{long }{data}}
+\membersection{wxTreeCtrl::SetItemTextColour}\label{wxtreectrlsetitemtextcolour}
+
+\func{void}{SetItemTextColour}{\param{const wxTreeItemId\&}{ item}, \param{const wxColour\& }{col}}
+
+Sets the colour of the item's text.
+
+
+\membersection{wxTreeCtrl::SetQuickBestSize}\label{wxtreectrlsetquickbestsize}
+
+\func{void}{SetQuickBestSize}{\param{bool}{ quickBestSize}}
+
+If true is passed, specifies that the control will use a quick calculation for the best size,
+looking only at the first and last items. Otherwise, it will look at all items.
+The default is false.
+
+\wxheading{See also}
+
+\helpref{wxTreeCtrl::GetQuickBestSize}{wxtreectrlgetquickbestsize}
+
+
+\membersection{wxTreeCtrl::SetStateImageList}\label{wxtreectrlsetstateimagelist}
+
+\func{void}{SetStateImageList}{\param{wxImageList*}{ imageList}}
+
+Sets the state image list (from which application-defined state images are taken).
+Image list assigned with this method will
+{\bf not} be deleted by wxTreeCtrl's destructor, you must delete it yourself.
+
+See also \helpref{AssignStateImageList}{wxtreectrlassignstateimagelist}.
+
+\membersection{wxTreeCtrl::SetWindowStyle}\label{wxtreectrlsetwindowstyle}
+
+\func{void}{SetWindowStyle}{\param{long}{styles}}
+
+Sets the mode flags associated with the display of the tree control.
+The new mode takes effect immediately.
+(Generic only; MSW ignores changes.)
-Sets the item client data.
\membersection{wxTreeCtrl::SortChildren}\label{wxtreectrlsortchildren}
-\func{bool}{SortChildren}{\param{long }{item}}
+\func{void}{SortChildren}{\param{const wxTreeItemId\&}{ item}}
+
+Sorts the children of the given item using
+\helpref{OnCompareItems}{wxtreectrloncompareitems} method of wxTreeCtrl. You
+should override that method to change the sort order (the default is ascending
+case-sensitive alphabetical order).
+
+\wxheading{See also}
+
+\helpref{wxTreeItemData}{wxtreeitemdata}, \helpref{OnCompareItems}{wxtreectrloncompareitems}
+
+
+\membersection{wxTreeCtrl::Toggle}\label{wxtreectrltoggle}
+
+\func{void}{Toggle}{\param{const wxTreeItemId\&}{ item}}
+
+Toggles the given item between collapsed and expanded states.
+
+
+\membersection{wxTreeCtrl::ToggleItemSelection}\label{wxtreectrltoggleitemselection}
+
+\func{void}{ToggleItemSelection}{\param{const wxTreeItemId\&}{ item}}
+
+Toggles the given item between selected and unselected states. For
+multiselection controls only.
+
+
+\membersection{wxTreeCtrl::Unselect}\label{wxtreectrlunselect}
+
+\func{void}{Unselect}{\void}
+
+Removes the selection from the currently selected item (if any).
+
+
+\membersection{wxTreeCtrl::UnselectAll}\label{wxtreectrlunselectall}
+
+\func{void}{UnselectAll}{\void}
+
+This function either behaves the same as \helpref{Unselect}{wxtreectrlunselect}
+if the control doesn't have wxTR\_MULTIPLE style, or removes the selection from
+all items if it does have this style.
+
+
+\membersection{wxTreeCtrl::UnselectItem}\label{wxtreectrlunselectitem}
+
+\func{void}{UnselectItem}{\param{const wxTreeItemId\& }{item}}
+
+Unselects the given item. This works in multiselection controls only.
+
+
+
+
+
+%% the wxTreeItemId opaque class
+
+
+\section{\class{wxTreeItemId}}\label{wxtreeitemid}
+
+An opaque reference to a tree item.
+
+
+\wxheading{Derived from}
+
+None
+
+\wxheading{Include files}
+
+<wx/treebase.h>
+
+\wxheading{Library}
+
+\helpref{wxCore}{librarieslist}
+
+\wxheading{See also}
+
+\helpref{wxTreeCtrl}{wxtreectrl}, \helpref{wxTreeItemData}{wxtreeitemdata},\\
+\helpref{wxTreeCtrl overview}{wxtreectrloverview}
+
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxTreeItemId::wxTreeItemId}\label{wxtreeitemidconstr}
+
+\func{}{wxTreeItemId}{\void}
+
+Default constructor. wxTreemItemIds are not meant to be constructed explicitly by
+the user; they are returned by the \helpref{wxTreeCtrl}{wxtreectrl} functions instead.
+
+
+\membersection{wxTreeItemId::IsOk}\label{wxtreeitemidisok}
+
+\constfunc{bool}{IsOk}{}
+
+Returns \true if this instance is referencing a valid tree item.
+
+
+\membersection{Operators}\label{wxtreeitemidoperators}
+
+\constfunc{void}{operator $!$}{}
+
+Antonym of \helpref{IsOk}{wxtreeitemidisok}, i.e. returns \true only if the
+item is not valid.
+
+
+\constfunc{bool}{operator $==$}{\param{const wxTreeItemId\& }{item}}
+
+\constfunc{bool}{operator $!=$}{\param{const wxTreeItemId\& }{item}}
-Sorts the children of the given item in ascending alphabetical order.
+Operators for comparison between \helpref{wxTreeItemId}{wxtreeitemid} objects.