GtkTreeSortable
GtkTreeSortable — Интерфейс для сортируемых моделей, используемых GtkTreeView
Функции
| gint | (*GtkTreeIterCompareFunc) () |
| void | gtk_tree_sortable_sort_column_changed () |
| gboolean | gtk_tree_sortable_get_sort_column_id () |
| void | gtk_tree_sortable_set_sort_column_id () |
| void | gtk_tree_sortable_set_sort_func () |
| void | gtk_tree_sortable_set_default_sort_func () |
| gboolean | gtk_tree_sortable_has_default_sort_func () |
Сигналы
| void | sort-column-changed | Run Last |
Типы и значения
Иерархия объектов
GInterface ╰── GtkTreeSortable
Предварительные условия
GtkTreeSortable требует GtkTreeModel и GObject.
Известные реализации
GtkTreeSortable реализован в GtkListStore, GtkTreeModelSort и GtkTreeStore.
Включения
#include <gtk/gtk.h>
Описание
GtkTreeSortable — интерфейс, который должны реализовывать модели деревьев, поддерживающие сортировку. GtkTreeView использует методы, предоставляемые этим интерфейсом, для сортировки модели.
Функции
GtkTreeIterCompareFunc ()
gint (*GtkTreeIterCompareFunc) (GtkTreeModel *model,GtkTreeIter *a,GtkTreeIter *b,gpointer user_data);
Функция GtkTreeIterCompareFunc должна возвращать отрицательное целое число, ноль или положительное целое число, если a сортируется перед b , a сортируется вместе с b , или a сортируется после b соответственно. Если два итератора сравниваются как равные, их порядок в отсортированной модели не определён. Чтобы гарантировать, что GtkTreeSortable работает как ожидается, GtkTreeIterCompareFunc должна определять частичный порядок в модели, т.е. она должна быть рефлексивной, антисимметричной и транзитивной.
Например, если model — это каталог продуктов, то функция сравнения для столбца «цена» могла бы возвращать price_of(@a) - price_of(@b).
Параметры
model | Модель GtkTreeModel, в рамках которой производится сравнение | |
a | Итератор GtkTreeIter в | |
b | Другой итератор GtkTreeIter в | |
user_data | Данные, переданные при назначении функции сравнения, например, функцией |
Возвращаемое значение
Отрицательное целое число, ноль или положительное целое число, в зависимости от того, сортируется ли a перед, вместе с или после b
gtk_tree_sortable_sort_column_changed ()
void
gtk_tree_sortable_sort_column_changed (GtkTreeSortable *sortable); Издаёт сигнал «sort-column-changed» на sortable .
Параметры
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, если столбец сортировки не является одним из специальных идентификаторов.
Параметры
sortable | Объект GtkTreeSortable | |
sort_column_id | Идентификатор столбца сортировки для заполнения. | [out] |
order | Тип сортировки GtkSortType для заполнения. | [out] |
Возвращаемое значение
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 пересортирует себя, чтобы отразить это изменение, после издания сигнала «sort-column-changed». sort_column_id может быть либо обычным идентификатором столбца, либо одним из следующих специальных значений:
GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID: будет использоваться функция сортировки по умолчанию, если она установленаGTK_TREE_SORTABLE_UNSORTED_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,GDestroyNotify destroy);
Устанавливает функцию сравнения, используемую при сортировке, на sort_func . Если текущий идентификатор столбца сортировки sortable совпадает с sort_column_id , то модель будет отсортирована с помощью этой функции.
Параметры
sortable | Объект GtkTreeSortable | |
sort_column_id | идентификатор столбца сортировки, для которого устанавливается функция | |
sort_func | Функция сравнения | |
user_data | Данные пользователя, передаваемые в | [allow-none] |
destroy | Функция-уничтожитель для | [allow-none] |
gtk_tree_sortable_set_default_sort_func ()
void gtk_tree_sortable_set_default_sort_func (GtkTreeSortable *sortable,GtkTreeIterCompareFunc sort_func,gpointer user_data,GDestroyNotify destroy);
Устанавливает функцию сравнения по умолчанию, используемую при сортировке, на sort_func. Если текущий идентификатор столбца сортировки sortable равен GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, то модель будет отсортирована с использованием этой функции.
Если sort_func имеет значение NULL, то функция сравнения по умолчанию не будет установлена. Это означает, что после сортировки модели нельзя будет вернуться к исходному состоянию. В этом случае, когда текущий идентификатор столбца сортировки sortable равен GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, модель будет не отсортирована.
Параметры
sortable | ||
sort_func | Функция сравнения | |
user_data | Данные пользователя, передаваемые в | [allow-none] |
destroy | Функция удаления | [allow-none] |
gtk_tree_sortable_has_default_sort_func ()
gboolean
gtk_tree_sortable_has_default_sort_func
(GtkTreeSortable *sortable); Возвращает TRUE, если модель имеет функцию сортировки по умолчанию. Это используется в основном GtkTreeViewColumns для определения, может ли модель вернуться к исходному состоянию или нет.
Параметры
sortable |
Возвращает
TRUE, если модель имеет функцию сортировки по умолчанию
Типы и значения
GtkTreeSortable
typedef struct _GtkTreeSortable GtkTreeSortable;
struct GtkTreeSortableIface
struct GtkTreeSortableIface {
/* signals */
void (* sort_column_changed) (GtkTreeSortable *sortable);
/* virtual table */
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 sort_func,
gpointer user_data,
GDestroyNotify destroy);
void (* set_default_sort_func) (GtkTreeSortable *sortable,
GtkTreeIterCompareFunc sort_func,
gpointer user_data,
GDestroyNotify destroy);
gboolean (* has_default_sort_func) (GtkTreeSortable *sortable);
};
Члены
| Сигнал, генерируемый при изменении столбца сортировки или порядка сортировки sortable. | |
| Заполняет sort_column_id и order текущим столбцом сортировки и порядком. | |
| Устанавливает текущий столбец сортировки в sort_column_id. | |
| Устанавливает функцию сравнения, используемую при сортировке, в sort_func. | |
| Устанавливает функцию сравнения по умолчанию, используемую при сортировке, в sort_func. | |
|
|
GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID
#define GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID (-1)
GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID может быть использован для того, чтобы сделать GtkTreeSortable использует функцию сортировки по умолчанию.
См. также gtk_tree_sortable_set_sort_column_id()
GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID
#define GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID (-2)
GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID может быть использован для того, чтобы сделать GtkTreeSortable не использовать сортировку.
См. также gtk_tree_sortable_set_sort_column_id()
Подробности сигнала
Сигнал “sort-column-changed”
void user_function (GtkTreeSortable *sortable, gpointer user_data)
Сигнал ::sort-column-changed генерируется при изменении столбца сортировки или порядка сортировки sortable. Сигнал генерируется до того, как содержимое sortable будет отсортировано.
Параметры
sortable | объект, на котором генерируется сигнал | |
user_data | данные пользователя, установленные при подключении обработчика сигнала. |
Флаги: Run Last
См. также
© 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/GtkTreeSortable.html