gtktreemodel.h 9.08 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/* gtktreemodel.h
 * Copyright (C) 2000  Red Hat, Inc.,  Jonathan Blandford <jrb@redhat.com>
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
 */

#ifndef __GTK_TREE_MODEL_H__
#define __GTK_TREE_MODEL_H__

#include <gtk/gtkobject.h>

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

#define GTK_TYPE_TREE_MODEL            (gtk_tree_model_get_type ())
30
31
32
33
#define GTK_TREE_MODEL(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_TREE_MODEL, GtkTreeModel))
#define GTK_IS_TREE_MODEL(obj)	       (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_TREE_MODEL))
#define GTK_TREE_MODEL_GET_IFACE(obj)  ((GtkTreeModelIface *)g_type_interface_peek (((GTypeInstance *)GTK_TREE_MODEL (obj))->g_class, GTK_TYPE_TREE_MODEL))
					
34

35
36
37
38
39
typedef struct _GtkTreeIter         GtkTreeIter;
typedef struct _GtkTreePath         GtkTreePath;
typedef struct _GtkTreeRowReference GtkTreeRowReference;
typedef struct _GtkTreeModel        GtkTreeModel; /* Dummy typedef */
typedef struct _GtkTreeModelIface   GtkTreeModelIface;
40

41
42
43
44
45
46

typedef enum
{
  GTK_TREE_MODEL_ITERS_PERSIST = 1 << 0
} GtkTreeModelFlags;

47
48
49
struct _GtkTreeIter
{
  gint stamp;
Havoc Pennington's avatar
Havoc Pennington committed
50
51
52
  gpointer user_data;
  gpointer user_data2;
  gpointer user_data3;
53
54
};

55
struct _GtkTreeModelIface
56
{
57
  GTypeInterface g_iface;
58

59
  /* Signals */
60
61
62
63
64
65
  void         (* changed)           (GtkTreeModel *tree_model,
				      GtkTreePath  *path,
				      GtkTreeIter  *iter);
  void         (* inserted)          (GtkTreeModel *tree_model,
				      GtkTreePath  *path,
				      GtkTreeIter  *iter);
66
  void         (* has_child_toggled) (GtkTreeModel *tree_model,
67
68
69
70
				      GtkTreePath  *path,
				      GtkTreeIter  *iter);
  void         (* deleted)           (GtkTreeModel *tree_model,
				      GtkTreePath  *path);
71
72
73
  void         (* reordered)         (GtkTreeModel *tree_model,
				      GtkTreePath  *path,
				      gint         *new_order);
74

75
  /* Virtual Table */
76
77
  GtkTreeModelFlags (* get_flags)  (GtkTreeModel *tree_model);   

78
  gint         (* get_n_columns)   (GtkTreeModel *tree_model);
79
80
81
82
  GType        (* get_column_type) (GtkTreeModel *tree_model,
				    gint          index);
  gboolean     (* get_iter)        (GtkTreeModel *tree_model,
				    GtkTreeIter  *iter,
83
84
				    GtkTreePath  *path);
  GtkTreePath *(* get_path)        (GtkTreeModel *tree_model,
85
				    GtkTreeIter  *iter);
86
  void         (* get_value)       (GtkTreeModel *tree_model,
87
				    GtkTreeIter  *iter,
88
89
				    gint          column,
				    GValue       *value);
90
91
92
93
  gboolean     (* iter_next)       (GtkTreeModel *tree_model,
				    GtkTreeIter  *iter);
  gboolean     (* iter_children)   (GtkTreeModel *tree_model,
				    GtkTreeIter  *iter,
94
				    GtkTreeIter  *parent);
95
96
97
98
99
100
101
  gboolean     (* iter_has_child)  (GtkTreeModel *tree_model,
				    GtkTreeIter  *iter);
  gint         (* iter_n_children) (GtkTreeModel *tree_model,
				    GtkTreeIter  *iter);
  gboolean     (* iter_nth_child)  (GtkTreeModel *tree_model,
				    GtkTreeIter  *iter,
				    GtkTreeIter  *parent,
102
				    gint          n);
103
104
  gboolean     (* iter_parent)     (GtkTreeModel *tree_model,
				    GtkTreeIter  *iter,
105
				    GtkTreeIter  *child);
106
107
108
109
  void         (* ref_iter)        (GtkTreeModel *tree_model,
				    GtkTreeIter  *iter);
  void         (* unref_iter)      (GtkTreeModel *tree_model,
				    GtkTreeIter  *iter);
110
111
112
};


113
/* GtkTreePath operations */
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
GtkTreePath *gtk_tree_path_new              (void);
GtkTreePath *gtk_tree_path_new_from_string  (gchar             *path);
gchar       *gtk_tree_path_to_string        (GtkTreePath       *path);
GtkTreePath *gtk_tree_path_new_root         (void);
void         gtk_tree_path_append_index     (GtkTreePath       *path,
					     gint               index);
void         gtk_tree_path_prepend_index    (GtkTreePath       *path,
					     gint               index);
gint         gtk_tree_path_get_depth        (GtkTreePath       *path);
gint        *gtk_tree_path_get_indices      (GtkTreePath       *path);
void         gtk_tree_path_free             (GtkTreePath       *path);
GtkTreePath *gtk_tree_path_copy             (GtkTreePath       *path);
gint         gtk_tree_path_compare          (const GtkTreePath *a,
					     const GtkTreePath *b);
void         gtk_tree_path_next             (GtkTreePath       *path);
129
130
gboolean     gtk_tree_path_prev             (GtkTreePath       *path);
gboolean     gtk_tree_path_up               (GtkTreePath       *path);
131
132
void         gtk_tree_path_down             (GtkTreePath       *path);

133
134
135
136
137
gboolean     gtk_tree_path_is_ancestor      (GtkTreePath       *path,
                                             GtkTreePath       *descendant);
gboolean     gtk_tree_path_is_descendant    (GtkTreePath       *path,
                                             GtkTreePath       *ancestor);

Jonathan Blandford's avatar
Jonathan Blandford committed
138
139
140
/* Row reference (an object that tracks model changes so it refers to the same
 * row always; a path refers to a position, not a fixed row).  You almost always
 * want to call gtk_tree_row_reference_new.
141
142
 */

Jonathan Blandford's avatar
Jonathan Blandford committed
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
GtkTreeRowReference *gtk_tree_row_reference_new       (GtkTreeModel        *model,
						       GtkTreePath         *path);
GtkTreeRowReference *gtk_tree_row_reference_new_proxy (GObject             *proxy,
						       GtkTreeModel        *model,
						       GtkTreePath         *path);
GtkTreePath         *gtk_tree_row_reference_get_path  (GtkTreeRowReference *reference);
void                 gtk_tree_row_reference_free      (GtkTreeRowReference *reference);

/* These two functions are only needed if you created the row reference with a
 * proxy object */
void                 gtk_tree_row_reference_inserted  (GObject     *proxy,
						       GtkTreePath *path);
void                 gtk_tree_row_reference_deleted   (GObject     *proxy,
						       GtkTreePath *path);
						       
158
/* GtkTreeIter operations */
Jonathan Blandford's avatar
Jonathan Blandford committed
159
160
GtkTreeIter *     gtk_tree_iter_copy             (GtkTreeIter  *iter);
void              gtk_tree_iter_free             (GtkTreeIter  *iter);
161

Jonathan Blandford's avatar
Jonathan Blandford committed
162
163
164
165
166
GtkType           gtk_tree_model_get_type        (void) G_GNUC_CONST;
GtkTreeModelFlags gtk_tree_model_get_flags       (GtkTreeModel *tree_model);
gint              gtk_tree_model_get_n_columns   (GtkTreeModel *tree_model);
GType             gtk_tree_model_get_column_type (GtkTreeModel *tree_model,
						  gint          index);
167
168
169


/* Iterator movement */
Jonathan Blandford's avatar
Jonathan Blandford committed
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
gboolean          gtk_tree_model_get_iter        (GtkTreeModel *tree_model,
						  GtkTreeIter  *iter,
						  GtkTreePath  *path);
gboolean          gtk_tree_model_get_first       (GtkTreeModel *tree_model,
						  GtkTreeIter  *iter);
GtkTreePath *     gtk_tree_model_get_path        (GtkTreeModel *tree_model,
						  GtkTreeIter  *iter);
void              gtk_tree_model_get_value       (GtkTreeModel *tree_model,
						  GtkTreeIter  *iter,
						  gint          column,
						  GValue       *value);
gboolean          gtk_tree_model_iter_next       (GtkTreeModel *tree_model,
						  GtkTreeIter  *iter);
gboolean          gtk_tree_model_iter_children   (GtkTreeModel *tree_model,
						  GtkTreeIter  *iter,
						  GtkTreeIter  *parent);
gboolean          gtk_tree_model_iter_has_child  (GtkTreeModel *tree_model,
						  GtkTreeIter  *iter);
gint              gtk_tree_model_iter_n_children (GtkTreeModel *tree_model,
						  GtkTreeIter  *iter);
gboolean          gtk_tree_model_iter_nth_child  (GtkTreeModel *tree_model,
						  GtkTreeIter  *iter,
						  GtkTreeIter  *parent,
						  gint          n);
gboolean          gtk_tree_model_iter_parent     (GtkTreeModel *tree_model,
						  GtkTreeIter  *iter,
						  GtkTreeIter  *child);
void              gtk_tree_model_ref_iter        (GtkTreeModel *tree_model,
						  GtkTreeIter  *iter);
void              gtk_tree_model_unref_iter      (GtkTreeModel *tree_model,
						  GtkTreeIter  *iter);
void              gtk_tree_model_get             (GtkTreeModel *tree_model,
						  GtkTreeIter  *iter,
						  ...);
void              gtk_tree_model_get_valist      (GtkTreeModel *tree_model,
						  GtkTreeIter  *iter,
						  va_list       var_args);

208

209
/* Signals */
210
211
212
213
214
215
216
217
218
219
220
221
void gtk_tree_model_changed           (GtkTreeModel *tree_model,
				       GtkTreePath  *path,
				       GtkTreeIter  *iter);
void gtk_tree_model_inserted          (GtkTreeModel *tree_model,
				       GtkTreePath  *path,
				       GtkTreeIter  *iter);
void gtk_tree_model_has_child_toggled (GtkTreeModel *tree_model,
				       GtkTreePath  *path,
				       GtkTreeIter  *iter);
void gtk_tree_model_deleted           (GtkTreeModel *tree_model,
				       GtkTreePath  *path);

222

223
224
225
226
227
228
229

#ifdef __cplusplus
}
#endif /* __cplusplus */


#endif /* __GTK_TREE_MODEL_H__ */