+
+static gint
+unsorted (GtkTreeModel *model,
+ GtkTreeIter *a,
+ GtkTreeIter *b,
+ gpointer user_data)
+{
+ const struct variable *var_a;
+ const struct variable *var_b;
+
+
+ gtk_tree_model_get (model, a, DICT_TVM_COL_VAR, &var_a, -1);
+ gtk_tree_model_get (model, b, DICT_TVM_COL_VAR, &var_b, -1);
+
+ return compare_var_ptrs_by_dict_index (&var_a, &var_b, NULL);
+}
+
+static gint
+sort_by_name (GtkTreeModel *model,
+ GtkTreeIter *a,
+ GtkTreeIter *b,
+ gpointer user_data)
+{
+ const struct variable *var_a;
+ const struct variable *var_b;
+
+ gtk_tree_model_get (model, a, DICT_TVM_COL_VAR, &var_a, -1);
+ gtk_tree_model_get (model, b, DICT_TVM_COL_VAR, &var_b, -1);
+
+ return g_strcmp0 (var_get_name (var_a), var_get_name (var_b));
+}
+
+
+static gint
+sort_by_label (GtkTreeModel *model,
+ GtkTreeIter *a,
+ GtkTreeIter *b,
+ gpointer user_data)
+{
+ const struct variable *var_a;
+ const struct variable *var_b;
+
+ gtk_tree_model_get (model, a, DICT_TVM_COL_VAR, &var_a, -1);
+ gtk_tree_model_get (model, b, DICT_TVM_COL_VAR, &var_b, -1);
+
+ return g_strcmp0 (var_get_label (var_a), var_get_label (var_b));
+}
+