1 | /* gtktreeviewcolumn.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, see <http://www.gnu.org/licenses/>. |
16 | */ |
17 | |
18 | #ifndef __GTK_TREE_VIEW_COLUMN_H__ |
19 | #define __GTK_TREE_VIEW_COLUMN_H__ |
20 | |
21 | #if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) |
22 | #error "Only <gtk/gtk.h> can be included directly." |
23 | #endif |
24 | |
25 | #include <gtk/gtkcellrenderer.h> |
26 | #include <gtk/gtktreemodel.h> |
27 | #include <gtk/gtktreesortable.h> |
28 | #include <gtk/gtkcellarea.h> |
29 | |
30 | |
31 | G_BEGIN_DECLS |
32 | |
33 | |
34 | #define GTK_TYPE_TREE_VIEW_COLUMN (gtk_tree_view_column_get_type ()) |
35 | #define GTK_TREE_VIEW_COLUMN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_TREE_VIEW_COLUMN, GtkTreeViewColumn)) |
36 | #define GTK_IS_TREE_VIEW_COLUMN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_TREE_VIEW_COLUMN)) |
37 | |
38 | typedef struct _GtkTreeViewColumn GtkTreeViewColumn; |
39 | |
40 | /** |
41 | * GtkTreeViewColumnSizing: |
42 | * @GTK_TREE_VIEW_COLUMN_GROW_ONLY: Columns only get bigger in reaction to changes in the model |
43 | * @GTK_TREE_VIEW_COLUMN_AUTOSIZE: Columns resize to be the optimal size every time the model changes. |
44 | * @GTK_TREE_VIEW_COLUMN_FIXED: Columns are a fixed numbers of pixels wide. |
45 | * |
46 | * The sizing method the column uses to determine its width. Please note |
47 | * that %GTK_TREE_VIEW_COLUMN_AUTOSIZE are inefficient for large views, and |
48 | * can make columns appear choppy. |
49 | */ |
50 | typedef enum |
51 | { |
52 | GTK_TREE_VIEW_COLUMN_GROW_ONLY, |
53 | GTK_TREE_VIEW_COLUMN_AUTOSIZE, |
54 | GTK_TREE_VIEW_COLUMN_FIXED |
55 | } GtkTreeViewColumnSizing; |
56 | |
57 | /** |
58 | * GtkTreeCellDataFunc: |
59 | * @tree_column: A `GtkTreeViewColumn` |
60 | * @cell: The `GtkCellRenderer` that is being rendered by @tree_column |
61 | * @tree_model: The `GtkTreeModel` being rendered |
62 | * @iter: A `GtkTreeIter` of the current row rendered |
63 | * @data: (closure): user data |
64 | * |
65 | * A function to set the properties of a cell instead of just using the |
66 | * straight mapping between the cell and the model. |
67 | * |
68 | * This function is useful for customizing the cell renderer. For example, |
69 | * a function might get an* integer from the @tree_model, and render it to |
70 | * the “text” attribute of “cell” by converting it to its written equivalent. |
71 | * |
72 | * See also: gtk_tree_view_column_set_cell_data_func() |
73 | */ |
74 | typedef void (* GtkTreeCellDataFunc) (GtkTreeViewColumn *tree_column, |
75 | GtkCellRenderer *cell, |
76 | GtkTreeModel *tree_model, |
77 | GtkTreeIter *iter, |
78 | gpointer data); |
79 | |
80 | |
81 | GDK_AVAILABLE_IN_ALL |
82 | GType gtk_tree_view_column_get_type (void) G_GNUC_CONST; |
83 | GDK_AVAILABLE_IN_ALL |
84 | GtkTreeViewColumn *gtk_tree_view_column_new (void); |
85 | GDK_AVAILABLE_IN_ALL |
86 | GtkTreeViewColumn *gtk_tree_view_column_new_with_area (GtkCellArea *area); |
87 | GDK_AVAILABLE_IN_ALL |
88 | GtkTreeViewColumn *gtk_tree_view_column_new_with_attributes (const char *title, |
89 | GtkCellRenderer *cell, |
90 | ...) G_GNUC_NULL_TERMINATED; |
91 | GDK_AVAILABLE_IN_ALL |
92 | void gtk_tree_view_column_pack_start (GtkTreeViewColumn *tree_column, |
93 | GtkCellRenderer *cell, |
94 | gboolean expand); |
95 | GDK_AVAILABLE_IN_ALL |
96 | void gtk_tree_view_column_pack_end (GtkTreeViewColumn *tree_column, |
97 | GtkCellRenderer *cell, |
98 | gboolean expand); |
99 | GDK_AVAILABLE_IN_ALL |
100 | void gtk_tree_view_column_clear (GtkTreeViewColumn *tree_column); |
101 | GDK_AVAILABLE_IN_ALL |
102 | void gtk_tree_view_column_add_attribute (GtkTreeViewColumn *tree_column, |
103 | GtkCellRenderer *cell_renderer, |
104 | const char *attribute, |
105 | int column); |
106 | GDK_AVAILABLE_IN_ALL |
107 | void gtk_tree_view_column_set_attributes (GtkTreeViewColumn *tree_column, |
108 | GtkCellRenderer *cell_renderer, |
109 | ...) G_GNUC_NULL_TERMINATED; |
110 | GDK_AVAILABLE_IN_ALL |
111 | void gtk_tree_view_column_set_cell_data_func (GtkTreeViewColumn *tree_column, |
112 | GtkCellRenderer *cell_renderer, |
113 | GtkTreeCellDataFunc func, |
114 | gpointer func_data, |
115 | GDestroyNotify destroy); |
116 | GDK_AVAILABLE_IN_ALL |
117 | void gtk_tree_view_column_clear_attributes (GtkTreeViewColumn *tree_column, |
118 | GtkCellRenderer *cell_renderer); |
119 | GDK_AVAILABLE_IN_ALL |
120 | void gtk_tree_view_column_set_spacing (GtkTreeViewColumn *tree_column, |
121 | int spacing); |
122 | GDK_AVAILABLE_IN_ALL |
123 | int gtk_tree_view_column_get_spacing (GtkTreeViewColumn *tree_column); |
124 | GDK_AVAILABLE_IN_ALL |
125 | void gtk_tree_view_column_set_visible (GtkTreeViewColumn *tree_column, |
126 | gboolean visible); |
127 | GDK_AVAILABLE_IN_ALL |
128 | gboolean gtk_tree_view_column_get_visible (GtkTreeViewColumn *tree_column); |
129 | GDK_AVAILABLE_IN_ALL |
130 | void gtk_tree_view_column_set_resizable (GtkTreeViewColumn *tree_column, |
131 | gboolean resizable); |
132 | GDK_AVAILABLE_IN_ALL |
133 | gboolean gtk_tree_view_column_get_resizable (GtkTreeViewColumn *tree_column); |
134 | GDK_AVAILABLE_IN_ALL |
135 | void gtk_tree_view_column_set_sizing (GtkTreeViewColumn *tree_column, |
136 | GtkTreeViewColumnSizing type); |
137 | GDK_AVAILABLE_IN_ALL |
138 | GtkTreeViewColumnSizing gtk_tree_view_column_get_sizing (GtkTreeViewColumn *tree_column); |
139 | GDK_AVAILABLE_IN_ALL |
140 | int gtk_tree_view_column_get_x_offset (GtkTreeViewColumn *tree_column); |
141 | GDK_AVAILABLE_IN_ALL |
142 | int gtk_tree_view_column_get_width (GtkTreeViewColumn *tree_column); |
143 | GDK_AVAILABLE_IN_ALL |
144 | int gtk_tree_view_column_get_fixed_width (GtkTreeViewColumn *tree_column); |
145 | GDK_AVAILABLE_IN_ALL |
146 | void gtk_tree_view_column_set_fixed_width (GtkTreeViewColumn *tree_column, |
147 | int fixed_width); |
148 | GDK_AVAILABLE_IN_ALL |
149 | void gtk_tree_view_column_set_min_width (GtkTreeViewColumn *tree_column, |
150 | int min_width); |
151 | GDK_AVAILABLE_IN_ALL |
152 | int gtk_tree_view_column_get_min_width (GtkTreeViewColumn *tree_column); |
153 | GDK_AVAILABLE_IN_ALL |
154 | void gtk_tree_view_column_set_max_width (GtkTreeViewColumn *tree_column, |
155 | int max_width); |
156 | GDK_AVAILABLE_IN_ALL |
157 | int gtk_tree_view_column_get_max_width (GtkTreeViewColumn *tree_column); |
158 | GDK_AVAILABLE_IN_ALL |
159 | void gtk_tree_view_column_clicked (GtkTreeViewColumn *tree_column); |
160 | |
161 | |
162 | |
163 | /* Options for manipulating the column headers |
164 | */ |
165 | GDK_AVAILABLE_IN_ALL |
166 | void gtk_tree_view_column_set_title (GtkTreeViewColumn *tree_column, |
167 | const char *title); |
168 | GDK_AVAILABLE_IN_ALL |
169 | const char * gtk_tree_view_column_get_title (GtkTreeViewColumn *tree_column); |
170 | GDK_AVAILABLE_IN_ALL |
171 | void gtk_tree_view_column_set_expand (GtkTreeViewColumn *tree_column, |
172 | gboolean expand); |
173 | GDK_AVAILABLE_IN_ALL |
174 | gboolean gtk_tree_view_column_get_expand (GtkTreeViewColumn *tree_column); |
175 | GDK_AVAILABLE_IN_ALL |
176 | void gtk_tree_view_column_set_clickable (GtkTreeViewColumn *tree_column, |
177 | gboolean clickable); |
178 | GDK_AVAILABLE_IN_ALL |
179 | gboolean gtk_tree_view_column_get_clickable (GtkTreeViewColumn *tree_column); |
180 | GDK_AVAILABLE_IN_ALL |
181 | void gtk_tree_view_column_set_widget (GtkTreeViewColumn *tree_column, |
182 | GtkWidget *widget); |
183 | GDK_AVAILABLE_IN_ALL |
184 | GtkWidget *gtk_tree_view_column_get_widget (GtkTreeViewColumn *tree_column); |
185 | GDK_AVAILABLE_IN_ALL |
186 | void gtk_tree_view_column_set_alignment (GtkTreeViewColumn *tree_column, |
187 | float xalign); |
188 | GDK_AVAILABLE_IN_ALL |
189 | float gtk_tree_view_column_get_alignment (GtkTreeViewColumn *tree_column); |
190 | GDK_AVAILABLE_IN_ALL |
191 | void gtk_tree_view_column_set_reorderable (GtkTreeViewColumn *tree_column, |
192 | gboolean reorderable); |
193 | GDK_AVAILABLE_IN_ALL |
194 | gboolean gtk_tree_view_column_get_reorderable (GtkTreeViewColumn *tree_column); |
195 | |
196 | |
197 | |
198 | /* You probably only want to use gtk_tree_view_column_set_sort_column_id. The |
199 | * other sorting functions exist primarily to let others do their own custom sorting. |
200 | */ |
201 | GDK_AVAILABLE_IN_ALL |
202 | void gtk_tree_view_column_set_sort_column_id (GtkTreeViewColumn *tree_column, |
203 | int sort_column_id); |
204 | GDK_AVAILABLE_IN_ALL |
205 | int gtk_tree_view_column_get_sort_column_id (GtkTreeViewColumn *tree_column); |
206 | GDK_AVAILABLE_IN_ALL |
207 | void gtk_tree_view_column_set_sort_indicator (GtkTreeViewColumn *tree_column, |
208 | gboolean setting); |
209 | GDK_AVAILABLE_IN_ALL |
210 | gboolean gtk_tree_view_column_get_sort_indicator (GtkTreeViewColumn *tree_column); |
211 | GDK_AVAILABLE_IN_ALL |
212 | void gtk_tree_view_column_set_sort_order (GtkTreeViewColumn *tree_column, |
213 | GtkSortType order); |
214 | GDK_AVAILABLE_IN_ALL |
215 | GtkSortType gtk_tree_view_column_get_sort_order (GtkTreeViewColumn *tree_column); |
216 | |
217 | |
218 | /* These functions are meant primarily for interaction between the GtkTreeView and the column. |
219 | */ |
220 | GDK_AVAILABLE_IN_ALL |
221 | void gtk_tree_view_column_cell_set_cell_data (GtkTreeViewColumn *tree_column, |
222 | GtkTreeModel *tree_model, |
223 | GtkTreeIter *iter, |
224 | gboolean is_expander, |
225 | gboolean is_expanded); |
226 | GDK_AVAILABLE_IN_ALL |
227 | void gtk_tree_view_column_cell_get_size (GtkTreeViewColumn *tree_column, |
228 | int *x_offset, |
229 | int *y_offset, |
230 | int *width, |
231 | int *height); |
232 | GDK_AVAILABLE_IN_ALL |
233 | gboolean gtk_tree_view_column_cell_is_visible (GtkTreeViewColumn *tree_column); |
234 | GDK_AVAILABLE_IN_ALL |
235 | void gtk_tree_view_column_focus_cell (GtkTreeViewColumn *tree_column, |
236 | GtkCellRenderer *cell); |
237 | GDK_AVAILABLE_IN_ALL |
238 | gboolean gtk_tree_view_column_cell_get_position (GtkTreeViewColumn *tree_column, |
239 | GtkCellRenderer *cell_renderer, |
240 | int *x_offset, |
241 | int *width); |
242 | GDK_AVAILABLE_IN_ALL |
243 | void gtk_tree_view_column_queue_resize (GtkTreeViewColumn *tree_column); |
244 | GDK_AVAILABLE_IN_ALL |
245 | GtkWidget *gtk_tree_view_column_get_tree_view (GtkTreeViewColumn *tree_column); |
246 | GDK_AVAILABLE_IN_ALL |
247 | GtkWidget *gtk_tree_view_column_get_button (GtkTreeViewColumn *tree_column); |
248 | |
249 | |
250 | G_END_DECLS |
251 | |
252 | |
253 | #endif /* __GTK_TREE_VIEW_COLUMN_H__ */ |
254 | |