Spec-Zone.ru › GTK 3.24

GtkTreeModelSort

GtkTreeModelSort — A GtkTreeModel which makes an underlying tree model sortable

Функции

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);

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

[конструктор]

Параметры

child_model

A GtkTreeModel

Возвращает

Новый GtkTreeModelSort.

[передача полная][тип Gtk.TreeModelSort]

gtk_tree_model_sort_get_model ()

GtkTreeModel *
gtk_tree_model_sort_get_model (GtkTreeModelSort *tree_model);

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

Параметры

tree_model

a GtkTreeModelSort

Возвращает

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

[передача нет]

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][передача полная]

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][передача полная]

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.

Владелец: GtkTreeModelSort

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

См. также

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.24/GtkTreeModelSort.html

Spec-Zone.ru

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