summaryrefslogtreecommitdiff
path: root/gtk/gtkrecentmanager.h
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/gtkrecentmanager.h
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/gtkrecentmanager.h')
-rw-r--r--gtk/gtkrecentmanager.h214
1 files changed, 214 insertions, 0 deletions
diff --git a/gtk/gtkrecentmanager.h b/gtk/gtkrecentmanager.h
new file mode 100644
index 0000000000..f41e2dab2b
--- /dev/null
+++ b/gtk/gtkrecentmanager.h
@@ -0,0 +1,214 @@
+/* GTK - The GIMP Toolkit
+ * gtkrecentmanager.h: a manager for the recently used resources
+ *
+ * Copyright (C) 2006 Emmanuele Bassi
+ *
+ * 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,
+ */
+
+#ifndef __GTK_RECENT_MANAGER_H__
+#define __GTK_RECENT_MANAGER_H__
+
+#include <glib-object.h>
+#include <gdk/gdkscreen.h>
+#include <gdk-pixbuf/gdk-pixbuf.h>
+#include <time.h>
+
+G_BEGIN_DECLS
+
+#define GTK_TYPE_RECENT_INFO (gtk_recent_info_get_type ())
+
+#define GTK_TYPE_RECENT_MANAGER (gtk_recent_manager_get_type ())
+#define GTK_RECENT_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_RECENT_MANAGER, GtkRecentManager))
+#define GTK_IS_RECENT_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_RECENT_MANAGER))
+#define GTK_RECENT_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_RECENT_MANAGER, GtkRecentManagerClass))
+#define GTK_IS_RECENT_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_RECENT_MANAGER))
+#define GTK_RECENT_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_RECENT_MANAGER, GtkRecentManagerClass))
+
+typedef struct _GtkRecentInfo GtkRecentInfo;
+typedef struct _GtkRecentData GtkRecentData;
+typedef struct _GtkRecentManager GtkRecentManager;
+typedef struct _GtkRecentManagerClass GtkRecentManagerClass;
+typedef struct _GtkRecentManagerPrivate GtkRecentManagerPrivate;
+
+/**
+ * GtkRecentData:
+ *
+ * @display_name: a UTF-8 encoded string, containing the name of the recently
+ * used resource to be displayed, or %NULL;
+ * @description: a UTF-8 encoded string, containing a short description of
+ * the resource, or %NULL;
+ * @mime_type: the MIME type of the resource;
+ * @app_name: the name of the application that is registering this recently
+ * used resource;
+ * @app_exec: command line used to launch this resource; may contain the
+ * "%f" and "%u" escape characters which will be expanded to the resource
+ * file path and URI respectively when the command line is retrieved;
+ * @groups: a vector of strings containing groups names;
+ * @is_private: whether this resource should be displayed only by the
+ * applications that have registered it or not.
+ *
+ * Meta-data to be passed to gtk_recent_manager_add_full() when
+ * registering a recently used resource.
+ **/
+struct _GtkRecentData
+{
+ gchar *display_name;
+ gchar *description;
+
+ gchar *mime_type;
+
+ gchar *app_name;
+ gchar *app_exec;
+
+ gchar **groups;
+
+ gboolean is_private;
+};
+
+struct _GtkRecentManager
+{
+ /*< private >*/
+ GObject parent_instance;
+
+ GtkRecentManagerPrivate *priv;
+};
+
+struct _GtkRecentManagerClass
+{
+ /*< private >*/
+ GObjectClass parent_class;
+
+ void (*changed) (GtkRecentManager *manager);
+
+ /* padding for future expansion */
+ void (*_gtk_recent1) (void);
+ void (*_gtk_recent2) (void);
+ void (*_gtk_recent3) (void);
+ void (*_gtk_recent4) (void);
+};
+
+/**
+ * GtkRecentManagerError:
+ * @GTK_RECENT_MANAGER_ERROR_NOT_FOUND: the URI specified does not exists in
+ * the recently used resources list.
+ * @GTK_RECENT_MANAGER_ERROR_INVALID_URI: the URI specified is not valid.
+ * @GTK_RECENT_MANAGER_ERROR_INVALID_MIME: the MIME type specified is not
+ * valid.
+ * @GTK_RECENT_MANAGER_ERROR_INVALID_ENCODING: the supplied string is not
+ * UTF-8 encoded.
+ * @GTK_RECENT_MANAGER_ERROR_NOT_REGISTERED: no application has registered
+ * the specified item.
+ * @GTK_RECENT_MANAGER_ERROR_READ: failure while reading the recently used
+ * resources file.
+ * @GTK_RECENT_MANAGER_ERROR_WRITE: failure while writing the recently used
+ * resources file.
+ * @GTK_RECENT_MANAGER_ERROR_UNKNOWN: unspecified error.
+ *
+ * Error codes for GtkRecentManager operations
+ **/
+typedef enum
+{
+ GTK_RECENT_MANAGER_ERROR_NOT_FOUND,
+ GTK_RECENT_MANAGER_ERROR_INVALID_URI,
+ GTK_RECENT_MANAGER_ERROR_INVALID_MIME,
+ GTK_RECENT_MANAGER_ERROR_INVALID_ENCODING,
+ GTK_RECENT_MANAGER_ERROR_NOT_REGISTERED,
+ GTK_RECENT_MANAGER_ERROR_BAD_EXEC_STRING,
+ GTK_RECENT_MANAGER_ERROR_READ,
+ GTK_RECENT_MANAGER_ERROR_WRITE,
+ GTK_RECENT_MANAGER_ERROR_UNKNOWN
+} GtkRecentManagerError;
+
+#define GTK_RECENT_MANAGER_ERROR (gtk_recent_manager_error_quark ())
+GQuark gtk_recent_manager_error_quark (void);
+
+
+GType gtk_recent_manager_get_type (void) G_GNUC_CONST;
+
+GtkRecentManager *gtk_recent_manager_new (void);
+GtkRecentManager *gtk_recent_manager_get_default (void);
+GtkRecentManager *gtk_recent_manager_get_for_screen (GdkScreen *screen);
+
+void gtk_recent_manager_set_screen (GtkRecentManager *manager,
+ GdkScreen *screen);
+
+gboolean gtk_recent_manager_add_item (GtkRecentManager *manager,
+ const gchar *uri,
+ GError **error);
+gboolean gtk_recent_manager_add_full (GtkRecentManager *manager,
+ const gchar *uri,
+ const GtkRecentData *recent_data,
+ GError **error);
+gboolean gtk_recent_manager_remove_item (GtkRecentManager *manager,
+ const gchar *uri,
+ GError **error);
+GtkRecentInfo * gtk_recent_manager_lookup_item (GtkRecentManager *manager,
+ const gchar *uri,
+ GError **error);
+gboolean gtk_recent_manager_has_item (GtkRecentManager *manager,
+ const gchar *uri);
+gboolean gtk_recent_manager_move_item (GtkRecentManager *manager,
+ const gchar *uri,
+ const gchar *new_uri,
+ GError **error);
+void gtk_recent_manager_set_limit (GtkRecentManager *manager,
+ gint limit);
+gint gtk_recent_manager_get_limit (GtkRecentManager *manager);
+GList * gtk_recent_manager_get_items (GtkRecentManager *manager);
+gint gtk_recent_manager_purge_items (GtkRecentManager *manager,
+ GError **error);
+
+
+GType gtk_recent_info_get_type (void) G_GNUC_CONST;
+
+GtkRecentInfo * gtk_recent_info_ref (GtkRecentInfo *info);
+void gtk_recent_info_unref (GtkRecentInfo *info);
+
+G_CONST_RETURN gchar *gtk_recent_info_get_uri (GtkRecentInfo *info);
+G_CONST_RETURN gchar *gtk_recent_info_get_display_name (GtkRecentInfo *info);
+G_CONST_RETURN gchar *gtk_recent_info_get_description (GtkRecentInfo *info);
+G_CONST_RETURN gchar *gtk_recent_info_get_mime_type (GtkRecentInfo *info);
+time_t gtk_recent_info_get_added (GtkRecentInfo *info);
+time_t gtk_recent_info_get_modified (GtkRecentInfo *info);
+time_t gtk_recent_info_get_visited (GtkRecentInfo *info);
+gboolean gtk_recent_info_get_private_hint (GtkRecentInfo *info);
+gboolean gtk_recent_info_get_application_info (GtkRecentInfo *info,
+ const gchar *app_name,
+ gchar **app_exec,
+ guint *count,
+ time_t *time);
+gchar ** gtk_recent_info_get_applications (GtkRecentInfo *info,
+ gsize *length) G_GNUC_MALLOC;
+gchar * gtk_recent_info_last_application (GtkRecentInfo *info) G_GNUC_MALLOC;
+gboolean gtk_recent_info_has_application (GtkRecentInfo *info,
+ const gchar *app_name);
+gchar ** gtk_recent_info_get_groups (GtkRecentInfo *info,
+ gsize *length) G_GNUC_MALLOC;
+gboolean gtk_recent_info_has_group (GtkRecentInfo *info,
+ const gchar *group_name);
+GdkPixbuf * gtk_recent_info_get_icon (GtkRecentInfo *info,
+ gint size);
+gchar * gtk_recent_info_get_short_name (GtkRecentInfo *info) G_GNUC_MALLOC;
+gchar * gtk_recent_info_get_uri_display (GtkRecentInfo *info) G_GNUC_MALLOC;
+gint gtk_recent_info_get_age (GtkRecentInfo *info);
+gboolean gtk_recent_info_is_local (GtkRecentInfo *info);
+gboolean gtk_recent_info_exists (GtkRecentInfo *info);
+gboolean gtk_recent_info_match (GtkRecentInfo *info_a,
+ GtkRecentInfo *info_b);
+
+G_END_DECLS
+
+#endif /* __GTK_RECENT_MANAGER_H__ */