Spec-Zone.ru › GTK 3.22

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, если 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,
                                      gint 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,
                                 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.22/GtkTreeSortable.html

Spec-Zone.ru

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