gtkmm: Gtk::TreeModelFilter Class Reference

#include <gtkmm/treemodelfilter.h>

Inheritance diagram for Gtk::TreeModelFilter:

Public Types

typedef sigc::slot< bool(const TreeModel::const_iterator&)> SlotVisible
 For instance, bool on_visible(const TreeModel::const_iterator& iter); This should return true if the given row should be visible and false otherwise. More...

 
typedef sigc::slot< void(const Gtk::TreeModel::iterator&, Glib::ValueBase&, int)> SlotModify
 For instance, void on_modify(const Gtk::TreeModel::iterator& iter, Glib::ValueBase& value, int column);. More...

 
- Public Types inherited from Glib::Object
typedef void(*)(gpointer data DestroyNotify)
 
- Public Types inherited from sigc::trackable
typedef internal::func_destroy_notify func_destroy_notify
 
- Public Types inherited from Gtk::TreeModel
typedef TreeModelColumnRecord ColumnRecord
 
typedef TreeNodeChildren Children
 
typedef TreeNodeConstChildren ConstChildren
 
typedef Children::iterator iterator
 
typedef ConstChildren::const_iterator const_iterator
 
typedef TreeConstRow ConstRow
 
typedef TreeRow Row
 
typedef TreePath Path
 
typedef TreeRowReference RowReference
 
typedef sigc::slot< bool(const TreeModel::iterator&)> SlotForeachIter
 For example, void on_foreach(const Gtk::TreeModel::iterator& iter);. More...

 
typedef sigc::slot< bool(const TreeModel::Path&)> SlotForeachPath
 For example, void on_foreach(const Gtk::TreeModel::Path& path);. More...

 
typedef sigc::slot< bool(const TreeModel::Path&, const TreeModel::iterator&)> SlotForeachPathAndIter
 For example, void on_foreach(const Gtk::TreeModel::Path& path, const Gtk::TreeModel::iterator& iter);. More...

 

Public Member Functions

 TreeModelFilter (TreeModelFilter&& src) noexcept
 
TreeModelFilteroperator= (TreeModelFilter&& src) noexcept
 
 ~TreeModelFilter () noexceptoverride
 
GtkTreeModelFilter* gobj ()
 Provides access to the underlying C GObject. More...

 
const GtkTreeModelFilter* gobj () const
 Provides access to the underlying C GObject. More...

 
GtkTreeModelFilter* gobj_copy ()
 Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs. More...

 
void set_visible_func (const SlotVisible& slot)
 Sets the "visible" callback used when filtering the filter. More...

 
void set_modify_func (const TreeModelColumnRecord& columns, const SlotModify& slot)
 Specify columns that will be provided by this model, and a callback that will provide data for these columns based on data in the columns of the child model. More...

 
void set_visible_column (const TreeModelColumnBase& column)
 Sets column of the child_model to be the column where filter should look for visibility information. More...

 
void set_visible_column (int column)
 Sets column of the child_model to be the column where filter should look for visibility information. More...

 
Glib::RefPtr< TreeModelget_model ()
 Returns a pointer to the child model of filter. More...

 
Glib::RefPtr< const TreeModelget_model () const
 Returns a pointer to the child model of filter. More...

 
iterator convert_child_iter_to_iter (const iterator& child_iter)
 Gets an iterator that points to the filtered row that corresponds to the child row pointed at by child_iter. More...

 
const_iterator convert_child_iter_to_iter (const const_iterator& child_iter) const
 Gets an iterator that points to the filtered row that corresponds to the child row pointed at by child_iter. More...

 
iterator convert_iter_to_child_iter (const iterator& filter_iter)
 Gets an iterator that points to the child row that corresponds to the filtered row pointed at by sorted_iter. More...

 
const_iterator convert_iter_to_child_iter (const const_iterator& filter_iter) const
 Gets an iterator that points to the child row that corresponds to the filtered row pointed at by sorted_iter. More...

 
Path convert_child_path_to_path (const Path& child_path) const
 Converts child_path to a path relative to filter. More...

 
Path convert_path_to_child_path (const Path& filter_path) const
 Converts filter_path to a path on the child model of filter. More...

 
void refilter ()
 Emits ::row_changed for each row in the child model, which causes the filter to re-evaluate whether a row is visible or not. More...

 
void clear_cache ()
 This function should almost never be called. More...

 
Glib::PropertyProxy_ReadOnly< Glib::RefPtr< TreeModel > > property_child_model () const
 The model for the filtermodel to filter. More...

 
Glib::PropertyProxy_ReadOnly< TreeModel::Pathproperty_virtual_root () const
 The virtual root (relative to the child model) for this filtermodel. More...

 
- Public Member Functions inherited from Glib::Object
 Object (const Object &)=delete
 
Objectoperator= (const Object &)=delete
 
 Object (Object &&src) noexcept
 
Objectoperator= (Object &&src) noexcept
 
void * get_data (const QueryQuark &key)
 
void set_data (const Quark &key, void *data)
 
void set_data (const Quark &key, void *data, DestroyNotify notify)
 
void remove_data (const QueryQuark &quark)
 
void * steal_data (const QueryQuark &quark)
 
Glib::RefPtr< Glib::Objectwrap (GObject *object, bool take_copy=false)
 
- Public Member Functions inherited from Glib::ObjectBase
 ObjectBase (const ObjectBase &)=delete
 
ObjectBaseoperator= (const ObjectBase &)=delete
 
void set_property_value (const Glib::ustring &property_name, const Glib::ValueBase &value)
 
void get_property_value (const Glib::ustring &property_name, Glib::ValueBase &value) const
 
void set_property (const Glib::ustring &property_name, const PropertyType &value)
 
void get_property (const Glib::ustring &property_name, PropertyType &value) const
 
PropertyType get_property (const Glib::ustring &property_name) const
 
sigc::connection connect_property_changed (const Glib::ustring &property_name, const sigc::slot< void()> &slot)
 
sigc::connection connect_property_changed (const Glib::ustring &property_name, sigc::slot< void()> &&slot)
 
void freeze_notify ()
 
void thaw_notify ()
 
virtual void reference () const
 
virtual void unreference () const
 
GObject * gobj ()
 
const GObject * gobj () const
 
GObject * gobj_copy () const
 
- Public Member Functions inherited from sigc::trackable
 trackable () noexcept
 
 trackable (const trackable &src) noexcept
 
 trackable (trackable &&src)
 
 ~trackable ()
 
void add_destroy_notify_callback (void *data, func_destroy_notify func) const
 
void notify_callbacks ()
 
trackableoperator= (const trackable &src)
 
trackableoperator= (trackable &&src)
 
void remove_destroy_notify_callback (void *data) const
 
- Public Member Functions inherited from Gtk::TreeModel
 TreeModel (TreeModel&& src) noexcept
 
TreeModeloperator= (TreeModel&& src) noexcept
 
 ~TreeModel () noexceptoverride
 
GtkTreeModel* gobj ()
 Provides access to the underlying C GObject. More...

 
const GtkTreeModel* gobj () const
 Provides access to the underlying C GObject. More...

 
iterator get_iter (const Path& path)
 Returns a valid iterator pointing to path. More...

 
const_iterator get_iter (const Path& path) const
 Returns a valid iterator pointing to path. More...

 
iterator get_iter (const Glib::ustring& path_string)
 Returns a valid iterator pointing to path_string. More...

 
const_iterator get_iter (const Glib::ustring& path_string) const
 Returns a valid iterator pointing to path_string. More...

 
Children children ()
 This returns an STL-like container API, for iterating over the rows. More...

 
const ConstChildren children () const
 This returns an STL-like container API, for iterating over the rows. More...

 
void foreach_iter (const SlotForeachIter& slot)
 Calls a callback slot on each node in the model in a depth-first fashion. More...

 
void foreach_path (const SlotForeachPath& slot)
 Calls a callback slot on each node in the model in a depth-first fashion. More...

 
void foreach (const SlotForeachPathAndIter& slot)
 Calls a callback slot on each node in the model in a depth-first fashion. More...

 
TreeModelFlags get_flags () const
 Returns a set of flags supported by this interface. More...

 
int get_n_columns () const
 Returns the number of columns supported by tree_model. More...

 
GType get_column_type (int index) const
 Returns the type of the column. More...

 
TreeModel::Path get_path (const const_iterator& iter) const
 Returns a Gtk::TreePath referenced by iter. More...

 
void row_changed (const Path& path, const const_iterator& iter)
 Emits the Gtk::TreeModel::signal_row_changed() signal on tree_model. More...

 
void row_inserted (const Path& path, const const_iterator& iter)
 Emits the Gtk::TreeModel::signal_row_inserted() signal on tree_model. More...

 
void row_has_child_toggled (const Path& path, const const_iterator& iter)
 Emits the Gtk::TreeModel::signal_row_has_child_toggled() signal on tree_model. More...

 
void row_deleted (const Path& path)
 Emits the Gtk::TreeModel::signal_row_deleted() signal on tree_model. More...

 
void rows_reordered (const Path& path, const const_iterator& iter, const std::vector< int >& new_order)
 Emits the "rows_reordered" signal on the tree model. More...

 
void rows_reordered (const Path& path, const std::vector< int >& new_order)
 Emits the "rows_reordered" signal on the tree model. More...

 
void rows_reordered (const Path& path, const const_iterator& iter, int* new_order)
 Emits the Gtk::TreeModel::signal_rows_reordered() signal on tree_model. More...

 
Glib::ustring get_string (const const_iterator& iter) const
 Generates a string representation of the iter. More...

 
Glib::SignalProxy< void(const TreeModel::Path&, const TreeModel::iterator&)> signal_row_changed ()
 
Glib::SignalProxy< void(const TreeModel::Path&, const TreeModel::iterator&)> signal_row_inserted ()
 
Glib::SignalProxy< void(const TreeModel::Path&, const TreeModel::iterator&)> signal_row_has_child_toggled ()
 
Glib::SignalProxy< void(const TreeModel::Path&)> signal_row_deleted ()
 
Glib::SignalProxy< void(const TreeModel::Path&, const TreeModel::iterator&, int*)> signal_rows_reordered ()
 
- Public Member Functions inherited from Glib::Interface
 Interface ()
 
 Interface (Interface &&src) noexcept
 
Interfaceoperator= (Interface &&src) noexcept
 
 Interface (const Glib::Interface_Class &interface_class)
 
 Interface (GObject *castitem)
 
 ~Interface () noexceptoverride
 
 Interface (const Interface &)=delete
 
Interfaceoperator= (const Interface &)=delete
 
GObject * gobj ()
 
const GObject * gobj () const
 

Static Public Member Functions

static GType get_type ()
 Get the GType for this class, for use with the underlying GObject type system. More...

 
static Glib::RefPtr< TreeModelFiltercreate (const Glib::RefPtr< TreeModel >& child_model)
 This creates a TreeModelFilter with child_model as the child model. More...

 
static Glib::RefPtr< TreeModelFiltercreate (const Glib::RefPtr< TreeModel >& child_model, const TreeModel::Path& virtual_root)
 This creates a TreeModelFilter with child_model as the child model, and root as the virtual root. More...

 
- Static Public Member Functions inherited from Gtk::TreeModel
static void add_interface (GType gtype_implementer)
 
static GType get_type ()
 Get the GType for this class, for use with the underlying GObject type system. More...

 

Protected Member Functions

 TreeModelFilter (const Glib::RefPtr< TreeModel >& child_model)
 
 TreeModelFilter (const Glib::RefPtr< TreeModel >& child_model, const TreeModel::Path& virtual_root)
 
void set_value_impl (const iterator& row, int column, const Glib::ValueBase& value) override
 Override and implement this in a derived TreeModel class, so that Row::operator() and Row::set_value() work. More...

 
- Protected Member Functions inherited from Glib::Object
 Object ()
 
 Object (const Glib::ConstructParams &construct_params)
 
 Object (GObject *castitem)
 
 ~Object () noexceptoverride
 
- Protected Member Functions inherited from Glib::ObjectBase
 ObjectBase ()
 
 ObjectBase (const char *custom_type_name)
 
 ObjectBase (const std::type_info &custom_type_info)
 
 ObjectBase (ObjectBase &&src) noexcept
 
ObjectBaseoperator= (ObjectBase &&src) noexcept
 
virtual ~ObjectBase () noexcept=0
 
void initialize (GObject *castitem)
 
void initialize_move (GObject *castitem, Glib::ObjectBase *previous_wrapper)
 
- Protected Member Functions inherited from Gtk::TreeModel
 TreeModel ()
 You should derive from this class to use it. More...

 
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
 Override and implement this in a derived TreeModel class. More...

 
virtual bool get_iter_vfunc (const Path& path, iterator& iter) const
 Override and implement this in a derived TreeModel class. More...

 
virtual bool iter_children_vfunc (const iterator& parent, iterator& iter) const
 Override and implement this in a derived TreeModel class. More...

 
virtual bool iter_parent_vfunc (const iterator& child, iterator& iter) const
 Override and implement this in a derived TreeModel class. More...

 
virtual bool iter_nth_child_vfunc (const iterator& parent, int n, iterator& iter) const
 Override and implement this in a derived TreeModel class. More...

 
virtual bool iter_nth_root_child_vfunc (int n, iterator& iter) const
 Override and implement this in a derived TreeModel class. More...

 
virtual bool iter_has_child_vfunc (const const_iterator& iter) const
 Override and implement this in a derived TreeModel class. More...

 
virtual int iter_n_children_vfunc (const const_iterator& iter) const
 Override and implement this in a derived TreeModel class. More...

 
virtual int iter_n_root_children_vfunc () const
 Override and implement this in a derived TreeModel class. More...

 
virtual void ref_node_vfunc (const iterator& iter) const
 Override and implement this in a derived TreeModel class. More...

 
virtual void unref_node_vfunc (const iterator& iter) const
 Override and implement this in a derived TreeModel class. More...

 
virtual TreeModel::Path get_path_vfunc (const const_iterator& iter) const
 Override and implement this in a derived TreeModel class. More...

 
virtual void get_value_vfunc (const const_iterator& iter, int column, Glib::ValueBase& value) const
 Override and implement this in a derived TreeModel class. More...

 
virtual void get_value_impl (const const_iterator& iter, 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...

 

Related Functions

(Note that these are not member functions.)

Glib::RefPtr< Gtk::TreeModelFilterwrap (GtkTreeModelFilter* object, bool take_copy=false)
 A Glib::wrap() method for this object. More...

 

Member Typedef Documentation

For instance, void on_modify(const Gtk::TreeModel::iterator& iter, Glib::ValueBase& value, int column);.

where iter is an iterator to a row in the child model, value is an output parameter in which you must store the value to be used in the parent model's row, column is the column in the parent row whose row value you must provide in the value output paramater.

For instance, bool on_visible(const TreeModel::const_iterator& iter); This should return true if the given row should be visible and false otherwise.

Constructor & Destructor Documentation

Gtk::TreeModelFilter::TreeModelFilter ( TreeModelFilter&&  src)
noexcept
Gtk::TreeModelFilter::~TreeModelFilter ( )
overridenoexcept
Gtk::TreeModelFilter::TreeModelFilter ( const Glib::RefPtr< TreeModel >&  child_model)
explicitprotected
Gtk::TreeModelFilter::TreeModelFilter ( const Glib::RefPtr< TreeModel >&  child_model,
const TreeModel::Path virtual_root 
)
explicitprotected

Member Function Documentation

void Gtk::TreeModelFilter::clear_cache ( )

This function should almost never be called.

It clears the filter of any cached iterators that haven’t been reffed with ref_node(). This might be useful if the child model being filtered 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.

Since gtkmm 2.4:
iterator Gtk::TreeModelFilter::convert_child_iter_to_iter ( const iterator child_iter)

Gets an iterator that points to the filtered 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 filtered model.
const_iterator Gtk::TreeModelFilter::convert_child_iter_to_iter ( const const_iterator child_iter) const

Gets an iterator that points to the filtered 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 filtered model.
Path Gtk::TreeModelFilter::convert_child_path_to_path ( const Path child_path) const

Converts child_path to a path relative to filter.

That is, child_path points to a path in the child model. The rerturned path will point to the same row in the filtered model. If child_path isn’t a valid path on the child model or points to a row which is not visible in filter, then nullptr is returned.

Since gtkmm 2.4:
Parameters
child_pathA Gtk::TreePath to convert.
Returns
A newly allocated Gtk::TreePath, or nullptr.
iterator Gtk::TreeModelFilter::convert_iter_to_child_iter ( const iterator filter_iter)

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

Parameters
filter_iterA valid iterator pointing to a row on the filtered model.
Returns
A valid iterator that points to the row in the child model.
const_iterator Gtk::TreeModelFilter::convert_iter_to_child_iter ( const const_iterator filter_iter) const

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

Parameters
filter_iterA valid iterator pointing to a row on the filtered model.
Returns
A valid iterator that points to the row in the child model.
Path Gtk::TreeModelFilter::convert_path_to_child_path ( const Path filter_path) const

Converts filter_path to a path on the child model of filter.

That is, filter_path points to a location in filter. The returned path will point to the same location in the model not being filtered. If filter_path does not point to a location in the child model, nullptr is returned.

Since gtkmm 2.4:
Parameters
filter_pathA Gtk::TreePath to convert.
Returns
A newly allocated Gtk::TreePath, or nullptr.
static Glib::RefPtr<TreeModelFilter> Gtk::TreeModelFilter::create ( const Glib::RefPtr< TreeModel >&  child_model)
static

This creates a TreeModelFilter with child_model as the child model.

You can use set_visible_func(), set_visible_column() and/or set_modify_func() to change the mapping of child model to parent model.

static Glib::RefPtr<TreeModelFilter> Gtk::TreeModelFilter::create ( const Glib::RefPtr< TreeModel >&  child_model,
const TreeModel::Path virtual_root 
)
static

This creates a TreeModelFilter with child_model as the child model, and root as the virtual root.

You can use set_visible_func(), set_visible_column() and/or set_modify_func() to change the mapping of child model to parent model.

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

Returns a pointer to the child model of filter.

Since gtkmm 2.4:
Returns
A pointer to a Gtk::TreeModel.
Glib::RefPtr<const TreeModel> Gtk::TreeModelFilter::get_model ( ) const

Returns a pointer to the child model of filter.

Since gtkmm 2.4:
Returns
A pointer to a Gtk::TreeModel.
static GType Gtk::TreeModelFilter::get_type ( )
static

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

GtkTreeModelFilter* Gtk::TreeModelFilter::gobj ( )
inline

Provides access to the underlying C GObject.

const GtkTreeModelFilter* Gtk::TreeModelFilter::gobj ( ) const
inline

Provides access to the underlying C GObject.

GtkTreeModelFilter* Gtk::TreeModelFilter::gobj_copy ( )

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

TreeModelFilter& Gtk::TreeModelFilter::operator= ( TreeModelFilter&&  src)
noexcept
Glib::PropertyProxy_ReadOnly< Glib::RefPtr<TreeModel> > Gtk::TreeModelFilter::property_child_model ( ) const

The model for the filtermodel to filter.

Returns
A PropertyProxy_ReadOnly that allows you to get the value of the property, or receive notification when the value of the property changes.
Glib::PropertyProxy_ReadOnly< TreeModel::Path > Gtk::TreeModelFilter::property_virtual_root ( ) const

The virtual root (relative to the child model) for this filtermodel.

Returns
A PropertyProxy_ReadOnly that allows you to get the value of the property, or receive notification when the value of the property changes.
void Gtk::TreeModelFilter::refilter ( )

Emits ::row_changed for each row in the child model, which causes the filter to re-evaluate whether a row is visible or not.

Since gtkmm 2.4:
void Gtk::TreeModelFilter::set_modify_func ( const TreeModelColumnRecord columns,
const SlotModify slot 
)

Specify columns that will be provided by this model, and a callback that will provide data for these columns based on data in the columns of the child model.

The modify function will get called for each data access.

Parameters
columnsColumn types for this model (which will be exposed to the parent model/view).
slotA callback which will be called for each data access.
void Gtk::TreeModelFilter::set_value_impl ( const iterator iter,
int  column,
const Glib::ValueBase value 
)
overrideprotectedvirtual

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

Your implementation of set_value_impl() should call row_changed() after changing the value.

Reimplemented from Gtk::TreeModel.

void Gtk::TreeModelFilter::set_visible_column ( const TreeModelColumnBase column)

Sets column of the child_model to be the column where filter should look for visibility information.

columns should be a column of type TYPE_BOOLEAN, where true means that a row is visible, and false if not.

Note that set_visible_func() or set_visible_column() can only be called once for a given filter model.

Since gtkmm 2.4:
Parameters
columnA int which is the column containing the visible information.
void Gtk::TreeModelFilter::set_visible_column ( int  column)

Sets column of the child_model to be the column where filter should look for visibility information.

columns should be a column of type TYPE_BOOLEAN, where true means that a row is visible, and false if not.

Note that set_visible_func() or set_visible_column() can only be called once for a given filter model.

Since gtkmm 2.4:
Parameters
columnA int which is the column containing the visible information.
void Gtk::TreeModelFilter::set_visible_func ( const SlotVisible slot)

Sets the "visible" callback used when filtering the filter.

The callback function should return true if the given row should be visible and false otherwise.

Parameters
slotA callback slot which determines whether the row should be visible.

Friends And Related Function Documentation

Glib::RefPtr< Gtk::TreeModelFilter > wrap ( GtkTreeModelFilter *  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.