Prev

Up

Home

GTK+ Reference Manual

Next

Top  |  Description  |  Object Hierarchy  |   |  Known Implementations  |  Signals

GtkTreeSortable

GtkTreeSortable Интерфейс для сортируемых моделей используемых виджетом GtkTreeView

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

#include <gtk/gtk.h> GtkTreeSortable; GtkTreeSortableIface; gint (*GtkTreeIterCompareFunc) (GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer user_data); void gtk_tree_sortable_sort_column_changed (GtkTreeSortable *sortable); gboolean gtk_tree_sortable_get_sort_column_id (GtkTreeSortable *sortable, gint *sort_column_id, GtkSortType *order); void gtk_tree_sortable_set_sort_column_id (GtkTreeSortable *sortable, gint sort_column_id, GtkSortType order); void gtk_tree_sortable_set_sort_func (GtkTreeSortable *sortable, gint sort_column_id, GtkTreeIterCompareFunc sort_func, gpointer user_data, GtkDestroyNotify destroy); void gtk_tree_sortable_set_default_sort_func (GtkTreeSortable *sortable, GtkTreeIterCompareFunc sort_func, gpointer user_data, GtkDestroyNotify destroy); gboolean gtk_tree_sortable_has_default_sort_func (GtkTreeSortable *sortable);

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

GInterface +----GtkTreeSortable

Предварительные условия

GtkTreeSortable требует GtkTreeModel и GObject.

Известные реализации

GtkTreeSortable осуществляется GtkTreeModelSort, GtkTreeStore и GtkListStore.

Сигналы

"sort-column-changed" void user_function (GtkTreeSortable *treesortable, gpointer user_data) : Run last

Описание

GtkTreeSortable это интерфейс для реализации древовидных моделей поддерживающих сортировку. GtkTreeView использует методы обеспечиваемые этим интерфейсом для сортировки моделей.

Детали

GtkTreeSortable

typedef struct _GtkTreeSortable GtkTreeSortable;

GtkTreeSortableIface

typedef struct { GTypeInterface g_iface; /* сигналы */ void (* sort_column_changed) (GtkTreeSortable *sortable); /* виртуальная таблица */ gboolean (* get_sort_column_id) (GtkTreeSortable *sortable, gint *sort_column_id, GtkSortType *order); void (* set_sort_column_id) (GtkTreeSortable *sortable, gint sort_column_id, GtkSortType order); void (* set_sort_func) (GtkTreeSortable *sortable, gint sort_column_id, GtkTreeIterCompareFunc func, gpointer data, GtkDestroyNotify destroy); void (* set_default_sort_func) (GtkTreeSortable *sortable, GtkTreeIterCompareFunc func, gpointer data, GtkDestroyNotify destroy); gboolean (* has_default_sort_func) (GtkTreeSortable *sortable); } GtkTreeSortableIface;

GtkTreeIterCompareFunc ()

gint (*GtkTreeIterCompareFunc) (GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer user_data);

GtkTreeIterCompareFunc должна возвращать отрицательное целое, ноль, или положительное целое если a находится перед b, a равна b, или a после b соответственно. Если два сравниваемых итератора эквивалентны, их порядок в сортируемой модели не определён. Чтобы гарантировать что GtkTreeSortable ведёт себя как ожидается, GtkTreeIterCompareFunc должен определить частичный порядок в модели, то есть он должен быть рефлексивный, антисимметричный и транзитивный.

Например, если model каталогизирует продукты, то когда функция сравнения для столбца "price" должна быть одним из возвращаемых price_of(a) - price_of(b).

model :

GtkTreeModel в пределах которой сравнение

a :

GtkTreeIter в model

b :

Другой GtkTreeIter в model

user_data :

Данные помещаемые при назначении функции сравнения, например gtk_tree_sortable_set_sort_func()

Возвращает :


gtk_tree_sortable_sort_column_changed ()

void gtk_tree_sortable_sort_column_changed (GtkTreeSortable *sortable);

Издаёт сигнал GtkTreeSortable::sort_column_changed

sortable :

GtkTreeSortable


gtk_tree_sortable_get_sort_column_id ()

gboolean gtk_tree_sortable_get_sort_column_id (GtkTreeSortable *sortable, gint *sort_column_id, GtkSortType *order);

Заполняет sort_column_id и order текущим сортируемым столбцом и порядком сортировки. Возвращает TRUE если sort_column_id это не GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID или GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID.

sortable :

GtkTreeSortable

sort_column_id :

id сортируемого столбца

order :

GtkSortType для заполнения

Возвращает :

TRUE если сортируемый столбец не один из специальных видов сортируемых столбцов.


gtk_tree_sortable_set_sort_column_id ()

void gtk_tree_sortable_set_sort_column_id (GtkTreeSortable *sortable, gint sort_column_id, GtkSortType order);

Устанавливает текущий сортируемый столбец в sort_column_id. sortable будет пересортирован непосредственно для отражения этих изменений, после издания сигнала GtkTreeSortable::sort_column_changed. Если sort_column_id это GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, то когда будет использована функция сортировки по умолчанию, если она установлена.

sortable :

GtkTreeSortable

sort_column_id :

Сортируемый столбец

order :

Порядок сортировки столбца


gtk_tree_sortable_set_sort_func ()

void gtk_tree_sortable_set_sort_func (GtkTreeSortable *sortable, gint sort_column_id, GtkTreeIterCompareFunc sort_func, gpointer user_data, GtkDestroyNotify destroy);

Устанавливает функцию сравнения, используемую при сортировки, в sort_func. Если текущий сортируемый столбец sortable это тоже самое что sort_column_id, то когда сортируемая модель будет использовать эту функцию.

sortable :

GtkTreeSortable

sort_column_id :

id сортируемого столбца для устанавливаемой функции

sort_func :

Функция сравнения

user_data :

Пользовательские данные помещаемые в sort_func, или NULL

destroy :

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


gtk_tree_sortable_set_default_sort_func ()

void gtk_tree_sortable_set_default_sort_func (GtkTreeSortable *sortable, GtkTreeIterCompareFunc sort_func, gpointer user_data, GtkDestroyNotify destroy);

Устанавливает функцию сравнения по умолчанию, используемую при сортировки, в sort_func. Если id текущемго сортируемого столбца sortable это GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, то когда модель сортируется используя эту функцию.

Если sort_func равен NULL, то функция сравнения по умолчанию отсутствует. Это значит что после сортировки модели, она не может вернуть в состояние по умолчанию. В этом случае, когда id текущемго сортируемого столбца sortable равен GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, модель будет не сортирована.

sortable :

GtkTreeSortable

sort_func :

Функция сравнения

user_data :

Пользовательские данные помещаемые в sort_func, или NULL

destroy :

Уведомление разрушения user_data, или NULL


gtk_tree_sortable_has_default_sort_func ()

gboolean gtk_tree_sortable_has_default_sort_func (GtkTreeSortable *sortable);

Возвращает TRUE если модель имеет функцию сортировки по умолчанию. Это используется прежде всего GtkTreeViewColumns, для определения может ли модель возвращаться в состояние значения по умолчанию или нет.

sortable :

GtkTreeSortable

Возвращает :

TRUE, если модель имеет функцию сортировки по умолчанию

Детали сигнала

Сигнал "sort-column-changed"

void user_function (GtkTreeSortable *treesortable, gpointer user_data) : Run last

treesortable :

Объект получающий сигнал.

user_data :

Пользовательские данные помещаемые при подключении обработчика сигнала.

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

GtkTreeModel, GtkTreeView