]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/treectrl.h
Make storing non-trivial data in wxThreadSpecificInfo possible.
[wxWidgets.git] / interface / wx / treectrl.h
index d41d5d4336e7ef2428b9515483c6f7f6d772e298..2b1f1caef8454d91803d2b8be512c73adfa5b432 100644 (file)
@@ -2,7 +2,6 @@
 // Name:        treectrl.h
 // Purpose:     interface of wxTreeItemData
 // Author:      wxWidgets team
-// RCS-ID:      $Id$
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
@@ -15,7 +14,7 @@
     wxTreeItemId handles, which may be tested for validity by calling
     wxTreeItemId::IsOk().
 
-    A similar control with a fully native implemtation for GTK+ and OS X
+    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
         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}
     @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 explicitely call wxTreeEvent::Allow(), as it's vetoed by default.
-          Processes a @c wxEVT_COMMAND_TREE_BEGIN_DRAG event type.
+          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 explicitely call wxTreeEvent::Allow(), as it's vetoed by default.
-          Processes a @c wxEVT_COMMAND_TREE_BEGIN_RDRAG event type.
+          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_COMMAND_TREE_END_DRAG event type.
+          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_COMMAND_TREE_BEGIN_LABEL_EDIT event type.
+          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_COMMAND_TREE_BEGIN_LABEL_EDIT event type.
+          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_COMMAND_TREE_DELETE_ITEM event type.
+          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_COMMAND_TREE_GET_INFO event type.
+          Processes a @c wxEVT_TREE_GET_INFO event type.
     @event{EVT_TREE_SET_INFO(id, func)}
           Information is being supplied.
-          Processes a @c wxEVT_COMMAND_TREE_SET_INFO event type.
+          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_COMMAND_TREE_ITEM_ACTIVATED event type.
+          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_COMMAND_TREE_ITEM_COLLAPSED event type.
+          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_COMMAND_TREE_ITEM_COLLAPSING event type.
+          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_COMMAND_TREE_ITEM_EXPANDED event type.
+          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_COMMAND_TREE_ITEM_EXPANDING event type.
+          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_COMMAND_TREE_ITEM_RIGHT_CLICK event type.
+          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_COMMAND_TREE_ITEM_MIDDLE_CLICK event type.
+          Processes a @c wxEVT_TREE_ITEM_MIDDLE_CLICK event type.
     @event{EVT_TREE_SEL_CHANGED(id, func)}
           Selection has changed.
-          Processes a @c wxEVT_COMMAND_TREE_SEL_CHANGED event type.
+          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_COMMAND_TREE_SEL_CHANGING event type.
+          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_COMMAND_TREE_KEY_DOWN event type.
+          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_COMMAND_TREE_ITEM_GETTOOLTIP event type.
+          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_COMMAND_TREE_ITEM_MENU event type.
+          Processes a @c wxEVT_TREE_ITEM_MENU event type.
     @event{EVT_TREE_STATE_IMAGE_CLICK(id, func)}
-          The state image has been clicked. Windows only.
-          Processes a @c wxEVT_COMMAND_TREE_STATE_IMAGE_CLICK event type.
+          The state image has been clicked.
+          Processes a @c wxEVT_TREE_STATE_IMAGE_CLICK event type.
     @endEventTable
 
 
 
     @library{wxcore}
     @category{ctrl}
-    @appearance{treectrl.png}
+    @appearance{treectrl}
 
     @see wxDataViewTreeCtrl, wxTreeEvent, wxTreeItemData, @ref overview_treectrl,
          wxListBox, wxListCtrl, wxImageList
@@ -331,6 +338,18 @@ public:
     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.
@@ -375,12 +394,6 @@ public:
         So, for example, the x coordinate may be negative if the tree has a
         horizontal scrollbar and its position is not 0.
 
-        @beginWxPythonOnly
-        The wxPython version of this method requires only the @a item and @a
-        textOnly parameters. The return value is either a wxRect object or @c
-        None.
-        @endWxPythonOnly
-
         @beginWxPerlOnly
         In wxPerl this method only takes the @a item and
         @a textOnly parameters and returns a @c Wx::Rect (or @c undef).
@@ -430,11 +443,6 @@ public:
         Returns an invalid tree item (i.e. wxTreeItemId::IsOk() returns @false)
         if there are no further children.
 
-        @beginWxPythonOnly
-        In wxPython the returned wxTreeItemId and the new cookie value are both
-        returned as a tuple containing the two values.
-        @endWxPythonOnly
-
         @beginWxPerlOnly
         In wxPerl this method only takes the @a item parameter, and
         returns a 2-element list (item, cookie).
@@ -497,12 +505,6 @@ public:
 
         @see wxTreeItemData
 
-        @beginWxPythonOnly
-        wxPython provides the following shortcut method:
-        @li GetPyData(item): Returns the Python Object associated with the
-            wxTreeItemData for the given item Id.
-        @endWxPythonOnly
-
         @beginWxPerlOnly
         wxPerl provides the following shortcut method:
         - GetPlData(item): returns the Perl data
@@ -514,6 +516,11 @@ public:
 
     /**
         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;
 
@@ -570,11 +577,6 @@ public:
 
         Returns an invalid tree item if there are no further children.
 
-        @beginWxPythonOnly
-        In wxPython the returned wxTreeItemId and the new cookie value are both
-        returned as a tuple containing the two values.
-        @endWxPythonOnly
-
         @beginWxPerlOnly
         In wxPerl this method returns a 2-element list
         (item, cookie) instead of modifying its parameters.
@@ -649,11 +651,6 @@ public:
 
         Returns the number of selected items.
 
-        @beginWxPythonOnly
-        The wxPython version of this method accepts no parameters and returns a
-        Python list of @ref wxTreeItemId "wxTreeItemId"s.
-        @endWxPythonOnly
-
         @beginWxPerlOnly
         In wxPerl this method takes no parameters and returns a list of
         @c Wx::TreeItemId.
@@ -685,10 +682,6 @@ public:
         - @c wxTREE_HITTEST_TOLEFT: To the right of the client area.
         - @c wxTREE_HITTEST_TORIGHT: To the left of the client area.
 
-        @beginWxPythonOnly
-        In wxPython both the wxTreeItemId and the flags are returned as a tuple.
-        @endWxPythonOnly
-
         @beginWxPerlOnly
         In wxPerl this method only takes the @a point parameter
         and returns a 2-element list (item, flags).
@@ -714,20 +707,16 @@ public:
 
     /**
         Inserts an item before one identified
-        by its position (@a before). @a before must be less than the number of
-        children.
+        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.
-
-        @beginWxPythonOnly
-        In wxPython, this form of this method is called @c InsertItemBefore().
-        @endWxPythonOnly
     */
     wxTreeItemId InsertItem(const wxTreeItemId& parent,
-                            size_t before,
+                            size_t pos,
                             const wxString& text,
                             int image = -1,
                             int selImage = -1,
@@ -741,7 +730,7 @@ public:
     virtual bool IsBold(const wxTreeItemId& item) const;
 
     /**
-        Returns @true if the control is empty (i.e. has no items, even no root
+        Returns @true if the control is empty (i.e.\ has no items, even no root
         one).
     */
     bool IsEmpty() const;
@@ -804,9 +793,14 @@ public:
     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.
+        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);
 
@@ -862,11 +856,6 @@ public:
         multiple times for the same item will result in memory leaks unless you
         delete the old item data pointer yourself.
 
-        @beginWxPythonOnly
-        - @b SetPyData( @a item, @c obj): Associate the given Python Object with
-            the wxTreeItemData for the given item Id.
-        @endWxPythonOnly
-
         @beginWxPerlOnly
         wxPerl provides the following shortcut method:
         - SetPlData(item, data): sets the Perl data
@@ -1019,13 +1008,13 @@ public:
     @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 explicitely call
+        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 explicitely call
+        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.
@@ -1070,7 +1059,7 @@ public:
         The state image has been clicked.
     @endEventTable
 
-    @library{wxbase}
+    @library{wxcore}
     @category{events}
 
     @see wxTreeCtrl
@@ -1133,3 +1122,27 @@ public:
     */
     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;
+