1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
3 /* e-tree-model-generator.h - Model wrapper that permutes underlying rows.
5 * Copyright (C) 2005 Novell, Inc.
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of version 2 of the GNU Lesser General Public
9 * License as published by the Free Software Foundation.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20 * Authors: Hans Petter Jansson <hpj@novell.com>
23 #ifndef E_TREE_MODEL_GENERATOR_H
24 #define E_TREE_MODEL_GENERATOR_H
26 #include <gtk/gtktreemodel.h>
30 #define E_TYPE_TREE_MODEL_GENERATOR (e_tree_model_generator_get_type ())
31 #define E_TREE_MODEL_GENERATOR(obj) (GTK_CHECK_CAST ((obj), E_TYPE_TREE_MODEL_GENERATOR, ETreeModelGenerator))
32 #define E_TREE_MODEL_GENERATOR_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), E_TYPE_TREE_MODEL_GENERATOR, ETreeModelGeneratorClass))
33 #define E_IS_TREE_MODEL_GENERATOR(obj) (GTK_CHECK_TYPE ((obj), E_TYPE_TREE_MODEL_GENERATOR))
34 #define E_IS_TREE_MODEL_GENERATOR_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), E_TYPE_TREE_MODEL_GENERATOR))
35 #define E_TREE_MODEL_GENERATOR_GET_CLASS(obj) (GTK_CHECK_GET_CLASS ((obj), E_TYPE_TREE_MODEL_GENERATOR, ETreeModelGeneratorClass))
37 typedef gint (*ETreeModelGeneratorGenerateFunc) (GtkTreeModel *model, GtkTreeIter *child_iter,
39 typedef void (*ETreeModelGeneratorModifyFunc) (GtkTreeModel *model, GtkTreeIter *child_iter,
40 gint permutation_n, gint column, GValue *value,
43 typedef struct _ETreeModelGenerator ETreeModelGenerator;
44 typedef struct _ETreeModelGeneratorClass ETreeModelGeneratorClass;
46 struct _ETreeModelGeneratorClass {
47 GObjectClass parent_class;
50 struct _ETreeModelGenerator {
56 GtkTreeModel *child_model;
59 ETreeModelGeneratorGenerateFunc generate_func;
60 gpointer generate_func_data;
62 ETreeModelGeneratorModifyFunc modify_func;
63 gpointer modify_func_data;
66 GtkType e_tree_model_generator_get_type (void);
68 ETreeModelGenerator *e_tree_model_generator_new (GtkTreeModel *child_model);
69 GtkTreeModel *e_tree_model_generator_get_model (ETreeModelGenerator *tree_model_generator);
71 void e_tree_model_generator_set_generate_func (ETreeModelGenerator *tree_model_generator,
72 ETreeModelGeneratorGenerateFunc func,
73 gpointer data, GtkDestroyNotify destroy);
74 void e_tree_model_generator_set_modify_func (ETreeModelGenerator *tree_model_generator,
75 ETreeModelGeneratorModifyFunc func,
76 gpointer data, GtkDestroyNotify destroy);
78 GtkTreePath *e_tree_model_generator_convert_child_path_to_path (ETreeModelGenerator *tree_model_generator,
79 GtkTreePath *child_path);
80 void e_tree_model_generator_convert_child_iter_to_iter (ETreeModelGenerator *tree_model_generator,
81 GtkTreeIter *generator_iter,
82 GtkTreeIter *child_iter);
83 GtkTreePath *e_tree_model_generator_convert_path_to_child_path (ETreeModelGenerator *tree_model_generator,
84 GtkTreePath *generator_path);
85 void e_tree_model_generator_convert_iter_to_child_iter (ETreeModelGenerator *tree_model_generator,
86 GtkTreeIter *child_iter,
88 GtkTreeIter *generator_iter);
92 #endif /* E_TREE_MODEL_GENERATOR_H */