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;
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
|
Объект получающий сигнал. |
|
Пользовательские данные помещаемые при подключении обработчика сигнала. |