GtkTreeSortable
GtkTreeSortable — Интерфейс сортируемых моделей, используемых GtkTreeView
Функции
| int | (*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 | Выполнить в последнюю очередь |
Типы и значения
Иерархия объектов
GInterface ╰── GtkTreeSortable
Предварительные условия
GtkTreeSortable требует GtkTreeModel и GObject.
Известные реализации
GtkTreeSortable реализован в GtkListStore, GtkTreeModelSort и GtkTreeStore.
Включаемые файлы
#include <gtk/gtk.h>
Описание
GtkTreeSortable — это интерфейс, который необходимо реализовать для моделей дерева, которые поддерживают сортировку. GtkTreeView использует методы, предоставляемые этим интерфейсом, для сортировки модели.
Функции
GtkTreeIterCompareFunc ()
int (*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,int *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,int 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,int 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 | Данные пользователя для передачи в | [closure] |
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 | Объект GtkTreeSortable | |
sort_func | Функция сравнения | |
user_data | Данные пользователя для передачи в | [closure] |
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,
int *sort_column_id,
GtkSortType *order);
void (* set_sort_column_id) (GtkTreeSortable *sortable,
int sort_column_id,
GtkSortType order);
void (* set_sort_func) (GtkTreeSortable *sortable,
int 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);
};
Члены
| Сигнал, генерируемый при изменении столбца сортировки или порядка сортировки сортируемой модели. | |
| Заполняет 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_UNSORTED_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-old.gnome.org/gtk4/4.0/GtkTreeSortable.html