gtkiconview.h 11.5 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 21 22 23

#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#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>
Matthias Clasen's avatar
Matthias Clasen committed
30
#include <gtk/gtkselection.h>
31
#include <gtk/gtktooltip.h>
Anders Carlsson's avatar
Anders Carlsson committed
32 33 34

G_BEGIN_DECLS

35 36 37 38 39 40
#define GTK_TYPE_ICON_VIEW		(gtk_icon_view_get_type ())
#define GTK_ICON_VIEW(obj)		(GTK_CHECK_CAST ((obj), GTK_TYPE_ICON_VIEW, GtkIconView))
#define GTK_ICON_VIEW_CLASS(klass)	(GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_ICON_VIEW, GtkIconViewClass))
#define GTK_IS_ICON_VIEW(obj)		(GTK_CHECK_TYPE ((obj), GTK_TYPE_ICON_VIEW))
#define GTK_IS_ICON_VIEW_CLASS(klass)	(GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_ICON_VIEW))
#define GTK_ICON_VIEW_GET_CLASS(obj)    (GTK_CHECK_GET_CLASS ((obj), GTK_TYPE_ICON_VIEW, GtkIconViewClass))
Anders Carlsson's avatar
Anders Carlsson committed
41

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

46
typedef void (* GtkIconViewForeachFunc)     (GtkIconView      *icon_view,
47
					     GtkTreePath      *path,
Anders Carlsson's avatar
Anders Carlsson committed
48 49
					     gpointer          data);

Matthias Clasen's avatar
Matthias Clasen committed
50 51 52 53 54 55 56 57 58 59
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;

60
struct _GtkIconView
Anders Carlsson's avatar
Anders Carlsson committed
61 62 63
{
  GtkContainer parent;

64
  GtkIconViewPrivate *priv;
Anders Carlsson's avatar
Anders Carlsson committed
65 66
};

67
struct _GtkIconViewClass
Anders Carlsson's avatar
Anders Carlsson committed
68 69 70
{
  GtkContainerClass parent_class;

71
  void    (* set_scroll_adjustments) (GtkIconView      *icon_view,
Anders Carlsson's avatar
Anders Carlsson committed
72 73 74
				      GtkAdjustment    *hadjustment,
				      GtkAdjustment    *vadjustment);
  
75
  void    (* item_activated)         (GtkIconView      *icon_view,
76
				      GtkTreePath      *path);
77
  void    (* selection_changed)      (GtkIconView      *icon_view);
78

Anders Carlsson's avatar
Anders Carlsson committed
79
  /* Key binding signals */
80 81 82 83 84
  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
85 86
				      GtkMovementStep   step,
				      gint              count);
87
  gboolean (* activate_cursor_item)  (GtkIconView      *icon_view);
Anders Carlsson's avatar
Anders Carlsson committed
88 89
};

Matthias Clasen's avatar
Matthias Clasen committed
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
GType          gtk_icon_view_get_type          (void) G_GNUC_CONST;
GtkWidget *    gtk_icon_view_new               (void);
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);
106

Matthias Clasen's avatar
Matthias Clasen committed
107 108 109
void           gtk_icon_view_set_orientation   (GtkIconView    *icon_view,
	   			                GtkOrientation  orientation);
GtkOrientation gtk_icon_view_get_orientation   (GtkIconView    *icon_view);
Matthias Clasen's avatar
Matthias Clasen committed
110 111 112 113
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
114
					        gint            item_width);
Matthias Clasen's avatar
Matthias Clasen committed
115 116 117 118 119
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
120
					        gint            row_spacing);
Matthias Clasen's avatar
Matthias Clasen committed
121 122
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
123
					        gint            column_spacing);
Matthias Clasen's avatar
Matthias Clasen committed
124 125
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
126
					        gint            margin);
Matthias Clasen's avatar
Matthias Clasen committed
127 128 129 130 131 132 133 134 135 136 137
gint           gtk_icon_view_get_margin        (GtkIconView    *icon_view);


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);
138 139 140
gboolean       gtk_icon_view_get_visible_range (GtkIconView      *icon_view,
						GtkTreePath     **start_path,
						GtkTreePath     **end_path);
Matthias Clasen's avatar
Matthias Clasen committed
141 142 143 144 145 146

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);
147 148
GtkSelectionMode gtk_icon_view_get_selection_mode (GtkIconView            *icon_view);
void             gtk_icon_view_select_path        (GtkIconView            *icon_view,
149
						   GtkTreePath            *path);
150
void             gtk_icon_view_unselect_path      (GtkIconView            *icon_view,
151
						   GtkTreePath            *path);
152
gboolean         gtk_icon_view_path_is_selected   (GtkIconView            *icon_view,
153
						   GtkTreePath            *path);
154 155 156 157
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,
158
						   GtkTreePath            *path);
Matthias Clasen's avatar
Matthias Clasen committed
159 160 161 162 163 164 165
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);
166 167 168 169 170
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
171

Matthias Clasen's avatar
Matthias Clasen committed
172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203
/* 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);
GdkPixmap             *gtk_icon_view_create_drag_icon         (GtkIconView              *icon_view,
							       GtkTreePath              *path);

204 205 206 207 208 209
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
210

211 212 213 214 215 216 217
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);
218 219 220 221 222 223 224 225 226 227
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);
228 229


Anders Carlsson's avatar
Anders Carlsson committed
230 231
G_END_DECLS

232
#endif /* __GTK_ICON_VIEW_H__ */