| |
GTK+ Reference Manual |
||||
---|---|---|---|---|
Top | Description | Object Hierarchy | | Known Implementations | Signals |
GtkTreeSortableGtkTreeSortable Интерфейс для сортируемых моделей используемых виджетом GtkTreeView |
#include <gtk/gtk.h>
GtkTreeSortable;
GtkTreeSortableIface;
gint (*GtkTreeIterCompareFunc) (GtkTreeModel *model,
GtkTreeIter *a,
GtkTreeIter *b,
gpointer user_data);
void gtk_tree_sortable_sort_column_changed
(GtkTreeSortable *sortable);
gboolean gtk_tree_sortable_get_sort_column_id
(GtkTreeSortable *sortable,
gint *sort_column_id,
GtkSortType *order);
void gtk_tree_sortable_set_sort_column_id
(GtkTreeSortable *sortable,
gint sort_column_id,
GtkSortType order);
void gtk_tree_sortable_set_sort_func (GtkTreeSortable *sortable,
gint sort_column_id,
GtkTreeIterCompareFunc sort_func,
gpointer user_data,
GtkDestroyNotify destroy);
void gtk_tree_sortable_set_default_sort_func
(GtkTreeSortable *sortable,
GtkTreeIterCompareFunc sort_func,
gpointer user_data,
GtkDestroyNotify destroy);
gboolean gtk_tree_sortable_has_default_sort_func
(GtkTreeSortable *sortable);
GInterface +----GtkTreeSortable
GtkTreeSortable требует GtkTreeModel и GObject.
GtkTreeSortable осуществляется GtkTreeModelSort, GtkTreeStore и GtkListStore.
"sort-column-changed" void user_function (GtkTreeSortable *treesortable, gpointer user_data) : Run last
GtkTreeSortable это интерфейс для реализации древовидных моделей поддерживающих сортировку. GtkTreeView использует методы обеспечиваемые этим интерфейсом для сортировки моделей.
typedef struct _GtkTreeSortable GtkTreeSortable;
typedef struct {
GTypeInterface g_iface;
/* сигналы */
void (* sort_column_changed) (GtkTreeSortable *sortable);
/* виртуальная таблица */
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 func,
gpointer data,
GtkDestroyNotify destroy);
void (* set_default_sort_func) (GtkTreeSortable *sortable,
GtkTreeIterCompareFunc func,
gpointer data,
GtkDestroyNotify destroy);
gboolean (* has_default_sort_func) (GtkTreeSortable *sortable);
} GtkTreeSortableIface;
gint (*GtkTreeIterCompareFunc) (GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer user_data);
GtkTreeIterCompareFunc должна возвращать
отрицательное целое, ноль, или положительное
целое если a
находится перед
b
, a
равна b
,
или a
после b
соответственно. Если два сравниваемых
итератора эквивалентны, их порядок в
сортируемой модели не определён. Чтобы
гарантировать что GtkTreeSortable
ведёт себя как ожидается,
GtkTreeIterCompareFunc должен определить частичный
порядок в модели, то есть он должен быть
рефлексивный, антисимметричный и
транзитивный.
Например, если model
каталогизирует продукты, то когда функция
сравнения для столбца "price" должна
быть одним из возвращаемых price_of(
.
a
)
- price_of(b
)
|
GtkTreeModel в пределах которой сравнение |
|
GtkTreeIter в
|
|
Другой GtkTreeIter
в |
|
Данные помещаемые при назначении
функции сравнения, например
|
Возвращает : |
void gtk_tree_sortable_sort_column_changed (GtkTreeSortable *sortable);
Издаёт сигнал GtkTreeSortable::sort_column_changed
|
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
.
|
|
|
id сортируемого столбца |
|
GtkSortType для заполнения |
Возвращает : |
|
void gtk_tree_sortable_set_sort_column_id (GtkTreeSortable *sortable, gint sort_column_id, GtkSortType order);
Устанавливает текущий сортируемый
столбец в sort_column_id
. sortable
будет пересортирован непосредственно
для отражения этих изменений, после
издания сигнала GtkTreeSortable::sort_column_changed.
Если sort_column_id
это
GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID
, то когда
будет использована функция сортировки
по умолчанию, если она установлена.
|
|
|
Сортируемый столбец |
|
Порядок сортировки столбца |
void gtk_tree_sortable_set_sort_func (GtkTreeSortable *sortable, gint sort_column_id, GtkTreeIterCompareFunc sort_func, gpointer user_data, GtkDestroyNotify destroy);
Устанавливает функцию сравнения,
используемую при сортировки, в sort_func
.
Если текущий сортируемый столбец
sortable
это тоже самое что
sort_column_id
, то когда сортируемая
модель будет использовать эту функцию.
|
|
|
id сортируемого столбца для устанавливаемой функции |
|
Функция сравнения |
|
Пользовательские данные помещаемые
в |
|
Разрушающее уведомление |
void gtk_tree_sortable_set_default_sort_func (GtkTreeSortable *sortable, GtkTreeIterCompareFunc sort_func, gpointer user_data, GtkDestroyNotify destroy);
Устанавливает функцию сравнения по
умолчанию, используемую при сортировки,
в sort_func
. Если id текущемго
сортируемого столбца sortable
это GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID
, то когда
модель сортируется используя эту
функцию.
Если sort_func
равен NULL
,
то функция сравнения по умолчанию
отсутствует. Это значит что после
сортировки модели, она не может вернуть
в состояние по умолчанию. В этом случае,
когда id текущемго сортируемого столбца
sortable
равен
GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, модель будет не
сортирована.
|
|
|
Функция сравнения |
|
Пользовательские данные помещаемые
в |
|
Уведомление разрушения |
gboolean gtk_tree_sortable_has_default_sort_func (GtkTreeSortable *sortable);
Возвращает TRUE
если модель имеет функцию сортировки
по умолчанию. Это используется прежде
всего GtkTreeViewColumns, для определения может
ли модель возвращаться в состояние
значения по умолчанию или нет.
|
|
Возвращает : |
|
void user_function (GtkTreeSortable *treesortable, gpointer user_data) : Run last
|
Объект получающий сигнал. |
|
Пользовательские данные помещаемые при подключении обработчика сигнала. |
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |