summaryrefslogtreecommitdiff
path: root/gtk/gtkrecentchooser.c
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@cvs.gnome.org>2006-03-29 20:16:44 +0000
committerEmmanuele Bassi <ebassi@src.gnome.org>2006-03-29 20:16:44 +0000
commit056f6db533b418e3571d2614c349bb412900dbc1 (patch)
treee3126a3d1d0300f497f9f99ee6e781327d92a8f4 /gtk/gtkrecentchooser.c
parent5f5de68e8267cd3c3f4effa2e552b66a03951cce (diff)
downloadgtk+-056f6db533b418e3571d2614c349bb412900dbc1.tar.gz
Import GtkRecent* from libegg.
2006-03-29 Emmanuele Bassi <ebassi@cvs.gnome.org> Import GtkRecent* from libegg. * gtk/gtkrecentmanager.[ch]: Add GtkRecentManager, an object for managing a list of recently used resources. * gtk/gtkrecentchooser.[ch]: * gtk/gtkrecentchooserdefault.[ch]: * gtk/gtkrecentchooserdialog.[ch]: * gtk/gtkrecentchoosermenu.[ch]: * gtk/gtkrecentchooserprivate.h: * gtk/gtkrecentchooserutils.[ch]: * gtk/gtkrecentchooserwidget.[ch]: Add GtkRecentChooser, a GTypeInterface for widgets implementing viewers for recently used resources. * gtk/gtkrecentfilter.[ch]: GtkRecentFilter, a filter object for GtkRecentChooser implementations. * gtk/gtk.h: * gtk/gtk.symbols: * gtk/Makefile.am: Build glue for GtkRecent*.
Diffstat (limited to 'gtk/gtkrecentchooser.c')
-rw-r--r--gtk/gtkrecentchooser.c966
1 files changed, 966 insertions, 0 deletions
diff --git a/gtk/gtkrecentchooser.c b/gtk/gtkrecentchooser.c
new file mode 100644
index 0000000000..873eee1d46
--- /dev/null
+++ b/gtk/gtkrecentchooser.c
@@ -0,0 +1,966 @@
+/* GTK - The GIMP Toolkit
+ * gtkrecentchooser.c - Abstract interface for recent file selectors GUIs
+ *
+ * Copyright (C) 2006, Emmanuele Bassi
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser 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.
+ */
+
+#include "config.h"
+
+#include "gtkrecentchooser.h"
+#include "gtkrecentchooserprivate.h"
+#include "gtkrecentmanager.h"
+#include "gtkintl.h"
+#include "gtktypebuiltins.h"
+#include "gtkprivate.h"
+#include "gtkmarshalers.h"
+#include "gtkalias.h"
+
+
+enum
+{
+ ITEM_ACTIVATED,
+ SELECTION_CHANGED,
+
+ LAST_SIGNAL
+};
+
+static void gtk_recent_chooser_class_init (gpointer g_iface);
+
+static guint chooser_signals[LAST_SIGNAL] = { 0, };
+
+GType
+gtk_recent_chooser_get_type (void)
+{
+ static GType chooser_type = 0;
+
+ if (!chooser_type)
+ {
+ static const GTypeInfo chooser_info =
+ {
+ sizeof (GtkRecentChooserIface),
+ NULL, /* base_init */
+ NULL, /* base_finalize */
+ (GClassInitFunc) gtk_recent_chooser_class_init,
+ };
+
+ chooser_type = g_type_register_static (G_TYPE_INTERFACE,
+ I_("GtkRecentChooser"),
+ &chooser_info, 0);
+
+ g_type_interface_add_prerequisite (chooser_type, GTK_TYPE_OBJECT);
+ }
+
+ return chooser_type;
+}
+
+static void
+gtk_recent_chooser_class_init (gpointer g_iface)
+{
+ GType iface_type = G_TYPE_FROM_INTERFACE (g_iface);
+
+ /**
+ * GtkRecentChooser::selection-changed
+ * @chooser: the object which received the signal
+ *
+ * This signal is emitted when there is a change in the set of
+ * selected recently used resources. This can happen when a user
+ * modifies the selection with the mouse or the keyboard, or when
+ * explicitely calling functions to change the selection.
+ *
+ * Since: 2.10
+ */
+ chooser_signals[SELECTION_CHANGED] =
+ g_signal_new (I_("selection-changed"),
+ iface_type,
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (GtkRecentChooserIface, selection_changed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ /**
+ * GtkRecentChooser::item-activated
+ * @chooser: the object which received the signal
+ *
+ * This signal is emitted when the user "activates" a recent item
+ * in the recent chooser. This can happen by double-clicking on an item
+ * in the recently used resources list, or by pressing
+ * <keycap>Enter</keycap>.
+ *
+ * Since: 2.10
+ */
+ chooser_signals[ITEM_ACTIVATED] =
+ g_signal_new (I_("item-activated"),
+ iface_type,
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (GtkRecentChooserIface, item_activated),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ g_object_interface_install_property (g_iface,
+ g_param_spec_object ("recent-manager",
+ P_("Recent Manager"),
+ P_("The RecentManager object to use"),
+ GTK_TYPE_RECENT_MANAGER,
+ G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
+ g_object_interface_install_property (g_iface,
+ g_param_spec_boolean ("show-private",
+ P_("Show Private"),
+ P_("Whether the private items should be displayed"),
+ FALSE,
+ G_PARAM_READWRITE));
+ g_object_interface_install_property (g_iface,
+ g_param_spec_boolean ("show-tips",
+ P_("Show Tooltips"),
+ P_("Whether there should be a tooltip on the item"),
+ FALSE,
+ G_PARAM_READWRITE));
+ g_object_interface_install_property (g_iface,
+ g_param_spec_boolean ("show-icons",
+ P_("Show Icons"),
+ P_("Whether there should be an icon near the item"),
+ TRUE,
+ G_PARAM_READWRITE));
+ g_object_interface_install_property (g_iface,
+ g_param_spec_boolean ("show-not-found",
+ P_("Show Not Found"),
+ P_("Whether the items pointing to unavailable resources should be displayed"),
+ FALSE,
+ G_PARAM_READWRITE));
+ g_object_interface_install_property (g_iface,
+ g_param_spec_boolean ("select-multiple",
+ P_("Select Multiple"),
+ P_("Whether to allow multiple items to be selected"),
+ FALSE,
+ G_PARAM_READWRITE));
+ g_object_interface_install_property (g_iface,
+ g_param_spec_boolean ("local-only",
+ P_("Local only"),
+ P_("Whether the selected resource(s) should be limited to local file: URIs"),
+ TRUE,
+ G_PARAM_READWRITE));
+ g_object_interface_install_property (g_iface,
+ g_param_spec_int ("limit",
+ P_("Limit"),
+ P_("The maximum number of items to be displayed"),
+ -1,
+ G_MAXINT,
+ -1,
+ G_PARAM_READWRITE));
+ g_object_interface_install_property (g_iface,
+ g_param_spec_enum ("sort-type",
+ P_("Sort Type"),
+ P_("The sorting order of the items displayed"),
+ GTK_TYPE_RECENT_SORT_TYPE,
+ GTK_RECENT_SORT_NONE,
+ G_PARAM_READWRITE));
+ g_object_interface_install_property (g_iface,
+ g_param_spec_object ("filter",
+ P_("Filter"),
+ P_("The current filter for selecting which resources are displayed"),
+ GTK_TYPE_RECENT_FILTER,
+ G_PARAM_READWRITE));
+}
+
+GQuark
+gtk_recent_chooser_error_quark (void)
+{
+ static GQuark error_quark = 0;
+ if (!error_quark)
+ error_quark = g_quark_from_static_string ("gtk-recent-chooser-error-quark");
+ return error_quark;
+}
+
+/**
+ * _gtk_recent_chooser_get_recent_manager:
+ * @chooser: a #GtkRecentChooser
+ *
+ * Gets the #GtkRecentManager used by @chooser.
+ *
+ * Return value: the recent manager for @chooser.
+ *
+ * Since: 2.10
+ */
+GtkRecentManager *
+_gtk_recent_chooser_get_recent_manager (GtkRecentChooser *chooser)
+{
+ g_return_val_if_fail (GTK_IS_RECENT_CHOOSER (chooser), NULL);
+
+ return GTK_RECENT_CHOOSER_GET_IFACE (chooser)->get_recent_manager (chooser);
+}
+
+/**
+ * gtk_recent_chooser_set_show_private:
+ * @chooser: a #GtkRecentChooser
+ * @show_private: %TRUE to show private items, %FALSE otherwise
+ *
+ * Whether to show recently used resources marked registered as private.
+ *
+ * Since: 2.10
+ */
+void
+gtk_recent_chooser_set_show_private (GtkRecentChooser *chooser,
+ gboolean show_private)
+{
+ g_return_if_fail (GTK_IS_RECENT_CHOOSER (chooser));
+
+ g_object_set (chooser, "show-private", show_private, NULL);
+}
+
+/**
+ * gtk_recent_chooser_get_show_private:
+ * @chooser: a #GtkRecentChooser
+ *
+ * Returns whether @chooser should display recently used resources
+ * registered as private.
+ *
+ * Return value: %TRUE if the recent chooser should show private items,
+ * %FALSE otherwise.
+ *
+ * Since: 2.10
+ */
+gboolean
+gtk_recent_chooser_get_show_private (GtkRecentChooser *chooser)
+{
+ gboolean show_private;
+
+ g_return_val_if_fail (GTK_IS_RECENT_CHOOSER (chooser), FALSE);
+
+ g_object_get (chooser, "show-private", &show_private, NULL);
+
+ return show_private;
+}
+
+/**
+ * gtk_recent_chooser_set_show_not_found:
+ * @chooser: a #GtkRecentChooser
+ * @show_not_found: whether to show the local items we didn't find
+ *
+ * Sets whether @chooser should display the recently used resources that
+ * it didn't find. This only applies to local resources.
+ *
+ * Since: 2.10
+ */
+void
+gtk_recent_chooser_set_show_not_found (GtkRecentChooser *chooser,
+ gboolean show_not_found)
+{
+ g_return_if_fail (GTK_IS_RECENT_CHOOSER (chooser));
+
+ g_object_set (chooser, "show-not-found", show_not_found, NULL);
+}
+
+/**
+ * gtk_recent_chooser_get_show_not_found:
+ * @chooser: a #GtkRecentChooser
+ *
+ * Retrieves whether @chooser should show the recently used resources that
+ * were not found.
+ *
+ * Return value: %TRUE if the resources not found should be displayed, and
+ * %FALSE otheriwse.
+ *
+ * Since: 2.10
+ */
+gboolean
+gtk_recent_chooser_get_show_not_found (GtkRecentChooser *chooser)
+{
+ gboolean show_not_found;
+
+ g_return_val_if_fail (GTK_IS_RECENT_CHOOSER (chooser), FALSE);
+
+ g_object_get (chooser, "show-not-found", &show_not_found, NULL);
+
+ return show_not_found;
+}
+
+/**
+ * gtk_recent_chooser_set_show_icons:
+ * @chooser: a #GtkRecentChooser
+ * @show_icons: whether to show an icon near the resource
+ *
+ * Sets whether @chooser should show an icon near the resource when
+ * displaying it.
+ *
+ * Since: 2.10
+ */
+void
+gtk_recent_chooser_set_show_icons (GtkRecentChooser *chooser,
+ gboolean show_icons)
+{
+ g_return_if_fail (GTK_IS_RECENT_CHOOSER (chooser));
+
+ g_object_set (chooser, "show-icons", show_icons, NULL);
+}
+
+/**
+ * gtk_recent_chooser_get_show_icons:
+ * @chooser: a #GtkRecentChooser
+ *
+ * Retrieves whether @chooser should show an icon near the resource.
+ *
+ * Return value: %TRUE if the icons should be displayed, %FALSE otherwise.
+ *
+ * Since: 2.10
+ */
+gboolean
+gtk_recent_chooser_get_show_icons (GtkRecentChooser *chooser)
+{
+ gboolean show_icons;
+
+ g_return_val_if_fail (GTK_IS_RECENT_CHOOSER (chooser), FALSE);
+
+ g_object_get (chooser, "show-icons", &show_icons, NULL);
+
+ return show_icons;
+}
+
+/**
+ * gtk_recent_chooser_set_select_multiple:
+ * @chooser: a #GtkRecentChooser
+ * @select_multiple: %TRUE if @chooser can select more than one item
+ *
+ * Sets whether @chooser can select multiple items.
+ *
+ * Since: 2.10
+ */
+void
+gtk_recent_chooser_set_select_multiple (GtkRecentChooser *chooser,
+ gboolean select_multiple)
+{
+ g_return_if_fail (GTK_IS_RECENT_CHOOSER (chooser));
+
+ g_object_set (chooser, "select-multiple", select_multiple, NULL);
+}
+
+/**
+ * gtk_recent_chooser_get_select_multiple:
+ * @chooser: a #GtkRecentChooser
+ *
+ * Gets whether @chooser can select multiple items.
+ *
+ * Return value: %TRUE if @chooser can select more than one item.
+ *
+ * Since: 2.10
+ */
+gboolean
+gtk_recent_chooser_get_select_multiple (GtkRecentChooser *chooser)
+{
+ gboolean select_multiple;
+
+ g_return_val_if_fail (GTK_IS_RECENT_CHOOSER (chooser), FALSE);
+
+ g_object_get (chooser, "select-multiple", &select_multiple, NULL);
+
+ return select_multiple;
+}
+
+/**
+ * gtk_recent_chooser_set_local_only:
+ * @chooser: a #GtkRecentChooser
+ * @local_only: %TRUE if only local files can be shown
+ *
+ * Sets whether only local resources, that is resources using the file:// URI
+ * scheme, should be shown in the recently used resources selector. If
+ * @local_only is %TRUE (the default) then the shown resources are guaranteed
+ * to be accessible through the operating system native file system.
+ *
+ * Since: 2.10
+ */
+void
+gtk_recent_chooser_set_local_only (GtkRecentChooser *chooser,
+ gboolean local_only)
+{
+ g_return_if_fail (GTK_IS_RECENT_CHOOSER (chooser));
+
+ g_object_set (chooser, "local-only", local_only, NULL);
+}
+
+/**
+ * gtk_recent_chooser_get_local_only:
+ * @chooser: a #GtkRecentChooser
+ *
+ * Gets whether only local resources should be shown in the recently used
+ * resources selector. See gtk_recent_chooser_set_local_only()
+ *
+ * Return value: %TRUE if only local resources should be shown.
+ *
+ * Since: 2.10
+ */
+gboolean
+gtk_recent_chooser_get_local_only (GtkRecentChooser *chooser)
+{
+ gboolean local_only;
+
+ g_return_val_if_fail (GTK_IS_RECENT_CHOOSER (chooser), FALSE);
+
+ g_object_get (chooser, "local-only", &local_only, NULL);
+
+ return local_only;
+}
+
+/**
+ * gtk_recent_chooser_set_limit:
+ * @chooser: a #GtkRecentChooser
+ * @limit: a positive integer, or -1 for all items
+ *
+ * Sets the number of items that should be returned by
+ * gtk_recent_chooser_get_items() and gtk_recent_chooser_get_uris().
+ *
+ * Since: 2.10
+ */
+void
+gtk_recent_chooser_set_limit (GtkRecentChooser *chooser,
+ gint limit)
+{
+ g_return_if_fail (GTK_IS_RECENT_CHOOSER (chooser));
+
+ g_object_set (chooser, "limit", limit, NULL);
+}
+
+/**
+ * gtk_recent_chooser_get_limit:
+ * @chooser: a #GtkRecentChooser
+ *
+ * Gets the number of items returned by gtk_recent_chooser_get_items()
+ * and gtk_recent_chooser_get_uris().
+ *
+ * Return value: A positive integer, or -1 meaning that all items are
+ * returned.
+ *
+ * Since: 2.10
+ */
+gint
+gtk_recent_chooser_get_limit (GtkRecentChooser *chooser)
+{
+ gint limit;
+
+ g_return_val_if_fail (GTK_IS_RECENT_CHOOSER (chooser), 10);
+
+ g_object_get (chooser, "limit", &limit, NULL);
+
+ return limit;
+}
+
+/**
+ * gtk_recent_chooser_set_show_tips:
+ * @chooser: a #GtkRecentChooser
+ * @show_tips: %TRUE if tooltips should be shown
+ *
+ * Sets whether to show a tooltips on the widget.
+ *
+ * Since: 2.10
+ */
+void
+gtk_recent_chooser_set_show_tips (GtkRecentChooser *chooser,
+ gboolean show_tips)
+{
+ g_return_if_fail (GTK_IS_RECENT_CHOOSER (chooser));
+
+ g_object_set (chooser, "show-tips", show_tips, NULL);
+}
+
+/**
+ * gtk_recent_chooser_get_show_tips:
+ * @chooser: a #GtkRecentChooser
+ *
+ * Gets whether @chooser should display tooltips.
+ *
+ * Return value: %TRUE if the recent chooser should show tooltips,
+ * %FALSE otherwise.
+ *
+ * Since: 2.10
+ */
+gboolean
+gtk_recent_chooser_get_show_tips (GtkRecentChooser *chooser)
+{
+ gboolean show_tips;
+
+ g_return_val_if_fail (GTK_IS_RECENT_CHOOSER (chooser), FALSE);
+
+ g_object_get (chooser, "show-tips", &show_tips, NULL);
+
+ return show_tips;
+}
+
+/**
+ * gtk_recent_chooser_set_show_numbers:
+ * @chooser: a #GtkRecentChooser
+ * @show_private: %TRUE to show numbers, %FALSE otherwise
+ *
+ * Whether to show recently used resources prepended by a unique number.
+ *
+ * Since: 2.10
+ */
+void
+gtk_recent_chooser_set_show_numbers (GtkRecentChooser *chooser,
+ gboolean show_numbers)
+{
+ g_return_if_fail (GTK_IS_RECENT_CHOOSER (chooser));
+
+ g_object_set (chooser, "show-numbers", show_numbers, NULL);
+}
+
+/**
+ * gtk_recent_chooser_get_show_numbers:
+ * @chooser: a #GtkRecentChooser
+ *
+ * Returns whether @chooser should display recently used resources
+ * prepended by a unique number.
+ *
+ * Return value: %TRUE if the recent chooser should show display numbers,
+ * %FALSE otherwise.
+ *
+ * Since: 2.10
+ */
+gboolean
+gtk_recent_chooser_get_show_numbers (GtkRecentChooser *chooser)
+{
+ gboolean show_numbers;
+
+ g_return_val_if_fail (GTK_IS_RECENT_CHOOSER (chooser), FALSE);
+
+ g_object_get (chooser, "show-numbers", &show_numbers, NULL);
+
+ return show_numbers;
+}
+
+
+/**
+ * gtk_recent_chooser_set_sort_type:
+ * @chooser: a #GtkRecentChooser
+ * @sort_type: sort order that the chooser should use
+ *
+ * Changes the sorting order of the recently used resources list displayed by
+ * @chooser.
+ *
+ * Since: 2.10
+ */
+void
+gtk_recent_chooser_set_sort_type (GtkRecentChooser *chooser,
+ GtkRecentSortType sort_type)
+{
+ g_return_if_fail (GTK_IS_RECENT_CHOOSER (chooser));
+
+ g_object_set (chooser, "sort-type", sort_type, NULL);
+}
+
+/**
+ * gtk_recent_chooser_get_sort_type:
+ * @chooser: a #GtkRecentChooser
+ *
+ * Gets the value set by gtk_recent_chooser_set_sort_type().
+ *
+ * Return value: the sorting order of the @chooser.
+ *
+ * Since: 2.10
+ */
+GtkRecentSortType
+gtk_recent_chooser_get_sort_type (GtkRecentChooser *chooser)
+{
+ GtkRecentSortType sort_type;
+
+ g_return_val_if_fail (GTK_IS_RECENT_CHOOSER (chooser), GTK_RECENT_SORT_NONE);
+
+ g_object_get (chooser, "sort-type", &sort_type, NULL);
+
+ return sort_type;
+}
+
+/**
+ * gtk_recent_chooser_set_sort_func:
+ * @chooser: a #GtkRecentChooser
+ * @sort_func: the comparison function
+ * @sort_data: user data to pass to @sort_func, or %NULL
+ * @destroy_data: destroy notifier for @sort_data, or %NULL
+ *
+ * Sets the comparison function used when sorting to be @sort_func. If
+ * the @chooser has the sort type set to #GTK_RECENT_SORT_CUSTOM then
+ * the chooser will sort using this function.
+ *
+ * To the comparison function will be passed two #GtkRecentInfo structs and
+ * @sort_data; @sort_func should return a positive integer if the first
+ * item comes before the second, zero if the two items are equal and
+ * a negative integer if the first item comes after the second.
+ *
+ * Since: 2.10
+ */
+void
+gtk_recent_chooser_set_sort_func (GtkRecentChooser *chooser,
+ GtkRecentSortFunc sort_func,
+ gpointer sort_data,
+ GDestroyNotify data_destroy)
+{
+ g_return_if_fail (GTK_IS_RECENT_CHOOSER (chooser));
+
+ GTK_RECENT_CHOOSER_GET_IFACE (chooser)->set_sort_func (chooser,
+ sort_func,
+ sort_data,
+ data_destroy);
+}
+
+/**
+ * gtk_recent_chooser_set_current_uri:
+ * @chooser: a #GtkRecentChooser
+ * @uri: a URI
+ * @error: return location for a #GError, or %NULL
+ *
+ * Sets @uri as the current URI for @chooser.
+ *
+ * Return value: %TRUE if the URI was found.
+ *
+ * Since: 2.10
+ */
+gboolean
+gtk_recent_chooser_set_current_uri (GtkRecentChooser *chooser,
+ const gchar *uri,
+ GError **error)
+{
+ g_return_val_if_fail (GTK_IS_RECENT_CHOOSER (chooser), FALSE);
+
+ return GTK_RECENT_CHOOSER_GET_IFACE (chooser)->set_current_uri (chooser, uri, error);
+}
+
+/**
+ * gtk_recent_chooser_get_current_uri:
+ * @chooser: a #GtkRecentChooser
+ *
+ * Gets the URI currently selected by @chooser.
+ *
+ * Return value: a newly allocated string holding a URI.
+ *
+ * Since: 2.10
+ */
+gchar *
+gtk_recent_chooser_get_current_uri (GtkRecentChooser *chooser)
+{
+ g_return_val_if_fail (GTK_IS_RECENT_CHOOSER (chooser), NULL);
+
+ return GTK_RECENT_CHOOSER_GET_IFACE (chooser)->get_current_uri (chooser);
+}
+
+/**
+ * gtk_recent_chooser_get_current_item:
+ * @chooser: a #GtkRecentChooser
+ *
+ * Gets the #GtkRecentInfo currently selected by @chooser.
+ *
+ * Return value: a #GtkRecentInfo. Use gtk_recent_info_unref() when
+ * when you have finished using it.
+ *
+ * Since: 2.10
+ */
+GtkRecentInfo *
+gtk_recent_chooser_get_current_item (GtkRecentChooser *chooser)
+{
+ GtkRecentManager *manager;
+ GtkRecentInfo *retval;
+ gchar *uri;
+
+ g_return_val_if_fail (GTK_IS_RECENT_CHOOSER (chooser), NULL);
+
+ uri = gtk_recent_chooser_get_current_uri (chooser);
+ if (!uri)
+ return NULL;
+
+ manager = _gtk_recent_chooser_get_recent_manager (chooser);
+ retval = gtk_recent_manager_lookup_item (manager, uri, NULL);
+ g_free (uri);
+
+ return retval;
+}
+
+/**
+ * gtk_recent_chooser_select_uri:
+ * @chooser: a #GtkRecentChooser
+ * @uri: a URI
+ * @error: return location for a #GError, or %NULL
+ *
+ * Selects @uri inside @chooser.
+ *
+ * Return value: %TRUE if @uri was found.
+ *
+ * Since: 2.10
+ */
+gboolean
+gtk_recent_chooser_select_uri (GtkRecentChooser *chooser,
+ const gchar *uri,
+ GError **error)
+{
+ g_return_val_if_fail (GTK_IS_RECENT_CHOOSER (chooser), FALSE);
+
+ return GTK_RECENT_CHOOSER_GET_IFACE (chooser)->select_uri (chooser, uri, error);
+}
+
+/**
+ * gtk_recent_chooser_unselect_uri:
+ * @chooser: a #GtkRecentChooser
+ * @uri: a URI
+ *
+ * Unselects @uri inside @chooser.
+ *
+ * Since: 2.10
+ */
+void
+gtk_recent_chooser_unselect_uri (GtkRecentChooser *chooser,
+ const gchar *uri)
+{
+ g_return_if_fail (GTK_IS_RECENT_CHOOSER (chooser));
+
+ GTK_RECENT_CHOOSER_GET_IFACE (chooser)->unselect_uri (chooser, uri);
+}
+
+/**
+ * gtk_recent_chooser_select_all:
+ * @chooser: a #GtkRecentChooser
+ *
+ * Selects all the items inside @chooser, if the @chooser supports
+ * multiple selection.
+ *
+ * Since: 2.10
+ */
+void
+gtk_recent_chooser_select_all (GtkRecentChooser *chooser)
+{
+ g_return_if_fail (GTK_IS_RECENT_CHOOSER (chooser));
+
+ GTK_RECENT_CHOOSER_GET_IFACE (chooser)->select_all (chooser);
+}
+
+/**
+ * gtk_recent_chooser_unselect_all:
+ * @chooser: a #GtkRecentChooser
+ *
+ * Unselects all the items inside @chooser.
+ *
+ * Since: 2.10
+ */
+void
+gtk_recent_chooser_unselect_all (GtkRecentChooser *chooser)
+{
+ g_return_if_fail (GTK_IS_RECENT_CHOOSER (chooser));
+
+ GTK_RECENT_CHOOSER_GET_IFACE (chooser)->unselect_all (chooser);
+}
+
+/**
+ * gtk_recent_chooser_get_items:
+ * @chooser: a #GtkRecentChooser
+ *
+ * Gets the list of recently used resources in form of #GtkRecentInfo objects.
+ *
+ * The return value of this function is affected by the "sort-type" and
+ * "limit" properties of @chooser.
+ *
+ * Return value: A newly allocated list of #GtkRecentInfo objects. You should
+ * use gtk_recent_info_unref() on every item of the list, and then free
+ * the list itself using g_list_free().
+ *
+ * Since: 2.10
+ */
+GList *
+gtk_recent_chooser_get_items (GtkRecentChooser *chooser)
+{
+ g_return_val_if_fail (GTK_IS_RECENT_CHOOSER (chooser), NULL);
+
+ return GTK_RECENT_CHOOSER_GET_IFACE (chooser)->get_items (chooser);
+}
+
+/**
+ * gtk_recent_chooser_get_uris:
+ * @chooser: a #GtkRecentChooser
+ * @length: return location for a the length of the URI list, or %NULL
+ *
+ * Gets the URI of the recently used resources.
+ *
+ * The return value of this function is affected by the "sort-type" and "limit"
+ * properties of @chooser.
+ *
+ * Since the returned array is %NULL terminated, @length may be %NULL.
+ *
+ * Return value: A newly allocated, %NULL terminated array of strings. Use
+ * g_strfreev() to free it.
+ *
+ * Since: 2.10
+ */
+gchar **
+gtk_recent_chooser_get_uris (GtkRecentChooser *chooser,
+ gsize *length)
+{
+ GList *items, *l;
+ gchar **retval;
+ gsize n_items, i;
+
+ items = gtk_recent_chooser_get_items (chooser);
+ if (!items)
+ return NULL;
+
+ n_items = g_list_length (items);
+ retval = g_new0 (gchar *, n_items + 1);
+
+ for (l = items, i = 0; l != NULL; l = l->next)
+ {
+ GtkRecentInfo *info = (GtkRecentInfo *) l->data;
+ const gchar *uri;
+
+ g_assert (info != NULL);
+
+ uri = gtk_recent_info_get_uri (info);
+ g_assert (uri != NULL);
+
+ retval[i++] = g_strdup (uri);
+ }
+ retval[i] = NULL;
+
+ if (length)
+ *length = i;
+
+ g_list_foreach (items,
+ (GFunc) gtk_recent_info_unref,
+ NULL);
+ g_list_free (items);
+
+ return retval;
+}
+
+/**
+ * gtk_recent_chooser_add_filter:
+ * @chooser: a #GtkRecentChooser
+ * @filter: a #GtkRecentFilter
+ *
+ * Adds @filter to the list of #GtkRecentFilter objects held by @chooser.
+ *
+ * If no previous filter objects were defined, this function will call
+ * gtk_recent_chooser_set_filter().
+ *
+ * Since: 2.10
+ */
+void
+gtk_recent_chooser_add_filter (GtkRecentChooser *chooser,
+ GtkRecentFilter *filter)
+{
+ g_return_if_fail (GTK_IS_RECENT_CHOOSER (chooser));
+
+ GTK_RECENT_CHOOSER_GET_IFACE (chooser)->add_filter (chooser, filter);
+}
+
+/**
+ * gtk_recent_chooser_remove_filter:
+ * @chooser: a #GtkRecentChooser
+ * @filter: a #GtkRecentFilter
+ *
+ * Removes @filter from the list of #GtkRecentFilter objects held by @chooser.
+ *
+ * Since: 2.10
+ */
+void
+gtk_recent_chooser_remove_filter (GtkRecentChooser *chooser,
+ GtkRecentFilter *filter)
+{
+ g_return_if_fail (GTK_IS_RECENT_CHOOSER (chooser));
+
+ GTK_RECENT_CHOOSER_GET_IFACE (chooser)->remove_filter (chooser, filter);
+}
+
+/**
+ * gtk_recent_chooser_list_filters:
+ * @chooser: a #GtkRecentChooser
+ *
+ * Gets the #GtkRecentFilter objects held by @chooser.
+ *
+ * Return value: A singly linked list of #GtkRecentFilter objects. You
+ * should just free the returned list using g_slist_free().
+ *
+ * Since: 2.10
+ */
+GSList *
+gtk_recent_chooser_list_filters (GtkRecentChooser *chooser)
+{
+ g_return_val_if_fail (GTK_IS_RECENT_CHOOSER (chooser), NULL);
+
+ return GTK_RECENT_CHOOSER_GET_IFACE (chooser)->list_filters (chooser);
+}
+
+/**
+ * gtk_recent_chooser_set_filter:
+ * @chooser: a #GtkRecentChooser
+ * @filter: a #GtkRecentFilter
+ *
+ * Sets @filter as the current #GtkRecentFilter object used by @chooser
+ * to affect the displayed recently used resources.
+ *
+ * Since: 2.10
+ */
+void
+gtk_recent_chooser_set_filter (GtkRecentChooser *chooser,
+ GtkRecentFilter *filter)
+{
+ g_return_if_fail (GTK_IS_RECENT_CHOOSER (chooser));
+
+ g_object_set (G_OBJECT (chooser), "filter", filter, NULL);
+}
+
+/**
+ * gtk_recent_chooser_get_filter:
+ * @chooser: a #GtkRecentChooser
+ *
+ * Gets the #GtkRecentFilter object currently used by @chooser to affect
+ * the display of the recently used resources.
+ *
+ * Return value: a #GtkRecentFilter object.
+ *
+ * Since: 2.10
+ */
+GtkRecentFilter *
+gtk_recent_chooser_get_filter (GtkRecentChooser *chooser)
+{
+ GtkRecentFilter *filter;
+
+ g_return_val_if_fail (GTK_IS_RECENT_CHOOSER (chooser), NULL);
+
+ g_object_get (G_OBJECT (chooser), "filter", &filter, NULL);
+
+ /* we need this hack because g_object_get() increases the refcount
+ * of the returned object; see also gtk_file_chooser_get_filter()
+ * inside gtkfilechooser.c
+ */
+ if (filter)
+ g_object_unref (filter);
+
+ return filter;
+}
+
+void
+_gtk_recent_chooser_item_activated (GtkRecentChooser *chooser)
+{
+ g_return_if_fail (GTK_IS_RECENT_CHOOSER (chooser));
+
+ g_signal_emit (chooser, chooser_signals[ITEM_ACTIVATED], 0);
+}
+
+void
+_gtk_recent_chooser_selection_changed (GtkRecentChooser *chooser)
+{
+ g_return_if_fail (GTK_IS_RECENT_CHOOSER (chooser));
+
+ g_signal_emit (chooser, chooser_signals[SELECTION_CHANGED], 0);
+}
+
+#define __GTK_RECENT_CHOOSER_H__
+#include "gtkaliasdef.c"