Prev

Up

Home

GTK+ Reference Manual

Next

Top  |  Description  |  Object Hierarchy  |  Implemented Interfaces  |  Properties

GtkTreeModelFilter

GtkTreeModelFilter GtkTreeModel который скрывает части основной модели дерева

Краткое описание

#include <gtk/gtk.h> GtkTreeModelFilter; gboolean (*GtkTreeModelFilterVisibleFunc) (GtkTreeModel *model, GtkTreeIter *iter, gpointer data); void (*GtkTreeModelFilterModifyFunc) (GtkTreeModel *model, GtkTreeIter *iter, GValue *value, gint column, gpointer data); GtkTreeModel* gtk_tree_model_filter_new (GtkTreeModel *child_model, GtkTreePath *root); void gtk_tree_model_filter_set_visible_func (GtkTreeModelFilter *filter, GtkTreeModelFilterVisibleFunc func, gpointer data, GtkDestroyNotify destroy); void gtk_tree_model_filter_set_modify_func (GtkTreeModelFilter *filter, gint n_columns, GType *types, GtkTreeModelFilterModifyFunc func, gpointer data, GtkDestroyNotify destroy); void gtk_tree_model_filter_set_visible_column (GtkTreeModelFilter *filter, gint column); GtkTreeModel* gtk_tree_model_filter_get_model (GtkTreeModelFilter *filter); gboolean gtk_tree_model_filter_convert_child_iter_to_iter (GtkTreeModelFilter *filter, GtkTreeIter *filter_iter, GtkTreeIter *child_iter); void gtk_tree_model_filter_convert_iter_to_child_iter (GtkTreeModelFilter *filter, GtkTreeIter *child_iter, GtkTreeIter *filter_iter); GtkTreePath* gtk_tree_model_filter_convert_child_path_to_path (GtkTreeModelFilter *filter, GtkTreePath *child_path); GtkTreePath* gtk_tree_model_filter_convert_path_to_child_path (GtkTreeModelFilter *filter, GtkTreePath *filter_path); void gtk_tree_model_filter_refilter (GtkTreeModelFilter *filter); void gtk_tree_model_filter_clear_cache (GtkTreeModelFilter *filter);

Иерархия объектов

GObject +----GtkTreeModelFilter

Осуществляемые интерфейсы

GtkTreeModelFilter осуществляет GtkTreeModel и GtkTreeDragSource.

Свойства

"child-model" GtkTreeModel : Read / Write / Construct Only "virtual-root" GtkTreePath : Read / Write / Construct Only

Описание

GtkTreeModelFilter это модель дерева которая является оболочкой для другой модели дерева и может выполнять следующее:

Детали

GtkTreeModelFilter

typedef struct _GtkTreeModelFilter GtkTreeModelFilter;

Структура GtkTreeModelFilter содержит только закрытые поля.


GtkTreeModelFilterVisibleFunc ()

gboolean (*GtkTreeModelFilterVisibleFunc) (GtkTreeModel *model, GtkTreeIter *iter, gpointer data);

Функция которая решает видима ли строка указанная iter.

model :

Дочерняя модель GtkTreeModelFilter

iter :

GtkTreeIter указывающий на строку в model для определения видимости

data :

Пользовательские данные для gtk_tree_model_filter_set_visible_func()

Возвращает :

Видима ли строка указанная параметром iter.


GtkTreeModelFilterModifyFunc ()

void (*GtkTreeModelFilterModifyFunc) (GtkTreeModel *model, GtkTreeIter *iter, GValue *value, gint column, gpointer data);

Функция которая вычисляет отображаемое значение из строки значений в модели. Она должна заполнить value отображаемым значением для столбца column в строке указанной параметром iter.

Так как эта функция вызывается для каждого доступа к данным, это не очень эффективная операция.

model :

GtkTreeModelFilter

iter :

GtkTreeIter указывающий на строку которая определяет отображаемое значение

value :

GValue инициализированный правильным типом для столбца column.

column :

Столбец определяющий отображаемое значение

data :

Пользовательские данные для gtk_tree_model_filter_set_modify_func()


gtk_tree_model_filter_new ()

GtkTreeModel* gtk_tree_model_filter_new (GtkTreeModel *child_model, GtkTreePath *root);

Создаёт новый GtkTreeModel, с child_model как дочерней моделью и root как виртуальный корень.

child_model :

GtkTreeModel.

root :

GtkTreePath или NULL.

Возвращает :

Новый GtkTreeModel.

Начиная с версии 2.4


gtk_tree_model_filter_set_visible_func ()

void gtk_tree_model_filter_set_visible_func (GtkTreeModelFilter *filter, GtkTreeModelFilterVisibleFunc func, gpointer data, GtkDestroyNotify destroy);

Устанавливает функцию видимости используемую при фильтрации filter в значение func. Функция должна возвращать TRUE если полученная строка должна быть видима, иначе FALSE.

Если состояние рассчитываемое функцией изменяется всё время (например потому что это зависит от некоторых глобальных параметров), вы должны вызвать gtk_tree_model_filter_refilter() для сохранения новейшей информации видимости модели.

filter :

GtkTreeModelFilter.

func :

GtkTreeModelFilterVisibleFunc, функция видимости.

data :

Пользовательские данные помещаемые в функцию видимости, или NULL.

destroy :

Разрушающее уведомление data, или NULL.

Начиная с версии 2.4


gtk_tree_model_filter_set_modify_func ()

void gtk_tree_model_filter_set_modify_func (GtkTreeModelFilter *filter, gint n_columns, GType *types, GtkTreeModelFilterModifyFunc func, gpointer data, GtkDestroyNotify destroy);

С параметрами n_columns и types, вы получаете массив типов столбцов для этой модели (которая будет выставлена для родительской модели/вида). Параметры func, data и destroy для определения модифицирующей функции. Модифицирующая функция должна быть вызвана для каждого доступа к данным, цель модифицирующей функции в возвращении данных которые должны быть отображены в расположении определённом используя параметры модифицирующей функции.

filter :

GtkTreeModelFilter.

n_columns :

Количество столбцов в фильтруемой модели.

types :

GTypes столбцов.

func :

GtkTreeModelFilterModifyFunc

data :

Пользовательские данные помещаемые в модифицирующую функцию, или NULL.

destroy :

Разрушающее уведомление data, или NULL.

Начиная с версии 2.4


gtk_tree_model_filter_set_visible_column ()

void gtk_tree_model_filter_set_visible_column (GtkTreeModelFilter *filter, gint column);

Устанавливает column в значение столбца дочерней модели где filter должен искать информацию видимости. columns должен быть столбцом с типом G_TYPE_BOOLEAN, где TRUE означает что строка видима, а FALSE нет.

filter :

GtkTreeModelFilter.

column :

gint который обозначает столбец содержащий информацию видимости.

Начиная с версии 2.4


gtk_tree_model_filter_get_model ()

GtkTreeModel* gtk_tree_model_filter_get_model (GtkTreeModelFilter *filter);

Возвращает указатель для дочерней модели filter.

filter :

GtkTreeModelFilter.

Возвращает :

Указатель для GtkTreeModel.

Начиная с версии 2.4


gtk_tree_model_filter_convert_child_iter_to_iter ()

gboolean gtk_tree_model_filter_convert_child_iter_to_iter (GtkTreeModelFilter *filter, GtkTreeIter *filter_iter, GtkTreeIter *child_iter);

Устанавливает filter_iter указывающий строку в filter которая соответствует строке указанной в child_iter. Если filter_iter не установлен, возвращается FALSE.

filter :

GtkTreeModelFilter.

filter_iter :

Неинициализированный GtkTreeIter.

child_iter :

Допустимый GtkTreeIter указывающий строку в дочерней модели.

Возвращает :

TRUE, если filter_iter был установлен, то есть если child_iter доступный итератор указывающий видимую строку в дочерней модели.

Начиная с версии 2.4


gtk_tree_model_filter_convert_iter_to_child_iter ()

void gtk_tree_model_filter_convert_iter_to_child_iter (GtkTreeModelFilter *filter, GtkTreeIter *child_iter, GtkTreeIter *filter_iter);

Устанавливает child_iter указывающий строку указанную в filter_iter.

filter :

GtkTreeModelFilter.

child_iter :

Неинициализированный GtkTreeIter.

filter_iter :

Доступный GtkTreeIter указывающий строку в filter.

Начиная с версии 2.4


gtk_tree_model_filter_convert_child_path_to_path ()

GtkTreePath* gtk_tree_model_filter_convert_child_path_to_path (GtkTreeModelFilter *filter, GtkTreePath *child_path);

Преобразует child_path в путь соответствующий для filter. Таким образом, child_path указывает на путь в дочерней модели. Возвращаемый путь будет указывать такую же строку в фильтруемой модели. Если child_path недоступный путь в дочерней модели или указывает на строку которая невидима в filter, возвращается NULL.

filter :

GtkTreeModelFilter.

child_path :

GtkTreePath для преобразования.

Возвращает :

Вновь распределённый GtkTreePath, или NULL.

Начиная с версии 2.4


gtk_tree_model_filter_convert_path_to_child_path ()

GtkTreePath* gtk_tree_model_filter_convert_path_to_child_path (GtkTreeModelFilter *filter, GtkTreePath *filter_path);

Преобразует filter_path в путь дочерней модели filter. Таким образом, filter_path указывает размещение в filter. Возвращаемый путь указывает то же размещение в не фильтруемой модели. Если filter_path не указывает размещение в дочерней модели, возвращается NULL.

filter :

GtkTreeModelFilter.

filter_path :

GtkTreePath для преобразования.

Возвращает :

Вновь распределенный GtkTreePath, или NULL.

Начиная с версии 2.4


gtk_tree_model_filter_refilter ()

void        gtk_tree_model_filter_refilter  (GtkTreeModelFilter *filter);

Издаёт сигнал ::row_changed для каждой строки в дочерней модели, который заставляет фильтр переоценивать видима строка или нет.

filter :

GtkTreeModelFilter.

Начиная с версии 2.4


gtk_tree_model_filter_clear_cache ()

void gtk_tree_model_filter_clear_cache (GtkTreeModelFilter *filter);

Эта функция в основном не должна вызываться. Она очищает filter от любых кэшированных итераторов которые не были очищены с помощью gtk_tree_model_ref_node(). Это может быть полезно если дочерняя модель отфильтрована статично (не часто изменяется) и был длительный доступ к неочищенным узлам. Как побочный эффект этой функции, все неочищенные итераторы будут недоступны.

filter :

GtkTreeModelFilter.

Начиная с версии 2.4

Детали свойств

Свойство "child-model"

  "child-model"          GtkTreeModel          : Read / Write / Construct Only

Модель для фильтрации.


Свойство "virtual-root"

  "virtual-root"         GtkTreePath           : Read / Write / Construct Only

Виртуальный корень (относительно дочерней модели) для этой фильтруемой модели.

Смотрите также

GtkTreeModelSort