| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947 | 
							- ///////////////////////////////////////////////////////////////////////////////
 
- // Name:        interface/wx/treelist.h
 
- // Purpose:     wxTreeListCtrl class documentation
 
- // Author:      Vadim Zeitlin
 
- // Created:     2011-08-17
 
- // Copyright:   (c) 2011 Vadim Zeitlin <vadim@wxwidgets.org>
 
- // Licence:     wxWindows licence
 
- ///////////////////////////////////////////////////////////////////////////////
 
- /**
 
-    wxTreeListCtrl styles.
 
-    Notice that using wxTL_USER_3STATE implies wxTL_3STATE and wxTL_3STATE in
 
-    turn implies wxTL_CHECKBOX.
 
- */
 
- enum
 
- {
 
-     wxTL_SINGLE         = 0x0000,       /// This is the default anyhow.
 
-     wxTL_MULTIPLE       = 0x0001,       /// Allow multiple selection.
 
-     wxTL_CHECKBOX       = 0x0002,       /// Show checkboxes in the first column.
 
-     wxTL_3STATE         = 0x0004,       /// Allow 3rd state in checkboxes.
 
-     wxTL_USER_3STATE    = 0x0008,       /// Allow user to set 3rd state.
 
-     /**
 
-         Don't show the column headers.
 
-         By default this control shows the column headers, using this class
 
-         allows to avoid this and show only the data.
 
-         @since 2.9.5
 
-      */
 
-     wxTL_NO_HEADER      = 0x0010,
 
-     wxTL_DEFAULT_STYLE  = wxTL_SINGLE,
 
-     wxTL_STYLE_MASK     = wxTL_SINGLE |
 
-                           wxTL_MULTIPLE |
 
-                           wxTL_CHECKBOX |
 
-                           wxTL_3STATE |
 
-                           wxTL_USER_3STATE
 
- };
 
- /**
 
-     @class wxTreeListItem
 
-    
 
-     Unique identifier of an item in wxTreeListCtrl.
 
-     This is an opaque class which can't be used by the application in any other
 
-     way than receiving or passing it to wxTreeListCtrl and checking for
 
-     validity.
 
-     @see wxTreeListCtrl
 
-     @library{wxadv}
 
-     @category{ctrl}
 
-     @since 2.9.3
 
-  */
 
- class wxTreeListItem
 
- {
 
- public:
 
-     /**
 
-         Only the default constructor is publicly accessible.
 
-         Default constructing a wxTreeListItem creates an invalid item.
 
-      */
 
-     wxTreeListItem();
 
-     /**
 
-         Return true if the item is valid.
 
-      */
 
-     bool IsOk() const;
 
- };
 
- /**
 
-     @class wxTreeListItemComparator
 
-    
 
-     Class defining sort order for the items in wxTreeListCtrl.
 
-     @see wxTreeListCtrl
 
-     @library{wxadv}
 
-     @category{ctrl}
 
-     @since 2.9.3
 
-  */
 
- class wxTreeListItemComparator
 
- {
 
- public:
 
-     /**
 
-         Default constructor.
 
-         Notice that this class is not copyable, comparators are not passed by
 
-         value.
 
-      */
 
-     wxTreeListItemComparator();
 
-     /**
 
-         Pure virtual function which must be overridden to define sort order.
 
-         The comparison function should return negative, null or positive value
 
-         depending on whether the first item is less than, equal to or greater
 
-         than the second one. The items should be compared using their values
 
-         for the given column.
 
-         @param treelist
 
-             The control whose contents is being sorted.
 
-         @param column
 
-             The column of this control used for sorting.
 
-         @param first
 
-             First item to compare.
 
-         @param second
 
-             Second item to compare.
 
-         @return
 
-             A negative value if the first item is less than (i.e. should appear
 
-             above) the second one, zero if the two items are equal or a
 
-             positive value if the first item is greater than (i.e. should
 
-             appear below) the second one.
 
-      */
 
-     virtual int
 
-     Compare(wxTreeListCtrl* treelist,
 
-             unsigned column,
 
-             wxTreeListItem first,
 
-             wxTreeListItem second) = 0;
 
-     /**
 
-         Trivial but virtual destructor.
 
-         Although this class is not used polymorphically by wxWidgets itself,
 
-         provide virtual dtor in case it's used like this in the user code.
 
-      */
 
-     virtual ~wxTreeListItemComparator();
 
- };
 
- /**
 
-     Container of multiple items.
 
-  */
 
- typedef wxVector<wxTreeListItem> wxTreeListItems;
 
- /**
 
-     Special wxTreeListItem value meaning "insert before the first item".
 
-     This value can be passed to wxTreeListCtrl::InsertItem() to achieve the
 
-     same effect as calling wxTreeListCtrl::PrependItem().
 
-  */
 
- extern const wxTreeListItem wxTLI_FIRST;
 
- /**
 
-     Special wxTreeListItem value meaning "insert after the last item".
 
-     This value can be passed to wxTreeListCtrl::InsertItem() to achieve the
 
-     same effect as calling wxTreeListCtrl::AppendItem().
 
-  */
 
- extern const wxTreeListItem wxTLI_LAST;
 
- /**
 
-     @class wxTreeListCtrl
 
-     A control combining wxTreeCtrl and wxListCtrl features.
 
-     This is a multi-column tree control optionally supporting images and
 
-     checkboxes for the items in the first column.
 
-     It is currently implemented using wxDataViewCtrl internally but provides a
 
-     much simpler interface for the common use case it addresses. Thus, one of
 
-     the design principles for this control is simplicity and intentionally
 
-     doesn't provide all the features of wxDataViewCtrl. Most importantly, this
 
-     class stores all its data internally and doesn't require you to define a
 
-     custom model for it.
 
-     Instead, this controls works like wxTreeCtrl or non-virtual wxListCtrl and
 
-     allows you to simply add items to it using wxTreeListCtrl::AppendItem() and
 
-     related methods. Typically, you start by setting up the columns (you must
 
-     have at least one) by calling wxTreeListCtrl::AppendColumn() and then add
 
-     the items. While only the text of the first column can be specified when
 
-     adding them, you can use wxTreeListCtrl::SetItemText() to set the text of
 
-     the other columns.
 
-     Unlike wxTreeCtrl or wxListCtrl this control can sort its items on its own.
 
-     To allow user to sort the control contents by clicking on some column you
 
-     should use wxCOL_SORTABLE flag when adding that column to the control. When
 
-     a column with this flag is clicked, the control resorts itself using the
 
-     values in this column. By default the sort is done using alphabetical order
 
-     comparison of the items text, which is not always correct (e.g. this
 
-     doesn't work for the numeric columns). To change this you may use
 
-     SetItemComparator() method to provide a custom comparator, i.e. simply an
 
-     object that implements comparison between the two items. The treelist
 
-     sample shows an example of doing this. And if you need to sort the control
 
-     programmatically, you can call SetSortColumn() method.
 
-     Here are the styles supported by this control. Notice that using
 
-     wxTL_USER_3STATE implies wxTL_3STATE and wxTL_3STATE in turn implies
 
-     wxTL_CHECKBOX.
 
-     @beginStyleTable
 
-     @style{wxTL_SINGLE}
 
-         Single selection, this is the default.
 
-     @style{wxTL_MULTIPLE}
 
-         Allow multiple selection, see GetSelections().
 
-     @style{wxTL_CHECKBOX}
 
-         Show the usual, 2 state, checkboxes for the items in the first column.
 
-     @style{wxTL_3STATE}
 
-         Show the checkboxes that can possibly be set by the program, but not
 
-         the user, to a third, undetermined, state, for the items in the first
 
-         column. Implies wxTL_CHECKBOX.
 
-     @style{wxTL_USER_3STATE}
 
-         Same as wxTL_3STATE but the user can also set the checkboxes to the
 
-         undetermined state. Implies wxTL_3STATE.
 
-     @style{wxTL_DEFAULT_STYLE}
 
-         Style used by the control by default, just wxTL_SINGLE currently.
 
-     @endStyleTable
 
-     @beginEventTable{wxTreeListEvent}
 
-     @event{EVT_TREELIST_SELECTION_CHANGED(id, func)}
 
-         Process @c wxEVT_TREELIST_SELECTION_CHANGED event and notifies
 
-         about the selection change in the control. In the single selection case
 
-         the item indicated by the event has been selected and previously
 
-         selected item, if any, was deselected. In multiple selection case, the
 
-         selection of this item has just changed (it may have been either
 
-         selected or deselected) but notice that the selection of other items
 
-         could have changed as well, use wxTreeListCtrl::GetSelections() to
 
-         retrieve the new selection if necessary.
 
-     @event{EVT_TREELIST_ITEM_EXPANDING(id, func)}
 
-         Process @c wxEVT_TREELIST_ITEM_EXPANDING event notifying about
 
-         the given branch being expanded. This event is sent before the
 
-         expansion occurs and can be vetoed to prevent it from happening.
 
-     @event{EVT_TREELIST_ITEM_EXPANDED(id, func)}
 
-         Process @c wxEVT_TREELIST_ITEM_EXPANDED event notifying about
 
-         the expansion of the given branch. This event is sent after the
 
-         expansion occurs and can't be vetoed.
 
-     @event{EVT_TREELIST_ITEM_CHECKED(id, func)}
 
-         Process @c wxEVT_TREELIST_ITEM_CHECKED event notifying about
 
-         the user checking or unchecking the item. You can use
 
-         wxTreeListCtrl::GetCheckedState() to retrieve the new item state and
 
-         wxTreeListEvent::GetOldCheckedState() to get the previous one.
 
-     @event{EVT_TREELIST_ITEM_ACTIVATED(id, func)}
 
-         Process @c wxEVT_TREELIST_ITEM_ACTIVATED event notifying about
 
-         the user double clicking the item or activating it from keyboard.
 
-     @event{EVT_TREELIST_ITEM_CONTEXT_MENU(id, func)}
 
-         Process @c wxEVT_TREELIST_ITEM_CONTEXT_MENU event indicating
 
-         that the popup menu for the given item should be displayed.
 
-     @event{EVT_TREELIST_COLUMN_SORTED(id, func)}
 
-         Process @c wxEVT_TREELIST_COLUMN_SORTED event indicating that
 
-         the control contents has just been resorted using the specified column.
 
-         The event doesn't carry the sort direction, use GetSortColumn() method
 
-         if you need to know it.
 
-     @endEventTable
 
-     @library{wxadv}
 
-     @category{ctrl}
 
-     @since 2.9.3
 
-     @see wxTreeCtrl, wxDataViewCtrl
 
-  */
 
- class wxTreeListCtrl : public wxWindow
 
- {
 
- public:
 
-     /**
 
-         Default constructor, call Create() later.
 
-         This constructor is used during two-part construction process when it
 
-         is impossible or undesirable to create the window when constructing the
 
-         object.
 
-      */
 
-     wxTreeListCtrl();
 
-     /**
 
-         Full constructing, creating the object and its window.
 
-         See Create() for the parameters description.
 
-      */
 
-     wxTreeListCtrl(wxWindow* parent,
 
-                    wxWindowID id,
 
-                    const wxPoint& pos = wxDefaultPosition,
 
-                    const wxSize& size = wxDefaultSize,
 
-                    long style = wxTL_DEFAULT_STYLE,
 
-                    const wxString& name = wxTreeListCtrlNameStr);
 
-     /**
 
-         Create the control window.
 
-         Can be only called for the objects created using the default
 
-         constructor and exactly once.
 
-         @param parent
 
-             The parent window, must be non-NULL.
 
-         @param id
 
-             The window identifier, may be ::wxID_ANY.
 
-         @param pos
 
-             The initial window position, usually unused.
 
-         @param size
 
-             The initial window size, usually unused.
 
-         @param style
 
-             The window style, see their description in the class documentation.
 
-         @param name
 
-             The name of the window.
 
-      */
 
-     bool Create(wxWindow* parent,
 
-                 wxWindowID id,
 
-                 const wxPoint& pos = wxDefaultPosition,
 
-                 const wxSize& size = wxDefaultSize,
 
-                 long style = wxTL_DEFAULT_STYLE,
 
-                 const wxString& name = wxTreeListCtrlNameStr);
 
-     /**
 
-         Image list methods.
 
-         Like wxTreeCtrl and wxListCtrl this class uses wxImageList so if you
 
-         intend to use item icons with it, you must construct wxImageList
 
-         containing them first and then specify the indices of the icons in this
 
-         image list when adding the items later.
 
-      */
 
-     //@{
 
-     /// A constant indicating that no image should be used for an item.
 
-     static const int NO_IMAGE = -1;
 
-     /**
 
-         Sets the image list and gives its ownership to the control.
 
-         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 image list.
 
-         The image list assigned with this method will @b not be deleted by the
 
-         control itself and you will need to delete it yourself, use
 
-         AssignImageList() to give the image list ownership to the control.
 
-         @param imageList
 
-             Image list to use, may be @NULL to not show any images any more.
 
-     */
 
-     void SetImageList(wxImageList* imageList);
 
-     //@}
 
-     /**
 
-         Column methods.
 
-      */
 
-     //@{
 
-     /**
 
-         Add a column with the given title and attributes.
 
-         @param title
 
-             The column label.
 
-         @param width
 
-             The width of the column in pixels or the special
 
-             wxCOL_WIDTH_AUTOSIZE value indicating that the column should adjust
 
-             to its contents. Notice that the first column is special and will
 
-             be always resized to fill all the space not taken by the other
 
-             columns, i.e. the width specified here is ignored for it.
 
-         @param align
 
-             Alignment of both the column header and its items.
 
-         @param flags
 
-             Column flags, currently can include wxCOL_RESIZABLE to allow the
 
-             user to resize the column and wxCOL_SORTABLE to allow the user to
 
-             resort the control contents by clicking on this column.
 
-         @return
 
-             Index of the new column or -1 on failure.
 
-      */
 
-     int AppendColumn(const wxString& title,
 
-                      int width = wxCOL_WIDTH_AUTOSIZE,
 
-                      wxAlignment align = wxALIGN_LEFT,
 
-                      int flags = wxCOL_RESIZABLE);
 
-     /// Return the total number of columns.
 
-     unsigned GetColumnCount() const;
 
-     /**
 
-         Delete the column with the given index.
 
-         @param col
 
-             Column index in 0 to GetColumnCount() (exclusive) range.
 
-         @return
 
-             True if the column was deleted, false if index is invalid or
 
-             deleting the column failed for some other reason.
 
-      */
 
-     bool DeleteColumn(unsigned col);
 
-     /**
 
-         Delete all columns.
 
-         @see DeleteAllItems()
 
-      */
 
-     void ClearColumns();
 
-     /**
 
-         Change the width of the given column.
 
-         Set column width to either the given value in pixels or to the value
 
-         large enough to fit all of the items if width is wxCOL_WIDTH_AUTOSIZE.
 
-         Notice that setting the width of the first column is ignored as this
 
-         column is always resized to fill the space left by the other columns.
 
-      */
 
-     void SetColumnWidth(unsigned col, int width);
 
-     /// Get the current width of the given column in pixels.
 
-     int GetColumnWidth(unsigned col) const;
 
-     /**
 
-         Get the width appropriate for showing the given text.
 
-         This is typically used as second argument for AppendColumn() or with
 
-         SetColumnWidth().
 
-      */
 
-     int WidthFor(const wxString& text) const;
 
-     //@}
 
-     /**
 
-         Adding and removing items.
 
-         When adding items, the parent and text of the first column of the new item
 
-         must always be specified, the rest is optional.
 
-         Each item can have two images: one used for closed state and another
 
-         for opened one. Only the first one is ever used for the items that
 
-         don't have children. And both are not set by default.
 
-         It is also possible to associate arbitrary client data pointer with the
 
-         new item. It will be deleted by the control when the item is deleted
 
-         (either by an explicit DeleteItem() call or because the entire control
 
-         is destroyed).
 
-      */
 
-     //@{
 
-     /// Same as InsertItem() with wxTLI_LAST.
 
-     wxTreeListItem AppendItem(wxTreeListItem parent,
 
-                               const wxString& text,
 
-                               int imageClosed = NO_IMAGE,
 
-                               int imageOpened = NO_IMAGE,
 
-                               wxClientData* data = NULL);
 
-     /**
 
-         Insert a new item into the tree.
 
-         @param parent
 
-             The item parent. Must be valid, may be GetRootItem().
 
-         @param previous
 
-             The previous item that this one should be inserted immediately
 
-             after. It must be valid but may be one of the special values
 
-             wxTLI_FIRST or wxTLI_LAST indicating that the item should be either
 
-             inserted before the first child of its parent (if any) or after the
 
-             last one.
 
-         @param text
 
-             The item text.
 
-         @param imageClosed
 
-             The normal item image, may be NO_IMAGE to not show any image.
 
-         @param imageOpened
 
-             The item image shown when it's in the expanded state.
 
-         @param data
 
-             Optional client data pointer that can be later retrieved using
 
-             GetItemData() and will be deleted by the tree when the item itself
 
-             is deleted.
 
-      */
 
-     wxTreeListItem InsertItem(wxTreeListItem parent,
 
-                               wxTreeListItem previous,
 
-                               const wxString& text,
 
-                               int imageClosed = NO_IMAGE,
 
-                               int imageOpened = NO_IMAGE,
 
-                               wxClientData* data = NULL);
 
-     /// Same as InsertItem() with wxTLI_FIRST.
 
-     wxTreeListItem PrependItem(wxTreeListItem parent,
 
-                                const wxString& text,
 
-                                int imageClosed = NO_IMAGE,
 
-                                int imageOpened = NO_IMAGE,
 
-                                wxClientData* data = NULL);
 
-     /// Delete the specified item.
 
-     void DeleteItem(wxTreeListItem item);
 
-     /// Delete all tree items.
 
-     void DeleteAllItems();
 
-     //@}
 
-     /**
 
-         Methods for the tree navigation.
 
-         The tree has an invisible root item which is the hidden parent of all
 
-         top-level items in the tree. Starting from it it is possible to iterate
 
-         over all tree items using GetNextItem().
 
-         It is also possible to iterate over just the children of the given item
 
-         by using GetFirstChild() to get the first of them and then calling
 
-         GetNextSibling() to retrieve all the others.
 
-      */
 
-     //@{
 
-     /// Return the (never shown) root item.
 
-     wxTreeListItem GetRootItem() const;
 
-     /**
 
-         Return the parent of the given item.
 
-         All the tree items visible in the tree have valid parent items, only
 
-         the never shown root item has no parent.
 
-      */
 
-     wxTreeListItem GetItemParent(wxTreeListItem item) const;
 
-     /**
 
-         Return the first child of the given item.
 
-         Item may be the root item.
 
-         Return value may be invalid if the item doesn't have any children.
 
-      */
 
-     wxTreeListItem GetFirstChild(wxTreeListItem item) const;
 
-     /**
 
-         Return the next sibling of the given item.
 
-         Return value may be invalid if there are no more siblings.
 
-      */
 
-     wxTreeListItem GetNextSibling(wxTreeListItem item) const;
 
-     /**
 
-         Return the first item in the tree.
 
-         This is the first child of the root item.
 
-         @see GetNextItem()
 
-      */
 
-     wxTreeListItem GetFirstItem() const;
 
-     /**
 
-         Get item after the given one in the depth-first tree-traversal order.
 
-         Calling this function starting with the result of GetFirstItem() allows
 
-         iterating over all items in the tree.
 
-         The iteration stops when this function returns an invalid item, i.e.
 
-         @code
 
-             for ( wxTreeListItem item = tree->GetFirstItem();
 
-                   item.IsOk();
 
-                   item = tree->GetNextItem(item) )
 
-             {
 
-                 ... Do something with every tree item ...
 
-             }
 
-         @endcode
 
-      */
 
-     wxTreeListItem GetNextItem(wxTreeListItem item) const;
 
-     //@}
 
-     /**
 
-         Items attributes
 
-      */
 
-     //@{
 
-     /**
 
-         Return the text of the given item.
 
-         By default, returns the text of the first column but any other one can
 
-         be specified using @a col argument.
 
-      */
 
-     const wxString& GetItemText(wxTreeListItem item, unsigned col = 0) const;
 
-     /**
 
-         Set the text of the specified column of the given item.
 
-      */
 
-     void SetItemText(wxTreeListItem item, unsigned col, const wxString& text);
 
-     /**
 
-         Set the text of the first column of the given item.
 
-      */
 
-     void SetItemText(wxTreeListItem item, const wxString& text);
 
-     /**
 
-         Set the images for the given item.
 
-         See InsertItem() for the images parameters descriptions.
 
-      */
 
-     void SetItemImage(wxTreeListItem item, int closed, int opened = NO_IMAGE);
 
-     /**
 
-         Get the data associated with the given item.
 
-         The returned pointer may be @NULL.
 
-         It must not be deleted by the caller as this will be done by the
 
-         control itself.
 
-      */
 
-     wxClientData* GetItemData(wxTreeListItem item) const;
 
-     /**
 
-         Set the data associated with the given item.
 
-         Previous client data, if any, is deleted when this function is called
 
-         so it may be used to delete the current item data object and reset it
 
-         by passing @NULL as @a data argument.
 
-      */
 
-     void SetItemData(wxTreeListItem item, wxClientData* data);
 
-     //@}
 
-     /**
 
-         Expanding and collapsing tree branches.
 
-         Notice that calling neither Expand() nor Collapse() method generates
 
-         any events.
 
-      */
 
-     //@{
 
-     /**
 
-         Expand the given tree branch.
 
-      */
 
-     void Expand(wxTreeListItem item);
 
-     /**
 
-         Collapse the given tree branch.
 
-      */
 
-     void Collapse(wxTreeListItem item);
 
-     /**
 
-         Return whether the given item is expanded.
 
-      */
 
-     bool IsExpanded(wxTreeListItem item) const;
 
-     //@}
 
-     /**
 
-         Selection methods.
 
-         The behaviour of the control is different in single selection mode (the
 
-         default) and multi-selection mode (if @c wxTL_MULTIPLE was specified
 
-         when creating it). Not all methods can be used in both modes and some
 
-         of those that can don't behave in the same way in two cases.
 
-      */
 
-     //@{
 
-     /**
 
-         Return the currently selected item.
 
-         This method can't be used with multi-selection controls, use
 
-         GetSelections() instead.
 
-         The return value may be invalid if no item has been selected yet. Once
 
-         an item in a single selection control was selected, it will keep a
 
-         valid selection.
 
-      */
 
-     wxTreeListItem GetSelection() const;
 
-     /**
 
-         Fill in the provided array with all the selected items.
 
-         This method can be used in both single and multi-selection case.
 
-         The previous array contents is destroyed.
 
-         Returns the number of selected items.
 
-      */
 
-     unsigned GetSelections(wxTreeListItems& selections) const;
 
-     /**
 
-         Select the given item.
 
-         In single selection mode, deselects any other selected items, in
 
-         multi-selection case it adds to the selection.
 
-      */
 
-     void Select(wxTreeListItem item);
 
-     /**
 
-         Deselect the given item.
 
-         This method can be used in multiple selection mode only.
 
-      */
 
-     void Unselect(wxTreeListItem item);
 
-     /**
 
-         Return true if the item is selected.
 
-         This method can be used in both single and multiple selection modes.
 
-      */
 
-     bool IsSelected(wxTreeListItem item) const;
 
-     /**
 
-         Select all the control items.
 
-         Can be only used in multi-selection mode.
 
-      */
 
-     void SelectAll();
 
-     /**
 
-         Deselect all the control items.
 
-         Can be only used in multi-selection mode.
 
-      */
 
-     void UnselectAll();
 
-     //@}
 
-     /**
 
-         Checkbox handling
 
-         Methods in this section can only be used with the controls created with
 
-         wxTL_CHECKBOX style.
 
-      */
 
-     //@{
 
-     /**
 
-         Change the item checked state.
 
-         @param item
 
-             Valid non-root tree item.
 
-         @param state
 
-             One of wxCHK_CHECKED, wxCHK_UNCHECKED or, for the controls with
 
-             wxTL_3STATE or wxTL_USER_3STATE styles, wxCHK_UNDETERMINED.
 
-      */
 
-     void CheckItem(wxTreeListItem item, wxCheckBoxState state = wxCHK_CHECKED);
 
-     /**
 
-         Change the checked state of the given item and all its children.
 
-         This is the same as CheckItem() but checks or unchecks not only this
 
-         item itself but all its children recursively as well.
 
-      */
 
-     void CheckItemRecursively(wxTreeListItem item,
 
-                               wxCheckBoxState state = wxCHK_CHECKED);
 
-     /**
 
-         Uncheck the given item.
 
-         This is synonymous with CheckItem(wxCHK_UNCHECKED).
 
-      */
 
-     void UncheckItem(wxTreeListItem item);
 
-     /**
 
-         Update the state of the parent item to reflect the checked state of its
 
-         children.
 
-         This method updates the parent of this item recursively: if this item
 
-         and all its siblings are checked, the parent will become checked as
 
-         well. If this item and all its siblings are unchecked, the parent will
 
-         be unchecked. And if the siblings of this item are not all in the same
 
-         state, the parent will be switched to indeterminate state. And then the
 
-         same logic will be applied to the parents parent and so on recursively.
 
-         This is typically called when the state of the given item has changed
 
-         from EVT_TREELIST_ITEM_CHECKED() handler in the controls which have
 
-         wxTL_3STATE flag. Notice that without this flag this function can't
 
-         work as it would be unable to set the state of a parent with both
 
-         checked and unchecked items so it's only allowed to call it when this
 
-         flag is set.
 
-      */
 
-     void UpdateItemParentStateRecursively(wxTreeListItem item);
 
-     /**
 
-         Return the checked state of the item.
 
-         The return value can be wxCHK_CHECKED, wxCHK_UNCHECKED or
 
-         wxCHK_UNDETERMINED.
 
-      */
 
-     wxCheckBoxState GetCheckedState(wxTreeListItem item) const;
 
-     /**
 
-         Return true if all children of the given item are in the specified
 
-         state.
 
-         This is especially useful for the controls with @c wxTL_3STATE style to
 
-         allow to decide whether the parent effective state should be the same
 
-         @a state, if all its children are in it, or ::wxCHK_UNDETERMINED.
 
-         @see UpdateItemParentStateRecursively()
 
-      */
 
-     bool AreAllChildrenInState(wxTreeListItem item,
 
-                                wxCheckBoxState state) const;
 
-     //@}
 
-     /**
 
-         Sorting.
 
-         If some control columns were added with wxCOL_SORTABLE flag, clicking
 
-         on them will automatically resort the control using the custom
 
-         comparator set by SetItemComparator() or by doing alphabetical
 
-         comparison by default.
 
-         In any case, i.e. even if the user can't sort the control by clicking
 
-         on its header, you may call SetSortColumn() to sort it programmatically
 
-         and call GetSortColumn() to determine whether it's sorted now and, if
 
-         so, by which column and in which order.
 
-      */
 
-     //@{
 
-     /**
 
-         Set the column to use for sorting and the order in which to sort.
 
-         Calling this method resorts the control contents using the values of
 
-         the items in the specified column. Sorting uses custom comparator set
 
-         with SetItemComparator() or alphabetical comparison of items texts if
 
-         none was specified.
 
-         Notice that currently there is no way to reset sort order.
 
-         @param col
 
-             A valid column index.
 
-         @param ascendingOrder
 
-             Indicates whether the items should be sorted in ascending (A to Z)
 
-             or descending (Z to A) order.
 
-      */
 
-     void SetSortColumn(unsigned col, bool ascendingOrder = true);
 
-     /**
 
-         Return the column currently used for sorting, if any.
 
-         If the control is currently unsorted, the function simply returns
 
-         @false and doesn't modify any of its output parameters.
 
-         @param col
 
-             Receives the index of the column used for sorting if non-@NULL.
 
-         @param ascendingOrder
 
-             Receives @true or @false depending on whether the items are sorted
 
-             in ascending or descending order.
 
-         @return
 
-             @true if the control is sorted or @false if it isn't sorted at all.
 
-      */
 
-     bool GetSortColumn(unsigned* col, bool* ascendingOrder = NULL);
 
-     /**
 
-         Set the object to use for comparing the items.
 
-         This object will be used when the control is being sorted because the
 
-         user clicked on a sortable column or SetSortColumn() was called.
 
-         The provided pointer is stored by the control so the object it points
 
-         to must have a life-time equal or greater to that of the control
 
-         itself. In addition, the pointer can be @NULL to stop using custom
 
-         comparator and revert to the default alphabetical comparison.
 
-      */
 
-     void SetItemComparator(wxTreeListItemComparator* comparator);
 
-     //@}
 
-     /**
 
-         View window.
 
-         This control itself is entirely covered by the "view window" which is
 
-         currently a wxDataViewCtrl but if you want to avoid relying on this to
 
-         allow your code to work with later versions which might not be
 
-         wxDataViewCtrl-based, use GetView() function only and only use
 
-         GetDataView() if you really need to call wxDataViewCtrl methods on it.
 
-      */
 
-     //@{
 
-     /**
 
-         Return the view part of this control as a wxWindow.
 
-         This method always returns non-@NULL pointer once the window was
 
-         created.
 
-      */
 
-     wxWindow* GetView() const;
 
-     /**
 
-         Return the view part of this control as wxDataViewCtrl.
 
-         This method may return @NULL in the future, non wxDataViewCtrl-based,
 
-         versions of this class, use GetView() unless you really need to use
 
-         wxDataViewCtrl methods on the returned object.
 
-      */
 
-     wxDataViewCtrl* GetDataView() const;
 
-     //@}
 
- };
 
- /**
 
-     Event generated by wxTreeListCtrl.
 
-     @since 2.9.3
 
-  */
 
- class wxTreeListEvent : public wxNotifyEvent
 
- {
 
- public:
 
-     wxTreeListEvent();
 
-     /**
 
-         Return the item affected by the event.
 
-         This is the item being selected, expanded, checked or activated
 
-         (depending on the event type).
 
-      */
 
-     wxTreeListItem GetItem() const;
 
-     /**
 
-         Return the previous state of the item checkbox.
 
-         This method can be used with @c wxEVT_TREELIST_ITEM_CHECKED
 
-         events only.
 
-         Notice that the new state of the item can be retrieved using
 
-         wxTreeListCtrl::GetCheckedState().
 
-      */
 
-     wxCheckBoxState GetOldCheckedState() const;
 
-     /**
 
-         Return the column affected by the event.
 
-         This is currently only used with @c wxEVT_TREELIST_COLUMN_SORTED
 
-         event.
 
-      */
 
-     unsigned GetColumn() const;
 
- };
 
- /**
 
-     Type of wxTreeListEvent event handlers.
 
-     This macro should be used with wxEvtHandler::Connect() when connecting to
 
-     wxTreeListCtrl events.
 
-  */
 
- #define wxTreeListEventHandler(func) \
 
-     wxEVENT_HANDLER_CAST(wxTreeListEventFunction, func)
 
- wxEventType wxEVT_TREELIST_SELECTION_CHANGED;
 
- wxEventType wxEVT_TREELIST_ITEM_EXPANDING;
 
- wxEventType wxEVT_TREELIST_ITEM_EXPANDED;
 
- wxEventType wxEVT_TREELIST_ITEM_CHECKED;
 
- wxEventType wxEVT_TREELIST_ITEM_ACTIVATED;
 
- wxEventType wxEVT_TREELIST_ITEM_CONTEXT_MENU;
 
- wxEventType wxEVT_TREELIST_COLUMN_SORTED;
 
 
  |