]> Pileus Git - ~andy/gtk/blob - gtk/gtktreeview.h
Initial stab at getting the focus code to work.
[~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 #define GTK_TREE_VIEW_GET_CLASS(obj)    (GTK_CHECK_GET_CLASS ((obj), GTK_TYPE_TREE_VIEW, GtkTreeViewClass))
49
50 typedef struct _GtkTreeView           GtkTreeView;
51 typedef struct _GtkTreeViewClass      GtkTreeViewClass;
52 typedef struct _GtkTreeViewPrivate    GtkTreeViewPrivate;
53 typedef struct _GtkTreeSelection      GtkTreeSelection;
54 typedef struct _GtkTreeSelectionClass GtkTreeSelectionClass;
55
56 struct _GtkTreeView
57 {
58   GtkContainer parent;
59
60   GtkTreeViewPrivate *priv;
61 };
62
63 struct _GtkTreeViewClass
64 {
65   GtkContainerClass parent_class;
66
67   void     (* set_scroll_adjustments) (GtkTreeView       *tree_view,
68                                        GtkAdjustment     *hadjustment,
69                                        GtkAdjustment     *vadjustment);
70   void     (* row_activated)          (GtkTreeView       *tree_view,
71                                        GtkTreePath       *path,
72                                        GtkTreeViewColumn *column);
73   gboolean (* expand_row)             (GtkTreeView       *tree_view,
74                                        GtkTreeIter       *iter,
75                                        GtkTreePath       *path);
76   gboolean (* collapse_row)           (GtkTreeView       *tree_view,
77                                        GtkTreeIter       *iter,
78                                        GtkTreePath       *path);
79   void     (* columns_changed)        (GtkTreeView       *tree_view);
80
81   /* Key Binding signals */
82   void     (* move_cursor)            (GtkTreeView       *tree_view,
83                                        GtkMovementStep    step,
84                                        gint               count,
85                                        gboolean           extend_selection);
86   void     (* set_anchor)             (GtkTreeView       *tree_view);
87   void     (* expand_selected_row)    (GtkTreeView       *tree_view);
88   void     (* collapse_selected_row)  (GtkTreeView       *tree_view);
89   void     (* expand_all_selected_row)(GtkTreeView       *tree_view);
90   void     (* select_selected_parent) (GtkTreeView       *tree_view);
91   
92 };
93
94
95 typedef gboolean (* GtkTreeViewColumnDropFunc) (GtkTreeView             *tree_view,
96                                                 GtkTreeViewColumn       *column,
97                                                 GtkTreeViewColumn       *prev_column,
98                                                 GtkTreeViewColumn       *next_column,
99                                                 gpointer                 data);
100 typedef gboolean (* GtkTreeViewDraggableFunc)  (GtkTreeView             *tree_view,
101                                                 GdkDragContext          *context,
102                                                 GtkTreePath             *path,
103                                                 gpointer                user_data);
104 typedef void     (* GtkTreeViewMappingFunc)    (GtkTreeView             *tree_view,
105                                                 GtkTreePath             *path,
106                                                 gpointer                 user_data);
107 typedef gboolean (* GtkTreeViewDroppableFunc)  (GtkTreeView             *tree_view,
108                                                 GdkDragContext          *context,
109                                                 GtkTreePath             *path,
110                                                 GtkTreeViewDropPosition *pos,
111                                                 gpointer                 user_data);
112
113
114 /* Creators */
115 GtkType                gtk_tree_view_get_type                      (void);
116 GtkWidget             *gtk_tree_view_new                           (void);
117 GtkWidget             *gtk_tree_view_new_with_model                (GtkTreeModel              *model);
118
119 /* Accessors */
120 GtkTreeModel          *gtk_tree_view_get_model                     (GtkTreeView               *tree_view);
121 void                   gtk_tree_view_set_model                     (GtkTreeView               *tree_view,
122                                                                     GtkTreeModel              *model);
123 GtkTreeSelection      *gtk_tree_view_get_selection                 (GtkTreeView               *tree_view);
124 GtkAdjustment         *gtk_tree_view_get_hadjustment               (GtkTreeView               *tree_view);
125 void                   gtk_tree_view_set_hadjustment               (GtkTreeView               *tree_view,
126                                                                     GtkAdjustment             *adjustment);
127 GtkAdjustment         *gtk_tree_view_get_vadjustment               (GtkTreeView               *tree_view);
128 void                   gtk_tree_view_set_vadjustment               (GtkTreeView               *tree_view,
129                                                                     GtkAdjustment             *adjustment);
130 gboolean               gtk_tree_view_get_headers_visible           (GtkTreeView               *tree_view);
131 void                   gtk_tree_view_set_headers_visible           (GtkTreeView               *tree_view,
132                                                                     gboolean                   headers_visible);
133 void                   gtk_tree_view_columns_autosize              (GtkTreeView               *tree_view);
134 void                   gtk_tree_view_set_headers_clickable         (GtkTreeView               *tree_view,
135                                                                     gboolean                   setting);
136 void                   gtk_tree_view_set_rules_hint                (GtkTreeView               *tree_view,
137                                                                     gboolean                   setting);
138 gboolean               gtk_tree_view_get_rules_hint                (GtkTreeView               *tree_view);
139
140 /* Column funtions */
141 gint                   gtk_tree_view_append_column                 (GtkTreeView               *tree_view,
142                                                                     GtkTreeViewColumn         *column);
143 gint                   gtk_tree_view_remove_column                 (GtkTreeView               *tree_view,
144                                                                     GtkTreeViewColumn         *column);
145 gint                   gtk_tree_view_insert_column                 (GtkTreeView               *tree_view,
146                                                                     GtkTreeViewColumn         *column,
147                                                                     gint                       position);
148 gint                   gtk_tree_view_insert_column_with_attributes (GtkTreeView               *tree_view,
149                                                                     gint                       position,
150                                                                     gchar                     *title,
151                                                                     GtkCellRenderer           *cell,
152                                                                     ...);
153 gint                   gtk_tree_view_insert_column_with_data_func  (GtkTreeView               *tree_view,
154                                                                     gint                       position,
155                                                                     gchar                     *title,
156                                                                     GtkCellRenderer           *cell,
157                                                                     GtkTreeCellDataFunc        func,
158                                                                     gpointer                   data,
159                                                                     GDestroyNotify             dnotify);
160 GtkTreeViewColumn     *gtk_tree_view_get_column                    (GtkTreeView               *tree_view,
161                                                                     gint                       n);
162 GList                 *gtk_tree_view_get_columns                   (GtkTreeView               *tree_view);
163 void                   gtk_tree_view_move_column_after             (GtkTreeView               *tree_view,
164                                                                     GtkTreeViewColumn         *column,
165                                                                     GtkTreeViewColumn         *base_column);
166 void                   gtk_tree_view_set_expander_column           (GtkTreeView               *tree_view,
167                                                                     gint                       col);
168 gint                   gtk_tree_view_get_expander_column           (GtkTreeView               *tree_view);
169 void                   gtk_tree_view_set_column_drag_function      (GtkTreeView               *tree_view,
170                                                                     GtkTreeViewColumnDropFunc  func,
171                                                                     gpointer                   user_data,
172                                                                     GtkDestroyNotify           destroy);
173
174 /* Actions */
175 void                   gtk_tree_view_scroll_to_point               (GtkTreeView               *tree_view,
176                                                                     gint                       tree_x,
177                                                                     gint                       tree_y);
178 void                   gtk_tree_view_scroll_to_cell                (GtkTreeView               *tree_view,
179                                                                     GtkTreePath               *path,
180                                                                     GtkTreeViewColumn         *column,
181                                                                     gfloat                     row_align,
182                                                                     gfloat                     col_align);
183 void                   gtk_tree_view_row_activated                 (GtkTreeView               *tree_view,
184                                                                     GtkTreePath               *path,
185                                                                     GtkTreeViewColumn         *column);
186 void                   gtk_tree_view_expand_all                    (GtkTreeView               *tree_view);
187 void                   gtk_tree_view_collapse_all                  (GtkTreeView               *tree_view);
188 gboolean               gtk_tree_view_expand_row                    (GtkTreeView               *tree_view,
189                                                                     GtkTreePath               *path,
190                                                                     gboolean                   open_all);
191 gboolean               gtk_tree_view_collapse_row                  (GtkTreeView               *tree_view,
192                                                                     GtkTreePath               *path);
193 void                   gtk_tree_view_map_expanded_rows             (GtkTreeView               *tree_view,
194                                                                     GtkTreeViewMappingFunc     func,
195                                                                     gpointer                   data);
196 void                   gtk_tree_view_set_reorderable               (GtkTreeView               *tree_view,
197                                                                     gboolean                   reorderable);
198
199
200 /* Layout information */
201 gboolean               gtk_tree_view_get_path_at_pos               (GtkTreeView               *tree_view,
202                                                                     GdkWindow                 *window,
203                                                                     gint                       x,
204                                                                     gint                       y,
205                                                                     GtkTreePath              **path,
206                                                                     GtkTreeViewColumn        **column,
207                                                                     gint                      *cell_x,
208                                                                     gint                      *cell_y);
209 void                   gtk_tree_view_get_cell_area                 (GtkTreeView               *tree_view,
210                                                                     GtkTreePath               *path,
211                                                                     GtkTreeViewColumn         *column,
212                                                                     GdkRectangle              *rect);
213 void                   gtk_tree_view_get_background_area           (GtkTreeView               *tree_view,
214                                                                     GtkTreePath               *path,
215                                                                     GtkTreeViewColumn         *column,
216                                                                     GdkRectangle              *rect);
217 void                   gtk_tree_view_get_visible_rect              (GtkTreeView               *tree_view,
218                                                                     GdkRectangle              *visible_rect);
219 void                   gtk_tree_view_widget_to_tree_coords         (GtkTreeView               *tree_view,
220                                                                     gint                       wx,
221                                                                     gint                       wy,
222                                                                     gint                      *tx,
223                                                                     gint                      *ty);
224 void                   gtk_tree_view_tree_to_widget_coords         (GtkTreeView               *tree_view,
225                                                                     gint                       tx,
226                                                                     gint                       ty,
227                                                                     gint                      *wx,
228                                                                     gint                      *wy);
229
230 /* Drag-and-Drop support */
231 void                   gtk_tree_view_set_rows_drag_source          (GtkTreeView               *tree_view,
232                                                                     GdkModifierType            start_button_mask,
233                                                                     const GtkTargetEntry      *targets,
234                                                                     gint                       n_targets,
235                                                                     GdkDragAction              actions,
236                                                                     GtkTreeViewDraggableFunc   row_draggable_func,
237                                                                     gpointer                   user_data);
238 void                   gtk_tree_view_set_rows_drag_dest            (GtkTreeView               *tree_view,
239                                                                     const GtkTargetEntry      *targets,
240                                                                     gint                       n_targets,
241                                                                     GdkDragAction              actions,
242                                                                     GtkTreeViewDroppableFunc   location_droppable_func,
243                                                                     gpointer                   user_data);
244 void                   gtk_tree_view_unset_rows_drag_source        (GtkTreeView               *tree_view);
245 void                   gtk_tree_view_unset_rows_drag_dest          (GtkTreeView               *tree_view);
246
247
248 /* These are useful to implement your own custom stuff. */
249 void                   gtk_tree_view_set_drag_dest_row             (GtkTreeView               *tree_view,
250                                                                     GtkTreePath               *path,
251                                                                     GtkTreeViewDropPosition    pos);
252 void                   gtk_tree_view_get_drag_dest_row             (GtkTreeView               *tree_view,
253                                                                     GtkTreePath              **path,
254                                                                     GtkTreeViewDropPosition   *pos);
255 gboolean               gtk_tree_view_get_dest_row_at_pos           (GtkTreeView               *tree_view,
256                                                                     gint                       drag_x,
257                                                                     gint                       drag_y,
258                                                                     GtkTreePath              **path,
259                                                                     GtkTreeViewDropPosition   *pos);
260 GdkPixmap             *gtk_tree_view_create_row_drag_icon          (GtkTreeView               *tree_view,
261                                                                     GtkTreePath               *path);
262
263 #ifdef __cplusplus
264 }
265 #endif /* __cplusplus */
266
267
268 #endif /* __GTK_TREE_VIEW_H__ */
269