]> git.saurik.com Git - wxWidgets.git/blob - interface/treectrl.h
b67e63093354839ef5f2c93aa9918f9bfe82a13b
[wxWidgets.git] / interface / treectrl.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: treectrl.h
3 // Purpose: documentation for wxTreeItemData class
4 // Author: wxWidgets team
5 // RCS-ID: $Id$
6 // Licence: wxWindows license
7 /////////////////////////////////////////////////////////////////////////////
8
9 /**
10 @class wxTreeItemData
11 @wxheader{treectrl.h}
12
13 wxTreeItemData is some (arbitrary) user class associated with some item. The
14 main advantage of having this class is that wxTreeItemData objects are
15 destroyed automatically by the tree and, as this class has virtual destructor,
16 it means that the memory and any other resources associated with a tree item
17 will be automatically freed when it is deleted. Note that we don't use wxObject
18 as the base class for wxTreeItemData because the size of this class is
19 critical: in many applications, each tree leaf will have wxTreeItemData
20 associated with it and the number of leaves may be quite big.
21
22 Also please note that because the objects of this class are deleted by the tree
23 using the operator @c delete, they must always be allocated on the heap
24 using @c new.
25
26 @library{wxcore}
27 @category{FIXME}
28
29 @seealso
30 wxTreeCtrl
31 */
32 class wxTreeItemData : public wxClientData
33 {
34 public:
35 /**
36 Default constructor.
37
38 In addition, the following methods are added in wxPython for accessing
39 the object:
40
41 @b GetData()
42
43 Returns a reference to the Python Object
44
45 @b SetData(obj)
46
47 Associates a new Python Object with the
48 wxTreeItemData
49 */
50 wxTreeItemData();
51
52 /**
53 Virtual destructor.
54 */
55 ~wxTreeItemData();
56
57 /**
58 Returns the item associated with this node.
59 */
60 const wxTreeItemId GetId();
61
62 /**
63 Sets the item associated with this node.
64 */
65 void SetId(const wxTreeItemId& id);
66 };
67
68
69 /**
70 @class wxTreeCtrl
71 @wxheader{treectrl.h}
72
73 A tree control presents information as a hierarchy, with items that may be
74 expanded
75 to show further items. Items in a tree control are referenced by wxTreeItemId
76 handles,
77 which may be tested for validity by calling wxTreeItemId::IsOk.
78
79 To intercept events from a tree control, use the event table macros described
80 in wxTreeEvent.
81
82 @beginStyleTable
83 @style{wxTR_EDIT_LABELS}:
84 Use this style if you wish the user to be able to edit labels in
85 the tree control.
86 @style{wxTR_NO_BUTTONS}:
87 For convenience to document that no buttons are to be drawn.
88 @style{wxTR_HAS_BUTTONS}:
89 Use this style to show + and - buttons to the left of parent items.
90 @style{wxTR_NO_LINES}:
91 Use this style to hide vertical level connectors.
92 @style{wxTR_FULL_ROW_HIGHLIGHT}:
93 Use this style to have the background colour and the selection
94 highlight extend over the entire horizontal row of the tree control
95 window. (This flag is ignored under Windows unless you specify
96 wxTR_NO_LINES as well.)
97 @style{wxTR_LINES_AT_ROOT}:
98 Use this style to show lines between root nodes. Only applicable if
99 wxTR_HIDE_ROOT is set and wxTR_NO_LINES is not set.
100 @style{wxTR_HIDE_ROOT}:
101 Use this style to suppress the display of the root node,
102 effectively causing the first-level nodes to appear as a series of
103 root nodes.
104 @style{wxTR_ROW_LINES}:
105 Use this style to draw a contrasting border between displayed rows.
106 @style{wxTR_HAS_VARIABLE_ROW_HEIGHT}:
107 Use this style to cause row heights to be just big enough to fit
108 the content. If not set, all rows use the largest row height. The
109 default is that this flag is unset. Generic only.
110 @style{wxTR_SINGLE}:
111 For convenience to document that only one item may be selected at a
112 time. Selecting another item causes the current selection, if any,
113 to be deselected. This is the default.
114 @style{wxTR_MULTIPLE}:
115 Use this style to allow a range of items to be selected. If a
116 second range is selected, the current range, if any, is deselected.
117 @style{wxTR_DEFAULT_STYLE}:
118 The set of flags that are closest to the defaults for the native
119 control for a particular toolkit.
120 @endStyleTable
121
122 @library{wxcore}
123 @category{ctrl}
124 @appearance{treectrl.png}
125
126 @seealso
127 wxTreeItemData, @ref overview_wxtreectrloverview "wxTreeCtrl overview",
128 wxListBox, wxListCtrl, wxImageList, wxTreeEvent
129 */
130 class wxTreeCtrl : public wxControl
131 {
132 public:
133 //@{
134 /**
135 Constructor, creating and showing a tree control.
136
137 @param parent
138 Parent window. Must not be @NULL.
139 @param id
140 Window identifier. The value wxID_ANY indicates a default value.
141 @param pos
142 Window position.
143 @param size
144 Window size. If wxDefaultSize is specified then the window is
145 sized
146 appropriately.
147 @param style
148 Window style. See wxTreeCtrl.
149 @param validator
150 Window validator.
151 @param name
152 Window name.
153
154 @see Create(), wxValidator
155 */
156 wxTreeCtrl();
157 wxTreeCtrl(wxWindow* parent, wxWindowID id,
158 const wxPoint& pos = wxDefaultPosition,
159 const wxSize& size = wxDefaultSize,
160 long style = wxTR_HAS_BUTTONS,
161 const wxValidator& validator = wxDefaultValidator,
162 const wxString& name = "treeCtrl");
163 //@}
164
165 /**
166 Destructor, destroying the tree control.
167 */
168 ~wxTreeCtrl();
169
170 /**
171 Adds the root node to the tree, returning the new item.
172 The @a image and @a selImage parameters are an index within
173 the normal image list specifying the image to use for unselected and
174 selected items, respectively.
175 If @a image -1 and @a selImage is -1, the same image is used for
176 both selected and unselected items.
177 */
178 wxTreeItemId AddRoot(const wxString& text, int image = -1,
179 int selImage = -1,
180 wxTreeItemData* data = NULL);
181
182 /**
183 Appends an item to the end of the branch identified by @e parent, return a new
184 item id.
185 The @a image and @a selImage parameters are an index within
186 the normal image list specifying the image to use for unselected and
187 selected items, respectively.
188 If @a image -1 and @a selImage is -1, the same image is used for
189 both selected and unselected items.
190 */
191 wxTreeItemId AppendItem(const wxTreeItemId& parent,
192 const wxString& text,
193 int image = -1,
194 int selImage = -1,
195 wxTreeItemData* data = NULL);
196
197 /**
198 Sets the buttons image list. The button images assigned with this method will
199 be automatically deleted by wxTreeCtrl as appropriate
200 (i.e. it takes ownership of the list).
201 Setting or assigning the button image list enables the display of image buttons.
202 Once enabled, the only way to disable the display of button images is to set
203 the button image list to @NULL.
204 This function is only available in the generic version.
205 See also SetButtonsImageList().
206 */
207 void AssignButtonsImageList(wxImageList* imageList);
208
209 /**
210 Sets the normal image list. Image list assigned with this method will
211 be automatically deleted by wxTreeCtrl as appropriate
212 (i.e. it takes ownership of the list).
213 See also SetImageList().
214 */
215 void AssignImageList(wxImageList* imageList);
216
217 /**
218 Sets the state image list. Image list assigned with this method will
219 be automatically deleted by wxTreeCtrl as appropriate
220 (i.e. it takes ownership of the list).
221 See also SetStateImageList().
222 */
223 void AssignStateImageList(wxImageList* imageList);
224
225 /**
226 Collapses the given item.
227 */
228 void Collapse(const wxTreeItemId& item);
229
230 /**
231 Collapses the root item.
232
233 @see ExpandAll()
234 */
235 void CollapseAll();
236
237 /**
238 Collapses this item and all of its children, recursively.
239
240 @see ExpandAllChildren()
241 */
242 void CollapseAllChildren(const wxTreeItemId& item);
243
244 /**
245 Collapses the given item and removes all children.
246 */
247 void CollapseAndReset(const wxTreeItemId& item);
248
249 /**
250 Creates the tree control. See wxTreeCtrl() for further details.
251 */
252 bool wxTreeCtrl(wxWindow* parent, wxWindowID id,
253 const wxPoint& pos = wxDefaultPosition,
254 const wxSize& size = wxDefaultSize,
255 long style = wxTR_HAS_BUTTONS,
256 const wxValidator& validator = wxDefaultValidator,
257 const wxString& name = "treeCtrl");
258
259 /**
260 Deletes the specified item. A @c EVT_TREE_DELETE_ITEM event will be
261 generated.
262 This function may cause a subsequent call to GetNextChild to fail.
263 */
264 void Delete(const wxTreeItemId& item);
265
266 /**
267 Deletes all items in the control. Note that this may not generate
268 @c EVT_TREE_DELETE_ITEM events under some Windows versions although
269 normally such event is generated for each removed item.
270 */
271 void DeleteAllItems();
272
273 /**
274 Deletes all children of the given item (but not the item itself). Note that
275 this will @b not generate any events unlike
276 Delete() method.
277 If you have called SetItemHasChildren(), you
278 may need to call it again since @e DeleteChildren does not automatically
279 clear the setting.
280 */
281 void DeleteChildren(const wxTreeItemId& item);
282
283 /**
284 Starts editing the label of the given item. This function generates a
285 EVT_TREE_BEGIN_LABEL_EDIT event which can be vetoed so that no
286 text control will appear for in-place editing.
287 If the user changed the label (i.e. s/he does not press ESC or leave
288 the text control without changes, a EVT_TREE_END_LABEL_EDIT event
289 will be sent which can be vetoed as well.
290
291 @see EndEditLabel(), wxTreeEvent
292 */
293 void EditLabel(const wxTreeItemId& item);
294
295 /**
296 Ends label editing. If @a cancelEdit is @true, the edit will be cancelled.
297 This function is currently supported under Windows only.
298
299 @see EditLabel()
300 */
301 void EndEditLabel(bool cancelEdit);
302
303 /**
304 Scrolls and/or expands items to ensure that the given item is visible.
305 */
306 void EnsureVisible(const wxTreeItemId& item);
307
308 /**
309 Expands the given item.
310 */
311 void Expand(const wxTreeItemId& item);
312
313 /**
314 Expands all items in the tree.
315 */
316 void ExpandAll();
317
318 /**
319 Expands the given item and all its children recursively.
320 */
321 void ExpandAllChildren(const wxTreeItemId& item);
322
323 /**
324 Retrieves the rectangle bounding the @e item. If @a textOnly is @true,
325 only the rectangle around the item's label will be returned, otherwise the
326 item's image is also taken into account.
327 The return value is @true if the rectangle was successfully retrieved or @c
328 @false
329 if it was not (in this case @a rect is not changed) -- for example, if the
330 item is currently invisible.
331 Notice that the rectangle coordinates are logical, not physical ones. So, for
332 example, the x coordinate may be negative if the tree has a horizontal
333 scrollbar and its position is not 0.
334 */
335 bool GetBoundingRect(const wxTreeItemId& item, wxRect& rect,
336 bool textOnly = false);
337
338 /**
339 Returns the buttons image list (from which application-defined button images
340 are taken).
341 This function is only available in the generic version.
342 */
343 wxImageList* GetButtonsImageList();
344
345 /**
346 Returns the number of items in the branch. If @a recursively is @true,
347 returns the total number
348 of descendants, otherwise only one level of children is counted.
349 */
350 unsigned int GetChildrenCount(const wxTreeItemId& item,
351 bool recursively = true);
352
353 /**
354 Returns the number of items in the control.
355 */
356 unsigned int GetCount();
357
358 /**
359 Returns the edit control being currently used to edit a label. Returns @NULL
360 if no label is being edited.
361 @b NB: It is currently only implemented for wxMSW.
362 */
363 wxTextCtrl* GetEditControl();
364
365 /**
366 Returns the first child; call GetNextChild() for the next child.
367 For this enumeration function you must pass in a 'cookie' parameter
368 which is opaque for the application but is necessary for the library
369 to make these functions reentrant (i.e. allow more than one
370 enumeration on one and the same object simultaneously). The cookie passed to
371 GetFirstChild and GetNextChild should be the same variable.
372 Returns an invalid tree item (i.e. IsOk() returns @false) if there are no
373 further children.
374
375 @see GetNextChild(), GetNextSibling()
376 */
377 wxTreeItemId GetFirstChild(const wxTreeItemId& item,
378 wxTreeItemIdValue& cookie);
379
380 /**
381 Returns the first visible item.
382 */
383 wxTreeItemId GetFirstVisibleItem();
384
385 /**
386 Returns the normal image list.
387 */
388 wxImageList* GetImageList();
389
390 /**
391 Returns the current tree control indentation.
392 */
393 int GetIndent();
394
395 /**
396 Returns the background colour of the item.
397 */
398 wxColour GetItemBackgroundColour(const wxTreeItemId& item);
399
400 //@{
401 /**
402 Returns the font of the item label.
403 */
404 wxTreeItemData* GetItemData(const wxTreeItemId& item);
405 See also wxPython note:
406 wxPython provides the following shortcut method:
407
408
409
410
411
412
413
414 GetPyData(item)
415
416
417
418
419 Returns the Python Object
420 associated with the wxTreeItemData for the given item Id.
421
422
423
424
425
426
427
428 wxFont GetItemFont(const wxTreeItemId& item);
429 //@}
430
431 /**
432 Gets the specified item image. The value of @a which may be:
433 wxTreeItemIcon_Normal to get the normal item image
434 wxTreeItemIcon_Selected to get the selected item image (i.e. the image
435 which is shown when the item is currently selected)
436 wxTreeItemIcon_Expanded to get the expanded image (this only
437 makes sense for items which have children - then this image is shown when the
438 item is expanded and the normal image is shown when it is collapsed)
439 wxTreeItemIcon_SelectedExpanded to get the selected expanded image
440 (which is shown when an expanded item is currently selected)
441 */
442 int GetItemImage(const wxTreeItemId& item,
443 wxTreeItemIcon which = wxTreeItemIcon_Normal);
444
445 /**
446 Returns the item's parent.
447 */
448 wxTreeItemId GetItemParent(const wxTreeItemId& item);
449
450 /**
451 Gets the selected item image (this function is obsolete, use
452 @c GetItemImage(item, wxTreeItemIcon_Selected) instead).
453 */
454 int GetItemSelectedImage(const wxTreeItemId& item);
455
456 /**
457 Returns the item label.
458 */
459 wxString GetItemText(const wxTreeItemId& item);
460
461 /**
462 Returns the colour of the item label.
463 */
464 wxColour GetItemTextColour(const wxTreeItemId& item);
465
466 /**
467 Returns the last child of the item (or an invalid tree item if this item has no
468 children).
469
470 @see GetFirstChild(), GetNextSibling(),
471 GetLastChild()
472 */
473 wxTreeItemId GetLastChild(const wxTreeItemId& item);
474
475 /**
476 Returns the next child; call GetFirstChild() for the first child.
477 For this enumeration function you must pass in a 'cookie' parameter
478 which is opaque for the application but is necessary for the library
479 to make these functions reentrant (i.e. allow more than one
480 enumeration on one and the same object simultaneously). The cookie passed to
481 GetFirstChild and GetNextChild should be the same.
482 Returns an invalid tree item if there are no further children.
483
484 @see GetFirstChild()
485 */
486 wxTreeItemId GetNextChild(const wxTreeItemId& item,
487 wxTreeItemIdValue& cookie);
488
489 /**
490 Returns the next sibling of the specified item; call GetPrevSibling() for the
491 previous sibling.
492 Returns an invalid tree item if there are no further siblings.
493
494 @see GetPrevSibling()
495 */
496 wxTreeItemId GetNextSibling(const wxTreeItemId& item);
497
498 /**
499 Returns the next visible item or an invalid item if this item is the last
500 visible one.
501 Notice that the @a item itself must be visible.
502 */
503 wxTreeItemId GetNextVisible(const wxTreeItemId& item);
504
505 /**
506 Returns the previous sibling of the specified item; call GetNextSibling() for
507 the next sibling.
508 Returns an invalid tree item if there are no further children.
509
510 @see GetNextSibling()
511 */
512 wxTreeItemId GetPrevSibling(const wxTreeItemId& item);
513
514 /**
515 Returns the previous visible item or an invalid item if this item is the first
516 visible one.
517 Notice that the @a item itself must be visible.
518 */
519 wxTreeItemId GetPrevVisible(const wxTreeItemId& item);
520
521 /**
522 Returns @true if the control will use a quick calculation for the best size,
523 looking only at the first and last items. The default is @false.
524
525 @see SetQuickBestSize()
526 */
527 bool GetQuickBestSize();
528
529 /**
530 Returns the root item for the tree control.
531 */
532 wxTreeItemId GetRootItem();
533
534 /**
535 Returns the selection, or an invalid item if there is no selection.
536 This function only works with the controls without wxTR_MULTIPLE style, use
537 GetSelections() for the controls which do have
538 this style.
539 */
540 wxTreeItemId GetSelection();
541
542 /**
543 Fills the array of tree items passed in with the currently selected items. This
544 function can be called only if the control has the wxTR_MULTIPLE style.
545 Returns the number of selected items.
546 */
547 unsigned int GetSelections(wxArrayTreeItemIds& selection);
548
549 /**
550 Returns the state image list (from which application-defined state images are
551 taken).
552 */
553 wxImageList* GetStateImageList();
554
555 /**
556 Calculates which (if any) item is under the given point, returning the tree item
557 id at this point plus extra information @e flags. @a flags is a bitlist of the
558 following:
559
560 wxTREE_HITTEST_ABOVE
561
562 Above the client area.
563
564 wxTREE_HITTEST_BELOW
565
566 Below the client area.
567
568 wxTREE_HITTEST_NOWHERE
569
570 In the client area but below the last item.
571
572 wxTREE_HITTEST_ONITEMBUTTON
573
574 On the button associated with an item.
575
576 wxTREE_HITTEST_ONITEMICON
577
578 On the bitmap associated with an item.
579
580 wxTREE_HITTEST_ONITEMINDENT
581
582 In the indentation associated with an item.
583
584 wxTREE_HITTEST_ONITEMLABEL
585
586 On the label (string) associated with an item.
587
588 wxTREE_HITTEST_ONITEMRIGHT
589
590 In the area to the right of an item.
591
592 wxTREE_HITTEST_ONITEMSTATEICON
593
594 On the state icon for a tree view item that is in a user-defined state.
595
596 wxTREE_HITTEST_TOLEFT
597
598 To the right of the client area.
599
600 wxTREE_HITTEST_TORIGHT
601
602 To the left of the client area.
603 */
604 wxTreeItemId HitTest(const wxPoint& point, int& flags);
605
606 //@{
607 /**
608 Inserts an item after a given one (@e previous) or before one identified by its
609 position (@e before).
610 @a before must be less than the number of children.
611 The @a image and @a selImage parameters are an index within
612 the normal image list specifying the image to use for unselected and
613 selected items, respectively.
614 If @a image -1 and @a selImage is -1, the same image is used for
615 both selected and unselected items.
616 */
617 wxTreeItemId InsertItem(const wxTreeItemId& parent,
618 const wxTreeItemId& previous,
619 const wxString& text,
620 int image = -1,
621 int selImage = -1,
622 wxTreeItemData* data = NULL);
623 wxTreeItemId InsertItem(const wxTreeItemId& parent,
624 size_t before,
625 const wxString& text,
626 int image = -1,
627 int selImage = -1,
628 wxTreeItemData* data = NULL);
629 //@}
630
631 /**
632 Returns @true if the given item is in bold state.
633 See also: SetItemBold()
634 */
635 bool IsBold(const wxTreeItemId& item);
636
637 /**
638 Returns @true if the control is empty (i.e. has no items, even no root one).
639 */
640 bool IsEmpty();
641
642 /**
643 Returns @true if the item is expanded (only makes sense if it has children).
644 */
645 bool IsExpanded(const wxTreeItemId& item);
646
647 /**
648 Returns @true if the item is selected.
649 */
650 bool IsSelected(const wxTreeItemId& item);
651
652 /**
653 Returns @true if the item is visible on the screen.
654 */
655 bool IsVisible(const wxTreeItemId& item);
656
657 /**
658 Returns @true if the item has children.
659 */
660 bool ItemHasChildren(const wxTreeItemId& item);
661
662 /**
663 Override this function in the derived class to change the sort order of the
664 items in the tree control. The function should return a negative, zero or
665 positive value if the first item is less than, equal to or greater than the
666 second one.
667 Please note that you @b must use wxRTTI macros
668 DECLARE_DYNAMIC_CLASS and
669 IMPLEMENT_DYNAMIC_CLASS if you override this
670 function because otherwise the base class considers that it is not overridden
671 and uses the default comparison, i.e. sorts the items alphabetically, which
672 allows it optimize away the calls to the virtual function completely.
673 See also: SortChildren()
674 */
675 int OnCompareItems(const wxTreeItemId& item1,
676 const wxTreeItemId& item2);
677
678 /**
679 Appends an item as the first child of @e parent, return a new item id.
680 The @a image and @a selImage parameters are an index within
681 the normal image list specifying the image to use for unselected and
682 selected items, respectively.
683 If @a image -1 and @a selImage is -1, the same image is used for
684 both selected and unselected items.
685 */
686 wxTreeItemId PrependItem(const wxTreeItemId& parent,
687 const wxString& text,
688 int image = -1,
689 int selImage = -1,
690 wxTreeItemData* data = NULL);
691
692 /**
693 Scrolls the specified item into view.
694 */
695 void ScrollTo(const wxTreeItemId& item);
696
697 /**
698 Selects the given item. In multiple selection controls, can be also used to
699 deselect a currently selected item if the value of @a select is @false.
700 */
701 void SelectItem(const wxTreeItemId& item, bool select = true);
702
703 /**
704 Sets the buttons image list (from which application-defined button images are
705 taken).
706 The button images assigned with this method will
707 @b not be deleted by wxTreeCtrl's destructor, you must delete it yourself.
708 Setting or assigning the button image list enables the display of image buttons.
709 Once enabled, the only way to disable the display of button images is to set
710 the button image list to @NULL.
711 This function is only available in the generic version.
712 See also AssignButtonsImageList().
713 */
714 void SetButtonsImageList(wxImageList* imageList);
715
716 /**
717 Sets the normal image list. Image list assigned with this method will
718 @b not be deleted by wxTreeCtrl's destructor, you must delete it yourself.
719 See also AssignImageList().
720 */
721 void SetImageList(wxImageList* imageList);
722
723 /**
724 Sets the indentation for the tree control.
725 */
726 void SetIndent(int indent);
727
728 /**
729 Sets the colour of the item's background.
730 */
731 void SetItemBackgroundColour(const wxTreeItemId& item,
732 const wxColour& col);
733
734 /**
735 Makes item appear in bold font if @a bold parameter is @true or resets it to
736 the normal state.
737 See also: IsBold()
738 */
739 void SetItemBold(const wxTreeItemId& item, bool bold = true);
740
741 //@{
742 /**
743 Gives the item the visual feedback for Drag'n'Drop actions, which is
744 useful if something is dragged from the outside onto the tree control
745 (as opposed to a DnD operation within the tree control, which already
746 is implemented internally).
747 */
748 void SetItemData(const wxTreeItemId& item, wxTreeItemData* data);
749 wxPython note:
750 SetPyData(item, obj)
751
752
753
754
755 Associate the given Python
756 Object with the wxTreeItemData for the given item Id.
757
758
759
760
761
762
763
764 void SetItemDropHighlight(const wxTreeItemId& item,
765 bool highlight = true);
766 //@}
767
768 /**
769 Sets the item's font. All items in the tree should have the same height to avoid
770 text clipping, so the fonts height should be the same for all of them,
771 although font attributes may vary.
772
773 @see SetItemBold()
774 */
775 void SetItemFont(const wxTreeItemId& item, const wxFont& font);
776
777 /**
778 Force appearance of the button next to the item. This is useful to
779 allow the user to expand the items which don't have any children now,
780 but instead adding them only when needed, thus minimizing memory
781 usage and loading time.
782 */
783 void SetItemHasChildren(const wxTreeItemId& item,
784 bool hasChildren = true);
785
786 /**
787 Sets the specified item image. See GetItemImage()
788 for the description of the @a which parameter.
789 */
790 void SetItemImage(const wxTreeItemId& item, int image,
791 wxTreeItemIcon which = wxTreeItemIcon_Normal);
792
793 /**
794 Sets the selected item image (this function is obsolete, use
795 @c SetItemImage(item, wxTreeItemIcon_Selected) instead).
796 */
797 void SetItemSelectedImage(const wxTreeItemId& item, int selImage);
798
799 /**
800 Sets the item label.
801 */
802 void SetItemText(const wxTreeItemId& item, const wxString& text);
803
804 /**
805 Sets the colour of the item's text.
806 */
807 void SetItemTextColour(const wxTreeItemId& item,
808 const wxColour& col);
809
810 /**
811 If @true is passed, specifies that the control will use a quick calculation for
812 the best size,
813 looking only at the first and last items. Otherwise, it will look at all items.
814 The default is @false.
815
816 @see GetQuickBestSize()
817 */
818 void SetQuickBestSize(bool quickBestSize);
819
820 /**
821 Sets the state image list (from which application-defined state images are
822 taken).
823 Image list assigned with this method will
824 @b not be deleted by wxTreeCtrl's destructor, you must delete it yourself.
825 See also AssignStateImageList().
826 */
827 void SetStateImageList(wxImageList* imageList);
828
829 /**
830 Sets the mode flags associated with the display of the tree control.
831 The new mode takes effect immediately.
832 (Generic only; MSW ignores changes.)
833 */
834 void SetWindowStyle(long styles);
835
836 /**
837 Sorts the children of the given item using
838 OnCompareItems() method of wxTreeCtrl. You
839 should override that method to change the sort order (the default is ascending
840 case-sensitive alphabetical order).
841
842 @see wxTreeItemData, OnCompareItems()
843 */
844 void SortChildren(const wxTreeItemId& item);
845
846 /**
847 Toggles the given item between collapsed and expanded states.
848 */
849 void Toggle(const wxTreeItemId& item);
850
851 /**
852 Toggles the given item between selected and unselected states. For
853 multiselection controls only.
854 */
855 void ToggleItemSelection(const wxTreeItemId& item);
856
857 /**
858 Removes the selection from the currently selected item (if any).
859 */
860 void Unselect();
861
862 /**
863 This function either behaves the same as Unselect()
864 if the control doesn't have wxTR_MULTIPLE style, or removes the selection from
865 all items if it does have this style.
866 */
867 void UnselectAll();
868
869 /**
870 Unselects the given item. This works in multiselection controls only.
871 */
872 void UnselectItem(const wxTreeItemId& item);
873 };
874
875
876 /**
877 @class wxTreeEvent
878 @wxheader{treectrl.h}
879
880 A tree event holds information about events associated with wxTreeCtrl objects.
881
882 @library{wxbase}
883 @category{events}
884
885 @seealso
886 wxTreeCtrl
887 */
888 class wxTreeEvent : public wxNotifyEvent
889 {
890 public:
891 /**
892 )
893 Constructor, used by wxWidgets itself only.
894 */
895 wxTreeEvent(wxEventType commandType, wxTreeCtrl* tree);
896
897 /**
898 Returns the item (valid for all events).
899 */
900 wxTreeItemId GetItem();
901
902 /**
903 Returns the key code if the event is a key event. Use
904 GetKeyEvent() to get the values of the
905 modifier keys for this event (i.e. Shift or Ctrl).
906 */
907 int GetKeyCode();
908
909 /**
910 Returns the key event for @c EVT_TREE_KEY_DOWN events.
911 */
912 const wxKeyEvent GetKeyEvent();
913
914 /**
915 Returns the label if the event is a begin or end edit label event.
916 */
917 const wxString GetLabel();
918
919 /**
920 Returns the old item index (valid for EVT_TREE_ITEM_CHANGING and CHANGED events)
921 */
922 wxTreeItemId GetOldItem();
923
924 /**
925 Returns the position of the mouse pointer if the event is a drag or
926 menu-context event.
927 In both cases the position is in client coordinates - i.e. relative to the
928 wxTreeCtrl
929 window (so that you can pass it directly to e.g. wxWindow::PopupMenu).
930 */
931 wxPoint GetPoint();
932
933 /**
934 Returns @true if the label edit was cancelled. This should be
935 called from within an EVT_TREE_END_LABEL_EDIT handler.
936 */
937 bool IsEditCancelled();
938
939 /**
940 Set the tooltip for the item (valid for EVT_TREE_ITEM_GETTOOLTIP events).
941 Windows only.
942 */
943 void SetToolTip(const wxString& tooltip);
944 };