GTK+ Reference Manual |
||||
---|---|---|---|---|
Top | Description | Object Hierarchy | Implemented Interfaces | Properties |
GtkTreeModelFilterGtkTreeModelFilter 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 это модель дерева которая является оболочкой для другой модели дерева и может выполнять следующее:
Фильтровать определённые строки, основываясь на данных из "visible column", столбец хранящий логическое значение указывающее должны ли строки фильтроваться или нет, или основываясь на возвращаемом значении "visible function", которая получает модель, итератор, user_data и возвращает логическое значение должны ли строки фильтроваться или нет.
Изменять "внешность" модели, используя модифицирующую функцию. Это черезвычайно действенно и позволяет просто изменять некоторые значения, а так же создавать полностью разные модели основываясь на полученной дочерней модели.
Устанавливать разные корневые узлы, также известные как "virtual root". Вы можете передать в GtkTreePath указатель корневого узла для фильтрации во время конструирования.
typedef struct _GtkTreeModelFilter GtkTreeModelFilter;Структура GtkTreeModelFilter содержит только закрытые поля.
GtkTreeModelFilterVisibleFunc ()
gboolean (*GtkTreeModelFilterVisibleFunc) (GtkTreeModel *model, GtkTreeIter *iter, gpointer data);
Функция которая решает видима ли строка указанная
iter
.
|
Дочерняя модель GtkTreeModelFilter |
|
GtkTreeIter
указывающий на строку в |
|
Пользовательские данные для
|
Возвращает : |
Видима ли строка указанная параметром
|
void (*GtkTreeModelFilterModifyFunc) (GtkTreeModel *model,
GtkTreeIter *iter,
GValue *value,
gint column,
gpointer data);
Функция которая вычисляет отображаемое
значение из строки значений в модели.
Она должна заполнить value
отображаемым значением для столбца
column
в строке указанной
параметром iter
.
Так как эта функция вызывается для каждого доступа к данным, это не очень эффективная операция.
|
|
|
GtkTreeIter указывающий на строку которая определяет отображаемое значение |
|
GValue
инициализированный правильным типом
для столбца |
|
Столбец определяющий отображаемое значение |
|
Пользовательские данные для
|
GtkTreeModel* gtk_tree_model_filter_new (GtkTreeModel *child_model,
GtkTreePath *root);
Создаёт новый GtkTreeModel,
с child_model
как дочерней моделью
и root
как виртуальный корень.
|
|
|
GtkTreePath или
|
Возвращает : |
Новый GtkTreeModel. |
Начиная с версии 2.4
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()
для сохранения новейшей информации
видимости модели.
|
|
|
GtkTreeModelFilterVisibleFunc, функция видимости. |
|
Пользовательские данные помещаемые
в функцию видимости, или |
|
Разрушающее уведомление |
Начиная с версии 2.4
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
для определения модифицирующей функции.
Модифицирующая функция должна быть
вызвана для каждого доступа к данным,
цель модифицирующей функции в возвращении
данных которые должны быть отображены
в расположении определённом используя
параметры модифицирующей функции.
|
|
|
Количество столбцов в фильтруемой модели. |
|
GTypes столбцов. |
|
|
|
Пользовательские данные помещаемые
в модифицирующую функцию, или |
|
Разрушающее уведомление |
Начиная с версии 2.4
void gtk_tree_model_filter_set_visible_column
(GtkTreeModelFilter *filter,
gint column);
Устанавливает column
в значение
столбца дочерней модели где filter
должен искать информацию видимости.
columns
должен быть столбцом
с типом G_TYPE_BOOLEAN
,
где TRUE
означает что строка видима, а FALSE
нет.
|
|
|
gint который обозначает столбец содержащий информацию видимости. |
Начиная с версии 2.4
GtkTreeModel* gtk_tree_model_filter_get_model
(GtkTreeModelFilter *filter);
Возвращает указатель для дочерней
модели filter
.
|
|
Возвращает : |
Указатель для GtkTreeModel. |
Начиная с версии 2.4
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
.
|
|
|
Неинициализированный GtkTreeIter. |
|
Допустимый GtkTreeIter указывающий строку в дочерней модели. |
Возвращает : |
|
Начиная с версии 2.4
void gtk_tree_model_filter_convert_iter_to_child_iter
(GtkTreeModelFilter *filter,
GtkTreeIter *child_iter,
GtkTreeIter *filter_iter);
Устанавливает child_iter
указывающий строку указанную в
filter_iter
.
|
|
|
Неинициализированный GtkTreeIter. |
|
Доступный GtkTreeIter
указывающий строку в |
Начиная с версии 2.4
GtkTreePath* gtk_tree_model_filter_convert_child_path_to_path
(GtkTreeModelFilter *filter,
GtkTreePath *child_path);
Преобразует child_path
в путь
соответствующий для filter
.
Таким образом, child_path
указывает
на путь в дочерней модели. Возвращаемый
путь будет указывать такую же строку в
фильтруемой модели. Если child_path
недоступный путь в дочерней модели или
указывает на строку которая невидима
в filter
, возвращается NULL
.
|
|
|
GtkTreePath для преобразования. |
Возвращает : |
Вновь распределённый GtkTreePath,
или |
Начиная с версии 2.4
GtkTreePath* gtk_tree_model_filter_convert_path_to_child_path
(GtkTreeModelFilter *filter,
GtkTreePath *filter_path);
Преобразует filter_path
в путь
дочерней модели filter
. Таким
образом, filter_path
указывает
размещение в filter
. Возвращаемый
путь указывает то же размещение в не
фильтруемой модели. Если filter_path
не указывает размещение в дочерней
модели, возвращается NULL
.
|
|
|
GtkTreePath для преобразования. |
Возвращает : |
Вновь распределенный GtkTreePath,
или |
Начиная с версии 2.4
void gtk_tree_model_filter_refilter (GtkTreeModelFilter *filter);Издаёт сигнал ::row_changed для каждой строки в дочерней модели, который заставляет фильтр переоценивать видима строка или нет.
|
Начиная с версии 2.4
void gtk_tree_model_filter_clear_cache
(GtkTreeModelFilter *filter);
Эта функция в основном не должна
вызываться. Она очищает filter
от любых кэшированных итераторов которые
не были очищены с помощью
gtk_tree_model_ref_node()
.
Это может быть полезно если дочерняя
модель отфильтрована статично (не часто
изменяется) и был длительный доступ к
неочищенным узлам. Как побочный эффект
этой функции, все неочищенные итераторы
будут недоступны.
|
Начиная с версии 2.4
child-model
""child-model" GtkTreeModel : Read / Write / Construct OnlyМодель для фильтрации.
Свойство "
virtual-root
""virtual-root" GtkTreePath : Read / Write / Construct OnlyВиртуальный корень (относительно дочерней модели) для этой фильтруемой модели.
Смотрите также