Spec-Zone.ru › GTK 3.24

GtkTreeSortable

GtkTreeSortable — Интерфейс для сортируемых моделей, используемых GtkTreeView

Функции

gint (*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 Run Last

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

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

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 в 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,
                                      gint *sort_column_id,
                                      GtkSortType *order);

Заполняет sort_column_id и order текущим столбцом сортировки и порядком. Возвращает TRUE, если столбец сортировки не является одним из специальных идентификаторов.

Параметры

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 . sortable пересортирует себя, чтобы отразить это изменение, после издания сигнала «sort-column-changed». sort_column_id может быть либо обычным идентификатором столбца, либо одним из следующих специальных значений:

  • 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

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

[allow-none]

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

A GtkTreeSortable

sort_func

Функция сравнения

user_data

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

[allow-none]

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,
				      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);
};

Члены

sort_column_changed ()

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

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_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

См. также

GtkTreeModel, GtkTreeView

© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer.gnome.org/gtk3/3.24/GtkTreeSortable.html

Spec-Zone.ru

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