1 ///////////////////////////////////////////////////////////////////////////// 2 // Name: treebase.h 3 // Purpose: interface of wxTreeItemId 4 // Author: wxWidgets team 5 // Licence: wxWindows licence 6 ///////////////////////////////////////////////////////////////////////////// 7 8 /** 9 @class wxTreeItemId 10 11 An opaque reference to a tree item. 12 13 @library{wxcore} 14 @category{data} 15 16 @see wxTreeCtrl, wxTreeItemData, @ref overview_treectrl 17 */ 18 class wxTreeItemId 19 { 20 public: 21 /** 22 Default constructor. A wxTreeItemId is not meant to be constructed 23 explicitly by the user; only those returned by the wxTreeCtrl functions 24 should be used. 25 */ 26 wxTreeItemId(); 27 28 /** 29 Returns @true if this instance is referencing a valid tree item. 30 */ 31 bool IsOk() const; 32 33 void* GetID() const; 34 void Unset(); 35 }; 36 37 bool operator==(const wxTreeItemId& left, const wxTreeItemId& right); 38 bool operator!=(const wxTreeItemId& left, const wxTreeItemId& right); 39 40 41 42 /** 43 @class wxTreeItemData 44 45 wxTreeItemData is some (arbitrary) user class associated with some item. The 46 main advantage of having this class is that wxTreeItemData objects are 47 destroyed automatically by the tree and, as this class has virtual 48 destructor, it means that the memory and any other resources associated with 49 a tree item will be automatically freed when it is deleted. Note that we 50 don't use wxObject as the base class for wxTreeItemData because the size of 51 this class is critical: in many applications, each tree leaf will have 52 wxTreeItemData associated with it and the number of leaves may be quite big. 53 54 Also please note that because the objects of this class are deleted by the 55 tree using the operator @c delete, they must always be allocated on the heap 56 using @c new. 57 58 @library{wxcore} 59 @category{containers} 60 61 @see wxTreeCtrl 62 */ 63 class wxTreeItemData : public wxClientData 64 { 65 public: 66 /** 67 Default constructor. 68 69 @beginWxPerlOnly 70 In wxPerl the constructor accepts a scalar as an optional parameter 71 and stores it as client data; use 72 - GetData() to retrieve the value. 73 - SetData(data) to set it. 74 @endWxPerlOnly 75 */ 76 wxTreeItemData(); 77 78 /** 79 Virtual destructor. 80 */ 81 virtual ~wxTreeItemData(); 82 83 /** 84 Returns the item associated with this node. 85 */ 86 const wxTreeItemId& GetId() const; 87 88 /** 89 Sets the item associated with this node. 90 91 Notice that this function is automatically called by wxTreeCtrl methods 92 associating an object of this class with a tree control item such as 93 wxTreeCtrl::AppendItem(), wxTreeCtrl::InsertItem() and 94 wxTreeCtrl::SetItemData() so there is usually no need to call it 95 yourself. 96 */ 97 void SetId(const wxTreeItemId& id); 98 }; 99 100 /** 101 Indicates which type to associate an image with a wxTreeCtrl item. 102 103 @see wxTreeCtrl::GetItemImage(), wxTreeCtrl::SetItemImage() 104 */ 105 enum wxTreeItemIcon 106 { 107 /** 108 To get/set the item image for when the item is 109 @b not selected and @b not expanded. 110 */ 111 wxTreeItemIcon_Normal, 112 /** 113 To get/set the item image for when the item is 114 @b selected and @b not expanded. 115 */ 116 wxTreeItemIcon_Selected, 117 /** 118 To get/set the item image for when the item is 119 @b not selected and @b expanded. 120 */ 121 wxTreeItemIcon_Expanded, 122 /** 123 To get/set the item image for when the item is 124 @b selected and @b expanded. 125 */ 126 wxTreeItemIcon_SelectedExpanded, 127 wxTreeItemIcon_Max 128 }; 129 130 131 /// special values for the 'state' parameter of wxTreeCtrl::SetItemState() 132 static const int wxTREE_ITEMSTATE_NONE = -1; // not state (no display state image) 133 static const int wxTREE_ITEMSTATE_NEXT = -2; // cycle to the next state 134 static const int wxTREE_ITEMSTATE_PREV = -3; // cycle to the previous state 135 136 #define wxTR_NO_BUTTONS 0x0000 // for convenience 137 #define wxTR_HAS_BUTTONS 0x0001 // draw collapsed/expanded btns 138 #define wxTR_NO_LINES 0x0004 // don't draw lines at all 139 #define wxTR_LINES_AT_ROOT 0x0008 // connect top-level nodes 140 #define wxTR_TWIST_BUTTONS 0x0010 // still used by wxTreeListCtrl 141 142 #define wxTR_SINGLE 0x0000 // for convenience 143 #define wxTR_MULTIPLE 0x0020 // can select multiple items 144 145 #define wxTR_HAS_VARIABLE_ROW_HEIGHT 0x0080 // what it says 146 147 #define wxTR_EDIT_LABELS 0x0200 // can edit item labels 148 #define wxTR_ROW_LINES 0x0400 // put border around items 149 #define wxTR_HIDE_ROOT 0x0800 // don't display root node 150 151 #define wxTR_FULL_ROW_HIGHLIGHT 0x2000 // highlight full horz space 152 153 // make the default control appearance look more native-like depending on the 154 // platform 155 #define wxTR_DEFAULT_STYLE (wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT) 156 157 158 // values for the `flags' parameter of wxTreeCtrl::HitTest() which determine 159 // where exactly the specified point is situated: 160 161 static const int wxTREE_HITTEST_ABOVE = 0x0001; 162 static const int wxTREE_HITTEST_BELOW = 0x0002; 163 static const int wxTREE_HITTEST_NOWHERE = 0x0004; 164 // on the button associated with an item. 165 static const int wxTREE_HITTEST_ONITEMBUTTON = 0x0008; 166 // on the bitmap associated with an item. 167 static const int wxTREE_HITTEST_ONITEMICON = 0x0010; 168 // on the indent associated with an item. 169 static const int wxTREE_HITTEST_ONITEMINDENT = 0x0020; 170 // on the label (string) associated with an item. 171 static const int wxTREE_HITTEST_ONITEMLABEL = 0x0040; 172 // on the right of the label associated with an item. 173 static const int wxTREE_HITTEST_ONITEMRIGHT = 0x0080; 174 // on the label (string) associated with an item. 175 static const int wxTREE_HITTEST_ONITEMSTATEICON = 0x0100; 176 // on the left of the wxTreeCtrl. 177 static const int wxTREE_HITTEST_TOLEFT = 0x0200; 178 // on the right of the wxTreeCtrl. 179 static const int wxTREE_HITTEST_TORIGHT = 0x0400; 180 // on the upper part (first half) of the item. 181 static const int wxTREE_HITTEST_ONITEMUPPERPART = 0x0800; 182 // on the lower part (second half) of the item. 183 static const int wxTREE_HITTEST_ONITEMLOWERPART = 0x1000; 184 185 // anywhere on the item 186 static const int wxTREE_HITTEST_ONITEM = wxTREE_HITTEST_ONITEMICON | 187 wxTREE_HITTEST_ONITEMLABEL; 188 189 190