Spec-Zone.ru › GTK 4.0

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 Выполнить в последнюю очередь

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

GtkTreeSortable
struct GtkTreeSortableIface
#define GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID
#define GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID

Иерархия объектов

    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 в model

b

Другой итератор GtkTreeIter в model

user_data

Данные, переданные при назначении функции сравнения, например, с помощью gtk_tree_sortable_set_sort_func()

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

отрицательное целое число, ноль или положительное целое число в зависимости от того, сортируется ли 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

Данные пользователя для передачи в sort_func, или NULL.

[closure]

destroy

Обработчик уничтожения user_data, или NULL.

[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

Данные пользователя для передачи в sort_func, или NULL.

[closure]

destroy

Обработчик уничтожения user_data, или NULL.

[allow-none]

gtk_tree_sortable_has-default-sort-func ()

gboolean
gtk_tree_sortable_has_default_sort_func
                               (GtkTreeSortable *sortable);

Возвращает TRUE, если модель имеет функцию сортировки по умолчанию. Это используется в основном GtkTreeViewColumns для определения, может ли модель вернуться к исходному состоянию или нет.

Параметры

sortable

A GtkTreeSortable

Возвращает

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_changed ()

Сигнал, генерируемый при изменении столбца сортировки или порядка сортировки сортируемой модели.

get_sort_column_id ()

Заполняет sort_column_id и order текущим столбцом сортировки и порядком.

set_sort_column_id ()

Устанавливает текущий столбец сортировки как sort_column_id.

set_sort_func ()

Устанавливает функцию сравнения, используемую при сортировке, как sort_func.

set_default_sort_func ()

Устанавливает функцию сравнения по умолчанию, используемую при сортировке, как sort_func.

has_default_sort_func ()

Возвращает TRUE, если модель имеет функцию сортировки по умолчанию.

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

См. также

GtkTreeModel, GtkTreeView

© 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

Spec-Zone.ru

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