| GTK+ Reference Manual | ||||
|---|---|---|---|---|
#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);
GtkTreeSortable is implemented by GtkTreeModelSort, GtkTreeStore and GtkListStore.
"sort-column-changed"void user_function (GtkTreeSortable *treesortable,gpointer user_data) : Run last
GtkTreeSortable is an interface to be implemented by tree models which support sorting. The GtkTreeView uses the methods provided by this interface to sort the model.
typedef struct {
GTypeInterface g_iface;
/* 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 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);
A GtkTreeIterCompareFunc should return a negative integer, zero, or a positive
integer if a sorts before b, a sorts with b, or a sorts after b
respectively. If two iters compare as equal, their order in the sorted model
is undefined. In order to ensure that the GtkTreeSortable behaves as
expected, the GtkTreeIterCompareFunc must define a partial order on
the model, i.e. it must be reflexive, antisymmetric and transitive.
For example, if model is a product catalogue, then a compare function
for the "price" column could be one which returns
price_of(.
a) - price_of(b)
model : |
The GtkTreeModel the comparison is within |
a : |
A GtkTreeIter in model
|
b : |
Another GtkTreeIter in model
|
user_data : |
Data passed when the compare func is assigned e.g. by
gtk_tree_sortable_set_sort_func()
|
| Returns : |
void gtk_tree_sortable_sort_column_changed (GtkTreeSortable *sortable);
Emits a GtkTreeSortable::sort_column_changed signal on
sortable : |
A GtkTreeSortable |
gboolean gtk_tree_sortable_get_sort_column_id (GtkTreeSortable *sortable,gint *sort_column_id, GtkSortType *order);
Fills in sort_column_id and order with the current sort column and the
order. It returns TRUEsort_column_id is
GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_IDGTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID
sortable : |
A GtkTreeSortable |
sort_column_id : |
The sort column id to be filled in |
order : |
The GtkSortType to be filled in |
| Returns : | TRUE |
void gtk_tree_sortable_set_sort_column_id (GtkTreeSortable *sortable,gint sort_column_id, GtkSortType order);
Sets the current sort column to be sort_column_id. The sortable will
resort itself to reflect this change, after emitting a
GtkTreeSortable::sort_column_changed signal. If sort_column_id is
GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID
sortable : |
A GtkTreeSortable |
sort_column_id : |
the sort column id to set |
order : |
The sort order of the column |
void gtk_tree_sortable_set_sort_func (GtkTreeSortable *sortable,gint sort_column_id, GtkTreeIterCompareFunc sort_func,gpointer user_data, GtkDestroyNotify destroy);
Sets the comparison function used when sorting to be sort_func. If the
current sort column id of sortable is the same as sort_column_id, then the
model will sort using this function.
sortable : |
A GtkTreeSortable |
sort_column_id : |
the sort column id to set the function for |
sort_func : |
The comparison function |
user_data : |
User data to pass to sort_func, or NULL |
destroy : |
Destroy notifier of user_data, or NULL |
void gtk_tree_sortable_set_default_sort_func (GtkTreeSortable *sortable, GtkTreeIterCompareFunc sort_func,gpointer user_data, GtkDestroyNotify destroy);
Sets the default comparison function used when sorting to be sort_func.
If the current sort column id of sortable is
GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID
If sort_func is NULLsortable is
GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, the model will be unsorted.
sortable : |
A GtkTreeSortable |
sort_func : |
The comparison function |
user_data : |
User data to pass to sort_func, or NULL |
destroy : |
Destroy notifier of user_data, or NULL |
gboolean gtk_tree_sortable_has_default_sort_func (GtkTreeSortable *sortable);
Returns TRUE
sortable : |
A GtkTreeSortable |
| Returns : | TRUE |
void user_function (GtkTreeSortable *treesortable,gpointer user_data) : Run last
treesortable : |
the object which received the signal. |
user_data : |
user data set when the signal handler was connected. |