| 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.
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 |
::sort-column-changed signalvoid 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. |