Main Page Widgets Namespaces Book

# Gtk::TreeSelection Class Reference
[TreeView Classes]

Inheritance diagram for Gtk::TreeSelection:

[legend]
List of all members.

## Detailed Description

Typedefed as Gtk::TreeView::Selection.

This is a helper object to manage the selection for a Gtk::TreeView widget.

It is automatically created when a new Gtk::TreeView widget is created, and cannot exist independently of this widget. The primary reason this class exists is for cleanliness of code and API. That is, there is no conceptual reason all these methods could not be methods on the Gtk::TreeView widget instead of a separate class.

The Gtk::TreeSelection object can be obtained from a Gtk::TreeView by calling Gtk::TreeView::get_selection(). It can be manipulated to check the selection status of the tree, as well as to select and deselect individual rows. Selection is done completely view-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.

When monitoring the selection of a view, it's important to remember 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.

## Public Types
typedef Glib::ListHandle< TreeModel::Path, TreePath_Traits > | ListHandle_Path
typedef sigc::slot< void, const TreeModel::iterator& > | SlotForeachIter
| For example, void on_foreach(const Gtk::TreeModel::iterator& iter);.
typedef sigc::slot< void, const TreeModel::Path& > | SlotForeachPath
| For example, void on_foreach(const Gtk::TreeModel::Path& path);.
typedef sigc::slot< void, const TreeModel::Path&, const TreeModel::iterator& > | SlotForeachPathAndIter
| For example, void on_foreach(const Gtk::TreeModel::Path& path, const Gtk::TreeModel::iterator& iter);.
typedef sigc::slot< bool, const Glib::RefPtr<TreeModel>&, const TreeModel::Path&, bool > | SlotSelect
| For instance, bool on_select_function(const Glib::RefPtr<TreeModel>& model, const TreeModel::Path& path, bool path_currently_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.
## Public Member Functions
int | count_selected_rows () const
| Return value: The number of rows selected.
SelectionMode | get_mode () const
| Gets the selection mode for selection .
Glib::RefPtr<const TreeModel> | get_model () const
Glib::RefPtr<TreeModel> | get_model ()
| Shortcut for get_tree_view()->get_model().
TreeModel::iterator | get_selected (Glib::RefPtr<TreeModel>& model)
| Get the currently selected row.
TreeModel::iterator | get_selected ()
| Get the currently selected row.
ListHandle_Path | get_selected_rows (Glib::RefPtr<TreeModel>& model)
| Creates a list of paths of all selected rows.
ListHandle_Path | get_selected_rows () const
| Creates a list of paths of all selected rows.
const TreeView* | get_tree_view () const
| Return value: A Gtk::TreeView.
TreeView* | get_tree_view ()
| Return value: A Gtk::TreeView.
const GtkTreeSelection* | gobj () const
| Provides access to the underlying C GObject.
GtkTreeSelection* | gobj ()
| Provides access to the underlying C GObject.
GtkTreeSelection* | gobj_copy ()
| Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs.
bool | is_selected (const TreeModel::iterator& iter) const
| Return value: `true`, if iter is selected.
bool | is_selected (const TreeModel::Path& path) const
| Return value: `true` if path is selected.
void | select (const TreeModel::Path& start_path, const TreeModel::Path& end_path)
| Selects a range of nodes, determined by start_path and end_path inclusive.
void | select (const TreeModel::Row& row)
| Selects the specified iterator.
void | select (const TreeModel::iterator& iter)
| Selects the specified iterator.
void | select (const TreeModel::Path& path)
| Select the row at path .
void | select_all ()
| Selects all the nodes.
void | selected_foreach (const SlotForeachPathAndIter& slot) const
| Calls a callback slot for each selected node.
void | selected_foreach_iter (const SlotForeachIter& slot) const
| Calls a callback slot for each selected node.
void | selected_foreach_path (const SlotForeachPath& slot) const
| Calls a callback slot for each selected node.
void | set_mode (SelectionMode type)
| Sets the selection mode of the selection .
void | set_select_function (const SlotSelect& slot)
| Sets the selection callback slot.
Glib::SignalProxy0<void> | signal_changed ()
| Prototype: `void on_my_changed()`
void | unselect (const TreeModel::iterator& iter)
| Unselects the specified iterator.
void | unselect (const TreeModel::Path& start_path, const TreeModel::Path& end_path)
| Unselects a range of nodes, determined by start_path and end_path inclusive.
void | unselect (const TreeModel::Path& path)
| Unselects the row at path .
void | unselect_all ()
| Unselects all the nodes.
virtual | ~TreeSelection ()
## Protected Member Functions
virtual void | on_changed ()
## Related Functions
(Note that these are not member functions.)
Glib::RefPtr<Gtk::TreeSelection> | wrap (GtkTreeSelection* object, bool take_copy=false)
| A Glib::wrap() method for this object.

## Member Typedef Documentation

typedef Glib::ListHandle<TreeModel::Path, TreePath_Traits> Gtk::TreeSelection::ListHandle_Path

typedef sigc::slot<void, const TreeModel::iterator&> Gtk::TreeSelection::SlotForeachIter

For example, void on_foreach(const Gtk::TreeModel::iterator& iter);.

Note that you cannot modify the tree or selection from within the callback function. As a result, get_selected_rows() might be more useful.

typedef sigc::slot<void, const TreeModel::Path&> Gtk::TreeSelection::SlotForeachPath

For example, void on_foreach(const Gtk::TreeModel::Path& path);.

Note that you cannot modify the tree or selection from within the callback function. As a result, get_selected_rows() might be more useful.

typedef sigc::slot<void, const TreeModel::Path&, const TreeModel::iterator&> Gtk::TreeSelection::SlotForeachPathAndIter

For example, void on_foreach(const Gtk::TreeModel::Path& path, const Gtk::TreeModel::iterator& iter);.

Note that you cannot modify the tree or selection from within the callback function. As a result, get_selected_rows() might be more useful.

typedef sigc::slot<bool, const Glib::RefPtr<TreeModel>&, const TreeModel::Path&, bool> Gtk::TreeSelection::SlotSelect

For instance, bool on_select_function(const Glib::RefPtr<TreeModel>& model, const TreeModel::Path& path, bool path_currently_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.

## Constructor & Destructor Documentation

virtual Gtk::TreeSelection::~TreeSelection | ( |  | ) | `[virtual]`

## Member Function Documentation

int Gtk::TreeSelection::count_selected_rows | ( |  | ) | const

Return value: The number of rows selected.

Returns:
  The number of rows selected.

Since gtkmm 2.2:

SelectionMode Gtk::TreeSelection::get_mode | ( |  | ) | const

Gets the selection mode for selection .

See set_mode().

Returns:
  The current selection mode.

Glib::RefPtr<const TreeModel> Gtk::TreeSelection::get_model | ( |  | ) | const

Glib::RefPtr<TreeModel> Gtk::TreeSelection::get_model | ( |  | ) |

Shortcut for get_tree_view()->get_model().

Returns:
  The TreeModel associated with this TreeSelection.

TreeModel::iterator Gtk::TreeSelection::get_selected | ( | Glib::RefPtr<TreeModel>& | model | ) |

Get the currently selected row.

Returns:
  The currently selected row. Or end() if no rows were selected.

Return values:

  | model | The current TreeModel.

Note:
  This method won't work if the selection mode is `Gtk::SELECTION_MULTIPLE`. Use get_selected_rows() for multiple selections.

TreeModel::iterator Gtk::TreeSelection::get_selected | ( |  | ) |

Get the currently selected row.

Returns:
  The currently selected row.

Note:
  This method won't work if the selection mode is `Gtk::SELECTION_MULTIPLE`. Use get_selected_rows() for multiple selections.

ListHandle_Path Gtk::TreeSelection::get_selected_rows | ( | Glib::RefPtr<TreeModel>& | model | ) |

Creates a list of paths of all selected rows.

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 GtkTreeRowReferences.

Return values:

  | model | The current TreeModel.

Returns:
  a standard container containing a Gtk::Model::Path for each selected row.

ListHandle_Path Gtk::TreeSelection::get_selected_rows | ( |  | ) | const

Creates a list of paths of all selected rows.

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 GtkTreeRowReferences.

Returns:
  a standard container containing a Gtk::Model::Path for each selected row.

const TreeView* Gtk::TreeSelection::get_tree_view | ( |  | ) | const

Return value: A Gtk::TreeView.

Returns:
  A Gtk::TreeView.

TreeView* Gtk::TreeSelection::get_tree_view | ( |  | ) |

Return value: A Gtk::TreeView.

Returns:
  A Gtk::TreeView.

const GtkTreeSelection* Gtk::TreeSelection::gobj | ( |  | ) | const`[inline]`

Provides access to the underlying C GObject.

Reimplemented from Glib::ObjectBase.

GtkTreeSelection* Gtk::TreeSelection::gobj | ( |  | ) | `[inline]`

Provides access to the underlying C GObject.

Reimplemented from Glib::ObjectBase.

GtkTreeSelection* Gtk::TreeSelection::gobj_copy | ( |  | ) |

Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs.

bool Gtk::TreeSelection::is_selected | ( | const TreeModel::iterator& | iter | ) | const

Return value: `true`, if iter is selected.

Parameters:

  | iter | A valid Gtk::TreeIter.

Returns:
  `true`, if iter is selected.

bool Gtk::TreeSelection::is_selected | ( | const TreeModel::Path& | path | ) | const

Return value: `true` if path is selected.

Parameters:

  | path | A Gtk::TreePath to check selection on.

Returns:
  `true` if path is selected.

virtual void Gtk::TreeSelection::on_changed | ( |  | ) | `[protected, virtual]`

void Gtk::TreeSelection::select | ( | const TreeModel::Path& | start_path,
|  | const TreeModel::Path& | end_path |
| ) |  |  |

Selects a range of nodes, determined by start_path and end_path inclusive.

selection must be set to Gtk::SELECTION_MULTIPLE mode.

Parameters:

  | start_path | The initial node of the range.
  | end_path | The final node of the range.

void Gtk::TreeSelection::select | ( | const TreeModel::Row& | row | ) |

Selects the specified iterator.

Parameters:

  | iter | The Gtk::TreeIter to be selected.

void Gtk::TreeSelection::select | ( | const TreeModel::iterator& | iter | ) |

Selects the specified iterator.

Parameters:

  | iter | The Gtk::TreeIter to be selected.

void Gtk::TreeSelection::select | ( | const TreeModel::Path& | path | ) |

Select the row at path .

Parameters:

  | path | The Gtk::TreePath to be selected.

void Gtk::TreeSelection::select_all | ( |  | ) |

Selects all the nodes.

selection must be set to Gtk::SELECTION_MULTIPLE mode.

void Gtk::TreeSelection::selected_foreach | ( | const SlotForeachPathAndIter& | slot | ) | const

Calls a callback slot for each selected node.

Note that you cannot modify the tree or selection from within the callback function. As a result, get_selected_rows() might be more useful.

Parameters:

  | slot | The function to call for each selected node.

void Gtk::TreeSelection::selected_foreach_iter | ( | const SlotForeachIter& | slot | ) | const

Calls a callback slot for each selected node.

Note that you cannot modify the tree or selection from within the callback function. As a result, get_selected_rows() might be more useful.

Parameters:

  | slot | The function to call for each selected node.

void Gtk::TreeSelection::selected_foreach_path | ( | const SlotForeachPath& | slot | ) | const

Calls a callback slot for each selected node.

Note that you cannot modify the tree or selection from within the callback function. As a result, get_selected_rows() might be more useful.

Parameters:

  | slot | The function to call for each selected node.

void Gtk::TreeSelection::set_mode | ( | SelectionMode | type | ) |

Sets the selection mode of the selection .

If the previous type was Gtk::SELECTION_MULTIPLE, then the anchor is kept selected, if it was previously selected.

Parameters:

  | type | The selection mode.

void Gtk::TreeSelection::set_select_function | ( | const SlotSelect& | slot | ) |

Sets the selection callback slot.

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.

Parameters:

  | slot | The selection function.

Glib::SignalProxy0< void > Gtk::TreeSelection::signal_changed | ( |  | ) |

Prototype:
  `void on_my_changed()`

void Gtk::TreeSelection::unselect | ( | const TreeModel::iterator& | iter | ) |

Unselects the specified iterator.

Parameters:

  | iter | The Gtk::TreeIter to be unselected.

void Gtk::TreeSelection::unselect | ( | const TreeModel::Path& | start_path,
|  | const TreeModel::Path& | end_path |
| ) |  |  |

Unselects a range of nodes, determined by start_path and end_path inclusive.

Since gtkmm 2.2:

Parameters:

  | start_path | The initial node of the range.
  | end_path | The initial node of the range.

void Gtk::TreeSelection::unselect | ( | const TreeModel::Path& | path | ) |

Unselects the row at path .

Parameters:

  | path | The Gtk::TreePath to be unselected.

void Gtk::TreeSelection::unselect_all | ( |  | ) |

Unselects all the nodes.

## Friends And Related Function Documentation

Glib::RefPtr<Gtk::TreeSelection> wrap | ( | GtkTreeSelection * | object,
|  | bool | take_copy = `false` |
| ) |  |  | `[related]`

A Glib::wrap() method for this object.

Parameters:

  | object | The C instance.
  | take_copy | False if the result should take ownership of the C instance. True if it should take a new copy or ref.

Returns:
  A C++ instance that wraps this C instance.

The documentation for this class was generated from the following file:

- treeselection.h