Detail

The TreeSelection object is a helper object to manage the selection for
a TreeView widget. The TreeSelection object is automatically created
when a new TreeView widget is created, and cannot exist independentally of
this widget. The primary reason the TreeSelection objects exists is for
cleanliness of code and API. That is, there is no conceptual reason all
these functions could not be methods on the TreeView widget instead of a
separate function.

The TreeSelection object is gotten from a TreeView by calling
treeViewGetSelection. It can be
manipulated to check the selection status of the tree, as well as select
and deselect individual rows. Selection is done completely on the
TreeView side. As a result, multiple views of the same model can
have completely different selections. Additionally, you cannot change the
selection of a row on the model that is not currently displayed by the view
without expanding its parents first.

One of the important things to remember when monitoring the selection of
a view is that the "changed" signal is mostly a hint. That is, it may only
emit one signal when a range of rows is selected. Additionally, it may on
occasion emit a "changed" signal when nothing has happened (mostly as a
result of programmers calling select_row on an already selected row).

If set, this function is called before any
node is selected or unselected, giving some control over which nodes are
selected. The select function should return True if the state of the node
may be toggled, and False if the state of the node should be left
unchanged.

Additionally, if you are
planning on modifying the model after calling this function, you may want to
convert the returned list into a list of TreeRowReferences. To do this,
you can use treeRowReferenceNew.

Signals

Emitted whenever the selection has (possibly) changed. Please note that
this signal is mostly a hint. It may only be emitted once when a range of
rows are selected, and it may occasionally be emitted when nothing has
happened.