Spec-Zone.ru › GTK 3.22

GtkTreeModelSort

GtkTreeModelSort — Деревовидная модель Gtk, которая делает базовую модель дерева сортируемой

Функции

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 «изменён». В этом обратном вызове мы получаем строку из 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 to convert

Возвращает

Вновь выделенный 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 to convert

Возвращает

Вновь выделенный 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.22/GtkTreeModelSort.html

Spec-Zone.ru

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