GtkTreeSortable
GtkTreeSortable — Интерфейс сортируемых моделей, используемых GtkTreeView
Функции
Сигналы
Типы и значения
Иерархия объектов
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, если sort_column_id не является GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID или GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID.
Параметры
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. Модель пересортирует себя, чтобы отразить это изменение, после вызова сигнала «sort-column-changed». sortable может быть обычным идентификатором столбца или одним из следующих специальных значений:
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, модель будет не отсортирована.
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.22/GtkTreeSortable.html