<!-- ##### SECTION Title ##### -->
GtkTreeModelFilter

<!-- ##### SECTION Short_Description ##### -->
A GtkTreeModel which hides parts of an underlying tree model

<!-- ##### SECTION Long_Description ##### -->
<para>
A #GtkTreeModelFilter is a tree model which wraps another tree model,
and can do the following things:
<itemizedlist>
<listitem><para>
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.
</para></listitem>
<listitem><para>
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. 
</para></listitem>
<listitem><para>
Set a different root node, also known as a "virtual root". You can pass in 
a #GtkTreePath indicating the root node for the filter at construction time.
</para></listitem>
</itemizedlist>
</para>

<!-- ##### SECTION See_Also ##### -->
<para>
#GtkTreeModelSort
</para>

<!-- ##### SECTION Stability_Level ##### -->


<!-- ##### STRUCT GtkTreeModelFilter ##### -->
<para>
The GtkTreeModelFilter struct contains only private fields.
</para>


<!-- ##### ARG GtkTreeModelFilter:child-model ##### -->
<para>

</para>

<!-- ##### ARG GtkTreeModelFilter:virtual-root ##### -->
<para>

</para>

<!-- ##### USER_FUNCTION GtkTreeModelFilterVisibleFunc ##### -->
<para>
A function which decides whether the row indicated by @iter is visible.
</para>

@model: the child model of the #GtkTreeModelFilter
@iter: a #GtkTreeIter pointing to the row in @model whose visibility 
   is determined
@data: user data given to gtk_tree_model_filter_set_visible_func()
@Returns: Whether the row indicated by @iter is visible.


<!-- ##### USER_FUNCTION GtkTreeModelFilterModifyFunc ##### -->
<para>
A function which calculates display values from raw values in the model.
It must fill @value with the display value for the column @column in the 
row indicated by @iter. 
</para>
<para>
Since this function is called for each data access, it's not a
particularly efficient operation.
</para>

@model: the #GtkTreeModelFilter
@iter: a #GtkTreeIter pointing to the row whose display values are determined
@value: A #GValue which is already initialized for with the correct type for 
  the column @column.
@column: the column whose display value is determined
@data: user data given to gtk_tree_model_filter_set_modify_func()


<!-- ##### FUNCTION gtk_tree_model_filter_new ##### -->
<para>

</para>

@child_model: 
@root: 
@Returns: 


<!-- ##### FUNCTION gtk_tree_model_filter_set_visible_func ##### -->
<para>

</para>

@filter: 
@func: 
@data: 
@destroy: 


<!-- ##### FUNCTION gtk_tree_model_filter_set_modify_func ##### -->
<para>

</para>

@filter: 
@n_columns: 
@types: 
@func: 
@data: 
@destroy: 


<!-- ##### FUNCTION gtk_tree_model_filter_set_visible_column ##### -->
<para>

</para>

@filter: 
@column: 


<!-- ##### FUNCTION gtk_tree_model_filter_get_model ##### -->
<para>

</para>

@filter: 
@Returns: 


<!-- ##### FUNCTION gtk_tree_model_filter_convert_child_iter_to_iter ##### -->
<para>

</para>

@filter: 
@filter_iter: 
@child_iter: 
@Returns: 


<!-- ##### FUNCTION gtk_tree_model_filter_convert_iter_to_child_iter ##### -->
<para>

</para>

@filter: 
@child_iter: 
@filter_iter: 


<!-- ##### FUNCTION gtk_tree_model_filter_convert_child_path_to_path ##### -->
<para>

</para>

@filter: 
@child_path: 
@Returns: 


<!-- ##### FUNCTION gtk_tree_model_filter_convert_path_to_child_path ##### -->
<para>

</para>

@filter: 
@filter_path: 
@Returns: 


<!-- ##### FUNCTION gtk_tree_model_filter_refilter ##### -->
<para>

</para>

@filter: 


<!-- ##### FUNCTION gtk_tree_model_filter_clear_cache ##### -->
<para>

</para>

@filter: 


