Main Page Widgets Namespaces Book

# Gtk::TreeModelSort Class Reference
[TreeView Classes]

Inheritance diagram for Gtk::TreeModelSort:

[legend]

List of all members.

## Detailed Description

A wrapper which makes an underlying Gtk::TreeModel sortable.

The TreeModelSort is a model which implements the TreeSortable interface. It does not hold any data itself, but rather is created with a child model and proxies its data. It has identical column types to this child model, and the changes in the child are propagated. The primary purpose of this model is to provide a way to sort a different model without modifying it. Note that the sort function used by TreeModelSort is not guaranteed to be stable.

For instance, you might create two TreeView widgets each with a view of the same data. If the model is wrapped by a TreeModelSort then the two TreeViews can each sort their view of the data without affecting the other. By contrast, if we simply put the same model in each widget, then sorting the first would sort the second.

## Public Member Functions

void | clear_cache ()
| This function should almost never be called.
iterator | convert_child_iter_to_iter (const iterator& child_iter) const
| Gets an iterator that points to the sorted row that corresponds to the child row pointed at by child_iter.
Path | convert_child_path_to_path (const Path& child_path) const
| Converts child_path to a path relative to tree_model_sort.
iterator | convert_iter_to_child_iter (const iterator& sorted_iter) const
| Gets an iterator that points to the child row that corresponds to the sorted row pointed at by sorted_iter.
Path | convert_path_to_child_path (const Path& sorted_path) const
| Converts sorted_path to a path on the child model of tree_model_sort.
Glib::RefPtr<const TreeModel> | get_model () const
| Return value: the "child model" being sorted.
Glib::RefPtr<TreeModel> | get_model ()
| Return value: the "child model" being sorted.
const GtkTreeModelSort* | gobj () const
| Provides access to the underlying C GObject.
GtkTreeModelSort* | gobj ()
| Provides access to the underlying C GObject.
GtkTreeModelSort* | gobj_copy ()
| Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs.
bool | iter_is_valid (const iterator& iter) const
| <warning> This function is slow.
void | reset_default_sort_func ()
| This resets the default sort function to be in the 'unsorted' state.
virtual | ~TreeModelSort ()

## Static Public Member Functions

static Glib::RefPtr <TreeModelSort> | create (const Glib::RefPtr<TreeModel>& model)

## Protected Member Functions

virtual void | set_value_impl (const iterator& row, int column, const Glib::ValueBase& value)
| Override and implement this in a derived TreeModel class, so that Row::operator() and Row::set_value() work.
| TreeModelSort (const Glib::RefPtr<TreeModel>& model)

## Related Functions

(Note that these are not member functions.)
Glib::RefPtr<Gtk::TreeModelSort> | wrap (GtkTreeModelSort* object, bool take_copy=false)
| A Glib::wrap() method for this object.

## Constructor & Destructor Documentation

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

Gtk::TreeModelSort::TreeModelSort | ( | const Glib::RefPtr<TreeModel>& | model | ) | `[explicit, protected]`

## Member Function Documentation

void Gtk::TreeModelSort::clear_cache | ( |  | ) |

This function should almost never be called.

It clears the tree_model_sort of any cached iterators that haven't been reffed with ref_node(). This might be useful if the child model being sorted is static (and doesn't change often) and there has been a lot of unreffed access to nodes. As a side effect of this function, all unreffed iters will be invalid.

iterator Gtk::TreeModelSort::convert_child_iter_to_iter | ( | const iterator& | child_iter | ) | const

Gets an iterator that points to the sorted row that corresponds to the child row pointed at by child_iter.

Parameters:

  | child_iter | A valid iterator pointing to a row on the child model.

Returns:
  A valid iterator that points to the row in this sorted model.

Path Gtk::TreeModelSort::convert_child_path_to_path | ( | const Path& | child_path | ) | const

Converts child_path to a path relative to tree_model_sort.

That is, child_path points to a path in the child model. The returned path will point to the same row in the sorted model. If child_path isn't a valid path on the child model, then `0` is returned.

Parameters:

  | child_path | A Gtk::TreePath to convert.

Returns:
  A newly allocated Gtk::TreePath, or `0`.

iterator Gtk::TreeModelSort::convert_iter_to_child_iter | ( | const iterator& | sorted_iter | ) | const

Gets an iterator that points to the child row that corresponds to the sorted row pointed at by sorted_iter.

Parameters:

  | sorted_iter | A valid iterator pointing to a row on the sorted model.

Returns:
  A valid iterator that points to the row in the child model.

Path Gtk::TreeModelSort::convert_path_to_child_path | ( | const Path& | sorted_path | ) | const

Converts sorted_path to a path on the child model of tree_model_sort.

That is, sorted_path points to a location in tree_model_sort. The returned path will point to the same location in the model not being sorted. If sorted_path does not point to a location in the child model, `0` is returned.

Parameters:

  | sorted_path | A Gtk::TreePath to convert.

Returns:
  A newly allocated Gtk::TreePath, or `0`.

static Glib::RefPtr<TreeModelSort> Gtk::TreeModelSort::create | ( | const Glib::RefPtr<TreeModel>& | model | ) | `[static]`

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

Return value: the "child model" being sorted.

Returns:
  The "child model" being sorted.

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

Return value: the "child model" being sorted.

Returns:
  The "child model" being sorted.

const GtkTreeModelSort* Gtk::TreeModelSort::gobj | ( |  | ) | const`[inline]`

Provides access to the underlying C GObject.

Reimplemented from Gtk::TreeModel.

GtkTreeModelSort* Gtk::TreeModelSort::gobj | ( |  | ) | `[inline]`

Provides access to the underlying C GObject.

Reimplemented from Gtk::TreeModel.

GtkTreeModelSort* Gtk::TreeModelSort::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::TreeModelSort::iter_is_valid | ( | const iterator& | iter | ) | const`[virtual]`

<warning> This function is slow.

Only use it for debugging and/or testing purposes. </warning>

Checks if the given iter is a valid iter for this Gtk::TreeModelSort.

Parameters:

  | iter | A Gtk::TreeIter.

Returns:
  `true` if the iter is valid, `false` if the iter is invalid.

Since gtkmm 2.2:

Reimplemented from Gtk::TreeModel.

void Gtk::TreeModelSort::reset_default_sort_func | ( |  | ) |

This resets the default sort function to be in the 'unsorted' state.

That is, it is in the same order as the child model. It will re-sort the model to be in the same order as the child model only if the Gtk::TreeModelSort is in 'unsorted' state.

virtual void Gtk::TreeModelSort::set_value_impl | ( | const iterator& | row,
|  | int | column,
|  | const Glib::ValueBase & | value |
| ) |  |  | `[protected, virtual]`

Override and implement this in a derived TreeModel class, so that Row::operator() and Row::set_value() work.

You can probably just implement this by calling set_value_vfunc(). Your implementation of set_value_impl() should also call set_row_changed() after changing the value.

Reimplemented from Gtk::TreeModel.

## Friends And Related Function Documentation

Glib::RefPtr<Gtk::TreeModelSort> wrap | ( | GtkTreeModelSort * | 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:

- treemodelsort.h