]> Pileus Git - ~andy/gtk/blob - gtk/gtktreeview.h
add missing '}' that got munched by #endif.
[~andy/gtk] / gtk / gtktreeview.h
1 /* gtktreeview.h
2  * Copyright (C) 2000  Red Hat, Inc.,  Jonathan Blandford <jrb@redhat.com>
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Library General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Library General Public License for more details.
13  *
14  * You should have received a copy of the GNU Library General Public
15  * License along with this library; if not, write to the
16  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17  * Boston, MA 02111-1307, USA.
18  */
19 #ifndef __GTK_TREE_VIEW_H__
20 #define __GTK_TREE_VIEW_H__
21
22 #include <gtk/gtkcontainer.h>
23 #include <gtk/gtktreemodel.h>
24 #include <gtk/gtktreeviewcolumn.h>
25 #include <gtk/gtkdnd.h>
26
27 #ifdef __cplusplus
28 extern "C" {
29 #endif /* __cplusplus */
30
31 typedef enum
32 {
33   /* drop before/after this row */
34   GTK_TREE_VIEW_DROP_BEFORE,
35   GTK_TREE_VIEW_DROP_AFTER,
36   /* drop as a child of this row (with fallback to before or after
37    * if into is not possible)
38    */
39   GTK_TREE_VIEW_DROP_INTO_OR_BEFORE,
40   GTK_TREE_VIEW_DROP_INTO_OR_AFTER
41 } GtkTreeViewDropPosition;
42
43 #define GTK_TYPE_TREE_VIEW              (gtk_tree_view_get_type ())
44 #define GTK_TREE_VIEW(obj)              (GTK_CHECK_CAST ((obj), GTK_TYPE_TREE_VIEW, GtkTreeView))
45 #define GTK_TREE_VIEW_CLASS(klass)      (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_TREE_VIEW, GtkTreeViewClass))
46 #define GTK_IS_TREE_VIEW(obj)           (GTK_CHECK_TYPE ((obj), GTK_TYPE_TREE_VIEW))
47 #define GTK_IS_TREE_VIEW_CLASS(klass)   (GTK_CHECK_CLASS_TYPE ((obj), GTK_TYPE_TREE_VIEW))
48
49 typedef struct _GtkTreeView        GtkTreeView;
50 typedef struct _GtkTreeViewClass   GtkTreeViewClass;
51 typedef struct _GtkTreeViewPrivate GtkTreeViewPrivate;
52
53 typedef struct _GtkTreeSelection      GtkTreeSelection;
54 typedef struct _GtkTreeSelectionClass GtkTreeSelectionClass;
55
56
57 struct _GtkTreeView
58 {
59   GtkContainer parent;
60
61   GtkTreeViewPrivate *priv;
62 };
63
64 struct _GtkTreeViewClass
65 {
66   GtkContainerClass parent_class;
67
68   void     (* set_scroll_adjustments) (GtkTreeView       *tree_view,
69                                        GtkAdjustment     *hadjustment,
70                                        GtkAdjustment     *vadjustment);
71   void     (* row_activated)          (GtkTreeView       *tree_view,
72                                        GtkTreePath       *path,
73                                        GtkTreeViewColumn *column);
74   gboolean (* expand_row)             (GtkTreeView       *tree_view,
75                                        GtkTreeIter       *iter,
76                                        GtkTreePath       *path);
77   gboolean (* collapse_row)           (GtkTreeView       *tree_view,
78                                        GtkTreeIter       *iter,
79                                        GtkTreePath       *path);
80 };
81
82
83 typedef gboolean (* GtkTreeViewColumnDropFunc) (GtkTreeView       *tree_view,
84                                                 GtkTreeViewColumn *column,
85                                                 GtkTreeViewColumn *prev_column,
86                                                 GtkTreeViewColumn *next_column,
87                                                 gpointer           data);
88 typedef gboolean (* GtkTreeViewDraggableFunc)  (GtkTreeView       *tree_view,
89                                                 GdkDragContext    *context,
90                                                 GtkTreePath       *path,
91                                                 gpointer           user_data);
92 typedef void (* GtkTreeViewMappingFunc) (GtkTreeView *tree_view,
93                                          GtkTreePath *path,
94                                          gpointer     user_data);
95
96
97
98 GtkType                gtk_tree_view_get_type                      (void);
99 GtkWidget             *gtk_tree_view_new                           (void);
100 GtkWidget             *gtk_tree_view_new_with_model                (GtkTreeModel       *model);
101 GtkTreeModel          *gtk_tree_view_get_model                     (GtkTreeView        *tree_view);
102 void                   gtk_tree_view_set_model                     (GtkTreeView        *tree_view,
103                                                                     GtkTreeModel       *model);
104 GtkTreeSelection      *gtk_tree_view_get_selection                 (GtkTreeView        *tree_view);
105 GtkAdjustment         *gtk_tree_view_get_hadjustment               (GtkTreeView        *tree_view);
106 void                   gtk_tree_view_set_hadjustment               (GtkTreeView        *tree_view,
107                                                                     GtkAdjustment      *adjustment);
108 GtkAdjustment         *gtk_tree_view_get_vadjustment               (GtkTreeView        *tree_view);
109 void                   gtk_tree_view_set_vadjustment               (GtkTreeView        *tree_view,
110                                                                     GtkAdjustment      *adjustment);
111 gboolean               gtk_tree_view_get_headers_visible           (GtkTreeView        *tree_view);
112 void                   gtk_tree_view_set_headers_visible           (GtkTreeView        *tree_view,
113                                                                     gboolean            headers_visible);
114 void                   gtk_tree_view_columns_autosize              (GtkTreeView        *tree_view);
115 void                   gtk_tree_view_set_headers_clickable         (GtkTreeView        *tree_view,
116                                                                     gboolean            setting);
117 gint                   gtk_tree_view_append_column                 (GtkTreeView        *tree_view,
118                                                                     GtkTreeViewColumn  *column);
119 gint                   gtk_tree_view_remove_column                 (GtkTreeView        *tree_view,
120                                                                     GtkTreeViewColumn  *column);
121 gint                   gtk_tree_view_insert_column                 (GtkTreeView        *tree_view,
122                                                                     GtkTreeViewColumn  *column,
123                                                                     gint                position);
124 gint                   gtk_tree_view_insert_column_with_attributes (GtkTreeView        *tree_view,
125                                                                     gint                position,
126                                                                     gchar              *title,
127                                                                     GtkCellRenderer    *cell,
128                                                                     ...);
129 void                   gtk_tree_view_move_column                   (GtkTreeView        *tree_view,
130                                                                     GtkTreeViewColumn  *column,
131                                                                     GtkTreeViewColumn  *base_column,
132                                                                     gint                side);
133 GtkTreeViewColumn     *gtk_tree_view_get_column                    (GtkTreeView        *tree_view,
134                                                                     gint                n);
135 void                   gtk_tree_view_set_expander_column           (GtkTreeView        *tree_view,
136                                                                     gint                col);
137 gint                   gtk_tree_view_get_expander_column           (GtkTreeView        *tree_view);
138
139
140 /* Actions */
141 void                   gtk_tree_view_scroll_to_point               (GtkTreeView        *tree_view,
142                                                                     gint                tree_x,
143                                                                     gint                tree_y);
144 void                   gtk_tree_view_scroll_to_cell                (GtkTreeView        *tree_view,
145                                                                     GtkTreePath        *path,
146                                                                     GtkTreeViewColumn  *column,
147                                                                     gfloat              row_align,
148                                                                     gfloat              col_align);
149 gboolean               gtk_tree_view_get_path_at_pos               (GtkTreeView        *tree_view,
150                                                                     GdkWindow          *window,
151                                                                     gint                x,
152                                                                     gint                y,
153                                                                     GtkTreePath       **path,
154                                                                     GtkTreeViewColumn **column,
155                                                                     gint               *cell_x,
156                                                                     gint               *cell_y);
157 void                   gtk_tree_view_get_cell_area                 (GtkTreeView        *tree_view,
158                                                                     GtkTreePath        *path,
159                                                                     GtkTreeViewColumn  *column,
160                                                                     GdkRectangle       *rect);
161 void                   gtk_tree_view_get_background_area           (GtkTreeView        *tree_view,
162                                                                     GtkTreePath        *path,
163                                                                     GtkTreeViewColumn  *column,
164                                                                     GdkRectangle       *rect);
165 void                   gtk_tree_view_expand_all                    (GtkTreeView        *tree_view);
166 void                   gtk_tree_view_collapse_all                  (GtkTreeView        *tree_view);
167 gboolean               gtk_tree_view_expand_row                    (GtkTreeView        *tree_view,
168                                                                     GtkTreePath        *path,
169                                                                     gboolean            open_all);
170 gboolean               gtk_tree_view_collapse_row                  (GtkTreeView        *tree_view,
171                                                                     GtkTreePath        *path);
172 void                   gtk_tree_view_row_activated                 (GtkTreeView        *tree_view,
173                                                                     GtkTreePath        *path,
174                                                                     GtkTreeViewColumn  *column);
175 void                   gtk_tree_view_map_expanded_rows             (GtkTreeView        *tree_view,
176                                                                     GtkTreeViewMappingFunc func,
177                                                                     gpointer            data);
178
179 void gtk_tree_view_get_visible_rect      (GtkTreeView  *tree_view,
180                                           GdkRectangle *visible_rect);
181 void gtk_tree_view_widget_to_tree_coords (GtkTreeView  *tree_view,
182                                           gint          wx,
183                                           gint          wy,
184                                           gint         *tx,
185                                           gint         *ty);
186 void gtk_tree_view_tree_to_widget_coords (GtkTreeView  *tree_view,
187                                           gint          tx,
188                                           gint          ty,
189                                           gint         *wx,
190                                           gint         *wy);
191
192 void     gtk_tree_view_set_rules_hint     (GtkTreeView  *tree_view,
193                                            gboolean      setting);
194 gboolean gtk_tree_view_get_rules_hint     (GtkTreeView  *tree_view);
195
196
197 /* Drag-and-Drop support */
198 /* this func can change "pos" if it likes, in addition to returning
199  * true/false for whether a drop is possible
200  */
201 typedef gboolean (* GtkTreeViewDroppableFunc) (GtkTreeView             *tree_view,
202                                                GdkDragContext          *context,
203                                                GtkTreePath             *path,
204                                                GtkTreeViewDropPosition *pos,
205                                                gpointer                 user_data);
206
207 void     gtk_tree_view_set_rows_drag_source   (GtkTreeView              *tree_view,
208                                                GdkModifierType           start_button_mask,
209                                                const GtkTargetEntry     *targets,
210                                                gint                      n_targets,
211                                                GdkDragAction             actions,
212                                                GtkTreeViewDraggableFunc  row_draggable_func,
213                                                gpointer                  user_data);
214 void     gtk_tree_view_set_rows_drag_dest     (GtkTreeView              *tree_view,
215                                                const GtkTargetEntry     *targets,
216                                                gint                      n_targets,
217                                                GdkDragAction             actions,
218                                                GtkTreeViewDroppableFunc  location_droppable_func,
219                                                gpointer                  user_data);
220
221 void     gtk_tree_view_unset_rows_drag_source (GtkTreeView *tree_view);
222 void     gtk_tree_view_unset_rows_drag_dest   (GtkTreeView *tree_view);
223
224 /* These are useful to implement your own custom stuff. */
225 void       gtk_tree_view_set_drag_dest_row    (GtkTreeView              *tree_view,
226                                                GtkTreePath              *path,
227                                                GtkTreeViewDropPosition   pos);
228 void       gtk_tree_view_get_drag_dest_row    (GtkTreeView              *tree_view,
229                                                GtkTreePath             **path,
230                                                GtkTreeViewDropPosition  *pos);
231 gboolean   gtk_tree_view_get_dest_row_at_pos  (GtkTreeView              *tree_view,
232                                                gint                      drag_x,
233                                                gint                      drag_y,
234                                                GtkTreePath             **path,
235                                                GtkTreeViewDropPosition  *pos);
236 GdkPixmap* gtk_tree_view_create_row_drag_icon (GtkTreeView              *tree_view,
237                                                GtkTreePath              *path);
238
239
240
241 #ifdef __cplusplus
242 }
243 #endif /* __cplusplus */
244
245
246 #endif /* __GTK_TREE_VIEW_H__ */
247