gtkiconview.h 12.9 KB
Newer Older
1
/* gtkiconview.h
2
 * Copyright (C) 2002, 2004  Anders Carlsson <andersca@gnome.org>
Anders Carlsson's avatar
Anders Carlsson committed
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
 */
19

20
#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
21 22 23
#error "Only <gtk/gtk.h> can be included directly."
#endif

24 25
#ifndef __GTK_ICON_VIEW_H__
#define __GTK_ICON_VIEW_H__
Anders Carlsson's avatar
Anders Carlsson committed
26 27

#include <gtk/gtkcontainer.h>
28
#include <gtk/gtktreemodel.h>
Matthias Clasen's avatar
Matthias Clasen committed
29
#include <gtk/gtkcellrenderer.h>
30
#include <gtk/gtkcellarea.h>
Matthias Clasen's avatar
Matthias Clasen committed
31
#include <gtk/gtkselection.h>
32
#include <gtk/gtktooltip.h>
Anders Carlsson's avatar
Anders Carlsson committed
33 34 35

G_BEGIN_DECLS

36 37 38 39 40 41
#define GTK_TYPE_ICON_VIEW            (gtk_icon_view_get_type ())
#define GTK_ICON_VIEW(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_ICON_VIEW, GtkIconView))
#define GTK_ICON_VIEW_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_ICON_VIEW, GtkIconViewClass))
#define GTK_IS_ICON_VIEW(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_ICON_VIEW))
#define GTK_IS_ICON_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_ICON_VIEW))
#define GTK_ICON_VIEW_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_ICON_VIEW, GtkIconViewClass))
Anders Carlsson's avatar
Anders Carlsson committed
42

43 44 45
typedef struct _GtkIconView           GtkIconView;
typedef struct _GtkIconViewClass      GtkIconViewClass;
typedef struct _GtkIconViewPrivate    GtkIconViewPrivate;
Anders Carlsson's avatar
Anders Carlsson committed
46

47 48 49 50 51 52 53 54 55
/**
 * GtkIconViewForeachFunc:
 * @icon_view: a #GtkIconView
 * @path: The #GtkTreePath of a selected row
 * @data: user data
 *
 * A function used by gtk_icon_view_selected_foreach() to map all
 * selected rows.  It will be called on every selected row in the view.
 */
56
typedef void (* GtkIconViewForeachFunc)     (GtkIconView      *icon_view,
57
					     GtkTreePath      *path,
Anders Carlsson's avatar
Anders Carlsson committed
58 59
					     gpointer          data);

60 61 62 63 64 65 66 67 68 69 70
/**
 * GtkIconViewDropPosition:
 * @GTK_ICON_VIEW_NO_DROP: no drop possible
 * @GTK_ICON_VIEW_DROP_INTO: dropped item replaces the item
 * @GTK_ICON_VIEW_DROP_LEFT: droppped item is inserted to the left
 * @GTK_ICON_VIEW_DROP_RIGHT: dropped item is inserted to the right
 * @GTK_ICON_VIEW_DROP_ABOVE: dropped item is inserted above
 * @GTK_ICON_VIEW_DROP_BELOW: dropped item is inserted below
 *
 * An enum for determining where a dropped item goes.
 */
Matthias Clasen's avatar
Matthias Clasen committed
71 72 73 74 75 76 77 78 79 80
typedef enum
{
  GTK_ICON_VIEW_NO_DROP,
  GTK_ICON_VIEW_DROP_INTO,
  GTK_ICON_VIEW_DROP_LEFT,
  GTK_ICON_VIEW_DROP_RIGHT,
  GTK_ICON_VIEW_DROP_ABOVE,
  GTK_ICON_VIEW_DROP_BELOW
} GtkIconViewDropPosition;

81
struct _GtkIconView
Anders Carlsson's avatar
Anders Carlsson committed
82 83 84
{
  GtkContainer parent;

85
  /*< private >*/
86
  GtkIconViewPrivate *priv;
Anders Carlsson's avatar
Anders Carlsson committed
87 88
};

89
struct _GtkIconViewClass
Anders Carlsson's avatar
Anders Carlsson committed
90 91 92
{
  GtkContainerClass parent_class;

93
  void    (* item_activated)         (GtkIconView      *icon_view,
94
				      GtkTreePath      *path);
95
  void    (* selection_changed)      (GtkIconView      *icon_view);
96

Anders Carlsson's avatar
Anders Carlsson committed
97
  /* Key binding signals */
98 99 100 101 102
  void    (* select_all)             (GtkIconView      *icon_view);
  void    (* unselect_all)           (GtkIconView      *icon_view);
  void    (* select_cursor_item)     (GtkIconView      *icon_view);
  void    (* toggle_cursor_item)     (GtkIconView      *icon_view);
  gboolean (* move_cursor)           (GtkIconView      *icon_view,
Matthias Clasen's avatar
Matthias Clasen committed
103 104
				      GtkMovementStep   step,
				      gint              count);
105
  gboolean (* activate_cursor_item)  (GtkIconView      *icon_view);
106 107 108 109 110 111

  /* Padding for future expansion */
  void (*_gtk_reserved1) (void);
  void (*_gtk_reserved2) (void);
  void (*_gtk_reserved3) (void);
  void (*_gtk_reserved4) (void);
Anders Carlsson's avatar
Anders Carlsson committed
112 113
};

Matthias Clasen's avatar
Matthias Clasen committed
114 115
GType          gtk_icon_view_get_type          (void) G_GNUC_CONST;
GtkWidget *    gtk_icon_view_new               (void);
116
GtkWidget *    gtk_icon_view_new_with_area     (GtkCellArea    *area);
Matthias Clasen's avatar
Matthias Clasen committed
117 118 119 120 121 122 123 124 125 126 127 128 129 130
GtkWidget *    gtk_icon_view_new_with_model    (GtkTreeModel   *model);

void           gtk_icon_view_set_model         (GtkIconView    *icon_view,
 					        GtkTreeModel   *model);
GtkTreeModel * gtk_icon_view_get_model         (GtkIconView    *icon_view);
void           gtk_icon_view_set_text_column   (GtkIconView    *icon_view,
	 	 			        gint            column);
gint           gtk_icon_view_get_text_column   (GtkIconView    *icon_view);
void           gtk_icon_view_set_markup_column (GtkIconView    *icon_view,
					        gint            column);
gint           gtk_icon_view_get_markup_column (GtkIconView    *icon_view);
void           gtk_icon_view_set_pixbuf_column (GtkIconView    *icon_view,
					        gint            column);
gint           gtk_icon_view_get_pixbuf_column (GtkIconView    *icon_view);
131

132 133 134
void           gtk_icon_view_set_item_orientation (GtkIconView    *icon_view,
                                                   GtkOrientation  orientation);
GtkOrientation gtk_icon_view_get_item_orientation (GtkIconView    *icon_view);
Matthias Clasen's avatar
Matthias Clasen committed
135 136 137 138
void           gtk_icon_view_set_columns       (GtkIconView    *icon_view,
		 			        gint            columns);
gint           gtk_icon_view_get_columns       (GtkIconView    *icon_view);
void           gtk_icon_view_set_item_width    (GtkIconView    *icon_view,
Matthias Clasen's avatar
Matthias Clasen committed
139
					        gint            item_width);
Matthias Clasen's avatar
Matthias Clasen committed
140 141 142 143 144
gint           gtk_icon_view_get_item_width    (GtkIconView    *icon_view);
void           gtk_icon_view_set_spacing       (GtkIconView    *icon_view, 
		 			        gint            spacing);
gint           gtk_icon_view_get_spacing       (GtkIconView    *icon_view);
void           gtk_icon_view_set_row_spacing   (GtkIconView    *icon_view, 
Matthias Clasen's avatar
Matthias Clasen committed
145
					        gint            row_spacing);
Matthias Clasen's avatar
Matthias Clasen committed
146 147
gint           gtk_icon_view_get_row_spacing   (GtkIconView    *icon_view);
void           gtk_icon_view_set_column_spacing (GtkIconView    *icon_view, 
Matthias Clasen's avatar
Matthias Clasen committed
148
					        gint            column_spacing);
Matthias Clasen's avatar
Matthias Clasen committed
149 150
gint           gtk_icon_view_get_column_spacing (GtkIconView    *icon_view);
void           gtk_icon_view_set_margin        (GtkIconView    *icon_view, 
Matthias Clasen's avatar
Matthias Clasen committed
151
					        gint            margin);
Matthias Clasen's avatar
Matthias Clasen committed
152
gint           gtk_icon_view_get_margin        (GtkIconView    *icon_view);
153 154 155
void           gtk_icon_view_set_item_padding  (GtkIconView    *icon_view, 
					        gint            item_padding);
gint           gtk_icon_view_get_item_padding  (GtkIconView    *icon_view);
Matthias Clasen's avatar
Matthias Clasen committed
156 157 158 159 160 161 162 163 164

GtkTreePath *  gtk_icon_view_get_path_at_pos   (GtkIconView     *icon_view,
						gint             x,
						gint             y);
gboolean       gtk_icon_view_get_item_at_pos   (GtkIconView     *icon_view,
						gint              x,
						gint              y,
						GtkTreePath     **path,
						GtkCellRenderer **cell);
165 166 167
gboolean       gtk_icon_view_get_visible_range (GtkIconView      *icon_view,
						GtkTreePath     **start_path,
						GtkTreePath     **end_path);
Matthias Clasen's avatar
Matthias Clasen committed
168 169 170 171 172 173

void           gtk_icon_view_selected_foreach   (GtkIconView            *icon_view,
						 GtkIconViewForeachFunc  func,
						 gpointer                data);
void           gtk_icon_view_set_selection_mode (GtkIconView            *icon_view,
						 GtkSelectionMode        mode);
174 175
GtkSelectionMode gtk_icon_view_get_selection_mode (GtkIconView            *icon_view);
void             gtk_icon_view_select_path        (GtkIconView            *icon_view,
176
						   GtkTreePath            *path);
177
void             gtk_icon_view_unselect_path      (GtkIconView            *icon_view,
178
						   GtkTreePath            *path);
179
gboolean         gtk_icon_view_path_is_selected   (GtkIconView            *icon_view,
180
						   GtkTreePath            *path);
181 182 183 184
gint             gtk_icon_view_get_item_row       (GtkIconView            *icon_view,
                                                   GtkTreePath            *path);
gint             gtk_icon_view_get_item_column    (GtkIconView            *icon_view,
                                                   GtkTreePath            *path);
185 186 187 188
GList           *gtk_icon_view_get_selected_items (GtkIconView            *icon_view);
void             gtk_icon_view_select_all         (GtkIconView            *icon_view);
void             gtk_icon_view_unselect_all       (GtkIconView            *icon_view);
void             gtk_icon_view_item_activated     (GtkIconView            *icon_view,
189
						   GtkTreePath            *path);
Matthias Clasen's avatar
Matthias Clasen committed
190 191 192 193 194 195 196
void             gtk_icon_view_set_cursor         (GtkIconView            *icon_view,
						   GtkTreePath            *path,
						   GtkCellRenderer        *cell,
						   gboolean                start_editing);
gboolean         gtk_icon_view_get_cursor         (GtkIconView            *icon_view,
						   GtkTreePath           **path,
						   GtkCellRenderer       **cell);
197 198 199 200 201
void             gtk_icon_view_scroll_to_path     (GtkIconView            *icon_view,
                                                   GtkTreePath            *path,
						   gboolean                use_align,
						   gfloat                  row_align,
                                                   gfloat                  col_align);
Matthias Clasen's avatar
Matthias Clasen committed
202

Matthias Clasen's avatar
Matthias Clasen committed
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231
/* Drag-and-Drop support */
void                   gtk_icon_view_enable_model_drag_source (GtkIconView              *icon_view,
							       GdkModifierType           start_button_mask,
							       const GtkTargetEntry     *targets,
							       gint                      n_targets,
							       GdkDragAction             actions);
void                   gtk_icon_view_enable_model_drag_dest   (GtkIconView              *icon_view,
							       const GtkTargetEntry     *targets,
							       gint                      n_targets,
							       GdkDragAction             actions);
void                   gtk_icon_view_unset_model_drag_source  (GtkIconView              *icon_view);
void                   gtk_icon_view_unset_model_drag_dest    (GtkIconView              *icon_view);
void                   gtk_icon_view_set_reorderable          (GtkIconView              *icon_view,
							       gboolean                  reorderable);
gboolean               gtk_icon_view_get_reorderable          (GtkIconView              *icon_view);


/* These are useful to implement your own custom stuff. */
void                   gtk_icon_view_set_drag_dest_item       (GtkIconView              *icon_view,
							       GtkTreePath              *path,
							       GtkIconViewDropPosition   pos);
void                   gtk_icon_view_get_drag_dest_item       (GtkIconView              *icon_view,
							       GtkTreePath             **path,
							       GtkIconViewDropPosition  *pos);
gboolean               gtk_icon_view_get_dest_item_at_pos     (GtkIconView              *icon_view,
							       gint                      drag_x,
							       gint                      drag_y,
							       GtkTreePath             **path,
							       GtkIconViewDropPosition  *pos);
232
cairo_surface_t       *gtk_icon_view_create_drag_icon         (GtkIconView              *icon_view,
Matthias Clasen's avatar
Matthias Clasen committed
233 234
							       GtkTreePath              *path);

235 236 237 238 239 240
void    gtk_icon_view_convert_widget_to_bin_window_coords     (GtkIconView *icon_view,
                                                               gint         wx,
                                                               gint         wy,
                                                               gint        *bx,
                                                               gint        *by);

Matthias Clasen's avatar
Matthias Clasen committed
241

242 243 244 245 246 247 248
void    gtk_icon_view_set_tooltip_item                        (GtkIconView     *icon_view,
                                                               GtkTooltip      *tooltip,
                                                               GtkTreePath     *path);
void    gtk_icon_view_set_tooltip_cell                        (GtkIconView     *icon_view,
                                                               GtkTooltip      *tooltip,
                                                               GtkTreePath     *path,
                                                               GtkCellRenderer *cell);
249 250 251 252 253 254 255 256 257 258
gboolean gtk_icon_view_get_tooltip_context                    (GtkIconView       *icon_view,
                                                               gint              *x,
                                                               gint              *y,
                                                               gboolean           keyboard_tip,
                                                               GtkTreeModel     **model,
                                                               GtkTreePath      **path,
                                                               GtkTreeIter       *iter);
void     gtk_icon_view_set_tooltip_column                     (GtkIconView       *icon_view,
                                                               gint               column);
gint     gtk_icon_view_get_tooltip_column                     (GtkIconView       *icon_view);
259 260


Anders Carlsson's avatar
Anders Carlsson committed
261 262
G_END_DECLS

263
#endif /* __GTK_ICON_VIEW_H__ */