Spec-Zone.ru › GTK 4.0

GtkSorter

GtkSorter — Сортировка элементов

Функции

GtkOrdering gtk_sorter_compare ()
GtkSorterOrder gtk_sorter_get_order ()
void gtk_sorter_changed ()

Сигналы

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

a GtkSorter

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

a GtkSorter

Возвращаемое значение

Порядок

gtk_sorter_changed ()

void
gtk_sorter_changed (GtkSorter *self,
                    GtkSorterChange change);

Излучает сигнал «changed» для уведомления всех пользователей сортировщика о том, что он изменился. Пользователи сортировщика должны затем обновить порядок сортировки с помощью gtk_sorter_compare().

В зависимости от параметра change, может быть возможно обновить порядок сортировки без полной сортировки. Обратитесь к документации GtkSorterChange для получения подробностей.

Эта функция предназначена для разработчиков подклассов GtkSorter и не должна вызываться из других функций.

Параметры

self

a GtkSorter

change

Как изменился сортировщик

Типы и значения

GtkSorter

typedef struct _GtkSorter GtkSorter;

перечисление GtkSorterOrder

Описывает тип порядка, который может описать GtkSorter.

Члены

GTK_SORTER_ORDER_PARTIAL

Частичный порядок. Любой GtkOrdering возможен.

GTK_SORTER_ORDER_NONE

Отсутствие порядка, все элементы считаются равными. gtk_sorter_compare() будет возвращать только GTK_ORDERING_EQUAL.

GTK_SORTER_ORDER_TOTAL

Полный порядок. gtk_sorter_compare() будет возвращать только GTK_ORDERING_EQUAL, если элемент сравнивается с самим собой. Два разных элемента никогда не приведут к возвращению этого значения.

перечисление GtkSorterChange

Более подробно описывает изменения в сортировщике и позволяет пользователям оптимизировать повторную сортировку.

Члены

GTK_SORTER_CHANGE_DIFFERENT

Изменение сортировщика не может быть описано ни одним из других значений перечисления

GTK_SORTER_CHANGE_INVERTED

Порядок сортировки был изменен на обратный. Сравнения, возвращавшие GTK_ORDERING_SMALLER, теперь возвращают GTK_ORDERING_LARGER, и наоборот. Другие сравнения возвращают те же значения, что и раньше.

GTK_SORTER_CHANGE_LESS_STRICT

Сортировщик стал менее строгим: сравнения теперь могут возвращать GTK_ORDERING_EQUAL, что раньше не происходило.

GTK_SORTER_CHANGE_MORE_STRICT

Сортировщик стал более строгим: сравнения, которые раньше возвращали GTK_ORDERING_EQUAL, возможно, больше не будут этого делать.

Подробности сигналов

Сигнал “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

См. также

GtkSortListModel

© 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

END_OF_DOCUMENT_MARKER

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API