]> www.fi.muni.cz Git - evince.git/commitdiff
Removed
authorCarlos Garcia Campos <carlosgc@gnome.org>
Fri, 26 Oct 2007 15:29:32 +0000 (15:29 +0000)
committerCarlos Garcia Campos <carlosgc@src.gnome.org>
Fri, 26 Oct 2007 15:29:32 +0000 (15:29 +0000)
2007-10-26  Carlos Garcia Campos  <carlosgc@gnome.org>
* configure.ac:
* cut-n-paste/Makefile.am:
* cut-n-paste/recent-files/*: Removed
* help/reference/Makefile.am:
* shell/Makefile.am:
* shell/ev-application.[ch]: (ev_application_shutdown),
(ev_application_init):
* shell/ev-window.c: (ev_window_add_recent),
(ev_window_setup_recent), (ev_window_dispose), (ev_window_init):
Bump requirements to gtk+ 2.10.0 and remove egg-recent code.

svn path=/trunk/; revision=2722

19 files changed:
ChangeLog
configure.ac
cut-n-paste/Makefile.am
cut-n-paste/recent-files/Makefile.am [deleted file]
cut-n-paste/recent-files/egg-recent-item.c [deleted file]
cut-n-paste/recent-files/egg-recent-item.h [deleted file]
cut-n-paste/recent-files/egg-recent-model.c [deleted file]
cut-n-paste/recent-files/egg-recent-model.h [deleted file]
cut-n-paste/recent-files/egg-recent-util.c [deleted file]
cut-n-paste/recent-files/egg-recent-util.h [deleted file]
cut-n-paste/recent-files/egg-recent-view-uimanager.c [deleted file]
cut-n-paste/recent-files/egg-recent-view-uimanager.h [deleted file]
cut-n-paste/recent-files/egg-recent-view.c [deleted file]
cut-n-paste/recent-files/egg-recent-view.h [deleted file]
help/reference/Makefile.am
shell/Makefile.am
shell/ev-application.c
shell/ev-application.h
shell/ev-window.c

index 6d38e74d6885e8e932add3a28b4486cd47bbf555..dee9e305ff1f0159c08cd0a9b9854093ce10a720 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2007-10-26  Carlos Garcia Campos  <carlosgc@gnome.org>
+
+       * configure.ac:
+       * cut-n-paste/Makefile.am:
+       * cut-n-paste/recent-files/*: Removed
+       * help/reference/Makefile.am:
+       * shell/Makefile.am:
+       * shell/ev-application.[ch]: (ev_application_shutdown),
+       (ev_application_init):
+       * shell/ev-window.c: (ev_window_add_recent),
+       (ev_window_setup_recent), (ev_window_dispose), (ev_window_init):
+
+       Bump requirements to gtk+ 2.10.0 and remove egg-recent code. 
+       
 2007-10-25  Pascal Terjan  <pterjan@linuxfr.org>
 
        * shell/ev-window.c: (launch_external_uri):
index 0874df2bc4d2bb924134563918d1b8ec0618b1ca..29f90e69e1fb5dd0eb94ee3d776eab998dccb103 100644 (file)
@@ -43,7 +43,7 @@ dnl Check dependencies
 # SHELL_LIBS
 
 DBUS_GLIB_REQUIRED=0.70
-GTK_REQUIRED=2.8.15
+GTK_REQUIRED=2.10.0
 KEYRING_REQUIRED=0.4.0
 
 LIBGNOMEUI_REQUIRED=2.14.0
@@ -204,15 +204,6 @@ AC_ARG_ENABLE(thumbnailer,
        [ENABLE_THUMBNAILER=yes]) dnl Default value
 AM_CONDITIONAL(ENABLE_THUMBNAILER, test x$ENABLE_THUMBNAILER = "xyes")
 
-
-dnl Check for GtkRecent
-PKG_CHECK_MODULES(GTK_RECENT, gtk+-2.0 >= 2.10.0, 
-                 [HAVE_GTK_RECENT=yes], [HAVE_GTK_RECENT=no])
-if test x$HAVE_GTK_RECENT = xyes; then
-   AC_DEFINE([HAVE_GTK_RECENT], [1], [defined if GtkRecent is available])
-fi
-AM_CONDITIONAL(HAVE_GTK_RECENT, test x$HAVE_GTK_RECENT = "xyes")
-
 dnl GConf configuration
 AM_GCONF_SOURCE_2
 
@@ -459,7 +450,6 @@ backend/pixbuf/Makefile
 backend/ps/Makefile
 backend/tiff/Makefile
 cut-n-paste/Makefile
-cut-n-paste/recent-files/Makefile
 cut-n-paste/toolbar-editor/Makefile
 cut-n-paste/zoom-control/Makefile
 cut-n-paste/totem-screensaver/Makefile
index d70ab46d5cdb8bb393ee9f39259dfa744e4e97fe..e30813155245e6303d248883992ccde266a7d4bf 100644 (file)
@@ -1,9 +1 @@
-SUBDIRS = 
-
-if HAVE_GTK_RECENT
-SUBDIRS += 
-else
-SUBDIRS += recent-files 
-endif
-
-SUBDIRS += zoom-control toolbar-editor totem-screensaver
+SUBDIRS = zoom-control toolbar-editor totem-screensaver
diff --git a/cut-n-paste/recent-files/Makefile.am b/cut-n-paste/recent-files/Makefile.am
deleted file mode 100644 (file)
index 8550d78..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-INCLUDES = \
-       $(LIB_CFLAGS) \
-       $(WARN_CFLAGS)
-
-#      $(DISABLE_DEPRECATED)
-
-EGG_FILES =                            \
-        egg-recent-model.c             \
-        egg-recent-model.h             \
-        egg-recent-item.c              \
-        egg-recent-item.h              \
-        egg-recent-view.c              \
-        egg-recent-view.h              \
-        egg-recent-view-uimanager.c    \
-        egg-recent-view-uimanager.h    \
-        egg-recent-util.c              \
-       egg-recent-util.h
-
-noinst_LTLIBRARIES = librecent.la
-
-librecent_la_SOURCES = $(EGG_FILES)
-
-EGGDIR=$(srcdir)/../../../libegg/libegg/recent-files
-regenerate-built-sources:
-       EGGFILES="$(EGG_FILES)" EGGDIR="$(EGGDIR)" $(top_srcdir)/cut-n-paste/update-from-egg.sh
diff --git a/cut-n-paste/recent-files/egg-recent-item.c b/cut-n-paste/recent-files/egg-recent-item.c
deleted file mode 100644 (file)
index ce4b64e..0000000
+++ /dev/null
@@ -1,426 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * This program 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- *
- * Authors:
- *   James Willcox <jwillcox@cs.indiana.edu>
- */
-
-
-#include <stdio.h>
-#include <string.h>
-#include <glib.h>
-#include <libgnomevfs/gnome-vfs.h>
-#include <libgnomevfs/gnome-vfs-mime-utils.h>
-#include "egg-recent-item.h"
-
-
-
-EggRecentItem *
-egg_recent_item_new (void)
-{
-       EggRecentItem *item;
-
-       item = g_new (EggRecentItem, 1);
-
-       item->groups = NULL;
-       item->private_data = FALSE;
-       item->uri = NULL;
-       item->mime_type = NULL;
-       item->mime_type_is_explicit = FALSE;
-
-       item->refcount = 1;
-
-       return item;
-}
-
-static void
-egg_recent_item_free (EggRecentItem *item)
-{
-       if (item->uri)
-               g_free (item->uri);
-
-       if (item->mime_type)
-               g_free (item->mime_type);
-
-       if (item->groups) {
-               g_list_foreach (item->groups, (GFunc)g_free, NULL);
-               g_list_free (item->groups);
-               item->groups = NULL;
-       }
-
-       g_free (item);
-}
-
-EggRecentItem *
-egg_recent_item_ref (EggRecentItem *item)
-{
-       item->refcount++;
-       return item;
-}
-
-EggRecentItem *
-egg_recent_item_unref (EggRecentItem *item)
-{
-       item->refcount--;
-
-       if (item->refcount == 0) {
-               egg_recent_item_free (item);
-       }
-
-       return item;
-}
-
-
-EggRecentItem * 
-egg_recent_item_new_from_uri (const gchar *uri)
-{
-       EggRecentItem *item;
-
-       g_return_val_if_fail (uri != NULL, NULL);
-
-       item = egg_recent_item_new ();
-
-       if (!egg_recent_item_set_uri (item ,uri)) {
-               egg_recent_item_free (item);
-               return NULL;
-       }
-       
-       return item;
-}
-
-static void
-egg_recent_item_update_mime_type (EggRecentItem *item)
-{
-       if (!item->mime_type_is_explicit) {
-               g_free (item->mime_type);
-               item->mime_type = NULL;
-
-               if (item->uri)
-                       item->mime_type = gnome_vfs_get_mime_type (item->uri);
-
-               if (!item->mime_type)
-                       item->mime_type = g_strdup (GNOME_VFS_MIME_TYPE_UNKNOWN);
-       }
-}
-
-gboolean
-egg_recent_item_set_uri (EggRecentItem *item, const gchar *uri)
-{
-       gchar *utf8_uri;
-
-       /* if G_BROKEN_FILENAMES is not set, this should succede */
-       if (g_utf8_validate (uri, -1, NULL)) {
-               item->uri = gnome_vfs_make_uri_from_input (uri);
-       } else {
-               utf8_uri = g_filename_to_utf8 (uri, -1, NULL, NULL, NULL);
-
-               if (utf8_uri == NULL) {
-                       g_warning ("Couldn't convert URI to UTF-8");
-                       return FALSE;
-               }
-
-               if (g_utf8_validate (utf8_uri, -1, NULL)) {
-                       item->uri = gnome_vfs_make_uri_from_input (utf8_uri);
-               } else {
-                       g_free (utf8_uri);
-                       return FALSE;
-               }
-
-               g_free (utf8_uri);
-       }
-
-       return TRUE;
-}
-
-gchar * 
-egg_recent_item_get_uri (const EggRecentItem *item)
-{
-       return g_strdup (item->uri);
-}
-
-G_CONST_RETURN gchar * 
-egg_recent_item_peek_uri (const EggRecentItem *item)
-{
-       return item->uri;
-}
-
-gchar * 
-egg_recent_item_get_uri_utf8 (const EggRecentItem *item)
-{
-       /* this could fail, but it's not likely, since we've already done it
-        * once in set_uri()
-        */
-       return g_filename_to_utf8 (item->uri, -1, NULL, NULL, NULL);
-}
-
-gchar *
-egg_recent_item_get_uri_for_display (const EggRecentItem *item)
-{
-       return gnome_vfs_format_uri_for_display (item->uri);
-}
-
-/* Stolen from gnome_vfs_make_valid_utf8() */
-static char *
-make_valid_utf8 (const char *name)
-{
-       GString *string;
-       const char *remainder, *invalid;
-       int remaining_bytes, valid_bytes;
-
-       string = NULL;
-       remainder = name;
-       remaining_bytes = name ? strlen (name) : 0;
-
-       while (remaining_bytes != 0) {
-               if (g_utf8_validate (remainder, remaining_bytes, &invalid))
-                       break;
-
-               valid_bytes = invalid - remainder;
-
-               if (string == NULL)
-                       string = g_string_sized_new (remaining_bytes);
-
-               g_string_append_len (string, remainder, valid_bytes);
-               g_string_append_c (string, '?');
-
-               remaining_bytes -= valid_bytes + 1;
-               remainder = invalid + 1;
-       }
-
-       if (string == NULL)
-               return g_strdup (name);
-
-       g_string_append (string, remainder);
-/*     g_string_append (string, _(" (invalid file name)")); */
-       g_assert (g_utf8_validate (string->str, -1, NULL));
-
-       return g_string_free (string, FALSE);
-}
-
-static gchar *
-get_uri_shortname_for_display (GnomeVFSURI *uri)
-{
-       gchar    *name; 
-       gboolean  validated;
-
-       validated = FALSE;
-       name = gnome_vfs_uri_extract_short_name (uri);
-       
-       if (name == NULL)
-       {
-               name = gnome_vfs_uri_to_string (uri, GNOME_VFS_URI_HIDE_PASSWORD);
-       }
-       else if (g_ascii_strcasecmp (uri->method_string, "file") == 0)
-       {
-               gchar *text_uri;
-               gchar *local_file;
-               text_uri = gnome_vfs_uri_to_string (uri, GNOME_VFS_URI_HIDE_PASSWORD);
-               local_file = gnome_vfs_get_local_path_from_uri (text_uri);
-               
-               if (local_file != NULL)
-               {
-                       g_free (name);
-                       name = g_filename_display_basename (local_file);
-                       validated = TRUE;
-               }
-               
-               g_free (local_file);
-               g_free (text_uri);
-       } 
-       else if (!gnome_vfs_uri_has_parent (uri)) 
-       {
-               const gchar *method;
-               
-               method = uri->method_string;
-               
-               if (name == NULL ||
-                   strcmp (name, GNOME_VFS_URI_PATH_STR) == 0) 
-               {
-                       g_free (name);
-                       name = g_strdup (method);
-               } 
-               else 
-               {
-                       gchar *tmp;
-                       
-                       tmp = name;
-                       name = g_strdup_printf ("%s: %s", method, name);
-                       g_free (tmp);
-               }
-       }
-
-       if (!validated && !g_utf8_validate (name, -1, NULL)) 
-       {
-               gchar *utf8_name;
-               
-               utf8_name = make_valid_utf8 (name);
-               g_free (name);
-               name = utf8_name;
-       }
-
-       return name;
-}
-
-/**
- * egg_recent_item_get_short_name:
- * @item: an #EggRecentItem
- *
- * Computes a valid UTF-8 string that can be used as the name of the item in a
- * menu or list.  For example, calling this function on an item that refers to
- * "file:///foo/bar.txt" will yield "bar.txt".
- *
- * Return value: A newly-allocated string in UTF-8 encoding; free it with
- * g_free().
- **/
-gchar *
-egg_recent_item_get_short_name (const EggRecentItem *item)
-{
-       GnomeVFSURI *uri;
-       gchar *short_name;
-
-       g_return_val_if_fail (item != NULL, NULL);
-
-       if (item->uri == NULL)
-               return NULL;
-
-       uri = gnome_vfs_uri_new (item->uri);
-       if (uri == NULL)
-               return NULL;
-
-       short_name = get_uri_shortname_for_display (uri);
-
-       gnome_vfs_uri_unref (uri);
-
-       return short_name;
-}
-
-void 
-egg_recent_item_set_mime_type (EggRecentItem *item, const gchar *mime)
-{
-       g_free (item->mime_type);
-       item->mime_type = NULL;
-
-       if (mime && mime[0]) {
-               item->mime_type_is_explicit = TRUE;
-               item->mime_type             = g_strdup (mime);
-       } else {
-               item->mime_type_is_explicit = FALSE;
-       }
-}
-
-gchar * 
-egg_recent_item_get_mime_type (EggRecentItem *item)
-{
-       egg_recent_item_update_mime_type (item);
-
-       return g_strdup (item->mime_type);
-}
-
-void 
-egg_recent_item_set_timestamp (EggRecentItem *item, time_t timestamp)
-{
-       if (timestamp == (time_t) -1)
-               time (&timestamp);
-
-       item->timestamp = timestamp;
-}
-
-time_t 
-egg_recent_item_get_timestamp (const EggRecentItem *item)
-{
-       return item->timestamp;
-}
-
-G_CONST_RETURN GList *
-egg_recent_item_get_groups (const EggRecentItem *item)
-{
-       return item->groups;
-}
-
-gboolean
-egg_recent_item_in_group (const EggRecentItem *item, const gchar *group_name)
-{
-       GList *tmp;
-
-       tmp = item->groups;
-       while (tmp != NULL) {
-               gchar *val = (gchar *)tmp->data;
-               
-               if (strcmp (group_name, val) == 0)
-                       return TRUE;
-
-               tmp = tmp->next;
-       }
-       
-       return FALSE;
-}
-
-void
-egg_recent_item_add_group (EggRecentItem *item, const gchar *group_name)
-{
-       g_return_if_fail (group_name != NULL);
-
-       if (!egg_recent_item_in_group (item, group_name))
-               item->groups = g_list_append (item->groups, g_strdup (group_name));
-}
-
-void
-egg_recent_item_remove_group (EggRecentItem *item, const gchar *group_name)
-{
-       GList *tmp;
-
-       g_return_if_fail (group_name != NULL);
-
-       tmp = item->groups;
-       while (tmp != NULL) {
-               gchar *val = (gchar *)tmp->data;
-               
-               if (strcmp (group_name, val) == 0) {
-                       item->groups = g_list_remove (item->groups,
-                                                     val);
-                       g_free (val);
-                       break;
-               }
-
-               tmp = tmp->next;
-       }
-}
-
-void
-egg_recent_item_set_private (EggRecentItem *item, gboolean priv)
-{
-       item->private_data = priv;
-}
-
-gboolean
-egg_recent_item_get_private (const EggRecentItem *item)
-{
-       return item->private_data;
-}
-
-GType
-egg_recent_item_get_type (void)
-{
-       static GType boxed_type = 0;
-       
-       if (!boxed_type) {
-               boxed_type = g_boxed_type_register_static ("EggRecentItem",
-                                       (GBoxedCopyFunc)egg_recent_item_ref,
-                                       (GBoxedFreeFunc)egg_recent_item_unref);
-       }
-       
-       return boxed_type;
-}
diff --git a/cut-n-paste/recent-files/egg-recent-item.h b/cut-n-paste/recent-files/egg-recent-item.h
deleted file mode 100644 (file)
index 00f8fb8..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-
-#ifndef __EGG_RECENT_ITEM_H__
-#define __EGG_RECENT_ITEM_H__
-
-#include <time.h>
-#include <glib.h>
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-#define EGG_TYPE_RECENT_ITEM       (egg_recent_item_get_type ())
-
-#define EGG_RECENT_ITEM_LIST_UNREF(list) \
-       g_list_foreach (list, (GFunc)egg_recent_item_unref, NULL); \
-       g_list_free (list);
-
-typedef struct _EggRecentItem EggRecentItem;
-
-struct _EggRecentItem {
-       /* do not access any of these directly */
-       gchar *uri;
-       gchar *mime_type;
-       time_t timestamp;
-
-       gboolean private_data;
-
-       GList *groups;
-       
-       int refcount;
-
-       guint mime_type_is_explicit : 1;
-};
-
-GType          egg_recent_item_get_type (void) G_GNUC_CONST;
-
-/* constructors */
-EggRecentItem * egg_recent_item_new (void);
-
-EggRecentItem *        egg_recent_item_ref (EggRecentItem *item);
-EggRecentItem *        egg_recent_item_unref (EggRecentItem *item);
-
-/* automatically fetches the mime type, etc */
-EggRecentItem * egg_recent_item_new_from_uri (const gchar *uri);
-
-gboolean egg_recent_item_set_uri (EggRecentItem *item, const gchar *uri);
-gchar * egg_recent_item_get_uri (const EggRecentItem *item);
-gchar * egg_recent_item_get_uri_utf8 (const EggRecentItem *item);
-gchar * egg_recent_item_get_uri_for_display (const EggRecentItem *item);
-gchar * egg_recent_item_get_short_name (const EggRecentItem *item);
-
-void egg_recent_item_set_mime_type (EggRecentItem *item, const gchar *mime);
-gchar * egg_recent_item_get_mime_type (EggRecentItem *item);
-
-void egg_recent_item_set_timestamp (EggRecentItem *item, time_t timestamp);
-time_t egg_recent_item_get_timestamp (const EggRecentItem *item);
-
-G_CONST_RETURN gchar *egg_recent_item_peek_uri (const EggRecentItem *item);
-
-
-/* groups */
-G_CONST_RETURN GList *  egg_recent_item_get_groups (const EggRecentItem *item);
-
-gboolean       egg_recent_item_in_group (const EggRecentItem *item,
-                                          const gchar *group_name);
-
-void           egg_recent_item_add_group (EggRecentItem *item,
-                                           const gchar *group_name);
-
-void           egg_recent_item_remove_group (EggRecentItem *item,
-                                              const gchar *group_name);
-
-void           egg_recent_item_set_private (EggRecentItem *item,
-                                             gboolean priv);
-
-gboolean       egg_recent_item_get_private (const EggRecentItem *item);
-
-
-G_END_DECLS
-
-#endif /* __EGG_RECENT_ITEM_H__ */
diff --git a/cut-n-paste/recent-files/egg-recent-model.c b/cut-n-paste/recent-files/egg-recent-model.c
deleted file mode 100644 (file)
index c9c255b..0000000
+++ /dev/null
@@ -1,1963 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * This program 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- *
- * Authors:
- *   James Willcox <jwillcox@cs.indiana.edu>
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/time.h>
-#include <sys/stat.h>
-#include <time.h>
-#include <gtk/gtk.h>
-#include <libgnomevfs/gnome-vfs.h>
-#include <libgnomevfs/gnome-vfs-mime-utils.h>
-#include <gconf/gconf-client.h>
-#include "egg-recent-model.h"
-#include "egg-recent-item.h"
-
-#define EGG_RECENT_MODEL_FILE_PATH "/.recently-used"
-#define EGG_RECENT_MODEL_BUFFER_SIZE 8192
-
-#define EGG_RECENT_MODEL_MAX_ITEMS 500
-#define EGG_RECENT_MODEL_DEFAULT_LIMIT 10
-#define EGG_RECENT_MODEL_TIMEOUT_LENGTH 200
-#define EGG_RECENT_MODEL_POLL_TIME 3
-
-/* needed for Darwin */
-#if !HAVE_DECL_LOCKF
-int lockf (int filedes, int function, off_t size);
-#endif
-
-#define EGG_RECENT_MODEL_KEY_DIR "/desktop/gnome/recent_files"
-#define EGG_RECENT_MODEL_DEFAULT_LIMIT_KEY EGG_RECENT_MODEL_KEY_DIR "/default_limit"
-#define EGG_RECENT_MODEL_EXPIRE_KEY EGG_RECENT_MODEL_KEY_DIR "/expire"
-
-struct _EggRecentModelPrivate {
-       GSList *mime_filter_values;     /* list of mime types we allow */
-       GSList *group_filter_values;    /* list of groups we allow */
-       GSList *scheme_filter_values;   /* list of URI schemes we allow */
-
-       EggRecentModelSort sort_type; /* type of sorting to be done */
-
-       int limit;                      /* soft limit for length of the list */
-       int expire_days;                /* number of days to hold an item */
-
-       char *path;                     /* path to the file we store stuff in */
-
-       GHashTable *monitors;
-
-       GnomeVFSMonitorHandle *monitor;
-
-       GConfClient *client;
-       gboolean use_default_limit;
-
-       guint limit_change_notify_id;
-       guint expiration_change_notify_id;
-
-       guint changed_timeout;
-       guint poll_timeout;
-       time_t last_mtime;
-};
-
-/* signals */
-enum {
-       CHANGED,
-       LAST_SIGNAL
-};
-
-static GType model_signals[LAST_SIGNAL] = { 0 };
-
-/* properties */
-enum {
-       PROP_BOGUS,
-       PROP_MIME_FILTERS,
-       PROP_GROUP_FILTERS,
-       PROP_SCHEME_FILTERS,
-       PROP_SORT_TYPE,
-       PROP_LIMIT
-};
-
-typedef struct {
-       GSList *states;
-       GList *items;
-       EggRecentItem *current_item;
-} ParseInfo;
-
-typedef enum {
-       STATE_START,
-       STATE_RECENT_FILES,
-       STATE_RECENT_ITEM,
-       STATE_URI,
-       STATE_MIME_TYPE,
-       STATE_TIMESTAMP,
-       STATE_PRIVATE,
-       STATE_GROUPS,
-       STATE_GROUP
-} ParseState;
-
-typedef struct {
-       EggRecentModel *model;
-       GList *list;
-} ChangedData;
-
-#define TAG_RECENT_FILES "RecentFiles"
-#define TAG_RECENT_ITEM "RecentItem"
-#define TAG_URI "URI"
-#define TAG_MIME_TYPE "Mime-Type"
-#define TAG_TIMESTAMP "Timestamp"
-#define TAG_PRIVATE "Private"
-#define TAG_GROUPS "Groups"
-#define TAG_GROUP "Group"
-
-static void start_element_handler (GMarkupParseContext *context,
-                             const gchar *element_name,
-                             const gchar **attribute_names,
-                             const gchar **attribute_values,
-                             gpointer user_data,
-                             GError **error);
-
-static void end_element_handler (GMarkupParseContext *context,
-                           const gchar *element_name,
-                           gpointer user_data,
-                           GError **error);
-
-static void text_handler (GMarkupParseContext *context,
-                    const gchar *text,
-                    gsize text_len,
-                    gpointer user_data,
-                    GError **error);
-
-static void error_handler (GMarkupParseContext *context,
-                     GError *error,
-                     gpointer user_data);
-
-static GMarkupParser parser = {start_element_handler, end_element_handler,
-                       text_handler,
-                       NULL,
-                       error_handler};
-
-static GObjectClass *parent_class;
-
-static void egg_recent_model_clear_mime_filter (EggRecentModel *model);
-static void egg_recent_model_clear_group_filter (EggRecentModel *model);
-static void egg_recent_model_clear_scheme_filter (EggRecentModel *model);
-
-static GObjectClass *parent_class;
-
-static gboolean
-egg_recent_model_string_match (const GSList *list, const gchar *str)
-{
-       const GSList *tmp;
-
-       if (list == NULL || str == NULL)
-               return TRUE;
-
-       tmp = list;
-       
-       while (tmp) {
-               if (g_pattern_match_string (tmp->data, str))
-                       return TRUE;
-               
-               tmp = tmp->next;
-       }
-
-       return FALSE;
-}
-
-static gboolean
-egg_recent_model_write_raw (EggRecentModel *model, FILE *file,
-                             const gchar *content)
-{
-       int len;
-       int fd;
-       struct stat sbuf;
-
-       rewind (file);
-
-       len = strlen (content);
-       fd = fileno (file);
-
-       if (fstat (fd, &sbuf) < 0)
-               g_warning ("Couldn't stat XML document.");
-
-       if ((off_t)len < sbuf.st_size) {
-               ftruncate (fd, len);
-       }
-
-       if (fputs (content, file) == EOF)
-               return FALSE;
-
-#ifndef G_OS_WIN32
-       fsync (fd);
-#endif
-       rewind (file);
-
-       return TRUE;
-}
-
-static GList *
-egg_recent_model_delete_from_list (GList *list,
-                                      const gchar *uri)
-{
-       GList *tmp;
-
-       if (!uri)
-               return list;
-
-       tmp = list;
-
-       while (tmp) {
-               EggRecentItem *item = tmp->data;
-               GList         *next;
-
-               next = tmp->next;
-
-               if (!strcmp (egg_recent_item_peek_uri (item), uri)) {
-                       egg_recent_item_unref (item);
-
-                       list = g_list_remove_link (list, tmp);
-                       g_list_free_1 (tmp);
-               }
-
-               tmp = next;
-       }
-
-       return list;
-}
-
-static void
-egg_recent_model_add_new_groups (EggRecentItem *item,
-                                EggRecentItem *upd_item)
-{
-       const GList *tmp;
-
-       tmp = egg_recent_item_get_groups (upd_item);
-
-       while (tmp) {
-               char *group = tmp->data;
-
-               if (!egg_recent_item_in_group (item, group))
-                       egg_recent_item_add_group (item, group);
-
-               tmp = tmp->next;
-       }
-}
-
-static gboolean
-egg_recent_model_update_item (GList *items, EggRecentItem *upd_item)
-{
-       GList      *tmp;
-       const char *uri;
-
-       uri = egg_recent_item_peek_uri (upd_item);
-
-       tmp = items;
-
-       while (tmp) {
-               EggRecentItem *item = tmp->data;
-
-               if (gnome_vfs_uris_match (egg_recent_item_peek_uri (item), uri)) {
-                       egg_recent_item_set_timestamp (item, (time_t) -1);
-
-                       egg_recent_model_add_new_groups (item, upd_item);
-
-                       return TRUE;
-               }
-
-               tmp = tmp->next;
-       }
-
-       return FALSE;
-}
-
-static gchar *
-egg_recent_model_read_raw (EggRecentModel *model, FILE *file)
-{
-       GString *string;
-       char buf[EGG_RECENT_MODEL_BUFFER_SIZE];
-
-       rewind (file);
-
-       string = g_string_new (NULL);
-       while (fgets (buf, EGG_RECENT_MODEL_BUFFER_SIZE, file)) {
-               string = g_string_append (string, buf);
-       }
-
-       rewind (file);
-
-       return g_string_free (string, FALSE);
-}
-
-
-
-static ParseInfo *
-parse_info_init (void)
-{
-       ParseInfo *retval;
-       
-       retval = g_new0 (ParseInfo, 1);
-       retval->states = g_slist_prepend (NULL, STATE_START);
-       retval->items = NULL;
-       
-       return retval;
-}
-
-static void
-parse_info_free (ParseInfo *info)
-{
-       g_slist_free (info->states);
-       g_free (info);
-}
-
-static void
-push_state (ParseInfo  *info,
-            ParseState  state)
-{
-  info->states = g_slist_prepend (info->states, GINT_TO_POINTER (state));
-}
-
-static void
-pop_state (ParseInfo *info)
-{
-  g_return_if_fail (info->states != NULL);
-
-  info->states = g_slist_remove (info->states, info->states->data);
-}
-
-static ParseState
-peek_state (ParseInfo *info)
-{
-  g_return_val_if_fail (info->states != NULL, STATE_START);
-
-  return GPOINTER_TO_INT (info->states->data);
-}
-
-#define ELEMENT_IS(name) (strcmp (element_name, (name)) == 0)
-
-static gboolean
-valid_element (ParseInfo    *info,
-              int           valid_parent_state,
-              const gchar  *element_name,
-              const gchar  *valid_element,
-              GError      **error)
-{
-       if (peek_state (info) != valid_parent_state) {
-             g_set_error (error,
-                          G_MARKUP_ERROR,
-                          G_MARKUP_ERROR_INVALID_CONTENT,
-                          "Unexpected tag '%s', tag '%s' expected",
-                          element_name, valid_element);
-             return FALSE;
-       }
-
-       return TRUE;
-}
-
-static void
-start_element_handler (GMarkupParseContext *context,
-                             const gchar *element_name,
-                             const gchar **attribute_names,
-                             const gchar **attribute_values,
-                             gpointer user_data,
-                             GError **error)
-{
-       ParseInfo *info = (ParseInfo *)user_data;
-
-       if (ELEMENT_IS (TAG_RECENT_FILES))
-               push_state (info, STATE_RECENT_FILES);
-       else if (ELEMENT_IS (TAG_RECENT_ITEM)) {
-               if (valid_element (info, STATE_RECENT_FILES,
-                                  TAG_RECENT_ITEM, TAG_RECENT_FILES, error)) {
-                       info->current_item = egg_recent_item_new ();
-                       push_state (info, STATE_RECENT_ITEM);
-               }
-       } else if (ELEMENT_IS (TAG_URI)) {
-               if (valid_element (info, STATE_RECENT_ITEM,
-                                  TAG_URI, TAG_RECENT_ITEM, error)) {
-                       push_state (info, STATE_URI);
-               }
-       } else if (ELEMENT_IS (TAG_MIME_TYPE)) {
-               if (valid_element (info, STATE_RECENT_ITEM,
-                                  TAG_MIME_TYPE, TAG_RECENT_ITEM, error)) {
-                       push_state (info, STATE_MIME_TYPE);
-               }
-       } else if (ELEMENT_IS (TAG_TIMESTAMP)) {
-               if (valid_element (info, STATE_RECENT_ITEM,
-                                  TAG_TIMESTAMP, TAG_RECENT_ITEM, error)) {
-                       push_state (info, STATE_TIMESTAMP);
-               }
-       } else if (ELEMENT_IS (TAG_PRIVATE)) {
-               if (valid_element (info, STATE_RECENT_ITEM,
-                                  TAG_PRIVATE, TAG_RECENT_ITEM, error)) {
-                       push_state (info, STATE_PRIVATE);
-                       egg_recent_item_set_private (info->current_item, TRUE);
-               }
-       } else if (ELEMENT_IS (TAG_GROUPS)) {
-               if (valid_element (info, STATE_RECENT_ITEM,
-                                  TAG_GROUPS, TAG_RECENT_ITEM, error)) {
-                       push_state (info, STATE_GROUPS);
-               }
-       } else if (ELEMENT_IS (TAG_GROUP)) {
-               if (valid_element (info, STATE_GROUPS,
-                                  TAG_GROUP, TAG_GROUPS, error)) {
-                       push_state (info, STATE_GROUP);
-               }
-       }
-}
-
-static gint
-list_compare_func_mru (gpointer a, gpointer b)
-{
-       EggRecentItem *item_a = (EggRecentItem *)a;
-       EggRecentItem *item_b = (EggRecentItem *)b;
-
-       return item_a->timestamp < item_b->timestamp;
-}
-
-static gint
-list_compare_func_lru (gpointer a, gpointer b)
-{
-       EggRecentItem *item_a = (EggRecentItem *)a;
-       EggRecentItem *item_b = (EggRecentItem *)b;
-
-       return item_a->timestamp > item_b->timestamp;
-}
-
-
-
-static void
-end_element_handler (GMarkupParseContext *context,
-                           const gchar *element_name,
-                           gpointer user_data,
-                           GError **error)
-{
-       ParseInfo *info = (ParseInfo *)user_data;
-
-       switch (peek_state (info)) {
-               case STATE_RECENT_ITEM:
-                       if (!info->current_item) {
-                               g_warning ("No recent item found\n");
-                               break;
-                       }
-
-                       if (!info->current_item->uri) {
-                               g_warning ("Invalid item found\n");
-                               break;
-                       }
-                               
-                       info->items = g_list_prepend (info->items,
-                                                     info->current_item);
-                       info->current_item = NULL;
-                       break;
-               default:
-                       break;
-       }
-
-       pop_state (info);
-}
-
-static void
-text_handler (GMarkupParseContext *context,
-                    const gchar *text,
-                    gsize text_len,
-                    gpointer user_data,
-                    GError **error)
-{
-       ParseInfo *info = (ParseInfo *)user_data;
-       gchar *value;
-
-       value = g_strndup (text, text_len);
-
-       switch (peek_state (info)) {
-               case STATE_START:
-               case STATE_RECENT_FILES:
-               case STATE_RECENT_ITEM:
-               case STATE_PRIVATE:
-               case STATE_GROUPS:
-               break;
-               case STATE_URI:
-                       egg_recent_item_set_uri (info->current_item, value);
-               break;
-               case STATE_MIME_TYPE:
-                       egg_recent_item_set_mime_type (info->current_item, value);
-               break;
-               case STATE_TIMESTAMP:
-                       egg_recent_item_set_timestamp (info->current_item,
-                                                        (time_t)atoi (value));
-               break;
-               case STATE_GROUP:
-                       egg_recent_item_add_group (info->current_item,
-                                                    text);
-               break;
-       }
-
-       g_free (value);
-}
-
-static void
-error_handler (GMarkupParseContext *context,
-                     GError *error,
-                     gpointer user_data)
-{
-       g_warning ("Error in parse: %s", error->message);
-}
-
-static void
-egg_recent_model_enforce_limit (GList *list, int limit)
-{
-       int len;
-       GList *end;
-
-       /* limit < 0 means unlimited */
-       if (limit <= 0)
-               return;
-
-       len = g_list_length (list);
-
-       if (len > limit) {
-               GList *next;
-
-               end = g_list_nth (list, limit-1);
-               next = end->next;
-
-               end->next = NULL;
-
-               EGG_RECENT_ITEM_LIST_UNREF (next);
-       }
-}
-
-static GList *
-egg_recent_model_sort (EggRecentModel *model, GList *list)
-{
-       switch (model->priv->sort_type) {
-               case EGG_RECENT_MODEL_SORT_MRU:
-                       list = g_list_sort (list,
-                                       (GCompareFunc)list_compare_func_mru);   
-               break;
-               case EGG_RECENT_MODEL_SORT_LRU:
-                       list = g_list_sort (list,
-                                       (GCompareFunc)list_compare_func_lru);
-               break;
-               case EGG_RECENT_MODEL_SORT_NONE:
-               break;
-       }
-
-       return list;
-}
-
-static gboolean
-egg_recent_model_group_match (EggRecentItem *item, GSList *groups)
-{
-       GSList *tmp;
-
-       tmp = groups;
-
-       while (tmp != NULL) {
-               const gchar * group = (const gchar *)tmp->data;
-
-               if (egg_recent_item_in_group (item, group))
-                       return TRUE;
-
-               tmp = tmp->next;
-       }
-
-       return FALSE;
-}
-
-static GList *
-egg_recent_model_filter (EggRecentModel *model, GList *list)
-{
-       GList *newlist = NULL;
-       GList *l;
-       gchar *mime_type;
-       gchar *uri;
-
-       g_return_val_if_fail (list != NULL, NULL);
-
-       for (l = list; l != NULL ; l = l->next) {
-               EggRecentItem *item = (EggRecentItem *) l->data;
-               gboolean pass_mime_test = FALSE;
-               gboolean pass_group_test = FALSE;
-               gboolean pass_scheme_test = FALSE;
-
-               g_assert (item != NULL);
-               
-               uri = egg_recent_item_get_uri (item);
-
-               /* filter by mime type */
-               if (model->priv->mime_filter_values != NULL) {
-                       mime_type = egg_recent_item_get_mime_type (item);
-
-                       if (egg_recent_model_string_match
-                                       (model->priv->mime_filter_values,
-                                        mime_type))
-                               pass_mime_test = TRUE;
-
-                       g_free (mime_type);
-               } else
-                       pass_mime_test = TRUE;
-
-               /* filter by group */
-               if (pass_mime_test && model->priv->group_filter_values != NULL) {
-                       if (egg_recent_model_group_match
-                                       (item, model->priv->group_filter_values))
-                               pass_group_test = TRUE;
-               } else if (egg_recent_item_get_private (item)) {
-                       pass_group_test = FALSE;
-               } else
-                       pass_group_test = TRUE;
-
-               /* filter by URI scheme */
-               if (pass_mime_test && pass_group_test &&
-                   model->priv->scheme_filter_values != NULL) {
-                       gchar *scheme;
-                       
-                       scheme = gnome_vfs_get_uri_scheme (uri);
-
-                       if (egg_recent_model_string_match
-                               (model->priv->scheme_filter_values, scheme))
-                               pass_scheme_test = TRUE;
-
-                       g_free (scheme);
-               } else
-                       pass_scheme_test = TRUE;
-
-               if (pass_mime_test && pass_group_test && pass_scheme_test)
-                       newlist = g_list_prepend (newlist, item);
-               else
-                       egg_recent_item_unref (item);
-
-               g_free (uri);
-       }
-
-       g_list_free (list);
-
-       return g_list_reverse (newlist);
-}
-
-
-
-#if 0
-static void
-egg_recent_model_monitor_list_cb (GnomeVFSMonitorHandle *handle,
-                              const gchar *monitor_uri,
-                              const gchar *info_uri,
-                              GnomeVFSMonitorEventType event_type,
-                              gpointer user_data)
-{
-       EggRecentModel *model;
-
-       model = EGG_RECENT_MODEL (user_data);
-
-       if (event_type == GNOME_VFS_MONITOR_EVENT_DELETED) {
-               egg_recent_model_delete (model, monitor_uri);
-               g_hash_table_remove (model->priv->monitors, monitor_uri);
-       }
-}
-
-
-
-static void
-egg_recent_model_monitor_list (EggRecentModel *model, GList *list)
-{
-       GList *tmp;
-
-       tmp = list;
-       while (tmp) {
-               EggRecentItem *item = (EggRecentItem *)tmp->data;
-               GnomeVFSMonitorHandle *handle;
-               GnomeVFSResult res;
-               gchar *uri;
-
-               tmp = tmp->next;
-               
-               uri = egg_recent_item_get_uri (item);
-               if (g_hash_table_lookup (model->priv->monitors, uri)) {
-                       /* already monitoring this one */
-                       g_free (uri);
-                       continue;
-               }
-
-               res = gnome_vfs_monitor_add (&handle, uri,
-                                            GNOME_VFS_MONITOR_FILE,
-                                            egg_recent_model_monitor_list_cb,
-                                            model);
-               
-               if (res == GNOME_VFS_OK)
-                       g_hash_table_insert (model->priv->monitors, uri, handle);
-               else
-                       g_free (uri);
-       }
-}
-#endif
-
-
-static gboolean
-egg_recent_model_changed_timeout (EggRecentModel *model)
-{
-       model->priv->changed_timeout = 0;
-
-       egg_recent_model_changed (model);
-
-       return FALSE;
-}
-
-static void
-egg_recent_model_monitor_cb (GnomeVFSMonitorHandle *handle,
-                              const gchar *monitor_uri,
-                              const gchar *info_uri,
-                              GnomeVFSMonitorEventType event_type,
-                              gpointer user_data)
-{
-       EggRecentModel *model;
-
-       g_return_if_fail (user_data != NULL);
-       g_return_if_fail (EGG_IS_RECENT_MODEL (user_data));
-       model = EGG_RECENT_MODEL (user_data);
-
-       if (event_type == GNOME_VFS_MONITOR_EVENT_CHANGED ||
-           event_type == GNOME_VFS_MONITOR_EVENT_CREATED ||
-           event_type == GNOME_VFS_MONITOR_EVENT_DELETED) {
-               if (model->priv->changed_timeout > 0) {
-                       g_source_remove (model->priv->changed_timeout);
-               }
-
-               model->priv->changed_timeout = g_timeout_add (
-                       EGG_RECENT_MODEL_TIMEOUT_LENGTH,
-                       (GSourceFunc)egg_recent_model_changed_timeout,
-                       model);
-       }
-}
-
-static gboolean
-egg_recent_model_poll_timeout (gpointer user_data)
-{
-       EggRecentModel *model;
-       struct stat stat_buf;
-       int stat_res;
-
-       model = EGG_RECENT_MODEL (user_data);
-       stat_res = stat (model->priv->path, &stat_buf);
-
-       if (!stat_res && stat_buf.st_mtime &&  
-           stat_buf.st_mtime != model->priv->last_mtime) {
-               model->priv->last_mtime = stat_buf.st_mtime;
-               
-               if (model->priv->changed_timeout > 0)
-                       g_source_remove (model->priv->changed_timeout);
-               
-               model->priv->changed_timeout = g_timeout_add (
-                       EGG_RECENT_MODEL_TIMEOUT_LENGTH,
-                       (GSourceFunc)egg_recent_model_changed_timeout,
-                       model);
-       }
-       return TRUE;
-}
-
-static void
-egg_recent_model_monitor (EggRecentModel *model, gboolean should_monitor)
-{
-       if (should_monitor && model->priv->monitor == NULL) {
-               char *uri;
-               GnomeVFSResult result;
-
-               uri = gnome_vfs_get_uri_from_local_path (model->priv->path);
-
-               result = gnome_vfs_monitor_add (&model->priv->monitor,
-                                               uri,
-                                               GNOME_VFS_MONITOR_FILE,
-                                               egg_recent_model_monitor_cb,
-                                               model);
-
-               g_free (uri);
-
-               /* if the above fails, don't worry about it.
-                * local notifications will still happen
-                */
-               if (result == GNOME_VFS_ERROR_NOT_SUPPORTED) {
-                       if (model->priv->poll_timeout > 0)
-                               g_source_remove (model->priv->poll_timeout);
-                       
-                       model->priv->poll_timeout = g_timeout_add (
-                               EGG_RECENT_MODEL_POLL_TIME * 1000,
-                               egg_recent_model_poll_timeout,
-                               model);
-               }
-
-       } else if (!should_monitor && model->priv->monitor != NULL) {
-               gnome_vfs_monitor_cancel (model->priv->monitor);
-               model->priv->monitor = NULL;
-       }
-}
-
-static void
-egg_recent_model_set_limit_internal (EggRecentModel *model, int limit)
-{
-       model->priv->limit = limit;
-
-       if (limit <= 0)
-               egg_recent_model_monitor (model, FALSE);
-       else {
-               egg_recent_model_monitor (model, TRUE);
-               egg_recent_model_changed (model);
-       }
-}
-
-static GList *
-egg_recent_model_read (EggRecentModel *model, FILE *file)
-{
-       GList *list=NULL;
-       gchar *content;
-       GMarkupParseContext *ctx;
-       ParseInfo *info;
-       GError *error;
-
-       content = egg_recent_model_read_raw (model, file);
-
-       if (strlen (content) <= 0) {
-               g_free (content);
-               return NULL;
-       }
-
-       info = parse_info_init ();
-       
-       ctx = g_markup_parse_context_new (&parser, 0, info, NULL);
-       
-       error = NULL;
-       if (!g_markup_parse_context_parse (ctx, content, strlen (content), &error)) {
-               g_warning ("Error while parsing the .recently-used file: %s\n",
-                          error->message);
-               
-               g_error_free (error);
-               parse_info_free (info);
-
-               return NULL;
-       }
-
-       error = NULL;
-       if (!g_markup_parse_context_end_parse (ctx, &error)) {
-               g_warning ("Unable to complete parsing of the .recently-used file: %s\n",
-                          error->message);
-               
-               g_error_free (error);
-               g_markup_parse_context_free (ctx);
-               parse_info_free (info);
-
-               return NULL;
-       }
-       
-       list = g_list_reverse (info->items);
-
-       g_markup_parse_context_free (ctx);
-       parse_info_free (info);
-       g_free (content);
-
-       return list;
-}
-
-
-static gboolean
-egg_recent_model_write (EggRecentModel *model, FILE *file, GList *list)
-{
-       GString *string;
-       gchar *data;
-       EggRecentItem *item;
-       const GList *groups;
-       int i;
-       int ret;
-       
-       string = g_string_new ("<?xml version=\"1.0\"?>\n");
-       string = g_string_append (string, "<" TAG_RECENT_FILES ">\n");
-
-       i=0;
-       while (list) {
-               gchar *uri;
-               gchar *mime_type;
-               gchar *escaped_uri;
-               time_t timestamp;
-               item = (EggRecentItem *)list->data;
-
-
-               uri = egg_recent_item_get_uri_utf8 (item);
-               escaped_uri = g_markup_escape_text (uri,
-                                                   strlen (uri));
-               g_free (uri);
-
-               mime_type = egg_recent_item_get_mime_type (item);
-               timestamp = egg_recent_item_get_timestamp (item);
-               
-               string = g_string_append (string, "  <" TAG_RECENT_ITEM ">\n");
-
-               g_string_append_printf (string,
-                               "    <" TAG_URI ">%s</" TAG_URI ">\n", escaped_uri);
-
-               if (mime_type)
-                       g_string_append_printf (string,
-                               "    <" TAG_MIME_TYPE ">%s</" TAG_MIME_TYPE ">\n", mime_type);
-               else
-                       g_string_append_printf (string,
-                               "    <" TAG_MIME_TYPE "></" TAG_MIME_TYPE ">\n");
-
-               
-               g_string_append_printf (string,
-                               "    <" TAG_TIMESTAMP ">%d</" TAG_TIMESTAMP ">\n", (int)timestamp);
-
-               if (egg_recent_item_get_private (item))
-                       string = g_string_append (string,
-                                       "    <" TAG_PRIVATE "/>\n");
-
-               /* write the groups */
-               string = g_string_append (string,
-                               "    <" TAG_GROUPS ">\n");
-               groups = egg_recent_item_get_groups (item);
-
-               if (groups == NULL && egg_recent_item_get_private (item))
-                       g_warning ("Item with URI \"%s\" marked as private, but"
-                                  " does not belong to any groups.\n", uri);
-               
-               while (groups) {
-                       const gchar *group = (const gchar *)groups->data;
-                       gchar *escaped_group;
-
-                       escaped_group = g_markup_escape_text (group, strlen(group));
-
-                       g_string_append_printf (string,
-                                       "      <" TAG_GROUP ">%s</" TAG_GROUP ">\n",
-                                       escaped_group);
-
-                       g_free (escaped_group);
-
-                       groups = groups->next;
-               }
-               
-               string = g_string_append (string, "    </" TAG_GROUPS ">\n");
-
-               string = g_string_append (string,
-                               "  </" TAG_RECENT_ITEM ">\n");
-
-               g_free (mime_type);
-               g_free (escaped_uri);
-
-               list = list->next;
-               i++;
-       }
-
-       string = g_string_append (string, "</" TAG_RECENT_FILES ">");
-
-       data = g_string_free (string, FALSE);
-
-       ret = egg_recent_model_write_raw (model, file, data);
-
-       g_free (data);
-
-       return ret;
-}
-
-static FILE *
-egg_recent_model_open_file (EggRecentModel *model,
-                           gboolean        for_writing)
-{
-       FILE *file;
-       mode_t prev_umask;
-       
-       file = fopen (model->priv->path, "r+");
-       if (file == NULL && for_writing) {
-               /* be paranoid */
-               prev_umask = umask (077);
-
-               file = fopen (model->priv->path, "w+");
-
-               umask (prev_umask);
-
-               g_return_val_if_fail (file != NULL, NULL);
-       }
-
-       return file;
-}
-
-static gboolean
-egg_recent_model_lock_file (FILE *file)
-{
-#ifdef HAVE_LOCKF
-       int fd;
-       gint    try = 5;
-
-       rewind (file);
-       fd = fileno (file);
-
-       /* Attempt to lock the file 5 times,
-        * waiting a random interval (< 1 second) 
-        * in between attempts.
-        * We should really be doing asynchronous
-        * locking, but requires substantially larger
-        * changes.
-        */
-       
-       while (try > 0)
-       {
-               int rand_interval;
-
-               if (lockf (fd, F_TLOCK, 0) == 0)
-                       return TRUE;
-
-               rand_interval = 1 + (int) (10.0 * rand()/(RAND_MAX + 1.0));
-                        
-               g_usleep (100000 * rand_interval);
-
-               --try;
-       }
-
-       return FALSE;
-#else
-       return TRUE;
-#endif /* HAVE_LOCKF */
-}
-
-static gboolean
-egg_recent_model_unlock_file (FILE *file)
-{
-#ifdef HAVE_LOCKF
-       int fd;
-
-       rewind (file);
-       fd = fileno (file);
-
-       return (lockf (fd, F_ULOCK, 0) == 0) ? TRUE : FALSE;
-#else
-       return TRUE;
-#endif /* HAVE_LOCKF */
-}
-
-static void
-egg_recent_model_finalize (GObject *object)
-{
-       EggRecentModel *model = EGG_RECENT_MODEL (object);
-
-       if (model->priv->changed_timeout > 0) {
-               g_source_remove (model->priv->changed_timeout);
-       }
-
-       egg_recent_model_monitor (model, FALSE);
-
-
-       g_slist_foreach (model->priv->mime_filter_values,
-                        (GFunc) g_pattern_spec_free, NULL);
-       g_slist_free (model->priv->mime_filter_values);
-       model->priv->mime_filter_values = NULL;
-
-       g_slist_foreach (model->priv->scheme_filter_values,
-                        (GFunc) g_pattern_spec_free, NULL);
-       g_slist_free (model->priv->scheme_filter_values);
-       model->priv->scheme_filter_values = NULL;
-
-       g_slist_foreach (model->priv->group_filter_values,
-                        (GFunc) g_free, NULL);
-       g_slist_free (model->priv->group_filter_values);
-       model->priv->group_filter_values = NULL;
-
-
-       if (model->priv->limit_change_notify_id)
-               gconf_client_notify_remove (model->priv->client,
-                                           model->priv->limit_change_notify_id);
-       model->priv->expiration_change_notify_id = 0;
-
-       if (model->priv->expiration_change_notify_id)
-               gconf_client_notify_remove (model->priv->client,
-                                           model->priv->expiration_change_notify_id);
-       model->priv->expiration_change_notify_id = 0;
-
-       g_object_unref (model->priv->client);
-       model->priv->client = NULL;
-
-
-       g_free (model->priv->path);
-       model->priv->path = NULL;
-       
-       g_hash_table_destroy (model->priv->monitors);
-       model->priv->monitors = NULL;
-
-       if (model->priv->poll_timeout > 0)
-               g_source_remove (model->priv->poll_timeout);
-       model->priv->poll_timeout =0;
-
-       g_free (model->priv);
-
-       parent_class->finalize (object);
-}
-
-static void
-egg_recent_model_set_property (GObject *object,
-                              guint prop_id,
-                              const GValue *value,
-                              GParamSpec *pspec)
-{
-       EggRecentModel *model = EGG_RECENT_MODEL (object);
-
-       switch (prop_id)
-       {
-               case PROP_MIME_FILTERS:
-                       if (model->priv->mime_filter_values != NULL)
-                               egg_recent_model_clear_mime_filter (model);
-                       
-                       model->priv->mime_filter_values =
-                               (GSList *)g_value_get_pointer (value);
-               break;
-
-               case PROP_GROUP_FILTERS:
-                       if (model->priv->group_filter_values != NULL)
-                               egg_recent_model_clear_group_filter (model);
-                       
-                       model->priv->group_filter_values =
-                               (GSList *)g_value_get_pointer (value);
-               break;
-
-               case PROP_SCHEME_FILTERS:
-                       if (model->priv->scheme_filter_values != NULL)
-                               egg_recent_model_clear_scheme_filter (model);
-                       
-                       model->priv->scheme_filter_values =
-                               (GSList *)g_value_get_pointer (value);
-               break;
-
-               case PROP_SORT_TYPE:
-                       model->priv->sort_type = g_value_get_int (value);
-               break;
-
-               case PROP_LIMIT:
-                       egg_recent_model_set_limit (model,
-                                               g_value_get_int (value));
-               break;
-
-               default:
-                       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-               break;
-       }
-}
-
-static void
-egg_recent_model_get_property (GObject *object,
-                              guint prop_id,
-                              GValue *value,
-                              GParamSpec *pspec)
-{
-       EggRecentModel *model = EGG_RECENT_MODEL (object);
-
-       switch (prop_id)
-       {
-               case PROP_MIME_FILTERS:
-                       g_value_set_pointer (value, model->priv->mime_filter_values);
-               break;
-
-               case PROP_GROUP_FILTERS:
-                       g_value_set_pointer (value, model->priv->group_filter_values);
-               break;
-
-               case PROP_SCHEME_FILTERS:
-                       g_value_set_pointer (value, model->priv->scheme_filter_values);
-               break;
-
-               case PROP_SORT_TYPE:
-                       g_value_set_int (value, model->priv->sort_type);
-               break;
-
-               case PROP_LIMIT:
-                       g_value_set_int (value, model->priv->limit);
-               break;
-
-               default:
-                       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-               break;
-       }
-}
-
-static void
-egg_recent_model_class_init (EggRecentModelClass * klass)
-{
-       GObjectClass *object_class;
-
-       parent_class = g_type_class_peek_parent (klass);
-
-       parent_class = g_type_class_peek_parent (klass);
-
-       object_class = G_OBJECT_CLASS (klass);
-       object_class->set_property = egg_recent_model_set_property;
-       object_class->get_property = egg_recent_model_get_property;
-       object_class->finalize     = egg_recent_model_finalize;
-
-       model_signals[CHANGED] = g_signal_new ("changed",
-                       G_OBJECT_CLASS_TYPE (object_class),
-                       G_SIGNAL_RUN_LAST,
-                       G_STRUCT_OFFSET (EggRecentModelClass, changed),
-                       NULL, NULL,
-                       g_cclosure_marshal_VOID__POINTER,
-                       G_TYPE_NONE, 1,
-                       G_TYPE_POINTER);
-
-       
-       g_object_class_install_property (object_class,
-                                        PROP_MIME_FILTERS,
-                                        g_param_spec_pointer ("mime-filters",
-                                        "Mime Filters",
-                                        "List of mime types to be allowed.",
-                                        G_PARAM_READWRITE));
-       
-       g_object_class_install_property (object_class,
-                                        PROP_GROUP_FILTERS,
-                                        g_param_spec_pointer ("group-filters",
-                                        "Group Filters",
-                                        "List of groups to be allowed.",
-                                        G_PARAM_READWRITE));
-
-       g_object_class_install_property (object_class,
-                                        PROP_SCHEME_FILTERS,
-                                        g_param_spec_pointer ("scheme-filters",
-                                        "Scheme Filters",
-                                        "List of URI schemes to be allowed.",
-                                        G_PARAM_READWRITE));
-
-       g_object_class_install_property (object_class,
-                                        PROP_SORT_TYPE,
-                                        g_param_spec_int ("sort-type",
-                                        "Sort Type",
-                                        "Type of sorting to be done.",
-                                        0, EGG_RECENT_MODEL_SORT_NONE,
-                                        EGG_RECENT_MODEL_SORT_MRU,
-                                        G_PARAM_READWRITE));
-
-       g_object_class_install_property (object_class,
-                                        PROP_LIMIT,
-                                        g_param_spec_int ("limit",
-                                        "Limit",
-                                        "Max number of items allowed.",
-                                        -1, EGG_RECENT_MODEL_MAX_ITEMS,
-                                        EGG_RECENT_MODEL_DEFAULT_LIMIT,
-                                        G_PARAM_READWRITE));
-
-       klass->changed = NULL;
-}
-
-
-
-static void
-egg_recent_model_limit_changed (GConfClient *client, guint cnxn_id,
-                               GConfEntry *entry, gpointer user_data)
-{
-       EggRecentModel *model;
-       GConfValue *value;
-
-       model = EGG_RECENT_MODEL (user_data);
-
-       g_return_if_fail (model != NULL);
-
-       if (model->priv->use_default_limit == FALSE)
-               return; /* ignore this key */
-
-       /* the key was unset, and the schema has apparently failed */
-       if (entry == NULL)
-               return;
-
-       value = gconf_entry_get_value (entry);
-
-       if (value->type != GCONF_VALUE_INT) {
-               g_warning ("Expected GConfValue of type integer, "
-                          "got something else");
-       }
-
-
-       egg_recent_model_set_limit_internal (model, gconf_value_get_int (value));
-}
-
-static void
-egg_recent_model_expiration_changed (GConfClient *client, guint cnxn_id,
-                                    GConfEntry *entry, gpointer user_data)
-{
-
-}
-
-static void
-egg_recent_model_init (EggRecentModel * model)
-{
-       if (!gnome_vfs_init ()) {
-               g_warning ("gnome-vfs initialization failed.");
-               return;
-       }
-       
-
-       model->priv = g_new0 (EggRecentModelPrivate, 1);
-
-       model->priv->path = g_strdup_printf ("%s" EGG_RECENT_MODEL_FILE_PATH,
-                                            g_get_home_dir ());
-
-       model->priv->mime_filter_values   = NULL;
-       model->priv->group_filter_values  = NULL;
-       model->priv->scheme_filter_values = NULL;
-       
-       model->priv->client = gconf_client_get_default ();
-       gconf_client_add_dir (model->priv->client, EGG_RECENT_MODEL_KEY_DIR,
-                             GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
-
-       model->priv->limit_change_notify_id =
-                       gconf_client_notify_add (model->priv->client,
-                                                EGG_RECENT_MODEL_DEFAULT_LIMIT_KEY,
-                                                egg_recent_model_limit_changed,
-                                                model, NULL, NULL);
-
-       model->priv->expiration_change_notify_id =
-                       gconf_client_notify_add (model->priv->client,
-                                                EGG_RECENT_MODEL_EXPIRE_KEY,
-                                                egg_recent_model_expiration_changed,
-                                                model, NULL, NULL);
-
-       model->priv->expire_days = gconf_client_get_int (
-                                       model->priv->client,
-                                       EGG_RECENT_MODEL_EXPIRE_KEY,
-                                       NULL);
-                                       
-#if 0
-       /* keep this out, for now */
-       model->priv->limit = gconf_client_get_int (
-                                       model->priv->client,
-                                       EGG_RECENT_MODEL_DEFAULT_LIMIT_KEY, NULL);
-       model->priv->use_default_limit = TRUE;
-#endif
-       model->priv->limit = EGG_RECENT_MODEL_DEFAULT_LIMIT;
-       model->priv->use_default_limit = FALSE;
-
-       model->priv->monitors = g_hash_table_new_full (
-                                       g_str_hash, g_str_equal,
-                                       (GDestroyNotify) g_free,
-                                       (GDestroyNotify) gnome_vfs_monitor_cancel);
-
-       model->priv->monitor = NULL;
-       model->priv->poll_timeout = 0;
-       model->priv->last_mtime = 0;
-       egg_recent_model_monitor (model, TRUE);
-}
-
-
-/**
- * egg_recent_model_new:
- * @sort:  the type of sorting to use
- * @limit:  maximum number of items in the list
- *
- * This creates a new EggRecentModel object.
- *
- * Returns: a EggRecentModel object
- */
-EggRecentModel *
-egg_recent_model_new (EggRecentModelSort sort)
-{
-       EggRecentModel *model;
-
-       model = EGG_RECENT_MODEL (g_object_new (egg_recent_model_get_type (),
-                                 "sort-type", sort, NULL));
-
-       g_return_val_if_fail (model, NULL);
-
-       return model;
-}
-
-/**
- * egg_recent_model_add_full:
- * @model:  A EggRecentModel object.
- * @item:  A EggRecentItem
- *
- * This function adds an item to the list of recently used URIs.
- *
- * Returns: gboolean
- */
-gboolean
-egg_recent_model_add_full (EggRecentModel * model, EggRecentItem *item)
-{
-       FILE *file;
-       GList *list = NULL;
-       gboolean ret = FALSE;
-       gboolean updated = FALSE;
-       char *uri;
-       time_t t;
-       
-       g_return_val_if_fail (model != NULL, FALSE);
-       g_return_val_if_fail (EGG_IS_RECENT_MODEL (model), FALSE);
-
-       uri = egg_recent_item_get_uri (item);
-       if (strncmp (uri, "recent-files://", strlen ("recent-files://")) == 0) {
-               g_free (uri);
-               return FALSE;
-       } else {
-               g_free (uri);
-       }
-
-       file = egg_recent_model_open_file (model, TRUE);
-       g_return_val_if_fail (file != NULL, FALSE);
-
-       time (&t);
-       egg_recent_item_set_timestamp (item, t);
-
-       if (egg_recent_model_lock_file (file)) {
-
-               /* read existing stuff */
-               list = egg_recent_model_read (model, file);
-
-               /* if it's already there, we just update it */
-               updated = egg_recent_model_update_item (list, item);
-
-               if (!updated) {
-                       list = g_list_prepend (list, item);
-
-                       egg_recent_model_enforce_limit (list,
-                                               EGG_RECENT_MODEL_MAX_ITEMS);
-               }
-
-               /* write new stuff */
-               if (!egg_recent_model_write (model, file, list))
-                       g_warning ("Write failed: %s", strerror (errno));
-
-               if (!updated)
-                       list = g_list_remove (list, item);
-
-               EGG_RECENT_ITEM_LIST_UNREF (list);
-               ret = TRUE;
-       } else {
-               g_warning ("Failed to lock:  %s", strerror (errno));
-               fclose (file);
-               return FALSE;
-       }
-
-       if (!egg_recent_model_unlock_file (file))
-               g_warning ("Failed to unlock: %s", strerror (errno));
-
-       fclose (file);
-
-       if (model->priv->monitor == NULL) {
-               /* since monitoring isn't working, at least give a
-                * local notification
-                */
-               egg_recent_model_changed (model);
-       }
-
-       return ret;
-}
-
-/**
- * egg_recent_model_add:
- * @model:  A EggRecentModel object.
- * @uri:  A string URI
- *
- * This function adds an item to the list of recently used URIs.
- *
- * Returns: gboolean
- */
-gboolean
-egg_recent_model_add (EggRecentModel *model, const gchar *uri)
-{
-       EggRecentItem *item;
-       gboolean ret = FALSE;
-
-       g_return_val_if_fail (model != NULL, FALSE);
-       g_return_val_if_fail (uri != NULL, FALSE);
-
-       item = egg_recent_item_new_from_uri (uri);
-
-       g_return_val_if_fail (item != NULL, FALSE);
-
-       ret = egg_recent_model_add_full (model, item);
-
-       egg_recent_item_unref (item);
-
-       return ret;
-}
-
-
-
-/**
- * egg_recent_model_delete:
- * @model:  A EggRecentModel object.
- * @uri: The URI you want to delete.
- *
- * This function deletes a URI from the file of recently used URIs.
- *
- * Returns: gboolean
- */
-gboolean
-egg_recent_model_delete (EggRecentModel * model, const gchar * uri)
-{
-       FILE *file;
-       GList *list;
-       unsigned int length;
-       gboolean ret = FALSE;
-
-       g_return_val_if_fail (model != NULL, FALSE);
-       g_return_val_if_fail (EGG_IS_RECENT_MODEL (model), FALSE);
-       g_return_val_if_fail (uri != NULL, FALSE);
-
-       file = egg_recent_model_open_file (model, TRUE);
-       g_return_val_if_fail (file != NULL, FALSE);
-
-       if (egg_recent_model_lock_file (file)) {
-               list = egg_recent_model_read (model, file);
-
-               if (list == NULL)
-                       goto out;
-
-               length = g_list_length (list);
-
-               list = egg_recent_model_delete_from_list (list, uri);
-               
-               if (length == g_list_length (list)) {
-                       /* nothing was deleted */
-                       EGG_RECENT_ITEM_LIST_UNREF (list);
-               } else {
-                       egg_recent_model_write (model, file, list);
-                       EGG_RECENT_ITEM_LIST_UNREF (list);
-                       ret = TRUE;
-
-               }
-       } else {
-               g_warning ("Failed to lock:  %s", strerror (errno));
-               return FALSE;
-       }
-
-out:
-               
-       if (!egg_recent_model_unlock_file (file))
-               g_warning ("Failed to unlock: %s", strerror (errno));
-
-       fclose (file);
-
-       g_hash_table_remove (model->priv->monitors, uri);
-
-       if (model->priv->monitor == NULL && ret) {
-               /* since monitoring isn't working, at least give a
-                * local notification
-                */
-               egg_recent_model_changed (model);
-       }
-
-       return ret;
-}
-
-
-/**
- * egg_recent_model_get_list:
- * @model:  A EggRecentModel object.
- *
- * This function gets the current contents of the file
- *
- * Returns: a GList
- */
-GList *
-egg_recent_model_get_list (EggRecentModel *model)
-{
-       FILE *file;
-       GList *list = NULL;
-
-       file = egg_recent_model_open_file (model, FALSE);
-       if (file == NULL)
-               return NULL;
-       
-       if (egg_recent_model_lock_file (file))
-               list = egg_recent_model_read (model, file);
-       else {
-               g_warning ("Failed to lock:  %s", strerror (errno));
-               fclose (file);
-               return NULL;
-       }
-
-       if (!egg_recent_model_unlock_file (file))
-               g_warning ("Failed to unlock: %s", strerror (errno));
-
-       if (list != NULL) {
-               list = egg_recent_model_filter (model, list);
-               list = egg_recent_model_sort (model, list);
-
-               egg_recent_model_enforce_limit (list, model->priv->limit);
-       }
-
-       fclose (file);
-
-       return list;
-}
-
-
-
-/**
- * egg_recent_model_set_limit:
- * @model:  A EggRecentModel object.
- * @limit:  The maximum length of the list
- *
- * This function sets the maximum length of the list.  Note:  This only affects
- * the length of the list emitted in the "changed" signal, not the list stored
- * on disk.
- *
- * Returns:  void
- */
-void
-egg_recent_model_set_limit (EggRecentModel *model, int limit)
-{
-       model->priv->use_default_limit = FALSE;
-
-       egg_recent_model_set_limit_internal (model, limit);
-}
-
-/**
- * egg_recent_model_get_limit:
- * @model:  A EggRecentModel object.
- *
- * This function gets the maximum length of the list. 
- *
- * Returns:  int
- */
-int
-egg_recent_model_get_limit (EggRecentModel *model)
-{
-       return model->priv->limit;
-}
-
-
-/**
- * egg_recent_model_clear:
- * @model:  A EggRecentModel object.
- *
- * This function clears the contents of the file
- *
- * Returns: void
- */
-void
-egg_recent_model_clear (EggRecentModel *model)
-{
-       FILE *file;
-       int fd;
-
-       file = egg_recent_model_open_file (model, TRUE);
-       g_return_if_fail (file != NULL);
-
-       fd = fileno (file);
-
-       if (egg_recent_model_lock_file (file)) {
-               ftruncate (fd, 0);
-       } else {
-               g_warning ("Failed to lock:  %s", strerror (errno));
-               return;
-       }
-
-       if (!egg_recent_model_unlock_file (file))
-               g_warning ("Failed to unlock: %s", strerror (errno));
-
-       fclose (file);
-       
-       if (model->priv->monitor == NULL) {
-               /* since monitoring isn't working, at least give a
-                * local notification
-                */
-               egg_recent_model_changed (model);
-       }
-}
-
-static void
-egg_recent_model_clear_mime_filter (EggRecentModel *model)
-{
-       g_return_if_fail (model != NULL);
-
-       if (model->priv->mime_filter_values != NULL) {
-               g_slist_foreach (model->priv->mime_filter_values,
-                                (GFunc) g_pattern_spec_free, NULL);
-               g_slist_free (model->priv->mime_filter_values);
-               model->priv->mime_filter_values = NULL;
-       }
-}      
-
-/**
- * egg_recent_model_set_filter_mime_types:
- * @model:  A EggRecentModel object.
- *
- * Sets which mime types are allowed in the list.
- *
- * Returns: void
- */
-void
-egg_recent_model_set_filter_mime_types (EggRecentModel *model,
-                              ...)
-{
-       va_list valist;
-       GSList *list = NULL;
-       gchar *str;
-
-       g_return_if_fail (model != NULL);
-
-       egg_recent_model_clear_mime_filter (model);
-
-       va_start (valist, model);
-
-       str = va_arg (valist, gchar*);
-
-       while (str != NULL) {
-               list = g_slist_prepend (list, g_pattern_spec_new (str));
-
-               str = va_arg (valist, gchar*);
-       }
-
-       va_end (valist);
-
-       model->priv->mime_filter_values = list;
-}
-
-static void
-egg_recent_model_clear_group_filter (EggRecentModel *model)
-{
-       g_return_if_fail (model != NULL);
-
-       if (model->priv->group_filter_values != NULL) {
-               g_slist_foreach (model->priv->group_filter_values, (GFunc)g_free, NULL);
-               g_slist_free (model->priv->group_filter_values);
-               model->priv->group_filter_values = NULL;
-       }
-}
-
-/**
- * egg_recent_model_set_filter_groups:
- * @model:  A EggRecentModel object.
- *
- * Sets which groups are allowed in the list.
- *
- * Returns: void
- */
-void
-egg_recent_model_set_filter_groups (EggRecentModel *model,
-                              ...)
-{
-       va_list valist;
-       GSList *list = NULL;
-       gchar *str;
-
-       g_return_if_fail (model != NULL);
-
-       egg_recent_model_clear_group_filter (model);
-       
-       va_start (valist, model);
-
-       str = va_arg (valist, gchar*);
-
-       while (str != NULL) {
-               list = g_slist_prepend (list, g_strdup (str));
-
-               str = va_arg (valist, gchar*);
-       }
-
-       va_end (valist);
-
-       model->priv->group_filter_values = list;
-}
-
-static void
-egg_recent_model_clear_scheme_filter (EggRecentModel *model)
-{
-       g_return_if_fail (model != NULL);
-
-       if (model->priv->scheme_filter_values != NULL) {
-               g_slist_foreach (model->priv->scheme_filter_values,
-                               (GFunc) g_pattern_spec_free, NULL);
-               g_slist_free (model->priv->scheme_filter_values);
-               model->priv->scheme_filter_values = NULL;
-       }
-}
-
-/**
- * egg_recent_model_set_filter_uri_schemes:
- * @model:  A EggRecentModel object.
- *
- * Sets which URI schemes (file, http, ftp, etc) are allowed in the list.
- *
- * Returns: void
- */
-void
-egg_recent_model_set_filter_uri_schemes (EggRecentModel *model, ...)
-{
-       va_list valist;
-       GSList *list = NULL;
-       gchar *str;
-
-       g_return_if_fail (model != NULL);
-
-       egg_recent_model_clear_scheme_filter (model);
-       
-       va_start (valist, model);
-
-       str = va_arg (valist, gchar*);
-
-       while (str != NULL) {
-               list = g_slist_prepend (list, g_pattern_spec_new (str));
-
-               str = va_arg (valist, gchar*);
-       }
-
-       va_end (valist);
-
-       model->priv->scheme_filter_values = list;
-}
-
-/**
- * egg_recent_model_set_sort:
- * @model:  A EggRecentModel object.
- * @sort:  A EggRecentModelSort type
- *
- * Sets the type of sorting to be used.
- *
- * Returns: void
- */
-void
-egg_recent_model_set_sort (EggRecentModel *model,
-                            EggRecentModelSort sort)
-{
-       g_return_if_fail (model != NULL);
-       
-       model->priv->sort_type = sort;
-}
-
-/**
- * egg_recent_model_changed:
- * @model:  A EggRecentModel object.
- *
- * This function causes a "changed" signal to be emitted.
- *
- * Returns: void
- */
-void
-egg_recent_model_changed (EggRecentModel *model)
-{
-       GList *list = NULL;
-
-       if (model->priv->limit > 0) {
-               list = egg_recent_model_get_list (model);
-               /* egg_recent_model_monitor_list (model, list); */
-       
-               g_signal_emit (G_OBJECT (model), model_signals[CHANGED], 0,
-                              list);
-       }
-
-       if (list)
-               EGG_RECENT_ITEM_LIST_UNREF (list);
-}
-
-static void
-egg_recent_model_remove_expired_list (EggRecentModel *model, GList *list)
-{
-       time_t current_time;
-       time_t day_seconds;
-
-       time (&current_time);
-       day_seconds = model->priv->expire_days*24*60*60;
-
-       while (list != NULL) {
-               EggRecentItem *item = list->data;
-               time_t timestamp;
-
-               timestamp = egg_recent_item_get_timestamp (item);
-
-               if ((timestamp+day_seconds) < current_time) {
-                       gchar *uri = egg_recent_item_get_uri (item);
-                       egg_recent_model_delete (model, uri);
-
-                       g_strdup (uri);
-               }
-
-               list = list->next;
-       }
-}
-
-
-/**
- * egg_recent_model_remove_expired:
- * @model:  A EggRecentModel object.
- *
- * Goes through the entire list, and removes any items that are older than
- * the user-specified expiration period.
- *
- * Returns: void
- */
-void
-egg_recent_model_remove_expired (EggRecentModel *model)
-{
-       FILE *file;
-       GList *list=NULL;
-
-       g_return_if_fail (model != NULL);
-
-       file = egg_recent_model_open_file (model, FALSE);
-       if (file == NULL)
-               return;
-       
-       if (egg_recent_model_lock_file (file)) {
-               list = egg_recent_model_read (model, file);
-               
-       } else {
-               g_warning ("Failed to lock:  %s", strerror (errno));
-               return;
-       }
-
-       if (!egg_recent_model_unlock_file (file))
-               g_warning ("Failed to unlock: %s", strerror (errno));
-
-       if (list != NULL) {
-               egg_recent_model_remove_expired_list (model, list);
-               EGG_RECENT_ITEM_LIST_UNREF (list);
-       }
-
-       fclose (file);
-}
-
-/**
- * egg_recent_model_get_type:
- *
- * This returns a GType representing a EggRecentModel object.
- *
- * Returns: a GType
- */
-GType
-egg_recent_model_get_type (void)
-{
-       static GType egg_recent_model_type = 0;
-
-       if(!egg_recent_model_type) {
-               const GTypeInfo egg_recent_model_info = {
-                       sizeof (EggRecentModelClass),
-                       NULL, /* base init */
-                       NULL, /* base finalize */
-                       (GClassInitFunc)egg_recent_model_class_init, /* class init */
-                       NULL, /* class finalize */
-                       NULL, /* class data */
-                       sizeof (EggRecentModel),
-                       0,
-                       (GInstanceInitFunc) egg_recent_model_init
-               };
-
-               egg_recent_model_type = g_type_register_static (G_TYPE_OBJECT,
-                                                       "EggRecentModel",
-                                                       &egg_recent_model_info, 0);
-       }
-
-       return egg_recent_model_type;
-}
-
diff --git a/cut-n-paste/recent-files/egg-recent-model.h b/cut-n-paste/recent-files/egg-recent-model.h
deleted file mode 100644 (file)
index 8c2eb8d..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef __EGG_RECENT_MODEL_H__
-#define __EGG_RECENT_MODEL_H__
-
-#include "egg-recent-item.h"
-
-G_BEGIN_DECLS
-
-#define EGG_TYPE_RECENT_MODEL          (egg_recent_model_get_type ())
-#define EGG_RECENT_MODEL(obj)          G_TYPE_CHECK_INSTANCE_CAST (obj, EGG_TYPE_RECENT_MODEL, EggRecentModel)
-#define EGG_RECENT_MODEL_CLASS(klass)  G_TYPE_CHECK_CLASS_CAST (klass, EGG_TYPE_RECENT_MODEL, EggRecentModelClass)
-#define EGG_IS_RECENT_MODEL(obj)       G_TYPE_CHECK_INSTANCE_TYPE (obj, egg_recent_model_get_type ())
-
-typedef struct _EggRecentModel        EggRecentModel;
-typedef struct _EggRecentModelPrivate EggRecentModelPrivate;
-typedef struct _EggRecentModelClass   EggRecentModelClass;
-
-struct _EggRecentModel {
-       GObject                parent_instance;
-
-       EggRecentModelPrivate *priv;
-};
-
-struct _EggRecentModelClass {
-       GObjectClass parent_class;
-                       
-       void (*changed) (EggRecentModel *model, GList *list);
-};
-
-typedef enum {
-       EGG_RECENT_MODEL_SORT_MRU,
-       EGG_RECENT_MODEL_SORT_LRU,
-       EGG_RECENT_MODEL_SORT_NONE
-} EggRecentModelSort;
-
-
-/* Standard group names */
-#define EGG_RECENT_GROUP_LAUNCHERS "Launchers"
-
-
-GType    egg_recent_model_get_type     (void);
-
-/* constructors */
-EggRecentModel * egg_recent_model_new (EggRecentModelSort sort);
-
-/* public methods */
-void     egg_recent_model_set_filter_mime_types (EggRecentModel *model,
-                                                  ...);
-
-void     egg_recent_model_set_filter_groups (EggRecentModel *model, ...);
-
-void     egg_recent_model_set_filter_uri_schemes (EggRecentModel *model,
-                                                  ...);
-
-void     egg_recent_model_set_sort (EggRecentModel *model,
-                                     EggRecentModelSort sort);
-
-gboolean egg_recent_model_add_full (EggRecentModel *model,
-                                     EggRecentItem *item);
-
-gboolean egg_recent_model_add       (EggRecentModel *model,
-                                     const gchar *uri);
-
-gboolean egg_recent_model_delete   (EggRecentModel *model,
-                                     const gchar *uri);
-
-void egg_recent_model_clear        (EggRecentModel *model);
-
-GList * egg_recent_model_get_list  (EggRecentModel *model);
-
-void egg_recent_model_changed      (EggRecentModel *model);
-
-void egg_recent_model_set_limit    (EggRecentModel *model, int limit);
-int  egg_recent_model_get_limit    (EggRecentModel *model);
-
-void egg_recent_model_remove_expired (EggRecentModel *model);
-
-G_END_DECLS
-
-#endif /* __EGG_RECENT_MODEL_H__ */
diff --git a/cut-n-paste/recent-files/egg-recent-util.c b/cut-n-paste/recent-files/egg-recent-util.c
deleted file mode 100644 (file)
index 4597f03..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-#include <config.h>
-#include <stdio.h>
-#include <string.h>
-#include <gtk/gtk.h>
-#ifndef USE_STABLE_LIBGNOMEUI
-#include <libgnomeui/gnome-icon-lookup.h>
-#endif
-#include <time.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <math.h>
-#include "egg-recent-util.h"
-
-#ifdef G_OS_WIN32
-#include <windows.h>
-#endif
-
-#define EGG_RECENT_UTIL_HOSTNAME_SIZE 512
-
-/* ripped out of gedit2 */
-gchar* 
-egg_recent_util_escape_underlines (const gchar* text)
-{
-       GString *str;
-       gint length;
-       const gchar *p;
-       const gchar *end;
-
-       g_return_val_if_fail (text != NULL, NULL);
-
-       length = strlen (text);
-
-       str = g_string_new ("");
-
-       p = text;
-       end = text + length;
-
-       while (p != end)
-       {
-               const gchar *next;
-               next = g_utf8_next_char (p);
-
-               switch (*p)
-               {
-                       case '_':
-                               g_string_append (str, "__");
-                               break;
-                       default:
-                               g_string_append_len (str, p, next - p);
-                       break;
-               }
-
-               p = next;
-       }
-
-       return g_string_free (str, FALSE);
-}
-
-GdkPixbuf *
-egg_recent_util_get_icon (GtkIconTheme *theme, const gchar *uri,
-                         const gchar *mime_type, int size)
-{
-#ifndef USE_STABLE_LIBGNOMEUI
-       gchar *icon;
-       GdkPixbuf *pixbuf;
-       
-       icon = gnome_icon_lookup (theme, NULL, uri, NULL, NULL,
-                                 mime_type, 0, NULL);
-
-       g_return_val_if_fail (icon != NULL, NULL);
-
-       pixbuf = gtk_icon_theme_load_icon (theme, icon, size, 0, NULL);
-       g_free (icon);
-
-       return pixbuf;
-#endif
-       return NULL;
-}
-
-gchar *
-egg_recent_util_get_unique_id (void)
-{
-       char hostname[EGG_RECENT_UTIL_HOSTNAME_SIZE];
-       time_t the_time;
-       guint32 rand;
-       int pid;
-       
-#ifndef G_OS_WIN32
-       gethostname (hostname, EGG_RECENT_UTIL_HOSTNAME_SIZE);
-#else
-       {
-               DWORD size = EGG_RECENT_UTIL_HOSTNAME_SIZE;
-               GetComputerName (hostname, &size);
-       }
-#endif
-       
-       time (&the_time);
-       rand = g_random_int ();
-       pid = getpid ();
-
-       return g_strdup_printf ("%s-%d-%d-%d", hostname, (int)time, (int)rand, (int)pid);
-}
diff --git a/cut-n-paste/recent-files/egg-recent-util.h b/cut-n-paste/recent-files/egg-recent-util.h
deleted file mode 100644 (file)
index 82c4a71..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-
-#ifndef __EGG_RECENT_UTIL__
-#define __EGG_RECENT_UTIL__
-
-#include <gtk/gtk.h>
-
-G_BEGIN_DECLS
-
-gchar * egg_recent_util_escape_underlines (const gchar *uri);
-gchar * egg_recent_util_get_unique_id (void);
-GdkPixbuf * egg_recent_util_get_icon (GtkIconTheme *theme,
-                                     const gchar *uri,
-                                     const gchar *mime_type,
-                                     int size);
-
-G_END_DECLS
-
-#endif /* __EGG_RECENT_UTIL__ */
diff --git a/cut-n-paste/recent-files/egg-recent-view-uimanager.c b/cut-n-paste/recent-files/egg-recent-view-uimanager.c
deleted file mode 100644 (file)
index b8e3d4d..0000000
+++ /dev/null
@@ -1,878 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * This program 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- *
- * Authors:
- *   James Willcox <jwillcox@cs.indiana.edu>
- *   Paolo Bacchilega <paobac@cvs.gnome.org>
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <gtk/gtk.h>
-#include <libgnomevfs/gnome-vfs.h>
-#ifndef USE_STABLE_LIBGNOMEUI
-#include <libgnomeui/gnome-icon-theme.h>
-#endif
-#include <gconf/gconf-client.h>
-#include "egg-recent-model.h"
-#include "egg-recent-view.h"
-#include "egg-recent-view-uimanager.h"
-#include "egg-recent-util.h"
-#include "egg-recent-item.h"
-
-#define EGG_RECENT_NAME_PREFIX "EggRecentAction"
-#define EGG_RECENT_ACTION "EggRecentFile"
-#define EGG_RECENT_SEPARATOR (NULL)
-
-#ifndef EGG_COMPILATION
-#include <glib/gi18n.h>
-#else
-#define _(x) (x)
-#define N_(x) (x)
-#endif
-
-#define DEFAULT_LABEL_WIDTH_CHARS 30
-
-struct _EggRecentViewUIManager {
-       GObject         parent_instance;
-
-       GCallback       action_callback;
-       gpointer        action_user_data;
-
-       gboolean        leading_sep;
-       gboolean        trailing_sep;
-
-       GtkUIManager   *uimanager;
-       GtkActionGroup *action_group;
-       guint           merge_id;
-       gulong          changed_cb_id;
-
-       gchar          *path;
-
-       gboolean        show_icons;
-       gboolean        show_numbers;
-#ifndef USE_STABLE_LIBGNOMEUI
-       GnomeIconTheme *theme;
-#endif
-
-       EggUIManagerTooltipFunc tooltip_func;
-       gpointer        tooltip_func_data;
-
-       EggRecentModel *model;
-       GConfClient    *client;
-       GtkIconSize     icon_size;
-
-       gint            label_width;
-};
-
-
-struct _EggRecentViewUIManagerMenuData {
-       EggRecentViewUIManager *view;
-       EggRecentItem *item;
-};
-
-typedef struct _EggRecentViewUIManagerMenuData EggRecentViewUIManagerMenuData;
-
-enum {
-       ACTIVATE,
-       LAST_SIGNAL
-};
-
-/* GObject properties */
-enum {
-       PROP_BOGUS,
-       PROP_UIMANAGER,
-       PROP_PATH,
-       PROP_SHOW_ICONS,
-       PROP_SHOW_NUMBERS,
-       PROP_LABEL_WIDTH
-};
-
-static guint view_signals[LAST_SIGNAL] = { 0 };
-
-static void
-connect_proxy_cb (GtkActionGroup         *action_group,
-                 GtkAction              *action,
-                 GtkWidget              *proxy,
-                 EggRecentViewUIManager *view)
-{
-       if (GTK_IS_MENU_ITEM (proxy))
-       {
-               GtkWidget *label;
-
-               label = GTK_BIN (proxy)->child;
-
-               gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_END);
-               gtk_label_set_max_width_chars (GTK_LABEL (label), view->label_width);
-       }
-}
-
-static void
-egg_recent_view_uimanager_clear (EggRecentViewUIManager *view)
-{
-       if (view->merge_id != 0) {
-               gtk_ui_manager_remove_ui (view->uimanager, view->merge_id);
-               view->merge_id = 0;
-       }
-
-       if (view->action_group != NULL) {
-               gtk_ui_manager_remove_action_group (view->uimanager, view->action_group);
-               g_object_unref (view->action_group);
-               view->action_group = NULL;
-       }
-
-       gtk_ui_manager_ensure_update (view->uimanager);
-}
-
-static void
-egg_recent_view_uimanager_set_list (EggRecentViewUIManager *view, GList *list)
-{
-       GList  *scan;
-       guint   index = 1;
-
-       g_return_if_fail (view);
-
-       egg_recent_view_uimanager_clear (view);
-
-       if (view->merge_id == 0)
-               view->merge_id = gtk_ui_manager_new_merge_id (view->uimanager);
-
-       if (view->action_group == NULL) {
-               gchar *group = g_strdup_printf ("EggRecentActions%u", 
-                                               view->merge_id);
-               view->action_group = gtk_action_group_new (group);
-               g_signal_connect (view->action_group, "connect-proxy",
-                                 G_CALLBACK (connect_proxy_cb), view);
-               gtk_ui_manager_insert_action_group (view->uimanager,
-                                                   view->action_group, -1);
-               g_free (group);
-       }
-
-       if (view->leading_sep) {
-               gchar *action = g_strdup_printf ("EggRecentLeadingSeparator%u",
-                                                view->merge_id);
-               gtk_ui_manager_add_ui (view->uimanager, 
-                                      view->merge_id, 
-                                      view->path,
-                                      action,
-                                      EGG_RECENT_SEPARATOR,
-                                      GTK_UI_MANAGER_AUTO, 
-                                      FALSE);
-               g_free (action);
-       }
-
-       for (scan = list; scan; scan = scan->next, index++) {
-               EggRecentItem *item = scan->data;
-               GtkAction     *action;
-               gchar         *name;
-               gchar         *uri;
-               gchar         *basename;
-               gchar         *escaped;
-               gchar         *label;
-               gchar         *tooltip = NULL;
-
-               uri = egg_recent_item_get_uri_for_display (item);
-               if (uri == NULL)
-                       continue;
-
-               name = g_strdup_printf (EGG_RECENT_NAME_PREFIX"%u-%u", 
-                                       view->merge_id,
-                                       index);
-
-               if (view->tooltip_func != NULL)
-                       tooltip = (*view->tooltip_func) (item, view->tooltip_func_data);
-
-               if (!tooltip)
-                       tooltip = g_strdup_printf (_("Open “%s”"), uri);
-
-               basename = egg_recent_item_get_short_name (item);
-               escaped = egg_recent_util_escape_underlines (basename);
-               g_free (basename);
-               g_free (uri);
-
-               if (view->show_numbers) {
-                       if (index >= 10)
-                               label = g_strdup_printf ("%d.  %s", 
-                                                        index, 
-                                                        escaped);
-                       else
-                               label = g_strdup_printf ("_%d.  %s", 
-                                                        index, 
-                                                        escaped);
-                       g_free (escaped);
-               } else 
-                       label = escaped;
-
-               action = g_object_new (GTK_TYPE_ACTION,
-                                      "name", name,
-                                      "label", label,
-                                      (view->show_icons)? "stock_id": NULL, 
-                                      GTK_STOCK_OPEN,
-                                      NULL);
-               if (tooltip != NULL) {
-                       g_object_set (action, "tooltip", tooltip, NULL);
-                       g_free (tooltip);
-               }
-               egg_recent_item_ref (item);
-               g_object_set_data_full (G_OBJECT (action), 
-                                       "egg_recent_uri", 
-                                       item, 
-                                       (GFreeFunc) egg_recent_item_unref);
-
-               if (view->action_callback != NULL) {
-                       GClosure *closure;
-                       closure = g_cclosure_new (view->action_callback, view->action_user_data, NULL);
-                       g_signal_connect_closure (action, "activate", closure, FALSE);
-               }
-
-               gtk_action_group_add_action (view->action_group, action);
-               g_object_unref (action);
-
-               gtk_ui_manager_add_ui (view->uimanager, 
-                                      view->merge_id, 
-                                      view->path,
-                                      name,
-                                      name,
-                                      GTK_UI_MANAGER_AUTO, 
-                                      FALSE);
-
-               g_free (name);
-               g_free (label);
-       }
-
-       if (view->trailing_sep) {
-               gchar *action = g_strdup_printf ("EggRecentTrailingSeparator%u",
-                                               view->merge_id);
-               gtk_ui_manager_add_ui (view->uimanager, 
-                                      view->merge_id, 
-                                      view->path,
-                                      action,
-                                      EGG_RECENT_SEPARATOR,
-                                      GTK_UI_MANAGER_AUTO, 
-                                      FALSE);
-               g_free (action);
-       }
-}
-
-static void
-egg_recent_view_uimanager_set_empty_list (EggRecentViewUIManager *view)
-{
-       gboolean   is_embedded;
-
-       g_return_if_fail (view);
-
-       egg_recent_view_uimanager_clear (view);
-
-       if (view->merge_id == 0)
-               view->merge_id = gtk_ui_manager_new_merge_id (view->uimanager);
-
-       if (view->action_group == NULL) {
-               gchar *group = g_strdup_printf ("EggRecentActions%u", 
-                                               view->merge_id);
-               view->action_group = gtk_action_group_new (group);
-               g_signal_connect (view->action_group, "connect-proxy",
-                                 G_CALLBACK (connect_proxy_cb), view);
-               gtk_ui_manager_insert_action_group (view->uimanager,
-                                                   view->action_group, -1);
-               g_free (group);
-       }
-
-       if (view->leading_sep) {
-               gchar *sep_action = g_strdup_printf ("EggRecentLeadingSeparator%u",
-                                                    view->merge_id);
-               gtk_ui_manager_add_ui (view->uimanager, 
-                                      view->merge_id, 
-                                      view->path,
-                                      sep_action,
-                                      EGG_RECENT_SEPARATOR,
-                                      GTK_UI_MANAGER_AUTO, 
-                                      FALSE);
-               g_free (sep_action);
-       }
-
-       is_embedded = (view->leading_sep && view->trailing_sep);
-
-       if (is_embedded) {
-               GtkAction *action;
-               gchar     *name;
-
-               name = g_strdup_printf (EGG_RECENT_NAME_PREFIX "%u-0", view->merge_id);
-
-               action = g_object_new (GTK_TYPE_ACTION,
-                                      "name", name,
-                                      "label", _("Empty"),
-                                      "sensitive", FALSE,
-                                      NULL);
-               
-               gtk_action_group_add_action (view->action_group, action);
-               g_object_unref (action);
-
-               gtk_ui_manager_add_ui (view->uimanager, 
-                                      view->merge_id, 
-                                      view->path,
-                                      name,
-                                      name,
-                                      GTK_UI_MANAGER_AUTO, 
-                                      FALSE);
-
-               g_free (name);
-       }
-
-       if (view->trailing_sep) {
-               gchar *sep_action = g_strdup_printf ("EggRecentTrailingSeparator%u",
-                                                    view->merge_id);
-               gtk_ui_manager_add_ui (view->uimanager, 
-                                      view->merge_id, 
-                                      view->path,
-                                      sep_action,
-                                      EGG_RECENT_SEPARATOR,
-                                      GTK_UI_MANAGER_AUTO, 
-                                      FALSE);
-               g_free (sep_action);
-       }
-}
-
-static void
-model_changed_cb (EggRecentModel         *model,  
-                 GList                  *list, 
-                 EggRecentViewUIManager *view)
-{
-       if (list != NULL)
-               egg_recent_view_uimanager_set_list (view, list);
-       else
-               egg_recent_view_uimanager_set_empty_list (view);
-
-       gtk_ui_manager_ensure_update (view->uimanager);
-}
-
-static EggRecentModel *
-egg_recent_view_uimanager_get_model (EggRecentView *view_parent)
-{
-       EggRecentViewUIManager *view;
-       
-       g_return_val_if_fail (view_parent != NULL, NULL);
-       view = EGG_RECENT_VIEW_UIMANAGER (view_parent);
-       return view->model;
-}
-
-static void
-egg_recent_view_uimanager_set_model (EggRecentView  *view_parent,
-                                    EggRecentModel *model)
-{
-       EggRecentViewUIManager *view;
-       
-       g_return_if_fail (view_parent != NULL);
-       view = EGG_RECENT_VIEW_UIMANAGER (view_parent);
-
-       if (view->model != NULL) {
-               if (view->changed_cb_id != 0)
-                       g_signal_handler_disconnect (G_OBJECT (view->model),
-                                                    view->changed_cb_id);
-               g_object_unref (view->model);
-       }
-       
-       view->model = model;
-       g_object_ref (view->model);
-
-       view->changed_cb_id = g_signal_connect_object (G_OBJECT (model),
-                                                      "changed",
-                                                      G_CALLBACK (model_changed_cb),
-                                                      view, 0);
-
-       egg_recent_model_changed (view->model);
-}
-
-void
-egg_recent_view_uimanager_set_leading_sep (EggRecentViewUIManager *view, 
-                                          gboolean                val)
-{
-       view->leading_sep = val;
-       egg_recent_view_uimanager_clear (view);
-       if (view->model)
-               egg_recent_model_changed (view->model);
-}
-
-void
-egg_recent_view_uimanager_set_trailing_sep (EggRecentViewUIManager *view,
-                                           gboolean                val)
-{
-       view->trailing_sep = val;
-       egg_recent_view_uimanager_clear (view);
-       if (view->model)
-               egg_recent_model_changed (view->model);
-}
-
-static void
-egg_recent_view_uimanager_set_property (GObject      *object,
-                                       guint         prop_id,
-                                       const GValue *value,
-                                       GParamSpec   *pspec)
-{
-       EggRecentViewUIManager *view = EGG_RECENT_VIEW_UIMANAGER (object);
-
-       switch (prop_id) {
-       case PROP_UIMANAGER:
-               egg_recent_view_uimanager_set_uimanager (view, (GtkUIManager*)g_value_get_object (value));
-               break;
-       case PROP_PATH:
-               egg_recent_view_uimanager_set_path (view, g_value_get_string (value));
-               break;
-       case PROP_SHOW_ICONS:
-               egg_recent_view_uimanager_show_icons (view, g_value_get_boolean (value));
-               break;
-       case PROP_SHOW_NUMBERS:
-               egg_recent_view_uimanager_show_numbers (view, g_value_get_boolean (value));
-               break;
-       case PROP_LABEL_WIDTH:
-               egg_recent_view_uimanager_set_label_width (view, g_value_get_int (value));
-               break;
-       default:
-               G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-               break;
-       }
-}
-
-static void
-egg_recent_view_uimanager_get_property (GObject    *object,
-                                       guint       prop_id,
-                                       GValue     *value,
-                                       GParamSpec *pspec)
-{
-       EggRecentViewUIManager *view = EGG_RECENT_VIEW_UIMANAGER (object);
-
-       switch (prop_id) {
-       case PROP_UIMANAGER:
-               g_value_set_object (value, view->uimanager);
-               break;
-       case PROP_PATH:
-               g_value_set_string (value, view->path);
-               break;
-       case PROP_SHOW_ICONS:
-               g_value_set_boolean (value, view->show_icons);
-               break;
-       case PROP_SHOW_NUMBERS:
-               g_value_set_boolean (value, view->show_numbers);
-               break;
-       case PROP_LABEL_WIDTH:
-               g_value_set_int (value, view->label_width);
-               break;
-       default:
-               G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-               break;
-       }
-}
-
-static void
-egg_recent_view_uimanager_finalize (GObject *object)
-{
-       EggRecentViewUIManager *view = EGG_RECENT_VIEW_UIMANAGER (object);
-
-       if (view->changed_cb_id != 0) {
-               g_signal_handler_disconnect (G_OBJECT (view->model),
-                                            view->changed_cb_id);
-               view->changed_cb_id = 0;
-       }
-
-       g_free (view->path);
-
-       egg_recent_view_uimanager_clear (view);
-
-       if (view->action_group != NULL) {
-               g_object_unref (view->action_group);
-               view->action_group = NULL;
-       }
-
-       if (view->uimanager != NULL) {
-               g_object_unref (view->uimanager);
-               view->uimanager = NULL;
-       }
-
-       if (view->model != NULL) {
-               g_object_unref (view->model);
-               view->model = NULL;
-       }
-
-#ifndef USE_STABLE_LIBGNOMEUI
-       if (view->theme != NULL) {
-               g_object_unref (view->theme);
-               view->theme = NULL;
-       }
-#endif
-
-       if (view->client != NULL) {
-               g_object_unref (view->client);
-               view->client = NULL;
-       }
-
-       G_OBJECT_CLASS (egg_recent_view_uimanager_parent_class)->finalize (object);
-}
-
-static void
-egg_recent_view_uimanager_class_init (EggRecentViewUIManagerClass * klass)
-{
-       GObjectClass *object_class;
-
-       object_class = G_OBJECT_CLASS (klass);
-
-       object_class->set_property = egg_recent_view_uimanager_set_property;
-       object_class->get_property = egg_recent_view_uimanager_get_property;
-       object_class->finalize     = egg_recent_view_uimanager_finalize;
-
-       view_signals[ACTIVATE] = g_signal_new ("activate",
-                                              G_OBJECT_CLASS_TYPE (object_class),
-                                              G_SIGNAL_RUN_LAST,
-                                              G_STRUCT_OFFSET (EggRecentViewUIManagerClass, activate),
-                                              NULL, NULL,
-                                              g_cclosure_marshal_VOID__BOXED,
-                                              G_TYPE_NONE, 1,
-                                              EGG_TYPE_RECENT_ITEM);
-
-       g_object_class_install_property (object_class,
-                                        PROP_UIMANAGER,
-                                        g_param_spec_object ("uimanager",
-                                                             "UI Manager",
-                                                             "The UI manager this object will use to update.the UI",
-                                                             GTK_TYPE_UI_MANAGER,
-                                                             G_PARAM_READWRITE));
-       g_object_class_install_property (object_class,
-                                        PROP_PATH,
-                                        g_param_spec_string ("path",
-                                                             "Path",
-                                                             "The UI path this object will update.",
-                                                             NULL,
-                                                             G_PARAM_READWRITE));
-       g_object_class_install_property (object_class,
-                                        PROP_SHOW_ICONS,
-                                        g_param_spec_boolean ("show-icons",
-                                                              "Show Icons",
-                                                              "Whether or not to show icons",
-                                                              FALSE,
-                                                              G_PARAM_READWRITE));
-       
-       g_object_class_install_property (object_class,
-                                        PROP_SHOW_NUMBERS,
-                                        g_param_spec_boolean ("show-numbers",
-                                                              "Show Numbers",
-                                                              "Whether or not to show numbers",
-                                                              TRUE,
-                                                              G_PARAM_READWRITE));
-       g_object_class_install_property (object_class,
-                                        PROP_LABEL_WIDTH,
-                                        g_param_spec_int ("label-width",
-                                                          "Label Width",
-                                                          "The desired width of the menu label, in characters",
-                                                          -1,
-                                                          G_MAXINT,
-                                                          DEFAULT_LABEL_WIDTH_CHARS,
-                                                          G_PARAM_READWRITE));
-       
-
-       klass->activate = NULL;
-}
-
-static void
-egg_recent_view_init (EggRecentViewClass *iface)
-{
-       iface->do_get_model = egg_recent_view_uimanager_get_model;
-       iface->do_set_model = egg_recent_view_uimanager_set_model;
-}
-
-static void
-show_menus_changed_cb (GConfClient            *client,
-                      guint                   cnxn_id,
-                      GConfEntry             *entry,
-                      EggRecentViewUIManager *view)
-{
-       GConfValue *value;
-
-       value = gconf_entry_get_value (entry);
-       g_return_if_fail (value->type == GCONF_VALUE_BOOL);
-
-       egg_recent_view_uimanager_show_icons (view, gconf_value_get_bool (value));
-}
-
-#ifndef USE_STABLE_LIBGNOMEUI
-static void
-theme_changed_cb (GnomeIconTheme         *theme, 
-                 EggRecentViewUIManager *view)
-{
-       if (view->model != NULL)
-               egg_recent_model_changed (view->model);
-}
-#endif
-
-static void
-egg_recent_view_uimanager_init (EggRecentViewUIManager * view)
-{
-       view->client = gconf_client_get_default ();
-
-       view->show_icons = gconf_client_get_bool (view->client,
-                                                 "/desktop/gnome/interface/menus_have_icons",
-                                                 NULL);
-       
-       gconf_client_add_dir (view->client, "/desktop/gnome/interface",
-                             GCONF_CLIENT_PRELOAD_NONE,
-                             NULL);
-       gconf_client_notify_add (view->client,
-                                "/desktop/gnome/interface/menus_have_icons",
-                                (GConfClientNotifyFunc)show_menus_changed_cb,
-                                view, NULL, NULL);
-
-
-       view->leading_sep = FALSE;
-       view->trailing_sep = FALSE;
-       view->show_numbers = TRUE;
-
-       view->uimanager = NULL;
-       view->action_group = NULL;
-       view->merge_id = 0;
-       view->changed_cb_id = 0;
-
-       view->path = NULL;
-
-#ifndef USE_STABLE_LIBGNOMEUI
-       view->theme = gnome_icon_theme_new ();
-       gnome_icon_theme_set_allow_svg (view->theme, TRUE);
-       g_signal_connect_object (view->theme, "changed",
-                                G_CALLBACK (theme_changed_cb), view, 0);
-#endif
-
-       view->tooltip_func = NULL;
-       view->tooltip_func_data = NULL;
-
-       view->icon_size = GTK_ICON_SIZE_MENU;
-       view->label_width = DEFAULT_LABEL_WIDTH_CHARS;
-}
-
-void
-egg_recent_view_uimanager_set_icon_size (EggRecentViewUIManager *view,
-                                        GtkIconSize             icon_size)
-{
-       if (view->icon_size != icon_size) {
-               view->icon_size = icon_size;
-               egg_recent_model_changed (view->model);
-       } else {
-               view->icon_size = icon_size;
-       }
-}
-
-GtkIconSize
-egg_recent_view_uimanager_get_icon_size (EggRecentViewUIManager *view)
-{
-       return view->icon_size;
-}
-
-void
-egg_recent_view_uimanager_show_icons (EggRecentViewUIManager *view,
-                                     gboolean                show)
-{
-       view->show_icons = show;
-       if (view->model != NULL)
-               egg_recent_model_changed (view->model);
-}
-
-void
-egg_recent_view_uimanager_show_numbers (EggRecentViewUIManager *view, 
-                                       gboolean                show)
-{
-       view->show_numbers = show;
-       if (view->model != NULL)
-               egg_recent_model_changed (view->model);
-}
-
-void
-egg_recent_view_uimanager_set_tooltip_func (EggRecentViewUIManager   *view,
-                                           EggUIManagerTooltipFunc   func,
-                                           gpointer                  user_data)
-{
-       view->tooltip_func = func;
-       view->tooltip_func_data = user_data;
-       if (view->model)
-               egg_recent_model_changed (view->model);
-}
-
-/**
- * egg_recent_view_uimanager_set_uimanager:
- * @view: A EggRecentViewUIManager object.
- * @uimanager: The ui manager used to put the menu items in.
- *
- * Use this function to change the ui manager used to update the menu.
- *
- */
-void
-egg_recent_view_uimanager_set_uimanager (EggRecentViewUIManager *view,
-                                        GtkUIManager           *uimanager)
-{
-       g_return_if_fail (EGG_IS_RECENT_VIEW_UIMANAGER (view));
-       g_return_if_fail (uimanager != NULL);
-
-       if (view->uimanager != NULL)
-               g_object_unref (view->uimanager);
-       view->uimanager = uimanager;
-       g_object_ref (view->uimanager);
-}
-
-/**
- * egg_recent_view_uimanager_get_uimanager:
- * @view: A EggRecentViewUIManager object.
- *
- */
-GtkUIManager*
-egg_recent_view_uimanager_get_uimanager (EggRecentViewUIManager *view)
-{
-       g_return_val_if_fail (EGG_IS_RECENT_VIEW_UIMANAGER (view), NULL);
-       return view->uimanager;
-}
-
-/**
- * egg_recent_view_uimanager_set_path:
- * @view: A EggRecentViewUIManager object.
- * @path: The path to put the menu items in.
- *
- * Use this function to change the path where the recent
- * documents appear in.
- *
- */
-void
-egg_recent_view_uimanager_set_path (EggRecentViewUIManager *view,
-                                   const gchar            *path)
-{
-       g_return_if_fail (EGG_IS_RECENT_VIEW_UIMANAGER (view));
-       g_return_if_fail (path);
-
-       g_free (view->path);
-       view->path = g_strdup (path);
-}
-
-/**
- * egg_recent_view_uimanager_get_path:
- * @view: A EggRecentViewUIManager object.
- *
- */
-G_CONST_RETURN gchar*
-egg_recent_view_uimanager_get_path (EggRecentViewUIManager *view)
-{
-       g_return_val_if_fail (EGG_IS_RECENT_VIEW_UIMANAGER (view), NULL);
-       return view->path;
-}
-
-void
-egg_recent_view_uimanager_set_label_width (EggRecentViewUIManager *view,
-                                          gint                    chars)
-{
-       g_return_if_fail (EGG_IS_RECENT_VIEW_UIMANAGER (view));
-       view->label_width = chars;
-}
-
-gint
-egg_recent_view_uimanager_get_label_width (EggRecentViewUIManager *view)
-{
-       g_return_val_if_fail (EGG_IS_RECENT_VIEW_UIMANAGER (view), DEFAULT_LABEL_WIDTH_CHARS);
-       return view->label_width;
-}
-
-void
-egg_recent_view_uimanager_set_action_func (EggRecentViewUIManager   *view,
-                                          GCallback                 callback,
-                                          gpointer                  user_data)
-{
-       g_return_if_fail (EGG_IS_RECENT_VIEW_UIMANAGER (view));
-       view->action_callback = callback;
-       view->action_user_data = user_data;
-}
-
-/**
- * egg_recent_view_uimanager_new:
- * @appname: The name of your application.
- * @limit:  The maximum number of items allowed.
- *
- * This creates a new EggRecentViewUIManager object.
- *
- * Returns: a EggRecentViewUIManager object
- */
-EggRecentViewUIManager *
-egg_recent_view_uimanager_new (GtkUIManager  *uimanager,
-                              const gchar   *path,
-                              GCallback      callback,
-                              gpointer       user_data)
-{
-       GObject *view;
-
-       g_return_val_if_fail (uimanager, NULL);
-       g_return_val_if_fail (path, NULL);
-
-       view = g_object_new (egg_recent_view_uimanager_get_type (),
-                            "uimanager", uimanager,
-                            "path", path,
-                            NULL);
-
-       g_return_val_if_fail (view, NULL);
-       
-       egg_recent_view_uimanager_set_action_func (EGG_RECENT_VIEW_UIMANAGER (view),
-                                                  callback,
-                                                  user_data);
-
-       return EGG_RECENT_VIEW_UIMANAGER (view);
-}
-
-GType
-egg_recent_view_uimanager_get_type (void)
-{
-       static GType egg_recent_view_uimanager_type = 0;
-
-       if(!egg_recent_view_uimanager_type) {
-               const GTypeInfo egg_recent_view_uimanager_info = {
-                       sizeof (EggRecentViewUIManagerClass),
-                       NULL, /* base init */
-                       NULL, /* base finalize */
-                       (GClassInitFunc)egg_recent_view_uimanager_class_init, /* class init */
-                       NULL, /* class finalize */
-                       NULL, /* class data */
-                       sizeof (EggRecentViewUIManager),
-                       0,
-                       (GInstanceInitFunc) egg_recent_view_uimanager_init
-               };
-
-               const GInterfaceInfo view_info =
-               {
-                       (GInterfaceInitFunc) egg_recent_view_init,
-                       NULL,
-                       NULL
-               };
-
-               egg_recent_view_uimanager_type = g_type_register_static (G_TYPE_OBJECT,
-                                                                        "EggRecentViewUIManager",
-                                                                        &egg_recent_view_uimanager_info, 0);
-               g_type_add_interface_static (egg_recent_view_uimanager_type,
-                                            EGG_TYPE_RECENT_VIEW,
-                                            &view_info);
-       }
-
-       return egg_recent_view_uimanager_type;
-}
-
-EggRecentItem*
-egg_recent_view_uimanager_get_item (EggRecentViewUIManager   *view,
-                                   GtkAction                *action)
-{
-       return g_object_get_data (G_OBJECT(action), "egg_recent_uri");
-}
diff --git a/cut-n-paste/recent-files/egg-recent-view-uimanager.h b/cut-n-paste/recent-files/egg-recent-view-uimanager.h
deleted file mode 100644 (file)
index 8aed413..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef __EGG_RECENT_VIEW_UIMANAGER_H__
-#define __EGG_RECENT_VIEW_UIMANAGER_H__
-
-
-#include <gtk/gtk.h>
-#include "egg-recent-item.h"
-
-G_BEGIN_DECLS
-
-#define EGG_RECENT_VIEW_UIMANAGER(obj)         G_TYPE_CHECK_INSTANCE_CAST (obj, egg_recent_view_uimanager_get_type (), EggRecentViewUIManager)
-#define EGG_RECENT_VIEW_UIMANAGER_CLASS(klass)         G_TYPE_CHECK_CLASS_CAST (klass, egg_recent_view_uimanager_get_type (), EggRecentViewUIManagerClass)
-#define EGG_IS_RECENT_VIEW_UIMANAGER(obj)      G_TYPE_CHECK_INSTANCE_TYPE (obj, egg_recent_view_uimanager_get_type ())
-
-typedef char* (*EggUIManagerTooltipFunc) (EggRecentItem *item,
-                                         gpointer       user_data);
-
-typedef struct _EggRecentViewUIManager      EggRecentViewUIManager;
-typedef struct _EggRecentViewUIManagerClass EggRecentViewUIManagerClass;
-
-struct _EggRecentViewUIManagerClass {
-       GObjectClass parent_class;
-       void (*activate) (EggRecentViewUIManager *view, EggRecentItem *item);
-};
-
-GType                   egg_recent_view_uimanager_get_type         (void);
-EggRecentViewUIManager *egg_recent_view_uimanager_new              (GtkUIManager             *uimanager,
-                                                                   const gchar              *path,
-                                                                   GCallback                 callback,
-                                                                   gpointer                  user_data);
-void                    egg_recent_view_uimanager_set_uimanager    (EggRecentViewUIManager   *view,
-                                                                   GtkUIManager             *uimanager);
-GtkUIManager*           egg_recent_view_uimanager_get_uimanager    (EggRecentViewUIManager *view);
-void                    egg_recent_view_uimanager_set_path         (EggRecentViewUIManager   *view,
-                                                                   const gchar              *path);
-G_CONST_RETURN gchar   *egg_recent_view_uimanager_get_path         (EggRecentViewUIManager   *view);
-void                    egg_recent_view_uimanager_set_action_func  (EggRecentViewUIManager   *view,
-                                                                   GCallback                 callback,
-                                                                   gpointer                  user_data);
-void                    egg_recent_view_uimanager_set_leading_sep  (EggRecentViewUIManager   *view,
-                                                                   gboolean                  val);
-void                    egg_recent_view_uimanager_set_trailing_sep (EggRecentViewUIManager   *view,
-                                                                   gboolean                  val);
-void                    egg_recent_view_uimanager_show_icons       (EggRecentViewUIManager   *view,
-                                                                   gboolean                  show);
-void                    egg_recent_view_uimanager_show_numbers     (EggRecentViewUIManager   *view,
-                                                                   gboolean                  show);
-void                    egg_recent_view_uimanager_set_tooltip_func (EggRecentViewUIManager   *view,
-                                                                   EggUIManagerTooltipFunc   func,
-                                                                   gpointer                  user_data);
-void                    egg_recent_view_uimanager_set_icon_size    (EggRecentViewUIManager   *view,
-                                                                   GtkIconSize               icon_size);
-GtkIconSize             egg_recent_view_uimanager_get_icon_size    (EggRecentViewUIManager   *view);
-EggRecentItem          *egg_recent_view_uimanager_get_item         (EggRecentViewUIManager   *view,
-                                                                   GtkAction                *action);
-void                    egg_recent_view_uimanager_set_label_width  (EggRecentViewUIManager   *view,
-                                                                   gint                      chars);
-gint                    egg_recent_view_uimanager_get_label_width  (EggRecentViewUIManager   *view);
-
-G_END_DECLS
-
-
-#endif /* __EGG_RECENT_VIEW_UIMANAGER_H__ */
diff --git a/cut-n-paste/recent-files/egg-recent-view.c b/cut-n-paste/recent-files/egg-recent-view.c
deleted file mode 100644 (file)
index 2918de5..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * This program 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- *
- * Authors:
- *   James Willcox <jwillcox@cs.indiana.edu>
- */
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <string.h>
-#include <gtk/gtk.h>
-#include "egg-recent-view.h"
-
-
-GtkType
-egg_recent_view_get_type (void)
-{
-       static GtkType view_type = 0;
-
-       if (!view_type)
-       {
-               const GTypeInfo view_info =
-               {
-                       sizeof (EggRecentViewClass),  /* class_size */
-                       NULL,                       /* base_init */
-                       NULL,                       /* base_finalize */
-               };
-
-               view_type = g_type_register_static (G_TYPE_INTERFACE,
-                                                   "EggRecentView",
-                                                   &view_info, 0);
-       }
-
-       return view_type;
-}
-
-EggRecentModel *
-egg_recent_view_get_model (EggRecentView *view)
-{
-       g_return_val_if_fail (view, NULL);
-
-       return EGG_RECENT_VIEW_GET_CLASS (view)->do_get_model (view);
-}
-
-void
-egg_recent_view_set_model (EggRecentView *view, EggRecentModel *model)
-{
-       g_return_if_fail (view);
-       g_return_if_fail (model);
-
-       EGG_RECENT_VIEW_GET_CLASS (view)->do_set_model (view, model);
-}
diff --git a/cut-n-paste/recent-files/egg-recent-view.h b/cut-n-paste/recent-files/egg-recent-view.h
deleted file mode 100644 (file)
index 79f0346..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-#ifndef __EGG_RECENT_VIEW_H__
-#define __EGG_RECENT_VIEW_H__
-
-
-#include <gdk/gdk.h>
-#include <gtk/gtkwidget.h>
-#include "egg-recent-model.h"
-#include "egg-recent-item.h"
-
-G_BEGIN_DECLS
-
-#define EGG_TYPE_RECENT_VIEW             (egg_recent_view_get_type ())
-#define EGG_RECENT_VIEW(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), EGG_TYPE_RECENT_VIEW, EggRecentView))
-#define EGG_RECENT_VIEW_CLASS(vtable)    (G_TYPE_CHECK_CLASS_CAST ((vtable), EGG_TYPE_RECENT_VIEW, EggRecentViewClass))
-#define EGG_IS_RECENT_VIEW(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EGG_TYPE_RECENT_VIEW))
-#define EGG_IS_RECENT_VIEW_CLASS(vtable) (G_TYPE_CHECK_CLASS_TYPE ((vtable), EGG_TYPE_RECENT_VIEW))
-#define EGG_RECENT_VIEW_GET_CLASS(inst)  (G_TYPE_INSTANCE_GET_INTERFACE ((inst), EGG_TYPE_RECENT_VIEW, EggRecentViewClass))
-
-
-typedef struct _EggRecentView       EggRecentView;
-typedef struct _EggRecentViewClass  EggRecentViewClass;
-
-struct _EggRecentViewClass
-{
-       GTypeInterface             base_iface;
-  
-       /* vtable, not signals */
-       void (* do_set_model)                   (EggRecentView *view,
-                                                EggRecentModel *model);
-       EggRecentModel * (* do_get_model)       (EggRecentView *view);
-};
-
-GtkType        egg_recent_view_get_type                (void) G_GNUC_CONST;
-void   egg_recent_view_set_list                (EggRecentView *view,
-                                                GSList *list);
-void   egg_recent_view_clear                   (EggRecentView *view);
-EggRecentModel *egg_recent_view_get_model      (EggRecentView *view);
-void   egg_recent_view_set_model               (EggRecentView *view,
-                                                EggRecentModel *model);
-
-G_END_DECLS
-
-#endif /* __EGG_RECENT_VIEW_H__ */
index 6da188bcfb105c1e8887af3ce18bc53cdfd72218..f37ecd23af576d7a3f0da7f1b5c1075a1dcccf7e 100644 (file)
@@ -76,7 +76,6 @@ INCLUDES= \
        -I$(top_srcdir)/shell \
        -DDATADIR=\"$(pkgdatadir)\"                     \
        -DGNOMEDATADIR=\"$(datadir)\"                   \
-       -I$(top_srcdir)/cut-n-paste/recent-files/   \
        -I$(top_srcdir)/cut-n-paste/zoom-control/       \
        -I$(top_srcdir)/cut-n-paste/toolbar-editor/     \
        -I$(top_srcdir)/cut-n-paste/totem-screensaver/  \
@@ -100,12 +99,6 @@ GTKDOC_LIBS= \
        $(GNOME_PRINT_LIBS)                                             \
        $(filter-out ../../shell/main.o,$(wildcard ../../shell/*.o))
 
-if HAVE_GTK_RECENT
-GTKDOC_LIBS +=
-else
-GTKDOC_LIBS += $(top_builddir)/cut-n-paste/recent-files/librecent.la
-endif
-
 if ENABLE_DJVU
 GTKDOC_LIBS += $(DJVU_LIBS)
 endif
index 66ec71f18ec528878feac875bb354c1602019d63..6964029d0df098fa7d0d397df829f38297126b82 100644 (file)
@@ -14,12 +14,6 @@ INCLUDES=                                            \
        $(GNOME_PRINT_CFLAGS)                           \
        $(GTK_PRINT_CFLAGS)
 
-if HAVE_GTK_RECENT
-INCLUDES +=
-else
-INCLUDES += -I$(top_srcdir)/cut-n-paste/recent-files/
-endif
-
 bin_PROGRAMS=evince
 
 evince_SOURCES=                                \
@@ -102,12 +96,6 @@ evince_LDADD=                                                               \
        $(SHELL_LIBS)                                                   \
        $(GNOME_PRINT_LIBS)
 
-if HAVE_GTK_RECENT
-evince_LDADD +=
-else
-evince_LDADD += $(top_builddir)/cut-n-paste/recent-files/librecent.la
-endif
-
 if ENABLE_DJVU
 evince_LDADD +=        $(DJVU_LIBS)
 endif
index 7633fb7a3cde6f203aed2fbe9b35a3123850f9d4..2567a8bee41c816bc40f8ab0c00b966d99adb0f0 100644 (file)
@@ -54,10 +54,6 @@ struct _EvApplication {
 
        EggToolbarsModel *toolbars_model;
 
-#ifndef HAVE_GTK_RECENT
-       EggRecentModel  *recent_model;
-#endif
-
        TotemScrsaver *scr_saver;
 
        gchar *last_chooser_uri;
@@ -625,13 +621,6 @@ ev_application_shutdown (EvApplication *application)
                application->toolbars_file = NULL;
        }
 
-#ifndef HAVE_GTK_RECENT
-       if (application->recent_model) {
-               g_object_unref (application->recent_model);
-               application->recent_model = NULL;
-       }
-#endif
-
 #ifdef WITH_GTK_PRINT
 #if GTK_CHECK_VERSION (2, 11, 0)
        if (application->print_settings_file) {
@@ -695,16 +684,6 @@ ev_application_init (EvApplication *ev_application)
 
        egg_toolbars_model_set_flags (ev_application->toolbars_model, 0,
                                      EGG_TB_MODEL_NOT_REMOVABLE); 
-
-#ifndef HAVE_GTK_RECENT
-       ev_application->recent_model = egg_recent_model_new (EGG_RECENT_MODEL_SORT_MRU);
-       /* FIXME we should add a mime type filter but current eggrecent
-           has only a varargs style api which does not work well when
-          the list of mime types is dynamic */
-       egg_recent_model_set_limit (ev_application->recent_model, 5);   
-       egg_recent_model_set_filter_groups (ev_application->recent_model,
-                                           "Evince", NULL);
-#endif /* HAVE_GTK_RECENT */
 }
 
 /**
@@ -740,14 +719,6 @@ ev_application_get_toolbars_model (EvApplication *application)
        return application->toolbars_model;
 }
 
-#ifndef HAVE_GTK_RECENT
-EggRecentModel *
-ev_application_get_recent_model (EvApplication *application)
-{
-       return application->recent_model;
-}
-#endif
-
 void
 ev_application_save_toolbars_model (EvApplication *application)
 {
index fbe992ac652bd6e02f55af34cb9973c6a8619c60..199fd55878a79bd30893891586e8c6cc3c3f3a97 100644 (file)
@@ -37,9 +37,6 @@
 #include "ev-window.h"
 
 #include "egg-toolbars-model.h"
-#ifndef HAVE_GTK_RECENT
-#include "egg-recent-model.h"
-#endif
 
 G_BEGIN_DECLS
 
@@ -86,9 +83,6 @@ GList          *ev_application_get_windows         (EvApplication   *application);
 
 EggToolbarsModel *ev_application_get_toolbars_model  (EvApplication   *application);
 void              ev_application_save_toolbars_model (EvApplication   *application);
-#ifndef HAVE_GTK_RECENT
-EggRecentModel   *ev_application_get_recent_model    (EvApplication   *application);
-#endif
 void             ev_application_set_chooser_uri     (EvApplication   *application, 
                                                      const gchar     *uri);
 const gchar     *ev_application_get_chooser_uri     (EvApplication   *application);
index 8c0a19f85f10fdd168d58bbd6bfe095831a5b5b3..94477dcef67931447c7ded4b50ac9c96b35518e9 100644 (file)
 #include "ev-jobs.h"
 #include "ev-sidebar-page.h"
 #include "eggfindbar.h"
-
-#ifndef HAVE_GTK_RECENT
-#include "egg-recent-view-uimanager.h"
-#include "egg-recent-view.h"
-#include "egg-recent-model.h"
-#endif
-
 #include "egg-toolbar-editor.h"
 #include "egg-editable-toolbar.h"
 #include "egg-toolbars-model.h"
@@ -145,11 +138,9 @@ struct _EvWindowPrivate {
        GtkActionGroup   *action_group;
        GtkActionGroup   *view_popup_action_group;
        GtkActionGroup   *attachment_popup_action_group;
-#ifdef HAVE_GTK_RECENT
        GtkRecentManager *recent_manager;
        GtkActionGroup   *recent_action_group;
        guint             recent_ui_id;
-#endif
        GtkUIManager     *ui_manager;
 
        /* Fullscreen mode */
@@ -183,9 +174,6 @@ struct _EvWindowPrivate {
        EvPageCache *page_cache;
        EvWindowPageMode page_mode;
        EvWindowTitle *title;
-#ifndef HAVE_GTK_RECENT
-       EggRecentViewUIManager *recent_view;
-#endif
 
        EvJob *load_job;
        EvJob *thumbnail_job;
@@ -1707,7 +1695,6 @@ ev_window_cmd_file_open_copy (GtkAction *action, EvWindow *window)
        g_object_unref (dest);
 }
 
-#ifdef HAVE_GTK_RECENT
 static void
 ev_window_cmd_recent_file_activate (GtkAction     *action,
                                    EvWindow      *window)
@@ -1725,43 +1712,13 @@ ev_window_cmd_recent_file_activate (GtkAction     *action,
                                         NULL, 0, FALSE, NULL, 
                                         GDK_CURRENT_TIME);
 }
-#else
-static void
-ev_window_cmd_recent_file_activate (GtkAction *action,
-                                   EvWindow *ev_window)
-{
-       char *uri;
-       EggRecentItem *item;
-
-       item = egg_recent_view_uimanager_get_item (ev_window->priv->recent_view,
-                                                  action);
-
-       uri = egg_recent_item_get_uri (item);
-
-       ev_application_open_uri_at_dest (EV_APP, uri,
-                                        gtk_window_get_screen (GTK_WINDOW (ev_window)),
-                                        NULL, 0, FALSE, NULL,
-                                        GDK_CURRENT_TIME);
-       
-       g_free (uri);
-}
-#endif /* HAVE_GTK_RECENT */
 
 static void
 ev_window_add_recent (EvWindow *window, const char *filename)
 {
-#ifdef HAVE_GTK_RECENT
        gtk_recent_manager_add_item (window->priv->recent_manager, filename);
-#else
-       EggRecentItem *item;
-
-       item = egg_recent_item_new_from_uri (filename);
-       egg_recent_item_add_group (item, "Evince");
-       egg_recent_model_add_full (ev_application_get_recent_model (EV_APP), item);
-#endif /* HAVE_GTK_RECENT */
 }
 
-#ifdef HAVE_GTK_RECENT
 static gint
 compare_recent_items (GtkRecentInfo *a, GtkRecentInfo *b)
 {
@@ -1786,7 +1743,6 @@ compare_recent_items (GtkRecentInfo *a, GtkRecentInfo *b)
 
        return 0;
 }
-#endif /* HAVE_GTK_RECENT */
 
 /*
  * Doubles underscore to avoid spurious menu accels.
@@ -1830,7 +1786,6 @@ ev_window_get_recent_file_label (gint index, const gchar *filename)
 static void
 ev_window_setup_recent (EvWindow *ev_window)
 {
-#ifdef HAVE_GTK_RECENT
        GList        *items, *l;
        guint         n_items = 0;
        const gchar  *evince = g_get_application_name ();
@@ -1905,22 +1860,6 @@ ev_window_setup_recent (EvWindow *ev_window)
        
        g_list_foreach (items, (GFunc) gtk_recent_info_unref, NULL);
        g_list_free (items);
-#else /* HAVE_GTK_RECENT */
-       ev_window->priv->recent_view = egg_recent_view_uimanager_new (ev_window->priv->ui_manager,
-                                                                     "/MainMenu/FileMenu/RecentFilesMenu",
-                                                                     G_CALLBACK (ev_window_cmd_recent_file_activate), 
-                                                                     ev_window);       
-
-        egg_recent_view_uimanager_show_icons (EGG_RECENT_VIEW_UIMANAGER (ev_window->priv->recent_view), FALSE);
-
-       egg_recent_view_set_model (EGG_RECENT_VIEW (ev_window->priv->recent_view),
-                                  ev_application_get_recent_model (EV_APP));
-
-       egg_recent_view_uimanager_set_trailing_sep (ev_window->priv->recent_view, TRUE);
-       
-       g_signal_connect (ev_window->priv->recent_view, "activate",
-                       G_CALLBACK (ev_window_cmd_recent_file_activate), ev_window);
-#endif /* HAVE_GTK_RECENT */
 }
 
 static gint
@@ -4125,7 +4064,6 @@ ev_window_dispose (GObject *object)
                priv->attachment_popup_action_group = NULL;
        }
 
-#ifdef HAVE_GTK_RECENT
        if (priv->recent_action_group) {
                g_object_unref (priv->recent_action_group);
                priv->recent_action_group = NULL;
@@ -4139,12 +4077,6 @@ ev_window_dispose (GObject *object)
        }
 
        priv->recent_ui_id = 0;
-#else
-       if (priv->recent_view) {
-               g_object_unref (priv->recent_view);
-               priv->recent_view = NULL;
-       }
-#endif /* HAVE_GTK_RECENT */
 
        if (priv->page_cache) {
                g_signal_handlers_disconnect_by_func (priv->page_cache, page_changed_cb, window);
@@ -4311,11 +4243,7 @@ static const GtkActionEntry entries[] = {
         /* Edit menu */
         { "EditCopy", GTK_STOCK_COPY, NULL, "<control>C", NULL,
           G_CALLBACK (ev_window_cmd_edit_copy) },
-#ifdef HAVE_GTK_RECENT
        { "EditSelectAll", GTK_STOCK_SELECT_ALL, N_("Select _All"), "<control>A", NULL,
-#else
-       { "EditSelectAll", NULL, N_("Select _All"), "<control>A", NULL,
-#endif /* HAVE_GTK_RECENT */
          G_CALLBACK (ev_window_cmd_edit_select_all) },
         { "EditFind", GTK_STOCK_FIND, N_("_Find..."), "<control>F",
           N_("Find a word or phrase in the document"),
@@ -5208,7 +5136,6 @@ ev_window_init (EvWindow *ev_window)
                g_error_free (error);
        }
        
-#ifdef HAVE_GTK_RECENT
 #if GTK_CHECK_VERSION(2,11,4)
        ev_window->priv->recent_manager = gtk_recent_manager_get_default ();
 #else
@@ -5222,7 +5149,6 @@ ev_window_init (EvWindow *ev_window)
                                  "changed",
                                  G_CALLBACK (ev_window_setup_recent),
                                  ev_window);
-#endif /* HAVE_GTK_RECENT */
        
        ev_window->priv->menubar =
                 gtk_ui_manager_get_widget (ev_window->priv->ui_manager,