| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: treectrl.h
- // Purpose: interface of wxTreeItemData
- // Author: wxWidgets team
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- /**
- @class 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
- wxTreeItemId handles, which may be tested for validity by calling
- wxTreeItemId::IsOk().
- A similar control with a fully native implementation for GTK+ and OS X
- as well is wxDataViewTreeCtrl.
- To intercept events from a tree control, use the event table macros
- described in wxTreeEvent.
- @beginStyleTable
- @style{wxTR_EDIT_LABELS}
- Use this style if you wish the user to be able to edit labels in the
- tree control.
- @style{wxTR_NO_BUTTONS}
- For convenience to document that no buttons are to be drawn.
- @style{wxTR_HAS_BUTTONS}
- Use this style to show + and - buttons to the left of parent items.
- @style{wxTR_TWIST_BUTTONS}
- Selects alternative style of @c +/@c - buttons and shows rotating
- ("twisting") arrows instead. Currently this style is only implemented
- under Microsoft Windows Vista and later Windows versions and is ignored
- under the other platforms. Notice that under Vista this style results
- in the same appearance as used by the tree control in Explorer and
- other built-in programs and so using it may be preferable to the
- default style.
- @style{wxTR_NO_LINES}
- Use this style to hide vertical level connectors.
- @style{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 @c wxTR_NO_LINES as
- well.)
- @style{wxTR_LINES_AT_ROOT}
- Use this style to show lines between root nodes. Only applicable if @c
- wxTR_HIDE_ROOT is set and @c wxTR_NO_LINES is not set.
- @style{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.
- @style{wxTR_ROW_LINES}
- Use this style to draw a contrasting border between displayed rows.
- @style{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.
- @style{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.
- @style{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.
- @style{wxTR_DEFAULT_STYLE}
- The set of flags that are closest to the defaults for the native control
- for a particular toolkit.
- @endStyleTable
- @beginEventEmissionTable{wxTreeEvent}
- @event{EVT_TREE_BEGIN_DRAG(id, func)}
- Begin dragging with the left mouse button.
- If you want to enable left-dragging you need to intercept this event
- and explicitly call wxTreeEvent::Allow(), as it's vetoed by default.
- Processes a @c wxEVT_TREE_BEGIN_DRAG event type.
- @event{EVT_TREE_BEGIN_RDRAG(id, func)}
- Begin dragging with the right mouse button.
- If you want to enable right-dragging you need to intercept this event
- and explicitly call wxTreeEvent::Allow(), as it's vetoed by default.
- Processes a @c wxEVT_TREE_BEGIN_RDRAG event type.
- @event{EVT_TREE_END_DRAG(id, func)}
- End dragging with the left or right mouse button.
- Processes a @c wxEVT_TREE_END_DRAG event type.
- @event{EVT_TREE_BEGIN_LABEL_EDIT(id, func)}
- Begin editing a label. This can be prevented by calling Veto().
- Processes a @c wxEVT_TREE_BEGIN_LABEL_EDIT event type.
- @event{EVT_TREE_END_LABEL_EDIT(id, func)}
- Finish editing a label. This can be prevented by calling Veto().
- Processes a @c wxEVT_TREE_END_LABEL_EDIT event type.
- @event{EVT_TREE_DELETE_ITEM(id, func)}
- An item was deleted.
- Processes a @c wxEVT_TREE_DELETE_ITEM event type.
- @event{EVT_TREE_GET_INFO(id, func)}
- Request information from the application.
- Processes a @c wxEVT_TREE_GET_INFO event type.
- @event{EVT_TREE_SET_INFO(id, func)}
- Information is being supplied.
- Processes a @c wxEVT_TREE_SET_INFO event type.
- @event{EVT_TREE_ITEM_ACTIVATED(id, func)}
- The item has been activated, i.e. chosen by double clicking it with
- mouse or from keyboard.
- Processes a @c wxEVT_TREE_ITEM_ACTIVATED event type.
- @event{EVT_TREE_ITEM_COLLAPSED(id, func)}
- The item has been collapsed.
- Processes a @c wxEVT_TREE_ITEM_COLLAPSED event type.
- @event{EVT_TREE_ITEM_COLLAPSING(id, func)}
- The item is being collapsed. This can be prevented by calling Veto().
- Processes a @c wxEVT_TREE_ITEM_COLLAPSING event type.
- @event{EVT_TREE_ITEM_EXPANDED(id, func)}
- The item has been expanded.
- Processes a @c wxEVT_TREE_ITEM_EXPANDED event type.
- @event{EVT_TREE_ITEM_EXPANDING(id, func)}
- The item is being expanded. This can be prevented by calling Veto().
- Processes a @c wxEVT_TREE_ITEM_EXPANDING event type.
- @event{EVT_TREE_ITEM_RIGHT_CLICK(id, func)}
- The user has clicked the item with the right mouse button.
- Processes a @c wxEVT_TREE_ITEM_RIGHT_CLICK event type.
- @event{EVT_TREE_ITEM_MIDDLE_CLICK(id, func)}
- The user has clicked the item with the middle mouse button. This is
- only supported by the generic control.
- Processes a @c wxEVT_TREE_ITEM_MIDDLE_CLICK event type.
- @event{EVT_TREE_SEL_CHANGED(id, func)}
- Selection has changed.
- Processes a @c wxEVT_TREE_SEL_CHANGED event type.
- @event{EVT_TREE_SEL_CHANGING(id, func)}
- Selection is changing. This can be prevented by calling Veto().
- Processes a @c wxEVT_TREE_SEL_CHANGING event type.
- @event{EVT_TREE_KEY_DOWN(id, func)}
- A key has been pressed.
- Processes a @c wxEVT_TREE_KEY_DOWN event type.
- @event{EVT_TREE_ITEM_GETTOOLTIP(id, func)}
- The opportunity to set the item tooltip is being given to the application
- (call wxTreeEvent::SetToolTip). Windows only.
- Processes a @c wxEVT_TREE_ITEM_GETTOOLTIP event type.
- @event{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.
- Processes a @c wxEVT_TREE_ITEM_MENU event type.
- @event{EVT_TREE_STATE_IMAGE_CLICK(id, func)}
- The state image has been clicked.
- Processes a @c wxEVT_TREE_STATE_IMAGE_CLICK event type.
- @endEventTable
- See also @ref overview_windowstyles.
- @b Win32 @b notes:
- wxTreeCtrl class uses the standard common treeview control under Win32
- implemented in the system library 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 comctl32.dll to a newer version: see
- http://www.microsoft.com/downloads/details.aspx?familyid=cb2cf3a2-8025-4e8f-8511-9b476a8d35d2
- @library{wxcore}
- @category{ctrl}
- @appearance{treectrl}
- @see wxDataViewTreeCtrl, wxTreeEvent, wxTreeItemData, @ref overview_treectrl,
- wxListBox, wxListCtrl, wxImageList
- */
- class wxTreeCtrl : public wxControl
- {
- public:
- /**
- Default Constructor.
- */
- wxTreeCtrl();
- /**
- Constructor, creating and showing a tree control.
- @param parent
- Parent window. Must not be @NULL.
- @param id
- Window identifier. The value @c wxID_ANY indicates a default value.
- @param pos
- Window position.
- If ::wxDefaultPosition is specified then a default position is chosen.
- @param size
- Window size.
- If ::wxDefaultSize is specified then the window is sized appropriately.
- @param style
- Window style. See wxTreeCtrl.
- @param validator
- Window validator.
- @param name
- Window name.
- @see Create(), wxValidator
- */
- wxTreeCtrl(wxWindow* parent, wxWindowID id = wxID_ANY,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = wxTR_DEFAULT_STYLE,
- const wxValidator& validator = wxDefaultValidator,
- const wxString& name = wxTreeCtrlNameStr);
- /**
- Destructor, destroying the tree control.
- */
- virtual ~wxTreeCtrl();
- /**
- Adds the root node to the tree, returning the new item.
- The @a image and @a selImage parameters are an index within the normal
- image list specifying the image to use for unselected and selected
- items, respectively. If @a image -1 and @a selImage is -1, the same
- image is used for both selected and unselected items.
- */
- virtual wxTreeItemId AddRoot(const wxString& text, int image = -1,
- int selImage = -1,
- wxTreeItemData* data = NULL);
- /**
- Appends an item to the end of the branch identified by @a parent, return
- a new item id.
- The @a image and @a selImage parameters are an index within the normal
- image list specifying the image to use for unselected and selected
- items, respectively. If @a image > -1 and @a selImage is -1, the same
- image is used for both selected and unselected items.
- */
- wxTreeItemId AppendItem(const wxTreeItemId& parent,
- const wxString& text,
- int image = -1,
- int selImage = -1,
- wxTreeItemData* data = NULL);
- /**
- 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 @NULL.
- This function is only available in the generic version.
- @see SetButtonsImageList().
- */
- void AssignButtonsImageList(wxImageList* imageList);
- /**
- Sets the normal image list. The image list assigned with this method
- will be automatically deleted by wxTreeCtrl as appropriate (i.e. it
- takes ownership of the list).
- @see SetImageList().
- */
- void AssignImageList(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 SetStateImageList().
- */
- void AssignStateImageList(wxImageList* imageList);
- /**
- Collapses the given item.
- */
- virtual void Collapse(const wxTreeItemId& item);
- /**
- Collapses the root item.
- @see ExpandAll()
- */
- void CollapseAll();
- /**
- Collapses this item and all of its children, recursively.
- @see ExpandAllChildren()
- */
- void CollapseAllChildren(const wxTreeItemId& item);
- /**
- Collapses the given item and removes all children.
- */
- virtual void CollapseAndReset(const wxTreeItemId& item);
- /**
- Creates the tree control.
- See wxTreeCtrl::wxTreeCtrl() for further details.
- */
- bool Create(wxWindow* parent, wxWindowID id = wxID_ANY,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = wxTR_DEFAULT_STYLE,
- const wxValidator& validator = wxDefaultValidator,
- const wxString& name = wxTreeCtrlNameStr);
- /**
- Deletes the specified item. A @c EVT_TREE_DELETE_ITEM event will be
- generated.
- This function may cause a subsequent call to GetNextChild() to fail.
- */
- virtual void Delete(const wxTreeItemId& item);
- /**
- Deletes all items in the control. Note that this may not generate
- @c EVT_TREE_DELETE_ITEM events under some Windows versions although
- normally such event is generated for each removed item.
- */
- virtual void DeleteAllItems();
- /**
- Deletes all children of the given item (but not the item itself). Note
- that this will @b not generate any events unlike Delete() method.
- If you have called SetItemHasChildren(), you may need to call it again
- since DeleteChildren() does not automatically clear the setting.
- */
- virtual void DeleteChildren(const wxTreeItemId& item);
- /**
- Starts editing the label of the given @a item. This function generates a
- @c 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 @c EVT_TREE_END_LABEL_EDIT event will be
- sent which can be vetoed as well.
- @see EndEditLabel(), wxTreeEvent
- */
- virtual wxTextCtrl *EditLabel(const wxTreeItemId& item,
- wxClassInfo* textCtrlClass = wxCLASSINFO(wxTextCtrl));
- /**
- Enable or disable a beep if there is no match for the currently
- entered text when searching for the item from keyboard.
- The default is to not beep in this case except in wxMSW where the
- beep is always generated by the native control and cannot be disabled,
- i.e. calls to this function do nothing there.
- @since 2.9.5
- */
- void EnableBellOnNoMatch(bool on = true);
- /**
- Ends label editing. If @a cancelEdit is @true, the edit will be
- cancelled.
- @note
- This function is currently supported under Windows only.
- @see EditLabel()
- */
- virtual void EndEditLabel(const wxTreeItemId& item, bool discardChanges = false);
- /**
- Scrolls and/or expands items to ensure that the given item is visible.
- */
- virtual void EnsureVisible(const wxTreeItemId& item);
- /**
- Expands the given item.
- */
- virtual void Expand(const wxTreeItemId& item);
- /**
- Expands all items in the tree.
- */
- void ExpandAll();
- /**
- Expands the given item and all its children recursively.
- */
- void ExpandAllChildren(const wxTreeItemId& item);
- /**
- Retrieves the rectangle bounding the @a item. If @a 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
- @c @false if it was not (in this case @a 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.
- @beginWxPerlOnly
- In wxPerl this method only takes the @a item and
- @a textOnly parameters and returns a @c Wx::Rect (or @c undef).
- @endWxPerlOnly
- */
- virtual bool GetBoundingRect(const wxTreeItemId& item, wxRect& rect,
- bool textOnly = false) const;
- /**
- Returns the buttons image list (from which application-defined button
- images are taken).
- This function is only available in the generic version.
- */
- wxImageList* GetButtonsImageList() const;
- /**
- Returns the number of items in the branch. If @a recursively is @true,
- returns the total number of descendants, otherwise only one level of
- children is counted.
- */
- virtual size_t GetChildrenCount(const wxTreeItemId& item,
- bool recursively = true) const;
- /**
- Returns the number of items in the control.
- */
- virtual unsigned int GetCount() const;
- /**
- Returns the edit control being currently used to edit a label. Returns
- @NULL if no label is being edited.
- @note This is currently only implemented for wxMSW.
- */
- virtual wxTextCtrl* GetEditControl() const;
- /**
- Returns the first child; call GetNextChild() 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. wxTreeItemId::IsOk() returns @false)
- if there are no further children.
- @beginWxPerlOnly
- In wxPerl this method only takes the @a item parameter, and
- returns a 2-element list (item, cookie).
- @endWxPerlOnly
- @see GetNextChild(), GetNextSibling()
- */
- virtual wxTreeItemId GetFirstChild(const wxTreeItemId& item,
- wxTreeItemIdValue& cookie) const;
- /**
- Returns the first visible item.
- */
- virtual wxTreeItemId GetFirstVisibleItem() const;
- /**
- Returns the item last clicked or otherwise selected.
- Unlike GetSelection(), it can be used whether or not
- the control has the @c wxTR_MULTIPLE style.
-
- @since 2.9.1
- */
- virtual wxTreeItemId GetFocusedItem() const;
- /**
- Clears the currently focused item
- @since 2.9.1
- */
- virtual void ClearFocusedItem();
- /**
- Sets the currently focused item.
- @param item
- The item to make the current one. It must be valid.
- @since 2.9.1
- */
- virtual void SetFocusedItem(const wxTreeItemId& item);
- /**
- Returns the normal image list.
- */
- wxImageList* GetImageList() const;
- /**
- Returns the current tree control indentation.
- */
- virtual unsigned int GetIndent() const;
- /**
- Returns the background colour of the item.
- */
- virtual wxColour GetItemBackgroundColour(const wxTreeItemId& item) const;
- /**
- Returns the tree item data associated with the item.
- @see wxTreeItemData
- @beginWxPerlOnly
- wxPerl provides the following shortcut method:
- - GetPlData(item): returns the Perl data
- associated with the Wx::TreeItemData. It is just the same as
- tree->GetItemData(item)->GetData().
- @endWxPerlOnly
- */
- virtual wxTreeItemData* GetItemData(const wxTreeItemId& item) const;
- /**
- Returns the font of the item label.
- If the font hadn't been explicitly set for the specified @a item with
- SetItemFont(), returns an invalid ::wxNullFont font. GetFont() can be
- used to retrieve the global tree control font used for the items
- without any specific font.
- */
- virtual wxFont GetItemFont(const wxTreeItemId& item) const;
- /**
- Gets the specified item image. The value of @a which may be:
- - ::wxTreeItemIcon_Normal: to get the normal item image.
- - ::wxTreeItemIcon_Selected: to get the selected item image (i.e. the
- image which is shown when the item is currently selected).
- - ::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).
- - ::wxTreeItemIcon_SelectedExpanded: to get the selected expanded image
- (which is shown when an expanded item is currently selected).
- */
- virtual int GetItemImage(const wxTreeItemId& item,
- wxTreeItemIcon which = wxTreeItemIcon_Normal) const;
- /**
- Returns the item's parent.
- */
- virtual wxTreeItemId GetItemParent(const wxTreeItemId& item) const;
- /**
- Gets the specified item state.
- */
- int GetItemState(const wxTreeItemId& item) const;
- /**
- Returns the item label.
- */
- virtual wxString GetItemText(const wxTreeItemId& item) const;
- /**
- Returns the colour of the item label.
- */
- virtual wxColour GetItemTextColour(const wxTreeItemId& item) const;
- /**
- Returns the last child of the item (or an invalid tree item if this item
- has no children).
- @see GetFirstChild(), GetNextSibling(), GetLastChild()
- */
- virtual wxTreeItemId GetLastChild(const wxTreeItemId& item) const;
- /**
- Returns the next child; call GetFirstChild() 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.
- @beginWxPerlOnly
- In wxPerl this method returns a 2-element list
- (item, cookie) instead of modifying its parameters.
- @endWxPerlOnly
- @see GetFirstChild()
- */
- virtual wxTreeItemId GetNextChild(const wxTreeItemId& item,
- wxTreeItemIdValue& cookie) const;
- /**
- Returns the next sibling of the specified item; call GetPrevSibling()
- for the previous sibling.
- Returns an invalid tree item if there are no further siblings.
- @see GetPrevSibling()
- */
- virtual wxTreeItemId GetNextSibling(const wxTreeItemId& item) const;
- /**
- Returns the next visible item or an invalid item if this item is the
- last visible one.
- @note The @a item itself must be visible.
- */
- virtual wxTreeItemId GetNextVisible(const wxTreeItemId& item) const;
- /**
- Returns the previous sibling of the specified item; call
- GetNextSibling() for the next sibling.
- Returns an invalid tree item if there are no further children.
- @see GetNextSibling()
- */
- virtual wxTreeItemId GetPrevSibling(const wxTreeItemId& item) const;
- /**
- Returns the previous visible item or an invalid item if this item is the
- first visible one.
- @note The @a item itself must be visible.
- */
- virtual wxTreeItemId GetPrevVisible(const wxTreeItemId& item) const;
- /**
- 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.
- @see SetQuickBestSize()
- */
- bool GetQuickBestSize() const;
- /**
- Returns the root item for the tree control.
- */
- virtual wxTreeItemId GetRootItem() const;
- /**
- Returns the selection, or an invalid item if there is no selection. This
- function only works with the controls without @c wxTR_MULTIPLE style,
- use GetSelections() for the controls which do have this style
- or, if a single item is wanted, use GetFocusedItem().
- */
- virtual wxTreeItemId GetSelection() const;
- /**
- Fills the array of tree items passed in with the currently selected
- items. This function can be called only if the control has the @c
- wxTR_MULTIPLE style.
- Returns the number of selected items.
- @beginWxPerlOnly
- In wxPerl this method takes no parameters and returns a list of
- @c Wx::TreeItemId.
- @endWxPerlOnly
- */
- virtual size_t GetSelections(wxArrayTreeItemIds& selection) const;
- /**
- Returns the state image list (from which application-defined state
- images are taken).
- */
- wxImageList* GetStateImageList() const;
- /**
- Calculates which (if any) item is under the given @a point, returning
- the tree item id at this point plus extra information @a flags. @a flags
- is a bitlist of the following:
- - @c wxTREE_HITTEST_ABOVE: Above the client area.
- - @c wxTREE_HITTEST_BELOW: Below the client area.
- - @c wxTREE_HITTEST_NOWHERE: In the client area but below the last item.
- - @c wxTREE_HITTEST_ONITEMBUTTON: On the button associated with an item.
- - @c wxTREE_HITTEST_ONITEMICON: On the bitmap associated with an item.
- - @c wxTREE_HITTEST_ONITEMINDENT: In the indentation associated with an item.
- - @c wxTREE_HITTEST_ONITEMLABEL: On the label (string) associated with an item.
- - @c wxTREE_HITTEST_ONITEMRIGHT: In the area to the right of an item.
- - @c wxTREE_HITTEST_ONITEMSTATEICON: On the state icon for a tree view
- item that is in a user-defined state.
- - @c wxTREE_HITTEST_TOLEFT: To the right of the client area.
- - @c wxTREE_HITTEST_TORIGHT: To the left of the client area.
- @beginWxPerlOnly
- In wxPerl this method only takes the @a point parameter
- and returns a 2-element list (item, flags).
- @endWxPerlOnly
- */
- wxTreeItemId HitTest(const wxPoint& point, int& flags) const;
- /**
- Inserts an item after a given one (@a previous).
- The @a image and @a selImage parameters are an index within the normal
- image list specifying the image to use for unselected and selected
- items, respectively. If @a image -1 and @a selImage is -1, the same
- image is used for both selected and unselected items.
- */
- wxTreeItemId InsertItem(const wxTreeItemId& parent,
- const wxTreeItemId& previous,
- const wxString& text,
- int image = -1,
- int selImage = -1,
- wxTreeItemData* data = NULL);
- /**
- Inserts an item before one identified
- by its position (@a pos). @a pos must be less than or equal to
- the number of children.
- The @a image and @a selImage parameters are an index within the normal
- image list specifying the image to use for unselected and selected
- items, respectively. If @a image -1 and @a selImage is -1, the same
- image is used for both selected and unselected items.
- */
- wxTreeItemId InsertItem(const wxTreeItemId& parent,
- size_t pos,
- const wxString& text,
- int image = -1,
- int selImage = -1,
- wxTreeItemData* data = NULL);
- /**
- Returns @true if the given item is in bold state.
- @see SetItemBold()
- */
- virtual bool IsBold(const wxTreeItemId& item) const;
- /**
- Returns @true if the control is empty (i.e.\ has no items, even no root
- one).
- */
- bool IsEmpty() const;
- /**
- Returns @true if the item is expanded (only makes sense if it has
- children).
- */
- virtual bool IsExpanded(const wxTreeItemId& item) const;
- /**
- Returns @true if the item is selected.
- */
- virtual bool IsSelected(const wxTreeItemId& item) const;
- /**
- Returns @true if the item is visible on the screen.
- */
- virtual bool IsVisible(const wxTreeItemId& item) const;
- /**
- Returns @true if the item has children.
- */
- virtual bool ItemHasChildren(const wxTreeItemId& item) const;
- /**
- 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 @b must use wxRTTI macros wxDECLARE_DYNAMIC_CLASS()
- and wxIMPLEMENT_DYNAMIC_CLASS() 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 SortChildren()
- */
- virtual int OnCompareItems(const wxTreeItemId& item1,
- const wxTreeItemId& item2);
- /**
- Appends an item as the first child of @a parent, return a new item id.
- The @a image and @a selImage parameters are an index within the normal
- image list specifying the image to use for unselected and selected
- items, respectively. If @a image -1 and @a selImage is -1, the same
- image is used for both selected and unselected items.
- */
- wxTreeItemId PrependItem(const wxTreeItemId& parent,
- const wxString& text,
- int image = -1,
- int selImage = -1,
- wxTreeItemData* data = NULL);
- /**
- Scrolls the specified item into view.
- */
- virtual void ScrollTo(const wxTreeItemId& item);
- /**
- Selects the given item.
- In multiple selection controls, can be also used to deselect a
- currently selected item if the value of @a select is @false.
- Notice that calling this method will generate
- @c wxEVT_TREE_SEL_CHANGING and @c wxEVT_TREE_SEL_CHANGED
- events and that the change could be vetoed by the former event handler.
- */
- virtual void SelectItem(const wxTreeItemId& item, bool select = true);
- /**
- Sets the buttons image list (from which application-defined button
- images are taken).
- The button images assigned with this method will @b not be deleted by
- @ref wxTreeCtrl "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 @NULL.
- @note This function is only available in the generic version.
- @see AssignButtonsImageList().
- */
- void SetButtonsImageList(wxImageList* imageList);
- /**
- Sets the normal image list. The image list assigned with this method
- will @b not be deleted by @ref wxTreeCtrl "wxTreeCtrl"'s destructor, you
- must delete it yourself.
- @see AssignImageList().
- */
- virtual void SetImageList(wxImageList* imageList);
- /**
- Sets the indentation for the tree control.
- */
- virtual void SetIndent(unsigned int indent);
- /**
- Sets the colour of the item's background.
- */
- virtual void SetItemBackgroundColour(const wxTreeItemId& item,
- const wxColour& col);
- /**
- Makes item appear in bold font if @a bold parameter is @true or resets
- it to the normal state.
- @see IsBold()
- */
- virtual void SetItemBold(const wxTreeItemId& item, bool bold = true);
- /**
- Sets the item client data.
- Notice that the client data previously associated with the @a item (if
- any) is @em not freed by this function and so calling this function
- multiple times for the same item will result in memory leaks unless you
- delete the old item data pointer yourself.
- @beginWxPerlOnly
- wxPerl provides the following shortcut method:
- - SetPlData(item, data): sets the Perl data
- associated with the @c Wx::TreeItemData. It is just the same as
- tree->GetItemData(item)->SetData(data).
- @endWxPerlOnly
- */
- virtual void SetItemData(const wxTreeItemId& item, wxTreeItemData* data);
- /**
- 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).
- */
- virtual void SetItemDropHighlight(const wxTreeItemId& item,
- bool highlight = true);
- /**
- 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.
- @see SetItemBold()
- */
- virtual void SetItemFont(const wxTreeItemId& item, const wxFont& font);
- /**
- 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.
- */
- virtual void SetItemHasChildren(const wxTreeItemId& item,
- bool hasChildren = true);
- /**
- Sets the specified item's image. See GetItemImage() for the description
- of the @a which parameter.
- */
- virtual void SetItemImage(const wxTreeItemId& item, int image,
- wxTreeItemIcon which = wxTreeItemIcon_Normal);
- /**
- Sets the specified item state. The value of @a state may be:
- - @c wxTREE_ITEMSTATE_NONE: to disable the item state (the state image will
- be not displayed).
- - @c wxTREE_ITEMSTATE_NEXT: to set the next item state.
- - @c wxTREE_ITEMSTATE_PREV: to set the previous item state.
- */
- void SetItemState(const wxTreeItemId& item, int state);
- /**
- Sets the item label.
- */
- virtual void SetItemText(const wxTreeItemId& item, const wxString& text);
- /**
- Sets the colour of the item's text.
- */
- virtual void SetItemTextColour(const wxTreeItemId& item,
- const wxColour& col);
- /**
- 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.
- @see GetQuickBestSize()
- */
- void SetQuickBestSize(bool quickBestSize);
- /**
- Sets the state image list (from which application-defined state images
- are taken). Image list assigned with this method will @b not be deleted
- by @ref wxTreeCtrl "wxTreeCtrl"'s destructor, you must delete it
- yourself.
- @see AssignStateImageList().
- */
- virtual void SetStateImageList(wxImageList* imageList);
- /**
- Sets the mode flags associated with the display of the tree control. The
- new mode takes effect immediately.
- @note Generic only; MSW ignores changes.
- */
- void SetWindowStyle(long styles);
- /**
- Sorts the children of the given item using OnCompareItems().
- You should override that method to change the sort order (the default is
- ascending case-sensitive alphabetical order).
- @see wxTreeItemData, OnCompareItems()
- */
- virtual void SortChildren(const wxTreeItemId& item);
- /**
- Toggles the given item between collapsed and expanded states.
- */
- virtual void Toggle(const wxTreeItemId& item);
- /**
- Toggles the given item between selected and unselected states. For
- multiselection controls only.
- */
- void ToggleItemSelection(const wxTreeItemId& item);
- /**
- Removes the selection from the currently selected item (if any).
- */
- virtual void Unselect();
- /**
- This function either behaves the same as Unselect() if the control
- doesn't have @c wxTR_MULTIPLE style, or removes the selection from all
- items if it does have this style.
- */
- virtual void UnselectAll();
- /**
- Unselects the given item. This works in multiselection controls only.
- */
- void UnselectItem(const wxTreeItemId& item);
- /**
- Select all the immediate children of the given parent.
- This function can be used with multiselection controls only.
- @since 2.9.1
- */
- virtual void SelectChildren(const wxTreeItemId& parent);
- };
- /**
- @class wxTreeEvent
- A tree event holds information about events associated with wxTreeCtrl
- objects.
- To process input from a tree control, use these event handler macros to
- direct input to member functions that take a wxTreeEvent argument.
- @beginEventTable{wxTreeEvent}
- @event{EVT_TREE_BEGIN_DRAG(id, func)}
- Begin dragging with the left mouse button. If you want to enable
- left-dragging you need to intercept this event and explicitly call
- wxTreeEvent::Allow(), as it's vetoed by default. Also notice that the
- control must have an associated image list (see SetImageList()) to
- drag its items under MSW.
- @event{EVT_TREE_BEGIN_RDRAG(id, func)}
- Begin dragging with the right mouse button. If you want to enable
- right-dragging you need to intercept this event and explicitly call
- wxTreeEvent::Allow(), as it's vetoed by default.
- @event{EVT_TREE_END_DRAG(id, func)}
- End dragging with the left or right mouse button.
- @event{EVT_TREE_BEGIN_LABEL_EDIT(id, func)}
- Begin editing a label. This can be prevented by calling Veto().
- @event{EVT_TREE_END_LABEL_EDIT(id, func)}
- Finish editing a label. This can be prevented by calling Veto().
- @event{EVT_TREE_DELETE_ITEM(id, func)}
- Delete an item.
- @event{EVT_TREE_GET_INFO(id, func)}
- Request information from the application.
- @event{EVT_TREE_SET_INFO(id, func)}
- Information is being supplied.
- @event{EVT_TREE_ITEM_ACTIVATED(id, func)}
- The item has been activated, i.e. chosen by double clicking it with
- mouse or from keyboard.
- @event{EVT_TREE_ITEM_COLLAPSED(id, func)}
- The item has been collapsed.
- @event{EVT_TREE_ITEM_COLLAPSING(id, func)}
- The item is being collapsed. This can be prevented by calling Veto().
- @event{EVT_TREE_ITEM_EXPANDED(id, func)}
- The item has been expanded.
- @event{EVT_TREE_ITEM_EXPANDING(id, func)}
- The item is being expanded. This can be prevented by calling Veto().
- @event{EVT_TREE_ITEM_RIGHT_CLICK(id, func)}
- The user has clicked the item with the right mouse button.
- @event{EVT_TREE_ITEM_MIDDLE_CLICK(id, func)}
- The user has clicked the item with the middle mouse button.
- @event{EVT_TREE_SEL_CHANGED(id, func)}
- Selection has changed.
- @event{EVT_TREE_SEL_CHANGING(id, func)}
- Selection is changing. This can be prevented by calling Veto().
- @event{EVT_TREE_KEY_DOWN(id, func)}
- A key has been pressed.
- @event{EVT_TREE_ITEM_GETTOOLTIP(id, func)}
- The opportunity to set the item tooltip is being given to the
- application (call SetToolTip()). Windows only.
- @event{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.
- @event{EVT_TREE_STATE_IMAGE_CLICK(id, func)}
- The state image has been clicked.
- @endEventTable
- @library{wxcore}
- @category{events}
- @see wxTreeCtrl
- */
- class wxTreeEvent : public wxNotifyEvent
- {
- public:
- /**
- Constructor, used by wxWidgets itself only.
- */
- wxTreeEvent(wxEventType commandType, wxTreeCtrl* tree,
- const wxTreeItemId& item = wxTreeItemId());
- /**
- Returns the item (valid for all events).
- */
- wxTreeItemId GetItem() const;
- /**
- Returns the key code if the event is a key event. Use GetKeyEvent() to
- get the values of the modifier keys for this event (i.e. Shift or Ctrl).
- */
- int GetKeyCode() const;
- /**
- Returns the key event for @c EVT_TREE_KEY_DOWN events.
- */
- const wxKeyEvent& GetKeyEvent() const;
- /**
- Returns the label if the event is a begin or end edit label event.
- */
- const wxString& GetLabel() const;
- /**
- Returns the old item index (valid for @c EVT_TREE_ITEM_CHANGING and
- @c EVT_TREE_ITEM_CHANGED events).
- */
- wxTreeItemId GetOldItem() const;
- /**
- Returns the position of the mouse pointer if the event is a drag or
- menu-context event.
- In both cases the position is in client coordinates - i.e. relative to
- the wxTreeCtrl window (so that you can pass it directly to e.g.
- wxWindow::PopupMenu()).
- */
- wxPoint GetPoint() const;
- /**
- Returns @true if the label edit was cancelled. This should be called
- from within an @c EVT_TREE_END_LABEL_EDIT handler.
- */
- bool IsEditCancelled() const;
- /**
- Set the tooltip for the item (valid for @c EVT_TREE_ITEM_GETTOOLTIP
- events). Windows only.
- */
- void SetToolTip(const wxString& tooltip);
- };
- wxEventType wxEVT_TREE_BEGIN_DRAG;
- wxEventType wxEVT_TREE_BEGIN_RDRAG;
- wxEventType wxEVT_TREE_BEGIN_LABEL_EDIT;
- wxEventType wxEVT_TREE_END_LABEL_EDIT;
- wxEventType wxEVT_TREE_DELETE_ITEM;
- wxEventType wxEVT_TREE_GET_INFO;
- wxEventType wxEVT_TREE_SET_INFO;
- wxEventType wxEVT_TREE_ITEM_EXPANDED;
- wxEventType wxEVT_TREE_ITEM_EXPANDING;
- wxEventType wxEVT_TREE_ITEM_COLLAPSED;
- wxEventType wxEVT_TREE_ITEM_COLLAPSING;
- wxEventType wxEVT_TREE_SEL_CHANGED;
- wxEventType wxEVT_TREE_SEL_CHANGING;
- wxEventType wxEVT_TREE_KEY_DOWN;
- wxEventType wxEVT_TREE_ITEM_ACTIVATED;
- wxEventType wxEVT_TREE_ITEM_RIGHT_CLICK;
- wxEventType wxEVT_TREE_ITEM_MIDDLE_CLICK;
- wxEventType wxEVT_TREE_END_DRAG;
- wxEventType wxEVT_TREE_STATE_IMAGE_CLICK;
- wxEventType wxEVT_TREE_ITEM_GETTOOLTIP;
- wxEventType wxEVT_TREE_ITEM_MENU;
|