|
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
+----GtkTreeSortableGtkTreeSortable требует GtkTreeModel и GObject.
GtkTreeSortable осуществляется GtkTreeModelSort, GtkTreeStore и GtkListStore.
"sort-column-changed"
void user_function (GtkTreeSortable *treesortable,
gpointer user_data) : Run lastGtkTreeSortable это интерфейс для реализации древовидных моделей поддерживающих сортировку. GtkTreeView использует методы обеспечиваемые этим интерфейсом для сортировки моделей.
typedef struct _GtkTreeSortable GtkTreeSortable;
GtkTreeSortableIface
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;
GtkTreeIterCompareFunc ()
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
|
|
Объект получающий сигнал. |
|
|
Пользовательские данные помещаемые при подключении обработчика сигнала. |