| 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;
|