]> Pileus Git - ~andy/gtk/blob - gtk/gtktreeview.h
remove validation idle
[~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   gint (*expand_row)             (GtkTreeView   *tree_view,
72                                   GtkTreeIter   *iter);
73 };
74
75 GtkType                gtk_tree_view_get_type            (void);
76 GtkWidget             *gtk_tree_view_new                 (void);
77 GtkWidget             *gtk_tree_view_new_with_model      (GtkTreeModel       *model);
78
79 GtkTreeModel          *gtk_tree_view_get_model           (GtkTreeView        *tree_view);
80 void                   gtk_tree_view_set_model           (GtkTreeView        *tree_view,
81                                                           GtkTreeModel       *model);
82 GtkTreeSelection      *gtk_tree_view_get_selection       (GtkTreeView        *tree_view);
83 GtkAdjustment         *gtk_tree_view_get_hadjustment     (GtkTreeView        *tree_view);
84 void                   gtk_tree_view_set_hadjustment     (GtkTreeView        *tree_view,
85                                                           GtkAdjustment      *adjustment);
86 GtkAdjustment         *gtk_tree_view_get_vadjustment     (GtkTreeView        *tree_view);
87 void                   gtk_tree_view_set_vadjustment     (GtkTreeView        *tree_view,
88                                                           GtkAdjustment      *adjustment);
89 gboolean               gtk_tree_view_get_headers_visible (GtkTreeView        *tree_view);
90 void                   gtk_tree_view_set_headers_visible (GtkTreeView        *tree_view,
91                                                           gboolean            headers_visible);
92 void                   gtk_tree_view_columns_autosize    (GtkTreeView        *tree_view);
93 void                   gtk_tree_view_set_headers_clickable (GtkTreeView        *tree_view,
94                                                             gboolean            setting);
95 gint                   gtk_tree_view_append_column       (GtkTreeView        *tree_view,
96                                                           GtkTreeViewColumn  *column);
97 gint                   gtk_tree_view_remove_column       (GtkTreeView        *tree_view,
98                                                           GtkTreeViewColumn  *column);
99 gint                   gtk_tree_view_insert_column       (GtkTreeView        *tree_view,
100                                                           GtkTreeViewColumn  *column,
101                                                           gint                position);
102 GtkTreeViewColumn     *gtk_tree_view_get_column          (GtkTreeView        *tree_view,
103                                                           gint                n);
104
105 void                   gtk_tree_view_set_expander_column (GtkTreeView        *tree_view,
106                                                           gint                col);
107
108 gint                   gtk_tree_view_get_expander_column (GtkTreeView        *tree_view);
109
110 /* Actions */
111 void                   gtk_tree_view_scroll_to_point     (GtkTreeView       *tree_view,
112                                                           gint               tree_x,
113                                                           gint               tree_y);
114
115 void                   gtk_tree_view_scroll_to_cell      (GtkTreeView        *tree_view,
116                                                           GtkTreePath        *path,
117                                                           GtkTreeViewColumn  *column,
118                                                           gfloat              row_align,
119                                                           gfloat              col_align);
120 gboolean               gtk_tree_view_get_path_at_pos     (GtkTreeView        *tree_view,
121                                                           GdkWindow          *window,
122                                                           gint                x,
123                                                           gint                y,
124                                                           GtkTreePath       **path,
125                                                           GtkTreeViewColumn **column,
126                                                           gint               *cell_x,
127                                                           gint               *cell_y);
128 void                   gtk_tree_view_get_cell_area       (GtkTreeView        *tree_view,
129                                                           GtkTreePath        *path,
130                                                           GtkTreeViewColumn  *column,
131                                                           GdkRectangle       *rect);
132 void                   gtk_tree_view_get_background_area (GtkTreeView        *tree_view,
133                                                           GtkTreePath        *path,
134                                                           GtkTreeViewColumn  *column,
135                                                           GdkRectangle       *rect);
136
137 void                   gtk_tree_view_expand_all          (GtkTreeView        *tree_view);
138 void                   gtk_tree_view_collapse_all        (GtkTreeView        *tree_view);
139 gboolean               gtk_tree_view_expand_row          (GtkTreeView        *tree_view,
140                                                           GtkTreePath        *path,
141                                                           gboolean            open_all);
142 gboolean               gtk_tree_view_collapse_row        (GtkTreeView        *tree_view,
143                                                           GtkTreePath        *path);
144
145 void gtk_tree_view_get_visible_rect      (GtkTreeView  *tree_view,
146                                           GdkRectangle *visible_rect);
147 void gtk_tree_view_widget_to_tree_coords (GtkTreeView  *tree_view,
148                                           gint          wx,
149                                           gint          wy,
150                                           gint         *tx,
151                                           gint         *ty);
152 void gtk_tree_view_tree_to_widget_coords (GtkTreeView  *tree_view,
153                                           gint          tx,
154                                           gint          ty,
155                                           gint         *wx,
156                                           gint         *wy);
157
158 void     gtk_tree_view_set_rules_hint     (GtkTreeView  *tree_view,
159                                            gboolean      setting);
160 gboolean gtk_tree_view_get_rules_hint     (GtkTreeView  *tree_view);
161
162
163 /* Drag-and-Drop support */
164
165 typedef gboolean (* GtkTreeViewDraggableFunc) (GtkTreeView    *tree_view,
166                                                GdkDragContext *context,
167                                                GtkTreePath    *path,
168                                                gpointer        user_data);
169
170 /* this func can change "pos" if it likes, in addition to returning
171  * true/false for whether a drop is possible
172  */
173 typedef gboolean (* GtkTreeViewDroppableFunc) (GtkTreeView             *tree_view,
174                                                GdkDragContext          *context,
175                                                GtkTreePath             *path,
176                                                GtkTreeViewDropPosition *pos,
177                                                gpointer                 user_data);
178
179 void     gtk_tree_view_set_rows_drag_source   (GtkTreeView              *tree_view,
180                                                GdkModifierType           start_button_mask,
181                                                const GtkTargetEntry     *targets,
182                                                gint                      n_targets,
183                                                GdkDragAction             actions,
184                                                GtkTreeViewDraggableFunc  row_draggable_func,
185                                                gpointer                  user_data);
186 void     gtk_tree_view_set_rows_drag_dest     (GtkTreeView              *tree_view,
187                                                const GtkTargetEntry     *targets,
188                                                gint                      n_targets,
189                                                GdkDragAction             actions,
190                                                GtkTreeViewDroppableFunc  location_droppable_func,
191                                                gpointer                  user_data);
192
193 void     gtk_tree_view_unset_rows_drag_source (GtkTreeView *tree_view);
194 void     gtk_tree_view_unset_rows_drag_dest   (GtkTreeView *tree_view);
195
196 /* These are useful to implement your own custom stuff. */
197 void       gtk_tree_view_set_drag_dest_row    (GtkTreeView              *tree_view,
198                                                GtkTreePath              *path,
199                                                GtkTreeViewDropPosition   pos);
200 void       gtk_tree_view_get_drag_dest_row    (GtkTreeView              *tree_view,
201                                                GtkTreePath             **path,
202                                                GtkTreeViewDropPosition  *pos);
203 gboolean   gtk_tree_view_get_dest_row_at_pos  (GtkTreeView              *tree_view,
204                                                gint                      drag_x,
205                                                gint                      drag_y,
206                                                GtkTreePath             **path,
207                                                GtkTreeViewDropPosition  *pos);
208 GdkPixmap* gtk_tree_view_create_row_drag_icon (GtkTreeView              *tree_view,
209                                                GtkTreePath              *path);
210
211
212
213 #ifdef __cplusplus
214 }
215 #endif /* __cplusplus */
216
217
218 #endif /* __GTK_TREE_VIEW_H__ */
219