Spec-Zone.ru › GTK 3.20

GtkTreeModelSort

GtkTreeModelSort — Класс GtkTreeModel, позволяющий сортировать базовый древовидный модель

Функции

GtkTreeModel * gtk_tree_model_sort_new_with_model ()
GtkTreeModel * gtk_tree_model_sort_get_model ()
GtkTreePath * gtk_tree_model_sort_convert_child_path_to-path ()
gboolean gtk_tree_model_sort_convert_child_iter_to-iter ()
GtkTreePath * gtk_tree_model_sort_convert_path_to-child-path ()
void gtk_tree_model_sort_convert_iter_to-child-iter ()
void gtk_tree_model_sort_reset_default_sort_func ()
void gtk_tree_model_sort_clear_cache ()
gboolean gtk_tree_model_sort_iter_is_valid ()

Свойства

GtkTreeModel * model Чтение / Запись / Только для создания

Типы и значения

struct GtkTreeModelSort

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

    GObject
    ╰── GtkTreeModelSort

Реализованные интерфейсы

GtkTreeModelSort реализует GtkTreeModel, GtkTreeSortable и GtkTreeDragSource.

Файлы

#include <gtk/gtk.h>

Описание

Модель GtkTreeModelSort реализует интерфейс GtkTreeSortable. Она не хранит данные сама по себе, а создается с помощью дочерней модели и делегирует обработку данных. Она имеет идентичные типы столбцов, что и дочерняя модель, и изменения в дочерней модели будут передаваться. Основное назначение этой модели — предоставить способ сортировки другой модели без ее модификации. Обратите внимание, что функция сортировки, используемая GtkTreeModelSort, не гарантирует стабильности.

Использование этой модели лучше всего продемонстрировать на примере. В следующем примере кода мы создаем два виджета GtkTreeView, каждый из которых отображает те же данные. Поскольку модель здесь обернута классом GtkTreeModelSort, два виджета GtkTreeView могут сортировать свои представления данных без влияния друг на друга. В противоположность этому, если мы просто поместим одну и ту же модель в каждый виджет, то сортировка первого виджета будет сортировать и второй.

Использование GtkTreeModelSort

Чтобы продемонстрировать, как получить доступ к базовой дочерней модели из модели сортировки, в следующем примере будет обработана функция обратного вызова сигнала GtkTreeSelection “changed”. В этом обратном вызове мы получаем строку из COLUMN_1 модели. Затем мы изменяем строку, находим ту же выбранную строку в дочерней модели и меняем ее там.

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

{
GtkTreeView*tree_view1;
GtkTreeView*tree_view2;
GtkTreeModel*sort_model1;
GtkTreeModel*sort_model2;
GtkTreeModel*child_model;

// get the child model
  child_model =get_my_model();

// Create the first tree
  sort_model1 =gtk_tree_model_sort_new_with_model(child_model);
  tree_view1 =gtk_tree_view_new_with_model(sort_model1);

// Create the second tree
  sort_model2 =gtk_tree_model_sort_new_with_model(child_model);
  tree_view2 =gtk_tree_view_new_with_model(sort_model2);

// Now we can sort the two models independently
gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(sort_model1),
                                        COLUMN_1, GTK_SORT_ASCENDING);
gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(sort_model2),
                                        COLUMN_1, GTK_SORT_DESCENDING);
}

Функции

gtk_tree_model_sort_new_with_model ()

GtkTreeModel *
gtk_tree_model_sort_new_with_model (GtkTreeModel *child_model);

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

Параметры

child_model

A GtkTreeModel

Возвращает

Новый GtkTreeModel.

[transfer full]

gtk_tree_model_sort_get_model ()

GtkTreeModel *
gtk_tree_model_sort_get_model (GtkTreeModelSort *tree_model);

Возвращает модель, по которой сортирует GtkTreeModelSort.

Параметры

tree_model

a GtkTreeModelSort

Возвращает

сортируемую "дочернюю модель".

[transfer none]

gtk_tree_model_sort_convert_child_path_to_path ()

GtkTreePath *
gtk_tree_model_sort_convert_child_path_to_path
                               (GtkTreeModelSort *tree_model_sort,
                                GtkTreePath *child_path);

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

Параметры

tree_model_sort

A GtkTreeModelSort

child_path

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

Возвращает

Новый выделенный GtkTreePath, или NULL.

[nullable][transfer full]

gtk_tree_model_sort_convert_child_iter-to-iter ()

gboolean
gtk_tree_model_sort_convert_child_iter_to_iter
                               (GtkTreeModelSort *tree_model_sort,
                                GtkTreeIter *sort_iter,
                                GtkTreeIter *child_iter);

Устанавливает sort_iter для указания строки в tree_model_sort, которая соответствует строке, указанной child_iter. Если sort_iter не была установлена, возвращается FALSE. Примечание: возвращается только булево значение с версии 2.14.

Параметры

tree_model_sort

A GtkTreeModelSort

sort_iter

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

[out]

child_iter

Действительный GtkTreeIter, указывающий на строку в модели дочернего объекта

Возвращает

TRUE, если sort_iter установлена, т.е. если sort_iter является корректным указателем итератора на видимую строку в дочерней модели.

gtk_tree_model_sort_convert_path-to-child-path ()

GtkTreePath *
gtk_tree_model_sort_convert_path_to_child_path
                               (GtkTreeModelSort *tree_model_sort,
                                GtkTreePath *sorted_path);

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

Параметры

tree_model_sort

A GtkTreeModelSort

sorted_path

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

Возвращает

Новый выделенный GtkTreePath, или NULL.

[nullable][transfer full]

gtk_tree_model_sort_convert_iter-to-child-iter ()

void
gtk_tree_model_sort_convert_iter_to_child_iter
                               (GtkTreeModelSort *tree_model_sort,
                                GtkTreeIter *child_iter,
                                GtkTreeIter *sorted_iter);

Устанавливает child_iter для указания строки, на которую указывает sorted_iter.

Параметры

tree_model_sort

A GtkTreeModelSort

child_iter

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

[out]

sorted_iter

Действительный GtkTreeIter, указывающий на строку в tree_model_sort.

gtk_tree_model-sort-reset-default-sort-func ()

void
gtk_tree_model_sort_reset_default_sort_func
                               (GtkTreeModelSort *tree_model_sort);

Сбрасывает функцию сортировки по умолчанию в состояние «не отсортировано». То есть, она будет в том же порядке, что и дочерняя модель. Она пересортирует модель, чтобы она была в том же порядке, что и дочерняя модель, только если GtkTreeModelSort находится в состоянии «не отсортировано».

Параметры

tree_model_sort

A GtkTreeModelSort

gtk_tree_model_sort_clear_cache ()

void
gtk_tree_model_sort_clear_cache (GtkTreeModelSort *tree_model_sort);

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

Параметры

tree_model_sort

A GtkTreeModelSort

gtk_tree_model_sort_iter_is_valid ()

gboolean
gtk_tree_model_sort_iter_is_valid (GtkTreeModelSort *tree_model_sort,
                                   GtkTreeIter *iter);

Эта функция медленная. Используйте её только для отладки и/или тестирования.

Проверяет, является ли заданный итератор допустимым для этого GtkTreeModelSort.

Параметры

tree_model_sort

Объект GtkTreeModelSort.

iter

Объект GtkTreeIter.

Возвращаемое значение

TRUE, если итератор корректен, FALSE, если итератор некорректен.

С версии: 2.2

Типы и значения

struct GtkTreeModelSort

struct GtkTreeModelSort;

Подробное описание свойств

Свойство “model”

  “model”                    GtkTreeModel *

Модель для сортировки в TreeModelSort.

Флаги: Чтение / Запись / Только для создания

См. также

GtkTreeModel, GtkListStore, GtkTreeStore, GtkTreeSortable, GtkTreeModelFilter

© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer.gnome.org/gtk3/3.20/GtkTreeModelSort.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API