GtkSorter
GtkSorter — Сортировка элементов
Функции
Сигналы
| void | changed | Run Last |
Типы и значения
| GtkSorter | |
| перечисление | GtkSorterOrder |
| перечисление | GtkSorterChange |
Иерархия объектов
GObject
╰── GtkSorter
├── GtkCustomSorter
├── GtkMultiSorter
├── GtkNumericSorter
├── GtkStringSorter
╰── GtkTreeListRowSorter
Файлы заголовков
#include <gtk/gtk.h>
Описание
GtkSorter описывает критерии сортировки. Его основной пользователь — GtkSortListModel.
Модель будет использовать сортировщик для определения порядка отображения элементов, вызывая gtk_sorter_compare() для пар элементов.
Сортировщики могут изменять своё поведение в течение своего жизненного цикла. В этом случае они будут излучать сигнал «changed» для уведомления о том, что порядок сортировки больше недействителен, и следует обновить его, вызвав gtk_sorter_compare() снова.
GTK предоставляет различные готовые реализации сортировщиков для распространённых операций сортировки. GtkColumnView имеет встроенную поддержку сортировки списков через свойство «sorter», где пользователь может изменить сортировку, нажав на заголовки столбцов.
Конечно, особенно для больших списков, можно также подклассировать GtkSorter и предоставить собственный сортировщик.
Функции
gtk_sorter_compare ()
GtkOrdering gtk_sorter_compare (GtkSorter *self,gpointer item1,gpointer item2);
Сравнивает два заданных элемента в соответствии с порядком сортировки, реализованным сортировщиком.
Сортировщики реализуют частичный порядок:
Он рефлексивен, т.е. a = a
Он антисимметричен, т.е. если a < b и b < a, то a = b
Он транзитивен, т.е. для любых 3 элементов, если a ≤ b и b ≤ c, то a ≤ c
Сортировщик может сигнализировать о соответствии дополнительным ограничениям через возвращаемое значение gtk_sorter_get_order().
Параметры
self | ||
item1 | первый элемент для сравнения. | [type GObject][transfer none] |
item2 | второй элемент для сравнения. | [type GObject][transfer none] |
Возвращаемое значение
GTK_ORDERING_EQUAL, если item1 равно item2, GTK_ORDERING_SMALLER, если item1 < item2, GTK_ORDERING_LARGER, если item1 > item2
gtk_sorter_get_order ()
GtkSorterOrder
gtk_sorter_get_order (GtkSorter *self); Получает порядок, которому соответствует self. См. GtkSorterOrder для получения подробной информации о возможных возвращаемых значениях.
Эта функция предназначена для оптимизации.
Параметры
self |
Возвращаемое значение
Порядок
gtk_sorter_changed ()
void gtk_sorter_changed (GtkSorter *self,GtkSorterChange change);
Излучает сигнал «changed» для уведомления всех пользователей сортировщика о том, что он изменился. Пользователи сортировщика должны затем обновить порядок сортировки с помощью gtk_sorter_compare().
В зависимости от параметра change, может быть возможно обновить порядок сортировки без полной сортировки. Обратитесь к документации GtkSorterChange для получения подробностей.
Эта функция предназначена для разработчиков подклассов GtkSorter и не должна вызываться из других функций.
Параметры
self | ||
change | Как изменился сортировщик |
Типы и значения
GtkSorter
typedef struct _GtkSorter GtkSorter;
перечисление GtkSorterOrder
Описывает тип порядка, который может описать GtkSorter.
Члены
GTK_SORTER_ORDER_PARTIAL | Частичный порядок. Любой GtkOrdering возможен. | |
GTK_SORTER_ORDER_NONE | Отсутствие порядка, все элементы считаются равными. | |
GTK_SORTER_ORDER_TOTAL | Полный порядок. |
перечисление GtkSorterChange
Более подробно описывает изменения в сортировщике и позволяет пользователям оптимизировать повторную сортировку.
Члены
GTK_SORTER_CHANGE_DIFFERENT | Изменение сортировщика не может быть описано ни одним из других значений перечисления | |
GTK_SORTER_CHANGE_INVERTED | Порядок сортировки был изменен на обратный. Сравнения, возвращавшие | |
GTK_SORTER_CHANGE_LESS_STRICT | Сортировщик стал менее строгим: сравнения теперь могут возвращать | |
GTK_SORTER_CHANGE_MORE_STRICT | Сортировщик стал более строгим: сравнения, которые раньше возвращали |
Подробности сигналов
Сигнал “changed”
void user_function (GtkSorter *self, GtkSorterChange change, gpointer user_data)
Этот сигнал испускается всякий раз, когда сортировщик меняется. Пользователи сортировщика должны затем обновить порядок сортировки снова с помощью gtk_sorter_compare().
GtkSortListModel обрабатывает этот сигнал автоматически.
В зависимости от параметра change, может быть возможно обновить порядок сортировки без полной пересортировки. Подробности см. в документации к GtkSorterChange.
Параметры
self | The GtkSorter | |
change | как изменился сортировщик | |
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/GtkSorter.html