/* * Copyright (c) 2006 by the gtk2-perl team (see the file AUTHORS) * * Licensed under the LGPL, see LICENSE file for more information. * * $Id$ */ #include "gtk2perl.h" static gint gtk2perl_recent_sort_func (GtkRecentInfo *a, GtkRecentInfo *b, gpointer user_data) { GPerlCallback *callback = (GPerlCallback *) user_data; GValue value = { 0, }; gint retval; g_value_init (&value, callback->return_type); gperl_callback_invoke (callback, &value, a, b); retval = g_value_get_int (&value); g_value_unset (&value); return retval; } static GPerlCallback * gtk2perl_recent_sort_func_create (SV *func, SV *data) { GType param_types[2]; param_types[0] = GTK_TYPE_RECENT_INFO; param_types[1] = GTK_TYPE_RECENT_INFO; return gperl_callback_new (func, data, G_N_ELEMENTS (param_types), param_types, G_TYPE_INT); } MODULE = Gtk2::RecentChooser PACKAGE = Gtk2::RecentChooser PREFIX = gtk_recent_chooser_ =for enum GtkRecentSortType =cut =for enum GtkRecentChooserError =cut # # Configuration # void gtk_recent_chooser_set_show_private (GtkRecentChooser *chooser, gboolean show_private) gboolean gtk_recent_chooser_get_show_private (GtkRecentChooser *chooser) void gtk_recent_chooser_set_show_not_found (GtkRecentChooser *chooser, gboolean show_not_found) gboolean gtk_recent_chooser_get_show_not_found (GtkRecentChooser *chooser) void gtk_recent_chooser_set_select_multiple (GtkRecentChooser *chooser, gboolean select_multiple) gboolean gtk_recent_chooser_get_select_multiple (GtkRecentChooser *chooser) void gtk_recent_chooser_set_limit (GtkRecentChooser *chooser, gint limit) gint gtk_recent_chooser_get_limit (GtkRecentChooser *chooser) void gtk_recent_chooser_set_local_only (GtkRecentChooser *chooser, gboolean local_only) gboolean gtk_recent_chooser_get_local_only (GtkRecentChooser *chooser) void gtk_recent_chooser_set_show_tips (GtkRecentChooser *chooser, gboolean show_tips) gboolean gtk_recent_chooser_get_show_tips (GtkRecentChooser *chooser) # these are a gtk mistake, and we should not bind them. ##void ##gtk_recent_chooser_set_show_numbers (GtkRecentChooser *chooser, gboolean show_numbers) ## ##gboolean ##gtk_recent_chooser_get_show_numbers (GtkRecentChooser *chooser) void gtk_recent_chooser_set_show_icons (GtkRecentChooser *chooser, gboolean show_icons) gboolean gtk_recent_chooser_get_show_icons (GtkRecentChooser *chooser) void gtk_recent_chooser_set_sort_type (GtkRecentChooser *chooser, GtkRecentSortType sort_type) GtkRecentSortType gtk_recent_chooser_get_sort_type (GtkRecentChooser *chooser) void gtk_recent_chooser_set_sort_func (chooser, sort_func, sort_data=NULL) GtkRecentChooser *chooser SV *sort_func SV *sort_data PREINIT: GPerlCallback *func; CODE: func = gtk2perl_recent_sort_func_create (sort_func, sort_data); gtk_recent_chooser_set_sort_func (chooser, gtk2perl_recent_sort_func, func, (GDestroyNotify) gperl_callback_destroy); # # Items handling # =for apidoc __gerror__ =cut void gtk_recent_chooser_set_current_uri (GtkRecentChooser *chooser, const gchar *uri) PREINIT: GError *error = NULL; CODE: gtk_recent_chooser_set_current_uri (chooser, uri, &error); if (error) gperl_croak_gerror (NULL, error); gchar_own * gtk_recent_chooser_get_current_uri (GtkRecentChooser *chooser) GtkRecentInfo * gtk_recent_chooser_get_current_item (GtkRecentChooser *chooser) =for apidoc __gerror__ =cut void gtk_recent_chooser_select_uri (GtkRecentChooser *chooser, const gchar *uri) PREINIT: GError *error = NULL; CODE: gtk_recent_chooser_select_uri (chooser, uri, &error); if (error) gperl_croak_gerror (NULL, error); void gtk_recent_chooser_unselect_uri (GtkRecentChooser *chooser, const gchar *uri) void gtk_recent_chooser_select_all (GtkRecentChooser *chooser) void gtk_recent_chooser_unselect_all (GtkRecentChooser *chooser) =for apidoc =for signature (list) = $chooser->get_items =cut void gtk_recent_chooser_get_items (GtkRecentChooser *chooser) PREINIT: GList *items, *l; PPCODE: items = gtk_recent_chooser_get_items (chooser); for (l = items; l != NULL; l = l->next) XPUSHs (sv_2mortal (newSVGtkRecentInfo_own (l->data))); g_list_free (items); =for apidoc =for signature (list) = $chooser->get_uris =cut void gtk_recent_chooser_get_uris (GtkRecentChooser *chooser) PREINIT: gchar **uris; gsize length, i; PPCODE: uris = gtk_recent_chooser_get_uris (chooser, &length); if (length == 0) XSRETURN_EMPTY; EXTEND (SP, length); for (i = 0; i < length; i++) PUSHs (sv_2mortal (newSVGChar (uris[i]))); g_strfreev (uris); # # Filters # void gtk_recent_chooser_add_filter (GtkRecentChooser *chooser, GtkRecentFilter *filter) void gtk_recent_chooser_remove_filter (GtkRecentChooser *chooser, GtkRecentFilter *filter) =for apidoc =for signature (filters) = $chooser->list_filters =cut void gtk_recent_chooser_list_filters (GtkRecentChooser *chooser) PREINIT: GSList *filters, *i; PPCODE: filters = gtk_recent_chooser_list_filters (chooser); for (i = filters; i != NULL; i = i->next) XPUSHs (sv_2mortal (newSVGtkRecentFilter (i->data))); g_slist_free (filters); void gtk_recent_chooser_set_filter (GtkRecentChooser *chooser, GtkRecentFilter *filter) GtkRecentFilter * gtk_recent_chooser_get_filter (GtkRecentChooser *chooser)