/* * Copyright (c) 2004-2005, 2009 by the gtk2-perl team (see the file AUTHORS) * * Licensed under the LGPL, see LICENSE file for more information. * * $Id$ */ #include "gtk2perl.h" static GPerlCallback * gtk2perl_icon_view_foreach_func_create (SV * func, SV * data) { GType param_types [2]; param_types[0] = GTK_TYPE_ICON_VIEW; param_types[1] = GTK_TYPE_TREE_PATH; return gperl_callback_new (func, data, G_N_ELEMENTS (param_types), param_types, G_TYPE_NONE); } static void gtk2perl_icon_view_foreach_func (GtkIconView *icon_view, GtkTreePath *path, gpointer data) { gperl_callback_invoke ((GPerlCallback*) data, NULL, icon_view, path); } MODULE = Gtk2::IconView PACKAGE = Gtk2::IconView PREFIX = gtk_icon_view_ GtkWidget * gtk_icon_view_new (class) C_ARGS: /* void */ GtkWidget * gtk_icon_view_new_with_model (class, model) GtkTreeModel * model C_ARGS: 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); void gtk_icon_view_set_orientation (GtkIconView * icon_view, GtkOrientation orientation); GtkOrientation gtk_icon_view_get_orientation (GtkIconView * icon_view); 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, gint item_width); 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, gint row_spacing); gint gtk_icon_view_get_row_spacing (GtkIconView *icon_view); void gtk_icon_view_set_column_spacing (GtkIconView *icon_view, gint column_spacing); gint gtk_icon_view_get_column_spacing (GtkIconView *icon_view); void gtk_icon_view_set_margin (GtkIconView *icon_view, gint margin); gint gtk_icon_view_get_margin (GtkIconView *icon_view); GtkTreePath_own * gtk_icon_view_get_path_at_pos (GtkIconView * icon_view, gint x, gint y); ## void gtk_icon_view_selected_foreach (GtkIconView * icon_view, GtkIconViewForeachFunc func, gpointer data); void gtk_icon_view_selected_foreach (GtkIconView * icon_view, SV * func, SV * data=NULL); PREINIT: GPerlCallback * callback; CODE: callback = gtk2perl_icon_view_foreach_func_create (func, data); gtk_icon_view_selected_foreach (icon_view, gtk2perl_icon_view_foreach_func, callback); gperl_callback_destroy (callback); void gtk_icon_view_set_selection_mode (GtkIconView * icon_view, GtkSelectionMode mode); GtkSelectionMode gtk_icon_view_get_selection_mode (GtkIconView * icon_view); void gtk_icon_view_select_path (GtkIconView * icon_view, GtkTreePath * path); void gtk_icon_view_unselect_path (GtkIconView * icon_view, GtkTreePath * path); gboolean gtk_icon_view_path_is_selected (GtkIconView * icon_view, GtkTreePath * path); ## GList * gtk_icon_view_get_selected_items (GtkIconView * icon_view); void gtk_icon_view_get_selected_items (GtkIconView * icon_view) PREINIT: GList * list; PPCODE: list = gtk_icon_view_get_selected_items (icon_view); if (list) { GList * curr; for (curr = list; curr; curr = g_list_next (curr)) XPUSHs (sv_2mortal (newSVGtkTreePath_own (curr->data))); g_list_free (list); } else XSRETURN_EMPTY; 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, GtkTreePath * path); #if GTK_CHECK_VERSION(2, 8, 0) ## gboolean gtk_icon_view_get_cursor (GtkIconView *icon_view, GtkTreePath **path, GtkCellRenderer **cell); void gtk_icon_view_get_cursor (icon_view) GtkIconView *icon_view PREINIT: GtkTreePath *path = NULL; GtkCellRenderer *cell = NULL; PPCODE: if (!gtk_icon_view_get_cursor (icon_view, &path, &cell)) XSRETURN_EMPTY; EXTEND (sp, 2); PUSHs (sv_2mortal (newSVGtkTreePath_own (path))); PUSHs (sv_2mortal (newSVGtkCellRenderer (cell))); void gtk_icon_view_set_cursor (GtkIconView *icon_view, GtkTreePath *path, GtkCellRenderer_ornull *cell, gboolean start_editing); ## gboolean gtk_icon_view_get_item_at_pos (GtkIconView *icon_view, gint x, gint y, GtkTreePath **path, GtkCellRenderer **cell); void gtk_icon_view_get_item_at_pos (icon_view, x, y) GtkIconView *icon_view gint x gint y PREINIT: GtkTreePath *path = NULL; GtkCellRenderer *cell = NULL; CODE: /* Note gtk_icon_view_get_item_at_pos() can call out to perl model and/or cell renderer code when figuring sizes, so avoid local SP. */ if (!gtk_icon_view_get_item_at_pos (icon_view, x, y, &path, &cell)) XSRETURN_EMPTY; ST(0) = sv_2mortal (newSVGtkTreePath_own (path)); ST(1) = sv_2mortal (newSVGtkCellRenderer (cell)); XSRETURN(2); ## gboolean gtk_icon_view_get_visible_range (GtkIconView *icon_view, GtkTreePath **start_path, GtkTreePath **end_path); void gtk_icon_view_get_visible_range (icon_view) GtkIconView *icon_view PREINIT: GtkTreePath *start_path = NULL, *end_path = NULL; PPCODE: if (!gtk_icon_view_get_visible_range(icon_view, &start_path, &end_path)) XSRETURN_EMPTY; EXTEND (sp, 2); PUSHs (sv_2mortal (newSVGtkTreePath_own (start_path))); PUSHs (sv_2mortal (newSVGtkTreePath_own (end_path))); void gtk_icon_view_scroll_to_path (GtkIconView *icon_view, GtkTreePath *path, gboolean use_align=FALSE, gfloat row_align=0.0, gfloat col_align=0.0); ## void gtk_icon_view_enable_model_drag_source (GtkIconView *icon_view, GdkModifierType start_button_mask, const GtkTargetEntry *targets, gint n_targets, GdkDragAction actions); =for apidoc =for arg ... of Gtk2::TargetEntry's =cut void gtk_icon_view_enable_model_drag_source (icon_view, start_button_mask, actions, ...) GtkIconView *icon_view GdkModifierType start_button_mask GdkDragAction actions PREINIT: GtkTargetEntry * targets = NULL; gint n_targets, i; CODE: #define FIRST_TARGET 3 n_targets = items - FIRST_TARGET; targets = g_new (GtkTargetEntry, n_targets); for (i = 0 ; i < n_targets ; i++) gtk2perl_read_gtk_target_entry (ST (i+FIRST_TARGET), targets+i); gtk_icon_view_enable_model_drag_source (icon_view, start_button_mask, targets, n_targets, actions); #undef FIRST_TARGET CLEANUP: g_free (targets); ## void gtk_icon_view_enable_model_drag_dest (GtkIconView *icon_view, const GtkTargetEntry *targets, gint n_targets, GdkDragAction actions); =for apidoc =for arg ... of Gtk2::TargetEntry's =cut void gtk_icon_view_enable_model_drag_dest (icon_view, actions, ...) GtkIconView *icon_view GdkDragAction actions PREINIT: GtkTargetEntry * targets = NULL; gint n_targets, i; CODE: #define FIRST_TARGET 2 n_targets = items - FIRST_TARGET; targets = g_new (GtkTargetEntry, n_targets); for (i = 0 ; i < n_targets ; i++) gtk2perl_read_gtk_target_entry (ST (i+FIRST_TARGET), targets+i); gtk_icon_view_enable_model_drag_dest (icon_view, targets, n_targets, actions); #undef FIRST_TARGET CLEANUP: g_free (targets); 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); 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); void gtk_icon_view_get_drag_dest_item (GtkIconView *icon_view) PREINIT: GtkTreePath *path = NULL; GtkIconViewDropPosition pos; PPCODE: gtk_icon_view_get_drag_dest_item (icon_view, &path, &pos); EXTEND (SP, 2); PUSHs (sv_2mortal (newSVGtkTreePath_own (path))); PUSHs (sv_2mortal (newSVGtkIconViewDropPosition (pos))); ## gboolean gtk_icon_view_get_dest_item_at_pos (GtkIconView *icon_view, gint drag_x, gint drag_y, GtkTreePath **path, GtkIconViewDropPosition *pos); void gtk_icon_view_get_dest_item_at_pos (icon_view, drag_x, drag_y) GtkIconView *icon_view gint drag_x gint drag_y PREINIT: GtkTreePath *path = NULL; GtkIconViewDropPosition pos; CODE: /* Note gtk_icon_view_get_dest_item_at_pos() may call out to perl model and/or cell renderer code when figuring cell sizes (in gtk_icon_view_get_item_at_coords()), so avoid local SP. */ if (!gtk_icon_view_get_dest_item_at_pos (icon_view, drag_x, drag_y, &path, &pos)) XSRETURN_EMPTY; ST(0) = sv_2mortal (newSVGtkTreePath_own (path)); ST(1) = sv_2mortal (newSVGtkIconViewDropPosition (pos)); XSRETURN(2); GdkPixmap_noinc *gtk_icon_view_create_drag_icon (GtkIconView *icon_view, GtkTreePath *path); #endif /* 2.8.0 */ #if GTK_CHECK_VERSION (2, 12, 0) void gtk_icon_view_convert_widget_to_bin_window_coords (GtkIconView *icon_view, gint wx, gint wy, OUTLIST gint bx, OUTLIST gint by); 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); # 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_get_tooltip_context (GtkIconView *icon_view, gint x, gint y, gboolean keyboard_tip) PREINIT: GtkTreeModel *model = NULL; GtkTreePath *path = NULL; GtkTreeIter iter = {0, }; PPCODE: /* PUTBACK/SPAGAIN because gtk_icon_view_get_tooltip_context() calls gtk_tree_model_get_iter(), which may reach a perl code model. */ PUTBACK; if (! gtk_icon_view_get_tooltip_context (icon_view, &x, &y, keyboard_tip, &model, &path, &iter)) XSRETURN_EMPTY; SPAGAIN; EXTEND (sp, 5); PUSHs (sv_2mortal (newSViv (x))); PUSHs (sv_2mortal (newSViv (y))); PUSHs (sv_2mortal (newSVGtkTreeModel (model))); PUSHs (sv_2mortal (newSVGtkTreePath_own (path))); PUSHs (sv_2mortal (newSVGtkTreeIter_copy (&iter))); void gtk_icon_view_set_tooltip_column (GtkIconView *icon_view, gint column); gint gtk_icon_view_get_tooltip_column (GtkIconView *icon_view); #endif #if GTK_CHECK_VERSION (2, 18, 0) void gtk_icon_view_set_item_padding (GtkIconView *icon_view, gint item_padding); gint gtk_icon_view_get_item_padding (GtkIconView *icon_view); #endif #if GTK_CHECK_VERSION (2, 22, 0) gint gtk_icon_view_get_item_row (GtkIconView *icon_view, GtkTreePath *path); gint gtk_icon_view_get_item_column (GtkIconView *icon_view, GtkTreePath *path); void gtk_icon_view_set_item_orientation (GtkIconView *icon_view, GtkOrientation orientation); GtkOrientation gtk_icon_view_get_item_orientation (GtkIconView *icon_view); #endif /* 2.22 */