]> git.saurik.com Git - wxWidgets.git/blobdiff - docs/latex/wx/treectrl.tex
A fix for attribrute sorting, but it's still broken if there are
[wxWidgets.git] / docs / latex / wx / treectrl.tex
index b12fc3658bb04b6a5e9b300f1f0f8730d54fa9db..fc720bd22099bfd569b9d1793d2d22f922384b14 100644 (file)
@@ -22,6 +22,10 @@ To intercept events from a tree control, use the event table macros described in
 \begin{twocollist}\itemsep=0pt
 \twocolitem{\windowstyle{wxTR\_HAS\_BUTTONS}}{Use this style to show + and - buttons to the
 left of parent items. Win32 only. }
+\twocolitem{\windowstyle{wxTR\_NO\_LINES}}{Use this style to hide vertical lines.
+Win32 only. }
+\twocolitem{\windowstyle{wxTR\_LINES\_AT\_ROOT}}{Use this style to show lines at the
+tree root. Win32 only.}
 \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\_MULTIPLE}}{Use this style to allow the user to
@@ -45,8 +49,11 @@ functions that take a \helpref{wxTreeEvent}{wxtreeevent} argument.
 \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. This can be prevented by calling \helpref{Veto()}{wxnotifyeventveto}.}
+\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\_SEL\_CHANGED(id, func)}}{Selection has changed.}
 \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.}
@@ -57,6 +64,17 @@ functions that take a \helpref{wxTreeEvent}{wxtreeevent} argument.
 \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/msdownload/ieplatform/ie/comctrlx86.asp}{http://www.microsoft.com/msdownload/ieplatform/ie/comctrlx86.asp}.
+
 \latexignore{\rtfignore{\wxheading{Members}}}
 
 \membersection{wxTreeCtrl::wxTreeCtrl}\label{wxtreectrlconstr}
@@ -118,6 +136,25 @@ Appends an item to the end of the branch identified by {\it parent}, return a ne
 If {\it image} > -1 and {\it selImage} is -1, the same image is used for
 both selected and unselected items.
 
+\membersection{wxTreeCtrl::AssignImageList}\label{wxtreectrlassignimagelist}
+
+\func{void}{AssignImageList}{\param{wxImageList*}{ imageList}}
+
+Sets the normal image list. Image list assigned with this method will
+be deleted by wxTreeCtrl's destructor (i.e. it takes ownership of it).
+
+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 deleted by wxTreeCtrl's destructor (i.e. it takes ownership of it).
+
+See also \helpref{SetStateImageList}{wxtreectrlsetstateimagelist}.
+
+
 \membersection{wxTreeCtrl::Collapse}\label{wxtreectrlcollapse}
 
 \func{void}{Collapse}{\param{const wxTreeItemId\&}{ item}}
@@ -207,6 +244,9 @@ item is currently invisible.
 {\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::GetChildrenCount}\label{wxtreectrlgetchildrencount}
 
 \constfunc{size\_t}{GetChildrenCount}{\param{const wxTreeItemId\&}{ item}, \param{bool}{ recursively = TRUE}}
@@ -247,6 +287,9 @@ Returns an invalid tree item if there are no further children.
 \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 ( item, cookie ).}
+
 \membersection{wxTreeCtrl::GetFirstVisibleItem}\label{wxtreectrlgetfirstvisibleitem}
 
 \constfunc{wxTreeItemId}{GetFirstVisibleItem}{\void}
@@ -275,19 +318,30 @@ Returns the tree item data associated with the item.
 
 \helpref{wxTreeItemData}{wxtreeitemdata}
 
-\pythonnote{wxPython provides the following shortcut method:\par
-\indented{2cm}{\begin{twocollist}
+\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::GetItemImage}\label{wxtreectrlgetitemimage}
 
 \constfunc{int}{GetItemImage}{\param{const wxTreeItemId\& }{item},
-\param{wxTreeItemIcon }{which = wxTreeItemIcon\_Normal}}
+ \param{wxTreeItemIcon }{which = wxTreeItemIcon\_Normal}}
 
 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
@@ -337,6 +391,9 @@ Returns an invalid tree item if there are no further children.
 \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
+  ( item, cookie ), instead of modifying its parameters.}
+
 \membersection{wxTreeCtrl::GetNextSibling}\label{wxtreectrlgetnextsibling}
 
 \constfunc{wxTreeItemId}{GetNextSibling}{\param{const wxTreeItemId\&}{ item}}
@@ -393,7 +450,7 @@ Returns the root item for the tree control.
 \constfunc{int}{GetItemSelectedImage}{\param{const wxTreeItemId\& }{item}}
 
 Gets the selected item image (this function is obsolete, use
-{\tt GetItemImage(item, wxTreeItemIcon\_Selected} instead).
+{\tt GetItemImage(item, wxTreeItemIcon\_Selected}) instead).
 
 \membersection{wxTreeCtrl::GetSelection}\label{wxtreectrlgetselection}
 
@@ -414,7 +471,10 @@ 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.}
+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}
 
@@ -424,10 +484,10 @@ Returns the state image list (from which application-defined state images are ta
 
 \membersection{wxTreeCtrl::HitTest}\label{wxtreectrlhittest}
 
-\func{long}{HitTest}{\param{const wxPoint\& }{point}, \param{int\& }{flags}}
+\func{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
@@ -444,16 +504,28 @@ in {\it flags}. {\it flags} is a bitlist of the following:
 \twocolitem{wxTREE\_HITTEST\_TORIGHT}{To the left of the client area.}
 \end{twocollist}
 
+\pythonnote{in wxPython both the wxTreeItemId and the flags are
+returned as a tuple.}
+
+\perlnote{In wxPerl this method only takes the {\tt point} parameter
+  and returns a 2-element list ( item, flags ).}
+
 \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 = NULL}}
 
-Inserts an item after a given one.
+\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 = NULL}}
+
+Inserts an item after a given one ({\it previous}) or before one identified by its position ({\it before}).
 
 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}}
@@ -531,7 +603,11 @@ Sets the indentation for the tree control.
 
 \func{void}{SetImageList}{\param{wxImageList*}{ imageList}}
 
-Sets the normal image list.
+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.
+
+See also \helpref{AssignImageList}{wxtreectrlassignimagelist}.
+
 
 \membersection{wxTreeCtrl::SetItemBackgroundColour}\label{wxtreectrlsetitembackgroundcolour}
 
@@ -555,12 +631,21 @@ See also: \helpref{IsBold}{wxtreectrlisbold}
 Sets the item client data.
 
 \pythonnote{wxPython provides the following shortcut method:\par
-\indented{2cm}{\begin{twocollist}
+\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{{\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::SetItemFont}\label{wxtreectrlsetitemfont}
 
 \func{void}{SetItemFont}{\param{const wxTreeItemId\&}{ item}, \param{const wxFont\& }{font}}
@@ -585,18 +670,16 @@ usage and loading time.
 \membersection{wxTreeCtrl::SetItemImage}\label{wxtreectrlsetitemimage}
 
 \func{void}{SetItemImage}{\param{const wxTreeItemId\&}{ item},
-\param{int }{image},
-\param{wxTreeItemIcon }{which = wxTreeItemIcon\_Normal}}
+ \param{int }{image}, \param{wxTreeItemIcon }{which = wxTreeItemIcon\_Normal}}
 
 Sets the specified item image. See \helpref{GetItemImage}{wxtreectrlgetitemimage}
-for the description of {\it which} parameter.
+for the description of the {\it which} parameter.
 
 \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 selected item image (this function is obsolete, use {\tt SetItemImage(item, wxTreeItemIcon\_Selected}) instead).
 
 \membersection{wxTreeCtrl::SetItemText}\label{wxtreectrlsetitemtext}
 
@@ -615,6 +698,10 @@ Sets the colour of the items text.
 \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::SortChildren}\label{wxtreectrlsortchildren}
 
@@ -622,7 +709,7 @@ Sets the state image list (from which application-defined state images are taken
 
 Sorts the children of the given item using
 \helpref{OnCompareItems}{wxtreectrloncompareitems} method of wxTreeCtrl. You
-should override that method to change the sort order (default is ascending
+should override that method to change the sort order (the default is ascending
 alphabetical order).
 
 \wxheading{See also}
@@ -689,14 +776,19 @@ associated with the tree item using the wxTreeItemData as a
 container.
 
 In addition, the following methods are added in wxPython for accessing
-the object:\par
-\indented{2cm}{\begin{twocollist}
+the object:
+
+\indented{2cm}{\begin{twocollist}\itemsep=0pt
 \twocolitem{{\bf GetData()}}{Returns a reference to the Python Object}
 \twocolitem{{\bf SetData(obj)}}{Associates a new Python Object with the
 wxTreeItemData}
 \end{twocollist}}
 }
 
+\perlnote{In wxPerl the constructor accepts as parameter an optional scalar,
+ and stores it as client data. You may retrieve this data by calling
+ {\bf GetData()}, and set it by callling {\bf SetData( data ).}
+}
 
 \membersection{wxTreeItemData::\destruct{wxTreeItemData}}