File: //usr/share/gtk-doc/html/gtk/GtkTreeModelFilter.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>GtkTreeModelFilter</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
<link rel="start" href="index.html" title="GTK+ Reference Manual">
<link rel="up" href="TreeWidgetObjects.html" title="Tree, List and Icon Grid Widgets">
<link rel="prev" href="GtkTreeModelSort.html" title="GtkTreeModelSort">
<link rel="next" href="GtkCellLayout.html" title="GtkCellLayout">
<meta name="generator" content="GTK-Doc V1.6 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
<link rel="part" href="gtk.html" title="Part I. GTK+ Overview">
<link rel="part" href="gtkbase.html" title="Part II. GTK+ Core Reference">
<link rel="part" href="gtkobjects.html" title="Part III. GTK+ Widgets and Objects">
<link rel="chapter" href="ch01.html" title="Object Hierarchy">
<link rel="chapter" href="ch02.html" title="Widget Gallery">
<link rel="chapter" href="WindowWidgets.html" title="Windows">
<link rel="chapter" href="DisplayWidgets.html" title="Display Widgets">
<link rel="chapter" href="ButtonWidgets.html" title="Buttons and Toggles">
<link rel="chapter" href="NumericEntry.html" title="Numeric/Text Data Entry">
<link rel="chapter" href="TextWidgetObjects.html" title="Multiline Text Editor">
<link rel="chapter" href="TreeWidgetObjects.html" title="Tree, List and Icon Grid Widgets">
<link rel="chapter" href="MenusAndCombos.html" title="Menus, Combo Box, Toolbar">
<link rel="chapter" href="Actions.html" title="Action-based menus and toolbars">
<link rel="chapter" href="SelectorWidgets.html" title="Selectors (File/Font/Color/Input Devices)">
<link rel="chapter" href="LayoutContainers.html" title="Layout Containers">
<link rel="chapter" href="Ornaments.html" title="Ornaments">
<link rel="chapter" href="ScrollingWidgets.html" title="Scrolling">
<link rel="chapter" href="Printing.html" title="Printing">
<link rel="chapter" href="MiscObjects.html" title="Miscellaneous">
<link rel="chapter" href="AbstractObjects.html" title="Abstract Base Classes">
<link rel="chapter" href="PlugSocket.html" title="Cross-process Embedding">
<link rel="chapter" href="SpecialObjects.html" title="Special-purpose features">
<link rel="chapter" href="RecentDocuments.html" title="Recently Used Documents">
<link rel="chapter" href="DeprecatedObjects.html" title="Deprecated">
<link rel="part" href="migrating.html" title="Part IV. Migrating from Previous Versions of GTK+">
<link rel="chapter" href="gtk-migrating-checklist.html" title="Migration Checklist">
<link rel="chapter" href="gtk-migrating-GtkFileChooser.html" title="Migrating from GtkFileSelection to GtkFileChooser">
<link rel="chapter" href="gtk-migrating-GtkAction.html" title="Migrating from old menu and toolbar systems to GtkAction">
<link rel="chapter" href="gtk-migrating-GtkComboBox.html" title="Migrating from GtkOptionMenu and GtkCombo to GtkComboBox and
GtkComboBoxEntry">
<link rel="chapter" href="gtk-migrating-GtkIconView.html" title="Migrating from GnomeIconList to GtkIconView">
<link rel="chapter" href="gtk-migrating-GtkAboutDialog.html" title="Migrating from GnomeAbout to GtkAboutDialog">
<link rel="chapter" href="gtk-migrating-GtkColorButton.html" title="Migrating from GnomeColorPicker to GtkColorButton">
<link rel="chapter" href="gtk-migrating-GtkAssistant.html" title="Migrating from GnomeDruid to GtkAssistant">
<link rel="chapter" href="gtk-migrating-GtkRecentChooser.html" title="Migrating from EggRecent to GtkRecentChooser">
<link rel="chapter" href="gtk-migrating-GtkLinkButton.html" title="Migrating from GnomeHRef to GtkLinkButton">
<link rel="part" href="pt05.html" title="Part V. GTK+ Tools">
<link rel="glossary" href="glossary.html" title="Glossary">
<link rel="index" href="ix01.html" title="Index">
<link rel="index" href="ix02.html" title="Index of deprecated symbols">
<link rel="index" href="ix03.html" title="Index of new symbols in 2.2">
<link rel="index" href="ix04.html" title="Index of new symbols in 2.4">
<link rel="index" href="ix05.html" title="Index of new symbols in 2.6">
<link rel="index" href="ix06.html" title="Index of new symbols in 2.8">
<link rel="index" href="ix07.html" title="Index of new symbols in 2.10">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
<tr valign="middle">
<td><a accesskey="p" href="GtkTreeModelSort.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
<td><a accesskey="u" href="TreeWidgetObjects.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">GTK+ Reference Manual</th>
<td><a accesskey="n" href="GtkCellLayout.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr>
<tr><td colspan="5" class="shortcuts"><nobr><a href="#id3201942" class="shortcut">Top</a>
 | 
<a href="#id3202563" class="shortcut">Description</a>
 | 
<a href="#id3202455" class="shortcut">Object Hierarchy</a>
 | 
<a href="#id3202480" class="shortcut">Implemented Interfaces</a>
 | 
<a href="#id3202510" class="shortcut">Properties</a></nobr></td></tr>
</table>
<div class="refentry" lang="en">
<a name="GtkTreeModelFilter"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2>
<a name="id3201942"></a><span class="refentrytitle">GtkTreeModelFilter</span>
</h2>
<p>GtkTreeModelFilter — A GtkTreeModel which hides parts of an underlying tree model</p>
</td>
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<pre class="synopsis">
#include <gtk/gtk.h>
<a href="GtkTreeModelFilter.html#GtkTreeModelFilter-struct">GtkTreeModelFilter</a>;
<a
href="../glib/glib-Basic-Types.html#gboolean"
>gboolean</a> (<a href="GtkTreeModelFilter.html#GtkTreeModelFilterVisibleFunc">*GtkTreeModelFilterVisibleFunc</a>)
(<a href="GtkTreeModel.html" title="GtkTreeModel">GtkTreeModel</a> *model,
<a href="GtkTreeModel.html#GtkTreeIter">GtkTreeIter</a> *iter,
<a
href="../glib/glib-Basic-Types.html#gpointer"
>gpointer</a> data);
void (<a href="GtkTreeModelFilter.html#GtkTreeModelFilterModifyFunc">*GtkTreeModelFilterModifyFunc</a>) (<a href="GtkTreeModel.html" title="GtkTreeModel">GtkTreeModel</a> *model,
<a href="GtkTreeModel.html#GtkTreeIter">GtkTreeIter</a> *iter,
<a
href="../gobject/gobject-Generic-values.html#GValue"
>GValue</a> *value,
<a
href="../glib/glib-Basic-Types.html#gint"
>gint</a> column,
<a
href="../glib/glib-Basic-Types.html#gpointer"
>gpointer</a> data);
<a href="GtkTreeModel.html" title="GtkTreeModel">GtkTreeModel</a>* <a href="GtkTreeModelFilter.html#gtk-tree-model-filter-new">gtk_tree_model_filter_new</a> (<a href="GtkTreeModel.html" title="GtkTreeModel">GtkTreeModel</a> *child_model,
<a href="GtkTreeModel.html#GtkTreePath">GtkTreePath</a> *root);
void <a href="GtkTreeModelFilter.html#gtk-tree-model-filter-set-visible-func">gtk_tree_model_filter_set_visible_func</a>
(<a href="GtkTreeModelFilter.html" title="GtkTreeModelFilter">GtkTreeModelFilter</a> *filter,
<a href="GtkTreeModelFilter.html#GtkTreeModelFilterVisibleFunc">GtkTreeModelFilterVisibleFunc</a> func,
<a
href="../glib/glib-Basic-Types.html#gpointer"
>gpointer</a> data,
<a href="gtk-Types.html#GtkDestroyNotify">GtkDestroyNotify</a> destroy);
void <a href="GtkTreeModelFilter.html#gtk-tree-model-filter-set-modify-func">gtk_tree_model_filter_set_modify_func</a>
(<a href="GtkTreeModelFilter.html" title="GtkTreeModelFilter">GtkTreeModelFilter</a> *filter,
<a
href="../glib/glib-Basic-Types.html#gint"
>gint</a> n_columns,
<a
href="../gobject/gobject-Type-Information.html#GType"
>GType</a> *types,
<a href="GtkTreeModelFilter.html#GtkTreeModelFilterModifyFunc">GtkTreeModelFilterModifyFunc</a> func,
<a
href="../glib/glib-Basic-Types.html#gpointer"
>gpointer</a> data,
<a href="gtk-Types.html#GtkDestroyNotify">GtkDestroyNotify</a> destroy);
void <a href="GtkTreeModelFilter.html#gtk-tree-model-filter-set-visible-column">gtk_tree_model_filter_set_visible_column</a>
(<a href="GtkTreeModelFilter.html" title="GtkTreeModelFilter">GtkTreeModelFilter</a> *filter,
<a
href="../glib/glib-Basic-Types.html#gint"
>gint</a> column);
<a href="GtkTreeModel.html" title="GtkTreeModel">GtkTreeModel</a>* <a href="GtkTreeModelFilter.html#gtk-tree-model-filter-get-model">gtk_tree_model_filter_get_model</a>
(<a href="GtkTreeModelFilter.html" title="GtkTreeModelFilter">GtkTreeModelFilter</a> *filter);
<a
href="../glib/glib-Basic-Types.html#gboolean"
>gboolean</a> <a href="GtkTreeModelFilter.html#gtk-tree-model-filter-convert-child-iter-to-iter">gtk_tree_model_filter_convert_child_iter_to_iter</a>
(<a href="GtkTreeModelFilter.html" title="GtkTreeModelFilter">GtkTreeModelFilter</a> *filter,
<a href="GtkTreeModel.html#GtkTreeIter">GtkTreeIter</a> *filter_iter,
<a href="GtkTreeModel.html#GtkTreeIter">GtkTreeIter</a> *child_iter);
void <a href="GtkTreeModelFilter.html#gtk-tree-model-filter-convert-iter-to-child-iter">gtk_tree_model_filter_convert_iter_to_child_iter</a>
(<a href="GtkTreeModelFilter.html" title="GtkTreeModelFilter">GtkTreeModelFilter</a> *filter,
<a href="GtkTreeModel.html#GtkTreeIter">GtkTreeIter</a> *child_iter,
<a href="GtkTreeModel.html#GtkTreeIter">GtkTreeIter</a> *filter_iter);
<a href="GtkTreeModel.html#GtkTreePath">GtkTreePath</a>* <a href="GtkTreeModelFilter.html#gtk-tree-model-filter-convert-child-path-to-path">gtk_tree_model_filter_convert_child_path_to_path</a>
(<a href="GtkTreeModelFilter.html" title="GtkTreeModelFilter">GtkTreeModelFilter</a> *filter,
<a href="GtkTreeModel.html#GtkTreePath">GtkTreePath</a> *child_path);
<a href="GtkTreeModel.html#GtkTreePath">GtkTreePath</a>* <a href="GtkTreeModelFilter.html#gtk-tree-model-filter-convert-path-to-child-path">gtk_tree_model_filter_convert_path_to_child_path</a>
(<a href="GtkTreeModelFilter.html" title="GtkTreeModelFilter">GtkTreeModelFilter</a> *filter,
<a href="GtkTreeModel.html#GtkTreePath">GtkTreePath</a> *filter_path);
void <a href="GtkTreeModelFilter.html#gtk-tree-model-filter-refilter">gtk_tree_model_filter_refilter</a> (<a href="GtkTreeModelFilter.html" title="GtkTreeModelFilter">GtkTreeModelFilter</a> *filter);
void <a href="GtkTreeModelFilter.html#gtk-tree-model-filter-clear-cache">gtk_tree_model_filter_clear_cache</a>
(<a href="GtkTreeModelFilter.html" title="GtkTreeModelFilter">GtkTreeModelFilter</a> *filter);
</pre>
</div>
<div class="refsect1" lang="en">
<a name="id3202455"></a><h2>Object Hierarchy</h2>
<pre class="synopsis">
<a
href="../gobject/gobject-The-Base-Object-Type.html#GObject"
>GObject</a>
+----GtkTreeModelFilter
</pre>
</div>
<div class="refsect1" lang="en">
<a name="id3202480"></a><h2>Implemented Interfaces</h2>
<p>
GtkTreeModelFilter implements
<a href="GtkTreeModel.html" title="GtkTreeModel">GtkTreeModel</a> and <a href="gtk-GtkTreeView-drag-and-drop.html#GtkTreeDragSource">GtkTreeDragSource</a>.</p>
</div>
<div class="refsect1" lang="en">
<a name="id3202510"></a><h2>Properties</h2>
<pre class="synopsis">
"<a href="GtkTreeModelFilter.html#GtkTreeModelFilter--child-model">child-model</a>" <a href="GtkTreeModel.html" title="GtkTreeModel">GtkTreeModel</a> : Read / Write / Construct Only
"<a href="GtkTreeModelFilter.html#GtkTreeModelFilter--virtual-root">virtual-root</a>" <a href="GtkTreeModel.html#GtkTreePath">GtkTreePath</a> : Read / Write / Construct Only
</pre>
</div>
<div class="refsect1" lang="en">
<a name="id3202563"></a><h2>Description</h2>
<p>
A <a href="GtkTreeModelFilter.html" title="GtkTreeModelFilter"><span class="type">GtkTreeModelFilter</span></a> is a tree model which wraps another tree model,
and can do the following things:
</p>
<div class="itemizedlist"><ul type="disc">
<li><p>
Filter specific rows, based on data from a "visible column", a column
storing booleans indicating whether the row should be filtered or not,
or based on the return value of a "visible function", which gets a
model, iter and user_data and returns a boolean indicating whether the
row should be filtered or not.
</p></li>
<li><p>
Modify the "appearance" of the model, using a modify function.
This is extremely powerful and allows for just changing
some values and also for creating a completely different model based on
the given child model.
</p></li>
<li><p>
Set a different root node, also known as a "virtual root". You can pass in
a <a href="GtkTreeModel.html#GtkTreePath"><span class="type">GtkTreePath</span></a> indicating the root node for the filter at construction time.
</p></li>
</ul></div>
<p>
</p>
</div>
<div class="refsect1" lang="en">
<a name="id3202622"></a><h2>Details</h2>
<div class="refsect2" lang="en">
<a name="id3202632"></a><h3>
<a name="GtkTreeModelFilter-struct"></a>GtkTreeModelFilter</h3>
<a class="indexterm" name="id3202646"></a><pre class="programlisting">typedef struct _GtkTreeModelFilter GtkTreeModelFilter;</pre>
<p>
The GtkTreeModelFilter struct contains only private fields.
</p>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id3202663"></a><h3>
<a name="GtkTreeModelFilterVisibleFunc"></a>GtkTreeModelFilterVisibleFunc ()</h3>
<a class="indexterm" name="id3202676"></a><pre class="programlisting"><a
href="../glib/glib-Basic-Types.html#gboolean"
>gboolean</a> (*GtkTreeModelFilterVisibleFunc)
(<a href="GtkTreeModel.html" title="GtkTreeModel">GtkTreeModel</a> *model,
<a href="GtkTreeModel.html#GtkTreeIter">GtkTreeIter</a> *iter,
<a
href="../glib/glib-Basic-Types.html#gpointer"
>gpointer</a> data);</pre>
<p>
A function which decides whether the row indicated by <em class="parameter"><code>iter</code></em> is visible.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td>
<span class="term"><em class="parameter"><code>model</code></em> :</span></td>
<td>the child model of the <a href="GtkTreeModelFilter.html" title="GtkTreeModelFilter"><span class="type">GtkTreeModelFilter</span></a>
</td>
</tr>
<tr>
<td>
<span class="term"><em class="parameter"><code>iter</code></em> :</span></td>
<td>a <a href="GtkTreeModel.html#GtkTreeIter"><span class="type">GtkTreeIter</span></a> pointing to the row in <em class="parameter"><code>model</code></em> whose visibility
is determined
</td>
</tr>
<tr>
<td>
<span class="term"><em class="parameter"><code>data</code></em> :</span></td>
<td>user data given to <a href="GtkTreeModelFilter.html#gtk-tree-model-filter-set-visible-func"><code class="function">gtk_tree_model_filter_set_visible_func()</code></a>
</td>
</tr>
<tr>
<td>
<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
<td>Whether the row indicated by <em class="parameter"><code>iter</code></em> is visible.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id3202825"></a><h3>
<a name="GtkTreeModelFilterModifyFunc"></a>GtkTreeModelFilterModifyFunc ()</h3>
<a class="indexterm" name="id3202838"></a><pre class="programlisting">void (*GtkTreeModelFilterModifyFunc) (<a href="GtkTreeModel.html" title="GtkTreeModel">GtkTreeModel</a> *model,
<a href="GtkTreeModel.html#GtkTreeIter">GtkTreeIter</a> *iter,
<a
href="../gobject/gobject-Generic-values.html#GValue"
>GValue</a> *value,
<a
href="../glib/glib-Basic-Types.html#gint"
>gint</a> column,
<a
href="../glib/glib-Basic-Types.html#gpointer"
>gpointer</a> data);</pre>
<p>
A function which calculates display values from raw values in the model.
It must fill <em class="parameter"><code>value</code></em> with the display value for the column <em class="parameter"><code>column</code></em> in the
row indicated by <em class="parameter"><code>iter</code></em>.
</p>
<p>
Since this function is called for each data access, it's not a
particularly efficient operation.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td>
<span class="term"><em class="parameter"><code>model</code></em> :</span></td>
<td>the <a href="GtkTreeModelFilter.html" title="GtkTreeModelFilter"><span class="type">GtkTreeModelFilter</span></a>
</td>
</tr>
<tr>
<td>
<span class="term"><em class="parameter"><code>iter</code></em> :</span></td>
<td>a <a href="GtkTreeModel.html#GtkTreeIter"><span class="type">GtkTreeIter</span></a> pointing to the row whose display values are determined
</td>
</tr>
<tr>
<td>
<span class="term"><em class="parameter"><code>value</code></em> :</span></td>
<td>A <a
href="../gobject/gobject-Generic-values.html#GValue"
><span class="type">GValue</span></a> which is already initialized for with the correct type for
the column <em class="parameter"><code>column</code></em>.
</td>
</tr>
<tr>
<td>
<span class="term"><em class="parameter"><code>column</code></em> :</span></td>
<td>the column whose display value is determined
</td>
</tr>
<tr>
<td>
<span class="term"><em class="parameter"><code>data</code></em> :</span></td>
<td>user data given to <a href="GtkTreeModelFilter.html#gtk-tree-model-filter-set-modify-func"><code class="function">gtk_tree_model_filter_set_modify_func()</code></a>
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id3203040"></a><h3>
<a name="gtk-tree-model-filter-new"></a>gtk_tree_model_filter_new ()</h3>
<a class="indexterm" name="id3203056"></a><pre class="programlisting"><a href="GtkTreeModel.html" title="GtkTreeModel">GtkTreeModel</a>* gtk_tree_model_filter_new (<a href="GtkTreeModel.html" title="GtkTreeModel">GtkTreeModel</a> *child_model,
<a href="GtkTreeModel.html#GtkTreePath">GtkTreePath</a> *root);</pre>
<p>
Creates a new <a href="GtkTreeModel.html" title="GtkTreeModel"><span class="type">GtkTreeModel</span></a>, with <em class="parameter"><code>child_model</code></em> as the child_model
and <em class="parameter"><code>root</code></em> as the virtual root.</p>
<p>
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td>
<span class="term"><em class="parameter"><code>child_model</code></em> :</span></td>
<td> A <a href="GtkTreeModel.html" title="GtkTreeModel"><span class="type">GtkTreeModel</span></a>.
</td>
</tr>
<tr>
<td>
<span class="term"><em class="parameter"><code>root</code></em> :</span></td>
<td> A <a href="GtkTreeModel.html#GtkTreePath"><span class="type">GtkTreePath</span></a> or <a
href="../glib/glib-Standard-Macros.html#NULL:CAPS"
><code class="literal">NULL</code></a>.
</td>
</tr>
<tr>
<td>
<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
<td> A new <a href="GtkTreeModel.html" title="GtkTreeModel"><span class="type">GtkTreeModel</span></a>.
</td>
</tr>
</tbody>
</table></div>
<p>Since 2.4
</p>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id3203197"></a><h3>
<a name="gtk-tree-model-filter-set-visible-func"></a>gtk_tree_model_filter_set_visible_func ()</h3>
<a class="indexterm" name="id3203214"></a><pre class="programlisting">void gtk_tree_model_filter_set_visible_func
(<a href="GtkTreeModelFilter.html" title="GtkTreeModelFilter">GtkTreeModelFilter</a> *filter,
<a href="GtkTreeModelFilter.html#GtkTreeModelFilterVisibleFunc">GtkTreeModelFilterVisibleFunc</a> func,
<a
href="../glib/glib-Basic-Types.html#gpointer"
>gpointer</a> data,
<a href="gtk-Types.html#GtkDestroyNotify">GtkDestroyNotify</a> destroy);</pre>
<p>
Sets the visible function used when filtering the <em class="parameter"><code>filter</code></em> to be <em class="parameter"><code>func</code></em>. The
function should return <a
href="../glib/glib-Standard-Macros.html#TRUE:CAPS"
><code class="literal">TRUE</code></a> if the given row should be visible and
<a
href="../glib/glib-Standard-Macros.html#FALSE:CAPS"
><code class="literal">FALSE</code></a> otherwise.
</p>
<p>
If the condition calculated by the function changes over time (e.g. because
it depends on some global parameters), you must call
<a href="GtkTreeModelFilter.html#gtk-tree-model-filter-refilter"><code class="function">gtk_tree_model_filter_refilter()</code></a> to keep the visibility information of
the model uptodate.</p>
<p>
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td>
<span class="term"><em class="parameter"><code>filter</code></em> :</span></td>
<td> A <a href="GtkTreeModelFilter.html" title="GtkTreeModelFilter"><span class="type">GtkTreeModelFilter</span></a>.
</td>
</tr>
<tr>
<td>
<span class="term"><em class="parameter"><code>func</code></em> :</span></td>
<td> A <a href="GtkTreeModelFilter.html#GtkTreeModelFilterVisibleFunc"><span class="type">GtkTreeModelFilterVisibleFunc</span></a>, the visible function.
</td>
</tr>
<tr>
<td>
<span class="term"><em class="parameter"><code>data</code></em> :</span></td>
<td> User data to pass to the visible function, or <a
href="../glib/glib-Standard-Macros.html#NULL:CAPS"
><code class="literal">NULL</code></a>.
</td>
</tr>
<tr>
<td>
<span class="term"><em class="parameter"><code>destroy</code></em> :</span></td>
<td> Destroy notifier of <em class="parameter"><code>data</code></em>, or <a
href="../glib/glib-Standard-Macros.html#NULL:CAPS"
><code class="literal">NULL</code></a>.
</td>
</tr>
</tbody>
</table></div>
<p>Since 2.4
</p>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id3203431"></a><h3>
<a name="gtk-tree-model-filter-set-modify-func"></a>gtk_tree_model_filter_set_modify_func ()</h3>
<a class="indexterm" name="id3203448"></a><pre class="programlisting">void gtk_tree_model_filter_set_modify_func
(<a href="GtkTreeModelFilter.html" title="GtkTreeModelFilter">GtkTreeModelFilter</a> *filter,
<a
href="../glib/glib-Basic-Types.html#gint"
>gint</a> n_columns,
<a
href="../gobject/gobject-Type-Information.html#GType"
>GType</a> *types,
<a href="GtkTreeModelFilter.html#GtkTreeModelFilterModifyFunc">GtkTreeModelFilterModifyFunc</a> func,
<a
href="../glib/glib-Basic-Types.html#gpointer"
>gpointer</a> data,
<a href="gtk-Types.html#GtkDestroyNotify">GtkDestroyNotify</a> destroy);</pre>
<p>
With the <em class="parameter"><code>n_columns</code></em> and <em class="parameter"><code>types</code></em> parameters, you give an array of column
types for this model (which will be exposed to the parent model/view).
The <em class="parameter"><code>func</code></em>, <em class="parameter"><code>data</code></em> and <em class="parameter"><code>destroy</code></em> parameters are for specifying the modify
function. The modify function will get called for <span class="emphasis"><em>each</em></span>
data access, the goal of the modify function is to return the data which
should be displayed at the location specified using the parameters of the
modify function.</p>
<p>
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td>
<span class="term"><em class="parameter"><code>filter</code></em> :</span></td>
<td> A <a href="GtkTreeModelFilter.html" title="GtkTreeModelFilter"><span class="type">GtkTreeModelFilter</span></a>.
</td>
</tr>
<tr>
<td>
<span class="term"><em class="parameter"><code>n_columns</code></em> :</span></td>
<td> The number of columns in the filter model.
</td>
</tr>
<tr>
<td>
<span class="term"><em class="parameter"><code>types</code></em> :</span></td>
<td> The <a
href="../gobject/gobject-Type-Information.html#GType"
><span class="type">GType</span></a>s of the columns.
</td>
</tr>
<tr>
<td>
<span class="term"><em class="parameter"><code>func</code></em> :</span></td>
<td> A <a href="GtkTreeModelFilter.html#GtkTreeModelFilterModifyFunc"><span class="type">GtkTreeModelFilterModifyFunc</span></a>
</td>
</tr>
<tr>
<td>
<span class="term"><em class="parameter"><code>data</code></em> :</span></td>
<td> User data to pass to the modify function, or <a
href="../glib/glib-Standard-Macros.html#NULL:CAPS"
><code class="literal">NULL</code></a>.
</td>
</tr>
<tr>
<td>
<span class="term"><em class="parameter"><code>destroy</code></em> :</span></td>
<td> Destroy notifier of <em class="parameter"><code>data</code></em>, or <a
href="../glib/glib-Standard-Macros.html#NULL:CAPS"
><code class="literal">NULL</code></a>.
</td>
</tr>
</tbody>
</table></div>
<p>Since 2.4
</p>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id3203705"></a><h3>
<a name="gtk-tree-model-filter-set-visible-column"></a>gtk_tree_model_filter_set_visible_column ()</h3>
<a class="indexterm" name="id3203722"></a><pre class="programlisting">void gtk_tree_model_filter_set_visible_column
(<a href="GtkTreeModelFilter.html" title="GtkTreeModelFilter">GtkTreeModelFilter</a> *filter,
<a
href="../glib/glib-Basic-Types.html#gint"
>gint</a> column);</pre>
<p>
Sets <em class="parameter"><code>column</code></em> of the child_model to be the column where <em class="parameter"><code>filter</code></em> should
look for visibility information. <em class="parameter"><code>columns</code></em> should be a column of type
<a
href="../gobject/gobject-Type-Information.html#G-TYPE-BOOLEAN:CAPS"
><code class="literal">G_TYPE_BOOLEAN</code></a>, where <a
href="../glib/glib-Standard-Macros.html#TRUE:CAPS"
><code class="literal">TRUE</code></a> means that a row is visible, and <a
href="../glib/glib-Standard-Macros.html#FALSE:CAPS"
><code class="literal">FALSE</code></a>
if not.</p>
<p>
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td>
<span class="term"><em class="parameter"><code>filter</code></em> :</span></td>
<td> A <a href="GtkTreeModelFilter.html" title="GtkTreeModelFilter"><span class="type">GtkTreeModelFilter</span></a>.
</td>
</tr>
<tr>
<td>
<span class="term"><em class="parameter"><code>column</code></em> :</span></td>
<td> A <a
href="../glib/glib-Basic-Types.html#gint"
><span class="type">gint</span></a> which is the column containing the visible information.
</td>
</tr>
</tbody>
</table></div>
<p>Since 2.4
</p>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id3203868"></a><h3>
<a name="gtk-tree-model-filter-get-model"></a>gtk_tree_model_filter_get_model ()</h3>
<a class="indexterm" name="id3203884"></a><pre class="programlisting"><a href="GtkTreeModel.html" title="GtkTreeModel">GtkTreeModel</a>* gtk_tree_model_filter_get_model
(<a href="GtkTreeModelFilter.html" title="GtkTreeModelFilter">GtkTreeModelFilter</a> *filter);</pre>
<p>
Returns a pointer to the child model of <em class="parameter"><code>filter</code></em>.</p>
<p>
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td>
<span class="term"><em class="parameter"><code>filter</code></em> :</span></td>
<td> A <a href="GtkTreeModelFilter.html" title="GtkTreeModelFilter"><span class="type">GtkTreeModelFilter</span></a>.
</td>
</tr>
<tr>
<td>
<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
<td> A pointer to a <a href="GtkTreeModel.html" title="GtkTreeModel"><span class="type">GtkTreeModel</span></a>.
</td>
</tr>
</tbody>
</table></div>
<p>Since 2.4
</p>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id3203972"></a><h3>
<a name="gtk-tree-model-filter-convert-child-iter-to-iter"></a>gtk_tree_model_filter_convert_child_iter_to_iter ()</h3>
<a class="indexterm" name="id3203989"></a><pre class="programlisting"><a
href="../glib/glib-Basic-Types.html#gboolean"
>gboolean</a> gtk_tree_model_filter_convert_child_iter_to_iter
(<a href="GtkTreeModelFilter.html" title="GtkTreeModelFilter">GtkTreeModelFilter</a> *filter,
<a href="GtkTreeModel.html#GtkTreeIter">GtkTreeIter</a> *filter_iter,
<a href="GtkTreeModel.html#GtkTreeIter">GtkTreeIter</a> *child_iter);</pre>
<p>
Sets <em class="parameter"><code>filter_iter</code></em> to point to the row in <em class="parameter"><code>filter</code></em> that corresponds to the
row pointed at by <em class="parameter"><code>child_iter</code></em>. If <em class="parameter"><code>filter_iter</code></em> was not set, <a
href="../glib/glib-Standard-Macros.html#FALSE:CAPS"
><code class="literal">FALSE</code></a> is
returned.</p>
<p>
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td>
<span class="term"><em class="parameter"><code>filter</code></em> :</span></td>
<td> A <a href="GtkTreeModelFilter.html" title="GtkTreeModelFilter"><span class="type">GtkTreeModelFilter</span></a>.
</td>
</tr>
<tr>
<td>
<span class="term"><em class="parameter"><code>filter_iter</code></em> :</span></td>
<td> An uninitialized <a href="GtkTreeModel.html#GtkTreeIter"><span class="type">GtkTreeIter</span></a>.
</td>
</tr>
<tr>
<td>
<span class="term"><em class="parameter"><code>child_iter</code></em> :</span></td>
<td> A valid <a href="GtkTreeModel.html#GtkTreeIter"><span class="type">GtkTreeIter</span></a> pointing to a row on the child model.
</td>
</tr>
<tr>
<td>
<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
<td> <a
href="../glib/glib-Standard-Macros.html#TRUE:CAPS"
><code class="literal">TRUE</code></a>, if <em class="parameter"><code>filter_iter</code></em> was set, i.e. if <em class="parameter"><code>child_iter</code></em> is a
valid iterator pointing to a visible row in child model.
</td>
</tr>
</tbody>
</table></div>
<p>Since 2.4
</p>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id3204181"></a><h3>
<a name="gtk-tree-model-filter-convert-iter-to-child-iter"></a>gtk_tree_model_filter_convert_iter_to_child_iter ()</h3>
<a class="indexterm" name="id3204198"></a><pre class="programlisting">void gtk_tree_model_filter_convert_iter_to_child_iter
(<a href="GtkTreeModelFilter.html" title="GtkTreeModelFilter">GtkTreeModelFilter</a> *filter,
<a href="GtkTreeModel.html#GtkTreeIter">GtkTreeIter</a> *child_iter,
<a href="GtkTreeModel.html#GtkTreeIter">GtkTreeIter</a> *filter_iter);</pre>
<p>
Sets <em class="parameter"><code>child_iter</code></em> to point to the row pointed to by <em class="parameter"><code>filter_iter</code></em>.</p>
<p>
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td>
<span class="term"><em class="parameter"><code>filter</code></em> :</span></td>
<td> A <a href="GtkTreeModelFilter.html" title="GtkTreeModelFilter"><span class="type">GtkTreeModelFilter</span></a>.
</td>
</tr>
<tr>
<td>
<span class="term"><em class="parameter"><code>child_iter</code></em> :</span></td>
<td> An uninitialized <a href="GtkTreeModel.html#GtkTreeIter"><span class="type">GtkTreeIter</span></a>.
</td>
</tr>
<tr>
<td>
<span class="term"><em class="parameter"><code>filter_iter</code></em> :</span></td>
<td> A valid <a href="GtkTreeModel.html#GtkTreeIter"><span class="type">GtkTreeIter</span></a> pointing to a row on <em class="parameter"><code>filter</code></em>.
</td>
</tr>
</tbody>
</table></div>
<p>Since 2.4
</p>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id3204339"></a><h3>
<a name="gtk-tree-model-filter-convert-child-path-to-path"></a>gtk_tree_model_filter_convert_child_path_to_path ()</h3>
<a class="indexterm" name="id3204356"></a><pre class="programlisting"><a href="GtkTreeModel.html#GtkTreePath">GtkTreePath</a>* gtk_tree_model_filter_convert_child_path_to_path
(<a href="GtkTreeModelFilter.html" title="GtkTreeModelFilter">GtkTreeModelFilter</a> *filter,
<a href="GtkTreeModel.html#GtkTreePath">GtkTreePath</a> *child_path);</pre>
<p>
Converts <em class="parameter"><code>child_path</code></em> to a path relative to <em class="parameter"><code>filter</code></em>. That is, <em class="parameter"><code>child_path</code></em>
points to a path in the child model. The rerturned path will point to the
same row in the filtered model. If <em class="parameter"><code>child_path</code></em> isn't a valid path on the
child model or points to a row which is not visible in <em class="parameter"><code>filter</code></em>, then <a
href="../glib/glib-Standard-Macros.html#NULL:CAPS"
><code class="literal">NULL</code></a>
is returned.</p>
<p>
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td>
<span class="term"><em class="parameter"><code>filter</code></em> :</span></td>
<td> A <a href="GtkTreeModelFilter.html" title="GtkTreeModelFilter"><span class="type">GtkTreeModelFilter</span></a>.
</td>
</tr>
<tr>
<td>
<span class="term"><em class="parameter"><code>child_path</code></em> :</span></td>
<td> A <a href="GtkTreeModel.html#GtkTreePath"><span class="type">GtkTreePath</span></a> to convert.
</td>
</tr>
<tr>
<td>
<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
<td> A newly allocated <a href="GtkTreeModel.html#GtkTreePath"><span class="type">GtkTreePath</span></a>, or <a
href="../glib/glib-Standard-Macros.html#NULL:CAPS"
><code class="literal">NULL</code></a>.
</td>
</tr>
</tbody>
</table></div>
<p>Since 2.4
</p>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id3204521"></a><h3>
<a name="gtk-tree-model-filter-convert-path-to-child-path"></a>gtk_tree_model_filter_convert_path_to_child_path ()</h3>
<a class="indexterm" name="id3204538"></a><pre class="programlisting"><a href="GtkTreeModel.html#GtkTreePath">GtkTreePath</a>* gtk_tree_model_filter_convert_path_to_child_path
(<a href="GtkTreeModelFilter.html" title="GtkTreeModelFilter">GtkTreeModelFilter</a> *filter,
<a href="GtkTreeModel.html#GtkTreePath">GtkTreePath</a> *filter_path);</pre>
<p>
Converts <em class="parameter"><code>filter_path</code></em> to a path on the child model of <em class="parameter"><code>filter</code></em>. That is,
<em class="parameter"><code>filter_path</code></em> points to a location in <em class="parameter"><code>filter</code></em>. The returned path will
point to the same location in the model not being filtered. If <em class="parameter"><code>filter_path</code></em>
does not point to a location in the child model, <a
href="../glib/glib-Standard-Macros.html#NULL:CAPS"
><code class="literal">NULL</code></a> is returned.</p>
<p>
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td>
<span class="term"><em class="parameter"><code>filter</code></em> :</span></td>
<td> A <a href="GtkTreeModelFilter.html" title="GtkTreeModelFilter"><span class="type">GtkTreeModelFilter</span></a>.
</td>
</tr>
<tr>
<td>
<span class="term"><em class="parameter"><code>filter_path</code></em> :</span></td>
<td> A <a href="GtkTreeModel.html#GtkTreePath"><span class="type">GtkTreePath</span></a> to convert.
</td>
</tr>
<tr>
<td>
<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
<td> A newly allocated <a href="GtkTreeModel.html#GtkTreePath"><span class="type">GtkTreePath</span></a>, or <a
href="../glib/glib-Standard-Macros.html#NULL:CAPS"
><code class="literal">NULL</code></a>.
</td>
</tr>
</tbody>
</table></div>
<p>Since 2.4
</p>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id3204703"></a><h3>
<a name="gtk-tree-model-filter-refilter"></a>gtk_tree_model_filter_refilter ()</h3>
<a class="indexterm" name="id3204719"></a><pre class="programlisting">void gtk_tree_model_filter_refilter (<a href="GtkTreeModelFilter.html" title="GtkTreeModelFilter">GtkTreeModelFilter</a> *filter);</pre>
<p>
Emits ::row_changed for each row in the child model, which causes
the filter to re-evaluate whether a row is visible or not.</p>
<p>
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
<td>
<span class="term"><em class="parameter"><code>filter</code></em> :</span></td>
<td> A <a href="GtkTreeModelFilter.html" title="GtkTreeModelFilter"><span class="type">GtkTreeModelFilter</span></a>.
</td>
</tr></tbody>
</table></div>
<p>Since 2.4
</p>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id3204783"></a><h3>
<a name="gtk-tree-model-filter-clear-cache"></a>gtk_tree_model_filter_clear_cache ()</h3>
<a class="indexterm" name="id3204800"></a><pre class="programlisting">void gtk_tree_model_filter_clear_cache
(<a href="GtkTreeModelFilter.html" title="GtkTreeModelFilter">GtkTreeModelFilter</a> *filter);</pre>
<p>
This function should almost never be called. It clears the <em class="parameter"><code>filter</code></em>
of any cached iterators that haven't been reffed with
<a href="GtkTreeModel.html#gtk-tree-model-ref-node"><code class="function">gtk_tree_model_ref_node()</code></a>. 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.</p>
<p>
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
<td>
<span class="term"><em class="parameter"><code>filter</code></em> :</span></td>
<td> A <a href="GtkTreeModelFilter.html" title="GtkTreeModelFilter"><span class="type">GtkTreeModelFilter</span></a>.
</td>
</tr></tbody>
</table></div>
<p>Since 2.4
</p>
</div>
</div>
<div class="refsect1" lang="en">
<a name="id3204886"></a><h2>Property Details</h2>
<div class="refsect2" lang="en">
<a name="id3204897"></a><h3>
<a name="GtkTreeModelFilter--child-model"></a>The "<code class="literal">child-model</code>" property</h3>
<a class="indexterm" name="id3204914"></a><pre class="programlisting"> "child-model" <a href="GtkTreeModel.html" title="GtkTreeModel">GtkTreeModel</a> : Read / Write / Construct Only</pre>
<p>The model for the filtermodel to filter.</p>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id3204937"></a><h3>
<a name="GtkTreeModelFilter--virtual-root"></a>The "<code class="literal">virtual-root</code>" property</h3>
<a class="indexterm" name="id3204954"></a><pre class="programlisting"> "virtual-root" <a href="GtkTreeModel.html#GtkTreePath">GtkTreePath</a> : Read / Write / Construct Only</pre>
<p>The virtual root (relative to the child model) for this filtermodel.</p>
</div>
</div>
<div class="refsect1" lang="en">
<a name="id3204979"></a><h2>See Also</h2>
<p>
<a href="GtkTreeModelSort.html" title="GtkTreeModelSort"><span class="type">GtkTreeModelSort</span></a>
</p>
</div>
</div>
</body>
</html>