]>
git.saurik.com Git - wxWidgets.git/blob - interface/wx/treectrl.h
   1 ///////////////////////////////////////////////////////////////////////////// 
   3 // Purpose:     interface of wxTreeItemData 
   4 // Author:      wxWidgets team 
   6 // Licence:     wxWindows license 
   7 ///////////////////////////////////////////////////////////////////////////// 
  13     A tree control presents information as a hierarchy, with items that may be 
  14     expanded to show further items. Items in a tree control are referenced by 
  15     wxTreeItemId handles, which may be tested for validity by calling 
  18     A similar control with a fully native implemtation for GTK+ and OS X 
  19     as well is wxDataViewTreeCtrl. 
  21     To intercept events from a tree control, use the event table macros 
  22     described in wxTreeEvent. 
  25     @style{wxTR_EDIT_LABELS} 
  26         Use this style if you wish the user to be able to edit labels in the 
  28     @style{wxTR_NO_BUTTONS} 
  29         For convenience to document that no buttons are to be drawn. 
  30     @style{wxTR_HAS_BUTTONS} 
  31         Use this style to show + and - buttons to the left of parent items. 
  33         Use this style to hide vertical level connectors. 
  34     @style{wxTR_FULL_ROW_HIGHLIGHT} 
  35         Use this style to have the background colour and the selection highlight 
  36         extend over the entire horizontal row of the tree control window. (This 
  37         flag is ignored under Windows unless you specify @c wxTR_NO_LINES as 
  39     @style{wxTR_LINES_AT_ROOT} 
  40         Use this style to show lines between root nodes. Only applicable if @c 
  41         wxTR_HIDE_ROOT is set and @c wxTR_NO_LINES is not set. 
  42     @style{wxTR_HIDE_ROOT} 
  43         Use this style to suppress the display of the root node, effectively 
  44         causing the first-level nodes to appear as a series of root nodes. 
  45     @style{wxTR_ROW_LINES} 
  46         Use this style to draw a contrasting border between displayed rows. 
  47     @style{wxTR_HAS_VARIABLE_ROW_HEIGHT} 
  48         Use this style to cause row heights to be just big enough to fit the 
  49         content. If not set, all rows use the largest row height. The default is 
  50         that this flag is unset. Generic only. 
  52         For convenience to document that only one item may be selected at a 
  53         time. Selecting another item causes the current selection, if any, to be 
  54         deselected. This is the default. 
  56         Use this style to allow a range of items to be selected. If a second 
  57         range is selected, the current range, if any, is deselected. 
  58     @style{wxTR_DEFAULT_STYLE} 
  59         The set of flags that are closest to the defaults for the native control 
  60         for a particular toolkit. 
  63     @beginEventTable{wxTreeEvent} 
  64     @event{EVT_TREE_BEGIN_DRAG(id, func)} 
  65           Begin dragging with the left mouse button. 
  66           If you want to enable left-dragging you need to intercept this event 
  67           and explicitely call wxTreeEvent::Allow(), as it's vetoed by default. 
  68     @event{EVT_TREE_BEGIN_RDRAG(id, func)} 
  69           Begin dragging with the right mouse button. 
  70           If you want to enable right-dragging you need to intercept this event 
  71           and explicitely call wxTreeEvent::Allow(), as it's vetoed by default. 
  72     @event{EVT_TREE_END_DRAG(id, func)} 
  73           End dragging with the left or right mouse button. 
  74     @event{EVT_TREE_BEGIN_LABEL_EDIT(id, func)} 
  75           Begin editing a label. This can be prevented by calling Veto(). 
  76     @event{EVT_TREE_END_LABEL_EDIT(id, func)} 
  77           Finish editing a label. This can be prevented by calling Veto(). 
  78     @event{EVT_TREE_DELETE_ITEM(id, func)} 
  80     @event{EVT_TREE_GET_INFO(id, func)} 
  81           Request information from the application. 
  82     @event{EVT_TREE_SET_INFO(id, func)} 
  83           Information is being supplied. 
  84     @event{EVT_TREE_ITEM_ACTIVATED(id, func)} 
  85           The item has been activated, i.e. chosen by double clicking it with 
  86           mouse or from keyboard. 
  87     @event{EVT_TREE_ITEM_COLLAPSED(id, func)} 
  88           The item has been collapsed. 
  89     @event{EVT_TREE_ITEM_COLLAPSING(id, func)} 
  90           The item is being collapsed. This can be prevented by calling Veto(). 
  91     @event{EVT_TREE_ITEM_EXPANDED(id, func)} 
  92           The item has been expanded. 
  93     @event{EVT_TREE_ITEM_EXPANDING(id, func)} 
  94           The item is being expanded. This can be prevented by calling Veto(). 
  95     @event{EVT_TREE_ITEM_RIGHT_CLICK(id, func)} 
  96           The user has clicked the item with the right mouse button. 
  97     @event{EVT_TREE_ITEM_MIDDLE_CLICK(id, func)} 
  98           The user has clicked the item with the middle mouse button. 
  99     @event{EVT_TREE_SEL_CHANGED(id, func)} 
 100           Selection has changed. 
 101     @event{EVT_TREE_SEL_CHANGING(id, func)} 
 102           Selection is changing. This can be prevented by calling Veto(). 
 103     @event{EVT_TREE_KEY_DOWN(id, func)} 
 104           A key has been pressed. 
 105     @event{EVT_TREE_ITEM_GETTOOLTIP(id, func)} 
 106           The opportunity to set the item tooltip is being given to the application 
 107           (call wxTreeEvent::SetToolTip). Windows only. 
 108     @event{EVT_TREE_ITEM_MENU(id, func)} 
 109           The context menu for the selected item has been requested, either by a 
 110           right click or by using the menu key. 
 111     @event{EVT_TREE_STATE_IMAGE_CLICK(id, func)} 
 112           The state image has been clicked. Windows only. 
 116     See also @ref overview_windowstyles. 
 120     wxTreeCtrl class uses the standard common treeview control under Win32 
 121     implemented in the system library comctl32.dll. Some versions of this 
 122     library are known to have bugs with handling the tree control colours: the 
 123     usual symptom is that the expanded items leave black (or otherwise 
 124     incorrectly coloured) background behind them, especially for the controls 
 125     using non-default background colour. The recommended solution is to upgrade 
 126     the comctl32.dll to a newer version: see 
 127     http://www.microsoft.com/downloads/details.aspx?familyid=cb2cf3a2-8025-4e8f-8511-9b476a8d35d2 
 131     @appearance{treectrl.png} 
 133     @see wxDataViewTreeCtrl, wxTreeEvent, wxTreeItemData, @ref overview_treectrl, 
 134          wxListBox, wxListCtrl, wxImageList 
 136 class wxTreeCtrl 
: public wxControl
 
 145         Constructor, creating and showing a tree control. 
 148             Parent window. Must not be @NULL. 
 150             Window identifier. The value @c wxID_ANY indicates a default value. 
 154             Window size. If wxDefaultSize is specified then the window is sized 
 157             Window style. See wxTreeCtrl. 
 163         @see Create(), wxValidator 
 165     wxTreeCtrl(wxWindow
* parent
, wxWindowID id 
= wxID_ANY
, 
 166                const wxPoint
& pos 
= wxDefaultPosition
, 
 167                const wxSize
& size 
= wxDefaultSize
, 
 168                long style 
= wxTR_DEFAULT_STYLE
, 
 169                const wxValidator
& validator 
= wxDefaultValidator
, 
 170                const wxString
& name 
= wxTreeCtrlNameStr
); 
 174         Destructor, destroying the tree control. 
 176     virtual ~wxTreeCtrl(); 
 179         Adds the root node to the tree, returning the new item. 
 181         The @a image and @a selImage parameters are an index within the normal 
 182         image list specifying the image to use for unselected and selected 
 183         items, respectively. If @a image -1 and @a selImage is -1, the same 
 184         image is used for both selected and unselected items. 
 186     virtual wxTreeItemId 
AddRoot(const wxString
& text
, int image 
= -1, 
 188                                  wxTreeItemData
* data 
= NULL
); 
 191         Appends an item to the end of the branch identified by @a parent, return 
 194         The @a image and @a selImage parameters are an index within the normal 
 195         image list specifying the image to use for unselected and selected 
 196         items, respectively. If @a image -1 and @a selImage is -1, the same 
 197         image is used for both selected and unselected items. 
 199     wxTreeItemId 
AppendItem(const wxTreeItemId
& parent
, 
 200                             const wxString
& text
, 
 203                             wxTreeItemData
* data 
= NULL
); 
 206         Sets the buttons image list. The button images assigned with this method 
 207         will be automatically deleted by wxTreeCtrl as appropriate (i.e. it 
 208         takes ownership of the list). 
 210         Setting or assigning the button image list enables the display of image 
 211         buttons. Once enabled, the only way to disable the display of button 
 212         images is to set the button image list to @NULL. 
 214         This function is only available in the generic version. 
 216         @see SetButtonsImageList(). 
 218     void AssignButtonsImageList(wxImageList
* imageList
); 
 221         Sets the normal image list. The image list assigned with this method 
 222         will be automatically deleted by wxTreeCtrl as appropriate (i.e. it 
 223         takes ownership of the list). 
 227     void AssignImageList(wxImageList
* imageList
); 
 230         Sets the state image list. Image list assigned with this method will be 
 231         automatically deleted by wxTreeCtrl as appropriate (i.e. it takes 
 232         ownership of the list). 
 234         @see SetStateImageList(). 
 236     void AssignStateImageList(wxImageList
* imageList
); 
 239         Collapses the given item. 
 241     virtual void Collapse(const wxTreeItemId
& item
); 
 244         Collapses the root item. 
 251         Collapses this item and all of its children, recursively. 
 253         @see ExpandAllChildren() 
 255     void CollapseAllChildren(const wxTreeItemId
& item
); 
 258         Collapses the given item and removes all children. 
 260     virtual void CollapseAndReset(const wxTreeItemId
& item
); 
 263         Creates the tree control. 
 264         See wxTreeCtrl::wxTreeCtrl() for further details. 
 266     bool Create(wxWindow
* parent
, wxWindowID id 
= wxID_ANY
, 
 267                 const wxPoint
& pos 
= wxDefaultPosition
, 
 268                 const wxSize
& size 
= wxDefaultSize
, 
 269                 long style 
= wxTR_DEFAULT_STYLE
, 
 270                 const wxValidator
& validator 
= wxDefaultValidator
, 
 271                 const wxString
& name 
= wxTreeCtrlNameStr
); 
 274         Deletes the specified item. A @c EVT_TREE_DELETE_ITEM event will be 
 277         This function may cause a subsequent call to GetNextChild() to fail. 
 279     virtual void Delete(const wxTreeItemId
& item
); 
 282         Deletes all items in the control. Note that this may not generate 
 283         @c EVT_TREE_DELETE_ITEM events under some Windows versions although 
 284         normally such event is generated for each removed item. 
 286     virtual void DeleteAllItems(); 
 289         Deletes all children of the given item (but not the item itself). Note 
 290         that this will @b not generate any events unlike Delete() method. 
 292         If you have called SetItemHasChildren(), you may need to call it again 
 293         since DeleteChildren() does not automatically clear the setting. 
 295     virtual void DeleteChildren(const wxTreeItemId
& item
); 
 298         Starts editing the label of the given @a item. This function generates a 
 299         @c EVT_TREE_BEGIN_LABEL_EDIT event which can be vetoed so that no text 
 300         control will appear for in-place editing. 
 302         If the user changed the label (i.e. s/he does not press ESC or leave the 
 303         text control without changes, a @c EVT_TREE_END_LABEL_EDIT event will be 
 304         sent which can be vetoed as well. 
 306         @see EndEditLabel(), wxTreeEvent 
 308     virtual wxTextCtrl 
*EditLabel(const wxTreeItemId
& item
, 
 309                                   wxClassInfo
* textCtrlClass 
= CLASSINFO(wxTextCtrl
)); 
 312         Ends label editing. If @a cancelEdit is @true, the edit will be 
 316             This function is currently supported under Windows only. 
 320     virtual void EndEditLabel(const wxTreeItemId
& item
, bool discardChanges 
= false); 
 323         Scrolls and/or expands items to ensure that the given item is visible. 
 325     virtual void EnsureVisible(const wxTreeItemId
& item
); 
 328         Expands the given item. 
 330     virtual void Expand(const wxTreeItemId
& item
); 
 333         Expands all items in the tree. 
 338         Expands the given item and all its children recursively. 
 340     void ExpandAllChildren(const wxTreeItemId
& item
); 
 343         Retrieves the rectangle bounding the @a item. If @a textOnly is @true, 
 344         only the rectangle around the item's label will be returned, otherwise 
 345         the item's image is also taken into account. 
 347         The return value is @true if the rectangle was successfully retrieved or 
 348         @c @false if it was not (in this case @a rect is not changed) -- for 
 349         example, if the item is currently invisible. 
 351         Notice that the rectangle coordinates are logical, not physical ones. 
 352         So, for example, the x coordinate may be negative if the tree has a 
 353         horizontal scrollbar and its position is not 0. 
 356         The wxPython version of this method requires only the @a item and @a 
 357         textOnly parameters. The return value is either a wxRect object or @c 
 361     virtual bool GetBoundingRect(const wxTreeItemId
& item
, wxRect
& rect
, 
 362                                  bool textOnly 
= false) const; 
 365         Returns the buttons image list (from which application-defined button 
 368         This function is only available in the generic version. 
 370     wxImageList
* GetButtonsImageList() const; 
 373         Returns the number of items in the branch. If @a recursively is @true, 
 374         returns the total number of descendants, otherwise only one level of 
 377     virtual size_t GetChildrenCount(const wxTreeItemId
& item
, 
 378                                     bool recursively 
= true) const; 
 381         Returns the number of items in the control. 
 383     virtual unsigned int GetCount() const; 
 386         Returns the edit control being currently used to edit a label. Returns 
 387         @NULL if no label is being edited. 
 389         @note This is currently only implemented for wxMSW. 
 391     virtual wxTextCtrl
* GetEditControl() const; 
 394         Returns the first child; call GetNextChild() for the next child. 
 396         For this enumeration function you must pass in a 'cookie' parameter 
 397         which is opaque for the application but is necessary for the library to 
 398         make these functions reentrant (i.e. allow more than one enumeration on 
 399         one and the same object simultaneously). The cookie passed to 
 400         GetFirstChild() and GetNextChild() should be the same variable. 
 402         Returns an invalid tree item (i.e. wxTreeItemId::IsOk() returns @false) 
 403         if there are no further children. 
 406         In wxPython the returned wxTreeItemId and the new cookie value are both 
 407         returned as a tuple containing the two values. 
 410         @see GetNextChild(), GetNextSibling() 
 412     virtual wxTreeItemId 
GetFirstChild(const wxTreeItemId
& item
, 
 413                                        wxTreeItemIdValue
& cookie
) const; 
 416         Returns the first visible item. 
 418     virtual wxTreeItemId 
GetFirstVisibleItem() const; 
 421         Returns the normal image list. 
 423     wxImageList
* GetImageList() const; 
 426         Returns the current tree control indentation. 
 428     virtual unsigned int GetIndent() const; 
 431         Returns the background colour of the item. 
 433     virtual wxColour 
GetItemBackgroundColour(const wxTreeItemId
& item
) const; 
 436         Returns the tree item data associated with the item. 
 441         wxPython provides the following shortcut method: 
 442         @li GetPyData(item): Returns the Python Object associated with the 
 443             wxTreeItemData for the given item Id. 
 446     virtual wxTreeItemData
* GetItemData(const wxTreeItemId
& item
) const; 
 449         Returns the font of the item label. 
 451     virtual wxFont 
GetItemFont(const wxTreeItemId
& item
) const; 
 454         Gets the specified item image. The value of @a which may be: 
 455         - ::wxTreeItemIcon_Normal: to get the normal item image. 
 456         - ::wxTreeItemIcon_Selected: to get the selected item image (i.e. the 
 457             image which is shown when the item is currently selected). 
 458         - ::wxTreeItemIcon_Expanded: to get the expanded image (this only makes 
 459             sense for items which have children - then this image is shown when 
 460             the item is expanded and the normal image is shown when it is 
 462         - ::wxTreeItemIcon_SelectedExpanded: to get the selected expanded image 
 463             (which is shown when an expanded item is currently selected). 
 465     virtual int GetItemImage(const wxTreeItemId
& item
, 
 466                              wxTreeItemIcon which 
= wxTreeItemIcon_Normal
) const; 
 469         Returns the item's parent. 
 471     virtual wxTreeItemId 
GetItemParent(const wxTreeItemId
& item
) const; 
 474         Gets the specified item state. 
 476     int GetItemState(const wxTreeItemId
& item
) const; 
 479         Returns the item label. 
 481     virtual wxString 
GetItemText(const wxTreeItemId
& item
) const; 
 484         Returns the colour of the item label. 
 486     virtual wxColour 
GetItemTextColour(const wxTreeItemId
& item
) const; 
 489         Returns the last child of the item (or an invalid tree item if this item 
 492         @see GetFirstChild(), GetNextSibling(), GetLastChild() 
 494     virtual wxTreeItemId 
GetLastChild(const wxTreeItemId
& item
) const; 
 497         Returns the next child; call GetFirstChild() for the first child. For 
 498         this enumeration function you must pass in a 'cookie' parameter which is 
 499         opaque for the application but is necessary for the library to make 
 500         these functions reentrant (i.e. allow more than one enumeration on one 
 501         and the same object simultaneously). The cookie passed to 
 502         GetFirstChild() and GetNextChild() should be the same. 
 504         Returns an invalid tree item if there are no further children. 
 507         In wxPython the returned wxTreeItemId and the new cookie value are both 
 508         returned as a tuple containing the two values. 
 513     virtual wxTreeItemId 
GetNextChild(const wxTreeItemId
& item
, 
 514                                       wxTreeItemIdValue
& cookie
) const; 
 517         Returns the next sibling of the specified item; call GetPrevSibling() 
 518         for the previous sibling. 
 520         Returns an invalid tree item if there are no further siblings. 
 522         @see GetPrevSibling() 
 524     virtual wxTreeItemId 
GetNextSibling(const wxTreeItemId
& item
) const; 
 527         Returns the next visible item or an invalid item if this item is the 
 530         @note The @a item itself must be visible. 
 532     virtual wxTreeItemId 
GetNextVisible(const wxTreeItemId
& item
) const; 
 535         Returns the previous sibling of the specified item; call 
 536         GetNextSibling() for the next sibling. 
 538         Returns an invalid tree item if there are no further children. 
 540         @see GetNextSibling() 
 542     virtual wxTreeItemId 
GetPrevSibling(const wxTreeItemId
& item
) const; 
 545         Returns the previous visible item or an invalid item if this item is the 
 548         @note The @a item itself must be visible. 
 550     virtual wxTreeItemId 
GetPrevVisible(const wxTreeItemId
& item
) const; 
 553         Returns @true if the control will use a quick calculation for the best 
 554         size, looking only at the first and last items. The default is @false. 
 556         @see SetQuickBestSize() 
 558     bool GetQuickBestSize() const; 
 561         Returns the root item for the tree control. 
 563     virtual wxTreeItemId 
GetRootItem() const; 
 566         Returns the selection, or an invalid item if there is no selection. This 
 567         function only works with the controls without @c wxTR_MULTIPLE style, 
 568         use GetSelections() for the controls which do have this style. 
 570     virtual wxTreeItemId 
GetSelection() const; 
 573         Fills the array of tree items passed in with the currently selected 
 574         items. This function can be called only if the control has the @c 
 577         Returns the number of selected items. 
 580         The wxPython version of this method accepts no parameters and returns a 
 581         Python list of @ref wxTreeItemId "wxTreeItemId"s. 
 584     virtual size_t GetSelections(wxArrayTreeItemIds
& selection
) const; 
 587         Returns the state image list (from which application-defined state 
 590     wxImageList
* GetStateImageList() const; 
 593         Calculates which (if any) item is under the given @a point, returning 
 594         the tree item id at this point plus extra information @a flags. @a flags 
 595         is a bitlist of the following: 
 597         - @c wxTREE_HITTEST_ABOVE: Above the client area. 
 598         - @c wxTREE_HITTEST_BELOW: Below the client area. 
 599         - @c wxTREE_HITTEST_NOWHERE: In the client area but below the last item. 
 600         - @c wxTREE_HITTEST_ONITEMBUTTON: On the button associated with an item. 
 601         - @c wxTREE_HITTEST_ONITEMICON: On the bitmap associated with an item. 
 602         - @c wxTREE_HITTEST_ONITEMINDENT: In the indentation associated with an item. 
 603         - @c wxTREE_HITTEST_ONITEMLABEL: On the label (string) associated with an item. 
 604         - @c wxTREE_HITTEST_ONITEMRIGHT: In the area to the right of an item. 
 605         - @c wxTREE_HITTEST_ONITEMSTATEICON: On the state icon for a tree view 
 606           item that is in a user-defined state. 
 607         - @c wxTREE_HITTEST_TOLEFT: To the right of the client area. 
 608         - @c wxTREE_HITTEST_TORIGHT: To the left of the client area. 
 611         In wxPython both the wxTreeItemId and the flags are returned as a tuple. 
 614     wxTreeItemId 
HitTest(const wxPoint
& point
, int& flags
) const; 
 618         Inserts an item after a given one (@a previous). 
 620         The @a image and @a selImage parameters are an index within the normal 
 621         image list specifying the image to use for unselected and selected 
 622         items, respectively. If @a image -1 and @a selImage is -1, the same 
 623         image is used for both selected and unselected items. 
 625     wxTreeItemId 
InsertItem(const wxTreeItemId
& parent
, 
 626                             const wxTreeItemId
& previous
, 
 627                             const wxString
& text
, 
 630                             wxTreeItemData
* data 
= NULL
); 
 633         Inserts an item before one identified 
 634         by its position (@a before). @a before must be less than the number of 
 637         The @a image and @a selImage parameters are an index within the normal 
 638         image list specifying the image to use for unselected and selected 
 639         items, respectively. If @a image -1 and @a selImage is -1, the same 
 640         image is used for both selected and unselected items. 
 643         In wxPython, this form of this method is called @c InsertItemBefore(). 
 646     wxTreeItemId 
InsertItem(const wxTreeItemId
& parent
, 
 648                             const wxString
& text
, 
 651                             wxTreeItemData
* data 
= NULL
); 
 654         Returns @true if the given item is in bold state. 
 658     virtual bool IsBold(const wxTreeItemId
& item
) const; 
 661         Returns @true if the control is empty (i.e. has no items, even no root 
 664     bool IsEmpty() const; 
 667         Returns @true if the item is expanded (only makes sense if it has 
 670     virtual bool IsExpanded(const wxTreeItemId
& item
) const; 
 673         Returns @true if the item is selected. 
 675     virtual bool IsSelected(const wxTreeItemId
& item
) const; 
 678         Returns @true if the item is visible on the screen. 
 680     virtual bool IsVisible(const wxTreeItemId
& item
) const; 
 683         Returns @true if the item has children. 
 685     virtual bool ItemHasChildren(const wxTreeItemId
& item
) const; 
 688         Override this function in the derived class to change the sort order of 
 689         the items in the tree control. The function should return a negative, 
 690         zero or positive value if the first item is less than, equal to or 
 691         greater than the second one. 
 693         Please note that you @b must use wxRTTI macros DECLARE_DYNAMIC_CLASS() 
 694         and IMPLEMENT_DYNAMIC_CLASS() if you override this function because 
 695         otherwise the base class considers that it is not overridden and uses 
 696         the default comparison, i.e. sorts the items alphabetically, which 
 697         allows it optimize away the calls to the virtual function completely. 
 701     virtual int OnCompareItems(const wxTreeItemId
& item1
, 
 702                                const wxTreeItemId
& item2
); 
 705         Appends an item as the first child of @a parent, return a new item id. 
 707         The @a image and @a selImage parameters are an index within the normal 
 708         image list specifying the image to use for unselected and selected 
 709         items, respectively. If @a image -1 and @a selImage is -1, the same 
 710         image is used for both selected and unselected items. 
 712     wxTreeItemId 
PrependItem(const wxTreeItemId
& parent
, 
 713                              const wxString
& text
, 
 716                              wxTreeItemData
* data 
= NULL
); 
 719         Scrolls the specified item into view. 
 721     virtual void ScrollTo(const wxTreeItemId
& item
); 
 724         Selects the given item. In multiple selection controls, can be also used 
 725         to deselect a currently selected item if the value of @a select is 
 728     virtual void SelectItem(const wxTreeItemId
& item
, bool select 
= true); 
 731         Sets the buttons image list (from which application-defined button 
 734         The button images assigned with this method will @b not be deleted by 
 735         @ref wxTreeCtrl "wxTreeCtrl"'s destructor, you must delete it yourself. 
 736         Setting or assigning the button image list enables the display of image 
 737         buttons. Once enabled, the only way to disable the display of button 
 738         images is to set the button image list to @NULL. 
 740         @note This function is only available in the generic version. 
 742         @see AssignButtonsImageList(). 
 744     void SetButtonsImageList(wxImageList
* imageList
); 
 747         Sets the normal image list. The image list assigned with this method 
 748         will @b not be deleted by @ref wxTreeCtrl "wxTreeCtrl"'s destructor, you 
 749         must delete it yourself. 
 751         @see AssignImageList(). 
 753     virtual void SetImageList(wxImageList
* imageList
); 
 756         Sets the indentation for the tree control. 
 758     virtual void SetIndent(unsigned int indent
); 
 761         Sets the colour of the item's background. 
 763     virtual void SetItemBackgroundColour(const wxTreeItemId
& item
, 
 764                                          const wxColour
& col
); 
 767         Makes item appear in bold font if @a bold parameter is @true or resets 
 768         it to the normal state. 
 772     virtual void SetItemBold(const wxTreeItemId
& item
, bool bold 
= true); 
 775         Sets the item client data. 
 778         - @b SetPyData( @a item, @c obj): Associate the given Python Object with 
 779             the wxTreeItemData for the given item Id. 
 783     virtual void SetItemData(const wxTreeItemId
& item
, wxTreeItemData
* data
); 
 787         Gives the item the visual feedback for Drag'n'Drop actions, which is 
 788         useful if something is dragged from the outside onto the tree control 
 789         (as opposed to a DnD operation within the tree control, which already 
 790         is implemented internally). 
 792     virtual void SetItemDropHighlight(const wxTreeItemId
& item
, 
 793                                       bool highlight 
= true); 
 796         Sets the item's font. All items in the tree should have the same height 
 797         to avoid text clipping, so the fonts height should be the same for all 
 798         of them, although font attributes may vary. 
 802     virtual void SetItemFont(const wxTreeItemId
& item
, const wxFont
& font
); 
 805         Force appearance of the button next to the item. This is useful to 
 806         allow the user to expand the items which don't have any children now, 
 807         but instead adding them only when needed, thus minimizing memory 
 808         usage and loading time. 
 810     virtual void SetItemHasChildren(const wxTreeItemId
& item
, 
 811                                     bool hasChildren 
= true); 
 814         Sets the specified item's image. See GetItemImage() for the description 
 815         of the @a which parameter. 
 817     virtual void SetItemImage(const wxTreeItemId
& item
, int image
, 
 818                               wxTreeItemIcon which 
= wxTreeItemIcon_Normal
); 
 821         Sets the specified item state. The value of @a state may be: 
 822         - @c wxTREE_ITEMSTATE_NONE: to disable the item state (the state image will 
 824         - @c wxTREE_ITEMSTATE_NEXT: to set the next item state. 
 825         - @c wxTREE_ITEMSTATE_PREV: to set the previous item state. 
 827     void SetItemState(const wxTreeItemId
& item
, int state
); 
 832     virtual void SetItemText(const wxTreeItemId
& item
, const wxString
& text
); 
 835         Sets the colour of the item's text. 
 837     virtual void SetItemTextColour(const wxTreeItemId
& item
, 
 838                                    const wxColour
& col
); 
 841         If @true is passed, specifies that the control will use a quick 
 842         calculation for the best size, looking only at the first and last items. 
 843         Otherwise, it will look at all items. The default is @false. 
 845         @see GetQuickBestSize() 
 847     void SetQuickBestSize(bool quickBestSize
); 
 850         Sets the state image list (from which application-defined state images 
 851         are taken). Image list assigned with this method will @b not be deleted 
 852         by @ref wxTreeCtrl "wxTreeCtrl"'s destructor, you must delete it 
 855         @see AssignStateImageList(). 
 857     virtual void SetStateImageList(wxImageList
* imageList
); 
 860         Sets the mode flags associated with the display of the tree control. The 
 861         new mode takes effect immediately. 
 863         @note Generic only; MSW ignores changes. 
 865     void SetWindowStyle(long styles
); 
 868         Sorts the children of the given item using OnCompareItems(). 
 869         You should override that method to change the sort order (the default is 
 870         ascending case-sensitive alphabetical order). 
 872         @see wxTreeItemData, OnCompareItems() 
 874     virtual void SortChildren(const wxTreeItemId
& item
); 
 877         Toggles the given item between collapsed and expanded states. 
 879     virtual void Toggle(const wxTreeItemId
& item
); 
 882         Toggles the given item between selected and unselected states. For 
 883         multiselection controls only. 
 885     void ToggleItemSelection(const wxTreeItemId
& item
); 
 888         Removes the selection from the currently selected item (if any). 
 890     virtual void Unselect(); 
 893         This function either behaves the same as Unselect() if the control 
 894         doesn't have @c wxTR_MULTIPLE style, or removes the selection from all 
 895         items if it does have this style. 
 897     virtual void UnselectAll(); 
 900         Unselects the given item. This works in multiselection controls only. 
 902     void UnselectItem(const wxTreeItemId
& item
); 
 910     A tree event holds information about events associated with wxTreeCtrl 
 913     To process input from a tree control, use these event handler macros to 
 914     direct input to member functions that take a wxTreeEvent argument. 
 916     @beginEventTable{wxTreeEvent} 
 917     @event{EVT_TREE_BEGIN_DRAG(id, func)} 
 918         Begin dragging with the left mouse button. 
 919           If you want to enable left-dragging you need to intercept this event 
 920           and explicitely call wxTreeEvent::Allow(), as it's vetoed by default. 
 921     @event{EVT_TREE_BEGIN_RDRAG(id, func)} 
 922           Begin dragging with the right mouse button. 
 923           If you want to enable right-dragging you need to intercept this event 
 924           and explicitely call wxTreeEvent::Allow(), as it's vetoed by default. 
 925     @event{EVT_TREE_END_DRAG(id, func)} 
 926         End dragging with the left or right mouse button. 
 927     @event{EVT_TREE_BEGIN_LABEL_EDIT(id, func)} 
 928         Begin editing a label. This can be prevented by calling Veto(). 
 929     @event{EVT_TREE_END_LABEL_EDIT(id, func)} 
 930         Finish editing a label. This can be prevented by calling Veto(). 
 931     @event{EVT_TREE_DELETE_ITEM(id, func)} 
 933     @event{EVT_TREE_GET_INFO(id, func)} 
 934         Request information from the application. 
 935     @event{EVT_TREE_SET_INFO(id, func)} 
 936         Information is being supplied. 
 937     @event{EVT_TREE_ITEM_ACTIVATED(id, func)} 
 938         The item has been activated, i.e. chosen by double clicking it with 
 939         mouse or from keyboard. 
 940     @event{EVT_TREE_ITEM_COLLAPSED(id, func)} 
 941         The item has been collapsed. 
 942     @event{EVT_TREE_ITEM_COLLAPSING(id, func)} 
 943         The item is being collapsed. This can be prevented by calling Veto(). 
 944     @event{EVT_TREE_ITEM_EXPANDED(id, func)} 
 945         The item has been expanded. 
 946     @event{EVT_TREE_ITEM_EXPANDING(id, func)} 
 947         The item is being expanded. This can be prevented by calling Veto(). 
 948     @event{EVT_TREE_ITEM_RIGHT_CLICK(id, func)} 
 949         The user has clicked the item with the right mouse button. 
 950     @event{EVT_TREE_ITEM_MIDDLE_CLICK(id, func)} 
 951         The user has clicked the item with the middle mouse button. 
 952     @event{EVT_TREE_SEL_CHANGED(id, func)} 
 953         Selection has changed. 
 954     @event{EVT_TREE_SEL_CHANGING(id, func)} 
 955         Selection is changing. This can be prevented by calling Veto(). 
 956     @event{EVT_TREE_KEY_DOWN(id, func)} 
 957         A key has been pressed. 
 958     @event{EVT_TREE_ITEM_GETTOOLTIP(id, func)} 
 959         The opportunity to set the item tooltip is being given to the 
 960         application (call SetToolTip()). Windows only. 
 961     @event{EVT_TREE_ITEM_MENU(id, func)} 
 962         The context menu for the selected item has been requested, either by a 
 963         right click or by using the menu key. 
 964     @event{EVT_TREE_STATE_IMAGE_CLICK(id, func)} 
 965         The state image has been clicked. 
 973 class wxTreeEvent 
: public wxNotifyEvent
 
 977         Constructor, used by wxWidgets itself only. 
 979     wxTreeEvent(wxEventType commandType
, wxTreeCtrl
* tree
, 
 980                 const wxTreeItemId
& item 
= wxTreeItemId()); 
 983         Returns the item (valid for all events). 
 985     wxTreeItemId 
GetItem() const; 
 988         Returns the key code if the event is a key event. Use GetKeyEvent() to 
 989         get the values of the modifier keys for this event (i.e. Shift or Ctrl). 
 991     int GetKeyCode() const; 
 994         Returns the key event for @c EVT_TREE_KEY_DOWN events. 
 996     const wxKeyEvent
& GetKeyEvent() const; 
 999         Returns the label if the event is a begin or end edit label event. 
1001     const wxString
& GetLabel() const; 
1004         Returns the old item index (valid for @c EVT_TREE_ITEM_CHANGING and 
1005         @c EVT_TREE_ITEM_CHANGED events). 
1007     wxTreeItemId 
GetOldItem() const; 
1010         Returns the position of the mouse pointer if the event is a drag or 
1013         In both cases the position is in client coordinates - i.e. relative to 
1014         the wxTreeCtrl window (so that you can pass it directly to e.g. 
1015         wxWindow::PopupMenu()). 
1017     wxPoint 
GetPoint() const; 
1020         Returns @true if the label edit was cancelled. This should be called 
1021         from within an @c EVT_TREE_END_LABEL_EDIT handler. 
1023     bool IsEditCancelled() const; 
1026         Set the tooltip for the item (valid for @c EVT_TREE_ITEM_GETTOOLTIP 
1027         events). Windows only. 
1029     void SetToolTip(const wxString
& tooltip
);