Ardour  9.0-pre0-582-g084a23a80d
Gtk::TreeModelSort Class Reference

#include <treemodelsort.h>

Inheritance diagram for Gtk::TreeModelSort:
[legend]

Public Member Functions

virtual ~TreeModelSort ()
 
GtkTreeModelSortgobj ()
 Provides access to the underlying C GObject. More...
 
const GtkTreeModelSortgobj () const
 Provides access to the underlying C GObject. More...
 
GtkTreeModelSortgobj_copy ()
 Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs. More...
 
Glib::RefPtr< TreeModelget_model ()
 
Glib::RefPtr< const TreeModelget_model () const
 
Path convert_child_path_to_path (const Path &child_path) const
 
iterator convert_child_iter_to_iter (const iterator &child_iter) const
 
Path convert_path_to_child_path (const Path &sorted_path) const
 
iterator convert_iter_to_child_iter (const iterator &sorted_iter) const
 
void reset_default_sort_func ()
 
void clear_cache ()
 
bool iter_is_valid (const iterator &iter) const
 
Glib::PropertyProxy_ReadOnly< Glib::RefPtr< TreeModel > > property_model () const
 
- Public Member Functions inherited from Gtk::TreeModel
virtual ~TreeModel ()
 
GtkTreeModelgobj ()
 Provides access to the underlying C GObject. More...
 
const GtkTreeModelgobj () const
 Provides access to the underlying C GObject. More...
 
iterator get_iter (const Path &path)
 
iterator get_iter (const Glib::ustring &path_string)
 
Children children ()
 This returns an STL-like container API, for iterating over the rows. More...
 
Children children () const
 This returns an STL-like container API, for iterating over the rows. More...
 
void foreach_iter (const SlotForeachIter &slot)
 
void foreach_path (const SlotForeachPath &slot)
 
void foreach (const SlotForeachPathAndIter &slot)
 
TreeModelFlags get_flags () const
 
int get_n_columns () const
 
GType get_column_type (int index) const
 
TreeModel::Path get_path (const iterator &iter) const
 
void row_changed (const Path &path, const iterator &iter)
 
void row_inserted (const Path &path, const iterator &iter)
 
void row_has_child_toggled (const Path &path, const iterator &iter)
 
void row_deleted (const Path &path)
 
void rows_reordered (const Path &path, const iterator &iter, const Glib::ArrayHandle< int > &new_order)
 
void rows_reordered (const Path &path, const Glib::ArrayHandle< int > &new_order)
 
void rows_reordered (const Path &path, const iterator &iter, int *new_order)
 
Glib::ustring get_string (const iterator &iter) const
 
Glib::SignalProxy2< void, const TreeModel::Path &, const TreeModel::iterator & > signal_row_changed ()
 
Glib::SignalProxy2< void, const TreeModel::Path &, const TreeModel::iterator & > signal_row_inserted ()
 
Glib::SignalProxy2< void, const TreeModel::Path &, const TreeModel::iterator & > signal_row_has_child_toggled ()
 
Glib::SignalProxy1< void, const TreeModel::Path & > signal_row_deleted ()
 
Glib::SignalProxy3< void, const TreeModel::Path &, const TreeModel::iterator &, int * > signal_rows_reordered ()
 
- Public Member Functions inherited from Gtk::TreeSortable
virtual ~TreeSortable ()
 
GtkTreeSortablegobj ()
 Provides access to the underlying C GObject. More...
 
const GtkTreeSortablegobj () const
 Provides access to the underlying C GObject. More...
 
bool get_sort_column_id (int &sort_column_id, SortType &order) const
 
void set_sort_column (const TreeModelColumnBase &sort_column_id, SortType order)
 
void set_sort_column (int sort_column_id, SortType order)
 
void set_sort_column_id (const TreeModelColumnBase &sort_column_id, SortType order)
 
void set_sort_column_id (int sort_column_id, SortType order)
 
void set_sort_func (const TreeModelColumnBase &sort_column, const SlotCompare &slot)
 
void set_sort_func (int sort_column_id, const SlotCompare &slot)
 
void set_default_sort_func (const SlotCompare &slot)
 
void unset_default_sort_func ()
 
bool has_default_sort_func () const
 
void sort_column_changed ()
 
Glib::SignalProxy0< void > signal_sort_column_changed ()
 

Static Public Member Functions

static GType get_type () G_GNUC_CONST
 
static Glib::RefPtr< TreeModelSortcreate (const Glib::RefPtr< TreeModel > &model)
 
- Static Public Member Functions inherited from Gtk::TreeModel
static void add_interface (GType gtype_implementer)
 
static GType get_type () G_GNUC_CONST
 
- Static Public Member Functions inherited from Gtk::TreeSortable
static void add_interface (GType gtype_implementer)
 
static GType get_type () G_GNUC_CONST
 

Protected Member Functions

 TreeModelSort (const Glib::RefPtr< TreeModel > &model)
 
virtual void set_value_impl (const iterator &row, int column, const Glib::ValueBase &value)
 
- Protected Member Functions inherited from Gtk::TreeModel
 TreeModel ()
 
virtual TreeModelFlags get_flags_vfunc () const
 
virtual int get_n_columns_vfunc () const
 
virtual GType get_column_type_vfunc (int index) const
 
virtual bool iter_next_vfunc (const iterator &iter, iterator &iter_next) const
 
virtual bool get_iter_vfunc (const Path &path, iterator &iter) const
 
virtual bool iter_children_vfunc (const iterator &parent, iterator &iter) const
 
virtual bool iter_parent_vfunc (const iterator &child, iterator &iter) const
 
virtual bool iter_nth_child_vfunc (const iterator &parent, int n, iterator &iter) const
 
virtual bool iter_nth_root_child_vfunc (int n, iterator &iter) const
 
virtual bool iter_has_child_vfunc (const iterator &iter) const
 
virtual int iter_n_children_vfunc (const iterator &iter) const
 
virtual int iter_n_root_children_vfunc () const
 
virtual void ref_node_vfunc (const iterator &iter) const
 
virtual void unref_node_vfunc (const iterator &iter) const
 
virtual TreeModel::Path get_path_vfunc (const iterator &iter) const
 
virtual void get_value_vfunc (const iterator &iter, int column, Glib::ValueBase &value) const
 
virtual void get_value_impl (const iterator &row, int column, Glib::ValueBase &value) const
 
virtual void on_row_changed (const TreeModel::Path &path, const TreeModel::iterator &iter)
 This is a default handler for the signal signal_row_changed(). More...
 
virtual void on_row_inserted (const TreeModel::Path &path, const TreeModel::iterator &iter)
 This is a default handler for the signal signal_row_inserted(). More...
 
virtual void on_row_has_child_toggled (const TreeModel::Path &path, const TreeModel::iterator &iter)
 This is a default handler for the signal signal_row_has_child_toggled(). More...
 
virtual void on_row_deleted (const TreeModel::Path &path)
 This is a default handler for the signal signal_row_deleted(). More...
 
virtual void on_rows_reordered (const TreeModel::Path &path, const TreeModel::iterator &iter, int *new_order)
 This is a default handler for the signal signal_rows_reordered(). More...
 
- Protected Member Functions inherited from Gtk::TreeSortable
 TreeSortable ()
 
virtual bool get_sort_column_id_vfunc (int *sort_column_id, SortType *order) const
 
virtual void set_sort_column_id_vfunc (int sort_column_id, SortType order)
 
virtual void set_sort_func_vfunc (int sort_column_id, GtkTreeIterCompareFunc func, void *data, GDestroyNotify destroy)
 
virtual void set_default_sort_func_vfunc (GtkTreeIterCompareFunc func, void *data, GDestroyNotify destroy)
 
virtual bool has_default_sort_func_vfunc () const
 
virtual void sort_column_changed_vfunc () const
 
virtual void on_sort_column_changed ()
 This is a default handler for the signal signal_sort_column_changed(). More...
 

Related Functions

(Note that these are not member functions.)

Glib::RefPtr< Gtk::TreeModelSortwrap (GtkTreeModelSort *object, bool take_copy=false)
 

Additional Inherited Members

- Public Types inherited from Gtk::TreeModel
typedef TreeModelColumnRecord ColumnRecord
 
typedef TreeNodeChildren Children
 
typedef Children::iterator iterator
 
typedef Children::reverse_iterator reverse_iterator
 
typedef Children::const_iterator const_iterator
 
typedef Children::const_reverse_iterator const_reverse_iterator
 
typedef TreeRow Row
 
typedef TreePath Path
 
typedef TreeRowReference RowReference
 
typedef sigc::slot< bool, const TreeModel::iterator & > SlotForeachIter
 
typedef sigc::slot< bool, const TreeModel::Path & > SlotForeachPath
 
typedef sigc::slot< bool, const TreeModel::Path &, const TreeModel::iterator & > SlotForeachPathAndIter
 
- Public Types inherited from Gtk::TreeSortable
enum  { DEFAULT_SORT_COLUMN_ID = -1 , DEFAULT_UNSORTED_COLUMN_ID = -2 }
 
typedef sigc::slot< int, const Gtk::TreeModel::iterator &, const Gtk::TreeModel::iterator & > SlotCompare
 

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.

Definition at line 72 of file treemodelsort.h.

Constructor & Destructor Documentation

◆ ~TreeModelSort()

virtual Gtk::TreeModelSort::~TreeModelSort ( )
virtual

◆ TreeModelSort()

Gtk::TreeModelSort::TreeModelSort ( const Glib::RefPtr< TreeModel > &  model)
explicitprotected

Member Function Documentation

◆ clear_cache()

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.

◆ convert_child_iter_to_iter()

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_iterA valid iterator pointing to a row on the child model.
Returns
A valid iterator that points to the row in this sorted model.

◆ convert_child_path_to_path()

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_pathA Gtk::TreePath to convert.
Returns
A newly allocated Gtk::TreePath, or 0.

◆ convert_iter_to_child_iter()

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_iterA valid iterator pointing to a row on the sorted model.
Returns
A valid iterator that points to the row in the child model.

◆ convert_path_to_child_path()

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_pathA Gtk::TreePath to convert.
Returns
A newly allocated Gtk::TreePath, or 0.

◆ create()

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

◆ get_model() [1/2]

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

Returns the model the Gtk::TreeModelSort is sorting.

Returns
The "child model" being sorted.

◆ get_model() [2/2]

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

Returns the model the Gtk::TreeModelSort is sorting.

Returns
The "child model" being sorted.

◆ get_type()

static GType Gtk::TreeModelSort::get_type ( )
static

Get the GType for this class, for use with the underlying GObject type system.

◆ gobj() [1/2]

GtkTreeModelSort* Gtk::TreeModelSort::gobj ( )
inline

Provides access to the underlying C GObject.

Definition at line 111 of file treemodelsort.h.

◆ gobj() [2/2]

const GtkTreeModelSort* Gtk::TreeModelSort::gobj ( ) const
inline

Provides access to the underlying C GObject.

Definition at line 114 of file treemodelsort.h.

◆ gobj_copy()

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.

◆ iter_is_valid()

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.

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

Parameters
iterA Gtk::TreeIter.
Returns
true if the iter is valid, false if the iter is invalid.

Reimplemented from Gtk::TreeModel.

◆ property_model()

Glib::PropertyProxy_ReadOnly< Glib::RefPtr<TreeModel> > Gtk::TreeModelSort::property_model ( ) const

The model for the TreeModelSort to sort.

Returns
A PropertyProxy_ReadOnly that allows you to get the value of the property, or receive notification when the value of the property changes.

◆ reset_default_sort_func()

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.

◆ set_value_impl()

virtual void Gtk::TreeModelSort::set_value_impl ( const iterator row,
int  column,
const Glib::ValueBase &  value 
)
protectedvirtual

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 row_changed() after changing the value.

Reimplemented from Gtk::TreeModel.

Friends And Related Function Documentation

◆ wrap()

Glib::RefPtr< Gtk::TreeModelSort > wrap ( GtkTreeModelSort object,
bool  take_copy = false 
)
related

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

Parameters
objectThe C instance.
take_copyFalse 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: