]> Pileus Git - ~andy/gtk/blob - gtk/gtktreeview.h
adapt to handle PangoColor
[~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
159
160 /* Drag-and-Drop support */
161
162 typedef gboolean (* GtkTreeViewDraggableFunc) (GtkTreeView    *tree_view,
163                                                GdkDragContext *context,
164                                                GtkTreePath    *path,
165                                                gpointer        user_data);
166
167 /* this func can change "pos" if it likes, in addition to returning
168  * true/false for whether a drop is possible
169  */
170 typedef gboolean (* GtkTreeViewDroppableFunc) (GtkTreeView             *tree_view,
171                                                GdkDragContext          *context,
172                                                GtkTreePath             *path,
173                                                GtkTreeViewDropPosition *pos,
174                                                gpointer                 user_data);
175
176 void     gtk_tree_view_set_rows_drag_source   (GtkTreeView              *tree_view,
177                                                GdkModifierType           start_button_mask,
178                                                const GtkTargetEntry     *targets,
179                                                gint                      n_targets,
180                                                GdkDragAction             actions,
181                                                GtkTreeViewDraggableFunc  row_draggable_func,
182                                                gpointer                  user_data);
183 void     gtk_tree_view_set_rows_drag_dest     (GtkTreeView              *tree_view,
184                                                const GtkTargetEntry     *targets,
185                                                gint                      n_targets,
186                                                GdkDragAction             actions,
187                                                GtkTreeViewDroppableFunc  location_droppable_func,
188                                                gpointer                  user_data);
189
190 void     gtk_tree_view_unset_rows_drag_source (GtkTreeView *tree_view);
191 void     gtk_tree_view_unset_rows_drag_dest   (GtkTreeView *tree_view);
192
193 /* These are useful to implement your own custom stuff. */
194 void       gtk_tree_view_set_drag_dest_row    (GtkTreeView              *tree_view,
195                                                GtkTreePath              *path,
196                                                GtkTreeViewDropPosition   pos);
197 void       gtk_tree_view_get_drag_dest_row   (GtkTreeView              *tree_view,
198                                               GtkTreePath             **path,
199                                               GtkTreeViewDropPosition  *pos);
200 gboolean   gtk_tree_view_get_dest_row_at_pos  (GtkTreeView              *tree_view,
201                                                gint                      drag_x,
202                                                gint                      drag_y,
203                                                GtkTreePath             **path,
204                                                GtkTreeViewDropPosition  *pos);
205 GdkPixmap* gtk_tree_view_create_row_drag_icon (GtkTreeView              *tree_view,
206                                                GtkTreePath              *path);
207
208
209
210 #ifdef __cplusplus
211 }
212 #endif /* __cplusplus */
213
214
215 #endif /* __GTK_TREE_VIEW_H__ */
216