mail-notification

Fork of Jean-Yves Lefort's mail-notification, a tray icon to notify of new mail
git clone https://code.djc.id.au/git/mail-notification/
commit bf976be79439011a23267f9325bdc3f2958871f1
parent 26b73fd4d4befee1bf13ad285955000048d42e0d
Author: Jean-Yves Lefort <jylefort@brutele.be>
Date:   Mon,  1 Nov 2004 03:43:27 +1000

mail-notification-0.8.0

* The double-click action can now be customized
* A mail reader can now be launched
* IMAP IDLE support has been implemented
* The mail summary layout has been improved
* The mail summary is now also displayed in the tooltip
* The tooltip now supports keyboard activation
* A mail summary popup option allowing to only display recent
  mail has been added
* A bug which caused SASL authentication to sometimes fail has
  been fixed
* The Gmail parser was getting confused by special strings
  embedded in message fields: fixed

Diffstat:
MMakefile.in | 36+++++++++++++++++++++---------------
MNEWS | 15+++++++++++++++
MTODO | 15---------------
Maclocal.m4 | 321++++++++++++++++++++++++++++++++++++-------------------------------------------
Mart/Makefile.in | 31+++++++++++++++++++++----------
Mautotools.conf | 16++++++++++------
Mconfigure | 276+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------
Mconfigure.ac | 2+-
Mdata/Makefile.in | 45+++++++++++++++++++++++++++++----------------
Mdata/mail-notification.schemas.in | 44++++++++++++++++++++++++++++++++++++++++++++
Mhelp/C/Makefile.in | 32++++++++++++++++++--------------
Mhelp/C/mail-notification-C.omf | 4++--
Mhelp/C/mail-notification.xml | 114++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------
Mhelp/Makefile.in | 24+++++++++++++++---------
Mintltool-extract.in | 9+++++----
Mintltool-merge.in | 4++--
Mintltool-update.in | 54+++++++++++++++++++++++++++++++-----------------------
Mm4/Makefile.in | 14+++++++++-----
Am4/intltool.m4 | 179+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mpo/POTFILES.in | 3++-
Mpo/bg.gmo | 0
Mpo/bg.po | 482++++++++++++++++++++++++++++++++++++++++++++++---------------------------------
Mpo/de.gmo | 0
Mpo/de.po | 495+++++++++++++++++++++++++++++++++++++++++++++++--------------------------------
Mpo/fr.gmo | 0
Mpo/fr.po | 468+++++++++++++++++++++++++++++++++++++++++++++----------------------------------
Mpo/mail-notification.pot | 447+++++++++++++++++++++++++++++++++++++++++++++----------------------------------
Mpo/pt.gmo | 0
Mpo/pt.po | 493+++++++++++++++++++++++++++++++++++++++++++++++--------------------------------
Mpo/ru.gmo | 0
Mpo/ru.po | 455+++++++++++++++++++++++++++++++++++++++++++++----------------------------------
Mpo/sr.gmo | 0
Mpo/sr.po | 499+++++++++++++++++++++++++++++++++++++++++++++++--------------------------------
Mpo/sr@Latn.gmo | 0
Mpo/sr@Latn.po | 499+++++++++++++++++++++++++++++++++++++++++++++++--------------------------------
Msrc/Makefile.am | 12++++++++----
Msrc/Makefile.in | 108+++++++++++++++++++++++++------------------------------------------------------
Msrc/mn-about-dialog-private.h | 2+-
Msrc/mn-about-dialog.c | 4++--
Msrc/mn-about-dialog.h | 2+-
Msrc/mn-auth-combo-box-private.h | 2+-
Msrc/mn-auth-combo-box.c | 4++--
Msrc/mn-auth-combo-box.h | 2+-
Msrc/mn-authenticated-mailbox-private.h | 2+-
Msrc/mn-authenticated-mailbox.c | 6+++---
Msrc/mn-authenticated-mailbox.h | 2+-
Msrc/mn-autodetect-mailbox-properties-private.h | 2+-
Msrc/mn-autodetect-mailbox-properties.c | 12++++++------
Msrc/mn-autodetect-mailbox-properties.gob | 8++++----
Msrc/mn-autodetect-mailbox-properties.h | 2+-
Msrc/mn-automation-private.h | 2+-
Msrc/mn-automation.c | 4++--
Msrc/mn-automation.h | 2+-
Msrc/mn-blinking-image-private.h | 2+-
Msrc/mn-blinking-image.c | 4++--
Msrc/mn-blinking-image.h | 2+-
Msrc/mn-client-session.c | 18++++++++++++++----
Msrc/mn-client-session.h | 8+++++++-
Msrc/mn-conf.c | 173+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------
Msrc/mn-conf.h | 20+++++++++++++++++++-
Msrc/mn-gmail-mailbox-private.h | 6+++---
Msrc/mn-gmail-mailbox-properties-private.h | 2+-
Msrc/mn-gmail-mailbox-properties.c | 14+++++++-------
Msrc/mn-gmail-mailbox-properties.gob | 10+++++-----
Msrc/mn-gmail-mailbox-properties.h | 2+-
Msrc/mn-gmail-mailbox.c | 803++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------
Msrc/mn-gmail-mailbox.gob | 423++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------
Msrc/mn-gmail-mailbox.h | 2+-
Msrc/mn-gmime-stream-vfs-private.h | 2+-
Msrc/mn-gmime-stream-vfs.c | 6+++---
Msrc/mn-gmime-stream-vfs.h | 2+-
Msrc/mn-imap-mailbox-private.h | 17++++++++++++++++-
Msrc/mn-imap-mailbox-properties-private.h | 2+-
Msrc/mn-imap-mailbox-properties.c | 20++++++++++----------
Msrc/mn-imap-mailbox-properties.gob | 16++++++++--------
Msrc/mn-imap-mailbox-properties.h | 2+-
Msrc/mn-imap-mailbox.c | 890+++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------
Msrc/mn-imap-mailbox.gob | 275+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------
Msrc/mn-imap-mailbox.h | 7++++++-
Msrc/mn-mail-icon-private.h | 16+++++++++++++---
Msrc/mn-mail-icon.c | 285++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------
Msrc/mn-mail-icon.gob | 49++++++++++++++++++++++++++++++++++++++++---------
Msrc/mn-mail-icon.h | 13+++++++++++--
Msrc/mn-mailbox-private.h | 20++++++++++----------
Msrc/mn-mailbox-view-private.h | 2+-
Msrc/mn-mailbox-view.c | 4++--
Msrc/mn-mailbox-view.h | 2+-
Msrc/mn-mailbox.c | 335++++++++++++++++++++++++++++++++++++++++---------------------------------------
Msrc/mn-mailbox.gob | 9+++++----
Msrc/mn-mailbox.h | 16++++++++--------
Msrc/mn-mailboxes-private.h | 8++------
Msrc/mn-mailboxes.c | 433++++++++++++++++++++++++++++++++++++++++++-------------------------------------
Msrc/mn-mailboxes.gob | 24++++++++++++++++--------
Msrc/mn-mailboxes.h | 2+-
Msrc/mn-maildir-mailbox-private.h | 2+-
Msrc/mn-maildir-mailbox.c | 4++--
Msrc/mn-maildir-mailbox.h | 2+-
Msrc/mn-mbox-mailbox-private.h | 2+-
Msrc/mn-mbox-mailbox.c | 20++++++++++----------
Msrc/mn-mbox-mailbox.gob | 14+++++++-------
Msrc/mn-mbox-mailbox.h | 2+-
Asrc/mn-message-box-private.h | 30++++++++++++++++++++++++++++++
Asrc/mn-message-box.c | 555+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-message-box.gob | 219+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-message-box.h | 86+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Dsrc/mn-message-label-private.h | 24------------------------
Dsrc/mn-message-label.c | 473-------------------------------------------------------------------------------
Dsrc/mn-message-label.gob | 181-------------------------------------------------------------------------------
Dsrc/mn-message-label.h | 76----------------------------------------------------------------------------
Msrc/mn-message-private.h | 2+-
Msrc/mn-message.c | 6+++---
Msrc/mn-message.gob | 2+-
Msrc/mn-message.h | 2+-
Msrc/mn-mh-mailbox-private.h | 2+-
Msrc/mn-mh-mailbox.c | 4++--
Msrc/mn-mh-mailbox.h | 2+-
Msrc/mn-pending-mailbox-private.h | 2+-
Msrc/mn-pending-mailbox.c | 4++--
Msrc/mn-pending-mailbox.h | 2+-
Msrc/mn-pi-mailbox-properties-private.h | 4+++-
Msrc/mn-pi-mailbox-properties.c | 6+++---
Msrc/mn-pi-mailbox-properties.gob | 6+++---
Msrc/mn-pi-mailbox-properties.h | 18+-----------------
Msrc/mn-pop3-mailbox-private.h | 2+-
Msrc/mn-pop3-mailbox-properties-private.h | 2+-
Msrc/mn-pop3-mailbox-properties.c | 83++++++++++++++++++++++++++++++++++++++++---------------------------------------
Msrc/mn-pop3-mailbox-properties.gob | 15++++++++-------
Msrc/mn-pop3-mailbox-properties.h | 2+-
Msrc/mn-pop3-mailbox.c | 405++++++++++++++++++++++++++++++++++++++++---------------------------------------
Msrc/mn-pop3-mailbox.gob | 13+++++++++++--
Msrc/mn-pop3-mailbox.h | 2+-
Msrc/mn-properties.c | 35+++++++++++++++++++++++++++++++++++
Msrc/mn-shell-private.h | 8++++----
Msrc/mn-shell.c | 618+++++++++++++++++++++++++++++++++++++++++++++++++------------------------------
Msrc/mn-shell.gob | 245+++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------
Msrc/mn-shell.h | 2+-
Msrc/mn-summary-dialog.c | 44+++++++++++++++++++++++++++++++++++++++++++-
Msrc/mn-summary-popup.c | 54+++++++++++++++++++++++++++++++++++++++++-------------
Msrc/mn-summary.c | 20++++++++++++--------
Msrc/mn-sylpheed-mailbox-private.h | 2+-
Msrc/mn-sylpheed-mailbox.c | 4++--
Msrc/mn-sylpheed-mailbox.h | 2+-
Msrc/mn-system-mailbox-properties-private.h | 2+-
Msrc/mn-system-mailbox-properties.c | 4++--
Msrc/mn-system-mailbox-properties.h | 2+-
Asrc/mn-tooltips-private.h | 43+++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-tooltips.c | 1079+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-tooltips.gob | 640+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-tooltips.h | 67+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/mn-unsupported-mailbox-private.h | 2+-
Msrc/mn-unsupported-mailbox.c | 4++--
Msrc/mn-unsupported-mailbox.h | 2+-
Msrc/mn-uri-private.h | 2+-
Msrc/mn-uri.c | 4++--
Msrc/mn-uri.h | 2+-
Msrc/mn-util.c | 59++++++++++++++++++++++++++++++++++++++++++++++++++---------
Msrc/mn-util.h | 17++++++++++++++---
Mtests/Makefile.in | 55+++++++++++++++++++++----------------------------------
Mui/Makefile.in | 24+++++++++++++++++-------
Mui/properties.glade | 196+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mui/summary-dialog.glade | 83+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------
161 files changed, 9967 insertions(+), 4830 deletions(-)
diff --git a/Makefile.in b/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.8.5 from Makefile.am.
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -40,9 +40,9 @@ DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
 	compile config.guess config.sub depcomp install-sh missing \
 	mkinstalldirs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/openssl.m4 \
-	$(top_srcdir)/m4/sasl2.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
+am__aclocal_m4_deps = $(top_srcdir)/m4/intltool.m4 \
+	$(top_srcdir)/m4/openssl.m4 $(top_srcdir)/m4/sasl2.m4 \
+	$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
@@ -112,6 +112,7 @@ GNOME_LIBS = @GNOME_LIBS@
 GOB2 = @GOB2@
 GTK_CFLAGS = @GTK_CFLAGS@
 GTK_LIBS = @GTK_LIBS@
+ICONV = @ICONV@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -149,6 +150,7 @@ MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
 MAKEINFO = @MAKEINFO@
 MKINSTALLDIRS = @MKINSTALLDIRS@
 MSGFMT = @MSGFMT@
+MSGMERGE = @MSGMERGE@
 OBJEXT = @OBJEXT@
 OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
 OPENSSL_LIBS = @OPENSSL_LIBS@
@@ -209,6 +211,8 @@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
 bindir = @bindir@
 build_alias = @build_alias@
 datadir = @datadir@
@@ -452,12 +456,14 @@ distdir: $(DISTFILES)
 	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test -d "$(distdir)/$$subdir" \
-	    || mkdir "$(distdir)/$$subdir" \
+	    || $(mkdir_p) "$(distdir)/$$subdir" \
 	    || exit 1; \
+	    distdir=`$(am__cd) $(distdir) && pwd`; \
+	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
 	    (cd $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="../$(top_distdir)" \
-	        distdir="../$(distdir)/$$subdir" \
+	        top_distdir="$$top_distdir" \
+	        distdir="$$distdir/$$subdir" \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -468,15 +474,15 @@ distdir: $(DISTFILES)
 	  ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
 	|| chmod -R a+r $(distdir)
 dist-gzip: distdir
-	$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
 	$(am__remove_distdir)
 
 dist-bzip2: distdir
-	$(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2
+	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
 	$(am__remove_distdir)
 
 dist-tarZ: distdir
-	$(AMTAR) chof - $(distdir) | compress -c >$(distdir).tar.Z
+	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
 	$(am__remove_distdir)
 
 dist-shar: distdir
@@ -489,7 +495,7 @@ dist-zip: distdir
 	$(am__remove_distdir)
 
 dist dist-all: distdir
-	$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
 	$(am__remove_distdir)
 
 # This target untars the dist file and tries a VPATH configuration.  Then
@@ -498,11 +504,11 @@ dist dist-all: distdir
 distcheck: dist
 	case '$(DIST_ARCHIVES)' in \
 	*.tar.gz*) \
-	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - ;;\
+	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
 	*.tar.bz2*) \
-	  bunzip2 -c $(distdir).tar.bz2 | $(AMTAR) xf - ;;\
+	  bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
 	*.tar.Z*) \
-	  uncompress -c $(distdir).tar.Z | $(AMTAR) xf - ;;\
+	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
 	*.shar.gz*) \
 	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
 	*.zip*) \
@@ -583,7 +589,7 @@ mostlyclean-generic:
 clean-generic:
 
 distclean-generic:
-	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
diff --git a/NEWS b/NEWS
@@ -1,3 +1,18 @@
+0.8.0					31 October 2004
+
+	* The double-click action can now be customized
+	* A mail reader can now be launched
+	* IMAP IDLE support has been implemented
+	* The mail summary layout has been improved
+	* The mail summary is now also displayed in the tooltip
+	* The tooltip now supports keyboard activation
+	* A mail summary popup option allowing to only display recent
+	  mail has been added
+	* A bug which caused SASL authentication to sometimes fail has
+	  been fixed
+	* The Gmail parser was getting confused by special strings
+	  embedded in message fields: fixed
+
 0.7.1					25 October 2004
 
 	* Gmail fixes:
diff --git a/TODO b/TODO
@@ -2,18 +2,3 @@
   (RFC 3501, section 11.1)
 
 * See if we can add an Evolution data server mailbox backend
-
-* Add an option to display only the mail that is new since the last
-  time the mail summary popup was closed
-
-* Allow to customize the double-click action:
-
-	When double-clicked:	(o) Display the Mail Summary
-				( ) Display the Properties
-				( ) Run a command: [sylpheed         ]
-
-* Allow to monitor multiple IMAP folders per IMAP mailbox
-
-* In the IMAP mailbox properties, add a "Browse" button next to the
-  folder entry (it will connect to the IMAP server and retrieve the
-  list of folders)
diff --git a/aclocal.m4 b/aclocal.m4
@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.8.5 -*- Autoconf -*-
+# generated automatically by aclocal 1.9.2 -*- Autoconf -*-
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
 # Free Software Foundation, Inc.
@@ -392,148 +392,6 @@ AC_DEFUN([AM_GLIB_GNU_GETTEXT],[GLIB_GNU_GETTEXT($@)])
 AC_DEFUN([AM_GLIB_DEFINE_LOCALEDIR],[GLIB_DEFINE_LOCALEDIR($@)])
 ])dnl
 
-ll## intltool.m4 - Configure intltool for the target system. -*-Shell-script-*-
-
-dnl AC_PROG_INTLTOOL([MINIMUM-VERSION], [no-xml])
-# serial 1 AC_PROG_INTLTOOL
-AC_DEFUN([AC_PROG_INTLTOOL],
-[
-
-if test -n "$1"; then
-    AC_MSG_CHECKING(for intltool >= $1)
-
-    INTLTOOL_REQUIRED_VERSION_AS_INT=`echo $1 | awk -F. '{ printf "%d", $[1] * 100 + $[2]; }'`
-    INTLTOOL_APPLIED_VERSION=`awk -F\" '/\\$VERSION / { printf $[2]; }'  < ${ac_aux_dir}/intltool-update.in`
-    changequote({{,}})
-    INTLTOOL_APPLIED_VERSION_AS_INT=`awk -F\" '/\\$VERSION / { split(${{2}}, VERSION, "."); printf "%d\n", VERSION[1] * 100 + VERSION[2];}' < ${ac_aux_dir}/intltool-update.in`
-    changequote([,])
-
-    if test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT"; then
-	AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found])
-    else
-	AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found. Your intltool is too old.  You need intltool $1 or later.])
-	exit 1
-    fi
-fi
-
-  INTLTOOL_DESKTOP_RULE='%.desktop:   %.desktop.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-     INTLTOOL_KEYS_RULE='%.keys:      %.keys.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-     INTLTOOL_PROP_RULE='%.prop:      %.prop.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-      INTLTOOL_OAF_RULE='%.oaf:       %.oaf.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< [$]@'
-     INTLTOOL_PONG_RULE='%.pong:      %.pong.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-   INTLTOOL_SERVER_RULE='%.server:    %.server.in    $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-    INTLTOOL_SHEET_RULE='%.sheet:     %.sheet.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-       INTLTOOL_UI_RULE='%.ui:        %.ui.in        $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-      INTLTOOL_XML_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-      INTLTOOL_XAM_RULE='%.xam:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-      INTLTOOL_KBD_RULE='%.kbd:       %.kbd.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-    INTLTOOL_CAVES_RULE='%.caves:     %.caves.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-  INTLTOOL_SCHEMAS_RULE='%.schemas:   %.schemas.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-    INTLTOOL_THEME_RULE='%.theme:     %.theme.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-
-AC_SUBST(INTLTOOL_DESKTOP_RULE)
-AC_SUBST(INTLTOOL_DIRECTORY_RULE)
-AC_SUBST(INTLTOOL_KEYS_RULE)
-AC_SUBST(INTLTOOL_PROP_RULE)
-AC_SUBST(INTLTOOL_OAF_RULE)
-AC_SUBST(INTLTOOL_PONG_RULE)
-AC_SUBST(INTLTOOL_SERVER_RULE)
-AC_SUBST(INTLTOOL_SHEET_RULE)
-AC_SUBST(INTLTOOL_SOUNDLIST_RULE)
-AC_SUBST(INTLTOOL_UI_RULE)
-AC_SUBST(INTLTOOL_XAM_RULE)
-AC_SUBST(INTLTOOL_KBD_RULE)
-AC_SUBST(INTLTOOL_XML_RULE)
-AC_SUBST(INTLTOOL_CAVES_RULE)
-AC_SUBST(INTLTOOL_SCHEMAS_RULE)
-AC_SUBST(INTLTOOL_THEME_RULE)
-
-# Use the tools built into the package, not the ones that are installed.
-
-INTLTOOL_EXTRACT='$(top_builddir)/intltool-extract'
-INTLTOOL_MERGE='$(top_builddir)/intltool-merge'
-INTLTOOL_UPDATE='$(top_builddir)/intltool-update'
-
-AC_SUBST(INTLTOOL_EXTRACT)
-AC_SUBST(INTLTOOL_MERGE)
-AC_SUBST(INTLTOOL_UPDATE)
-
-AC_PATH_PROG(INTLTOOL_PERL, perl)
-if test -z "$INTLTOOL_PERL"; then
-   AC_MSG_ERROR([perl not found; required for intltool])
-fi
-if test -z "`$INTLTOOL_PERL -v | fgrep '5.' 2> /dev/null`"; then
-   AC_MSG_ERROR([perl 5.x required for intltool])
-fi
-if test "x$2" != "xno-xml"; then
-   AC_MSG_CHECKING([for XML::Parser])
-   if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then
-       AC_MSG_RESULT([ok])
-   else
-       AC_MSG_ERROR([XML::Parser perl module is required for intltool])
-   fi
-fi
-
-# Remove file type tags (using []) from po/POTFILES.
-
-ifdef([AC_DIVERSION_ICMDS],[
-  AC_DIVERT_PUSH(AC_DIVERSION_ICMDS)
-      changequote(,)
-      mv -f po/POTFILES po/POTFILES.tmp
-      sed -e '/\[encoding.*\]/d' -e 's/\[.*\] *//' < po/POTFILES.tmp > po/POTFILES
-      rm -f po/POTFILES.tmp
-      changequote([,])
-  AC_DIVERT_POP()
-],[
-  ifdef([AC_CONFIG_COMMANDS_PRE],[
-    AC_CONFIG_COMMANDS_PRE([
-        changequote(,)
-        mv -f po/POTFILES po/POTFILES.tmp
-        sed -e '/\[encoding.*\]/d' -e 's/\[.*\] *//' < po/POTFILES.tmp > po/POTFILES
-        rm -f po/POTFILES.tmp
-        changequote([,])
-    ])
-  ])
-])
-
-# Manually sed perl in so people don't have to put the intltool scripts in AC_OUTPUT.
-
-AC_OUTPUT_COMMANDS([
-
-sed -e "s:@INTLTOOL_PERL@:${INTLTOOL_PERL}:;" < ${ac_aux_dir}/intltool-extract.in > intltool-extract.out
-if cmp -s intltool-extract intltool-extract.out 2>/dev/null; then
-  rm -f intltool-extract.out
-else
-  mv -f intltool-extract.out intltool-extract
-fi
-chmod ugo+x intltool-extract
-chmod u+w intltool-extract
-
-sed -e "s:@INTLTOOL_PERL@:${INTLTOOL_PERL}:;" \
-    < ${ac_aux_dir}/intltool-merge.in > intltool-merge.out
-if cmp -s intltool-merge intltool-merge.out 2>/dev/null; then
-  rm -f intltool-merge.out
-else
-  mv -f intltool-merge.out intltool-merge
-fi
-chmod ugo+x intltool-merge
-chmod u+w intltool-merge
-
-sed -e "s:@INTLTOOL_PERL@:${INTLTOOL_PERL}:;" < ${ac_aux_dir}/intltool-update.in > intltool-update.out
-if cmp -s intltool-update intltool-update.out 2>/dev/null; then
-  rm -f intltool-update.out
-else
-  mv -f intltool-update.out intltool-update
-fi
-chmod ugo+x intltool-update
-chmod u+w intltool-update
-
-], INTLTOOL_PERL=${INTLTOOL_PERL} ac_aux_dir=${ac_aux_dir})
-
-])
-
 
 dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not)
 dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page
@@ -614,14 +472,14 @@ AC_DEFUN(PKG_CHECK_MODULES, [
 # ----------------------------
 # Automake X.Y traces this macro to ensure aclocal.m4 has been
 # generated from the m4 files accompanying Automake X.Y.
-AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.8"])
+AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
 
 # AM_SET_CURRENT_AUTOMAKE_VERSION
 # -------------------------------
 # Call AM_AUTOMAKE_VERSION so it can be traced.
 # This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-	 [AM_AUTOMAKE_VERSION([1.8.5])])
+	 [AM_AUTOMAKE_VERSION([1.9.2])])
 
 # AM_AUX_DIR_EXPAND
 
@@ -689,7 +547,7 @@ am_aux_dir=`cd $ac_aux_dir && pwd`
 
 # AM_CONDITIONAL                                              -*- Autoconf -*-
 
-# Copyright (C) 1997, 2000, 2001, 2003 Free Software Foundation, Inc.
+# Copyright (C) 1997, 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
 
 # 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
@@ -726,8 +584,8 @@ else
 fi
 AC_CONFIG_COMMANDS_PRE(
 [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
-  AC_MSG_ERROR([conditional "$1" was never defined.
-Usually this means the macro was only invoked conditionally.])
+  AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
 fi])])
 
 # serial 7						-*- Autoconf -*-
@@ -900,7 +758,8 @@ AC_SUBST([AMDEPBACKSLASH])
 
 # Generate code to set up dependency tracking.   -*- Autoconf -*-
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
+#   Free Software Foundation, Inc.
 
 # 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
@@ -936,27 +795,21 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
   else
     continue
   fi
-  grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue
-  # Extract the definition of DEP_FILES from the Makefile without
-  # running `make'.
+  # Extract the definition of DEPDIR, am__include, and am__quote
+  # from the Makefile without running `make'.
   DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
   test -z "$DEPDIR" && continue
+  am__include=`sed -n 's/^am__include = //p' < "$mf"`
+  test -z "am__include" && continue
+  am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
   # When using ansi2knr, U may be empty or an underscore; expand it
   U=`sed -n 's/^U = //p' < "$mf"`
-  test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
-  # We invoke sed twice because it is the simplest approach to
-  # changing $(DEPDIR) to its actual value in the expansion.
-  for file in `sed -n '
-    /^DEP_FILES = .*\\\\$/ {
-      s/^DEP_FILES = //
-      :loop
-	s/\\\\$//
-	p
-	n
-	/\\\\$/ b loop
-      p
-    }
-    /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \
+  # Find all dependency output files, they are included files with
+  # $(DEPDIR) in their names.  We invoke sed twice because it is the
+  # simplest approach to changing $(DEPDIR) to its actual value in the
+  # expansion.
+  for file in `sed -n "
+    s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
     # Make sure the directory exists.
     test -f "$dirpart/$file" && continue
@@ -1011,7 +864,7 @@ AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
 # This macro actually does too much some checks are only needed if
 # your package does certain things.  But this isn't really a big deal.
 
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
 # Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
@@ -1087,7 +940,6 @@ AM_MISSING_PROG(AUTOCONF, autoconf)
 AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
 AM_MISSING_PROG(AUTOHEADER, autoheader)
 AM_MISSING_PROG(MAKEINFO, makeinfo)
-AM_MISSING_PROG(AMTAR, tar)
 AM_PROG_INSTALL_SH
 AM_PROG_INSTALL_STRIP
 AC_REQUIRE([AM_PROG_MKDIR_P])dnl
@@ -1096,7 +948,9 @@ AC_REQUIRE([AM_PROG_MKDIR_P])dnl
 AC_REQUIRE([AC_PROG_AWK])dnl
 AC_REQUIRE([AC_PROG_MAKE_SET])dnl
 AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+              [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+	      		     [_AM_PROG_TAR([v7])])])
 _AM_IF_OPTION([no-dependencies],,
 [AC_PROVIDE_IFELSE([AC_PROG_CC],
                   [_AM_DEPENDENCIES(CC)],
@@ -1379,13 +1233,21 @@ fi
 # this.)
 AC_DEFUN([AM_PROG_MKDIR_P],
 [if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
-  # Keeping the `.' argument allows $(mkdir_p) to be used without
-  # argument.  Indeed, we sometimes output rules like
+  # We used to keeping the `.' as first argument, in order to
+  # allow $(mkdir_p) to be used without argument.  As in
   #   $(mkdir_p) $(somedir)
-  # where $(somedir) is conditionally defined.
-  # (`test -n '$(somedir)' && $(mkdir_p) $(somedir)' is a more
-  # expensive solution, as it forces Make to start a sub-shell.)
-  mkdir_p='mkdir -p -- .'
+  # where $(somedir) is conditionally defined.  However this is wrong
+  # for two reasons:
+  #  1. if the package is installed by a user who cannot write `.'
+  #     make install will fail,
+  #  2. the above comment should most certainly read
+  #     $(mkdir_p) $(DESTDIR)$(somedir)
+  #     so it does not work when $(somedir) is undefined and
+  #     $(DESTDIR) is not.
+  #  To support the latter case, we have to write
+  #     test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+  #  so the `.' trick is pointless.
+  mkdir_p='mkdir -p --'
 else
   # On NextStep and OpenStep, the `mkdir' command does not
   # recognize any option.  It will interpret all options as
@@ -1551,6 +1413,115 @@ fi
 INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
 AC_SUBST([INSTALL_STRIP_PROGRAM])])
 
+# Check how to create a tarball.                            -*- Autoconf -*-
+
+# Copyright (C) 2004  Free Software Foundation, Inc.
+
+# 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, 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.
+
+# serial 1
+
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+#     tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+#     $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+     [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+     [m4_case([$1], [ustar],, [pax],,
+              [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+  case $_am_tool in
+  gnutar)
+    for _am_tar in tar gnutar gtar;
+    do
+      AM_RUN_LOG([$_am_tar --version]) && break
+    done
+    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+    am__untar="$_am_tar -xf -"
+    ;;
+  plaintar)
+    # Must skip GNU tar: if it does not support --format= it doesn't create
+    # ustar tarball either.
+    (tar --version) >/dev/null 2>&1 && continue
+    am__tar='tar chf - "$$tardir"'
+    am__tar_='tar chf - "$tardir"'
+    am__untar='tar xf -'
+    ;;
+  pax)
+    am__tar='pax -L -x $1 -w "$$tardir"'
+    am__tar_='pax -L -x $1 -w "$tardir"'
+    am__untar='pax -r'
+    ;;
+  cpio)
+    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+    am__untar='cpio -i -H $1 -d'
+    ;;
+  none)
+    am__tar=false
+    am__tar_=false
+    am__untar=false
+    ;;
+  esac
+
+  # If the value was cached, stop now.  We just wanted to have am__tar
+  # and am__untar set.
+  test -n "${am_cv_prog_tar_$1}" && break
+
+  # tar/untar a dummy directory, and stop if the command works
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  echo GrepMe > conftest.dir/file
+  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+  rm -rf conftest.dir
+  if test -s conftest.tar; then
+    AM_RUN_LOG([$am__untar <conftest.tar])
+    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+  fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([m4/intltool.m4])
 m4_include([m4/openssl.m4])
 m4_include([m4/sasl2.m4])
 dnl AM_GCONF_SOURCE_2
diff --git a/art/Makefile.in b/art/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.8.5 from Makefile.am.
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -38,9 +38,9 @@ subdir = art
 DIST_COMMON = $(dist_app_pixmaps_DATA) $(dist_gnome_pixmaps_DATA) \
 	$(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/openssl.m4 \
-	$(top_srcdir)/m4/sasl2.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
+am__aclocal_m4_deps = $(top_srcdir)/m4/intltool.m4 \
+	$(top_srcdir)/m4/openssl.m4 $(top_srcdir)/m4/sasl2.m4 \
+	$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
@@ -48,7 +48,14 @@ CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 SOURCES =
 DIST_SOURCES =
-am__installdirs = "$(DESTDIR)$(app_pixmapsdir)" "$(DESTDIR)$(gnome_pixmapsdir)"
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(app_pixmapsdir)" \
+	"$(DESTDIR)$(gnome_pixmapsdir)"
 dist_app_pixmapsDATA_INSTALL = $(INSTALL_DATA)
 dist_gnome_pixmapsDATA_INSTALL = $(INSTALL_DATA)
 DATA = $(dist_app_pixmaps_DATA) $(dist_gnome_pixmaps_DATA)
@@ -93,6 +100,7 @@ GNOME_LIBS = @GNOME_LIBS@
 GOB2 = @GOB2@
 GTK_CFLAGS = @GTK_CFLAGS@
 GTK_LIBS = @GTK_LIBS@
+ICONV = @ICONV@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -130,6 +138,7 @@ MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
 MAKEINFO = @MAKEINFO@
 MKINSTALLDIRS = @MKINSTALLDIRS@
 MSGFMT = @MSGFMT@
+MSGMERGE = @MSGMERGE@
 OBJEXT = @OBJEXT@
 OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
 OPENSSL_LIBS = @OPENSSL_LIBS@
@@ -190,6 +199,8 @@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
 bindir = @bindir@
 build_alias = @build_alias@
 datadir = @datadir@
@@ -259,7 +270,7 @@ install-dist_app_pixmapsDATA: $(dist_app_pixmaps_DATA)
 	test -z "$(app_pixmapsdir)" || $(mkdir_p) "$(DESTDIR)$(app_pixmapsdir)"
 	@list='$(dist_app_pixmaps_DATA)'; for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  f=$(am__strip_dir) \
 	  echo " $(dist_app_pixmapsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(app_pixmapsdir)/$$f'"; \
 	  $(dist_app_pixmapsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(app_pixmapsdir)/$$f"; \
 	done
@@ -267,7 +278,7 @@ install-dist_app_pixmapsDATA: $(dist_app_pixmaps_DATA)
 uninstall-dist_app_pixmapsDATA:
 	@$(NORMAL_UNINSTALL)
 	@list='$(dist_app_pixmaps_DATA)'; for p in $$list; do \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  f=$(am__strip_dir) \
 	  echo " rm -f '$(DESTDIR)$(app_pixmapsdir)/$$f'"; \
 	  rm -f "$(DESTDIR)$(app_pixmapsdir)/$$f"; \
 	done
@@ -276,7 +287,7 @@ install-dist_gnome_pixmapsDATA: $(dist_gnome_pixmaps_DATA)
 	test -z "$(gnome_pixmapsdir)" || $(mkdir_p) "$(DESTDIR)$(gnome_pixmapsdir)"
 	@list='$(dist_gnome_pixmaps_DATA)'; for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  f=$(am__strip_dir) \
 	  echo " $(dist_gnome_pixmapsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(gnome_pixmapsdir)/$$f'"; \
 	  $(dist_gnome_pixmapsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(gnome_pixmapsdir)/$$f"; \
 	done
@@ -284,7 +295,7 @@ install-dist_gnome_pixmapsDATA: $(dist_gnome_pixmaps_DATA)
 uninstall-dist_gnome_pixmapsDATA:
 	@$(NORMAL_UNINSTALL)
 	@list='$(dist_gnome_pixmaps_DATA)'; for p in $$list; do \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  f=$(am__strip_dir) \
 	  echo " rm -f '$(DESTDIR)$(gnome_pixmapsdir)/$$f'"; \
 	  rm -f "$(DESTDIR)$(gnome_pixmapsdir)/$$f"; \
 	done
@@ -348,7 +359,7 @@ mostlyclean-generic:
 clean-generic:
 
 distclean-generic:
-	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
diff --git a/autotools.conf b/autotools.conf
@@ -1,6 +1,10 @@
-export LIBTOOLIZE="libtoolize15 --automake"
-export ACLOCAL="aclocal18 -I m4"
-export AUTOHEADER="autoheader259"
-export AUTOM4TE="autom4te259"
-export AUTOCONF="autoconf259"
-export AUTOMAKE="automake18"
+export AUTOCONF_VER=259
+export AUTOMAKE_VER=19
+export LIBTOOL_VER=15
+
+export LIBTOOLIZE="libtoolize$LIBTOOL_VER --automake"
+export ACLOCAL="aclocal$AUTOMAKE_VER -I m4"
+export AUTOHEADER="autoheader$AUTOCONF_VER"
+export AUTOM4TE="autom4te$AUTOCONF_VER"
+export AUTOCONF="autoconf$AUTOCONF_VER"
+export AUTOMAKE="automake$AUTOMAKE_VER"
diff --git a/configure b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.59 for mail-notification 0.7.1.
+# Generated by GNU Autoconf 2.59 for mail-notification 0.8.0.
 #
 # Report bugs to <jylefort@brutele.be>.
 #
@@ -269,8 +269,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='mail-notification'
 PACKAGE_TARNAME='mail-notification'
-PACKAGE_VERSION='0.7.1'
-PACKAGE_STRING='mail-notification 0.7.1'
+PACKAGE_VERSION='0.8.0'
+PACKAGE_STRING='mail-notification 0.8.0'
 PACKAGE_BUGREPORT='jylefort@brutele.be'
 
 ac_unique_file="src/mn-main.c"
@@ -311,7 +311,7 @@ ac_includes_default="\
 # include <unistd.h>
 #endif"
 
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS WARN_CFLAGS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT GETTEXT_PACKAGE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP USE_NLS MSGFMT GMSGFMT XGETTEXT CATALOGS CATOBJEXT DATADIRNAME GMOFILES INSTOBJEXT INTLLIBS PO_IN_DATADIR_TRUE PO_IN_DATADIR_FALSE POFILES POSUB MKINSTALLDIRS INTLTOOL_DESKTOP_RULE INTLTOOL_DIRECTORY_RULE INTLTOOL_KEYS_RULE INTLTOOL_PROP_RULE INTLTOOL_OAF_RULE INTLTOOL_PONG_RULE INTLTOOL_SERVER_RULE INTLTOOL_SHEET_RULE INTLTOOL_SOUNDLIST_RULE INTLTOOL_UI_RULE INTLTOOL_XAM_RULE INTLTOOL_KBD_RULE INTLTOOL_XML_RULE INTLTOOL_CAVES_RULE INTLTOOL_SCHEMAS_RULE INTLTOOL_THEME_RULE INTLTOOL_EXTRACT INTLTOOL_MERGE INTLTOOL_UPDATE INTLTOOL_PERL PKG_CONFIG GTK_CFLAGS GTK_LIBS GNOME_CFLAGS GNOME_LIBS GCONF_SCHEMA_CONFIG_SOURCE GCONF_SCHEMA_FILE_DIR GCONF_SCHEMAS_INSTALL_TRUE GCONF_SCHEMAS_INSTALL_FALSE GCONFTOOL ORBIT_IDL LIBBONOBO_IDL BONOBO_ACTIVATION_IDL GOB2 OPENSSL_CFLAGS OPENSSL_LIBS SASL_CFLAGS SASL_LIBS SOUP_CFLAGS SOUP_LIBS GMIME_CFLAGS GMIME_LIBS WITH_MBOX_TRUE WITH_MBOX_FALSE WITH_MH_TRUE WITH_MH_FALSE WITH_MAILDIR_TRUE WITH_MAILDIR_FALSE WITH_POP3_TRUE WITH_POP3_FALSE WITH_IMAP_TRUE WITH_IMAP_FALSE WITH_POP3_OR_IMAP_TRUE WITH_POP3_OR_IMAP_FALSE WITH_POP3_OR_IMAP_OR_GMAIL_TRUE WITH_POP3_OR_IMAP_OR_GMAIL_FALSE WITH_SSL_TRUE WITH_SSL_FALSE WITH_SASL_TRUE WITH_SASL_FALSE WITH_SYLPHEED_TRUE WITH_SYLPHEED_FALSE WITH_GMAIL_TRUE WITH_GMAIL_FALSE WITH_MIME_TRUE WITH_MIME_FALSE WITH_REGRESSION_TESTS_TRUE WITH_REGRESSION_TESTS_FALSE LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS WARN_CFLAGS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT GETTEXT_PACKAGE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP USE_NLS MSGFMT GMSGFMT XGETTEXT CATALOGS CATOBJEXT DATADIRNAME GMOFILES INSTOBJEXT INTLLIBS PO_IN_DATADIR_TRUE PO_IN_DATADIR_FALSE POFILES POSUB MKINSTALLDIRS INTLTOOL_DESKTOP_RULE INTLTOOL_DIRECTORY_RULE INTLTOOL_KEYS_RULE INTLTOOL_PROP_RULE INTLTOOL_OAF_RULE INTLTOOL_PONG_RULE INTLTOOL_SERVER_RULE INTLTOOL_SHEET_RULE INTLTOOL_SOUNDLIST_RULE INTLTOOL_UI_RULE INTLTOOL_XAM_RULE INTLTOOL_KBD_RULE INTLTOOL_XML_RULE INTLTOOL_CAVES_RULE INTLTOOL_SCHEMAS_RULE INTLTOOL_THEME_RULE INTLTOOL_EXTRACT INTLTOOL_MERGE INTLTOOL_UPDATE INTLTOOL_PERL ICONV MSGMERGE PKG_CONFIG GTK_CFLAGS GTK_LIBS GNOME_CFLAGS GNOME_LIBS GCONF_SCHEMA_CONFIG_SOURCE GCONF_SCHEMA_FILE_DIR GCONF_SCHEMAS_INSTALL_TRUE GCONF_SCHEMAS_INSTALL_FALSE GCONFTOOL ORBIT_IDL LIBBONOBO_IDL BONOBO_ACTIVATION_IDL GOB2 OPENSSL_CFLAGS OPENSSL_LIBS SASL_CFLAGS SASL_LIBS SOUP_CFLAGS SOUP_LIBS GMIME_CFLAGS GMIME_LIBS WITH_MBOX_TRUE WITH_MBOX_FALSE WITH_MH_TRUE WITH_MH_FALSE WITH_MAILDIR_TRUE WITH_MAILDIR_FALSE WITH_POP3_TRUE WITH_POP3_FALSE WITH_IMAP_TRUE WITH_IMAP_FALSE WITH_POP3_OR_IMAP_TRUE WITH_POP3_OR_IMAP_FALSE WITH_POP3_OR_IMAP_OR_GMAIL_TRUE WITH_POP3_OR_IMAP_OR_GMAIL_FALSE WITH_SSL_TRUE WITH_SSL_FALSE WITH_SASL_TRUE WITH_SASL_FALSE WITH_SYLPHEED_TRUE WITH_SYLPHEED_FALSE WITH_GMAIL_TRUE WITH_GMAIL_FALSE WITH_MIME_TRUE WITH_MIME_FALSE WITH_REGRESSION_TESTS_TRUE WITH_REGRESSION_TESTS_FALSE LIBOBJS LTLIBOBJS'
 ac_subst_files=''
 
 # Initialize some variables set by options.
@@ -780,7 +780,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures mail-notification 0.7.1 to adapt to many kinds of systems.
+\`configure' configures mail-notification 0.8.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -842,7 +842,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of mail-notification 0.7.1:";;
+     short | recursive ) echo "Configuration of mail-notification 0.8.0:";;
    esac
   cat <<\_ACEOF
 
@@ -986,7 +986,7 @@ fi
 test -n "$ac_init_help" && exit 0
 if $ac_init_version; then
   cat <<\_ACEOF
-mail-notification configure 0.7.1
+mail-notification configure 0.8.0
 generated by GNU Autoconf 2.59
 
 Copyright (C) 2003 Free Software Foundation, Inc.
@@ -1000,7 +1000,7 @@ cat >&5 <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by mail-notification $as_me 0.7.1, which was
+It was created by mail-notification $as_me 0.8.0, which was
 generated by GNU Autoconf 2.59.  Invocation command line was
 
   $ $0 $@
@@ -1512,7 +1512,7 @@ fi;
 
 ### initialization
 
-am__api_version="1.8"
+am__api_version="1.9"
 ac_aux_dir=
 for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
   if test -f $ac_dir/install-sh; then
@@ -1689,13 +1689,21 @@ echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
 fi
 
 if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
-  # Keeping the `.' argument allows $(mkdir_p) to be used without
-  # argument.  Indeed, we sometimes output rules like
+  # We used to keeping the `.' as first argument, in order to
+  # allow $(mkdir_p) to be used without argument.  As in
   #   $(mkdir_p) $(somedir)
-  # where $(somedir) is conditionally defined.
-  # (`test -n '$(somedir)' && $(mkdir_p) $(somedir)' is a more
-  # expensive solution, as it forces Make to start a sub-shell.)
-  mkdir_p='mkdir -p -- .'
+  # where $(somedir) is conditionally defined.  However this is wrong
+  # for two reasons:
+  #  1. if the package is installed by a user who cannot write `.'
+  #     make install will fail,
+  #  2. the above comment should most certainly read
+  #     $(mkdir_p) $(DESTDIR)$(somedir)
+  #     so it does not work when $(somedir) is undefined and
+  #     $(DESTDIR) is not.
+  #  To support the latter case, we have to write
+  #     test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+  #  so the `.' trick is pointless.
+  mkdir_p='mkdir -p --'
 else
   # On NextStep and OpenStep, the `mkdir' command does not
   # recognize any option.  It will interpret all options as
@@ -1811,7 +1819,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='mail-notification'
- VERSION='0.7.1'
+ VERSION='0.8.0'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -1839,9 +1847,6 @@ AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
 
 MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
 
-
-AMTAR=${AMTAR-"${am_missing_run}tar"}
-
 install_sh=${install_sh-"$am_aux_dir/install-sh"}
 
 # Installed binaries are usually stripped using `strip' when the user
@@ -1934,6 +1939,13 @@ INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
 
 # We need awk for the "check" target.  The system "awk" is bad on
 # some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
+
 
 
 
@@ -5067,6 +5079,167 @@ echo "$as_me: error: XML::Parser perl module is required for intltool" >&2;}
    fi
 fi
 
+# Extract the first word of "iconv", so it can be a program name with args.
+set dummy iconv; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_ICONV+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $ICONV in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ICONV="$ICONV" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ICONV="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_path_ICONV" && ac_cv_path_ICONV="iconv"
+  ;;
+esac
+fi
+ICONV=$ac_cv_path_ICONV
+
+if test -n "$ICONV"; then
+  echo "$as_me:$LINENO: result: $ICONV" >&5
+echo "${ECHO_T}$ICONV" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+# Extract the first word of "msgfmt", so it can be a program name with args.
+set dummy msgfmt; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_MSGFMT+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $MSGFMT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_MSGFMT="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="msgfmt"
+  ;;
+esac
+fi
+MSGFMT=$ac_cv_path_MSGFMT
+
+if test -n "$MSGFMT"; then
+  echo "$as_me:$LINENO: result: $MSGFMT" >&5
+echo "${ECHO_T}$MSGFMT" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+# Extract the first word of "msgmerge", so it can be a program name with args.
+set dummy msgmerge; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_MSGMERGE+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $MSGMERGE in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_MSGMERGE="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE="msgmerge"
+  ;;
+esac
+fi
+MSGMERGE=$ac_cv_path_MSGMERGE
+
+if test -n "$MSGMERGE"; then
+  echo "$as_me:$LINENO: result: $MSGMERGE" >&5
+echo "${ECHO_T}$MSGMERGE" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+# Extract the first word of "xgettext", so it can be a program name with args.
+set dummy xgettext; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_XGETTEXT+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $XGETTEXT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_XGETTEXT="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT="xgettext"
+  ;;
+esac
+fi
+XGETTEXT=$ac_cv_path_XGETTEXT
+
+if test -n "$XGETTEXT"; then
+  echo "$as_me:$LINENO: result: $XGETTEXT" >&5
+echo "${ECHO_T}$XGETTEXT" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+
 # Remove file type tags (using []) from po/POTFILES.
 
 
@@ -5077,7 +5250,7 @@ fi
 
 # Manually sed perl in so people don't have to put the intltool scripts in AC_OUTPUT.
 
-          ac_config_commands="$ac_config_commands default-2"
+          ac_config_commands="$ac_config_commands intltool"
 
 
 
@@ -8303,7 +8476,7 @@ _ASBOX
 } >&5
 cat >&5 <<_CSEOF
 
-This file was extended by mail-notification $as_me 0.7.1, which was
+This file was extended by mail-notification $as_me 0.8.0, which was
 generated by GNU Autoconf 2.59.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -8366,7 +8539,7 @@ _ACEOF
 
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-mail-notification config.status 0.7.1
+mail-notification config.status 0.8.0
 configured by $0, generated by GNU Autoconf 2.59,
   with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
 
@@ -8467,7 +8640,9 @@ cat >>$CONFIG_STATUS <<_ACEOF
 
 AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
 
-INTLTOOL_PERL=${INTLTOOL_PERL} ac_aux_dir=${ac_aux_dir}
+INTLTOOL_PERL='${INTLTOOL_PERL}' ac_aux_dir=${ac_aux_dir}
+INTLTOOL_EXTRACT='${INTLTOOL_EXTRACT}' ICONV='${ICONV}'
+MSGFMT='${MSGFMT}' MSGMERGE='${MSGMERGE}' XGETTEXT='${XGETTEXT}'
 
 _ACEOF
 
@@ -8490,7 +8665,7 @@ do
   "ui/Makefile" ) CONFIG_FILES="$CONFIG_FILES ui/Makefile" ;;
   "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
   "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
-  "default-2" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-2" ;;
+  "intltool" ) CONFIG_COMMANDS="$CONFIG_COMMANDS intltool" ;;
   "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
   *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
 echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
@@ -8589,7 +8764,6 @@ s,@AUTOCONF@,$AUTOCONF,;t t
 s,@AUTOMAKE@,$AUTOMAKE,;t t
 s,@AUTOHEADER@,$AUTOHEADER,;t t
 s,@MAKEINFO@,$MAKEINFO,;t t
-s,@AMTAR@,$AMTAR,;t t
 s,@install_sh@,$install_sh,;t t
 s,@STRIP@,$STRIP,;t t
 s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
@@ -8598,6 +8772,9 @@ s,@mkdir_p@,$mkdir_p,;t t
 s,@AWK@,$AWK,;t t
 s,@SET_MAKE@,$SET_MAKE,;t t
 s,@am__leading_dot@,$am__leading_dot,;t t
+s,@AMTAR@,$AMTAR,;t t
+s,@am__tar@,$am__tar,;t t
+s,@am__untar@,$am__untar,;t t
 s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t
 s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t
 s,@MAINT@,$MAINT,;t t
@@ -8655,6 +8832,8 @@ s,@INTLTOOL_EXTRACT@,$INTLTOOL_EXTRACT,;t t
 s,@INTLTOOL_MERGE@,$INTLTOOL_MERGE,;t t
 s,@INTLTOOL_UPDATE@,$INTLTOOL_UPDATE,;t t
 s,@INTLTOOL_PERL@,$INTLTOOL_PERL,;t t
+s,@ICONV@,$ICONV,;t t
+s,@MSGMERGE@,$MSGMERGE,;t t
 s,@PKG_CONFIG@,$PKG_CONFIG,;t t
 s,@GTK_CFLAGS@,$GTK_CFLAGS,;t t
 s,@GTK_LIBS@,$GTK_LIBS,;t t
@@ -9327,27 +9506,21 @@ echo X"$mf" |
   else
     continue
   fi
-  grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue
-  # Extract the definition of DEP_FILES from the Makefile without
-  # running `make'.
+  # Extract the definition of DEPDIR, am__include, and am__quote
+  # from the Makefile without running `make'.
   DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
   test -z "$DEPDIR" && continue
+  am__include=`sed -n 's/^am__include = //p' < "$mf"`
+  test -z "am__include" && continue
+  am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
   # When using ansi2knr, U may be empty or an underscore; expand it
   U=`sed -n 's/^U = //p' < "$mf"`
-  test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
-  # We invoke sed twice because it is the simplest approach to
-  # changing $(DEPDIR) to its actual value in the expansion.
-  for file in `sed -n '
-    /^DEP_FILES = .*\\\\$/ {
-      s/^DEP_FILES = //
-      :loop
-	s/\\\\$//
-	p
-	n
-	/\\\\$/ b loop
-      p
-    }
-    /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \
+  # Find all dependency output files, they are included files with
+  # $(DEPDIR) in their names.  We invoke sed twice because it is the
+  # simplest approach to changing $(DEPDIR) to its actual value in the
+  # expansion.
+  for file in `sed -n "
+    s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
     # Make sure the directory exists.
     test -f "$dirpart/$file" && continue
@@ -9396,9 +9569,17 @@ done
     default-1 ) case "$CONFIG_FILES" in *po/Makefile.in*)
         sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
       esac ;;
-    default-2 )
+    intltool )
+
+intltool_edit="-e 's:@INTLTOOL_EXTRACT@:`pwd`/intltool-extract:g' \
+               -e 's:@INTLTOOL_ICONV@:${ICONV}:g' \
+               -e 's:@INTLTOOL_MSGFMT@:${MSGFMT}:g' \
+               -e 's:@INTLTOOL_MSGMERGE@:${MSGMERGE}:g' \
+               -e 's:@INTLTOOL_XGETTEXT@:${XGETTEXT}:g' \
+               -e 's:@INTLTOOL_PERL@:${INTLTOOL_PERL}:g'"
 
-sed -e "s:@INTLTOOL_PERL@:${INTLTOOL_PERL}:;" < ${ac_aux_dir}/intltool-extract.in > intltool-extract.out
+eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-extract.in \
+  > intltool-extract.out
 if cmp -s intltool-extract intltool-extract.out 2>/dev/null; then
   rm -f intltool-extract.out
 else
@@ -9407,8 +9588,8 @@ fi
 chmod ugo+x intltool-extract
 chmod u+w intltool-extract
 
-sed -e "s:@INTLTOOL_PERL@:${INTLTOOL_PERL}:;" \
-    < ${ac_aux_dir}/intltool-merge.in > intltool-merge.out
+eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-merge.in \
+  > intltool-merge.out
 if cmp -s intltool-merge intltool-merge.out 2>/dev/null; then
   rm -f intltool-merge.out
 else
@@ -9417,7 +9598,8 @@ fi
 chmod ugo+x intltool-merge
 chmod u+w intltool-merge
 
-sed -e "s:@INTLTOOL_PERL@:${INTLTOOL_PERL}:;" < ${ac_aux_dir}/intltool-update.in > intltool-update.out
+eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-update.in \
+  > intltool-update.out
 if cmp -s intltool-update intltool-update.out 2>/dev/null; then
   rm -f intltool-update.out
 else
diff --git a/configure.ac b/configure.ac
@@ -1,4 +1,4 @@
-AC_INIT(mail-notification, 0.7.1, jylefort@brutele.be)
+AC_INIT(mail-notification, 0.8.0, jylefort@brutele.be)
 AC_CONFIG_SRCDIR(src/mn-main.c)
 
 AC_PREREQ(2.59)
diff --git a/data/Makefile.in b/data/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.8.5 from Makefile.am.
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -37,9 +37,9 @@ POST_UNINSTALL = :
 subdir = data
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/openssl.m4 \
-	$(top_srcdir)/m4/sasl2.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
+am__aclocal_m4_deps = $(top_srcdir)/m4/intltool.m4 \
+	$(top_srcdir)/m4/openssl.m4 $(top_srcdir)/m4/sasl2.m4 \
+	$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
@@ -47,7 +47,15 @@ CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 SOURCES =
 DIST_SOURCES =
-am__installdirs = "$(DESTDIR)$(applicationsdir)" "$(DESTDIR)$(schemasdir)" "$(DESTDIR)$(serverdir)" "$(DESTDIR)$(settingsdir)" "$(DESTDIR)$(soundlistdir)"
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(applicationsdir)" \
+	"$(DESTDIR)$(schemasdir)" "$(DESTDIR)$(serverdir)" \
+	"$(DESTDIR)$(settingsdir)" "$(DESTDIR)$(soundlistdir)"
 applicationsDATA_INSTALL = $(INSTALL_DATA)
 schemasDATA_INSTALL = $(INSTALL_DATA)
 serverDATA_INSTALL = $(INSTALL_DATA)
@@ -96,6 +104,7 @@ GNOME_LIBS = @GNOME_LIBS@
 GOB2 = @GOB2@
 GTK_CFLAGS = @GTK_CFLAGS@
 GTK_LIBS = @GTK_LIBS@
+ICONV = @ICONV@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -133,6 +142,7 @@ MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
 MAKEINFO = @MAKEINFO@
 MKINSTALLDIRS = @MKINSTALLDIRS@
 MSGFMT = @MSGFMT@
+MSGMERGE = @MSGMERGE@
 OBJEXT = @OBJEXT@
 OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
 OPENSSL_LIBS = @OPENSSL_LIBS@
@@ -193,6 +203,8 @@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
 bindir = @bindir@
 build_alias = @build_alias@
 datadir = @datadir@
@@ -281,7 +293,7 @@ install-applicationsDATA: $(applications_DATA)
 	test -z "$(applicationsdir)" || $(mkdir_p) "$(DESTDIR)$(applicationsdir)"
 	@list='$(applications_DATA)'; for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  f=$(am__strip_dir) \
 	  echo " $(applicationsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(applicationsdir)/$$f'"; \
 	  $(applicationsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(applicationsdir)/$$f"; \
 	done
@@ -289,7 +301,7 @@ install-applicationsDATA: $(applications_DATA)
 uninstall-applicationsDATA:
 	@$(NORMAL_UNINSTALL)
 	@list='$(applications_DATA)'; for p in $$list; do \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  f=$(am__strip_dir) \
 	  echo " rm -f '$(DESTDIR)$(applicationsdir)/$$f'"; \
 	  rm -f "$(DESTDIR)$(applicationsdir)/$$f"; \
 	done
@@ -298,7 +310,7 @@ install-schemasDATA: $(schemas_DATA)
 	test -z "$(schemasdir)" || $(mkdir_p) "$(DESTDIR)$(schemasdir)"
 	@list='$(schemas_DATA)'; for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  f=$(am__strip_dir) \
 	  echo " $(schemasDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(schemasdir)/$$f'"; \
 	  $(schemasDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(schemasdir)/$$f"; \
 	done
@@ -306,7 +318,7 @@ install-schemasDATA: $(schemas_DATA)
 uninstall-schemasDATA:
 	@$(NORMAL_UNINSTALL)
 	@list='$(schemas_DATA)'; for p in $$list; do \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  f=$(am__strip_dir) \
 	  echo " rm -f '$(DESTDIR)$(schemasdir)/$$f'"; \
 	  rm -f "$(DESTDIR)$(schemasdir)/$$f"; \
 	done
@@ -315,7 +327,7 @@ install-serverDATA: $(server_DATA)
 	test -z "$(serverdir)" || $(mkdir_p) "$(DESTDIR)$(serverdir)"
 	@list='$(server_DATA)'; for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  f=$(am__strip_dir) \
 	  echo " $(serverDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(serverdir)/$$f'"; \
 	  $(serverDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(serverdir)/$$f"; \
 	done
@@ -323,7 +335,7 @@ install-serverDATA: $(server_DATA)
 uninstall-serverDATA:
 	@$(NORMAL_UNINSTALL)
 	@list='$(server_DATA)'; for p in $$list; do \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  f=$(am__strip_dir) \
 	  echo " rm -f '$(DESTDIR)$(serverdir)/$$f'"; \
 	  rm -f "$(DESTDIR)$(serverdir)/$$f"; \
 	done
@@ -332,7 +344,7 @@ install-settingsDATA: $(settings_DATA)
 	test -z "$(settingsdir)" || $(mkdir_p) "$(DESTDIR)$(settingsdir)"
 	@list='$(settings_DATA)'; for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  f=$(am__strip_dir) \
 	  echo " $(settingsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(settingsdir)/$$f'"; \
 	  $(settingsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(settingsdir)/$$f"; \
 	done
@@ -340,7 +352,7 @@ install-settingsDATA: $(settings_DATA)
 uninstall-settingsDATA:
 	@$(NORMAL_UNINSTALL)
 	@list='$(settings_DATA)'; for p in $$list; do \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  f=$(am__strip_dir) \
 	  echo " rm -f '$(DESTDIR)$(settingsdir)/$$f'"; \
 	  rm -f "$(DESTDIR)$(settingsdir)/$$f"; \
 	done
@@ -349,7 +361,7 @@ install-soundlistDATA: $(soundlist_DATA)
 	test -z "$(soundlistdir)" || $(mkdir_p) "$(DESTDIR)$(soundlistdir)"
 	@list='$(soundlist_DATA)'; for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  f=$(am__strip_dir) \
 	  echo " $(soundlistDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(soundlistdir)/$$f'"; \
 	  $(soundlistDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(soundlistdir)/$$f"; \
 	done
@@ -357,7 +369,7 @@ install-soundlistDATA: $(soundlist_DATA)
 uninstall-soundlistDATA:
 	@$(NORMAL_UNINSTALL)
 	@list='$(soundlist_DATA)'; for p in $$list; do \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  f=$(am__strip_dir) \
 	  echo " rm -f '$(DESTDIR)$(soundlistdir)/$$f'"; \
 	  rm -f "$(DESTDIR)$(soundlistdir)/$$f"; \
 	done
@@ -422,11 +434,12 @@ clean-generic:
 	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
 
 distclean-generic:
-	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
 	@echo "it deletes files that may require special tools to rebuild."
+@GCONF_SCHEMAS_INSTALL_FALSE@install-data-local:
 clean: clean-am
 
 clean-am: clean-generic mostlyclean-am
diff --git a/data/mail-notification.schemas.in b/data/mail-notification.schemas.in
@@ -65,6 +65,28 @@
       </locale>
     </schema>
     <schema>
+      <key>/schemas/apps/mail-notification/commands/mail-reader/enabled</key>
+      <applyto>/apps/mail-notification/commands/mail-reader/enabled</applyto>
+      <owner>mail-notification</owner>
+      <type>bool</type>
+      <default>0</default>
+      <locale name="C">
+        <short>Set a mail reader</short>
+	<long>Whether to set a mail reader or not.</long>
+      </locale>
+    </schema> 
+    <schema>
+      <key>/schemas/apps/mail-notification/commands/mail-reader/command</key>
+      <applyto>/apps/mail-notification/commands/mail-reader/command</applyto>
+      <owner>mail-notification</owner>
+      <type>string</type>
+      <default>evolution</default>
+      <locale name="C">
+        <short>Mail reader command</short>
+	<long>The command to run to launch the mail reader.</long>
+      </locale>
+    </schema>
+    <schema>
       <key>/schemas/apps/mail-notification/mailboxes</key>
       <applyto>/apps/mail-notification/mailboxes</applyto>
       <owner>mail-notification</owner>
@@ -251,5 +273,27 @@
         <long>The number of pixels to leave between the top or bottom side of the screen and the mail summary popup.</long>
       </locale>
     </schema>
+    <schema>
+      <key>/schemas/apps/mail-notification/mail-summary-popup/only-recent</key>
+      <applyto>/apps/mail-notification/mail-summary-popup/only-recent</applyto>
+      <owner>mail-notification</owner>
+      <type>bool</type>
+      <default>0</default>
+      <locale name="C">
+        <short>Only display recent mail in mail summary popup</short>
+	<long>Whether to hide previously displayed mail in the mail summary popup or not.</long>
+      </locale>
+    </schema> 
+    <schema>
+      <key>/schemas/apps/mail-notification/double-click-action</key>
+      <applyto>/apps/mail-notification/double-click-action</applyto>
+      <owner>mail-notification</owner>
+      <type>string</type>
+      <default>display-mail-summary</default>
+      <locale name="C">
+        <short>Double-click action</short>
+	<long>The action to perform when the icon is double-clicked. Must be "display-mail-summary" or "launch-mail-reader".</long>
+      </locale>
+    </schema>
   </schemalist>
 </gconfschemafile>
diff --git a/help/C/Makefile.in b/help/C/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.8.5 from Makefile.am.
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -99,9 +99,9 @@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
 	$(top_srcdir)/help/omf.make $(top_srcdir)/help/xmldocs.make
 subdir = help/C
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/openssl.m4 \
-	$(top_srcdir)/m4/sasl2.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
+am__aclocal_m4_deps = $(top_srcdir)/m4/intltool.m4 \
+	$(top_srcdir)/m4/openssl.m4 $(top_srcdir)/m4/sasl2.m4 \
+	$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
@@ -150,6 +150,7 @@ GNOME_LIBS = @GNOME_LIBS@
 GOB2 = @GOB2@
 GTK_CFLAGS = @GTK_CFLAGS@
 GTK_LIBS = @GTK_LIBS@
+ICONV = @ICONV@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -187,6 +188,7 @@ MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
 MAKEINFO = @MAKEINFO@
 MKINSTALLDIRS = @MKINSTALLDIRS@
 MSGFMT = @MSGFMT@
+MSGMERGE = @MSGMERGE@
 OBJEXT = @OBJEXT@
 OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
 OPENSSL_LIBS = @OPENSSL_LIBS@
@@ -247,6 +249,8 @@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
 bindir = @bindir@
 build_alias = @build_alias@
 datadir = @datadir@
@@ -380,7 +384,7 @@ clean-generic:
 	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
 
 distclean-generic:
-	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -433,15 +437,15 @@ ps-am:
 
 uninstall-am: uninstall-info-am uninstall-local
 
-.PHONY: all all-am check check-am clean clean-generic distclean \
-	distclean-generic distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am \
-	install-data-local install-exec install-exec-am install-info \
-	install-info-am install-man install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
-	pdf-am ps ps-am uninstall uninstall-am uninstall-info-am \
-	uninstall-local
+.PHONY: all all-am check check-am clean clean-generic dist-hook \
+	distclean distclean-generic distdir dvi dvi-am html html-am \
+	info info-am install install-am install-data install-data-am \
+	install-data-hook install-data-local install-exec \
+	install-exec-am install-info install-info-am install-man \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \
+	uninstall-info-am uninstall-local
 
 
 omf: omf_timestamp
diff --git a/help/C/mail-notification-C.omf b/help/C/mail-notification-C.omf
@@ -12,9 +12,9 @@
       Mail Notification Manual
     </title>
     <date>
-      2004-10-06
+      2004-10-31
     </date>
-    <version identifier="2.6" date="2004-10-25" description="Seventh release"/>
+    <version identifier="2.7" date="2004-10-31" description="Eighth release"/>
     <subject category="GNOME|Internet"/>
     <description>
       Mail Notification Manual
diff --git a/help/C/mail-notification.xml b/help/C/mail-notification.xml
@@ -2,9 +2,9 @@
 <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
 "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
   <!ENTITY app "<application>Mail Notification</application>">
-  <!ENTITY appversion "0.7.1">
-  <!ENTITY manrevision "2.6">
-  <!ENTITY date "Monday, October 25, 2004">
+  <!ENTITY appversion "0.8.0">
+  <!ENTITY manrevision "2.7">
+  <!ENTITY date "Sunday, October 31, 2004">
 
   <!ENTITY project "The Mail Notification Project">
 
@@ -26,7 +26,7 @@
   <!ENTITY gnomevfs "<link linkend=&#34;gnomevfs&#34;>GnomeVFS</link>">
 ]>
 
-<!-- $Id: mail-notification.xml,v 1.66 2004/10/25 13:21:59 jylefort Exp $ -->
+<!-- $Id: mail-notification.xml,v 1.72 2004/10/31 17:38:57 jylefort Exp $ -->
 <!-- Mail Notification Manual -->
 
 <!-- Copyright (c) 2004 Jean-Yves Lefort -->
@@ -134,6 +134,17 @@
 	</revdescription>
       </revision>
       <revision>
+	<revnumber>Mail Notification Manual V2.6</revnumber>
+	<date>Monday, October 25, 2004</date>
+	<revdescription>
+	  <para role="author">
+	    Jean-Yves Lefort
+	    <email>jylefort@brutele.be</email>
+	  </para>
+	  <para role="publisher">&project;</para>
+	</revdescription>
+      </revision>
+      <revision>
 	<revnumber>Mail Notification Manual V2.5</revnumber>
 	<date>Wednesday, October 6, 2004</date>
 	<revdescription>
@@ -411,7 +422,8 @@
       <para>
 	Leaving your mouse over the icon will reveal more details
 	about the status of your mailboxes. Double-clicking on the
-	icon will display the <link linkend="mail-summary">Mail	Summary</link> dialog.
+	icon will perform the action specified in the
+	<link linkend="double-click-action">Double-click Action</link> setting.
       </para>
     </sect2>
   </sect1>
@@ -481,11 +493,25 @@
 	  <term><guilabel>Commands</guilabel></term>
 	  <listitem>
 	    <para>
-	      You can configure commands to be executed <guilabel>when new mail arrives</guilabel>
+	      You can specify a <guilabel>mail reader</guilabel>
+	      (which can be launched from various parts of &app;), as
+	      well as configure commands to be executed <guilabel>when new mail arrives</guilabel>
 	      and <guilabel>when all mail is read</guilabel>.
 	    </para>
 	  </listitem>
 	</varlistentry>
+	<varlistentry id="double-click-action">
+	  <term><guilabel>Double-click Action</guilabel></term>
+	  <listitem>
+	    <para>
+	      You can choose an action to be performed when the mail
+	      icon is double-clicked: <guilabel>display the mail summary dialog</guilabel>
+	      or <guilabel>launch the mail reader</guilabel>.
+	      The latter is only available if a mail reader is
+	      configured in the <link linkend="commands">Commands</link> properties.
+	    </para>
+	  </listitem>
+	</varlistentry>
       </variablelist>
     </sect2>
     
@@ -545,8 +571,8 @@
 		<term><guilabel>Enable mail summary popup</guilabel></term>
 		<listitem>
 		  <para>
-		    Whether to display the mail summary popup when new
-		    mail arrives or not.
+		    If this option is enabled, the mail summary popup
+		    will be displayed when new mail arrives.
 		    <note>
 		      <para>
 			The mail summary popup will not be displayed if the <link linkend="mail-summary">Mail Summary</link>
@@ -560,8 +586,9 @@
 		<term><guilabel>Automatically close after</guilabel></term>
 		<listitem>
 		  <para>
-		    Whether to automatically close the mail summary
-		    popup after a delay has elapsed or not.
+		    If this option is enabled, the mail summary popup
+		    will be automatically closed after a delay has
+		    elapsed.
 		    <note>
 		      <para>
 			The timer is restarted when new mail arrives.
@@ -570,6 +597,15 @@
 		  </para>
 		</listitem>
 	      </varlistentry>
+	      <varlistentry>
+		<term><guilabel>Only display recent mail</guilabel></term>
+		<listitem>
+		  <para>
+		    If this option is enabled, the mail summary popup
+		    will hide previously displayed mail.
+		  </para>
+		</listitem>
+	      </varlistentry>
 	    </variablelist>
 	  </listitem>
 	</varlistentry>
@@ -878,21 +914,49 @@
 	changes.
       </para>
       <para>
-	For immediate notification to be supported, &gnomevfs; must be compiled
-	with <ulink url="http://oss.sgi.com/projects/fam" type="http">FAM</ulink> support,
-	and FAM must be configured properly.
-      </para>
-      <para>
-	Refer to the
-	<citerefentry><refentrytitle>fam</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-	manual page for more details.
+	Requirements for immediate notification to be enabled:
       </para>
+      <variablelist>
+	<varlistentry>
+	  <term>&mbox;, &mh;, &maildir; and &sylpheed; mailboxes:</term>
+	  <listitem>
+	    <para>
+	      &gnomevfs; must be compiled
+	      with <ulink url="http://oss.sgi.com/projects/fam" type="http">FAM</ulink> support,
+	      and FAM must be configured properly.
+	    </para>
+	    <para>
+	      Refer to the
+	      <citerefentry><refentrytitle>fam</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+	      manual page for more details.
+	    </para>
+	  </listitem>
+	</varlistentry>
+	<varlistentry>
+	  <term>&imap; mailboxes:</term>
+	  <listitem>
+	    <para>
+	      The &imap; server must support the IDLE extension, as defined by
+	      <ulink url="http://www.ietf.org/rfc/rfc2177.txt" type="http">RFC 2177</ulink>.
+	    </para>
+	  </listitem>
+	</varlistentry>
+	<varlistentry>
+	  <term>&pop3; and &gmail; mailboxes:</term>
+	  <listitem>
+	    <para>
+	      Immediate notification is not supported.
+	    </para>
+	  </listitem>
+	</varlistentry>
+      </variablelist>
       <note>
 	<para>
-	  Immediate notification is only supported for local mailboxes.
-	  Mailboxes which do not support it will be checked periodically
-	  according to the <link linkend="delay-between-mail-checks">Delay between mail checks</link>
-	  setting.
+	  If immediate notification cannot be enabled for a mailbox
+	  (either because that type of mailbox does not support it or
+	  because the requirements are not met), the mailbox will be
+	  checked periodically according to the
+	  <link linkend="delay-between-mail-checks">Delay between mail checks</link> setting.
 	</para>
       </note>
     </sect2>
@@ -940,11 +1004,13 @@ endif</programlisting>
       <title>IMAP Implementation</title>
       <para>
 	The &app; &imap; implementation strictly conforms to
-	<ulink url="http://www.ietf.org/rfc/rfc3501.txt" type="http">RFC 3501</ulink>.
+	<ulink url="http://www.ietf.org/rfc/rfc3501.txt" type="http">RFC 3501</ulink>
+	and
+	<ulink url="http://www.ietf.org/rfc/rfc2177.txt" type="http">RFC 2177</ulink>.
       </para>
       <para>
 	The AUTHENTICATE and LOGIN authentication mechanisms are
-	supported.
+	supported, and the IDLE extension is implemented.
       </para>
       <para>
 	The authentication logic can be represented with the following
diff --git a/help/Makefile.in b/help/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.8.5 from Makefile.am.
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -36,9 +36,9 @@ POST_UNINSTALL = :
 subdir = help
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/openssl.m4 \
-	$(top_srcdir)/m4/sasl2.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
+am__aclocal_m4_deps = $(top_srcdir)/m4/intltool.m4 \
+	$(top_srcdir)/m4/openssl.m4 $(top_srcdir)/m4/sasl2.m4 \
+	$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
@@ -96,6 +96,7 @@ GNOME_LIBS = @GNOME_LIBS@
 GOB2 = @GOB2@
 GTK_CFLAGS = @GTK_CFLAGS@
 GTK_LIBS = @GTK_LIBS@
+ICONV = @ICONV@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -133,6 +134,7 @@ MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
 MAKEINFO = @MAKEINFO@
 MKINSTALLDIRS = @MKINSTALLDIRS@
 MSGFMT = @MSGFMT@
+MSGMERGE = @MSGMERGE@
 OBJEXT = @OBJEXT@
 OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
 OPENSSL_LIBS = @OPENSSL_LIBS@
@@ -193,6 +195,8 @@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
 bindir = @bindir@
 build_alias = @build_alias@
 datadir = @datadir@
@@ -395,15 +399,17 @@ distdir: $(DISTFILES)
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(SUBDIRS)'; for subdir in $$list; do \
+	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test -d "$(distdir)/$$subdir" \
-	    || mkdir "$(distdir)/$$subdir" \
+	    || $(mkdir_p) "$(distdir)/$$subdir" \
 	    || exit 1; \
+	    distdir=`$(am__cd) $(distdir) && pwd`; \
+	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
 	    (cd $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="../$(top_distdir)" \
-	        distdir="../$(distdir)/$$subdir" \
+	        top_distdir="$$top_distdir" \
+	        distdir="$$distdir/$$subdir" \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -432,7 +438,7 @@ mostlyclean-generic:
 clean-generic:
 
 distclean-generic:
-	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
diff --git a/intltool-extract.in b/intltool-extract.in
@@ -32,7 +32,7 @@
 ## Release information
 my $PROGRAM      = "intltool-extract";
 my $PACKAGE      = "intltool";
-my $VERSION      = "0.31";
+my $VERSION      = "0.31.3";
 
 ## Loaded modules
 use strict; 
@@ -266,11 +266,12 @@ sub type_keys {
 sub type_xml {
     ### For generic translatable XML files ###
         
-    while ($input =~ /\s_$w+\s*=\s*\"([^"]+)\"/sg) { # "
-        $messages{entity_decode_minimal($1)} = [];
+    while ($input =~ /(?:<!--([^>]*?)-->[^\n]*\n?[^\n]*)?\s_$w+\s*=\s*\"([^"]+)\"/sg) { # "
+        $messages{entity_decode_minimal($2)} = [];
+        $comments{entity_decode_minimal($2)} = $1 if (defined($1));
     }
 
-    while ($input =~ /(?:<!--([^>]*?)-->\s*)?<_($w+)(?: xml:space="($w+)")?>(.+?)<\/_\2>/sg) {
+    while ($input =~ /(?:<!--([^>]*?)-->\s*)?<_($w+)(?: xml:space="($w+)")?[^>]*>(.+?)<\/_\2>/sg) {
         $_ = $4;
         if (!defined($3) || $3 ne "preserve") {
             s/\s+/ /g;
diff --git a/intltool-merge.in b/intltool-merge.in
@@ -35,7 +35,7 @@
 ## Release information
 my $PROGRAM = "intltool-merge";
 my $PACKAGE = "intltool";
-my $VERSION = "0.31";
+my $VERSION = "0.31.3";
 
 ## Loaded modules
 use strict; 
@@ -91,7 +91,7 @@ my $OUTFILE;
 
 my %po_files_by_lang = ();
 my %translations = ();
-my $iconv = $ENV{"INTLTOOL_ICONV"} || "iconv";
+my $iconv = $ENV{"ICONV"} || $ENV{"INTLTOOL_ICONV"} || "@INTLTOOL_ICONV@";
 
 # Use this instead of \w for XML files to handle more possible characters.
 my $w = "[-A-Za-z0-9._:]";
diff --git a/intltool-update.in b/intltool-update.in
@@ -30,7 +30,7 @@
 
 ## Release information
 my $PROGRAM = "intltool-update";
-my $VERSION = "0.31";
+my $VERSION = "0.31.3";
 my $PACKAGE = "intltool";
 
 ## Loaded modules
@@ -525,7 +525,7 @@ sub Console_WriteError_InvalidOption
 
 sub GenerateHeaders
 {
-    my $EXTRACT = `which intltool-extract 2>/dev/null`;
+    my $EXTRACT = "@INTLTOOL_EXTRACT@";
     chomp $EXTRACT;
 
     $EXTRACT = $ENV{"INTLTOOL_EXTRACT"} if $ENV{"INTLTOOL_EXTRACT"};
@@ -579,13 +579,10 @@ sub GenerateHeaders
 #
 sub GeneratePOTemplate
 {
-    my $XGETTEXT = `which xgettext 2>/dev/null`;
-    my $XGETTEXT_ARGS = '';
+    my $XGETTEXT = $ENV{"XGETTEXT"} || "@INTLTOOL_XGETTEXT@";
+    my $XGETTEXT_ARGS = $ENV{"XGETTEXT_ARGS"} || '';
     chomp $XGETTEXT;
 
-    $XGETTEXT = $ENV{"XGETTEXT"} if $ENV{"XGETTEXT"};
-    $XGETTEXT_ARGS = $ENV{"XGETTEXT_ARGS"} if $ENV{"XGETTEXT_ARGS"};
-
     if (! -x $XGETTEXT)
     {
 	print STDERR " *** xgettext is not found on this system!\n".
@@ -597,7 +594,7 @@ sub GeneratePOTemplate
 
     open INFILE, $POTFILES_in;
     unlink "POTFILES.in.temp";
-    open OUTFILE, ">POTFILES.in.temp";
+    open OUTFILE, ">POTFILES.in.temp" or die("Cannot open POTFILES.in.temp for writing");
 
     my $gettext_support_nonascii = 0;
 
@@ -753,6 +750,7 @@ sub POFile_Update
 {
     -f "$MODULE.pot" or die "$PROGRAM: $MODULE.pot does not exist.\n";
 
+    my $MSGMERGE = $ENV{"MSGMERGE"} || "@INTLTOOL_MSGMERGE@";
     my ($lang, $outfile) = @_;
 
     print "Merging $lang.po with $MODULE.pot..." if $VERBOSE;
@@ -761,7 +759,7 @@ sub POFile_Update
     $outfile = "$lang.po" if ($outfile eq "");
 
     # I think msgmerge won't overwrite old file if merge is not successful
-    system ("msgmerge", "-o", $outfile, $infile, "$MODULE.pot");
+    system ("$MSGMERGE", "-o", $outfile, $infile, "$MODULE.pot");
 }
 
 sub Console_WriteError_NotExisting
@@ -795,14 +793,17 @@ sub POFile_GetLanguage ($)
 sub Console_Write_TranslationStatus
 {
     my ($lang, $output_file) = @_;
+    my $MSGFMT = $ENV{"MSGFMT"} || "@INTLTOOL_MSGFMT@";
 
     $output_file = "$lang.po" if ($output_file eq "");
 
-    system ("msgfmt", "-o", "/dev/null", "--statistics", $output_file);
+    system ("$MSGFMT", "-o", "/dev/null", "--statistics", $output_file);
 }
 
 sub Console_Write_CoverageReport
 {
+    my $MSGFMT = $ENV{"MSGFMT"} || "@INTLTOOL_MSGFMT@";
+
     &GatherPOFiles;
 
     foreach my $lang (@languages) 
@@ -816,7 +817,7 @@ sub Console_Write_CoverageReport
     foreach my $lang (@languages)
     {
 	print "$lang: ";
-	system ("msgfmt", "-o", "/dev/null", "--statistics", "$lang.po");
+	system ("$MSGFMT", "-o", "/dev/null", "--statistics", "$lang.po");
     }
 }
 
@@ -833,7 +834,7 @@ sub SubstituteVariable
     {
 	if (/^(\w+)=(.*)$/)
 	{
-	    ($varhash{$1} = $2) =~  s/^["'](.*)["']$/$1)/;
+	    ($varhash{$1} = $2) =~  s/^["'](.*)["']$/$1/;
 	}
     }
     
@@ -845,7 +846,10 @@ sub SubstituteVariable
 	
 	return SubstituteVariable ("$untouched$sub$rest");
     }
-    return $str;
+    
+    # We're using Perl backticks ` and "echo -n" here in order to 
+    # expand any shell escapes (such as backticks themselves) in every variable
+    return `echo -n "$str"`;
 }
 
 sub CONF_Handle_Open
@@ -954,19 +958,23 @@ sub FindPackageName
     if ($conf_source =~ /^AM_INIT_AUTOMAKE\(([^,\)]+),([^,\)]+)/m)
     {
 	($name, $version) = ($1, $2);
-	($varhash{"AC_PACKAGE_NAME"} = $name) =~ s/[\[\]\s]//g;
-	($varhash{"PACKAGE"} = $name) =~ s/[\[\]\s]//g;
-	($varhash{"AC_PACKAGE_VERSION"} = $version) =~ s/[\[\]\s]//g;
- 	($varhash{"VERSION"} = $version) =~ s/[\[\]\s]//g;
-   }
+	$name    =~ s/[\[\]\s]//g;
+	$version =~ s/[\[\]\s]//g;
+	$varhash{"AC_PACKAGE_NAME"} = $name;
+	$varhash{"PACKAGE"} = $name;
+	$varhash{"AC_PACKAGE_VERSION"} = $version;
+	$varhash{"VERSION"} = $version;
+    }
     
     if ($conf_source =~ /^AC_INIT\(([^,\)]+),([^,\)]+)/m) 
     {
 	($name, $version) = ($1, $2);
-	($varhash{"AC_PACKAGE_NAME"} = $name) =~ s/[\[\]\s]//g;
-	($varhash{"PACKAGE"} = $name) =~ s/[\[\]\s]//g;
-	($varhash{"AC_PACKAGE_VERSION"} = $version) =~ s/[\[\]\s]//g;
- 	($varhash{"VERSION"} = $version) =~ s/[\[\]\s]//g;
+	$name    =~ s/[\[\]\s]//g;
+	$version =~ s/[\[\]\s]//g;
+	$varhash{"AC_PACKAGE_NAME"} = $name;
+	$varhash{"PACKAGE"} = $name;
+	$varhash{"AC_PACKAGE_VERSION"} = $version;
+	$varhash{"VERSION"} = $version;
     }
 
     # \s makes this not work, why?
@@ -1018,7 +1026,7 @@ sub FindMakevarsDomain
 	close IN;
     }
 
-    $domain = $1 if $makevars_source =~ /^DOMAIN[ ]*=\[?([^\n\]]+)/m;
+    $domain = $1 if $makevars_source =~ /^DOMAIN[ ]*=\[?([^\n\]\$]+)/m;
     $domain =~ s/^\s+//;
     $domain =~ s/\s+$//;
     
diff --git a/m4/Makefile.in b/m4/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.8.5 from Makefile.am.
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -36,9 +36,9 @@ POST_UNINSTALL = :
 subdir = m4
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/openssl.m4 \
-	$(top_srcdir)/m4/sasl2.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
+am__aclocal_m4_deps = $(top_srcdir)/m4/intltool.m4 \
+	$(top_srcdir)/m4/openssl.m4 $(top_srcdir)/m4/sasl2.m4 \
+	$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
@@ -87,6 +87,7 @@ GNOME_LIBS = @GNOME_LIBS@
 GOB2 = @GOB2@
 GTK_CFLAGS = @GTK_CFLAGS@
 GTK_LIBS = @GTK_LIBS@
+ICONV = @ICONV@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -124,6 +125,7 @@ MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
 MAKEINFO = @MAKEINFO@
 MKINSTALLDIRS = @MKINSTALLDIRS@
 MSGFMT = @MSGFMT@
+MSGMERGE = @MSGMERGE@
 OBJEXT = @OBJEXT@
 OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
 OPENSSL_LIBS = @OPENSSL_LIBS@
@@ -184,6 +186,8 @@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
 bindir = @bindir@
 build_alias = @build_alias@
 datadir = @datadir@
@@ -295,7 +299,7 @@ mostlyclean-generic:
 clean-generic:
 
 distclean-generic:
-	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
diff --git a/m4/intltool.m4 b/m4/intltool.m4
@@ -0,0 +1,179 @@
+## intltool.m4 - Configure intltool for the target system. -*-Shell-script-*-
+## Copyright (C) 2001 Eazel, Inc.
+## Author: Maciej Stachowiak <mjs@noisehavoc.org>
+##         Kenneth Christiansen <kenneth@gnu.org>
+##
+## 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.
+##
+## As a special exception to the GNU General Public License, if you
+## distribute this file as part of a program that contains a
+## configuration script generated by Autoconf, you may include it under
+## the same distribution terms that you use for the rest of that program.
+
+dnl AC_PROG_INTLTOOL([MINIMUM-VERSION], [no-xml])
+# serial 1 AC_PROG_INTLTOOL
+AC_DEFUN([AC_PROG_INTLTOOL],
+[
+
+if test -n "$1"; then
+    AC_MSG_CHECKING(for intltool >= $1)
+
+    INTLTOOL_REQUIRED_VERSION_AS_INT=`echo $1 | awk -F. '{ printf "%d", $[1] * 100 + $[2]; }'`
+    INTLTOOL_APPLIED_VERSION=`awk -F\" '/\\$VERSION / { printf $[2]; }'  < ${ac_aux_dir}/intltool-update.in`
+    changequote({{,}})
+    INTLTOOL_APPLIED_VERSION_AS_INT=`awk -F\" '/\\$VERSION / { split(${{2}}, VERSION, "."); printf "%d\n", VERSION[1] * 100 + VERSION[2];}' < ${ac_aux_dir}/intltool-update.in`
+    changequote([,])
+
+    if test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT"; then
+	AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found])
+    else
+	AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found. Your intltool is too old.  You need intltool $1 or later.])
+	exit 1
+    fi
+fi
+
+  INTLTOOL_DESKTOP_RULE='%.desktop:   %.desktop.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+     INTLTOOL_KEYS_RULE='%.keys:      %.keys.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+     INTLTOOL_PROP_RULE='%.prop:      %.prop.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+      INTLTOOL_OAF_RULE='%.oaf:       %.oaf.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< [$]@'
+     INTLTOOL_PONG_RULE='%.pong:      %.pong.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+   INTLTOOL_SERVER_RULE='%.server:    %.server.in    $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+    INTLTOOL_SHEET_RULE='%.sheet:     %.sheet.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+       INTLTOOL_UI_RULE='%.ui:        %.ui.in        $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+      INTLTOOL_XML_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+      INTLTOOL_XAM_RULE='%.xam:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+      INTLTOOL_KBD_RULE='%.kbd:       %.kbd.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+    INTLTOOL_CAVES_RULE='%.caves:     %.caves.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+  INTLTOOL_SCHEMAS_RULE='%.schemas:   %.schemas.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+    INTLTOOL_THEME_RULE='%.theme:     %.theme.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+
+AC_SUBST(INTLTOOL_DESKTOP_RULE)
+AC_SUBST(INTLTOOL_DIRECTORY_RULE)
+AC_SUBST(INTLTOOL_KEYS_RULE)
+AC_SUBST(INTLTOOL_PROP_RULE)
+AC_SUBST(INTLTOOL_OAF_RULE)
+AC_SUBST(INTLTOOL_PONG_RULE)
+AC_SUBST(INTLTOOL_SERVER_RULE)
+AC_SUBST(INTLTOOL_SHEET_RULE)
+AC_SUBST(INTLTOOL_SOUNDLIST_RULE)
+AC_SUBST(INTLTOOL_UI_RULE)
+AC_SUBST(INTLTOOL_XAM_RULE)
+AC_SUBST(INTLTOOL_KBD_RULE)
+AC_SUBST(INTLTOOL_XML_RULE)
+AC_SUBST(INTLTOOL_CAVES_RULE)
+AC_SUBST(INTLTOOL_SCHEMAS_RULE)
+AC_SUBST(INTLTOOL_THEME_RULE)
+
+# Use the tools built into the package, not the ones that are installed.
+
+INTLTOOL_EXTRACT='$(top_builddir)/intltool-extract'
+INTLTOOL_MERGE='$(top_builddir)/intltool-merge'
+INTLTOOL_UPDATE='$(top_builddir)/intltool-update'
+
+AC_SUBST(INTLTOOL_EXTRACT)
+AC_SUBST(INTLTOOL_MERGE)
+AC_SUBST(INTLTOOL_UPDATE)
+
+AC_PATH_PROG(INTLTOOL_PERL, perl)
+if test -z "$INTLTOOL_PERL"; then
+   AC_MSG_ERROR([perl not found; required for intltool])
+fi
+if test -z "`$INTLTOOL_PERL -v | fgrep '5.' 2> /dev/null`"; then
+   AC_MSG_ERROR([perl 5.x required for intltool])
+fi
+if test "x$2" != "xno-xml"; then
+   AC_MSG_CHECKING([for XML::Parser])
+   if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then
+       AC_MSG_RESULT([ok])
+   else
+       AC_MSG_ERROR([XML::Parser perl module is required for intltool])
+   fi
+fi
+
+AC_PATH_PROG(ICONV, iconv, iconv)
+AC_PATH_PROG(MSGFMT, msgfmt, msgfmt)
+AC_PATH_PROG(MSGMERGE, msgmerge, msgmerge)
+AC_PATH_PROG(XGETTEXT, xgettext, xgettext)
+
+# Remove file type tags (using []) from po/POTFILES.
+
+ifdef([AC_DIVERSION_ICMDS],[
+  AC_DIVERT_PUSH(AC_DIVERSION_ICMDS)
+      changequote(,)
+      mv -f po/POTFILES po/POTFILES.tmp
+      sed -e '/\[encoding.*\]/d' -e 's/\[.*\] *//' < po/POTFILES.tmp > po/POTFILES
+      rm -f po/POTFILES.tmp
+      changequote([,])
+  AC_DIVERT_POP()
+],[
+  ifdef([AC_CONFIG_COMMANDS_PRE],[
+    AC_CONFIG_COMMANDS_PRE([
+        changequote(,)
+        mv -f po/POTFILES po/POTFILES.tmp
+        sed -e '/\[encoding.*\]/d' -e 's/\[.*\] *//' < po/POTFILES.tmp > po/POTFILES
+        rm -f po/POTFILES.tmp
+        changequote([,])
+    ])
+  ])
+])
+
+# Manually sed perl in so people don't have to put the intltool scripts in AC_OUTPUT.
+
+AC_CONFIG_COMMANDS([intltool], [
+
+intltool_edit="-e 's:@INTLTOOL_EXTRACT@:`pwd`/intltool-extract:g' \
+               -e 's:@INTLTOOL_ICONV@:${ICONV}:g' \
+               -e 's:@INTLTOOL_MSGFMT@:${MSGFMT}:g' \
+               -e 's:@INTLTOOL_MSGMERGE@:${MSGMERGE}:g' \
+               -e 's:@INTLTOOL_XGETTEXT@:${XGETTEXT}:g' \
+               -e 's:@INTLTOOL_PERL@:${INTLTOOL_PERL}:g'"
+
+eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-extract.in \
+  > intltool-extract.out
+if cmp -s intltool-extract intltool-extract.out 2>/dev/null; then
+  rm -f intltool-extract.out
+else
+  mv -f intltool-extract.out intltool-extract
+fi
+chmod ugo+x intltool-extract
+chmod u+w intltool-extract
+
+eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-merge.in \
+  > intltool-merge.out
+if cmp -s intltool-merge intltool-merge.out 2>/dev/null; then
+  rm -f intltool-merge.out
+else
+  mv -f intltool-merge.out intltool-merge
+fi
+chmod ugo+x intltool-merge
+chmod u+w intltool-merge
+
+eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-update.in \
+  > intltool-update.out
+if cmp -s intltool-update intltool-update.out 2>/dev/null; then
+  rm -f intltool-update.out
+else
+  mv -f intltool-update.out intltool-update
+fi
+chmod ugo+x intltool-update
+chmod u+w intltool-update
+
+], INTLTOOL_PERL='${INTLTOOL_PERL}' ac_aux_dir=${ac_aux_dir}
+INTLTOOL_EXTRACT='${INTLTOOL_EXTRACT}' ICONV='${ICONV}'
+MSGFMT='${MSGFMT}' MSGMERGE='${MSGMERGE}' XGETTEXT='${XGETTEXT}')
+
+])
diff --git a/po/POTFILES.in b/po/POTFILES.in
@@ -37,7 +37,7 @@ src/mn-main.c
 src/mn-mbox-mailbox.gob
 src/mn-md5.c
 src/mn-md5.h
-src/mn-message-label.gob
+src/mn-message-box.gob
 src/mn-message-mime.c
 src/mn-message-mime.h
 src/mn-message.gob
@@ -67,6 +67,7 @@ src/mn-summary.c
 src/mn-summary.h
 src/mn-sylpheed-mailbox.gob
 src/mn-system-mailbox-properties.gob
+src/mn-tooltips.gob
 src/mn-unsupported-mailbox.gob
 src/mn-uri.gob
 src/mn-util.c
diff --git a/po/bg.gmo b/po/bg.gmo
Binary files differ.
diff --git a/po/bg.po b/po/bg.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gnome in bulgarian 0.6.2\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2004-10-25 15:26+0200\n"
+"POT-Creation-Date: 2004-10-31 18:42+0100\n"
 "PO-Revision-Date: 2004-10-05 16:13+0200\n"
 "Last-Translator: Vladimir \"Kaladan\" Petkov <vpetkov@i-space.org>\n"
 "Language-Team: Bulgarian <bg@li.org>\n"
@@ -34,7 +34,7 @@ msgstr "Настройване на известяването за поща"
 #: data/mail-notification-properties.desktop.in.h:2
 #: data/mail-notification.desktop.in.h:2
 #: data/mail-notification.soundlist.in.h:1 src/mn-about-dialog.gob:40
-#: src/mn-mail-icon.gob:163 src/mn-main.c:271
+#: src/mn-mail-icon.gob:194 src/mn-main.c:271
 msgid "Mail Notification"
 msgstr "Известяване за поща"
 
@@ -63,196 +63,236 @@ msgid "Do not show the immediate notification error dialog"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:6
+#, fuzzy
+msgid "Double-click action"
+msgstr "Команда при двойна натискане"
+
+#: data/mail-notification.schemas.in.h:7
 msgid "Enable mail summary popup"
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:7
+#: data/mail-notification.schemas.in.h:8
 msgid "Fingerprints of trusted X509 certificates"
 msgstr "Пръстови отпечатъци на проверени X509 сертификати"
 
-#: data/mail-notification.schemas.in.h:8
+#: data/mail-notification.schemas.in.h:9
 msgid "Has already been run"
 msgstr "Вече е стартиран"
 
-#: data/mail-notification.schemas.in.h:9
+#: data/mail-notification.schemas.in.h:10
 #, fuzzy
 msgid "Height of mail summary dialog"
 msgstr "Височина на диалоговия прозорец за настройките"
 
-#: data/mail-notification.schemas.in.h:10
+#: data/mail-notification.schemas.in.h:11
 msgid "Height of properties dialog"
 msgstr "Височина на диалоговия прозорец за настройките"
 
-#: data/mail-notification.schemas.in.h:11
+#: data/mail-notification.schemas.in.h:12
 #, fuzzy
 msgid "Mail read command"
 msgstr "Нова команда за поща"
 
-#: data/mail-notification.schemas.in.h:12
+#: data/mail-notification.schemas.in.h:13
+#, fuzzy
+msgid "Mail reader command"
+msgstr "Нова команда за поща"
+
+#: data/mail-notification.schemas.in.h:14
 msgid "Mail summary popup horizontal offset"
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:13
+#: data/mail-notification.schemas.in.h:15
 msgid "Mail summary popup position"
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:14
+#: data/mail-notification.schemas.in.h:16
 msgid "Mail summary popup vertical offset"
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:15
+#: data/mail-notification.schemas.in.h:17
 #, fuzzy
 msgid "Mailbox list"
 msgstr "Списък на пощенските кутии"
 
-#: data/mail-notification.schemas.in.h:16
+#: data/mail-notification.schemas.in.h:18
 msgid "Minutes between mail checks"
 msgstr "Минути между проверките"
 
-#: data/mail-notification.schemas.in.h:17
+#: data/mail-notification.schemas.in.h:19
 msgid "Minutes to wait before closing the mail summary popup"
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:18
+#: data/mail-notification.schemas.in.h:20
 msgid "New mail command"
 msgstr "Нова команда за поща"
 
-#: data/mail-notification.schemas.in.h:19
+#: data/mail-notification.schemas.in.h:21
+msgid "Only display recent mail in mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:22
 #, fuzzy
 msgid "Run a command when all mail is read"
 msgstr "Стартиране на команда при пристигането на нова поща"
 
-#: data/mail-notification.schemas.in.h:20
+#: data/mail-notification.schemas.in.h:23
 msgid "Run a command when new mail arrives"
 msgstr "Стартиране на команда при пристигането на нова поща"
 
-#: data/mail-notification.schemas.in.h:21
+#: data/mail-notification.schemas.in.h:24
 msgid "Seconds between mail checks"
 msgstr "Секунди между проверките за поща"
 
-#: data/mail-notification.schemas.in.h:22
+#: data/mail-notification.schemas.in.h:25
 msgid "Seconds to wait before closing the mail summary popup"
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:23
+#: data/mail-notification.schemas.in.h:26
+#, fuzzy
+msgid "Set a mail reader"
+msgstr "Избор на файл или папка"
+
+#: data/mail-notification.schemas.in.h:27
+msgid ""
+"The action to perform when the icon is double-clicked. Must be \"display-"
+"mail-summary\" or \"launch-mail-reader\"."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:28
 #, fuzzy
 msgid ""
 "The amount of time to wait before closing the mail summary popup (minutes "
 "part)."
 msgstr "Времевият интервал за изчакване между проверките за нова поща"
 
-#: data/mail-notification.schemas.in.h:24
+#: data/mail-notification.schemas.in.h:29
 #, fuzzy
 msgid ""
 "The amount of time to wait before closing the mail summary popup (seconds "
 "part)."
 msgstr "Времевият интервал за изчакване между проверките за нова поща"
 
-#: data/mail-notification.schemas.in.h:25
+#: data/mail-notification.schemas.in.h:30
+#, fuzzy
+msgid "The command to run to launch the mail reader."
+msgstr "Командата, която да се стартира при пристигането на нова поща."
+
+#: data/mail-notification.schemas.in.h:31
 #, fuzzy
 msgid "The command to run when all mail is read."
 msgstr "Командата, която да се стартира при пристигането на нова поща."
 
-#: data/mail-notification.schemas.in.h:26
+#: data/mail-notification.schemas.in.h:32
 msgid "The command to run when new mail arrives."
 msgstr "Командата, която да се стартира при пристигането на нова поща."
 
-#: data/mail-notification.schemas.in.h:27
+#: data/mail-notification.schemas.in.h:33
 #, fuzzy
 msgid "The height of the mail summary dialog in pixels."
 msgstr "Височината в пиксели на диалоговия прозорец за настройките."
 
-#: data/mail-notification.schemas.in.h:28
+#: data/mail-notification.schemas.in.h:34
 msgid "The height of the properties dialog in pixels."
 msgstr "Височината в пиксели на диалоговия прозорец за настройките."
 
-#: data/mail-notification.schemas.in.h:29
+#: data/mail-notification.schemas.in.h:35
 msgid "The list of mailboxes to monitor."
 msgstr "Списъкът на пощенските кутии за следене."
 
-#: data/mail-notification.schemas.in.h:30
+#: data/mail-notification.schemas.in.h:36
 msgid ""
 "The list of trusted SSL/TLS servers (hostname:port) lacking a X509 "
 "certificate."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:31
+#: data/mail-notification.schemas.in.h:37
 msgid ""
 "The list of trusted X509 certificates, represented by their MD5 fingerprint."
 msgstr ""
 "Списъкът на проверените сертификати тип X509, представени от техните "
 "пръстови отпечатъци в MD5 формат."
 
-#: data/mail-notification.schemas.in.h:32
+#: data/mail-notification.schemas.in.h:38
 msgid ""
 "The number of pixels to leave between the left or right side of the screen "
 "and the mail summary popup."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:33
+#: data/mail-notification.schemas.in.h:39
 msgid ""
 "The number of pixels to leave between the top or bottom side of the screen "
 "and the mail summary popup."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:34
+#: data/mail-notification.schemas.in.h:40
 msgid ""
 "The position of the mail summary popup. Must be \"top-left\", \"top-right\", "
 "\"bottom-left\" or \"bottom-right\"."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:35
+#: data/mail-notification.schemas.in.h:41
 #, fuzzy
 msgid "The width of the mail summary dialog in pixels."
 msgstr "Ширината на диалоговия прозорец за настройките в пиксели."
 
-#: data/mail-notification.schemas.in.h:36
+#: data/mail-notification.schemas.in.h:42
 msgid "The width of the properties dialog in pixels."
 msgstr "Ширината на диалоговия прозорец за настройките в пиксели."
 
-#: data/mail-notification.schemas.in.h:37
+#: data/mail-notification.schemas.in.h:43
 msgid "Trusted servers list"
 msgstr "Списък на проверените сървъри"
 
-#: data/mail-notification.schemas.in.h:38
+#: data/mail-notification.schemas.in.h:44
 msgid "Whether Mail Notification has already been run or not."
 msgstr "Дали известяването за поща вече е стартирано или не."
 
-#: data/mail-notification.schemas.in.h:39
+#: data/mail-notification.schemas.in.h:45
 msgid "Whether the status icon should blink on errors or not."
 msgstr "Дали иконата за състоянието да мига при грешки или не"
 
-#: data/mail-notification.schemas.in.h:40
+#: data/mail-notification.schemas.in.h:46
 #, fuzzy
 msgid "Whether to automatically close the mail summary popup or not."
 msgstr "Дали да се стартира команда при пристигането на нова поща или не"
 
-#: data/mail-notification.schemas.in.h:41
+#: data/mail-notification.schemas.in.h:47
 #, fuzzy
 msgid "Whether to display the mail summary popup when new mail arrives or not."
 msgstr "Дали да се стартира команда при пристигането на нова поща или не"
 
-#: data/mail-notification.schemas.in.h:42
+#: data/mail-notification.schemas.in.h:48
+msgid ""
+"Whether to hide previously displayed mail in the mail summary popup or not."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:49
 msgid ""
 "Whether to prevent the immediate notification error dialog from being "
 "displayed or not."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:43
+#: data/mail-notification.schemas.in.h:50
 #, fuzzy
 msgid "Whether to run a command when all mail is read or not."
 msgstr "Дали да се стартира команда при пристигането на нова поща или не"
 
-#: data/mail-notification.schemas.in.h:44
+#: data/mail-notification.schemas.in.h:51
 msgid "Whether to run a command when new mail arrives or not."
 msgstr "Дали да се стартира команда при пристигането на нова поща или не"
 
-#: data/mail-notification.schemas.in.h:45
+#: data/mail-notification.schemas.in.h:52
+#, fuzzy
+msgid "Whether to set a mail reader or not."
+msgstr "Дали известяването за поща вече е стартирано или не."
+
+#: data/mail-notification.schemas.in.h:53
 #, fuzzy
 msgid "Width of mail summary dialog"
 msgstr "Ширина на диалоговия прозорец за настройките"
 
-#: data/mail-notification.schemas.in.h:46
+#: data/mail-notification.schemas.in.h:54
 msgid "Width of properties dialog"
 msgstr "Ширина на диалоговия прозорец за настройките"
 
@@ -434,127 +474,127 @@ msgstr ""
 msgid "unable to parse response \"%s\""
 msgstr "неуспех при преглед на отговор \"%s\""
 
-#: src/mn-client-session.c:592 src/mn-client-session.c:599
+#: src/mn-client-session.c:601 src/mn-client-session.c:608
 #, c-format
 msgid "unable to read from server: %s"
 msgstr "неуспех при четенето от сървър: %s"
 
-#: src/mn-client-session.c:597
+#: src/mn-client-session.c:606
 msgid "unable to read from server: EOF"
 msgstr "неуспех при четенето от сървър: EOF"
 
-#: src/mn-client-session.c:609
+#: src/mn-client-session.c:618
 #, c-format
 msgid "unable to decode data using SASL: %s"
 msgstr ""
 
-#: src/mn-client-session.c:746
+#: src/mn-client-session.c:755
 #, c-format
 msgid "unable to encode data using SASL: %s"
 msgstr ""
 
-#: src/mn-client-session.c:777 src/mn-client-session.c:784
+#: src/mn-client-session.c:786 src/mn-client-session.c:793
 #, c-format
 msgid "unable to write to server: %s"
 msgstr "неуспех при записването на сървър: %s"
 
-#: src/mn-client-session.c:782
+#: src/mn-client-session.c:791
 msgid "unable to write to server: EOF"
 msgstr "неуспех при записването на сървър: EOF"
 
-#: src/mn-client-session.c:814
+#: src/mn-client-session.c:823
 #, c-format
 msgid "unable to encode Base64: %s"
 msgstr ""
 
-#: src/mn-client-session.c:917
+#: src/mn-client-session.c:927
 #, c-format
 msgid "unable to initialize the SASL library: %s"
 msgstr ""
 
-#: src/mn-client-session.c:926
+#: src/mn-client-session.c:936
 #, c-format
 msgid "unable to retrieve local address of socket: %s"
 msgstr ""
 
-#: src/mn-client-session.c:932
+#: src/mn-client-session.c:942
 #, c-format
 msgid "unable to retrieve remote address of socket: %s"
 msgstr ""
 
-#: src/mn-client-session.c:966
+#: src/mn-client-session.c:976
 #, c-format
 msgid "warning: unable to set SASL security properties: %s"
 msgstr ""
 
-#: src/mn-client-session.c:1005
+#: src/mn-client-session.c:1015
 msgid ""
 "unable to start SASL authentication: SASL asked for something we did not know"
 msgstr ""
 
-#: src/mn-client-session.c:1009
+#: src/mn-client-session.c:1019
 #, c-format
 msgid "unable to start SASL authentication: %s"
 msgstr ""
 
-#: src/mn-client-session.c:1013
+#: src/mn-client-session.c:1023
 #, c-format
 msgid "unable to create a SASL connection: %s"
 msgstr ""
 
-#: src/mn-client-session.c:1063
+#: src/mn-client-session.c:1073
 msgid "SASL asked for something we did not know, aborting SASL authentication"
 msgstr ""
 
-#: src/mn-client-session.c:1067
+#: src/mn-client-session.c:1077
 #, c-format
 msgid "%s, aborting SASL authentication"
 msgstr ""
 
 #. compliance error
-#: src/mn-client-session.c:1072
+#: src/mn-client-session.c:1082
 #, c-format
 msgid "unable to decode Base64 input from server: %s"
 msgstr ""
 
-#: src/mn-client-session.c:1075
+#: src/mn-client-session.c:1085
 msgid ""
 "the server sent a SASL challenge, but there was a pending initial SASL "
 "client response"
 msgstr ""
 
-#: src/mn-client-session.c:1089
+#: src/mn-client-session.c:1099
 msgid ""
 "the server did not send a SASL challenge, but there was no pending initial "
 "SASL client response"
 msgstr ""
 
-#: src/mn-client-session.c:1112
+#: src/mn-client-session.c:1122
 #, c-format
 msgid "a SASL security layer of strength factor %i is now active"
 msgstr ""
 
 #. a security layer is active but we can't retrieve maxoutbuf -> fatal
-#: src/mn-client-session.c:1117
+#: src/mn-client-session.c:1127
 #, c-format
 msgid "unable to get SASL_MAXOUTBUF property: %s"
 msgstr ""
 
-#: src/mn-client-session.c:1123
+#: src/mn-client-session.c:1133
 #, c-format
 msgid "warning: unable to get SASL_SSF property: %s"
 msgstr ""
 
-#: src/mn-conf.c:123
+#: src/mn-conf.c:136
 #, c-format
 msgid "recursively unsetting %s"
 msgstr ""
 
-#: src/mn-conf.c:127
+#: src/mn-conf.c:140
 msgid "syncing the GConf database"
 msgstr "синхронизиране на базата данни на GConf"
 
-#: src/mn-conf.c:130
+#: src/mn-conf.c:143
 msgid "completed"
 msgstr "завършено"
 
@@ -568,33 +608,33 @@ msgid ""
 "when needed)"
 msgstr ""
 
-#: src/mn-gmail-mailbox.gob:63
+#: src/mn-gmail-mailbox.gob:81
 msgid "libsoup has not been compiled with SSL/TLS support"
 msgstr ""
 
-#: src/mn-gmail-mailbox.gob:105
+#: src/mn-gmail-mailbox.gob:123
 #, fuzzy, c-format
 msgid "unable to parse URI \"%s\""
 msgstr "неуспех при преглед на отговор \"%s\""
 
-#: src/mn-gmail-mailbox.gob:159
+#: src/mn-gmail-mailbox.gob:177
 #, c-format
 msgid "unable to transfer data: %s"
 msgstr "неуспех при пренасянето на данни: %s"
 
-#: src/mn-gmail-mailbox.gob:280
+#: src/mn-gmail-mailbox.gob:298
 msgid "logging in"
 msgstr "влизане"
 
-#: src/mn-gmail-mailbox.gob:358
+#: src/mn-gmail-mailbox.gob:376
 msgid "login failed"
 msgstr "влизането е неуспешно"
 
-#: src/mn-gmail-mailbox.gob:433
+#: src/mn-gmail-mailbox.gob:451
 msgid "searching for unread mail"
 msgstr "търсене за непрочетена поща"
 
-#: src/mn-gmail-mailbox.gob:529
+#: src/mn-gmail-mailbox.gob:490
 msgid "unable to parse Gmail data"
 msgstr "неуспех при прегледа на данни от Gmail"
 
@@ -658,76 +698,80 @@ msgstr "Номера на порта на IMAP сървъра"
 msgid "The mailbox name"
 msgstr "Име на пощенската кутия"
 
-#: src/mn-imap-mailbox.gob:133 src/mn-pop3-mailbox.gob:142
+#: src/mn-imap-mailbox.gob:164 src/mn-pop3-mailbox.gob:142
 msgid "SSL/TLS support has not been compiled in"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:204
+#: src/mn-imap-mailbox.gob:253
 msgid "server did not send capabilities"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:319
+#: src/mn-imap-mailbox.gob:374
 msgid "server advertised LOGINDISABLED, not using LOGIN authentication"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:320
+#: src/mn-imap-mailbox.gob:375
 msgid "unable to login"
 msgstr "неуспех при влизането"
 
 #. compliance error
-#: src/mn-imap-mailbox.gob:451
+#: src/mn-imap-mailbox.gob:516
 #, fuzzy
 msgid "server did not send search results"
 msgstr "сървърът не изпраща състоянието"
 
 #. compliance error
-#: src/mn-imap-mailbox.gob:527
+#: src/mn-imap-mailbox.gob:596
 #, fuzzy
 msgid "server did not send all the messages we requested"
 msgstr "сървърът не изпраща състоянието"
 
-#: src/mn-imap-mailbox.gob:574
+#: src/mn-imap-mailbox.gob:645
 #, fuzzy
 msgid "unable to fetch message"
 msgstr "неуспех при свързването: %s"
 
 #. compliance error
-#: src/mn-imap-mailbox.gob:621
+#: src/mn-imap-mailbox.gob:763
 msgid "server did not send status"
 msgstr "сървърът не изпраща състоянието"
 
-#: src/mn-imap-mailbox.gob:856 src/mn-pop3-mailbox.gob:913
+#: src/mn-imap-mailbox.gob:1035 src/mn-pop3-mailbox.gob:922
 msgid "unknown server error"
 msgstr "неизвестна грешка в сървъра"
 
-#: src/mn-imap-mailbox.gob:927 src/mn-pop3-mailbox.gob:226
+#: src/mn-imap-mailbox.gob:1106 src/mn-pop3-mailbox.gob:226
 msgid "server does not support in-band SSL/TLS"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:946 src/mn-pop3-mailbox.gob:832
+#: src/mn-imap-mailbox.gob:1125 src/mn-pop3-mailbox.gob:841
 msgid ""
 "a SASL authentication mechanism was selected but SASL support has not been "
 "compiled in"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:954 src/mn-pop3-mailbox.gob:844
+#: src/mn-imap-mailbox.gob:1133 src/mn-pop3-mailbox.gob:853
 #, c-format
 msgid "unknown authentication mechanism \"%s\""
 msgstr "неизвестен механизъм за идентификация \"%s\""
 
-#: src/mn-imap-mailbox.gob:972
+#: src/mn-imap-mailbox.gob:1151
 msgid "falling back to IMAP LOGIN authentication"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:977 src/mn-pop3-mailbox.gob:879
+#: src/mn-imap-mailbox.gob:1156 src/mn-pop3-mailbox.gob:888
 msgid "authentication failed"
 msgstr "неуспешна идентификация"
 
-#: src/mn-mail-icon.gob:84 ui/summary-dialog.glade.h:2
+#: src/mn-mail-icon.gob:92 ui/summary-dialog.glade.h:2
+msgid "_Launch Mail Reader"
+msgstr ""
+
+#: src/mn-mail-icon.gob:93 ui/summary-dialog.glade.h:3
 msgid "_Update"
 msgstr "_Актуализиране"
 
-#: src/mn-mail-icon.gob:90
+#: src/mn-mail-icon.gob:99
 msgid "R_emove From Notification Area"
 msgstr "Пре_махване от зоната за известяване"
 
@@ -784,7 +828,7 @@ msgstr "Завършено"
 msgid "Whether the properties are completely filled or not"
 msgstr ""
 
-#: src/mn-mailbox-view.gob:263 src/mn-message-label.gob:74
+#: src/mn-mailbox-view.gob:263 src/mn-message-box.gob:58
 msgid "Mailbox"
 msgstr "Пощенска кутия"
 
@@ -810,37 +854,38 @@ msgid "The mailbox human-readable name"
 msgstr "Името на пощенската кутия във формат разбираем от хора"
 
 #: src/mn-mailbox.gob:145
-msgid "Whether the mailbox has to be manually checked or not"
-msgstr ""
+#, fuzzy
+msgid "Whether the mailbox has to be polled or not"
+msgstr "Дали изображението да мига или не"
 
-#: src/mn-mailbox.gob:150
+#: src/mn-mailbox.gob:151
 msgid "Whether the mailbox has new mail or not"
 msgstr ""
 
-#: src/mn-mailbox.gob:155
+#: src/mn-mailbox.gob:156
 msgid "The list of new and unread MNMessage objects"
 msgstr ""
 
-#: src/mn-mailbox.gob:209
+#: src/mn-mailbox.gob:210
 msgid "The mailbox error, if any"
 msgstr "Грешката в пощенската кутия, ако има"
 
-#: src/mn-mailbox.gob:308
+#: src/mn-mailbox.gob:309
 msgid "does not exist"
 msgstr "не съществува"
 
-#: src/mn-mailbox.gob:340
+#: src/mn-mailbox.gob:341
 msgid "unknown format"
 msgstr "непознат формат"
 
-#: src/mn-mailbox.gob:406
+#: src/mn-mailbox.gob:407
 #, fuzzy, c-format
 msgid "unable to enable immediate notification for %s: %s"
 msgstr ""
 "Известяването за поща не можа да разреши моменталното известяване за една "
 "или повече пощенски кутии. %s"
 
-#: src/mn-mailbox.gob:424
+#: src/mn-mailbox.gob:425
 #, c-format
 msgid ""
 "As a fallback, they will be checked every %i second (this delay is "
@@ -851,7 +896,7 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-mailbox.gob:435
+#: src/mn-mailbox.gob:436
 #, c-format
 msgid ""
 "As a fallback, they will be checked every %i minute (this delay is "
@@ -862,7 +907,7 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-mailbox.gob:446
+#: src/mn-mailbox.gob:447
 #, c-format
 msgid ""
 "As a fallback, they will be checked approximately every %i minute (this "
@@ -873,11 +918,11 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-mailbox.gob:462
+#: src/mn-mailbox.gob:463
 msgid "A monitoring error has occurred"
 msgstr "Получи се грешка при наблюдението"
 
-#: src/mn-mailbox.gob:463
+#: src/mn-mailbox.gob:464
 #, c-format
 msgid ""
 "Mail Notification was unable to enable immediate notification for one or "
@@ -886,26 +931,26 @@ msgstr ""
 "Известяването за поща не можа да разреши моменталното известяване за една "
 "или повече пощенски кутии. %s"
 
-#: src/mn-mailboxes.gob:143
+#: src/mn-mailboxes.gob:142
 msgid "Whether one or more of the mailboxes has to be polled"
 msgstr ""
 
-#: src/mn-mailboxes.gob:276
+#: src/mn-mailboxes.gob:272
 #, c-format
 msgid "%s is unsupported: %s"
 msgstr "%s е неподдържан: %s"
 
-#: src/mn-mailboxes.gob:307
+#: src/mn-mailboxes.gob:304
 #, c-format
 msgid "%s has new mail"
 msgstr "%s има поща"
 
-#: src/mn-mailboxes.gob:307
+#: src/mn-mailboxes.gob:304
 #, c-format
 msgid "%s has no new mail"
 msgstr "%s няма нова поща"
 
-#: src/mn-mailboxes.gob:333
+#: src/mn-mailboxes.gob:330
 #, c-format
 msgid "%s reported an error: %s"
 msgstr "%s докладва за грешка: %s"
@@ -1022,51 +1067,51 @@ msgstr "грешка при четенето на пощенската кути
 msgid "unable to open mailbox: %s"
 msgstr "грешка при отварянето на пощенската кутия: %s"
 
-#: src/mn-message-label.gob:77
+#: src/mn-message-box.gob:61
 msgid "Unreadable message"
 msgstr ""
 
-#: src/mn-message-label.gob:97
+#: src/mn-message-box.gob:66
 msgid "From"
 msgstr ""
 
-#: src/mn-message-label.gob:98
+#: src/mn-message-box.gob:67
 msgid "Subject"
 msgstr ""
 
-#: src/mn-message-label.gob:102
+#: src/mn-message-box.gob:72
 msgid "Sent"
 msgstr ""
 
-#: src/mn-message-label.gob:151
+#: src/mn-message-box.gob:184
 #, c-format
 msgid "%i second ago"
 msgid_plural "%i seconds ago"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-message-label.gob:155
+#: src/mn-message-box.gob:188
 #, c-format
 msgid "%i minute ago"
 msgid_plural "%i minutes ago"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-message-label.gob:160
+#: src/mn-message-box.gob:193
 #, c-format
 msgid "%i hour ago"
 msgid_plural "%i hours ago"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-message-label.gob:165
+#: src/mn-message-box.gob:198
 #, c-format
 msgid "%i day ago"
 msgid_plural "%i days ago"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-message-label.gob:170
+#: src/mn-message-box.gob:203
 #, c-format
 msgid "%i week ago"
 msgid_plural "%i weeks ago"
@@ -1116,21 +1161,21 @@ msgstr "_in-band SSL/TLS"
 msgid "SSL/TLS on sepa_rate port"
 msgstr "SSL/TLS на отделен по_рт"
 
-#: src/mn-pop3-mailbox-properties.gob:85
+#: src/mn-pop3-mailbox-properties.gob:86
 msgid "The hostname or IP address of the POP3 server"
 msgstr "Хостът или IP адресът на POP3 сървъра"
 
-#: src/mn-pop3-mailbox-properties.gob:86
+#: src/mn-pop3-mailbox-properties.gob:87
 msgid "Your username on the POP3 server"
 msgstr "Потребителското име в POP3 сървъра"
 
-#: src/mn-pop3-mailbox-properties.gob:87
+#: src/mn-pop3-mailbox-properties.gob:88
 msgid ""
 "Your password on the POP3 server (if left blank, you will be prompted for "
 "the password when needed)"
 msgstr ""
 
-#: src/mn-pop3-mailbox-properties.gob:88 src/mn-pop3-mailbox-properties.gob:89
+#: src/mn-pop3-mailbox-properties.gob:89 src/mn-pop3-mailbox-properties.gob:90
 msgid "The port number of the POP3 server"
 msgstr "Номера на порта на POP3 сървъра"
 
@@ -1138,95 +1183,78 @@ msgstr "Номера на порта на POP3 сървъра"
 msgid "invalid arguments for the LOGIN-DELAY capability"
 msgstr ""
 
-#: src/mn-pop3-mailbox.gob:549
+#: src/mn-pop3-mailbox.gob:556
 #, fuzzy
 msgid "unknown error"
 msgstr "неизвестна грешка в сървъра"
 
-#: src/mn-pop3-mailbox.gob:681
+#: src/mn-pop3-mailbox.gob:690
 #, c-format
 msgid "honouring LOGIN-DELAY, sleeping for %i second"
 msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-pop3-mailbox.gob:840
+#: src/mn-pop3-mailbox.gob:849
 msgid "server does not support APOP authentication"
 msgstr "Сървърът не поддържа идентификация тип APOP"
 
-#: src/mn-pop3-mailbox.gob:868
+#: src/mn-pop3-mailbox.gob:877
 msgid "falling back to APOP authentication"
 msgstr ""
 
-#: src/mn-pop3-mailbox.gob:873
+#: src/mn-pop3-mailbox.gob:882
 msgid "falling back to USER/PASS authentication"
 msgstr ""
 
-#: src/mn-properties.c:170
+#: src/mn-properties.c:181
 #, fuzzy
 msgid "top left"
 msgstr "Завършено"
 
-#: src/mn-properties.c:171
+#: src/mn-properties.c:182
 msgid "top right"
 msgstr ""
 
-#: src/mn-properties.c:172
+#: src/mn-properties.c:183
 msgid "bottom left"
 msgstr ""
 
-#: src/mn-properties.c:173
+#: src/mn-properties.c:184
 msgid "bottom right"
 msgstr ""
 
-#: src/mn-properties.c:251
+#: src/mn-properties.c:270
 msgid "No mailbox selected."
 msgstr "Няма избрана кутия."
 
-#: src/mn-properties.c:256
+#: src/mn-properties.c:275
 #, fuzzy, c-format
 msgid "%i mailbox selected."
 msgid_plural "%i mailboxes selected."
 msgstr[0] "%i избрана кутия."
 msgstr[1] "%i избрана кутия."
 
-#: src/mn-shell.gob:86
+#: src/mn-shell.gob:92
 msgid "You have new mail."
 msgstr "Имате поща."
 
-#: src/mn-shell.gob:263
-#, fuzzy
-msgid "The following mailbox has new mail:\n"
-msgid_plural "The following mailboxes have new mail:\n"
-msgstr[0] "Следната пощенска кутия има нова поща:\n"
-msgstr[1] "Следната пощенска кутия има нова поща:\n"
-
-#: src/mn-shell.gob:267
-msgid "You have no new mail."
-msgstr "Нямата нова поща."
+#: src/mn-shell.gob:347
+msgid "Mailboxes Having New Mail"
+msgstr ""
 
-#: src/mn-shell.gob:270
-#, fuzzy
-msgid "The following mailbox reported an error:\n"
-msgid_plural "The following mailboxes reported an error:\n"
-msgstr[0] "Следната пощенска кутия докладва за грешка:\n"
-msgstr[1] "Следната пощенска кутия докладва за грешка:\n"
+#: src/mn-shell.gob:349
+msgid "Errors"
+msgstr ""
 
-#: src/mn-shell.gob:275
+#: src/mn-shell.gob:351
 #, fuzzy
-msgid "The following mailbox is unsupported:\n"
-msgid_plural "The following mailboxes are unsupported:\n"
-msgstr[0] "Следните пощенски кутии не се поддържат:\n"
-msgstr[1] "Следните пощенски кутии не се поддържат:\n"
-
-#: src/mn-shell.gob:320
-msgid "A command error has occurred in Mail Notification"
-msgstr "Грешка с командите се получи в известяването за поща"
+msgid "Unsupported Mailboxes"
+msgstr "Системна кутия"
 
-#: src/mn-shell.gob:321
-#, fuzzy, c-format
-msgid "Unable to execute \"%s\": %s."
-msgstr "неуспех при намирането на %s: %s"
+#: src/mn-shell.gob:364 ui/summary-dialog.glade.h:1
+msgid "Mail Summary"
+msgstr ""
 
 #: src/mn-soup.c:140
 #, fuzzy, c-format
@@ -1327,11 +1355,20 @@ msgstr "Получи се сериозна грешка в известяван
 msgid "unable to get current time: %s"
 msgstr "неуспех при свързването с %s"
 
-#: src/mn-util.c:887
+#: src/mn-util.c:906
 #, c-format
 msgid "invalid signal specification \"%s\""
 msgstr ""
 
+#: src/mn-util.c:945
+msgid "A command error has occurred in Mail Notification"
+msgstr "Грешка с командите се получи в известяването за поща"
+
+#: src/mn-util.c:946
+#, fuzzy, c-format
+msgid "Unable to execute \"%s\": %s."
+msgstr "неуспех при намирането на %s: %s"
+
 #: ui/authentication.glade.h:1 ui/properties.glade.h:2
 msgid "*"
 msgstr "*"
@@ -1354,154 +1391,186 @@ msgid "<span weight=\"bold\">Commands</span>"
 msgstr "<span weight=\"bold\">Команди</span>"
 
 #: ui/properties.glade.h:4
-msgid "<span weight=\"bold\">General</span>"
+#, fuzzy
+msgid "<span weight=\"bold\">Double-click Action</span>"
 msgstr "<span weight=\"bold\">Основни</span>"
 
 #: ui/properties.glade.h:5
+msgid "<span weight=\"bold\">General</span>"
+msgstr "<span weight=\"bold\">Основни</span>"
+
+#: ui/properties.glade.h:6
 #, fuzzy
 msgid "<span weight=\"bold\">Mailbox List</span>"
 msgstr "<span weight=\"bold\">Пощенски кутии</span>"
 
-#: ui/properties.glade.h:6
+#: ui/properties.glade.h:7
 #, fuzzy
 msgid "<span weight=\"bold\">Position</span>"
 msgstr "<span weight=\"bold\">Команди</span>"
 
-#: ui/properties.glade.h:7
+#: ui/properties.glade.h:8
 msgid "General"
 msgstr ""
 
-#: ui/properties.glade.h:8
+#: ui/properties.glade.h:9
 msgid "Hori_zontal offset:"
 msgstr ""
 
-#: ui/properties.glade.h:9
+#: ui/properties.glade.h:10
 msgid "Mail Notification Properties"
 msgstr "Настройки на известяването за поща"
 
-#: ui/properties.glade.h:10
+#: ui/properties.glade.h:11
 msgid "Mail Summary Popup"
 msgstr ""
 
-#: ui/properties.glade.h:11
+#: ui/properties.glade.h:12
 #, fuzzy
 msgid "Mailboxes"
 msgstr "Пощенска кутия"
 
-#: ui/properties.glade.h:12
+#: ui/properties.glade.h:13
+msgid "Only display _recent mail"
+msgstr ""
+
+#: ui/properties.glade.h:14
 #, fuzzy
 msgid "P_osition:"
 msgstr "_Местоположение:"
 
-#: ui/properties.glade.h:13
+#: ui/properties.glade.h:15
 #, fuzzy
 msgid "The amount of time to wait before closing the mail summary popup"
 msgstr "Времевият интервал за изчакване между проверките за нова поща"
 
-#: ui/properties.glade.h:14
+#: ui/properties.glade.h:16
 msgid "The amount of time to wait between mail checks"
 msgstr "Времевият интервал за изчакване между проверките за нова поща"
 
-#: ui/properties.glade.h:15
+#: ui/properties.glade.h:17
+#, fuzzy
+msgid "The command to run to launch the mail reader"
+msgstr "Командата, която да се изпълни при пристигането на нова поща"
+
+#: ui/properties.glade.h:18
 #, fuzzy
 msgid "The command to run when all mail is read"
 msgstr "Командата, която да се изпълни при пристигането на нова поща"
 
-#: ui/properties.glade.h:16
+#: ui/properties.glade.h:19
 msgid "The command to run when new mail arrives"
 msgstr "Командата, която да се изпълни при пристигането на нова поща"
 
-#: ui/properties.glade.h:17
+#: ui/properties.glade.h:20
 msgid ""
 "The number of pixels to leave between the left or right side of the screen "
 "and the mail summary popup"
 msgstr ""
 
-#: ui/properties.glade.h:18
+#: ui/properties.glade.h:21
 msgid ""
 "The number of pixels to leave between the top or bottom side of the screen "
 "and the mail summary popup"
 msgstr ""
 
-#: ui/properties.glade.h:19
+#: ui/properties.glade.h:22
 #, fuzzy
 msgid "When _all mail is read:"
 msgstr "При пристигане на _нова поща:"
 
-#: ui/properties.glade.h:20
+#: ui/properties.glade.h:23
 msgid "When _new mail arrives:"
 msgstr "При пристигане на _нова поща:"
 
-#: ui/properties.glade.h:21
+#: ui/properties.glade.h:24
 msgid "Whether the status icon should blink on errors or not"
 msgstr "Дали иконата за състоянието да започне да мига при грешки или не"
 
-#: ui/properties.glade.h:22
+#: ui/properties.glade.h:25
 #, fuzzy
 msgid "Whether to automatically close the mail summary popup or not"
 msgstr "Дали да се стартира команда при пристигането на нова поща или не"
 
-#: ui/properties.glade.h:23
+#: ui/properties.glade.h:26
 #, fuzzy
 msgid "Whether to display the mail summary popup when new mail arrives or not"
 msgstr "Дали да се стартира команда при пристигането на нова поща или не"
 
-#: ui/properties.glade.h:24
+#: ui/properties.glade.h:27
+msgid "Whether to hide previously displayed mail or not"
+msgstr ""
+
+#: ui/properties.glade.h:28
 #, fuzzy
 msgid "Whether to run a command when all mail is read or not"
 msgstr "Дали да се стартира команда при пристигането на нова поща или не"
 
-#: ui/properties.glade.h:25
+#: ui/properties.glade.h:29
 msgid "Whether to run a command when new mail arrives or not"
 msgstr "Дали да се стартира команда при пристигането на нова поща или не"
 
-#: ui/properties.glade.h:26
+#: ui/properties.glade.h:30
+#, fuzzy
+msgid "Whether to set a mail reader or not"
+msgstr "Дали да се стартира команда при пристигането на нова поща или не"
+
+#: ui/properties.glade.h:31
 msgid ""
 "Whether to start Mail Notification when you log into your GNOME session or "
 "not"
 msgstr ""
 "Дали да се стартира известяването за поща, когато влизате в GNOME или не"
 
-#: ui/properties.glade.h:27
+#: ui/properties.glade.h:32
 msgid "_Automatically close after:"
 msgstr ""
 
-#: ui/properties.glade.h:28
+#: ui/properties.glade.h:33
 msgid "_Blink on errors"
 msgstr "_Мигане при грешки"
 
-#: ui/properties.glade.h:29
+#: ui/properties.glade.h:34
 msgid "_Delay between mail checks:"
 msgstr "_Време между проверките за поща:"
 
-#: ui/properties.glade.h:30
+#: ui/properties.glade.h:35
+#, fuzzy
+msgid "_Display the mail summary dialog"
+msgstr "Изобразяване на диалоговия прозорец с информацията"
+
+#: ui/properties.glade.h:36
 msgid "_Enable mail summary popup"
 msgstr ""
 
-#: ui/properties.glade.h:31
+#: ui/properties.glade.h:37
+msgid "_Launch the mail reader"
+msgstr ""
+
+#: ui/properties.glade.h:38
+msgid "_Mail reader:"
+msgstr ""
+
+#: ui/properties.glade.h:39
 msgid "_Start Mail Notification on GNOME login"
 msgstr "_Стартиране на известяването за поща при влизане в GNOME"
 
-#: ui/properties.glade.h:32
+#: ui/properties.glade.h:40
 msgid "_Vertical offset:"
 msgstr ""
 
-#: ui/properties.glade.h:33
+#: ui/properties.glade.h:41
 msgid "minutes"
 msgstr "минути"
 
-#: ui/properties.glade.h:34
+#: ui/properties.glade.h:42
 msgid "pixels"
 msgstr ""
 
-#: ui/properties.glade.h:35
+#: ui/properties.glade.h:43
 msgid "seconds"
 msgstr "секунди"
 
-#: ui/summary-dialog.glade.h:1
-msgid "Mail Summary"
-msgstr ""
-
 #: ui/summary-popup.glade.h:1
 #, fuzzy
 msgid "<span size=\"larger\" weight=\"bold\">Mail Summary</span>"
@@ -1544,9 +1613,6 @@ msgstr "_Настройки на известяването за поща"
 msgid "_Skip configuration"
 msgstr "_Пропускане на настройването"
 
-#~ msgid "Double-clicked command"
-#~ msgstr "Команда при двойна натискане"
-
 #~ msgid "Run a command when the icon is double-clicked"
 #~ msgstr "Стартиране на команда при двойно натискане на иконата"
 
@@ -1581,6 +1647,18 @@ msgstr "_Пропускане на настройването"
 #~ msgid "Unable to execute double-clicked command: %s."
 #~ msgstr "Неуспех при стартирането на командата: %s."
 
+#~ msgid "The following mailbox has new mail:\n"
+#~ msgstr "Следната пощенска кутия има нова поща:\n"
+
+#~ msgid "You have no new mail."
+#~ msgstr "Нямата нова поща."
+
+#~ msgid "The following mailbox reported an error:\n"
+#~ msgstr "Следната пощенска кутия докладва за грешка:\n"
+
+#~ msgid "The following mailbox is unsupported:\n"
+#~ msgstr "Следните пощенски кутии не се поддържат:\n"
+
 #~ msgid "Unable to execute new mail command: %s."
 #~ msgstr "Неуспех при стартирането на нова пощенска команда: %s."
 
diff --git a/po/de.gmo b/po/de.gmo
Binary files differ.
diff --git a/po/de.po b/po/de.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: mail-notification 0.7.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2004-10-25 15:26+0200\n"
+"POT-Creation-Date: 2004-10-31 18:42+0100\n"
 "PO-Revision-Date: 2004-10-24 10:59+0200\n"
 "Last-Translator: Hendrik Brandt <eru@gmx.li>\n"
 "Language-Team: German <gnome-de@gnome.org>\n"
@@ -34,7 +34,7 @@ msgstr "Die E-Mail-Eingangsüberwachung einstellen"
 #: data/mail-notification-properties.desktop.in.h:2
 #: data/mail-notification.desktop.in.h:2
 #: data/mail-notification.soundlist.in.h:1 src/mn-about-dialog.gob:40
-#: src/mn-mail-icon.gob:163 src/mn-main.c:271
+#: src/mn-mail-icon.gob:194 src/mn-main.c:271
 msgid "Mail Notification"
 msgstr "E-Mail-Eingangsüberwachung"
 
@@ -63,108 +63,138 @@ msgid "Do not show the immediate notification error dialog"
 msgstr "Den Fehlerdialog der Sofortbenachrichtigung  nicht sofort anzeigen"
 
 #: data/mail-notification.schemas.in.h:6
+msgid "Double-click action"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:7
 msgid "Enable mail summary popup"
 msgstr "Nachrichtenübersicht aktivieren"
 
-#: data/mail-notification.schemas.in.h:7
+#: data/mail-notification.schemas.in.h:8
 msgid "Fingerprints of trusted X509 certificates"
 msgstr "Fingerabdrücke vertrauensvoller X509-Zertifikate"
 
-#: data/mail-notification.schemas.in.h:8
+#: data/mail-notification.schemas.in.h:9
 msgid "Has already been run"
 msgstr "Wurde schon einmal gestartet"
 
-#: data/mail-notification.schemas.in.h:9
+#: data/mail-notification.schemas.in.h:10
 msgid "Height of mail summary dialog"
 msgstr "Höhe der Nachrichtenübersicht"
 
-#: data/mail-notification.schemas.in.h:10
+#: data/mail-notification.schemas.in.h:11
 msgid "Height of properties dialog"
 msgstr "Höhe des Einstellungen-Dialogs"
 
-#: data/mail-notification.schemas.in.h:11
+#: data/mail-notification.schemas.in.h:12
 msgid "Mail read command"
 msgstr "Befehl zum Lesen einer Nachricht"
 
-#: data/mail-notification.schemas.in.h:12
+#: data/mail-notification.schemas.in.h:13
+#, fuzzy
+msgid "Mail reader command"
+msgstr "Befehl zum Lesen einer Nachricht"
+
+#: data/mail-notification.schemas.in.h:14
 msgid "Mail summary popup horizontal offset"
 msgstr "Horizontaler Abstand der Nachrichtenübersicht"
 
-#: data/mail-notification.schemas.in.h:13
+#: data/mail-notification.schemas.in.h:15
 msgid "Mail summary popup position"
 msgstr "Position der Nachrichtenübersicht"
 
-#: data/mail-notification.schemas.in.h:14
+#: data/mail-notification.schemas.in.h:16
 msgid "Mail summary popup vertical offset"
 msgstr "Vertikaler"
 
-#: data/mail-notification.schemas.in.h:15
+#: data/mail-notification.schemas.in.h:17
 msgid "Mailbox list"
 msgstr "Liste der Postfächer"
 
-#: data/mail-notification.schemas.in.h:16
+#: data/mail-notification.schemas.in.h:18
 msgid "Minutes between mail checks"
 msgstr "Minuten zwischen den Aktualisierungen"
 
-#: data/mail-notification.schemas.in.h:17
+#: data/mail-notification.schemas.in.h:19
 msgid "Minutes to wait before closing the mail summary popup"
 msgstr "Wartezeit bis zum Schließen der Nachrichtenübersicht"
 
-#: data/mail-notification.schemas.in.h:18
+#: data/mail-notification.schemas.in.h:20
 msgid "New mail command"
 msgstr "Befehl bei neuer Nachricht"
 
-#: data/mail-notification.schemas.in.h:19
+#: data/mail-notification.schemas.in.h:21
+#, fuzzy
+msgid "Only display recent mail in mail summary popup"
+msgstr "Die Nachrichtenübersicht schließen"
+
+#: data/mail-notification.schemas.in.h:22
 msgid "Run a command when all mail is read"
 msgstr "Einen Befehl ausführen, wenn alle Nachrichten gelesen sind"
 
-#: data/mail-notification.schemas.in.h:20
+#: data/mail-notification.schemas.in.h:23
 msgid "Run a command when new mail arrives"
 msgstr "Einen Befehl ausführen, wenn eine neue Nachricht eintrifft"
 
-#: data/mail-notification.schemas.in.h:21
+#: data/mail-notification.schemas.in.h:24
 msgid "Seconds between mail checks"
 msgstr "Sekunden zwischen den Aktualisierungen"
 
-#: data/mail-notification.schemas.in.h:22
+#: data/mail-notification.schemas.in.h:25
 msgid "Seconds to wait before closing the mail summary popup"
 msgstr "Wartezeit in Sekunden bis zum Schließen der Nachrichtenübersicht"
 
-#: data/mail-notification.schemas.in.h:23
+#: data/mail-notification.schemas.in.h:26
+#, fuzzy
+msgid "Set a mail reader"
+msgstr "Wählen Sie eine Datei oder ein Verzeichnis"
+
+#: data/mail-notification.schemas.in.h:27
+msgid ""
+"The action to perform when the icon is double-clicked. Must be \"display-"
+"mail-summary\" or \"launch-mail-reader\"."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:28
 msgid ""
 "The amount of time to wait before closing the mail summary popup (minutes "
 "part)."
 msgstr ""
 "Die Zeitspanne bis zum Schließen der Nachrichtenübersicht (Minutenteil)."
 
-#: data/mail-notification.schemas.in.h:24
+#: data/mail-notification.schemas.in.h:29
 msgid ""
 "The amount of time to wait before closing the mail summary popup (seconds "
 "part)."
 msgstr ""
 "Die Zeitspanne bis zum Schließen der Nachrichtenübersicht (Sekundenteil)."
 
-#: data/mail-notification.schemas.in.h:25
+#: data/mail-notification.schemas.in.h:30
+#, fuzzy
+msgid "The command to run to launch the mail reader."
+msgstr "Der Befehl der ausgeführt wird, wenn alle Nachrichten gelesen wurden"
+
+#: data/mail-notification.schemas.in.h:31
 msgid "The command to run when all mail is read."
 msgstr "Der Befehl der ausgeführt wird, wenn alle Nachrichten gelesen wurden"
 
-#: data/mail-notification.schemas.in.h:26
+#: data/mail-notification.schemas.in.h:32
 msgid "The command to run when new mail arrives."
 msgstr "Der Befehl der ausgeführt wird, wenn eine neue Nachricht eintrifft."
 
-#: data/mail-notification.schemas.in.h:27
+#: data/mail-notification.schemas.in.h:33
 msgid "The height of the mail summary dialog in pixels."
 msgstr "Die Höhe der Nachrichtenübersicht in Pixel."
 
-#: data/mail-notification.schemas.in.h:28
+#: data/mail-notification.schemas.in.h:34
 msgid "The height of the properties dialog in pixels."
 msgstr "Die Höhe des Einstellungsdialogs in Pixel."
 
-#: data/mail-notification.schemas.in.h:29
+#: data/mail-notification.schemas.in.h:35
 msgid "The list of mailboxes to monitor."
 msgstr "Die Liste der zu überwachenden Postfächer."
 
-#: data/mail-notification.schemas.in.h:30
+#: data/mail-notification.schemas.in.h:36
 msgid ""
 "The list of trusted SSL/TLS servers (hostname:port) lacking a X509 "
 "certificate."
@@ -172,14 +202,14 @@ msgstr ""
 "Die Liste vertrauensvoller SSL/TLS-Server (Host-Name:Port) ohne X509-"
 "Zertifikat."
 
-#: data/mail-notification.schemas.in.h:31
+#: data/mail-notification.schemas.in.h:37
 msgid ""
 "The list of trusted X509 certificates, represented by their MD5 fingerprint."
 msgstr ""
 "Die Liste vertrauensvoller X509-Zertifikate, repräsentiert durch ihre MD5-"
 "Fingerabdrücke."
 
-#: data/mail-notification.schemas.in.h:32
+#: data/mail-notification.schemas.in.h:38
 msgid ""
 "The number of pixels to leave between the left or right side of the screen "
 "and the mail summary popup."
@@ -187,7 +217,7 @@ msgstr ""
 "Die Anzahl an Pixeln die zwischen dem linken oder rechten Bildschirmrand und "
 "der Nachrichtenübersicht."
 
-#: data/mail-notification.schemas.in.h:33
+#: data/mail-notification.schemas.in.h:39
 msgid ""
 "The number of pixels to leave between the top or bottom side of the screen "
 "and the mail summary popup."
@@ -195,7 +225,7 @@ msgstr ""
 "Die Anzahl an Pixeln die zwischen dem oberen oder runteren Bildschirmrand "
 "und der Nachrichtenübersicht."
 
-#: data/mail-notification.schemas.in.h:34
+#: data/mail-notification.schemas.in.h:40
 msgid ""
 "The position of the mail summary popup. Must be \"top-left\", \"top-right\", "
 "\"bottom-left\" or \"bottom-right\"."
@@ -203,62 +233,76 @@ msgstr ""
 "Die Position der Nachrichtenübersicht. Der Wert muss »oben-links«, »oben-"
 "rechts«, »unten-links« oder »unten-rechts« sein."
 
-#: data/mail-notification.schemas.in.h:35
+#: data/mail-notification.schemas.in.h:41
 msgid "The width of the mail summary dialog in pixels."
 msgstr "Die Breite der Nachrichtenübersicht in Pixel."
 
-#: data/mail-notification.schemas.in.h:36
+#: data/mail-notification.schemas.in.h:42
 msgid "The width of the properties dialog in pixels."
 msgstr "Die Breite des Einstellungen-Dialogs in Pixel."
 
-#: data/mail-notification.schemas.in.h:37
+#: data/mail-notification.schemas.in.h:43
 msgid "Trusted servers list"
 msgstr "Liste vertrauensvoller Server"
 
-#: data/mail-notification.schemas.in.h:38
+#: data/mail-notification.schemas.in.h:44
 msgid "Whether Mail Notification has already been run or not."
 msgstr ""
 "Legt fest, ob die E-Mail-Eingangsüberwachnung schon einmal gestartet wurde."
 
-#: data/mail-notification.schemas.in.h:39
+#: data/mail-notification.schemas.in.h:45
 msgid "Whether the status icon should blink on errors or not."
 msgstr ""
 "Legt fest, ob das  Nachrichtensymbol bei Auftreten eines Fehlers blinkt."
 
-#: data/mail-notification.schemas.in.h:40
+#: data/mail-notification.schemas.in.h:46
 msgid "Whether to automatically close the mail summary popup or not."
 msgstr ""
 "Legt fest, ob ein Befehl ausgeführt wird, wenn eine neue Nachricht eintrifft."
 
-#: data/mail-notification.schemas.in.h:41
+#: data/mail-notification.schemas.in.h:47
 msgid "Whether to display the mail summary popup when new mail arrives or not."
 msgstr ""
 "Legt fest, ob die Nachrichtenübersicht angezeigt wird, wenn eine neue "
 "Nachricht eintrifft."
 
-#: data/mail-notification.schemas.in.h:42
+#: data/mail-notification.schemas.in.h:48
+#, fuzzy
+msgid ""
+"Whether to hide previously displayed mail in the mail summary popup or not."
+msgstr ""
+"Legt fest, ob ein Befehl ausgeführt wird, wenn eine neue Nachricht eintrifft."
+
+#: data/mail-notification.schemas.in.h:49
 msgid ""
 "Whether to prevent the immediate notification error dialog from being "
 "displayed or not."
 msgstr ""
 "Legt fest, ob der Fehlerdialog der Sofortbenachrichtigung angezeigt wird."
 
-#: data/mail-notification.schemas.in.h:43
+#: data/mail-notification.schemas.in.h:50
 msgid "Whether to run a command when all mail is read or not."
 msgstr ""
 "Legt fest, ob ein Befehl ausgeführt wird, wenn alle Nachrichten gelesen "
 "wurden."
 
-#: data/mail-notification.schemas.in.h:44
+#: data/mail-notification.schemas.in.h:51
 msgid "Whether to run a command when new mail arrives or not."
 msgstr ""
 "Legt fest, ob ein Befehl ausgeführt wird, wenn eine neue Nachricht eintrifft."
 
-#: data/mail-notification.schemas.in.h:45
+#: data/mail-notification.schemas.in.h:52
+#, fuzzy
+msgid "Whether to set a mail reader or not."
+msgstr ""
+"Legt fest, ob ein Befehl ausgeführt wird, wenn alle Nachrichten gelesen "
+"wurden."
+
+#: data/mail-notification.schemas.in.h:53
 msgid "Width of mail summary dialog"
 msgstr "Breite der Nachrichtenübersicht"
 
-#: data/mail-notification.schemas.in.h:46
+#: data/mail-notification.schemas.in.h:54
 msgid "Width of properties dialog"
 msgstr "Breite des Einstellungen-Dialogs"
 
@@ -458,96 +502,96 @@ msgstr "Die Antwort »%s« ist in diesem Kontext nicht zugelassen"
 msgid "unable to parse response \"%s\""
 msgstr "Die Antwort »%s« konnte nicht analysiert werden"
 
-#: src/mn-client-session.c:592 src/mn-client-session.c:599
+#: src/mn-client-session.c:601 src/mn-client-session.c:608
 #, c-format
 msgid "unable to read from server: %s"
 msgstr "Es konnte nicht vom Server gelesen werden: %s"
 
-#: src/mn-client-session.c:597
+#: src/mn-client-session.c:606
 msgid "unable to read from server: EOF"
 msgstr "Es konnte nicht vom Server gelesen werden: EOF"
 
-#: src/mn-client-session.c:609
+#: src/mn-client-session.c:618
 #, c-format
 msgid "unable to decode data using SASL: %s"
 msgstr "Die Daten konnten nicht per SASL dekodiert werden: %s"
 
-#: src/mn-client-session.c:746
+#: src/mn-client-session.c:755
 #, c-format
 msgid "unable to encode data using SASL: %s"
 msgstr "Die Daten konnten nicht per SASL kodiert werden: %s"
 
-#: src/mn-client-session.c:777 src/mn-client-session.c:784
+#: src/mn-client-session.c:786 src/mn-client-session.c:793
 #, c-format
 msgid "unable to write to server: %s"
 msgstr "Es konnte nicht auf den Server geschrieben werden: %s"
 
-#: src/mn-client-session.c:782
+#: src/mn-client-session.c:791
 msgid "unable to write to server: EOF"
 msgstr "Es konnte nicht auf den Server geschrieben werden: EOF"
 
-#: src/mn-client-session.c:814
+#: src/mn-client-session.c:823
 #, c-format
 msgid "unable to encode Base64: %s"
 msgstr "Es konnte nicht mit Base64 kodiert werden: %s"
 
-#: src/mn-client-session.c:917
+#: src/mn-client-session.c:927
 #, c-format
 msgid "unable to initialize the SASL library: %s"
 msgstr "Die SASL-Bibliothek konnte nicht initializiert werden: %s"
 
-#: src/mn-client-session.c:926
+#: src/mn-client-session.c:936
 #, c-format
 msgid "unable to retrieve local address of socket: %s"
 msgstr "Die lokale Adresse des Socket konnte nicht herausgefunden werden: %s"
 
-#: src/mn-client-session.c:932
+#: src/mn-client-session.c:942
 #, c-format
 msgid "unable to retrieve remote address of socket: %s"
 msgstr ""
 "Die entfernte Adresse des Socket konnte nicht herausgefunden werden: %s"
 
-#: src/mn-client-session.c:966
+#: src/mn-client-session.c:976
 #, c-format
 msgid "warning: unable to set SASL security properties: %s"
 msgstr ""
 "Warnung: Die SASL-Sicherheitseigenschaften konnten nicht gesetzt werden: %s"
 
-#: src/mn-client-session.c:1005
+#: src/mn-client-session.c:1015
 msgid ""
 "unable to start SASL authentication: SASL asked for something we did not know"
 msgstr ""
 "Die SASL-Authentifizierung konnte nicht gestartet werden: es wurde eine "
 "unbekannte Anfrage von SASL gestellt"
 
-#: src/mn-client-session.c:1009
+#: src/mn-client-session.c:1019
 #, c-format
 msgid "unable to start SASL authentication: %s"
 msgstr "Die SASL-Authentifizierung konnte nicht gestartet werden: %s"
 
-#: src/mn-client-session.c:1013
+#: src/mn-client-session.c:1023
 #, c-format
 msgid "unable to create a SASL connection: %s"
 msgstr "Es konnte keine Verbindung mit SASL erzeugt werden: %s"
 
-#: src/mn-client-session.c:1063
+#: src/mn-client-session.c:1073
 msgid "SASL asked for something we did not know, aborting SASL authentication"
 msgstr ""
 "Es wurde eine unbekannte Anfrage von SASL gestellt, SASL-Authentifizierung "
 "wird abgebrochen"
 
-#: src/mn-client-session.c:1067
+#: src/mn-client-session.c:1077
 #, c-format
 msgid "%s, aborting SASL authentication"
 msgstr "%s, SASL-Authentifizierung wird abgebrochen"
 
 #. compliance error
-#: src/mn-client-session.c:1072
+#: src/mn-client-session.c:1082
 #, c-format
 msgid "unable to decode Base64 input from server: %s"
 msgstr "Die Server-seitige Base64-Eingabe konnte nicht dekodiert werden: %s"
 
-#: src/mn-client-session.c:1075
+#: src/mn-client-session.c:1085
 msgid ""
 "the server sent a SASL challenge, but there was a pending initial SASL "
 "client response"
@@ -555,7 +599,7 @@ msgstr ""
 "Der Server hat während einer beginnenden SASL-Client-Antwort einen Fehler "
 "gesendet"
 
-#: src/mn-client-session.c:1089
+#: src/mn-client-session.c:1099
 msgid ""
 "the server did not send a SASL challenge, but there was no pending initial "
 "SASL client response"
@@ -563,32 +607,32 @@ msgstr ""
 "Der Server hat kein SASL-Problem gesendet, während noch eine Client-seitige "
 "SASL-Reaktion begonnen wurde"
 
-#: src/mn-client-session.c:1112
+#: src/mn-client-session.c:1122
 #, c-format
 msgid "a SASL security layer of strength factor %i is now active"
 msgstr "Die SASL-Sicherheitsebene der Stärke %i ist jetzt aktiv"
 
 #. a security layer is active but we can't retrieve maxoutbuf -> fatal
-#: src/mn-client-session.c:1117
+#: src/mn-client-session.c:1127
 #, c-format
 msgid "unable to get SASL_MAXOUTBUF property: %s"
 msgstr "Der Wert SASL_MAXOUTBUF wurde nicht gefunden: %s"
 
-#: src/mn-client-session.c:1123
+#: src/mn-client-session.c:1133
 #, c-format
 msgid "warning: unable to get SASL_SSF property: %s"
 msgstr "Warnung: Der Wert SASL_SSF wurde nicht gefunden: %s"
 
-#: src/mn-conf.c:123
+#: src/mn-conf.c:136
 #, c-format
 msgid "recursively unsetting %s"
 msgstr "%s rekursiv zurück setzen"
 
-#: src/mn-conf.c:127
+#: src/mn-conf.c:140
 msgid "syncing the GConf database"
 msgstr "Synchronisiere mit der GConf-Datenbank"
 
-#: src/mn-conf.c:130
+#: src/mn-conf.c:143
 msgid "completed"
 msgstr "Abgeschlossen"
 
@@ -604,33 +648,33 @@ msgstr ""
 "Ihr Gmail-Passwort (falls Sie nichts eingeben, werden Sie jedesmal wenn es "
 "notwendig ist nach dem Passwort gefragt)"
 
-#: src/mn-gmail-mailbox.gob:63
+#: src/mn-gmail-mailbox.gob:81
 msgid "libsoup has not been compiled with SSL/TLS support"
 msgstr "»libsoup« wurde nicht mit SSL/TLS-Unterstützung erstellt"
 
-#: src/mn-gmail-mailbox.gob:105
+#: src/mn-gmail-mailbox.gob:123
 #, c-format
 msgid "unable to parse URI \"%s\""
 msgstr "Die Adresse »%s« konnte nicht analysiert werden"
 
-#: src/mn-gmail-mailbox.gob:159
+#: src/mn-gmail-mailbox.gob:177
 #, c-format
 msgid "unable to transfer data: %s"
 msgstr "Daten konnten nicht übertragen werden: %s"
 
-#: src/mn-gmail-mailbox.gob:280
+#: src/mn-gmail-mailbox.gob:298
 msgid "logging in"
 msgstr "Anmelden bei"
 
-#: src/mn-gmail-mailbox.gob:358
+#: src/mn-gmail-mailbox.gob:376
 msgid "login failed"
 msgstr "Anmeldung fehlgeschlagen"
 
-#: src/mn-gmail-mailbox.gob:433
+#: src/mn-gmail-mailbox.gob:451
 msgid "searching for unread mail"
 msgstr "Es wird nach ungelesenen Nachrichten gesucht"
 
-#: src/mn-gmail-mailbox.gob:529
+#: src/mn-gmail-mailbox.gob:490
 msgid "unable to parse Gmail data"
 msgstr "Die Gmail-Daten konnte nicht analysiert werden"
 
@@ -696,54 +740,54 @@ msgstr "Die Port-Nummer auf dem IMAP-Server"
 msgid "The mailbox name"
 msgstr "Der Postfachname"
 
-#: src/mn-imap-mailbox.gob:133 src/mn-pop3-mailbox.gob:142
+#: src/mn-imap-mailbox.gob:164 src/mn-pop3-mailbox.gob:142
 msgid "SSL/TLS support has not been compiled in"
 msgstr ""
 "Die Unterstützung für SSL/TLS wurde beim Erstellen des Programms nicht "
 "eingebaut"
 
-#: src/mn-imap-mailbox.gob:204
+#: src/mn-imap-mailbox.gob:253
 msgid "server did not send capabilities"
 msgstr "Der Server hat seine Fähigkeiten nicht bekannt gegeben"
 
-#: src/mn-imap-mailbox.gob:319
+#: src/mn-imap-mailbox.gob:374
 msgid "server advertised LOGINDISABLED, not using LOGIN authentication"
 msgstr ""
 "Der Server gibt LOGINDISABLED zurück, LOGIN-Authentifizierung wird nicht "
 "verwendet"
 
-#: src/mn-imap-mailbox.gob:320
+#: src/mn-imap-mailbox.gob:375
 msgid "unable to login"
 msgstr "Anmeldung fehlgeschlagen"
 
 #. compliance error
-#: src/mn-imap-mailbox.gob:451
+#: src/mn-imap-mailbox.gob:516
 msgid "server did not send search results"
 msgstr "Der Server hat keine Suchergebnisse gesendet"
 
 #. compliance error
-#: src/mn-imap-mailbox.gob:527
+#: src/mn-imap-mailbox.gob:596
 msgid "server did not send all the messages we requested"
 msgstr "Der Server hat nicht alle angeforderten Nachrichten gesendet"
 
-#: src/mn-imap-mailbox.gob:574
+#: src/mn-imap-mailbox.gob:645
 msgid "unable to fetch message"
 msgstr "Nachrichten konnten nicht abgerufen werden"
 
 #. compliance error
-#: src/mn-imap-mailbox.gob:621
+#: src/mn-imap-mailbox.gob:763
 msgid "server did not send status"
 msgstr "Der Server hat seinen Status nicht bekannt gegeben"
 
-#: src/mn-imap-mailbox.gob:856 src/mn-pop3-mailbox.gob:913
+#: src/mn-imap-mailbox.gob:1035 src/mn-pop3-mailbox.gob:922
 msgid "unknown server error"
 msgstr "Unbekannter Server-Fehler"
 
-#: src/mn-imap-mailbox.gob:927 src/mn-pop3-mailbox.gob:226
+#: src/mn-imap-mailbox.gob:1106 src/mn-pop3-mailbox.gob:226
 msgid "server does not support in-band SSL/TLS"
 msgstr "Der Server unterstütz kein band-internes SSL/TLS"
 
-#: src/mn-imap-mailbox.gob:946 src/mn-pop3-mailbox.gob:832
+#: src/mn-imap-mailbox.gob:1125 src/mn-pop3-mailbox.gob:841
 msgid ""
 "a SASL authentication mechanism was selected but SASL support has not been "
 "compiled in"
@@ -751,24 +795,28 @@ msgstr ""
 "Sie haben eine Authentifizierung mit SASL ausgewählt, jedoch wurde die "
 "Unterstützung für SASL beim Erstellen des Programms nicht eingebaut"
 
-#: src/mn-imap-mailbox.gob:954 src/mn-pop3-mailbox.gob:844
+#: src/mn-imap-mailbox.gob:1133 src/mn-pop3-mailbox.gob:853
 #, c-format
 msgid "unknown authentication mechanism \"%s\""
 msgstr "Unbekannte Authentifizierungsmethode »%s«"
 
-#: src/mn-imap-mailbox.gob:972
+#: src/mn-imap-mailbox.gob:1151
 msgid "falling back to IMAP LOGIN authentication"
 msgstr "Es wird auf die Authentifizierung per IMAP LOGIN zurückgegriffen"
 
-#: src/mn-imap-mailbox.gob:977 src/mn-pop3-mailbox.gob:879
+#: src/mn-imap-mailbox.gob:1156 src/mn-pop3-mailbox.gob:888
 msgid "authentication failed"
 msgstr "Authentifizierung fehlgeschlagen"
 
-#: src/mn-mail-icon.gob:84 ui/summary-dialog.glade.h:2
+#: src/mn-mail-icon.gob:92 ui/summary-dialog.glade.h:2
+msgid "_Launch Mail Reader"
+msgstr ""
+
+#: src/mn-mail-icon.gob:93 ui/summary-dialog.glade.h:3
 msgid "_Update"
 msgstr "_Aktualisieren"
 
-#: src/mn-mail-icon.gob:90
+#: src/mn-mail-icon.gob:99
 msgid "R_emove From Notification Area"
 msgstr "Aus dem Benachrichtigungsfeld entfernen"
 
@@ -825,7 +873,7 @@ msgstr "Vollständig"
 msgid "Whether the properties are completely filled or not"
 msgstr "Legt fest, ob die Einstellungen vollständig ausgefüllt sind"
 
-#: src/mn-mailbox-view.gob:263 src/mn-message-label.gob:74
+#: src/mn-mailbox-view.gob:263 src/mn-message-box.gob:58
 msgid "Mailbox"
 msgstr "Postfach"
 
@@ -851,35 +899,36 @@ msgid "The mailbox human-readable name"
 msgstr "Der lesbare Postfachname"
 
 #: src/mn-mailbox.gob:145
-msgid "Whether the mailbox has to be manually checked or not"
+#, fuzzy
+msgid "Whether the mailbox has to be polled or not"
 msgstr "Legt fest, ob das Postfach manuell überprüft werden soll"
 
-#: src/mn-mailbox.gob:150
+#: src/mn-mailbox.gob:151
 msgid "Whether the mailbox has new mail or not"
 msgstr "Legt fest, ob das Postfach neue Nachrichten enthält"
 
-#: src/mn-mailbox.gob:155
+#: src/mn-mailbox.gob:156
 msgid "The list of new and unread MNMessage objects"
 msgstr "Die Liste neuer und ungelesener MNMessage-Objekte"
 
-#: src/mn-mailbox.gob:209
+#: src/mn-mailbox.gob:210
 msgid "The mailbox error, if any"
 msgstr "Der Postfachfehler, falls vorhanden"
 
-#: src/mn-mailbox.gob:308
+#: src/mn-mailbox.gob:309
 msgid "does not exist"
 msgstr "existiert nicht"
 
-#: src/mn-mailbox.gob:340
+#: src/mn-mailbox.gob:341
 msgid "unknown format"
 msgstr "unbekanntes Format"
 
-#: src/mn-mailbox.gob:406
+#: src/mn-mailbox.gob:407
 #, c-format
 msgid "unable to enable immediate notification for %s: %s"
 msgstr "Die Sofortbenachrichtigung konnte für %s nicht aktiviert werden: %s"
 
-#: src/mn-mailbox.gob:424
+#: src/mn-mailbox.gob:425
 #, fuzzy, c-format
 msgid ""
 "As a fallback, they will be checked every %i second (this delay is "
@@ -898,7 +947,7 @@ msgstr[1] ""
 "alle %i Sekunden überprüft (Dieser Wert kann über den Einstellungsdialog "
 "angepasst werden)."
 
-#: src/mn-mailbox.gob:435
+#: src/mn-mailbox.gob:436
 #, fuzzy, c-format
 msgid ""
 "As a fallback, they will be checked every %i minute (this delay is "
@@ -917,7 +966,7 @@ msgstr[1] ""
 "alle %i Minuten überprüft (Dieser Wert kann über den Einstellungsdialog "
 "angepasst werden)."
 
-#: src/mn-mailbox.gob:446
+#: src/mn-mailbox.gob:447
 #, fuzzy, c-format
 msgid ""
 "As a fallback, they will be checked approximately every %i minute (this "
@@ -936,11 +985,11 @@ msgstr[1] ""
 "alle %i Minuten überprüft (Dieser Wert kann über den Einstellungsdialog "
 "angepasst werden)."
 
-#: src/mn-mailbox.gob:462
+#: src/mn-mailbox.gob:463
 msgid "A monitoring error has occurred"
 msgstr "Bei der Überwachung ist ein Fehler aufgetreten"
 
-#: src/mn-mailbox.gob:463
+#: src/mn-mailbox.gob:464
 #, c-format
 msgid ""
 "Mail Notification was unable to enable immediate notification for one or "
@@ -949,26 +998,26 @@ msgstr ""
 "Die E-Mail-Eingangsüberwachung konnte die Sofortbenachrichtigung für ein "
 "oder mehrere Postfächer nicht aktivieren: %s"
 
-#: src/mn-mailboxes.gob:143
+#: src/mn-mailboxes.gob:142
 msgid "Whether one or more of the mailboxes has to be polled"
 msgstr "Legt fest, ob ein oder mehrere Postfächer befragt werden sollen"
 
-#: src/mn-mailboxes.gob:276
+#: src/mn-mailboxes.gob:272
 #, c-format
 msgid "%s is unsupported: %s"
 msgstr "%s wird nicht unterstützt: %s"
 
-#: src/mn-mailboxes.gob:307
+#: src/mn-mailboxes.gob:304
 #, c-format
 msgid "%s has new mail"
 msgstr "%s hat neue Nachrichten"
 
-#: src/mn-mailboxes.gob:307
+#: src/mn-mailboxes.gob:304
 #, c-format
 msgid "%s has no new mail"
 msgstr "%s hat keine neuen Nachrichten"
 
-#: src/mn-mailboxes.gob:333
+#: src/mn-mailboxes.gob:330
 #, c-format
 msgid "%s reported an error: %s"
 msgstr "%s hat einen Fehler erzeugt: %s"
@@ -1089,47 +1138,47 @@ msgstr "Postfach konnte nicht neu geladen werden: %s"
 msgid "unable to open mailbox: %s"
 msgstr "Postfach konnte nicht geöffnet werden: %s"
 
-#: src/mn-message-label.gob:77
+#: src/mn-message-box.gob:61
 msgid "Unreadable message"
 msgstr "Nichtlesbare Nachricht"
 
-#: src/mn-message-label.gob:97
+#: src/mn-message-box.gob:66
 msgid "From"
 msgstr "Von"
 
-#: src/mn-message-label.gob:98
+#: src/mn-message-box.gob:67
 msgid "Subject"
 msgstr "Betreff"
 
-#: src/mn-message-label.gob:102
+#: src/mn-message-box.gob:72
 msgid "Sent"
 msgstr "Gesendet"
 
-#: src/mn-message-label.gob:151
+#: src/mn-message-box.gob:184
 #, c-format
 msgid "%i second ago"
 msgid_plural "%i seconds ago"
 msgstr[0] "Vor %i Sekunde"
 
-#: src/mn-message-label.gob:155
+#: src/mn-message-box.gob:188
 #, c-format
 msgid "%i minute ago"
 msgid_plural "%i minutes ago"
 msgstr[0] "Vor %i Minute"
 
-#: src/mn-message-label.gob:160
+#: src/mn-message-box.gob:193
 #, c-format
 msgid "%i hour ago"
 msgid_plural "%i hours ago"
 msgstr[0] "Vor %i Stunde"
 
-#: src/mn-message-label.gob:165
+#: src/mn-message-box.gob:198
 #, c-format
 msgid "%i day ago"
 msgid_plural "%i days ago"
 msgstr[0] "Vor %i Tag"
 
-#: src/mn-message-label.gob:170
+#: src/mn-message-box.gob:203
 #, c-format
 msgid "%i week ago"
 msgid_plural "%i weeks ago"
@@ -1178,15 +1227,15 @@ msgstr "_band-internes SSL/TLS"
 msgid "SSL/TLS on sepa_rate port"
 msgstr "SSL/TLS über e_xtra Port"
 
-#: src/mn-pop3-mailbox-properties.gob:85
+#: src/mn-pop3-mailbox-properties.gob:86
 msgid "The hostname or IP address of the POP3 server"
 msgstr "Der Name oder die IP-Adresse des POP3-Servers"
 
-#: src/mn-pop3-mailbox-properties.gob:86
+#: src/mn-pop3-mailbox-properties.gob:87
 msgid "Your username on the POP3 server"
 msgstr "Ihr Benutzername für diesen POP3-Server"
 
-#: src/mn-pop3-mailbox-properties.gob:87
+#: src/mn-pop3-mailbox-properties.gob:88
 msgid ""
 "Your password on the POP3 server (if left blank, you will be prompted for "
 "the password when needed)"
@@ -1194,7 +1243,7 @@ msgstr ""
 "Ihr Passwort für diesen POP3-Server (falls Sie nichts eingeben, werden Sie "
 "jedesmal wenn es notwendig ist nach dem Passwort gefragt)"
 
-#: src/mn-pop3-mailbox-properties.gob:88 src/mn-pop3-mailbox-properties.gob:89
+#: src/mn-pop3-mailbox-properties.gob:89 src/mn-pop3-mailbox-properties.gob:90
 msgid "The port number of the POP3 server"
 msgstr "Die Port-Nummer des POP3-Servers"
 
@@ -1202,11 +1251,11 @@ msgstr "Die Port-Nummer des POP3-Servers"
 msgid "invalid arguments for the LOGIN-DELAY capability"
 msgstr "Ungültige Argumente für die Anmeldeverzögerung"
 
-#: src/mn-pop3-mailbox.gob:549
+#: src/mn-pop3-mailbox.gob:556
 msgid "unknown error"
 msgstr "Unbekannter Fehler"
 
-#: src/mn-pop3-mailbox.gob:681
+#: src/mn-pop3-mailbox.gob:690
 #, c-format
 msgid "honouring LOGIN-DELAY, sleeping for %i second"
 msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds"
@@ -1215,82 +1264,66 @@ msgstr[0] ""
 "gewartetAnmeldeverzögerung wird berücksichtigt, es wird für %i Sekunden "
 "gewartet"
 
-#: src/mn-pop3-mailbox.gob:840
+#: src/mn-pop3-mailbox.gob:849
 msgid "server does not support APOP authentication"
 msgstr "Der Server unterstütz eine Authentifizierung per APOP nicht."
 
-#: src/mn-pop3-mailbox.gob:868
+#: src/mn-pop3-mailbox.gob:877
 msgid "falling back to APOP authentication"
 msgstr "Es wird auf Authentifizierung mit APOP zurück gegriffen."
 
-#: src/mn-pop3-mailbox.gob:873
+#: src/mn-pop3-mailbox.gob:882
 msgid "falling back to USER/PASS authentication"
 msgstr ""
 "Es wird auf Authentifizierung per Nutzername und Passwort zurück gegriffen."
 
-#: src/mn-properties.c:170
+#: src/mn-properties.c:181
 msgid "top left"
 msgstr "oben links"
 
-#: src/mn-properties.c:171
+#: src/mn-properties.c:182
 msgid "top right"
 msgstr "oben rechts"
 
-#: src/mn-properties.c:172
+#: src/mn-properties.c:183
 msgid "bottom left"
 msgstr "unten links"
 
-#: src/mn-properties.c:173
+#: src/mn-properties.c:184
 msgid "bottom right"
 msgstr "unten rechts"
 
-#: src/mn-properties.c:251
+#: src/mn-properties.c:270
 msgid "No mailbox selected."
 msgstr "Kein Postfach ausgewählt."
 
-#: src/mn-properties.c:256
+#: src/mn-properties.c:275
 #, c-format
 msgid "%i mailbox selected."
 msgid_plural "%i mailboxes selected."
 msgstr[0] "Ein Posfach ausgewählt."
 msgstr[1] "%i Postfächer ausgewählt."
 
-#: src/mn-shell.gob:86
+#: src/mn-shell.gob:92
 msgid "You have new mail."
 msgstr "Sie haben neue Nachrichten."
 
-#: src/mn-shell.gob:263
-msgid "The following mailbox has new mail:\n"
-msgid_plural "The following mailboxes have new mail:\n"
-msgstr[0] "Dieses Postfach hat neue Nachrichten:\n"
-msgstr[1] "Diese Postfächer haben neue Nachrichten:\n"
-
-#: src/mn-shell.gob:267
-msgid "You have no new mail."
-msgstr "Sie haben keine neuen Nachrichten."
-
-#: src/mn-shell.gob:270
-msgid "The following mailbox reported an error:\n"
-msgid_plural "The following mailboxes reported an error:\n"
-msgstr[0] "Das folgende Postfach hat einen Fehler ausgegeben:\n"
-msgstr[1] "Die folgenden Postfächer haben einen Fehler ausgegeben:\n"
-
-#: src/mn-shell.gob:275
-msgid "The following mailbox is unsupported:\n"
-msgid_plural "The following mailboxes are unsupported:\n"
-msgstr[0] "Das folgende Postfach wird nicht unterstützt:\n"
-msgstr[1] "Die folgenden Postfächer werden nicht unterstützt:\n"
-
-#: src/mn-shell.gob:320
-msgid "A command error has occurred in Mail Notification"
+#: src/mn-shell.gob:347
+msgid "Mailboxes Having New Mail"
 msgstr ""
-"Es ist ein Fehler beim Ausführen eines Befehls in der E-Mail-"
-"Eingangsüberwachung aufgetreten."
 
-#: src/mn-shell.gob:321
-#, c-format
-msgid "Unable to execute \"%s\": %s."
-msgstr "»%s« konnte nicht ausgeführt werden: %s."
+#: src/mn-shell.gob:349
+msgid "Errors"
+msgstr ""
+
+#: src/mn-shell.gob:351
+#, fuzzy
+msgid "Unsupported Mailboxes"
+msgstr "Systempostfach"
+
+#: src/mn-shell.gob:364 ui/summary-dialog.glade.h:1
+msgid "Mail Summary"
+msgstr "Nachrichtenübersicht"
 
 #: src/mn-soup.c:140
 #, c-format
@@ -1392,11 +1425,22 @@ msgstr ""
 msgid "unable to get current time: %s"
 msgstr "Die aktuelle Zeit konnte nicht ermittelt werden: %s"
 
-#: src/mn-util.c:887
+#: src/mn-util.c:906
 #, c-format
 msgid "invalid signal specification \"%s\""
 msgstr "Ungültige Signalspezifikation »%s«"
 
+#: src/mn-util.c:945
+msgid "A command error has occurred in Mail Notification"
+msgstr ""
+"Es ist ein Fehler beim Ausführen eines Befehls in der E-Mail-"
+"Eingangsüberwachung aufgetreten."
+
+#: src/mn-util.c:946
+#, c-format
+msgid "Unable to execute \"%s\": %s."
+msgstr "»%s« konnte nicht ausgeführt werden: %s."
+
 #: ui/authentication.glade.h:1 ui/properties.glade.h:2
 msgid "*"
 msgstr "*"
@@ -1418,60 +1462,74 @@ msgid "<span weight=\"bold\">Commands</span>"
 msgstr "<span weight=\"bold\">Befehle</span>"
 
 #: ui/properties.glade.h:4
+#, fuzzy
+msgid "<span weight=\"bold\">Double-click Action</span>"
+msgstr "<span weight=\"bold\">Position</span>"
+
+#: ui/properties.glade.h:5
 msgid "<span weight=\"bold\">General</span>"
 msgstr "<span weight=\"bold\">Allgemein</span>"
 
-#: ui/properties.glade.h:5
+#: ui/properties.glade.h:6
 msgid "<span weight=\"bold\">Mailbox List</span>"
 msgstr "<span weight=\"bold\">Postfächer</span>"
 
-#: ui/properties.glade.h:6
+#: ui/properties.glade.h:7
 msgid "<span weight=\"bold\">Position</span>"
 msgstr "<span weight=\"bold\">Position</span>"
 
-#: ui/properties.glade.h:7
+#: ui/properties.glade.h:8
 msgid "General"
 msgstr "Allgemein"
 
-#: ui/properties.glade.h:8
+#: ui/properties.glade.h:9
 msgid "Hori_zontal offset:"
 msgstr "_Horizontaler Abstand:"
 
-#: ui/properties.glade.h:9
+#: ui/properties.glade.h:10
 msgid "Mail Notification Properties"
 msgstr "Einstellung der E-Mail-Eingangsüberwachung"
 
-#: ui/properties.glade.h:10
+#: ui/properties.glade.h:11
 msgid "Mail Summary Popup"
 msgstr "Aufklappende Nachrichtenübersicht"
 
-#: ui/properties.glade.h:11
+#: ui/properties.glade.h:12
 msgid "Mailboxes"
 msgstr "Postfächer"
 
-#: ui/properties.glade.h:12
+#: ui/properties.glade.h:13
+msgid "Only display _recent mail"
+msgstr ""
+
+#: ui/properties.glade.h:14
 msgid "P_osition:"
 msgstr "P_osition:"
 
-#: ui/properties.glade.h:13
+#: ui/properties.glade.h:15
 msgid "The amount of time to wait before closing the mail summary popup"
 msgstr "Die Wartedauer ehe die Nachrichtenübersicht geschlossen wurde"
 
-#: ui/properties.glade.h:14
+#: ui/properties.glade.h:16
 msgid "The amount of time to wait between mail checks"
 msgstr "Die Zeit die zwischen zwei Überprüfungen auf neue Nachrichten vergeht"
 
-#: ui/properties.glade.h:15
+#: ui/properties.glade.h:17
+#, fuzzy
+msgid "The command to run to launch the mail reader"
+msgstr "Der auszuführende Befehl wenn alle Nachrichten gelesen wurden"
+
+#: ui/properties.glade.h:18
 msgid "The command to run when all mail is read"
 msgstr "Der auszuführende Befehl wenn alle Nachrichten gelesen wurden"
 
-#: ui/properties.glade.h:16
+#: ui/properties.glade.h:19
 msgid "The command to run when new mail arrives"
 msgstr ""
 "Geben Sie hier den Befehl ein, der ausgeführt wird sobald eine neue "
 "Nachricht eintrifft."
 
-#: ui/properties.glade.h:17
+#: ui/properties.glade.h:20
 msgid ""
 "The number of pixels to leave between the left or right side of the screen "
 "and the mail summary popup"
@@ -1479,7 +1537,7 @@ msgstr ""
 "Die Anzahl an Pixeln die zwischen dem linken oder rechten Bildschirmrand und "
 "der Nachrichtenübersicht."
 
-#: ui/properties.glade.h:18
+#: ui/properties.glade.h:21
 msgid ""
 "The number of pixels to leave between the top or bottom side of the screen "
 "and the mail summary popup"
@@ -1487,42 +1545,53 @@ msgstr ""
 "Die Anzahl an Pixel zwischen dem oberen oder unteren Bildschirmrand und der "
 "Nachrichtenübersicht."
 
-#: ui/properties.glade.h:19
+#: ui/properties.glade.h:22
 msgid "When _all mail is read:"
 msgstr "Wenn alle Nachricht _gelesen wurden:"
 
-#: ui/properties.glade.h:20
+#: ui/properties.glade.h:23
 msgid "When _new mail arrives:"
 msgstr "Wenn neue Nachricht _eintrifft:"
 
-#: ui/properties.glade.h:21
+#: ui/properties.glade.h:24
 msgid "Whether the status icon should blink on errors or not"
 msgstr ""
 "Wenn diese Option gewählt ist, blinkt das  Nachrichtensymbol bei Auftreten "
 "eines Fehlers."
 
-#: ui/properties.glade.h:22
+#: ui/properties.glade.h:25
 msgid "Whether to automatically close the mail summary popup or not"
 msgstr "Legt fest, ob die Nachrichtenübersicht automatisch geschlossen wird"
 
-#: ui/properties.glade.h:23
+#: ui/properties.glade.h:26
 msgid "Whether to display the mail summary popup when new mail arrives or not"
 msgstr ""
 "Legt fest, ob die Nachrichtenübersicht aufklappt wenn eine neue Nachricht "
 "eintrifft"
 
-#: ui/properties.glade.h:24
+#: ui/properties.glade.h:27
+#, fuzzy
+msgid "Whether to hide previously displayed mail or not"
+msgstr "Legt fest, ob das Postfach neue Nachrichten enthält"
+
+#: ui/properties.glade.h:28
 msgid "Whether to run a command when all mail is read or not"
 msgstr ""
 "Legt fest, ob ein Befehl ausgeführt wird wenn alle Nachrichten gelesen wurden"
 
-#: ui/properties.glade.h:25
+#: ui/properties.glade.h:29
 msgid "Whether to run a command when new mail arrives or not"
 msgstr ""
 "Wenn diese Option ausgewählt ist, können Sie einen Befehl angeben der "
 "ausgeführt wird, sobald eine neue Nachricht eintrifft."
 
-#: ui/properties.glade.h:26
+#: ui/properties.glade.h:30
+#, fuzzy
+msgid "Whether to set a mail reader or not"
+msgstr ""
+"Legt fest, ob ein Befehl ausgeführt wird wenn alle Nachrichten gelesen wurden"
+
+#: ui/properties.glade.h:31
 msgid ""
 "Whether to start Mail Notification when you log into your GNOME session or "
 "not"
@@ -1530,46 +1599,56 @@ msgstr ""
 "Wenn diese Option ausgewählt ist, wird die E-Mail-Eingangsüberwachnung beim "
 "Starten von GNOME ebenfalls gestartet."
 
-#: ui/properties.glade.h:27
+#: ui/properties.glade.h:32
 msgid "_Automatically close after:"
 msgstr "_Automatisch schließen nach:"
 
-#: ui/properties.glade.h:28
+#: ui/properties.glade.h:33
 msgid "_Blink on errors"
 msgstr "_Bei Fehler blinken"
 
-#: ui/properties.glade.h:29
+#: ui/properties.glade.h:34
 msgid "_Delay between mail checks:"
 msgstr "_Nach neuen Nachrichten sehen alle:"
 
-#: ui/properties.glade.h:30
+#: ui/properties.glade.h:35
+#, fuzzy
+msgid "_Display the mail summary dialog"
+msgstr "Die Nachrichtenübersicht anzeigen"
+
+#: ui/properties.glade.h:36
 msgid "_Enable mail summary popup"
 msgstr "_Aufklappende Nachrichtenübersicht aktivieren"
 
-#: ui/properties.glade.h:31
+#: ui/properties.glade.h:37
+msgid "_Launch the mail reader"
+msgstr ""
+
+#: ui/properties.glade.h:38
+#, fuzzy
+msgid "_Mail reader:"
+msgstr "_Nachrichtenübersicht"
+
+#: ui/properties.glade.h:39
 msgid "_Start Mail Notification on GNOME login"
 msgstr "_Laden beim Starten von  GNOME"
 
-#: ui/properties.glade.h:32
+#: ui/properties.glade.h:40
 msgid "_Vertical offset:"
 msgstr "_Vertikaler Abstand:"
 
-#: ui/properties.glade.h:33
+#: ui/properties.glade.h:41
 msgid "minutes"
 msgstr "Minuten"
 
-#: ui/properties.glade.h:34
+#: ui/properties.glade.h:42
 msgid "pixels"
 msgstr "Pixel"
 
-#: ui/properties.glade.h:35
+#: ui/properties.glade.h:43
 msgid "seconds"
 msgstr "Sekunden"
 
-#: ui/summary-dialog.glade.h:1
-msgid "Mail Summary"
-msgstr "Nachrichtenübersicht"
-
 #: ui/summary-popup.glade.h:1
 msgid "<span size=\"larger\" weight=\"bold\">Mail Summary</span>"
 msgstr "<span size=\"larger\" weight=\"bold\">Nachrichtenübersicht</span>"
@@ -1622,3 +1701,21 @@ msgstr "Konfiguration über_springen"
 #~ "über den Einstellungsdialog angepasst werden).Als Rücksicherung werden "
 #~ "diese alle %i Minuten überprüft (Dieser Wert kann über den "
 #~ "Einstellungsdialog angepasst werden)."
+
+#~ msgid "The following mailbox has new mail:\n"
+#~ msgid_plural "The following mailboxes have new mail:\n"
+#~ msgstr[0] "Dieses Postfach hat neue Nachrichten:\n"
+#~ msgstr[1] "Diese Postfächer haben neue Nachrichten:\n"
+
+#~ msgid "You have no new mail."
+#~ msgstr "Sie haben keine neuen Nachrichten."
+
+#~ msgid "The following mailbox reported an error:\n"
+#~ msgid_plural "The following mailboxes reported an error:\n"
+#~ msgstr[0] "Das folgende Postfach hat einen Fehler ausgegeben:\n"
+#~ msgstr[1] "Die folgenden Postfächer haben einen Fehler ausgegeben:\n"
+
+#~ msgid "The following mailbox is unsupported:\n"
+#~ msgid_plural "The following mailboxes are unsupported:\n"
+#~ msgstr[0] "Das folgende Postfach wird nicht unterstützt:\n"
+#~ msgstr[1] "Die folgenden Postfächer werden nicht unterstützt:\n"
diff --git a/po/fr.gmo b/po/fr.gmo
Binary files differ.
diff --git a/po/fr.po b/po/fr.po
@@ -8,10 +8,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: mail-notification 0.7.1\n"
+"Project-Id-Version: mail-notification 0.8.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2004-10-25 15:26+0200\n"
-"PO-Revision-Date: 2004-10-25 15:22+0200\n"
+"POT-Creation-Date: 2004-10-31 18:42+0100\n"
+"PO-Revision-Date: 2004-10-31 18:39+0100\n"
 "Last-Translator: Jean-Yves Lefort <jylefort@brutele.be>\n"
 "Language-Team: Jean-Yves Lefort <jylefort@brutele.be>\n"
 "MIME-Version: 1.0\n"
@@ -34,7 +34,7 @@ msgstr "Configurer la Notification de Courrier"
 #: data/mail-notification-properties.desktop.in.h:2
 #: data/mail-notification.desktop.in.h:2
 #: data/mail-notification.soundlist.in.h:1 src/mn-about-dialog.gob:40
-#: src/mn-mail-icon.gob:163 src/mn-main.c:271
+#: src/mn-mail-icon.gob:194 src/mn-main.c:271
 msgid "Mail Notification"
 msgstr "Notification de Courrier"
 
@@ -65,74 +65,99 @@ msgstr ""
 "immédiate"
 
 #: data/mail-notification.schemas.in.h:6
+msgid "Double-click action"
+msgstr "Action du Double-click"
+
+#: data/mail-notification.schemas.in.h:7
 msgid "Enable mail summary popup"
 msgstr "Activer le popup d'aperçu du courrier"
 
-#: data/mail-notification.schemas.in.h:7
+#: data/mail-notification.schemas.in.h:8
 msgid "Fingerprints of trusted X509 certificates"
 msgstr "Empreintes digitales des certificats X509 de confiance"
 
-#: data/mail-notification.schemas.in.h:8
+#: data/mail-notification.schemas.in.h:9
 msgid "Has already been run"
 msgstr "A déjà été exécuté"
 
-#: data/mail-notification.schemas.in.h:9
+#: data/mail-notification.schemas.in.h:10
 msgid "Height of mail summary dialog"
 msgstr "Hauteur de la boîte de dialogue contenant l'aperçu du courrier"
 
-#: data/mail-notification.schemas.in.h:10
+#: data/mail-notification.schemas.in.h:11
 msgid "Height of properties dialog"
 msgstr "Hauteur de la boîte de dialogue contenant les propriétés"
 
-#: data/mail-notification.schemas.in.h:11
+#: data/mail-notification.schemas.in.h:12
 msgid "Mail read command"
 msgstr "Commande de courrier lu"
 
-#: data/mail-notification.schemas.in.h:12
+#: data/mail-notification.schemas.in.h:13
+msgid "Mail reader command"
+msgstr "Commande de lecteur de courrier"
+
+#: data/mail-notification.schemas.in.h:14
 msgid "Mail summary popup horizontal offset"
 msgstr "Décalage horizontal du popup d'aperçu du courrier"
 
-#: data/mail-notification.schemas.in.h:13
+#: data/mail-notification.schemas.in.h:15
 msgid "Mail summary popup position"
 msgstr "Position du popup d'aperçu du courrier"
 
-#: data/mail-notification.schemas.in.h:14
+#: data/mail-notification.schemas.in.h:16
 msgid "Mail summary popup vertical offset"
 msgstr "Décalage vertical du popup d'aperçu du courrier"
 
-#: data/mail-notification.schemas.in.h:15
+#: data/mail-notification.schemas.in.h:17
 msgid "Mailbox list"
 msgstr "Liste des boîtes aux lettres"
 
-#: data/mail-notification.schemas.in.h:16
+#: data/mail-notification.schemas.in.h:18
 msgid "Minutes between mail checks"
 msgstr "Minutes entre les vérifications de courrier"
 
-#: data/mail-notification.schemas.in.h:17
+#: data/mail-notification.schemas.in.h:19
 msgid "Minutes to wait before closing the mail summary popup"
 msgstr "Minutes à attendre avant de fermer le popup d'aperçu du courrier"
 
-#: data/mail-notification.schemas.in.h:18
+#: data/mail-notification.schemas.in.h:20
 msgid "New mail command"
 msgstr "Commande de nouveau message"
 
-#: data/mail-notification.schemas.in.h:19
+#: data/mail-notification.schemas.in.h:21
+msgid "Only display recent mail in mail summary popup"
+msgstr ""
+"Afficher uniquement le courrier récent dans le popup d'aperçu du courrier"
+
+#: data/mail-notification.schemas.in.h:22
 msgid "Run a command when all mail is read"
 msgstr "Exécuter une commande lorsque tout le courrier est lu"
 
-#: data/mail-notification.schemas.in.h:20
+#: data/mail-notification.schemas.in.h:23
 msgid "Run a command when new mail arrives"
 msgstr "Exécuter une commande lorsque du nouveau courrier arrive"
 
-#: data/mail-notification.schemas.in.h:21
+#: data/mail-notification.schemas.in.h:24
 msgid "Seconds between mail checks"
 msgstr "Secondes entre les vérifications de courrier"
 
-#: data/mail-notification.schemas.in.h:22
+#: data/mail-notification.schemas.in.h:25
 msgid "Seconds to wait before closing the mail summary popup"
 msgstr "Secondes à attendre avant de fermer le popup d'aperçu du courrier"
 
-#: data/mail-notification.schemas.in.h:23
+#: data/mail-notification.schemas.in.h:26
+msgid "Set a mail reader"
+msgstr "Spécifier un lecteur de courrier"
+
+#: data/mail-notification.schemas.in.h:27
+msgid ""
+"The action to perform when the icon is double-clicked. Must be \"display-"
+"mail-summary\" or \"launch-mail-reader\"."
+msgstr ""
+"L'action à effectuer lorsque l'icône est double-clickée. Doit être \"display-"
+"mail-summary\" ou \"launch-mail-reader\"."
+
+#: data/mail-notification.schemas.in.h:28
 msgid ""
 "The amount of time to wait before closing the mail summary popup (minutes "
 "part)."
@@ -140,7 +165,7 @@ msgstr ""
 "La quantité de temps à attendre avant de fermer le popup d'aperçu du "
 "courrier (partie minutes)."
 
-#: data/mail-notification.schemas.in.h:24
+#: data/mail-notification.schemas.in.h:29
 msgid ""
 "The amount of time to wait before closing the mail summary popup (seconds "
 "part)."
@@ -148,28 +173,32 @@ msgstr ""
 "La quantité de temps à attendre avant de fermer le popup d'aperçu du "
 "courrier (partie secondes)."
 
-#: data/mail-notification.schemas.in.h:25
+#: data/mail-notification.schemas.in.h:30
+msgid "The command to run to launch the mail reader."
+msgstr "La commande à exécuter pour démarrer le lecteur de courrier."
+
+#: data/mail-notification.schemas.in.h:31
 msgid "The command to run when all mail is read."
 msgstr "La commande à exécuter lorsque tout le courrier est lu"
 
-#: data/mail-notification.schemas.in.h:26
+#: data/mail-notification.schemas.in.h:32
 msgid "The command to run when new mail arrives."
 msgstr "La commande à exécuter lorsque du nouveau courrier arrive."
 
-#: data/mail-notification.schemas.in.h:27
+#: data/mail-notification.schemas.in.h:33
 msgid "The height of the mail summary dialog in pixels."
 msgstr ""
 "La hauteur de la boîte de dialogue contenant l'aperçu du courrier en pixels."
 
-#: data/mail-notification.schemas.in.h:28
+#: data/mail-notification.schemas.in.h:34
 msgid "The height of the properties dialog in pixels."
 msgstr "La hauteur de la boîte de dialogue contenant les propriétés en pixels."
 
-#: data/mail-notification.schemas.in.h:29
+#: data/mail-notification.schemas.in.h:35
 msgid "The list of mailboxes to monitor."
 msgstr "La liste des boîtes aux lettres à surveiller."
 
-#: data/mail-notification.schemas.in.h:30
+#: data/mail-notification.schemas.in.h:36
 msgid ""
 "The list of trusted SSL/TLS servers (hostname:port) lacking a X509 "
 "certificate."
@@ -177,14 +206,14 @@ msgstr ""
 "La liste des serveurs SSL/TLS (hôte:port) de confiance auxquels il manque un "
 "certificat X509."
 
-#: data/mail-notification.schemas.in.h:31
+#: data/mail-notification.schemas.in.h:37
 msgid ""
 "The list of trusted X509 certificates, represented by their MD5 fingerprint."
 msgstr ""
 "La liste des certificats X509 de confiance, représentés par leur empreinte "
 "digitale."
 
-#: data/mail-notification.schemas.in.h:32
+#: data/mail-notification.schemas.in.h:38
 msgid ""
 "The number of pixels to leave between the left or right side of the screen "
 "and the mail summary popup."
@@ -192,7 +221,7 @@ msgstr ""
 "Le nombre de pixels à laisser entre la gauche ou la droite de l'écran et le "
 "popup d'aperçu du courrier."
 
-#: data/mail-notification.schemas.in.h:33
+#: data/mail-notification.schemas.in.h:39
 msgid ""
 "The number of pixels to leave between the top or bottom side of the screen "
 "and the mail summary popup."
@@ -200,7 +229,7 @@ msgstr ""
 "Le nombre de pixels à laisser entre le haut ou le bas de l'écran et le popup "
 "d'aperçu du courrier."
 
-#: data/mail-notification.schemas.in.h:34
+#: data/mail-notification.schemas.in.h:40
 msgid ""
 "The position of the mail summary popup. Must be \"top-left\", \"top-right\", "
 "\"bottom-left\" or \"bottom-right\"."
@@ -208,39 +237,46 @@ msgstr ""
 "La position du popup d'aperçu du courrier. Doit etre \"top-left\", \"top-"
 "right\", \"bottom-left\" or \"bottom-right\"."
 
-#: data/mail-notification.schemas.in.h:35
+#: data/mail-notification.schemas.in.h:41
 msgid "The width of the mail summary dialog in pixels."
 msgstr ""
 "La largeur de la boîte de dialogue contenant l'aperçu du courrier en pixels."
 
-#: data/mail-notification.schemas.in.h:36
+#: data/mail-notification.schemas.in.h:42
 msgid "The width of the properties dialog in pixels."
 msgstr "La largeur de la boîte de dialogue contenant les propriétés en pixels."
 
-#: data/mail-notification.schemas.in.h:37
+#: data/mail-notification.schemas.in.h:43
 msgid "Trusted servers list"
 msgstr "Liste des serveurs de confiance"
 
-#: data/mail-notification.schemas.in.h:38
+#: data/mail-notification.schemas.in.h:44
 msgid "Whether Mail Notification has already been run or not."
 msgstr "Si la Notification de Courrier a déjà été exécutée ou pas."
 
-#: data/mail-notification.schemas.in.h:39
+#: data/mail-notification.schemas.in.h:45
 msgid "Whether the status icon should blink on errors or not."
 msgstr "Si l'icône de statut doit clignoter lors d'erreurs ou pas."
 
-#: data/mail-notification.schemas.in.h:40
+#: data/mail-notification.schemas.in.h:46
 msgid "Whether to automatically close the mail summary popup or not."
 msgstr ""
 "Si le popup d'aperçu du courrier doit être automatiquement fermé ou pas."
 
-#: data/mail-notification.schemas.in.h:41
+#: data/mail-notification.schemas.in.h:47
 msgid "Whether to display the mail summary popup when new mail arrives or not."
 msgstr ""
 "Si le popup d'aperçu du courrier doit être affiché lorsque du nouveau "
 "courrier arrive ou pas."
 
-#: data/mail-notification.schemas.in.h:42
+#: data/mail-notification.schemas.in.h:48
+msgid ""
+"Whether to hide previously displayed mail in the mail summary popup or not."
+msgstr ""
+"Si le courrier précédemment affiché dans le popup d'aperçu du courrier doit "
+"être caché ou pas."
+
+#: data/mail-notification.schemas.in.h:49
 msgid ""
 "Whether to prevent the immediate notification error dialog from being "
 "displayed or not."
@@ -248,21 +284,25 @@ msgstr ""
 "Si il faut empêcher la boîte de dialogue contenant l'erreur de notification "
 "immédiate de s'afficher ou pas."
 
-#: data/mail-notification.schemas.in.h:43
+#: data/mail-notification.schemas.in.h:50
 msgid "Whether to run a command when all mail is read or not."
 msgstr ""
 "Si une commande doit être exécutée lorsque tout le courrier est lu ou pas."
 
-#: data/mail-notification.schemas.in.h:44
+#: data/mail-notification.schemas.in.h:51
 msgid "Whether to run a command when new mail arrives or not."
 msgstr ""
 "Si une commande doit être exécutée lorsque du nouveau courrier arrive ou pas."
 
-#: data/mail-notification.schemas.in.h:45
+#: data/mail-notification.schemas.in.h:52
+msgid "Whether to set a mail reader or not."
+msgstr "Si un lecteur de courrier est spécifié ou pas."
+
+#: data/mail-notification.schemas.in.h:53
 msgid "Width of mail summary dialog"
 msgstr "Largeur de la boîte de dialogue contenant l'aperçu du courrier"
 
-#: data/mail-notification.schemas.in.h:46
+#: data/mail-notification.schemas.in.h:54
 msgid "Width of properties dialog"
 msgstr "Largeur de la boîte de dialogue contenant les propriétés"
 
@@ -460,95 +500,95 @@ msgstr "la réponse \"%s\" n'est pas valable dans le contexte actuel"
 msgid "unable to parse response \"%s\""
 msgstr "impossible d'interpréter la réponse \"%s\""
 
-#: src/mn-client-session.c:592 src/mn-client-session.c:599
+#: src/mn-client-session.c:601 src/mn-client-session.c:608
 #, c-format
 msgid "unable to read from server: %s"
 msgstr "impossible de lire depuis le serveur: %s"
 
-#: src/mn-client-session.c:597
+#: src/mn-client-session.c:606
 msgid "unable to read from server: EOF"
 msgstr "impossible de lire depuis le serveur: EOF"
 
-#: src/mn-client-session.c:609
+#: src/mn-client-session.c:618
 #, c-format
 msgid "unable to decode data using SASL: %s"
 msgstr "impossible de décoder les données en utilisant SASL: %s"
 
-#: src/mn-client-session.c:746
+#: src/mn-client-session.c:755
 #, c-format
 msgid "unable to encode data using SASL: %s"
 msgstr "impossible d'encoder les données en utilisant SASL: %s"
 
-#: src/mn-client-session.c:777 src/mn-client-session.c:784
+#: src/mn-client-session.c:786 src/mn-client-session.c:793
 #, c-format
 msgid "unable to write to server: %s"
 msgstr "impossible d'écrire vers le serveur: %s"
 
-#: src/mn-client-session.c:782
+#: src/mn-client-session.c:791
 msgid "unable to write to server: EOF"
 msgstr "impossible d'écrire vers le serveur: EOF"
 
-#: src/mn-client-session.c:814
+#: src/mn-client-session.c:823
 #, c-format
 msgid "unable to encode Base64: %s"
 msgstr "impossible d'encoder en Base64: %s"
 
-#: src/mn-client-session.c:917
+#: src/mn-client-session.c:927
 #, c-format
 msgid "unable to initialize the SASL library: %s"
 msgstr "impossible d'initialiser la bibliothèque SASL: %s"
 
-#: src/mn-client-session.c:926
+#: src/mn-client-session.c:936
 #, c-format
 msgid "unable to retrieve local address of socket: %s"
 msgstr "impossible d'obtenir l'adresse locale du socket: %s"
 
-#: src/mn-client-session.c:932
+#: src/mn-client-session.c:942
 #, c-format
 msgid "unable to retrieve remote address of socket: %s"
 msgstr "impossible d'obtenir l'adresse distante du socket: %s"
 
-#: src/mn-client-session.c:966
+#: src/mn-client-session.c:976
 #, c-format
 msgid "warning: unable to set SASL security properties: %s"
 msgstr ""
 "avertissement: impossible de spécifier les propriétés de sécurité SASL: %s"
 
-#: src/mn-client-session.c:1005
+#: src/mn-client-session.c:1015
 msgid ""
 "unable to start SASL authentication: SASL asked for something we did not know"
 msgstr ""
 "impossible de démarrer l'authentification SASL: SASL a demandé quelque chose "
 "que nous ne connaissions pas"
 
-#: src/mn-client-session.c:1009
+#: src/mn-client-session.c:1019
 #, c-format
 msgid "unable to start SASL authentication: %s"
 msgstr "impossible de démarrer l'authentification SASL: %s"
 
-#: src/mn-client-session.c:1013
+#: src/mn-client-session.c:1023
 #, c-format
 msgid "unable to create a SASL connection: %s"
 msgstr "impossible de créer une connection SASL: %s"
 
-#: src/mn-client-session.c:1063
+#: src/mn-client-session.c:1073
 msgid "SASL asked for something we did not know, aborting SASL authentication"
 msgstr ""
 "SASL a demandé quelque chose que nous ne connaissions pas, annulation de "
 "l'authentification SASL"
 
-#: src/mn-client-session.c:1067
+#: src/mn-client-session.c:1077
 #, c-format
 msgid "%s, aborting SASL authentication"
 msgstr "%s, annulation de l'authentification SASL"
 
 #. compliance error
-#: src/mn-client-session.c:1072
+#: src/mn-client-session.c:1082
 #, c-format
 msgid "unable to decode Base64 input from server: %s"
 msgstr "impossible de décoder l'entrée Base64 du serveur: %s"
 
-#: src/mn-client-session.c:1075
+#: src/mn-client-session.c:1085
 msgid ""
 "the server sent a SASL challenge, but there was a pending initial SASL "
 "client response"
@@ -556,7 +596,7 @@ msgstr ""
 "le serveur a envoyé un défi SASL, mais il y avait une réponse client SASL "
 "initiale en attente"
 
-#: src/mn-client-session.c:1089
+#: src/mn-client-session.c:1099
 msgid ""
 "the server did not send a SASL challenge, but there was no pending initial "
 "SASL client response"
@@ -564,33 +604,33 @@ msgstr ""
 "le serveur n'a pas envoyé de défi SASL, mais il n'y avait pas de réponse "
 "client SASL initiale en attente"
 
-#: src/mn-client-session.c:1112
+#: src/mn-client-session.c:1122
 #, c-format
 msgid "a SASL security layer of strength factor %i is now active"
 msgstr ""
 "une couche de sécurité SASL de facteur de force %i est maintenant active"
 
 #. a security layer is active but we can't retrieve maxoutbuf -> fatal
-#: src/mn-client-session.c:1117
+#: src/mn-client-session.c:1127
 #, c-format
 msgid "unable to get SASL_MAXOUTBUF property: %s"
 msgstr "impossible d'obtenir la propriété SASL_MAXOUTBUF: %s"
 
-#: src/mn-client-session.c:1123
+#: src/mn-client-session.c:1133
 #, c-format
 msgid "warning: unable to get SASL_SSF property: %s"
 msgstr "avertissement: impossible d'obtenir la propriété SASL_SSF: %s"
 
-#: src/mn-conf.c:123
+#: src/mn-conf.c:136
 #, c-format
 msgid "recursively unsetting %s"
 msgstr "en train de supprimer récursivement %s"
 
-#: src/mn-conf.c:127
+#: src/mn-conf.c:140
 msgid "syncing the GConf database"
 msgstr "en train de synchroniser la base de données GConf"
 
-#: src/mn-conf.c:130
+#: src/mn-conf.c:143
 msgid "completed"
 msgstr "terminé"
 
@@ -606,33 +646,33 @@ msgstr ""
 "Votre mot de passe Gmail (si laissé vide, le mot de passe vous sera demandé "
 "en temps utile)"
 
-#: src/mn-gmail-mailbox.gob:63
+#: src/mn-gmail-mailbox.gob:81
 msgid "libsoup has not been compiled with SSL/TLS support"
 msgstr "libsoup n'a pas été compilé avec le support SSL/TLS"
 
-#: src/mn-gmail-mailbox.gob:105
+#: src/mn-gmail-mailbox.gob:123
 #, c-format
 msgid "unable to parse URI \"%s\""
 msgstr "impossible d'interpréter l'URI \"%s\""
 
-#: src/mn-gmail-mailbox.gob:159
+#: src/mn-gmail-mailbox.gob:177
 #, c-format
 msgid "unable to transfer data: %s"
 msgstr "impossible de transférer des données: %s"
 
-#: src/mn-gmail-mailbox.gob:280
+#: src/mn-gmail-mailbox.gob:298
 msgid "logging in"
 msgstr "ouverture de session en cours"
 
-#: src/mn-gmail-mailbox.gob:358
+#: src/mn-gmail-mailbox.gob:376
 msgid "login failed"
 msgstr "l'ouverture de session a échoué"
 
-#: src/mn-gmail-mailbox.gob:433
+#: src/mn-gmail-mailbox.gob:451
 msgid "searching for unread mail"
 msgstr "recherche du courrier non lu"
 
-#: src/mn-gmail-mailbox.gob:529
+#: src/mn-gmail-mailbox.gob:490
 msgid "unable to parse Gmail data"
 msgstr "impossible d'interpréter les données Gmail"
 
@@ -698,52 +738,52 @@ msgstr "Le numéro de port du serveur IMAP"
 msgid "The mailbox name"
 msgstr "Le nom de la boîte aux lettres"
 
-#: src/mn-imap-mailbox.gob:133 src/mn-pop3-mailbox.gob:142
+#: src/mn-imap-mailbox.gob:164 src/mn-pop3-mailbox.gob:142
 msgid "SSL/TLS support has not been compiled in"
 msgstr "le support SSL/TLS n'a pas été inclus lors de la compilation"
 
-#: src/mn-imap-mailbox.gob:204
+#: src/mn-imap-mailbox.gob:253
 msgid "server did not send capabilities"
 msgstr "le serveur n'a pas envoyé ses possibilités"
 
-#: src/mn-imap-mailbox.gob:319
+#: src/mn-imap-mailbox.gob:374
 msgid "server advertised LOGINDISABLED, not using LOGIN authentication"
 msgstr ""
 "le serveur a annoncé LOGINDISABLED, pas d'utilisation de l'authentification "
 "LOGIN"
 
-#: src/mn-imap-mailbox.gob:320
+#: src/mn-imap-mailbox.gob:375
 msgid "unable to login"
 msgstr "impossible d'ouvrir la session"
 
 #. compliance error
-#: src/mn-imap-mailbox.gob:451
+#: src/mn-imap-mailbox.gob:516
 msgid "server did not send search results"
 msgstr "le serveur n'a pas envoyé les résultats de la recherche"
 
 #. compliance error
-#: src/mn-imap-mailbox.gob:527
+#: src/mn-imap-mailbox.gob:596
 msgid "server did not send all the messages we requested"
 msgstr "le serveur n'a pas envoyé tous les messages que nous avons demandé"
 
-#: src/mn-imap-mailbox.gob:574
+#: src/mn-imap-mailbox.gob:645
 msgid "unable to fetch message"
 msgstr "impossible d'obtenir le message"
 
 #. compliance error
-#: src/mn-imap-mailbox.gob:621
+#: src/mn-imap-mailbox.gob:763
 msgid "server did not send status"
 msgstr "le serveur n'a pas envoyé de statut"
 
-#: src/mn-imap-mailbox.gob:856 src/mn-pop3-mailbox.gob:913
+#: src/mn-imap-mailbox.gob:1035 src/mn-pop3-mailbox.gob:922
 msgid "unknown server error"
 msgstr "erreur serveur inconnue"
 
-#: src/mn-imap-mailbox.gob:927 src/mn-pop3-mailbox.gob:226
+#: src/mn-imap-mailbox.gob:1106 src/mn-pop3-mailbox.gob:226
 msgid "server does not support in-band SSL/TLS"
 msgstr "le serveur ne supporte pas le mode SSL/TLS interne"
 
-#: src/mn-imap-mailbox.gob:946 src/mn-pop3-mailbox.gob:832
+#: src/mn-imap-mailbox.gob:1125 src/mn-pop3-mailbox.gob:841
 msgid ""
 "a SASL authentication mechanism was selected but SASL support has not been "
 "compiled in"
@@ -751,24 +791,28 @@ msgstr ""
 "un mécanisme d'authentification SASL a été sélectionné mais le support SASL "
 "n'a pas été inclus lors de la compilation"
 
-#: src/mn-imap-mailbox.gob:954 src/mn-pop3-mailbox.gob:844
+#: src/mn-imap-mailbox.gob:1133 src/mn-pop3-mailbox.gob:853
 #, c-format
 msgid "unknown authentication mechanism \"%s\""
 msgstr "mécanisme d'authentification inconnu \"%s\""
 
-#: src/mn-imap-mailbox.gob:972
+#: src/mn-imap-mailbox.gob:1151
 msgid "falling back to IMAP LOGIN authentication"
 msgstr "rétrogradation vers l'authentification IMAP LOGIN"
 
-#: src/mn-imap-mailbox.gob:977 src/mn-pop3-mailbox.gob:879
+#: src/mn-imap-mailbox.gob:1156 src/mn-pop3-mailbox.gob:888
 msgid "authentication failed"
 msgstr "l'authentification a échoué"
 
-#: src/mn-mail-icon.gob:84 ui/summary-dialog.glade.h:2
+#: src/mn-mail-icon.gob:92 ui/summary-dialog.glade.h:2
+msgid "_Launch Mail Reader"
+msgstr "_Exécuter le Lecteur de Courrier"
+
+#: src/mn-mail-icon.gob:93 ui/summary-dialog.glade.h:3
 msgid "_Update"
 msgstr "_Mettre à Jour"
 
-#: src/mn-mail-icon.gob:90
+#: src/mn-mail-icon.gob:99
 msgid "R_emove From Notification Area"
 msgstr "_Enlever de l'Aire de Notification"
 
@@ -825,7 +869,7 @@ msgstr "Complet"
 msgid "Whether the properties are completely filled or not"
 msgstr "Si les propriétés sont complètement remplies ou pas"
 
-#: src/mn-mailbox-view.gob:263 src/mn-message-label.gob:74
+#: src/mn-mailbox-view.gob:263 src/mn-message-box.gob:58
 msgid "Mailbox"
 msgstr "Boîte aux lettres"
 
@@ -851,35 +895,35 @@ msgid "The mailbox human-readable name"
 msgstr "Le nom, lisible par un humain, de la boîte aux lettres"
 
 #: src/mn-mailbox.gob:145
-msgid "Whether the mailbox has to be manually checked or not"
-msgstr "Si la boîte aux lettres doit être vérifiée manuellement ou pas"
+msgid "Whether the mailbox has to be polled or not"
+msgstr "Si la boîte aux lettres doit être vérifiée explicitement ou pas"
 
-#: src/mn-mailbox.gob:150
+#: src/mn-mailbox.gob:151
 msgid "Whether the mailbox has new mail or not"
 msgstr "Si la boîte aux lettres a du nouveau courrier ou pas"
 
-#: src/mn-mailbox.gob:155
+#: src/mn-mailbox.gob:156
 msgid "The list of new and unread MNMessage objects"
 msgstr "La liste des objets MNMessage neufs et non lus"
 
-#: src/mn-mailbox.gob:209
+#: src/mn-mailbox.gob:210
 msgid "The mailbox error, if any"
 msgstr "L'erreur de la boîte aux lettres si il y en a une"
 
-#: src/mn-mailbox.gob:308
+#: src/mn-mailbox.gob:309
 msgid "does not exist"
 msgstr "n'existe pas"
 
-#: src/mn-mailbox.gob:340
+#: src/mn-mailbox.gob:341
 msgid "unknown format"
 msgstr "format inconnu"
 
-#: src/mn-mailbox.gob:406
+#: src/mn-mailbox.gob:407
 #, c-format
 msgid "unable to enable immediate notification for %s: %s"
 msgstr "impossible d'activer la notification immédiate pour %s: %s"
 
-#: src/mn-mailbox.gob:424
+#: src/mn-mailbox.gob:425
 #, c-format
 msgid ""
 "As a fallback, they will be checked every %i second (this delay is "
@@ -894,7 +938,7 @@ msgstr[1] ""
 "Comme solution de secours, elles seront vérifiées toutes les %i secondes (ce "
 "délai est configurable depuis les Propriétés)."
 
-#: src/mn-mailbox.gob:435
+#: src/mn-mailbox.gob:436
 #, c-format
 msgid ""
 "As a fallback, they will be checked every %i minute (this delay is "
@@ -909,7 +953,7 @@ msgstr[1] ""
 "Comme solution de secours, elles seront vérifiées toutes les %i minutes (ce "
 "délai est configurable depuis les Propriétés)."
 
-#: src/mn-mailbox.gob:446
+#: src/mn-mailbox.gob:447
 #, c-format
 msgid ""
 "As a fallback, they will be checked approximately every %i minute (this "
@@ -924,11 +968,11 @@ msgstr[1] ""
 "Comme solution de secours, elles seront vérifiées approximativement toutes "
 "les %i minutes (ce délai est configurable depuis les Propriétés)."
 
-#: src/mn-mailbox.gob:462
+#: src/mn-mailbox.gob:463
 msgid "A monitoring error has occurred"
 msgstr "Une erreur de surveillance s'est produite"
 
-#: src/mn-mailbox.gob:463
+#: src/mn-mailbox.gob:464
 #, c-format
 msgid ""
 "Mail Notification was unable to enable immediate notification for one or "
@@ -937,27 +981,27 @@ msgstr ""
 "La Notification de Courrier n'a pas été en mesure d'activer la notification "
 "immédiate pour une ou plusieures boîtes aux lettres. %s"
 
-#: src/mn-mailboxes.gob:143
+#: src/mn-mailboxes.gob:142
 msgid "Whether one or more of the mailboxes has to be polled"
 msgstr ""
 "Si une ou plusieurs boîtes aux lettres doivent être vérifiées explicitement"
 
-#: src/mn-mailboxes.gob:276
+#: src/mn-mailboxes.gob:272
 #, c-format
 msgid "%s is unsupported: %s"
 msgstr "%s n'est pas pris en charge: %s"
 
-#: src/mn-mailboxes.gob:307
+#: src/mn-mailboxes.gob:304
 #, c-format
 msgid "%s has new mail"
 msgstr "%s a du nouveau courrier"
 
-#: src/mn-mailboxes.gob:307
+#: src/mn-mailboxes.gob:304
 #, c-format
 msgid "%s has no new mail"
 msgstr "%s n'a pas de nouveau courrier"
 
-#: src/mn-mailboxes.gob:333
+#: src/mn-mailboxes.gob:330
 #, c-format
 msgid "%s reported an error: %s"
 msgstr "%s a indiqué une erreur: %s"
@@ -1077,51 +1121,51 @@ msgstr "erreur lors de la lecture de la boîte aux lettres: %s"
 msgid "unable to open mailbox: %s"
 msgstr "impossible d'ouvrir la boîte aux lettres: %s"
 
-#: src/mn-message-label.gob:77
+#: src/mn-message-box.gob:61
 msgid "Unreadable message"
 msgstr "Message non lisible"
 
-#: src/mn-message-label.gob:97
+#: src/mn-message-box.gob:66
 msgid "From"
 msgstr "De"
 
-#: src/mn-message-label.gob:98
+#: src/mn-message-box.gob:67
 msgid "Subject"
 msgstr "Sujet"
 
-#: src/mn-message-label.gob:102
+#: src/mn-message-box.gob:72
 msgid "Sent"
 msgstr "Envoyé"
 
-#: src/mn-message-label.gob:151
+#: src/mn-message-box.gob:184
 #, c-format
 msgid "%i second ago"
 msgid_plural "%i seconds ago"
 msgstr[0] "il y a %i seconde"
 msgstr[1] "il y a %i secondes"
 
-#: src/mn-message-label.gob:155
+#: src/mn-message-box.gob:188
 #, c-format
 msgid "%i minute ago"
 msgid_plural "%i minutes ago"
 msgstr[0] "il y a %i minute"
 msgstr[1] "il y a %i minutes"
 
-#: src/mn-message-label.gob:160
+#: src/mn-message-box.gob:193
 #, c-format
 msgid "%i hour ago"
 msgid_plural "%i hours ago"
 msgstr[0] "il y a %i heure"
 msgstr[1] "il y a %i heures"
 
-#: src/mn-message-label.gob:165
+#: src/mn-message-box.gob:198
 #, c-format
 msgid "%i day ago"
 msgid_plural "%i days ago"
 msgstr[0] "il y a %i jour"
 msgstr[1] "il y a %i jours"
 
-#: src/mn-message-label.gob:170
+#: src/mn-message-box.gob:203
 #, c-format
 msgid "%i week ago"
 msgid_plural "%i weeks ago"
@@ -1170,15 +1214,15 @@ msgstr "SSL/TLS _interne"
 msgid "SSL/TLS on sepa_rate port"
 msgstr "SSL/TLS sur port sépa_ré"
 
-#: src/mn-pop3-mailbox-properties.gob:85
+#: src/mn-pop3-mailbox-properties.gob:86
 msgid "The hostname or IP address of the POP3 server"
 msgstr "Le nom d'hôte ou adresse IP du serveur POP3"
 
-#: src/mn-pop3-mailbox-properties.gob:86
+#: src/mn-pop3-mailbox-properties.gob:87
 msgid "Your username on the POP3 server"
 msgstr "Votre nom d'utilisateur sur le serveur POP3"
 
-#: src/mn-pop3-mailbox-properties.gob:87
+#: src/mn-pop3-mailbox-properties.gob:88
 msgid ""
 "Your password on the POP3 server (if left blank, you will be prompted for "
 "the password when needed)"
@@ -1186,7 +1230,7 @@ msgstr ""
 "Votre mot de passe sur le serveur POP3 (si laissé vide, le mot de passe vous "
 "sera demandé en temps utile)"
 
-#: src/mn-pop3-mailbox-properties.gob:88 src/mn-pop3-mailbox-properties.gob:89
+#: src/mn-pop3-mailbox-properties.gob:89 src/mn-pop3-mailbox-properties.gob:90
 msgid "The port number of the POP3 server"
 msgstr "Le numéro de port du serveur POP3"
 
@@ -1194,90 +1238,75 @@ msgstr "Le numéro de port du serveur POP3"
 msgid "invalid arguments for the LOGIN-DELAY capability"
 msgstr "arguments invalides pour la possibilité LOGIN-DELAY"
 
-#: src/mn-pop3-mailbox.gob:549
+#: src/mn-pop3-mailbox.gob:556
 msgid "unknown error"
 msgstr "erreur inconnue"
 
-#: src/mn-pop3-mailbox.gob:681
+#: src/mn-pop3-mailbox.gob:690
 #, c-format
 msgid "honouring LOGIN-DELAY, sleeping for %i second"
 msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds"
 msgstr[0] "attente de %i seconde afin d'obéir à LOGIN-DELAY"
 msgstr[1] "attente de %i secondes afin d'obéir à LOGIN-DELAY"
 
-#: src/mn-pop3-mailbox.gob:840
+#: src/mn-pop3-mailbox.gob:849
 msgid "server does not support APOP authentication"
 msgstr "le serveur ne supporte pas l'authentification APOP"
 
-#: src/mn-pop3-mailbox.gob:868
+#: src/mn-pop3-mailbox.gob:877
 msgid "falling back to APOP authentication"
 msgstr "rétrogradation vers l'authentification APOP"
 
-#: src/mn-pop3-mailbox.gob:873
+#: src/mn-pop3-mailbox.gob:882
 msgid "falling back to USER/PASS authentication"
 msgstr "rétrogradation vers l'authentification USER/PASS"
 
-#: src/mn-properties.c:170
+#: src/mn-properties.c:181
 msgid "top left"
 msgstr "en haut à gauche"
 
-#: src/mn-properties.c:171
+#: src/mn-properties.c:182
 msgid "top right"
 msgstr "en haut à droite"
 
-#: src/mn-properties.c:172
+#: src/mn-properties.c:183
 msgid "bottom left"
 msgstr "en bas à gauche"
 
-#: src/mn-properties.c:173
+#: src/mn-properties.c:184
 msgid "bottom right"
 msgstr "en bas à droite"
 
-#: src/mn-properties.c:251
+#: src/mn-properties.c:270
 msgid "No mailbox selected."
 msgstr "Pas de boîte aux lettres sélectionnée."
 
-#: src/mn-properties.c:256
+#: src/mn-properties.c:275
 #, c-format
 msgid "%i mailbox selected."
 msgid_plural "%i mailboxes selected."
 msgstr[0] "%i boîte aux lettres sélectionnée"
 msgstr[1] "%i boîtes aux lettres sélectionnées"
 
-#: src/mn-shell.gob:86
+#: src/mn-shell.gob:92
 msgid "You have new mail."
 msgstr "Vous avez du nouveau courrier."
 
-#: src/mn-shell.gob:263
-msgid "The following mailbox has new mail:\n"
-msgid_plural "The following mailboxes have new mail:\n"
-msgstr[0] "La boîte aux lettres suivante a du nouveau courrier:\n"
-msgstr[1] "Les boîtes aux lettres suivantes ont du nouveau courrier:\n"
-
-#: src/mn-shell.gob:267
-msgid "You have no new mail."
-msgstr "Vous n'avez pas de nouveau courrier."
-
-#: src/mn-shell.gob:270
-msgid "The following mailbox reported an error:\n"
-msgid_plural "The following mailboxes reported an error:\n"
-msgstr[0] "La boîte aux lettres suivante a indiqué une erreur:\n"
-msgstr[1] "Les boîtes aux lettres suivantes ont indiqué une erreur:\n"
-
-#: src/mn-shell.gob:275
-msgid "The following mailbox is unsupported:\n"
-msgid_plural "The following mailboxes are unsupported:\n"
-msgstr[0] "La boîte aux lettres suivante n'est pas prise en charge:\n"
-msgstr[1] "Les boîtes aux lettres suivantes ne sont pas prises en charge:\n"
-
-#: src/mn-shell.gob:320
-msgid "A command error has occurred in Mail Notification"
-msgstr "Une erreur de commande s'est produite dans la Notification de Courrier"
+#: src/mn-shell.gob:347
+msgid "Mailboxes Having New Mail"
+msgstr "Boîtes aux Lettres Ayant du Nouveau Courrier"
 
-#: src/mn-shell.gob:321
-#, c-format
-msgid "Unable to execute \"%s\": %s."
-msgstr "Impossible d'exécuter \"%s\": %s"
+#: src/mn-shell.gob:349
+msgid "Errors"
+msgstr "Erreurs"
+
+#: src/mn-shell.gob:351
+msgid "Unsupported Mailboxes"
+msgstr "Boîtes aux Lettres Non Supportées"
+
+#: src/mn-shell.gob:364 ui/summary-dialog.glade.h:1
+msgid "Mail Summary"
+msgstr "Aperçu du Courrier"
 
 #: src/mn-soup.c:140
 #, c-format
@@ -1378,11 +1407,20 @@ msgstr "Une erreur fatale s'est produite dans la Notification de Courrier"
 msgid "unable to get current time: %s"
 msgstr "impossible d'obtenir l'heure courante: %s"
 
-#: src/mn-util.c:887
+#: src/mn-util.c:906
 #, c-format
 msgid "invalid signal specification \"%s\""
 msgstr "spécification de signal \"%s\" invalide"
 
+#: src/mn-util.c:945
+msgid "A command error has occurred in Mail Notification"
+msgstr "Une erreur de commande s'est produite dans la Notification de Courrier"
+
+#: src/mn-util.c:946
+#, c-format
+msgid "Unable to execute \"%s\": %s."
+msgstr "Impossible d'exécuter \"%s\": %s"
+
 #: ui/authentication.glade.h:1 ui/properties.glade.h:2
 msgid "*"
 msgstr "*"
@@ -1404,59 +1442,71 @@ msgid "<span weight=\"bold\">Commands</span>"
 msgstr "<span weight=\"bold\">Commandes</span>"
 
 #: ui/properties.glade.h:4
+msgid "<span weight=\"bold\">Double-click Action</span>"
+msgstr "<span weight=\"bold\">Action du Double-Click</span>"
+
+#: ui/properties.glade.h:5
 msgid "<span weight=\"bold\">General</span>"
 msgstr "<span weight=\"bold\">Général</span>"
 
-#: ui/properties.glade.h:5
+#: ui/properties.glade.h:6
 msgid "<span weight=\"bold\">Mailbox List</span>"
 msgstr "<span weight=\"bold\">Liste des Boîtes aux Lettres</span>"
 
-#: ui/properties.glade.h:6
+#: ui/properties.glade.h:7
 msgid "<span weight=\"bold\">Position</span>"
 msgstr "<span weight=\"bold\">Position</span>"
 
-#: ui/properties.glade.h:7
+#: ui/properties.glade.h:8
 msgid "General"
 msgstr "Général"
 
-#: ui/properties.glade.h:8
+#: ui/properties.glade.h:9
 msgid "Hori_zontal offset:"
 msgstr "Décalage hori_zontal:"
 
-#: ui/properties.glade.h:9
+#: ui/properties.glade.h:10
 msgid "Mail Notification Properties"
 msgstr "Propriétés de la Notification de Courrier"
 
-#: ui/properties.glade.h:10
+#: ui/properties.glade.h:11
 msgid "Mail Summary Popup"
 msgstr "Popup d'Aperçu du Courrier"
 
-#: ui/properties.glade.h:11
+#: ui/properties.glade.h:12
 msgid "Mailboxes"
 msgstr "Boîtes aux Lettres"
 
-#: ui/properties.glade.h:12
+#: ui/properties.glade.h:13
+msgid "Only display _recent mail"
+msgstr "Afficher uniquement le courrier _récent"
+
+#: ui/properties.glade.h:14
 msgid "P_osition:"
 msgstr "P_osition:"
 
-#: ui/properties.glade.h:13
+#: ui/properties.glade.h:15
 msgid "The amount of time to wait before closing the mail summary popup"
 msgstr ""
 "La quantité de temps à attendre avant de fermer le popup d'aperçu du courrier"
 
-#: ui/properties.glade.h:14
+#: ui/properties.glade.h:16
 msgid "The amount of time to wait between mail checks"
 msgstr "La quantité de temps à attendre entre les vérifications de courrier"
 
-#: ui/properties.glade.h:15
+#: ui/properties.glade.h:17
+msgid "The command to run to launch the mail reader"
+msgstr "La commande à exécuter pour démarrer le lecteur de courrier."
+
+#: ui/properties.glade.h:18
 msgid "The command to run when all mail is read"
 msgstr "La commande à exécuter lorsque tout le courrier est lu"
 
-#: ui/properties.glade.h:16
+#: ui/properties.glade.h:19
 msgid "The command to run when new mail arrives"
 msgstr "La commande à exécuter lorsque du nouveau courrier arrive"
 
-#: ui/properties.glade.h:17
+#: ui/properties.glade.h:20
 msgid ""
 "The number of pixels to leave between the left or right side of the screen "
 "and the mail summary popup"
@@ -1464,7 +1514,7 @@ msgstr ""
 "Le nombre de pixels à laisser entre la gauche ou la droite de l'écran et le "
 "popup d'aperçu du courrier"
 
-#: ui/properties.glade.h:18
+#: ui/properties.glade.h:21
 msgid ""
 "The number of pixels to leave between the top or bottom side of the screen "
 "and the mail summary popup"
@@ -1472,40 +1522,48 @@ msgstr ""
 "Le nombre de pixels à laisser entre le haut ou le bas de l'écran et le popup "
 "d'aperçu du courrier"
 
-#: ui/properties.glade.h:19
+#: ui/properties.glade.h:22
 msgid "When _all mail is read:"
 msgstr "Quand _tout le courrier est lu:"
 
-#: ui/properties.glade.h:20
+#: ui/properties.glade.h:23
 msgid "When _new mail arrives:"
 msgstr "Quand du _nouveau courrier arrive:"
 
-#: ui/properties.glade.h:21
+#: ui/properties.glade.h:24
 msgid "Whether the status icon should blink on errors or not"
 msgstr "Si l'icône de statut doit clignoter lors d'erreurs ou pas"
 
-#: ui/properties.glade.h:22
+#: ui/properties.glade.h:25
 msgid "Whether to automatically close the mail summary popup or not"
 msgstr ""
 "Si le popup d'aperçu du courrier doit être automatiquement fermé ou pas"
 
-#: ui/properties.glade.h:23
+#: ui/properties.glade.h:26
 msgid "Whether to display the mail summary popup when new mail arrives or not"
 msgstr ""
 "Si le popup d'aperçu du courrier doit être affiché lorsque du nouveau "
 "courrier arrive ou pas"
 
-#: ui/properties.glade.h:24
+#: ui/properties.glade.h:27
+msgid "Whether to hide previously displayed mail or not"
+msgstr "Si le courrier précédemment affiché doit être caché ou pas"
+
+#: ui/properties.glade.h:28
 msgid "Whether to run a command when all mail is read or not"
 msgstr ""
 "Si une commande doit être exécutée lorsque tout le courrier est lu ou pas"
 
-#: ui/properties.glade.h:25
+#: ui/properties.glade.h:29
 msgid "Whether to run a command when new mail arrives or not"
 msgstr ""
 "Si une commande doit être exécutée lorsque du nouveau courrier arrive ou pas"
 
-#: ui/properties.glade.h:26
+#: ui/properties.glade.h:30
+msgid "Whether to set a mail reader or not"
+msgstr "Si un lecteur de courrier est spécifié ou pas"
+
+#: ui/properties.glade.h:31
 msgid ""
 "Whether to start Mail Notification when you log into your GNOME session or "
 "not"
@@ -1513,47 +1571,55 @@ msgstr ""
 "Si la Notification de Courrier doit être démarrée lorsque vous ouvrez votre "
 "session GNOME ou pas"
 
-#: ui/properties.glade.h:27
+#: ui/properties.glade.h:32
 msgid "_Automatically close after:"
 msgstr "_Fermer automatiquement après:"
 
-#: ui/properties.glade.h:28
+#: ui/properties.glade.h:33
 msgid "_Blink on errors"
 msgstr "_Clignoter lors d'erreurs"
 
-#: ui/properties.glade.h:29
+#: ui/properties.glade.h:34
 msgid "_Delay between mail checks:"
 msgstr "_Délai entre les vérifications de courrier:"
 
-#: ui/properties.glade.h:30
+#: ui/properties.glade.h:35
+msgid "_Display the mail summary dialog"
+msgstr "_Afficher la boîte de dialogue contenant l'aperçu du courrier"
+
+#: ui/properties.glade.h:36
 msgid "_Enable mail summary popup"
 msgstr "_Activer le popup d'aperçu du courrier"
 
-#: ui/properties.glade.h:31
+#: ui/properties.glade.h:37
+msgid "_Launch the mail reader"
+msgstr "_Exécuter le lecteur de courrier"
+
+#: ui/properties.glade.h:38
+msgid "_Mail reader:"
+msgstr "_Lecteur de courrier:"
+
+#: ui/properties.glade.h:39
 msgid "_Start Mail Notification on GNOME login"
 msgstr ""
 "_Démarrer la Notification de Courrier lors de l'ouverture de session GNOME"
 
-#: ui/properties.glade.h:32
+#: ui/properties.glade.h:40
 msgid "_Vertical offset:"
 msgstr "Décalage _vertical:"
 
-#: ui/properties.glade.h:33
+#: ui/properties.glade.h:41
 msgid "minutes"
 msgstr "minutes"
 
-#: ui/properties.glade.h:34
+#: ui/properties.glade.h:42
 msgid "pixels"
 msgstr "pixels"
 
-#: ui/properties.glade.h:35
+#: ui/properties.glade.h:43
 msgid "seconds"
 msgstr "secondes"
 
-#: ui/summary-dialog.glade.h:1
-msgid "Mail Summary"
-msgstr "Aperçu du Courrier"
-
 #: ui/summary-popup.glade.h:1
 msgid "<span size=\"larger\" weight=\"bold\">Mail Summary</span>"
 msgstr "<span size=\"larger\" weight=\"bold\">Aperçu du Courrier</span>"
diff --git a/po/mail-notification.pot b/po/mail-notification.pot
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2004-10-25 15:26+0200\n"
+"POT-Creation-Date: 2004-10-31 18:42+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -32,7 +32,7 @@ msgstr ""
 #: data/mail-notification-properties.desktop.in.h:2
 #: data/mail-notification.desktop.in.h:2
 #: data/mail-notification.soundlist.in.h:1 src/mn-about-dialog.gob:40
-#: src/mn-mail-icon.gob:163 src/mn-main.c:271
+#: src/mn-mail-icon.gob:194 src/mn-main.c:271
 msgid "Mail Notification"
 msgstr ""
 
@@ -61,181 +61,216 @@ msgid "Do not show the immediate notification error dialog"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:6
-msgid "Enable mail summary popup"
+msgid "Double-click action"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:7
-msgid "Fingerprints of trusted X509 certificates"
+msgid "Enable mail summary popup"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:8
-msgid "Has already been run"
+msgid "Fingerprints of trusted X509 certificates"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:9
-msgid "Height of mail summary dialog"
+msgid "Has already been run"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:10
-msgid "Height of properties dialog"
+msgid "Height of mail summary dialog"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:11
-msgid "Mail read command"
+msgid "Height of properties dialog"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:12
-msgid "Mail summary popup horizontal offset"
+msgid "Mail read command"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:13
-msgid "Mail summary popup position"
+msgid "Mail reader command"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:14
-msgid "Mail summary popup vertical offset"
+msgid "Mail summary popup horizontal offset"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:15
-msgid "Mailbox list"
+msgid "Mail summary popup position"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:16
-msgid "Minutes between mail checks"
+msgid "Mail summary popup vertical offset"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:17
-msgid "Minutes to wait before closing the mail summary popup"
+msgid "Mailbox list"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:18
-msgid "New mail command"
+msgid "Minutes between mail checks"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:19
-msgid "Run a command when all mail is read"
+msgid "Minutes to wait before closing the mail summary popup"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:20
-msgid "Run a command when new mail arrives"
+msgid "New mail command"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:21
-msgid "Seconds between mail checks"
+msgid "Only display recent mail in mail summary popup"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:22
-msgid "Seconds to wait before closing the mail summary popup"
+msgid "Run a command when all mail is read"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:23
+msgid "Run a command when new mail arrives"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:24
+msgid "Seconds between mail checks"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:25
+msgid "Seconds to wait before closing the mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:26
+msgid "Set a mail reader"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:27
+msgid ""
+"The action to perform when the icon is double-clicked. Must be \"display-"
+"mail-summary\" or \"launch-mail-reader\"."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:28
 msgid ""
 "The amount of time to wait before closing the mail summary popup (minutes "
 "part)."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:24
+#: data/mail-notification.schemas.in.h:29
 msgid ""
 "The amount of time to wait before closing the mail summary popup (seconds "
 "part)."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:25
+#: data/mail-notification.schemas.in.h:30
+msgid "The command to run to launch the mail reader."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:31
 msgid "The command to run when all mail is read."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:26
+#: data/mail-notification.schemas.in.h:32
 msgid "The command to run when new mail arrives."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:27
+#: data/mail-notification.schemas.in.h:33
 msgid "The height of the mail summary dialog in pixels."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:28
+#: data/mail-notification.schemas.in.h:34
 msgid "The height of the properties dialog in pixels."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:29
+#: data/mail-notification.schemas.in.h:35
 msgid "The list of mailboxes to monitor."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:30
+#: data/mail-notification.schemas.in.h:36
 msgid ""
 "The list of trusted SSL/TLS servers (hostname:port) lacking a X509 "
 "certificate."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:31
+#: data/mail-notification.schemas.in.h:37
 msgid ""
 "The list of trusted X509 certificates, represented by their MD5 fingerprint."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:32
+#: data/mail-notification.schemas.in.h:38
 msgid ""
 "The number of pixels to leave between the left or right side of the screen "
 "and the mail summary popup."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:33
+#: data/mail-notification.schemas.in.h:39
 msgid ""
 "The number of pixels to leave between the top or bottom side of the screen "
 "and the mail summary popup."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:34
+#: data/mail-notification.schemas.in.h:40
 msgid ""
 "The position of the mail summary popup. Must be \"top-left\", \"top-right\", "
 "\"bottom-left\" or \"bottom-right\"."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:35
+#: data/mail-notification.schemas.in.h:41
 msgid "The width of the mail summary dialog in pixels."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:36
+#: data/mail-notification.schemas.in.h:42
 msgid "The width of the properties dialog in pixels."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:37
+#: data/mail-notification.schemas.in.h:43
 msgid "Trusted servers list"
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:38
+#: data/mail-notification.schemas.in.h:44
 msgid "Whether Mail Notification has already been run or not."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:39
+#: data/mail-notification.schemas.in.h:45
 msgid "Whether the status icon should blink on errors or not."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:40
+#: data/mail-notification.schemas.in.h:46
 msgid "Whether to automatically close the mail summary popup or not."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:41
+#: data/mail-notification.schemas.in.h:47
 msgid "Whether to display the mail summary popup when new mail arrives or not."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:42
+#: data/mail-notification.schemas.in.h:48
+msgid ""
+"Whether to hide previously displayed mail in the mail summary popup or not."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:49
 msgid ""
 "Whether to prevent the immediate notification error dialog from being "
 "displayed or not."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:43
+#: data/mail-notification.schemas.in.h:50
 msgid "Whether to run a command when all mail is read or not."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:44
+#: data/mail-notification.schemas.in.h:51
 msgid "Whether to run a command when new mail arrives or not."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:45
+#: data/mail-notification.schemas.in.h:52
+msgid "Whether to set a mail reader or not."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:53
 msgid "Width of mail summary dialog"
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:46
+#: data/mail-notification.schemas.in.h:54
 msgid "Width of properties dialog"
 msgstr ""
 
@@ -417,127 +452,127 @@ msgstr ""
 msgid "unable to parse response \"%s\""
 msgstr ""
 
-#: src/mn-client-session.c:592 src/mn-client-session.c:599
+#: src/mn-client-session.c:601 src/mn-client-session.c:608
 #, c-format
 msgid "unable to read from server: %s"
 msgstr ""
 
-#: src/mn-client-session.c:597
+#: src/mn-client-session.c:606
 msgid "unable to read from server: EOF"
 msgstr ""
 
-#: src/mn-client-session.c:609
+#: src/mn-client-session.c:618
 #, c-format
 msgid "unable to decode data using SASL: %s"
 msgstr ""
 
-#: src/mn-client-session.c:746
+#: src/mn-client-session.c:755
 #, c-format
 msgid "unable to encode data using SASL: %s"
 msgstr ""
 
-#: src/mn-client-session.c:777 src/mn-client-session.c:784
+#: src/mn-client-session.c:786 src/mn-client-session.c:793
 #, c-format
 msgid "unable to write to server: %s"
 msgstr ""
 
-#: src/mn-client-session.c:782
+#: src/mn-client-session.c:791
 msgid "unable to write to server: EOF"
 msgstr ""
 
-#: src/mn-client-session.c:814
+#: src/mn-client-session.c:823
 #, c-format
 msgid "unable to encode Base64: %s"
 msgstr ""
 
-#: src/mn-client-session.c:917
+#: src/mn-client-session.c:927
 #, c-format
 msgid "unable to initialize the SASL library: %s"
 msgstr ""
 
-#: src/mn-client-session.c:926
+#: src/mn-client-session.c:936
 #, c-format
 msgid "unable to retrieve local address of socket: %s"
 msgstr ""
 
-#: src/mn-client-session.c:932
+#: src/mn-client-session.c:942
 #, c-format
 msgid "unable to retrieve remote address of socket: %s"
 msgstr ""
 
-#: src/mn-client-session.c:966
+#: src/mn-client-session.c:976
 #, c-format
 msgid "warning: unable to set SASL security properties: %s"
 msgstr ""
 
-#: src/mn-client-session.c:1005
+#: src/mn-client-session.c:1015
 msgid ""
 "unable to start SASL authentication: SASL asked for something we did not know"
 msgstr ""
 
-#: src/mn-client-session.c:1009
+#: src/mn-client-session.c:1019
 #, c-format
 msgid "unable to start SASL authentication: %s"
 msgstr ""
 
-#: src/mn-client-session.c:1013
+#: src/mn-client-session.c:1023
 #, c-format
 msgid "unable to create a SASL connection: %s"
 msgstr ""
 
-#: src/mn-client-session.c:1063
+#: src/mn-client-session.c:1073
 msgid "SASL asked for something we did not know, aborting SASL authentication"
 msgstr ""
 
-#: src/mn-client-session.c:1067
+#: src/mn-client-session.c:1077
 #, c-format
 msgid "%s, aborting SASL authentication"
 msgstr ""
 
 #. compliance error
-#: src/mn-client-session.c:1072
+#: src/mn-client-session.c:1082
 #, c-format
 msgid "unable to decode Base64 input from server: %s"
 msgstr ""
 
-#: src/mn-client-session.c:1075
+#: src/mn-client-session.c:1085
 msgid ""
 "the server sent a SASL challenge, but there was a pending initial SASL "
 "client response"
 msgstr ""
 
-#: src/mn-client-session.c:1089
+#: src/mn-client-session.c:1099
 msgid ""
 "the server did not send a SASL challenge, but there was no pending initial "
 "SASL client response"
 msgstr ""
 
-#: src/mn-client-session.c:1112
+#: src/mn-client-session.c:1122
 #, c-format
 msgid "a SASL security layer of strength factor %i is now active"
 msgstr ""
 
 #. a security layer is active but we can't retrieve maxoutbuf -> fatal
-#: src/mn-client-session.c:1117
+#: src/mn-client-session.c:1127
 #, c-format
 msgid "unable to get SASL_MAXOUTBUF property: %s"
 msgstr ""
 
-#: src/mn-client-session.c:1123
+#: src/mn-client-session.c:1133
 #, c-format
 msgid "warning: unable to get SASL_SSF property: %s"
 msgstr ""
 
-#: src/mn-conf.c:123
+#: src/mn-conf.c:136
 #, c-format
 msgid "recursively unsetting %s"
 msgstr ""
 
-#: src/mn-conf.c:127
+#: src/mn-conf.c:140
 msgid "syncing the GConf database"
 msgstr ""
 
-#: src/mn-conf.c:130
+#: src/mn-conf.c:143
 msgid "completed"
 msgstr ""
 
@@ -551,33 +586,33 @@ msgid ""
 "when needed)"
 msgstr ""
 
-#: src/mn-gmail-mailbox.gob:63
+#: src/mn-gmail-mailbox.gob:81
 msgid "libsoup has not been compiled with SSL/TLS support"
 msgstr ""
 
-#: src/mn-gmail-mailbox.gob:105
+#: src/mn-gmail-mailbox.gob:123
 #, c-format
 msgid "unable to parse URI \"%s\""
 msgstr ""
 
-#: src/mn-gmail-mailbox.gob:159
+#: src/mn-gmail-mailbox.gob:177
 #, c-format
 msgid "unable to transfer data: %s"
 msgstr ""
 
-#: src/mn-gmail-mailbox.gob:280
+#: src/mn-gmail-mailbox.gob:298
 msgid "logging in"
 msgstr ""
 
-#: src/mn-gmail-mailbox.gob:358
+#: src/mn-gmail-mailbox.gob:376
 msgid "login failed"
 msgstr ""
 
-#: src/mn-gmail-mailbox.gob:433
+#: src/mn-gmail-mailbox.gob:451
 msgid "searching for unread mail"
 msgstr ""
 
-#: src/mn-gmail-mailbox.gob:529
+#: src/mn-gmail-mailbox.gob:490
 msgid "unable to parse Gmail data"
 msgstr ""
 
@@ -641,73 +676,77 @@ msgstr ""
 msgid "The mailbox name"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:133 src/mn-pop3-mailbox.gob:142
+#: src/mn-imap-mailbox.gob:164 src/mn-pop3-mailbox.gob:142
 msgid "SSL/TLS support has not been compiled in"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:204
+#: src/mn-imap-mailbox.gob:253
 msgid "server did not send capabilities"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:319
+#: src/mn-imap-mailbox.gob:374
 msgid "server advertised LOGINDISABLED, not using LOGIN authentication"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:320
+#: src/mn-imap-mailbox.gob:375
 msgid "unable to login"
 msgstr ""
 
 #. compliance error
-#: src/mn-imap-mailbox.gob:451
+#: src/mn-imap-mailbox.gob:516
 msgid "server did not send search results"
 msgstr ""
 
 #. compliance error
-#: src/mn-imap-mailbox.gob:527
+#: src/mn-imap-mailbox.gob:596
 msgid "server did not send all the messages we requested"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:574
+#: src/mn-imap-mailbox.gob:645
 msgid "unable to fetch message"
 msgstr ""
 
 #. compliance error
-#: src/mn-imap-mailbox.gob:621
+#: src/mn-imap-mailbox.gob:763
 msgid "server did not send status"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:856 src/mn-pop3-mailbox.gob:913
+#: src/mn-imap-mailbox.gob:1035 src/mn-pop3-mailbox.gob:922
 msgid "unknown server error"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:927 src/mn-pop3-mailbox.gob:226
+#: src/mn-imap-mailbox.gob:1106 src/mn-pop3-mailbox.gob:226
 msgid "server does not support in-band SSL/TLS"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:946 src/mn-pop3-mailbox.gob:832
+#: src/mn-imap-mailbox.gob:1125 src/mn-pop3-mailbox.gob:841
 msgid ""
 "a SASL authentication mechanism was selected but SASL support has not been "
 "compiled in"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:954 src/mn-pop3-mailbox.gob:844
+#: src/mn-imap-mailbox.gob:1133 src/mn-pop3-mailbox.gob:853
 #, c-format
 msgid "unknown authentication mechanism \"%s\""
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:972
+#: src/mn-imap-mailbox.gob:1151
 msgid "falling back to IMAP LOGIN authentication"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:977 src/mn-pop3-mailbox.gob:879
+#: src/mn-imap-mailbox.gob:1156 src/mn-pop3-mailbox.gob:888
 msgid "authentication failed"
 msgstr ""
 
-#: src/mn-mail-icon.gob:84 ui/summary-dialog.glade.h:2
+#: src/mn-mail-icon.gob:92 ui/summary-dialog.glade.h:2
+msgid "_Launch Mail Reader"
+msgstr ""
+
+#: src/mn-mail-icon.gob:93 ui/summary-dialog.glade.h:3
 msgid "_Update"
 msgstr ""
 
-#: src/mn-mail-icon.gob:90
+#: src/mn-mail-icon.gob:99
 msgid "R_emove From Notification Area"
 msgstr ""
 
@@ -764,7 +803,7 @@ msgstr ""
 msgid "Whether the properties are completely filled or not"
 msgstr ""
 
-#: src/mn-mailbox-view.gob:263 src/mn-message-label.gob:74
+#: src/mn-mailbox-view.gob:263 src/mn-message-box.gob:58
 msgid "Mailbox"
 msgstr ""
 
@@ -790,35 +829,35 @@ msgid "The mailbox human-readable name"
 msgstr ""
 
 #: src/mn-mailbox.gob:145
-msgid "Whether the mailbox has to be manually checked or not"
+msgid "Whether the mailbox has to be polled or not"
 msgstr ""
 
-#: src/mn-mailbox.gob:150
+#: src/mn-mailbox.gob:151
 msgid "Whether the mailbox has new mail or not"
 msgstr ""
 
-#: src/mn-mailbox.gob:155
+#: src/mn-mailbox.gob:156
 msgid "The list of new and unread MNMessage objects"
 msgstr ""
 
-#: src/mn-mailbox.gob:209
+#: src/mn-mailbox.gob:210
 msgid "The mailbox error, if any"
 msgstr ""
 
-#: src/mn-mailbox.gob:308
+#: src/mn-mailbox.gob:309
 msgid "does not exist"
 msgstr ""
 
-#: src/mn-mailbox.gob:340
+#: src/mn-mailbox.gob:341
 msgid "unknown format"
 msgstr ""
 
-#: src/mn-mailbox.gob:406
+#: src/mn-mailbox.gob:407
 #, c-format
 msgid "unable to enable immediate notification for %s: %s"
 msgstr ""
 
-#: src/mn-mailbox.gob:424
+#: src/mn-mailbox.gob:425
 #, c-format
 msgid ""
 "As a fallback, they will be checked every %i second (this delay is "
@@ -829,7 +868,7 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-mailbox.gob:435
+#: src/mn-mailbox.gob:436
 #, c-format
 msgid ""
 "As a fallback, they will be checked every %i minute (this delay is "
@@ -840,7 +879,7 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-mailbox.gob:446
+#: src/mn-mailbox.gob:447
 #, c-format
 msgid ""
 "As a fallback, they will be checked approximately every %i minute (this "
@@ -851,37 +890,37 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-mailbox.gob:462
+#: src/mn-mailbox.gob:463
 msgid "A monitoring error has occurred"
 msgstr ""
 
-#: src/mn-mailbox.gob:463
+#: src/mn-mailbox.gob:464
 #, c-format
 msgid ""
 "Mail Notification was unable to enable immediate notification for one or "
 "more mailboxes. %s"
 msgstr ""
 
-#: src/mn-mailboxes.gob:143
+#: src/mn-mailboxes.gob:142
 msgid "Whether one or more of the mailboxes has to be polled"
 msgstr ""
 
-#: src/mn-mailboxes.gob:276
+#: src/mn-mailboxes.gob:272
 #, c-format
 msgid "%s is unsupported: %s"
 msgstr ""
 
-#: src/mn-mailboxes.gob:307
+#: src/mn-mailboxes.gob:304
 #, c-format
 msgid "%s has new mail"
 msgstr ""
 
-#: src/mn-mailboxes.gob:307
+#: src/mn-mailboxes.gob:304
 #, c-format
 msgid "%s has no new mail"
 msgstr ""
 
-#: src/mn-mailboxes.gob:333
+#: src/mn-mailboxes.gob:330
 #, c-format
 msgid "%s reported an error: %s"
 msgstr ""
@@ -995,51 +1034,51 @@ msgstr ""
 msgid "unable to open mailbox: %s"
 msgstr ""
 
-#: src/mn-message-label.gob:77
+#: src/mn-message-box.gob:61
 msgid "Unreadable message"
 msgstr ""
 
-#: src/mn-message-label.gob:97
+#: src/mn-message-box.gob:66
 msgid "From"
 msgstr ""
 
-#: src/mn-message-label.gob:98
+#: src/mn-message-box.gob:67
 msgid "Subject"
 msgstr ""
 
-#: src/mn-message-label.gob:102
+#: src/mn-message-box.gob:72
 msgid "Sent"
 msgstr ""
 
-#: src/mn-message-label.gob:151
+#: src/mn-message-box.gob:184
 #, c-format
 msgid "%i second ago"
 msgid_plural "%i seconds ago"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-message-label.gob:155
+#: src/mn-message-box.gob:188
 #, c-format
 msgid "%i minute ago"
 msgid_plural "%i minutes ago"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-message-label.gob:160
+#: src/mn-message-box.gob:193
 #, c-format
 msgid "%i hour ago"
 msgid_plural "%i hours ago"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-message-label.gob:165
+#: src/mn-message-box.gob:198
 #, c-format
 msgid "%i day ago"
 msgid_plural "%i days ago"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-message-label.gob:170
+#: src/mn-message-box.gob:203
 #, c-format
 msgid "%i week ago"
 msgid_plural "%i weeks ago"
@@ -1088,21 +1127,21 @@ msgstr ""
 msgid "SSL/TLS on sepa_rate port"
 msgstr ""
 
-#: src/mn-pop3-mailbox-properties.gob:85
+#: src/mn-pop3-mailbox-properties.gob:86
 msgid "The hostname or IP address of the POP3 server"
 msgstr ""
 
-#: src/mn-pop3-mailbox-properties.gob:86
+#: src/mn-pop3-mailbox-properties.gob:87
 msgid "Your username on the POP3 server"
 msgstr ""
 
-#: src/mn-pop3-mailbox-properties.gob:87
+#: src/mn-pop3-mailbox-properties.gob:88
 msgid ""
 "Your password on the POP3 server (if left blank, you will be prompted for "
 "the password when needed)"
 msgstr ""
 
-#: src/mn-pop3-mailbox-properties.gob:88 src/mn-pop3-mailbox-properties.gob:89
+#: src/mn-pop3-mailbox-properties.gob:89 src/mn-pop3-mailbox-properties.gob:90
 msgid "The port number of the POP3 server"
 msgstr ""
 
@@ -1110,89 +1149,74 @@ msgstr ""
 msgid "invalid arguments for the LOGIN-DELAY capability"
 msgstr ""
 
-#: src/mn-pop3-mailbox.gob:549
+#: src/mn-pop3-mailbox.gob:556
 msgid "unknown error"
 msgstr ""
 
-#: src/mn-pop3-mailbox.gob:681
+#: src/mn-pop3-mailbox.gob:690
 #, c-format
 msgid "honouring LOGIN-DELAY, sleeping for %i second"
 msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-pop3-mailbox.gob:840
+#: src/mn-pop3-mailbox.gob:849
 msgid "server does not support APOP authentication"
 msgstr ""
 
-#: src/mn-pop3-mailbox.gob:868
+#: src/mn-pop3-mailbox.gob:877
 msgid "falling back to APOP authentication"
 msgstr ""
 
-#: src/mn-pop3-mailbox.gob:873
+#: src/mn-pop3-mailbox.gob:882
 msgid "falling back to USER/PASS authentication"
 msgstr ""
 
-#: src/mn-properties.c:170
+#: src/mn-properties.c:181
 msgid "top left"
 msgstr ""
 
-#: src/mn-properties.c:171
+#: src/mn-properties.c:182
 msgid "top right"
 msgstr ""
 
-#: src/mn-properties.c:172
+#: src/mn-properties.c:183
 msgid "bottom left"
 msgstr ""
 
-#: src/mn-properties.c:173
+#: src/mn-properties.c:184
 msgid "bottom right"
 msgstr ""
 
-#: src/mn-properties.c:251
+#: src/mn-properties.c:270
 msgid "No mailbox selected."
 msgstr ""
 
-#: src/mn-properties.c:256
+#: src/mn-properties.c:275
 #, c-format
 msgid "%i mailbox selected."
 msgid_plural "%i mailboxes selected."
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-shell.gob:86
+#: src/mn-shell.gob:92
 msgid "You have new mail."
 msgstr ""
 
-#: src/mn-shell.gob:263
-msgid "The following mailbox has new mail:\n"
-msgid_plural "The following mailboxes have new mail:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/mn-shell.gob:267
-msgid "You have no new mail."
+#: src/mn-shell.gob:347
+msgid "Mailboxes Having New Mail"
 msgstr ""
 
-#: src/mn-shell.gob:270
-msgid "The following mailbox reported an error:\n"
-msgid_plural "The following mailboxes reported an error:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/mn-shell.gob:275
-msgid "The following mailbox is unsupported:\n"
-msgid_plural "The following mailboxes are unsupported:\n"
-msgstr[0] ""
-msgstr[1] ""
+#: src/mn-shell.gob:349
+msgid "Errors"
+msgstr ""
 
-#: src/mn-shell.gob:320
-msgid "A command error has occurred in Mail Notification"
+#: src/mn-shell.gob:351
+msgid "Unsupported Mailboxes"
 msgstr ""
 
-#: src/mn-shell.gob:321
-#, c-format
-msgid "Unable to execute \"%s\": %s."
+#: src/mn-shell.gob:364 ui/summary-dialog.glade.h:1
+msgid "Mail Summary"
 msgstr ""
 
 #: src/mn-soup.c:140
@@ -1290,11 +1314,20 @@ msgstr ""
 msgid "unable to get current time: %s"
 msgstr ""
 
-#: src/mn-util.c:887
+#: src/mn-util.c:906
 #, c-format
 msgid "invalid signal specification \"%s\""
 msgstr ""
 
+#: src/mn-util.c:945
+msgid "A command error has occurred in Mail Notification"
+msgstr ""
+
+#: src/mn-util.c:946
+#, c-format
+msgid "Unable to execute \"%s\": %s."
+msgstr ""
+
 #: ui/authentication.glade.h:1 ui/properties.glade.h:2
 msgid "*"
 msgstr ""
@@ -1316,143 +1349,171 @@ msgid "<span weight=\"bold\">Commands</span>"
 msgstr ""
 
 #: ui/properties.glade.h:4
-msgid "<span weight=\"bold\">General</span>"
+msgid "<span weight=\"bold\">Double-click Action</span>"
 msgstr ""
 
 #: ui/properties.glade.h:5
-msgid "<span weight=\"bold\">Mailbox List</span>"
+msgid "<span weight=\"bold\">General</span>"
 msgstr ""
 
 #: ui/properties.glade.h:6
-msgid "<span weight=\"bold\">Position</span>"
+msgid "<span weight=\"bold\">Mailbox List</span>"
 msgstr ""
 
 #: ui/properties.glade.h:7
-msgid "General"
+msgid "<span weight=\"bold\">Position</span>"
 msgstr ""
 
 #: ui/properties.glade.h:8
-msgid "Hori_zontal offset:"
+msgid "General"
 msgstr ""
 
 #: ui/properties.glade.h:9
-msgid "Mail Notification Properties"
+msgid "Hori_zontal offset:"
 msgstr ""
 
 #: ui/properties.glade.h:10
-msgid "Mail Summary Popup"
+msgid "Mail Notification Properties"
 msgstr ""
 
 #: ui/properties.glade.h:11
-msgid "Mailboxes"
+msgid "Mail Summary Popup"
 msgstr ""
 
 #: ui/properties.glade.h:12
-msgid "P_osition:"
+msgid "Mailboxes"
 msgstr ""
 
 #: ui/properties.glade.h:13
-msgid "The amount of time to wait before closing the mail summary popup"
+msgid "Only display _recent mail"
 msgstr ""
 
 #: ui/properties.glade.h:14
-msgid "The amount of time to wait between mail checks"
+msgid "P_osition:"
 msgstr ""
 
 #: ui/properties.glade.h:15
-msgid "The command to run when all mail is read"
+msgid "The amount of time to wait before closing the mail summary popup"
 msgstr ""
 
 #: ui/properties.glade.h:16
-msgid "The command to run when new mail arrives"
+msgid "The amount of time to wait between mail checks"
 msgstr ""
 
 #: ui/properties.glade.h:17
+msgid "The command to run to launch the mail reader"
+msgstr ""
+
+#: ui/properties.glade.h:18
+msgid "The command to run when all mail is read"
+msgstr ""
+
+#: ui/properties.glade.h:19
+msgid "The command to run when new mail arrives"
+msgstr ""
+
+#: ui/properties.glade.h:20
 msgid ""
 "The number of pixels to leave between the left or right side of the screen "
 "and the mail summary popup"
 msgstr ""
 
-#: ui/properties.glade.h:18
+#: ui/properties.glade.h:21
 msgid ""
 "The number of pixels to leave between the top or bottom side of the screen "
 "and the mail summary popup"
 msgstr ""
 
-#: ui/properties.glade.h:19
+#: ui/properties.glade.h:22
 msgid "When _all mail is read:"
 msgstr ""
 
-#: ui/properties.glade.h:20
+#: ui/properties.glade.h:23
 msgid "When _new mail arrives:"
 msgstr ""
 
-#: ui/properties.glade.h:21
+#: ui/properties.glade.h:24
 msgid "Whether the status icon should blink on errors or not"
 msgstr ""
 
-#: ui/properties.glade.h:22
+#: ui/properties.glade.h:25
 msgid "Whether to automatically close the mail summary popup or not"
 msgstr ""
 
-#: ui/properties.glade.h:23
+#: ui/properties.glade.h:26
 msgid "Whether to display the mail summary popup when new mail arrives or not"
 msgstr ""
 
-#: ui/properties.glade.h:24
+#: ui/properties.glade.h:27
+msgid "Whether to hide previously displayed mail or not"
+msgstr ""
+
+#: ui/properties.glade.h:28
 msgid "Whether to run a command when all mail is read or not"
 msgstr ""
 
-#: ui/properties.glade.h:25
+#: ui/properties.glade.h:29
 msgid "Whether to run a command when new mail arrives or not"
 msgstr ""
 
-#: ui/properties.glade.h:26
+#: ui/properties.glade.h:30
+msgid "Whether to set a mail reader or not"
+msgstr ""
+
+#: ui/properties.glade.h:31
 msgid ""
 "Whether to start Mail Notification when you log into your GNOME session or "
 "not"
 msgstr ""
 
-#: ui/properties.glade.h:27
+#: ui/properties.glade.h:32
 msgid "_Automatically close after:"
 msgstr ""
 
-#: ui/properties.glade.h:28
+#: ui/properties.glade.h:33
 msgid "_Blink on errors"
 msgstr ""
 
-#: ui/properties.glade.h:29
+#: ui/properties.glade.h:34
 msgid "_Delay between mail checks:"
 msgstr ""
 
-#: ui/properties.glade.h:30
+#: ui/properties.glade.h:35
+msgid "_Display the mail summary dialog"
+msgstr ""
+
+#: ui/properties.glade.h:36
 msgid "_Enable mail summary popup"
 msgstr ""
 
-#: ui/properties.glade.h:31
+#: ui/properties.glade.h:37
+msgid "_Launch the mail reader"
+msgstr ""
+
+#: ui/properties.glade.h:38
+msgid "_Mail reader:"
+msgstr ""
+
+#: ui/properties.glade.h:39
 msgid "_Start Mail Notification on GNOME login"
 msgstr ""
 
-#: ui/properties.glade.h:32
+#: ui/properties.glade.h:40
 msgid "_Vertical offset:"
 msgstr ""
 
-#: ui/properties.glade.h:33
+#: ui/properties.glade.h:41
 msgid "minutes"
 msgstr ""
 
-#: ui/properties.glade.h:34
+#: ui/properties.glade.h:42
 msgid "pixels"
 msgstr ""
 
-#: ui/properties.glade.h:35
+#: ui/properties.glade.h:43
 msgid "seconds"
 msgstr ""
 
-#: ui/summary-dialog.glade.h:1
-msgid "Mail Summary"
-msgstr ""
-
 #: ui/summary-popup.glade.h:1
 msgid "<span size=\"larger\" weight=\"bold\">Mail Summary</span>"
 msgstr ""
diff --git a/po/pt.gmo b/po/pt.gmo
Binary files differ.
diff --git a/po/pt.po b/po/pt.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: mail-notification 0.7.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2004-10-25 15:26+0200\n"
+"POT-Creation-Date: 2004-10-31 18:42+0100\n"
 "PO-Revision-Date: 2004-10-24 11:06+0200\n"
 "Last-Translator: Duarte Henriques <duarte_henriques@myrealbox.com>\n"
 "Language-Team: Duarte Henriques <duarte_henriques@myrealbox.com>\n"
@@ -34,7 +34,7 @@ msgstr "Configurar Notificação de Correio"
 #: data/mail-notification-properties.desktop.in.h:2
 #: data/mail-notification.desktop.in.h:2
 #: data/mail-notification.soundlist.in.h:1 src/mn-about-dialog.gob:40
-#: src/mn-mail-icon.gob:163 src/mn-main.c:271
+#: src/mn-mail-icon.gob:194 src/mn-main.c:271
 msgid "Mail Notification"
 msgstr "Notificação de Correio"
 
@@ -63,74 +63,100 @@ msgid "Do not show the immediate notification error dialog"
 msgstr "Não mostrar o diálogo de erro de notificação imediata"
 
 #: data/mail-notification.schemas.in.h:6
+#, fuzzy
+msgid "Double-click action"
+msgstr "Comando de duplo-clique"
+
+#: data/mail-notification.schemas.in.h:7
 msgid "Enable mail summary popup"
 msgstr "Activar popup de resumo de correio"
 
-#: data/mail-notification.schemas.in.h:7
+#: data/mail-notification.schemas.in.h:8
 msgid "Fingerprints of trusted X509 certificates"
 msgstr "Impressões digitais de certificados x509 confiados"
 
-#: data/mail-notification.schemas.in.h:8
+#: data/mail-notification.schemas.in.h:9
 msgid "Has already been run"
 msgstr "Já foi executado"
 
-#: data/mail-notification.schemas.in.h:9
+#: data/mail-notification.schemas.in.h:10
 msgid "Height of mail summary dialog"
 msgstr "Altura do diálogo de resumo de correio"
 
-#: data/mail-notification.schemas.in.h:10
+#: data/mail-notification.schemas.in.h:11
 msgid "Height of properties dialog"
 msgstr "Altura do diálogo de propriedades"
 
-#: data/mail-notification.schemas.in.h:11
+#: data/mail-notification.schemas.in.h:12
 msgid "Mail read command"
 msgstr "Comando de leitura de correio"
 
-#: data/mail-notification.schemas.in.h:12
+#: data/mail-notification.schemas.in.h:13
+#, fuzzy
+msgid "Mail reader command"
+msgstr "Comando de leitura de correio"
+
+#: data/mail-notification.schemas.in.h:14
 msgid "Mail summary popup horizontal offset"
 msgstr "Intervalo horizontal do popup de resumo de correio"
 
-#: data/mail-notification.schemas.in.h:13
+#: data/mail-notification.schemas.in.h:15
 msgid "Mail summary popup position"
 msgstr "Posição do popup de resumo de correio"
 
-#: data/mail-notification.schemas.in.h:14
+#: data/mail-notification.schemas.in.h:16
 msgid "Mail summary popup vertical offset"
 msgstr "Intervalo vertical do popup de resumo de correio"
 
-#: data/mail-notification.schemas.in.h:15
+#: data/mail-notification.schemas.in.h:17
 msgid "Mailbox list"
 msgstr "Lista de Caixas de Correio"
 
-#: data/mail-notification.schemas.in.h:16
+#: data/mail-notification.schemas.in.h:18
 msgid "Minutes between mail checks"
 msgstr "Minutos entre verificações de correio"
 
-#: data/mail-notification.schemas.in.h:17
+#: data/mail-notification.schemas.in.h:19
 msgid "Minutes to wait before closing the mail summary popup"
 msgstr "Minutos a esperar antes de fechar o popup de resumo de correio"
 
-#: data/mail-notification.schemas.in.h:18
+#: data/mail-notification.schemas.in.h:20
 msgid "New mail command"
 msgstr "Novo comando de correio"
 
-#: data/mail-notification.schemas.in.h:19
+#: data/mail-notification.schemas.in.h:21
+#, fuzzy
+msgid "Only display recent mail in mail summary popup"
+msgstr "Fechar o popup de resumo de correio"
+
+#: data/mail-notification.schemas.in.h:22
 msgid "Run a command when all mail is read"
 msgstr "Executar um comando quando todo o correio está lido"
 
-#: data/mail-notification.schemas.in.h:20
+#: data/mail-notification.schemas.in.h:23
 msgid "Run a command when new mail arrives"
 msgstr "Executar um comando quando chega novo correio"
 
-#: data/mail-notification.schemas.in.h:21
+#: data/mail-notification.schemas.in.h:24
 msgid "Seconds between mail checks"
 msgstr "Segundos entre verificações de correio"
 
-#: data/mail-notification.schemas.in.h:22
+#: data/mail-notification.schemas.in.h:25
 msgid "Seconds to wait before closing the mail summary popup"
 msgstr "Segundos a esperar antes de fechar o popup de resumo de correio"
 
-#: data/mail-notification.schemas.in.h:23
+#: data/mail-notification.schemas.in.h:26
+#, fuzzy
+msgid "Set a mail reader"
+msgstr "Escolha um Ficheiro ou Pasta"
+
+#: data/mail-notification.schemas.in.h:27
+msgid ""
+"The action to perform when the icon is double-clicked. Must be \"display-"
+"mail-summary\" or \"launch-mail-reader\"."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:28
 msgid ""
 "The amount of time to wait before closing the mail summary popup (minutes "
 "part)."
@@ -138,7 +164,7 @@ msgstr ""
 "A quantidade de tempo a esperar antes de fechar o popup de resumo de correio "
 "(parte dos minutos)."
 
-#: data/mail-notification.schemas.in.h:24
+#: data/mail-notification.schemas.in.h:29
 msgid ""
 "The amount of time to wait before closing the mail summary popup (seconds "
 "part)."
@@ -146,27 +172,32 @@ msgstr ""
 "A quantidade de tempo a esperar antes de fechar o popup de resumo de correio "
 "(parte dos segundos)."
 
-#: data/mail-notification.schemas.in.h:25
+#: data/mail-notification.schemas.in.h:30
+#, fuzzy
+msgid "The command to run to launch the mail reader."
+msgstr "O comando a executar quando todo o correio está lido."
+
+#: data/mail-notification.schemas.in.h:31
 msgid "The command to run when all mail is read."
 msgstr "O comando a executar quando todo o correio está lido."
 
-#: data/mail-notification.schemas.in.h:26
+#: data/mail-notification.schemas.in.h:32
 msgid "The command to run when new mail arrives."
 msgstr "O comando a executar quando chega novo correio."
 
-#: data/mail-notification.schemas.in.h:27
+#: data/mail-notification.schemas.in.h:33
 msgid "The height of the mail summary dialog in pixels."
 msgstr "A altura em pixeis do diálogo de resumo de correio."
 
-#: data/mail-notification.schemas.in.h:28
+#: data/mail-notification.schemas.in.h:34
 msgid "The height of the properties dialog in pixels."
 msgstr "A altura em pixeis do diálogo de propriedades."
 
-#: data/mail-notification.schemas.in.h:29
+#: data/mail-notification.schemas.in.h:35
 msgid "The list of mailboxes to monitor."
 msgstr "A lista de caixas de correio a monitorizar."
 
-#: data/mail-notification.schemas.in.h:30
+#: data/mail-notification.schemas.in.h:36
 msgid ""
 "The list of trusted SSL/TLS servers (hostname:port) lacking a X509 "
 "certificate."
@@ -174,14 +205,14 @@ msgstr ""
 "A lista de servidores SSL/TLS confiados (hostname:port) se faltar um "
 "certificado x509."
 
-#: data/mail-notification.schemas.in.h:31
+#: data/mail-notification.schemas.in.h:37
 msgid ""
 "The list of trusted X509 certificates, represented by their MD5 fingerprint."
 msgstr ""
 "A lista de certificados x509 confiados, representados pela sua fingerprint "
 "MD5."
 
-#: data/mail-notification.schemas.in.h:32
+#: data/mail-notification.schemas.in.h:38
 msgid ""
 "The number of pixels to leave between the left or right side of the screen "
 "and the mail summary popup."
@@ -189,7 +220,7 @@ msgstr ""
 "O número de pixeis a deixar entre o extremo esquerdo ou direito do ecran e o "
 "popup de resumo de correio."
 
-#: data/mail-notification.schemas.in.h:33
+#: data/mail-notification.schemas.in.h:39
 msgid ""
 "The number of pixels to leave between the top or bottom side of the screen "
 "and the mail summary popup."
@@ -197,7 +228,7 @@ msgstr ""
 "O número de pixeis a deixar entre o topo ou fundo do ecran e o popup de "
 "resumo de correio."
 
-#: data/mail-notification.schemas.in.h:34
+#: data/mail-notification.schemas.in.h:40
 msgid ""
 "The position of the mail summary popup. Must be \"top-left\", \"top-right\", "
 "\"bottom-left\" or \"bottom-right\"."
@@ -205,58 +236,71 @@ msgstr ""
 "A posição do popup de resumo de correio. Tem de ser \"top-left\", \"top-right"
 "\", \"bottom-left\" ou \"bottom-right\"."
 
-#: data/mail-notification.schemas.in.h:35
+#: data/mail-notification.schemas.in.h:41
 msgid "The width of the mail summary dialog in pixels."
 msgstr "A largura em pixeis do diálogo de resumo de correio."
 
-#: data/mail-notification.schemas.in.h:36
+#: data/mail-notification.schemas.in.h:42
 msgid "The width of the properties dialog in pixels."
 msgstr "A largura em pixeis do diálogo de propriedades."
 
-#: data/mail-notification.schemas.in.h:37
+#: data/mail-notification.schemas.in.h:43
 msgid "Trusted servers list"
 msgstr "Lista de servidores confiados"
 
-#: data/mail-notification.schemas.in.h:38
+#: data/mail-notification.schemas.in.h:44
 msgid "Whether Mail Notification has already been run or not."
 msgstr "Se a Notificação de Correio já foi executada ou não."
 
-#: data/mail-notification.schemas.in.h:39
+#: data/mail-notification.schemas.in.h:45
 msgid "Whether the status icon should blink on errors or not."
 msgstr "Se o ícone de estado deve piscar em erros ou não."
 
-#: data/mail-notification.schemas.in.h:40
+#: data/mail-notification.schemas.in.h:46
 msgid "Whether to automatically close the mail summary popup or not."
 msgstr ""
 "Se o popup de resumo de correio deve ser automaticamente fechado ou não."
 
-#: data/mail-notification.schemas.in.h:41
+#: data/mail-notification.schemas.in.h:47
 msgid "Whether to display the mail summary popup when new mail arrives or not."
 msgstr ""
 "Se o popup de resumo de correio deve ser mostrado quando chega correio ou "
 "não."
 
-#: data/mail-notification.schemas.in.h:42
+#: data/mail-notification.schemas.in.h:48
+#, fuzzy
+msgid ""
+"Whether to hide previously displayed mail in the mail summary popup or not."
+msgstr ""
+"Se o popup de resumo de correio deve ser automaticamente fechado ou não."
+
+#: data/mail-notification.schemas.in.h:49
 msgid ""
 "Whether to prevent the immediate notification error dialog from being "
 "displayed or not."
 msgstr ""
 "Se se evita o diálogo de erro de notificação imediata de ser mostrado ou não."
 
-#: data/mail-notification.schemas.in.h:43
+#: data/mail-notification.schemas.in.h:50
 msgid "Whether to run a command when all mail is read or not."
 msgstr ""
 "Se um comando deverá ser executado quando todo o correio é lido ou não."
 
-#: data/mail-notification.schemas.in.h:44
+#: data/mail-notification.schemas.in.h:51
 msgid "Whether to run a command when new mail arrives or not."
 msgstr "Se um comando deverá ser executado quando chega novo correio."
 
-#: data/mail-notification.schemas.in.h:45
+#: data/mail-notification.schemas.in.h:52
+#, fuzzy
+msgid "Whether to set a mail reader or not."
+msgstr ""
+"Se um comando deverá ser executado quando todo o correio é lido ou não."
+
+#: data/mail-notification.schemas.in.h:53
 msgid "Width of mail summary dialog"
 msgstr "Largura do diálogo de resumo de correio"
 
-#: data/mail-notification.schemas.in.h:46
+#: data/mail-notification.schemas.in.h:54
 msgid "Width of properties dialog"
 msgstr "Largura do diálogo de propriedades"
 
@@ -452,91 +496,91 @@ msgstr "a resposta \"%s\" não é válida no contexto actual"
 msgid "unable to parse response \"%s\""
 msgstr "incapaz de processar resposta \"%s\""
 
-#: src/mn-client-session.c:592 src/mn-client-session.c:599
+#: src/mn-client-session.c:601 src/mn-client-session.c:608
 #, c-format
 msgid "unable to read from server: %s"
 msgstr "incapaz de ler do servidor: %s"
 
-#: src/mn-client-session.c:597
+#: src/mn-client-session.c:606
 msgid "unable to read from server: EOF"
 msgstr "incapaz de ler do servidor: EOF"
 
-#: src/mn-client-session.c:609
+#: src/mn-client-session.c:618
 #, c-format
 msgid "unable to decode data using SASL: %s"
 msgstr "incapaz de descodificar dados usando SASL: %s"
 
-#: src/mn-client-session.c:746
+#: src/mn-client-session.c:755
 #, c-format
 msgid "unable to encode data using SASL: %s"
 msgstr "incapaz de encodificar dados usando SASL: %s"
 
-#: src/mn-client-session.c:777 src/mn-client-session.c:784
+#: src/mn-client-session.c:786 src/mn-client-session.c:793
 #, c-format
 msgid "unable to write to server: %s"
 msgstr "incapaz de escrever para o servidor: %s"
 
-#: src/mn-client-session.c:782
+#: src/mn-client-session.c:791
 msgid "unable to write to server: EOF"
 msgstr "incapaz de escrever para o servidor: EOF"
 
-#: src/mn-client-session.c:814
+#: src/mn-client-session.c:823
 #, c-format
 msgid "unable to encode Base64: %s"
 msgstr "incapaz de encodificar em Base64: %s"
 
-#: src/mn-client-session.c:917
+#: src/mn-client-session.c:927
 #, c-format
 msgid "unable to initialize the SASL library: %s"
 msgstr "incapaz de inicializar a biblioteca SASL: %s"
 
-#: src/mn-client-session.c:926
+#: src/mn-client-session.c:936
 #, c-format
 msgid "unable to retrieve local address of socket: %s"
 msgstr "incapaz de obter o endereço local do socket: %s"
 
-#: src/mn-client-session.c:932
+#: src/mn-client-session.c:942
 #, c-format
 msgid "unable to retrieve remote address of socket: %s"
 msgstr "incapaz de obter endereço remoto do socket: %s"
 
-#: src/mn-client-session.c:966
+#: src/mn-client-session.c:976
 #, c-format
 msgid "warning: unable to set SASL security properties: %s"
 msgstr "aviso: incapaz de definir as propriedades de segurança SASL: %s"
 
-#: src/mn-client-session.c:1005
+#: src/mn-client-session.c:1015
 msgid ""
 "unable to start SASL authentication: SASL asked for something we did not know"
 msgstr ""
 "incapaz de iniciar a autenticação SASL: SASL perguntou algo que não sabíamos"
 
-#: src/mn-client-session.c:1009
+#: src/mn-client-session.c:1019
 #, c-format
 msgid "unable to start SASL authentication: %s"
 msgstr "incapaz de iniciar autenticação SASL: %s"
 
-#: src/mn-client-session.c:1013
+#: src/mn-client-session.c:1023
 #, c-format
 msgid "unable to create a SASL connection: %s"
 msgstr "incapaz de criar uma ligação SASL: %s"
 
-#: src/mn-client-session.c:1063
+#: src/mn-client-session.c:1073
 msgid "SASL asked for something we did not know, aborting SASL authentication"
 msgstr "SASL perguntou algo que não sabíamos, abortando a autenticação SASL"
 
-#: src/mn-client-session.c:1067
+#: src/mn-client-session.c:1077
 #, c-format
 msgid "%s, aborting SASL authentication"
 msgstr "%s, abortando a autenticação SASL"
 
 #. compliance error
-#: src/mn-client-session.c:1072
+#: src/mn-client-session.c:1082
 #, c-format
 msgid "unable to decode Base64 input from server: %s"
 msgstr "incapaz de descodificar o input em Base64 do servidor: %s"
 
-#: src/mn-client-session.c:1075
+#: src/mn-client-session.c:1085
 msgid ""
 "the server sent a SASL challenge, but there was a pending initial SASL "
 "client response"
@@ -544,7 +588,7 @@ msgstr ""
 "o servidor enviou um desafio SASL, mas havia uma resposta SASL inicial "
 "pendente do cliente"
 
-#: src/mn-client-session.c:1089
+#: src/mn-client-session.c:1099
 msgid ""
 "the server did not send a SASL challenge, but there was no pending initial "
 "SASL client response"
@@ -552,32 +596,32 @@ msgstr ""
 "o servidor não enviou um desafio SASL, mas não havia uma resposta SASL "
 "inicial pendente do cliente"
 
-#: src/mn-client-session.c:1112
+#: src/mn-client-session.c:1122
 #, c-format
 msgid "a SASL security layer of strength factor %i is now active"
 msgstr "está agora activa uma camada de segurança SASL com factor de força %i"
 
 #. a security layer is active but we can't retrieve maxoutbuf -> fatal
-#: src/mn-client-session.c:1117
+#: src/mn-client-session.c:1127
 #, c-format
 msgid "unable to get SASL_MAXOUTBUF property: %s"
 msgstr "incapaz de obter a propriedade SASL_MAXOUTBUF: %s"
 
-#: src/mn-client-session.c:1123
+#: src/mn-client-session.c:1133
 #, c-format
 msgid "warning: unable to get SASL_SSF property: %s"
 msgstr "aviso: incapaz de obter a propriedade SASL_SSF: %s"
 
-#: src/mn-conf.c:123
+#: src/mn-conf.c:136
 #, c-format
 msgid "recursively unsetting %s"
 msgstr "apagando recursivamente %s"
 
-#: src/mn-conf.c:127
+#: src/mn-conf.c:140
 msgid "syncing the GConf database"
 msgstr "sincronizando a base de dados GConf"
 
-#: src/mn-conf.c:130
+#: src/mn-conf.c:143
 msgid "completed"
 msgstr "completo"
 
@@ -593,33 +637,33 @@ msgstr ""
 "A sua senha Gmail (se deixar em branco, a senha será pedida quando "
 "necessária)"
 
-#: src/mn-gmail-mailbox.gob:63
+#: src/mn-gmail-mailbox.gob:81
 msgid "libsoup has not been compiled with SSL/TLS support"
 msgstr "libsoup não foi compilada com suporte SSL/TLS"
 
-#: src/mn-gmail-mailbox.gob:105
+#: src/mn-gmail-mailbox.gob:123
 #, c-format
 msgid "unable to parse URI \"%s\""
 msgstr "incapaz de processar URI \"%s\""
 
-#: src/mn-gmail-mailbox.gob:159
+#: src/mn-gmail-mailbox.gob:177
 #, c-format
 msgid "unable to transfer data: %s"
 msgstr "incapaz de transferir dados: %s"
 
-#: src/mn-gmail-mailbox.gob:280
+#: src/mn-gmail-mailbox.gob:298
 msgid "logging in"
 msgstr "ligando-se"
 
-#: src/mn-gmail-mailbox.gob:358
+#: src/mn-gmail-mailbox.gob:376
 msgid "login failed"
 msgstr "login falhou"
 
-#: src/mn-gmail-mailbox.gob:433
+#: src/mn-gmail-mailbox.gob:451
 msgid "searching for unread mail"
 msgstr "a procurar correio não lido"
 
-#: src/mn-gmail-mailbox.gob:529
+#: src/mn-gmail-mailbox.gob:490
 msgid "unable to parse Gmail data"
 msgstr "incapaz de processar dados Gmail"
 
@@ -685,50 +729,50 @@ msgstr "O número do porto do servidor IMAP"
 msgid "The mailbox name"
 msgstr "O nome da caixa de correio"
 
-#: src/mn-imap-mailbox.gob:133 src/mn-pop3-mailbox.gob:142
+#: src/mn-imap-mailbox.gob:164 src/mn-pop3-mailbox.gob:142
 msgid "SSL/TLS support has not been compiled in"
 msgstr "suporte SSL/TLS não foi compilado"
 
-#: src/mn-imap-mailbox.gob:204
+#: src/mn-imap-mailbox.gob:253
 msgid "server did not send capabilities"
 msgstr "servidor não enviou habilidades"
 
-#: src/mn-imap-mailbox.gob:319
+#: src/mn-imap-mailbox.gob:374
 msgid "server advertised LOGINDISABLED, not using LOGIN authentication"
 msgstr "servidor anunciou LOGINDISABLED, não usando a autenticação LOGIN"
 
-#: src/mn-imap-mailbox.gob:320
+#: src/mn-imap-mailbox.gob:375
 msgid "unable to login"
 msgstr "incapaz de ligar"
 
 #. compliance error
-#: src/mn-imap-mailbox.gob:451
+#: src/mn-imap-mailbox.gob:516
 msgid "server did not send search results"
 msgstr "servidor não enviou resultados da procura"
 
 #. compliance error
-#: src/mn-imap-mailbox.gob:527
+#: src/mn-imap-mailbox.gob:596
 msgid "server did not send all the messages we requested"
 msgstr "servidor não enviou todas as mensagens pedidas"
 
-#: src/mn-imap-mailbox.gob:574
+#: src/mn-imap-mailbox.gob:645
 msgid "unable to fetch message"
 msgstr "incapaz de obter mensagem"
 
 #. compliance error
-#: src/mn-imap-mailbox.gob:621
+#: src/mn-imap-mailbox.gob:763
 msgid "server did not send status"
 msgstr "servidor não enviou estado"
 
-#: src/mn-imap-mailbox.gob:856 src/mn-pop3-mailbox.gob:913
+#: src/mn-imap-mailbox.gob:1035 src/mn-pop3-mailbox.gob:922
 msgid "unknown server error"
 msgstr "erro de servidor desconhecido"
 
-#: src/mn-imap-mailbox.gob:927 src/mn-pop3-mailbox.gob:226
+#: src/mn-imap-mailbox.gob:1106 src/mn-pop3-mailbox.gob:226
 msgid "server does not support in-band SSL/TLS"
 msgstr "servidor não suporta SSL/TLS in-band"
 
-#: src/mn-imap-mailbox.gob:946 src/mn-pop3-mailbox.gob:832
+#: src/mn-imap-mailbox.gob:1125 src/mn-pop3-mailbox.gob:841
 msgid ""
 "a SASL authentication mechanism was selected but SASL support has not been "
 "compiled in"
@@ -736,24 +780,28 @@ msgstr ""
 "foi escolhido um mecanismo de autenticação SASL, mas o suporte SASL não foi "
 "compilado"
 
-#: src/mn-imap-mailbox.gob:954 src/mn-pop3-mailbox.gob:844
+#: src/mn-imap-mailbox.gob:1133 src/mn-pop3-mailbox.gob:853
 #, c-format
 msgid "unknown authentication mechanism \"%s\""
 msgstr "mecanismo de autenticação desconhecido \"%s\""
 
-#: src/mn-imap-mailbox.gob:972
+#: src/mn-imap-mailbox.gob:1151
 msgid "falling back to IMAP LOGIN authentication"
 msgstr "recorrendo à autenticação IMAP LOGIN"
 
-#: src/mn-imap-mailbox.gob:977 src/mn-pop3-mailbox.gob:879
+#: src/mn-imap-mailbox.gob:1156 src/mn-pop3-mailbox.gob:888
 msgid "authentication failed"
 msgstr "autenticação falhou"
 
-#: src/mn-mail-icon.gob:84 ui/summary-dialog.glade.h:2
+#: src/mn-mail-icon.gob:92 ui/summary-dialog.glade.h:2
+msgid "_Launch Mail Reader"
+msgstr ""
+
+#: src/mn-mail-icon.gob:93 ui/summary-dialog.glade.h:3
 msgid "_Update"
 msgstr "_Actualizar"
 
-#: src/mn-mail-icon.gob:90
+#: src/mn-mail-icon.gob:99
 msgid "R_emove From Notification Area"
 msgstr "_Remover da área de notificação"
 
@@ -810,7 +858,7 @@ msgstr "Completo"
 msgid "Whether the properties are completely filled or not"
 msgstr "Se as propriedades estão completamente preenchidas"
 
-#: src/mn-mailbox-view.gob:263 src/mn-message-label.gob:74
+#: src/mn-mailbox-view.gob:263 src/mn-message-box.gob:58
 msgid "Mailbox"
 msgstr "Caixa de Correio"
 
@@ -836,35 +884,36 @@ msgid "The mailbox human-readable name"
 msgstr "O nome legível da caixa de correio"
 
 #: src/mn-mailbox.gob:145
-msgid "Whether the mailbox has to be manually checked or not"
+#, fuzzy
+msgid "Whether the mailbox has to be polled or not"
 msgstr "Se a caixa de correio tem de ser manualmente verificada"
 
-#: src/mn-mailbox.gob:150
+#: src/mn-mailbox.gob:151
 msgid "Whether the mailbox has new mail or not"
 msgstr "Se a caixa de correio tem novo correio"
 
-#: src/mn-mailbox.gob:155
+#: src/mn-mailbox.gob:156
 msgid "The list of new and unread MNMessage objects"
 msgstr "A lista de objectos MNMessage novos e não lidos"
 
-#: src/mn-mailbox.gob:209
+#: src/mn-mailbox.gob:210
 msgid "The mailbox error, if any"
 msgstr "O erro da caixa de correio, se houver"
 
-#: src/mn-mailbox.gob:308
+#: src/mn-mailbox.gob:309
 msgid "does not exist"
 msgstr "não existe"
 
-#: src/mn-mailbox.gob:340
+#: src/mn-mailbox.gob:341
 msgid "unknown format"
 msgstr "formato desconhecido"
 
-#: src/mn-mailbox.gob:406
+#: src/mn-mailbox.gob:407
 #, c-format
 msgid "unable to enable immediate notification for %s: %s"
 msgstr "incapaz de activar notificação imediata para %s: %s"
 
-#: src/mn-mailbox.gob:424
+#: src/mn-mailbox.gob:425
 #, c-format
 msgid ""
 "As a fallback, they will be checked every %i second (this delay is "
@@ -879,7 +928,7 @@ msgstr[1] ""
 "Como medida de recurso, serão verificadas a cada %i segundos (este atraso é "
 "configurável no Diálogo de Propriedades)."
 
-#: src/mn-mailbox.gob:435
+#: src/mn-mailbox.gob:436
 #, c-format
 msgid ""
 "As a fallback, they will be checked every %i minute (this delay is "
@@ -894,7 +943,7 @@ msgstr[1] ""
 "Como medida de recurso, serão verificadas a cada %i minutos (este atraso é "
 "configurável no Diálogo de Propriedades)."
 
-#: src/mn-mailbox.gob:446
+#: src/mn-mailbox.gob:447
 #, c-format
 msgid ""
 "As a fallback, they will be checked approximately every %i minute (this "
@@ -909,11 +958,11 @@ msgstr[1] ""
 "Como medida de recurso, serão verificadas aproximadamente cada %i minutos "
 "(este atraso é configurável no Diálogo de Propriedades)."
 
-#: src/mn-mailbox.gob:462
+#: src/mn-mailbox.gob:463
 msgid "A monitoring error has occurred"
 msgstr "Ocorreu um erro de monitorização"
 
-#: src/mn-mailbox.gob:463
+#: src/mn-mailbox.gob:464
 #, c-format
 msgid ""
 "Mail Notification was unable to enable immediate notification for one or "
@@ -922,26 +971,26 @@ msgstr ""
 "A Notificação de Correio foi incapaz de activar notificação imediata para "
 "uma ou mais caixas de correio. %s"
 
-#: src/mn-mailboxes.gob:143
+#: src/mn-mailboxes.gob:142
 msgid "Whether one or more of the mailboxes has to be polled"
 msgstr "Se uma ou mais caixas de correio têm de ser manualmente verificadas"
 
-#: src/mn-mailboxes.gob:276
+#: src/mn-mailboxes.gob:272
 #, c-format
 msgid "%s is unsupported: %s"
 msgstr "%s não é suportado: %s"
 
-#: src/mn-mailboxes.gob:307
+#: src/mn-mailboxes.gob:304
 #, c-format
 msgid "%s has new mail"
 msgstr "%s tem correio novo"
 
-#: src/mn-mailboxes.gob:307
+#: src/mn-mailboxes.gob:304
 #, c-format
 msgid "%s has no new mail"
 msgstr "%s não tem correio novo"
 
-#: src/mn-mailboxes.gob:333
+#: src/mn-mailboxes.gob:330
 #, c-format
 msgid "%s reported an error: %s"
 msgstr "%s relatou um erro: %s"
@@ -1061,51 +1110,51 @@ msgstr "erro ao ler a caixa de correio: %s"
 msgid "unable to open mailbox: %s"
 msgstr "erro ao abrir a caixa de correio: %s"
 
-#: src/mn-message-label.gob:77
+#: src/mn-message-box.gob:61
 msgid "Unreadable message"
 msgstr "Mensagem ilegível"
 
-#: src/mn-message-label.gob:97
+#: src/mn-message-box.gob:66
 msgid "From"
 msgstr "De"
 
-#: src/mn-message-label.gob:98
+#: src/mn-message-box.gob:67
 msgid "Subject"
 msgstr "Assunto"
 
-#: src/mn-message-label.gob:102
+#: src/mn-message-box.gob:72
 msgid "Sent"
 msgstr "Enviado"
 
-#: src/mn-message-label.gob:151
+#: src/mn-message-box.gob:184
 #, c-format
 msgid "%i second ago"
 msgid_plural "%i seconds ago"
 msgstr[0] "%i segundo atrás"
 msgstr[1] "%i segundos atrás"
 
-#: src/mn-message-label.gob:155
+#: src/mn-message-box.gob:188
 #, c-format
 msgid "%i minute ago"
 msgid_plural "%i minutes ago"
 msgstr[0] "%i minuto atrás"
 msgstr[1] "%i minutos atrás"
 
-#: src/mn-message-label.gob:160
+#: src/mn-message-box.gob:193
 #, c-format
 msgid "%i hour ago"
 msgid_plural "%i hours ago"
 msgstr[0] "%i hora atrás"
 msgstr[1] "%i horas atrás"
 
-#: src/mn-message-label.gob:165
+#: src/mn-message-box.gob:198
 #, c-format
 msgid "%i day ago"
 msgid_plural "%i days ago"
 msgstr[0] "%i dia atrás"
 msgstr[1] "%i dias atrás"
 
-#: src/mn-message-label.gob:170
+#: src/mn-message-box.gob:203
 #, c-format
 msgid "%i week ago"
 msgid_plural "%i weeks ago"
@@ -1154,15 +1203,15 @@ msgstr "SSL/TLS _in-band"
 msgid "SSL/TLS on sepa_rate port"
 msgstr "SSL/TLS num porto sepa_rado"
 
-#: src/mn-pop3-mailbox-properties.gob:85
+#: src/mn-pop3-mailbox-properties.gob:86
 msgid "The hostname or IP address of the POP3 server"
 msgstr "O hostname ou endereço IP do servidor POP3"
 
-#: src/mn-pop3-mailbox-properties.gob:86
+#: src/mn-pop3-mailbox-properties.gob:87
 msgid "Your username on the POP3 server"
 msgstr "O seu nome de utilizador no servidor POP3"
 
-#: src/mn-pop3-mailbox-properties.gob:87
+#: src/mn-pop3-mailbox-properties.gob:88
 msgid ""
 "Your password on the POP3 server (if left blank, you will be prompted for "
 "the password when needed)"
@@ -1170,7 +1219,7 @@ msgstr ""
 "A sua senha no servidor POP3 (se deixar em branco, a senha será pedida "
 "quando necessária)"
 
-#: src/mn-pop3-mailbox-properties.gob:88 src/mn-pop3-mailbox-properties.gob:89
+#: src/mn-pop3-mailbox-properties.gob:89 src/mn-pop3-mailbox-properties.gob:90
 msgid "The port number of the POP3 server"
 msgstr "O número do porto do servidor POP3"
 
@@ -1178,90 +1227,76 @@ msgstr "O número do porto do servidor POP3"
 msgid "invalid arguments for the LOGIN-DELAY capability"
 msgstr "argumentos inválidos para a habilidade LOGIN-DELAY"
 
-#: src/mn-pop3-mailbox.gob:549
+#: src/mn-pop3-mailbox.gob:556
 msgid "unknown error"
 msgstr "erro desconhecido"
 
-#: src/mn-pop3-mailbox.gob:681
+#: src/mn-pop3-mailbox.gob:690
 #, c-format
 msgid "honouring LOGIN-DELAY, sleeping for %i second"
 msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds"
 msgstr[0] "honrando LOGIN-DELAY, dormindo por %i segundo"
 msgstr[1] "honrando LOGIN-DELAY, dormindo por %i segundos"
 
-#: src/mn-pop3-mailbox.gob:840
+#: src/mn-pop3-mailbox.gob:849
 msgid "server does not support APOP authentication"
 msgstr "servidor não suporta autenticação APOP"
 
-#: src/mn-pop3-mailbox.gob:868
+#: src/mn-pop3-mailbox.gob:877
 msgid "falling back to APOP authentication"
 msgstr "recorrendo a autenticação APOP"
 
-#: src/mn-pop3-mailbox.gob:873
+#: src/mn-pop3-mailbox.gob:882
 msgid "falling back to USER/PASS authentication"
 msgstr "recorrendo a autenticação USER/PASS"
 
-#: src/mn-properties.c:170
+#: src/mn-properties.c:181
 msgid "top left"
 msgstr "topo esquerdo"
 
-#: src/mn-properties.c:171
+#: src/mn-properties.c:182
 msgid "top right"
 msgstr "topo direito"
 
-#: src/mn-properties.c:172
+#: src/mn-properties.c:183
 msgid "bottom left"
 msgstr "fundo esquerdo"
 
-#: src/mn-properties.c:173
+#: src/mn-properties.c:184
 msgid "bottom right"
 msgstr "fundo direito"
 
-#: src/mn-properties.c:251
+#: src/mn-properties.c:270
 msgid "No mailbox selected."
 msgstr "Nenhuma caixa de correio seleccionada."
 
-#: src/mn-properties.c:256
+#: src/mn-properties.c:275
 #, c-format
 msgid "%i mailbox selected."
 msgid_plural "%i mailboxes selected."
 msgstr[0] "%i caixa de correio seleccionada."
 msgstr[1] "%i caixas de correio seleccionadas."
 
-#: src/mn-shell.gob:86
+#: src/mn-shell.gob:92
 msgid "You have new mail."
 msgstr "Tem novo correio."
 
-#: src/mn-shell.gob:263
-msgid "The following mailbox has new mail:\n"
-msgid_plural "The following mailboxes have new mail:\n"
-msgstr[0] "A seguinte caixa de correio tem novo correio:\n"
-msgstr[1] "As seguintes caixas de correio têm novo correio:\n"
-
-#: src/mn-shell.gob:267
-msgid "You have no new mail."
-msgstr "Não tem correio novo."
-
-#: src/mn-shell.gob:270
-msgid "The following mailbox reported an error:\n"
-msgid_plural "The following mailboxes reported an error:\n"
-msgstr[0] "A seguinte caixa de correio relatou um erro:\n"
-msgstr[1] "As seguintes caixas de correios relataram um erro:\n"
-
-#: src/mn-shell.gob:275
-msgid "The following mailbox is unsupported:\n"
-msgid_plural "The following mailboxes are unsupported:\n"
-msgstr[0] "A seguinte caixa de correio não é suportada:\n"
-msgstr[1] "As seguintes caixas de correio não são suportadas:\n"
-
-#: src/mn-shell.gob:320
-msgid "A command error has occurred in Mail Notification"
-msgstr "Ocorreu um erro de comando na Notificação de Correio"
+#: src/mn-shell.gob:347
+msgid "Mailboxes Having New Mail"
+msgstr ""
 
-#: src/mn-shell.gob:321
-#, c-format
-msgid "Unable to execute \"%s\": %s."
-msgstr "incapaz de executar \"%s\": %s."
+#: src/mn-shell.gob:349
+msgid "Errors"
+msgstr ""
+
+#: src/mn-shell.gob:351
+#, fuzzy
+msgid "Unsupported Mailboxes"
+msgstr "Caixa de Correio de Sistema"
+
+#: src/mn-shell.gob:364 ui/summary-dialog.glade.h:1
+msgid "Mail Summary"
+msgstr "Resumo de Correio"
 
 #: src/mn-soup.c:140
 #, c-format
@@ -1362,11 +1397,20 @@ msgstr "Ocorreu um erro fatal na Notificação de Correio"
 msgid "unable to get current time: %s"
 msgstr "incapaz de obter tempo actual: %s"
 
-#: src/mn-util.c:887
+#: src/mn-util.c:906
 #, c-format
 msgid "invalid signal specification \"%s\""
 msgstr "especificação de sinal inválida \"%s\""
 
+#: src/mn-util.c:945
+msgid "A command error has occurred in Mail Notification"
+msgstr "Ocorreu um erro de comando na Notificação de Correio"
+
+#: src/mn-util.c:946
+#, c-format
+msgid "Unable to execute \"%s\": %s."
+msgstr "incapaz de executar \"%s\": %s."
+
 #: ui/authentication.glade.h:1 ui/properties.glade.h:2
 msgid "*"
 msgstr "*"
@@ -1388,59 +1432,73 @@ msgid "<span weight=\"bold\">Commands</span>"
 msgstr "<span weight=\"bold\">Comandos</span>"
 
 #: ui/properties.glade.h:4
+#, fuzzy
+msgid "<span weight=\"bold\">Double-click Action</span>"
+msgstr "<span weight=\"bold\">Posição</span>"
+
+#: ui/properties.glade.h:5
 msgid "<span weight=\"bold\">General</span>"
 msgstr "<span weight=\"bold\">Geral</span>"
 
-#: ui/properties.glade.h:5
+#: ui/properties.glade.h:6
 msgid "<span weight=\"bold\">Mailbox List</span>"
 msgstr "<span weight=\"bold\">Lista de Caixas de Correio</span>"
 
-#: ui/properties.glade.h:6
+#: ui/properties.glade.h:7
 msgid "<span weight=\"bold\">Position</span>"
 msgstr "<span weight=\"bold\">Posição</span>"
 
-#: ui/properties.glade.h:7
+#: ui/properties.glade.h:8
 msgid "General"
 msgstr "Geral"
 
-#: ui/properties.glade.h:8
+#: ui/properties.glade.h:9
 msgid "Hori_zontal offset:"
 msgstr "Intervalo Hori_zontal:"
 
-#: ui/properties.glade.h:9
+#: ui/properties.glade.h:10
 msgid "Mail Notification Properties"
 msgstr "Propriedades de Notificação de Correio"
 
-#: ui/properties.glade.h:10
+#: ui/properties.glade.h:11
 msgid "Mail Summary Popup"
 msgstr "Popup de Resumo de Correio"
 
-#: ui/properties.glade.h:11
+#: ui/properties.glade.h:12
 msgid "Mailboxes"
 msgstr "Caixas de Correio"
 
-#: ui/properties.glade.h:12
+#: ui/properties.glade.h:13
+msgid "Only display _recent mail"
+msgstr ""
+
+#: ui/properties.glade.h:14
 msgid "P_osition:"
 msgstr "_Posição:"
 
-#: ui/properties.glade.h:13
+#: ui/properties.glade.h:15
 msgid "The amount of time to wait before closing the mail summary popup"
 msgstr ""
 "A quantidade de tempo a esperar antes de fechar o popup de resumo de correio"
 
-#: ui/properties.glade.h:14
+#: ui/properties.glade.h:16
 msgid "The amount of time to wait between mail checks"
 msgstr "A quantidade de tempo a esperar entre verificações de correio"
 
-#: ui/properties.glade.h:15
+#: ui/properties.glade.h:17
+#, fuzzy
+msgid "The command to run to launch the mail reader"
+msgstr "O comando a executar quando todo o correio está lido"
+
+#: ui/properties.glade.h:18
 msgid "The command to run when all mail is read"
 msgstr "O comando a executar quando todo o correio está lido"
 
-#: ui/properties.glade.h:16
+#: ui/properties.glade.h:19
 msgid "The command to run when new mail arrives"
 msgstr "O comando a executar quando chega novo correio"
 
-#: ui/properties.glade.h:17
+#: ui/properties.glade.h:20
 msgid ""
 "The number of pixels to leave between the left or right side of the screen "
 "and the mail summary popup"
@@ -1448,7 +1506,7 @@ msgstr ""
 "O número de pixeis a deixar entre o extremo esquerdo ou direito do ecran e o "
 "popup de resumo de correio"
 
-#: ui/properties.glade.h:18
+#: ui/properties.glade.h:21
 msgid ""
 "The number of pixels to leave between the top or bottom side of the screen "
 "and the mail summary popup"
@@ -1456,37 +1514,47 @@ msgstr ""
 "O número de pixeis a deixar entre o topo ou fundo do ecran e o popup de "
 "resumo de correio"
 
-#: ui/properties.glade.h:19
+#: ui/properties.glade.h:22
 msgid "When _all mail is read:"
 msgstr "Quando _todo o correio está lido:"
 
-#: ui/properties.glade.h:20
+#: ui/properties.glade.h:23
 msgid "When _new mail arrives:"
 msgstr "Quando chega _novo correio:"
 
-#: ui/properties.glade.h:21
+#: ui/properties.glade.h:24
 msgid "Whether the status icon should blink on errors or not"
 msgstr "Se o ícone de estado deve piscar em erros ou não"
 
-#: ui/properties.glade.h:22
+#: ui/properties.glade.h:25
 msgid "Whether to automatically close the mail summary popup or not"
 msgstr ""
 "Se o popup de resumo de correio deve ser automaticamente fechado ou não"
 
-#: ui/properties.glade.h:23
+#: ui/properties.glade.h:26
 msgid "Whether to display the mail summary popup when new mail arrives or not"
 msgstr ""
 "Se o popup de resumo de correio deve ser mostrado quando chega correio ou não"
 
-#: ui/properties.glade.h:24
+#: ui/properties.glade.h:27
+#, fuzzy
+msgid "Whether to hide previously displayed mail or not"
+msgstr "Se a caixa de correio tem novo correio"
+
+#: ui/properties.glade.h:28
 msgid "Whether to run a command when all mail is read or not"
 msgstr "Se deve ser executado um comando quando todo o correio está lido"
 
-#: ui/properties.glade.h:25
+#: ui/properties.glade.h:29
 msgid "Whether to run a command when new mail arrives or not"
 msgstr "Se deve ser executado um comando quando chega novo correio"
 
-#: ui/properties.glade.h:26
+#: ui/properties.glade.h:30
+#, fuzzy
+msgid "Whether to set a mail reader or not"
+msgstr "Se deve ser executado um comando quando todo o correio está lido"
+
+#: ui/properties.glade.h:31
 msgid ""
 "Whether to start Mail Notification when you log into your GNOME session or "
 "not"
@@ -1494,46 +1562,56 @@ msgstr ""
 "Se a Notificação de Correio deve ser iniciada quando faz se liga à sessão "
 "GNOME ou não"
 
-#: ui/properties.glade.h:27
+#: ui/properties.glade.h:32
 msgid "_Automatically close after:"
 msgstr "Fechar _Automáticamente após:"
 
-#: ui/properties.glade.h:28
+#: ui/properties.glade.h:33
 msgid "_Blink on errors"
 msgstr "_Piscar em erros"
 
-#: ui/properties.glade.h:29
+#: ui/properties.glade.h:34
 msgid "_Delay between mail checks:"
 msgstr "_Intervalo entre verificações de correio:"
 
-#: ui/properties.glade.h:30
+#: ui/properties.glade.h:35
+#, fuzzy
+msgid "_Display the mail summary dialog"
+msgstr "Mostrar o diálogo de resumo de correio"
+
+#: ui/properties.glade.h:36
 msgid "_Enable mail summary popup"
 msgstr "_Activar popup de resumo de correio"
 
-#: ui/properties.glade.h:31
+#: ui/properties.glade.h:37
+msgid "_Launch the mail reader"
+msgstr ""
+
+#: ui/properties.glade.h:38
+#, fuzzy
+msgid "_Mail reader:"
+msgstr "_Resumo de Correio"
+
+#: ui/properties.glade.h:39
 msgid "_Start Mail Notification on GNOME login"
 msgstr "_Iniciar Notificação de Correio no login GNOME"
 
-#: ui/properties.glade.h:32
+#: ui/properties.glade.h:40
 msgid "_Vertical offset:"
 msgstr "Intervalo _vertical:"
 
-#: ui/properties.glade.h:33
+#: ui/properties.glade.h:41
 msgid "minutes"
 msgstr "minutos"
 
-#: ui/properties.glade.h:34
+#: ui/properties.glade.h:42
 msgid "pixels"
 msgstr "pixeis"
 
-#: ui/properties.glade.h:35
+#: ui/properties.glade.h:43
 msgid "seconds"
 msgstr "segundos"
 
-#: ui/summary-dialog.glade.h:1
-msgid "Mail Summary"
-msgstr "Resumo de Correio"
-
 #: ui/summary-popup.glade.h:1
 msgid "<span size=\"larger\" weight=\"bold\">Mail Summary</span>"
 msgstr "<span size=\"larger\" weight=\"bold\">Resumo de Correio</span>"
@@ -1575,8 +1653,23 @@ msgstr "_Configurar Notificação de Correio"
 msgid "_Skip configuration"
 msgstr "_Saltar configuração"
 
-#~ msgid "Double-clicked command"
-#~ msgstr "Comando de duplo-clique"
+#~ msgid "The following mailbox has new mail:\n"
+#~ msgid_plural "The following mailboxes have new mail:\n"
+#~ msgstr[0] "A seguinte caixa de correio tem novo correio:\n"
+#~ msgstr[1] "As seguintes caixas de correio têm novo correio:\n"
+
+#~ msgid "You have no new mail."
+#~ msgstr "Não tem correio novo."
+
+#~ msgid "The following mailbox reported an error:\n"
+#~ msgid_plural "The following mailboxes reported an error:\n"
+#~ msgstr[0] "A seguinte caixa de correio relatou um erro:\n"
+#~ msgstr[1] "As seguintes caixas de correios relataram um erro:\n"
+
+#~ msgid "The following mailbox is unsupported:\n"
+#~ msgid_plural "The following mailboxes are unsupported:\n"
+#~ msgstr[0] "A seguinte caixa de correio não é suportada:\n"
+#~ msgstr[1] "As seguintes caixas de correio não são suportadas:\n"
 
 #~ msgid "Run a command when the icon is double-clicked"
 #~ msgstr "Executar um comando quando fizer duplo-clique no ícone"
diff --git a/po/ru.gmo b/po/ru.gmo
Binary files differ.
diff --git a/po/ru.po b/po/ru.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: mail-notification 0.5.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2004-10-25 15:26+0200\n"
+"POT-Creation-Date: 2004-10-31 18:42+0100\n"
 "PO-Revision-Date: 2004-07-21 21:58+0200\n"
 "Last-Translator: Dan Korostelev <dan@ats.energo.ru>\n"
 "Language-Team: Russian\n"
@@ -38,7 +38,7 @@ msgstr "Иконка входящих сообщений"
 #: data/mail-notification-properties.desktop.in.h:2
 #: data/mail-notification.desktop.in.h:2
 #: data/mail-notification.soundlist.in.h:1 src/mn-about-dialog.gob:40
-#: src/mn-mail-icon.gob:163 src/mn-main.c:271
+#: src/mn-mail-icon.gob:194 src/mn-main.c:271
 msgid "Mail Notification"
 msgstr "Иконка входящих сообщений"
 
@@ -68,197 +68,236 @@ msgid "Do not show the immediate notification error dialog"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:6
-msgid "Enable mail summary popup"
+msgid "Double-click action"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:7
-msgid "Fingerprints of trusted X509 certificates"
+msgid "Enable mail summary popup"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:8
-msgid "Has already been run"
+msgid "Fingerprints of trusted X509 certificates"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:9
-msgid "Height of mail summary dialog"
+msgid "Has already been run"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:10
-msgid "Height of properties dialog"
+msgid "Height of mail summary dialog"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:11
-msgid "Mail read command"
+msgid "Height of properties dialog"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:12
-msgid "Mail summary popup horizontal offset"
+msgid "Mail read command"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:13
-msgid "Mail summary popup position"
+msgid "Mail reader command"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:14
-msgid "Mail summary popup vertical offset"
+msgid "Mail summary popup horizontal offset"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:15
-msgid "Mailbox list"
+msgid "Mail summary popup position"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:16
-msgid "Minutes between mail checks"
+msgid "Mail summary popup vertical offset"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:17
-msgid "Minutes to wait before closing the mail summary popup"
+msgid "Mailbox list"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:18
-msgid "New mail command"
+msgid "Minutes between mail checks"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:19
+msgid "Minutes to wait before closing the mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:20
+msgid "New mail command"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:21
+msgid "Only display recent mail in mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:22
 #, fuzzy
 msgid "Run a command when all mail is read"
 msgstr ""
 "Иконка в области уведомления панели, уведомляющая о приходе новой почты."
 
-#: data/mail-notification.schemas.in.h:20
+#: data/mail-notification.schemas.in.h:23
 #, fuzzy
 msgid "Run a command when new mail arrives"
 msgstr ""
 "Иконка в области уведомления панели, уведомляющая о приходе новой почты."
 
-#: data/mail-notification.schemas.in.h:21
+#: data/mail-notification.schemas.in.h:24
 msgid "Seconds between mail checks"
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:22
+#: data/mail-notification.schemas.in.h:25
 msgid "Seconds to wait before closing the mail summary popup"
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:23
+#: data/mail-notification.schemas.in.h:26
+msgid "Set a mail reader"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:27
+msgid ""
+"The action to perform when the icon is double-clicked. Must be \"display-"
+"mail-summary\" or \"launch-mail-reader\"."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:28
 msgid ""
 "The amount of time to wait before closing the mail summary popup (minutes "
 "part)."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:24
+#: data/mail-notification.schemas.in.h:29
 msgid ""
 "The amount of time to wait before closing the mail summary popup (seconds "
 "part)."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:25
+#: data/mail-notification.schemas.in.h:30
+#, fuzzy
+msgid "The command to run to launch the mail reader."
+msgstr ""
+"Иконка в области уведомления панели, уведомляющая о приходе новой почты."
+
+#: data/mail-notification.schemas.in.h:31
 #, fuzzy
 msgid "The command to run when all mail is read."
 msgstr ""
 "Иконка в области уведомления панели, уведомляющая о приходе новой почты."
 
-#: data/mail-notification.schemas.in.h:26
+#: data/mail-notification.schemas.in.h:32
 #, fuzzy
 msgid "The command to run when new mail arrives."
 msgstr ""
 "Иконка в области уведомления панели, уведомляющая о приходе новой почты."
 
-#: data/mail-notification.schemas.in.h:27
+#: data/mail-notification.schemas.in.h:33
 msgid "The height of the mail summary dialog in pixels."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:28
+#: data/mail-notification.schemas.in.h:34
 msgid "The height of the properties dialog in pixels."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:29
+#: data/mail-notification.schemas.in.h:35
 msgid "The list of mailboxes to monitor."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:30
+#: data/mail-notification.schemas.in.h:36
 msgid ""
 "The list of trusted SSL/TLS servers (hostname:port) lacking a X509 "
 "certificate."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:31
+#: data/mail-notification.schemas.in.h:37
 msgid ""
 "The list of trusted X509 certificates, represented by their MD5 fingerprint."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:32
+#: data/mail-notification.schemas.in.h:38
 msgid ""
 "The number of pixels to leave between the left or right side of the screen "
 "and the mail summary popup."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:33
+#: data/mail-notification.schemas.in.h:39
 msgid ""
 "The number of pixels to leave between the top or bottom side of the screen "
 "and the mail summary popup."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:34
+#: data/mail-notification.schemas.in.h:40
 msgid ""
 "The position of the mail summary popup. Must be \"top-left\", \"top-right\", "
 "\"bottom-left\" or \"bottom-right\"."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:35
+#: data/mail-notification.schemas.in.h:41
 msgid "The width of the mail summary dialog in pixels."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:36
+#: data/mail-notification.schemas.in.h:42
 msgid "The width of the properties dialog in pixels."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:37
+#: data/mail-notification.schemas.in.h:43
 msgid "Trusted servers list"
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:38
+#: data/mail-notification.schemas.in.h:44
 msgid "Whether Mail Notification has already been run or not."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:39
+#: data/mail-notification.schemas.in.h:45
 msgid "Whether the status icon should blink on errors or not."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:40
+#: data/mail-notification.schemas.in.h:46
 #, fuzzy
 msgid "Whether to automatically close the mail summary popup or not."
 msgstr ""
 "Иконка в области уведомления панели, уведомляющая о приходе новой почты."
 
-#: data/mail-notification.schemas.in.h:41
+#: data/mail-notification.schemas.in.h:47
 #, fuzzy
 msgid "Whether to display the mail summary popup when new mail arrives or not."
 msgstr ""
 "Иконка в области уведомления панели, уведомляющая о приходе новой почты."
 
-#: data/mail-notification.schemas.in.h:42
+#: data/mail-notification.schemas.in.h:48
+msgid ""
+"Whether to hide previously displayed mail in the mail summary popup or not."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:49
 msgid ""
 "Whether to prevent the immediate notification error dialog from being "
 "displayed or not."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:43
+#: data/mail-notification.schemas.in.h:50
 #, fuzzy
 msgid "Whether to run a command when all mail is read or not."
 msgstr ""
 "Иконка в области уведомления панели, уведомляющая о приходе новой почты."
 
-#: data/mail-notification.schemas.in.h:44
+#: data/mail-notification.schemas.in.h:51
 #, fuzzy
 msgid "Whether to run a command when new mail arrives or not."
 msgstr ""
 "Иконка в области уведомления панели, уведомляющая о приходе новой почты."
 
-#: data/mail-notification.schemas.in.h:45
+#: data/mail-notification.schemas.in.h:52
+#, fuzzy
+msgid "Whether to set a mail reader or not."
+msgstr ""
+"Иконка в области уведомления панели, уведомляющая о приходе новой почты."
+
+#: data/mail-notification.schemas.in.h:53
 msgid "Width of mail summary dialog"
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:46
+#: data/mail-notification.schemas.in.h:54
 msgid "Width of properties dialog"
 msgstr ""
 
@@ -440,127 +479,127 @@ msgstr ""
 msgid "unable to parse response \"%s\""
 msgstr ""
 
-#: src/mn-client-session.c:592 src/mn-client-session.c:599
+#: src/mn-client-session.c:601 src/mn-client-session.c:608
 #, c-format
 msgid "unable to read from server: %s"
 msgstr ""
 
-#: src/mn-client-session.c:597
+#: src/mn-client-session.c:606
 msgid "unable to read from server: EOF"
 msgstr ""
 
-#: src/mn-client-session.c:609
+#: src/mn-client-session.c:618
 #, c-format
 msgid "unable to decode data using SASL: %s"
 msgstr ""
 
-#: src/mn-client-session.c:746
+#: src/mn-client-session.c:755
 #, c-format
 msgid "unable to encode data using SASL: %s"
 msgstr ""
 
-#: src/mn-client-session.c:777 src/mn-client-session.c:784
+#: src/mn-client-session.c:786 src/mn-client-session.c:793
 #, c-format
 msgid "unable to write to server: %s"
 msgstr ""
 
-#: src/mn-client-session.c:782
+#: src/mn-client-session.c:791
 msgid "unable to write to server: EOF"
 msgstr ""
 
-#: src/mn-client-session.c:814
+#: src/mn-client-session.c:823
 #, c-format
 msgid "unable to encode Base64: %s"
 msgstr ""
 
-#: src/mn-client-session.c:917
+#: src/mn-client-session.c:927
 #, c-format
 msgid "unable to initialize the SASL library: %s"
 msgstr ""
 
-#: src/mn-client-session.c:926
+#: src/mn-client-session.c:936
 #, c-format
 msgid "unable to retrieve local address of socket: %s"
 msgstr ""
 
-#: src/mn-client-session.c:932
+#: src/mn-client-session.c:942
 #, c-format
 msgid "unable to retrieve remote address of socket: %s"
 msgstr ""
 
-#: src/mn-client-session.c:966
+#: src/mn-client-session.c:976
 #, c-format
 msgid "warning: unable to set SASL security properties: %s"
 msgstr ""
 
-#: src/mn-client-session.c:1005
+#: src/mn-client-session.c:1015
 msgid ""
 "unable to start SASL authentication: SASL asked for something we did not know"
 msgstr ""
 
-#: src/mn-client-session.c:1009
+#: src/mn-client-session.c:1019
 #, c-format
 msgid "unable to start SASL authentication: %s"
 msgstr ""
 
-#: src/mn-client-session.c:1013
+#: src/mn-client-session.c:1023
 #, c-format
 msgid "unable to create a SASL connection: %s"
 msgstr ""
 
-#: src/mn-client-session.c:1063
+#: src/mn-client-session.c:1073
 msgid "SASL asked for something we did not know, aborting SASL authentication"
 msgstr ""
 
-#: src/mn-client-session.c:1067
+#: src/mn-client-session.c:1077
 #, c-format
 msgid "%s, aborting SASL authentication"
 msgstr ""
 
 #. compliance error
-#: src/mn-client-session.c:1072
+#: src/mn-client-session.c:1082
 #, c-format
 msgid "unable to decode Base64 input from server: %s"
 msgstr ""
 
-#: src/mn-client-session.c:1075
+#: src/mn-client-session.c:1085
 msgid ""
 "the server sent a SASL challenge, but there was a pending initial SASL "
 "client response"
 msgstr ""
 
-#: src/mn-client-session.c:1089
+#: src/mn-client-session.c:1099
 msgid ""
 "the server did not send a SASL challenge, but there was no pending initial "
 "SASL client response"
 msgstr ""
 
-#: src/mn-client-session.c:1112
+#: src/mn-client-session.c:1122
 #, c-format
 msgid "a SASL security layer of strength factor %i is now active"
 msgstr ""
 
 #. a security layer is active but we can't retrieve maxoutbuf -> fatal
-#: src/mn-client-session.c:1117
+#: src/mn-client-session.c:1127
 #, c-format
 msgid "unable to get SASL_MAXOUTBUF property: %s"
 msgstr ""
 
-#: src/mn-client-session.c:1123
+#: src/mn-client-session.c:1133
 #, c-format
 msgid "warning: unable to get SASL_SSF property: %s"
 msgstr ""
 
-#: src/mn-conf.c:123
+#: src/mn-conf.c:136
 #, c-format
 msgid "recursively unsetting %s"
 msgstr ""
 
-#: src/mn-conf.c:127
+#: src/mn-conf.c:140
 msgid "syncing the GConf database"
 msgstr ""
 
-#: src/mn-conf.c:130
+#: src/mn-conf.c:143
 msgid "completed"
 msgstr ""
 
@@ -574,33 +613,33 @@ msgid ""
 "when needed)"
 msgstr ""
 
-#: src/mn-gmail-mailbox.gob:63
+#: src/mn-gmail-mailbox.gob:81
 msgid "libsoup has not been compiled with SSL/TLS support"
 msgstr ""
 
-#: src/mn-gmail-mailbox.gob:105
+#: src/mn-gmail-mailbox.gob:123
 #, c-format
 msgid "unable to parse URI \"%s\""
 msgstr ""
 
-#: src/mn-gmail-mailbox.gob:159
+#: src/mn-gmail-mailbox.gob:177
 #, c-format
 msgid "unable to transfer data: %s"
 msgstr ""
 
-#: src/mn-gmail-mailbox.gob:280
+#: src/mn-gmail-mailbox.gob:298
 msgid "logging in"
 msgstr ""
 
-#: src/mn-gmail-mailbox.gob:358
+#: src/mn-gmail-mailbox.gob:376
 msgid "login failed"
 msgstr ""
 
-#: src/mn-gmail-mailbox.gob:433
+#: src/mn-gmail-mailbox.gob:451
 msgid "searching for unread mail"
 msgstr ""
 
-#: src/mn-gmail-mailbox.gob:529
+#: src/mn-gmail-mailbox.gob:490
 msgid "unable to parse Gmail data"
 msgstr ""
 
@@ -664,73 +703,77 @@ msgstr ""
 msgid "The mailbox name"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:133 src/mn-pop3-mailbox.gob:142
+#: src/mn-imap-mailbox.gob:164 src/mn-pop3-mailbox.gob:142
 msgid "SSL/TLS support has not been compiled in"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:204
+#: src/mn-imap-mailbox.gob:253
 msgid "server did not send capabilities"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:319
+#: src/mn-imap-mailbox.gob:374
 msgid "server advertised LOGINDISABLED, not using LOGIN authentication"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:320
+#: src/mn-imap-mailbox.gob:375
 msgid "unable to login"
 msgstr ""
 
 #. compliance error
-#: src/mn-imap-mailbox.gob:451
+#: src/mn-imap-mailbox.gob:516
 msgid "server did not send search results"
 msgstr ""
 
 #. compliance error
-#: src/mn-imap-mailbox.gob:527
+#: src/mn-imap-mailbox.gob:596
 msgid "server did not send all the messages we requested"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:574
+#: src/mn-imap-mailbox.gob:645
 msgid "unable to fetch message"
 msgstr ""
 
 #. compliance error
-#: src/mn-imap-mailbox.gob:621
+#: src/mn-imap-mailbox.gob:763
 msgid "server did not send status"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:856 src/mn-pop3-mailbox.gob:913
+#: src/mn-imap-mailbox.gob:1035 src/mn-pop3-mailbox.gob:922
 msgid "unknown server error"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:927 src/mn-pop3-mailbox.gob:226
+#: src/mn-imap-mailbox.gob:1106 src/mn-pop3-mailbox.gob:226
 msgid "server does not support in-band SSL/TLS"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:946 src/mn-pop3-mailbox.gob:832
+#: src/mn-imap-mailbox.gob:1125 src/mn-pop3-mailbox.gob:841
 msgid ""
 "a SASL authentication mechanism was selected but SASL support has not been "
 "compiled in"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:954 src/mn-pop3-mailbox.gob:844
+#: src/mn-imap-mailbox.gob:1133 src/mn-pop3-mailbox.gob:853
 #, c-format
 msgid "unknown authentication mechanism \"%s\""
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:972
+#: src/mn-imap-mailbox.gob:1151
 msgid "falling back to IMAP LOGIN authentication"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:977 src/mn-pop3-mailbox.gob:879
+#: src/mn-imap-mailbox.gob:1156 src/mn-pop3-mailbox.gob:888
 msgid "authentication failed"
 msgstr ""
 
-#: src/mn-mail-icon.gob:84 ui/summary-dialog.glade.h:2
+#: src/mn-mail-icon.gob:92 ui/summary-dialog.glade.h:2
+msgid "_Launch Mail Reader"
+msgstr ""
+
+#: src/mn-mail-icon.gob:93 ui/summary-dialog.glade.h:3
 msgid "_Update"
 msgstr ""
 
-#: src/mn-mail-icon.gob:90
+#: src/mn-mail-icon.gob:99
 msgid "R_emove From Notification Area"
 msgstr ""
 
@@ -787,7 +830,7 @@ msgstr ""
 msgid "Whether the properties are completely filled or not"
 msgstr ""
 
-#: src/mn-mailbox-view.gob:263 src/mn-message-label.gob:74
+#: src/mn-mailbox-view.gob:263 src/mn-message-box.gob:58
 msgid "Mailbox"
 msgstr ""
 
@@ -813,35 +856,35 @@ msgid "The mailbox human-readable name"
 msgstr ""
 
 #: src/mn-mailbox.gob:145
-msgid "Whether the mailbox has to be manually checked or not"
+msgid "Whether the mailbox has to be polled or not"
 msgstr ""
 
-#: src/mn-mailbox.gob:150
+#: src/mn-mailbox.gob:151
 msgid "Whether the mailbox has new mail or not"
 msgstr ""
 
-#: src/mn-mailbox.gob:155
+#: src/mn-mailbox.gob:156
 msgid "The list of new and unread MNMessage objects"
 msgstr ""
 
-#: src/mn-mailbox.gob:209
+#: src/mn-mailbox.gob:210
 msgid "The mailbox error, if any"
 msgstr ""
 
-#: src/mn-mailbox.gob:308
+#: src/mn-mailbox.gob:309
 msgid "does not exist"
 msgstr ""
 
-#: src/mn-mailbox.gob:340
+#: src/mn-mailbox.gob:341
 msgid "unknown format"
 msgstr ""
 
-#: src/mn-mailbox.gob:406
+#: src/mn-mailbox.gob:407
 #, c-format
 msgid "unable to enable immediate notification for %s: %s"
 msgstr ""
 
-#: src/mn-mailbox.gob:424
+#: src/mn-mailbox.gob:425
 #, c-format
 msgid ""
 "As a fallback, they will be checked every %i second (this delay is "
@@ -852,7 +895,7 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-mailbox.gob:435
+#: src/mn-mailbox.gob:436
 #, c-format
 msgid ""
 "As a fallback, they will be checked every %i minute (this delay is "
@@ -863,7 +906,7 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-mailbox.gob:446
+#: src/mn-mailbox.gob:447
 #, c-format
 msgid ""
 "As a fallback, they will be checked approximately every %i minute (this "
@@ -874,37 +917,37 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-mailbox.gob:462
+#: src/mn-mailbox.gob:463
 msgid "A monitoring error has occurred"
 msgstr ""
 
-#: src/mn-mailbox.gob:463
+#: src/mn-mailbox.gob:464
 #, c-format
 msgid ""
 "Mail Notification was unable to enable immediate notification for one or "
 "more mailboxes. %s"
 msgstr ""
 
-#: src/mn-mailboxes.gob:143
+#: src/mn-mailboxes.gob:142
 msgid "Whether one or more of the mailboxes has to be polled"
 msgstr ""
 
-#: src/mn-mailboxes.gob:276
+#: src/mn-mailboxes.gob:272
 #, c-format
 msgid "%s is unsupported: %s"
 msgstr ""
 
-#: src/mn-mailboxes.gob:307
+#: src/mn-mailboxes.gob:304
 #, c-format
 msgid "%s has new mail"
 msgstr ""
 
-#: src/mn-mailboxes.gob:307
+#: src/mn-mailboxes.gob:304
 #, c-format
 msgid "%s has no new mail"
 msgstr ""
 
-#: src/mn-mailboxes.gob:333
+#: src/mn-mailboxes.gob:330
 #, c-format
 msgid "%s reported an error: %s"
 msgstr ""
@@ -1019,51 +1062,51 @@ msgstr ""
 msgid "unable to open mailbox: %s"
 msgstr ""
 
-#: src/mn-message-label.gob:77
+#: src/mn-message-box.gob:61
 msgid "Unreadable message"
 msgstr ""
 
-#: src/mn-message-label.gob:97
+#: src/mn-message-box.gob:66
 msgid "From"
 msgstr ""
 
-#: src/mn-message-label.gob:98
+#: src/mn-message-box.gob:67
 msgid "Subject"
 msgstr ""
 
-#: src/mn-message-label.gob:102
+#: src/mn-message-box.gob:72
 msgid "Sent"
 msgstr ""
 
-#: src/mn-message-label.gob:151
+#: src/mn-message-box.gob:184
 #, c-format
 msgid "%i second ago"
 msgid_plural "%i seconds ago"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-message-label.gob:155
+#: src/mn-message-box.gob:188
 #, c-format
 msgid "%i minute ago"
 msgid_plural "%i minutes ago"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-message-label.gob:160
+#: src/mn-message-box.gob:193
 #, c-format
 msgid "%i hour ago"
 msgid_plural "%i hours ago"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-message-label.gob:165
+#: src/mn-message-box.gob:198
 #, c-format
 msgid "%i day ago"
 msgid_plural "%i days ago"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-message-label.gob:170
+#: src/mn-message-box.gob:203
 #, c-format
 msgid "%i week ago"
 msgid_plural "%i weeks ago"
@@ -1112,21 +1155,21 @@ msgstr ""
 msgid "SSL/TLS on sepa_rate port"
 msgstr ""
 
-#: src/mn-pop3-mailbox-properties.gob:85
+#: src/mn-pop3-mailbox-properties.gob:86
 msgid "The hostname or IP address of the POP3 server"
 msgstr ""
 
-#: src/mn-pop3-mailbox-properties.gob:86
+#: src/mn-pop3-mailbox-properties.gob:87
 msgid "Your username on the POP3 server"
 msgstr ""
 
-#: src/mn-pop3-mailbox-properties.gob:87
+#: src/mn-pop3-mailbox-properties.gob:88
 msgid ""
 "Your password on the POP3 server (if left blank, you will be prompted for "
 "the password when needed)"
 msgstr ""
 
-#: src/mn-pop3-mailbox-properties.gob:88 src/mn-pop3-mailbox-properties.gob:89
+#: src/mn-pop3-mailbox-properties.gob:89 src/mn-pop3-mailbox-properties.gob:90
 msgid "The port number of the POP3 server"
 msgstr ""
 
@@ -1134,89 +1177,74 @@ msgstr ""
 msgid "invalid arguments for the LOGIN-DELAY capability"
 msgstr ""
 
-#: src/mn-pop3-mailbox.gob:549
+#: src/mn-pop3-mailbox.gob:556
 msgid "unknown error"
 msgstr ""
 
-#: src/mn-pop3-mailbox.gob:681
+#: src/mn-pop3-mailbox.gob:690
 #, c-format
 msgid "honouring LOGIN-DELAY, sleeping for %i second"
 msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-pop3-mailbox.gob:840
+#: src/mn-pop3-mailbox.gob:849
 msgid "server does not support APOP authentication"
 msgstr ""
 
-#: src/mn-pop3-mailbox.gob:868
+#: src/mn-pop3-mailbox.gob:877
 msgid "falling back to APOP authentication"
 msgstr ""
 
-#: src/mn-pop3-mailbox.gob:873
+#: src/mn-pop3-mailbox.gob:882
 msgid "falling back to USER/PASS authentication"
 msgstr ""
 
-#: src/mn-properties.c:170
+#: src/mn-properties.c:181
 msgid "top left"
 msgstr ""
 
-#: src/mn-properties.c:171
+#: src/mn-properties.c:182
 msgid "top right"
 msgstr ""
 
-#: src/mn-properties.c:172
+#: src/mn-properties.c:183
 msgid "bottom left"
 msgstr ""
 
-#: src/mn-properties.c:173
+#: src/mn-properties.c:184
 msgid "bottom right"
 msgstr ""
 
-#: src/mn-properties.c:251
+#: src/mn-properties.c:270
 msgid "No mailbox selected."
 msgstr ""
 
-#: src/mn-properties.c:256
+#: src/mn-properties.c:275
 #, c-format
 msgid "%i mailbox selected."
 msgid_plural "%i mailboxes selected."
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-shell.gob:86
+#: src/mn-shell.gob:92
 msgid "You have new mail."
 msgstr ""
 
-#: src/mn-shell.gob:263
-msgid "The following mailbox has new mail:\n"
-msgid_plural "The following mailboxes have new mail:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/mn-shell.gob:267
-msgid "You have no new mail."
+#: src/mn-shell.gob:347
+msgid "Mailboxes Having New Mail"
 msgstr ""
 
-#: src/mn-shell.gob:270
-msgid "The following mailbox reported an error:\n"
-msgid_plural "The following mailboxes reported an error:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/mn-shell.gob:275
-msgid "The following mailbox is unsupported:\n"
-msgid_plural "The following mailboxes are unsupported:\n"
-msgstr[0] ""
-msgstr[1] ""
+#: src/mn-shell.gob:349
+msgid "Errors"
+msgstr ""
 
-#: src/mn-shell.gob:320
-msgid "A command error has occurred in Mail Notification"
+#: src/mn-shell.gob:351
+msgid "Unsupported Mailboxes"
 msgstr ""
 
-#: src/mn-shell.gob:321
-#, c-format
-msgid "Unable to execute \"%s\": %s."
+#: src/mn-shell.gob:364 ui/summary-dialog.glade.h:1
+msgid "Mail Summary"
 msgstr ""
 
 #: src/mn-soup.c:140
@@ -1314,11 +1342,20 @@ msgstr ""
 msgid "unable to get current time: %s"
 msgstr ""
 
-#: src/mn-util.c:887
+#: src/mn-util.c:906
 #, c-format
 msgid "invalid signal specification \"%s\""
 msgstr ""
 
+#: src/mn-util.c:945
+msgid "A command error has occurred in Mail Notification"
+msgstr ""
+
+#: src/mn-util.c:946
+#, c-format
+msgid "Unable to execute \"%s\": %s."
+msgstr ""
+
 #: ui/authentication.glade.h:1 ui/properties.glade.h:2
 msgid "*"
 msgstr ""
@@ -1340,151 +1377,183 @@ msgid "<span weight=\"bold\">Commands</span>"
 msgstr ""
 
 #: ui/properties.glade.h:4
-msgid "<span weight=\"bold\">General</span>"
+msgid "<span weight=\"bold\">Double-click Action</span>"
 msgstr ""
 
 #: ui/properties.glade.h:5
-msgid "<span weight=\"bold\">Mailbox List</span>"
+msgid "<span weight=\"bold\">General</span>"
 msgstr ""
 
 #: ui/properties.glade.h:6
-msgid "<span weight=\"bold\">Position</span>"
+msgid "<span weight=\"bold\">Mailbox List</span>"
 msgstr ""
 
 #: ui/properties.glade.h:7
-msgid "General"
+msgid "<span weight=\"bold\">Position</span>"
 msgstr ""
 
 #: ui/properties.glade.h:8
-msgid "Hori_zontal offset:"
+msgid "General"
 msgstr ""
 
 #: ui/properties.glade.h:9
+msgid "Hori_zontal offset:"
+msgstr ""
+
+#: ui/properties.glade.h:10
 #, fuzzy
 msgid "Mail Notification Properties"
 msgstr "Иконка входящих сообщений"
 
-#: ui/properties.glade.h:10
+#: ui/properties.glade.h:11
 msgid "Mail Summary Popup"
 msgstr ""
 
-#: ui/properties.glade.h:11
+#: ui/properties.glade.h:12
 msgid "Mailboxes"
 msgstr ""
 
-#: ui/properties.glade.h:12
+#: ui/properties.glade.h:13
+msgid "Only display _recent mail"
+msgstr ""
+
+#: ui/properties.glade.h:14
 msgid "P_osition:"
 msgstr ""
 
-#: ui/properties.glade.h:13
+#: ui/properties.glade.h:15
 msgid "The amount of time to wait before closing the mail summary popup"
 msgstr ""
 
-#: ui/properties.glade.h:14
+#: ui/properties.glade.h:16
 msgid "The amount of time to wait between mail checks"
 msgstr ""
 
-#: ui/properties.glade.h:15
+#: ui/properties.glade.h:17
+#, fuzzy
+msgid "The command to run to launch the mail reader"
+msgstr ""
+"Иконка в области уведомления панели, уведомляющая о приходе новой почты."
+
+#: ui/properties.glade.h:18
 #, fuzzy
 msgid "The command to run when all mail is read"
 msgstr ""
 "Иконка в области уведомления панели, уведомляющая о приходе новой почты."
 
-#: ui/properties.glade.h:16
+#: ui/properties.glade.h:19
 msgid "The command to run when new mail arrives"
 msgstr ""
 
-#: ui/properties.glade.h:17
+#: ui/properties.glade.h:20
 msgid ""
 "The number of pixels to leave between the left or right side of the screen "
 "and the mail summary popup"
 msgstr ""
 
-#: ui/properties.glade.h:18
+#: ui/properties.glade.h:21
 msgid ""
 "The number of pixels to leave between the top or bottom side of the screen "
 "and the mail summary popup"
 msgstr ""
 
-#: ui/properties.glade.h:19
+#: ui/properties.glade.h:22
 msgid "When _all mail is read:"
 msgstr ""
 
-#: ui/properties.glade.h:20
+#: ui/properties.glade.h:23
 msgid "When _new mail arrives:"
 msgstr ""
 
-#: ui/properties.glade.h:21
+#: ui/properties.glade.h:24
 msgid "Whether the status icon should blink on errors or not"
 msgstr ""
 
-#: ui/properties.glade.h:22
+#: ui/properties.glade.h:25
 msgid "Whether to automatically close the mail summary popup or not"
 msgstr ""
 
-#: ui/properties.glade.h:23
+#: ui/properties.glade.h:26
 #, fuzzy
 msgid "Whether to display the mail summary popup when new mail arrives or not"
 msgstr ""
 "Иконка в области уведомления панели, уведомляющая о приходе новой почты."
 
-#: ui/properties.glade.h:24
+#: ui/properties.glade.h:27
+msgid "Whether to hide previously displayed mail or not"
+msgstr ""
+
+#: ui/properties.glade.h:28
 #, fuzzy
 msgid "Whether to run a command when all mail is read or not"
 msgstr ""
 "Иконка в области уведомления панели, уведомляющая о приходе новой почты."
 
-#: ui/properties.glade.h:25
+#: ui/properties.glade.h:29
 msgid "Whether to run a command when new mail arrives or not"
 msgstr ""
 
-#: ui/properties.glade.h:26
+#: ui/properties.glade.h:30
+#, fuzzy
+msgid "Whether to set a mail reader or not"
+msgstr ""
+"Иконка в области уведомления панели, уведомляющая о приходе новой почты."
+
+#: ui/properties.glade.h:31
 msgid ""
 "Whether to start Mail Notification when you log into your GNOME session or "
 "not"
 msgstr ""
 
-#: ui/properties.glade.h:27
+#: ui/properties.glade.h:32
 msgid "_Automatically close after:"
 msgstr ""
 
-#: ui/properties.glade.h:28
+#: ui/properties.glade.h:33
 msgid "_Blink on errors"
 msgstr ""
 
-#: ui/properties.glade.h:29
+#: ui/properties.glade.h:34
 msgid "_Delay between mail checks:"
 msgstr ""
 
-#: ui/properties.glade.h:30
+#: ui/properties.glade.h:35
+msgid "_Display the mail summary dialog"
+msgstr ""
+
+#: ui/properties.glade.h:36
 msgid "_Enable mail summary popup"
 msgstr ""
 
-#: ui/properties.glade.h:31
+#: ui/properties.glade.h:37
+msgid "_Launch the mail reader"
+msgstr ""
+
+#: ui/properties.glade.h:38
+msgid "_Mail reader:"
+msgstr ""
+
+#: ui/properties.glade.h:39
 #, fuzzy
 msgid "_Start Mail Notification on GNOME login"
 msgstr "Иконка входящих сообщений"
 
-#: ui/properties.glade.h:32
+#: ui/properties.glade.h:40
 msgid "_Vertical offset:"
 msgstr ""
 
-#: ui/properties.glade.h:33
+#: ui/properties.glade.h:41
 msgid "minutes"
 msgstr ""
 
-#: ui/properties.glade.h:34
+#: ui/properties.glade.h:42
 msgid "pixels"
 msgstr ""
 
-#: ui/properties.glade.h:35
+#: ui/properties.glade.h:43
 msgid "seconds"
 msgstr ""
 
-#: ui/summary-dialog.glade.h:1
-msgid "Mail Summary"
-msgstr ""
-
 #: ui/summary-popup.glade.h:1
 msgid "<span size=\"larger\" weight=\"bold\">Mail Summary</span>"
 msgstr ""
diff --git a/po/sr.gmo b/po/sr.gmo
Binary files differ.
diff --git a/po/sr.po b/po/sr.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: mail-notification 0.7.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2004-10-25 15:26+0200\n"
+"POT-Creation-Date: 2004-10-31 18:42+0100\n"
 "PO-Revision-Date: 2004-10-18 20:04+0100\n"
 "Last-Translator: Филип Милетић <filmil@gmail.com>\n"
 "Language-Team: Serbian (sr) <gnu@prevod.org>\n"
@@ -35,7 +35,7 @@ msgstr "Подеси дојаву приспећа поште"
 #: data/mail-notification-properties.desktop.in.h:2
 #: data/mail-notification.desktop.in.h:2
 #: data/mail-notification.soundlist.in.h:1 src/mn-about-dialog.gob:40
-#: src/mn-mail-icon.gob:163 src/mn-main.c:271
+#: src/mn-mail-icon.gob:194 src/mn-main.c:271
 msgid "Mail Notification"
 msgstr "Дојава поште"
 
@@ -64,119 +64,150 @@ msgid "Do not show the immediate notification error dialog"
 msgstr "Не показуј прозор са обавештењем о грешкама"
 
 #: data/mail-notification.schemas.in.h:6
+#, fuzzy
+msgid "Double-click action"
+msgstr "Изврши на двоструки клик"
+
+#: data/mail-notification.schemas.in.h:7
 msgid "Enable mail summary popup"
 msgstr "Дозволи приказ сажетка порука"
 
-#: data/mail-notification.schemas.in.h:7
+#: data/mail-notification.schemas.in.h:8
 msgid "Fingerprints of trusted X509 certificates"
 msgstr "Отисци проверених X509 сертификата"
 
-#: data/mail-notification.schemas.in.h:8
+#: data/mail-notification.schemas.in.h:9
 msgid "Has already been run"
 msgstr "Већ је покренут"
 
-#: data/mail-notification.schemas.in.h:9
+#: data/mail-notification.schemas.in.h:10
 msgid "Height of mail summary dialog"
 msgstr "Висина прозора са сажетком порука"
 
-#: data/mail-notification.schemas.in.h:10
+#: data/mail-notification.schemas.in.h:11
 msgid "Height of properties dialog"
 msgstr "Висина прозора са поставкама"
 
-#: data/mail-notification.schemas.in.h:11
+#: data/mail-notification.schemas.in.h:12
 msgid "Mail read command"
 msgstr "Команда за читање поште"
 
-#: data/mail-notification.schemas.in.h:12
+#: data/mail-notification.schemas.in.h:13
+#, fuzzy
+msgid "Mail reader command"
+msgstr "Команда за читање поште"
+
+#: data/mail-notification.schemas.in.h:14
 msgid "Mail summary popup horizontal offset"
 msgstr "Померај хоризонталних тачака за прозор са сажетком порука"
 
-#: data/mail-notification.schemas.in.h:13
+#: data/mail-notification.schemas.in.h:15
 msgid "Mail summary popup position"
 msgstr "Број хоризонталних тачака за прозор са сажетком порука"
 
-#: data/mail-notification.schemas.in.h:14
+#: data/mail-notification.schemas.in.h:16
 msgid "Mail summary popup vertical offset"
 msgstr "Померај вертикалних тачака ѕа прозор са сажетком порука"
 
-#: data/mail-notification.schemas.in.h:15
+#: data/mail-notification.schemas.in.h:17
 msgid "Mailbox list"
 msgstr "Списак сандучића"
 
-#: data/mail-notification.schemas.in.h:16
+#: data/mail-notification.schemas.in.h:18
 msgid "Minutes between mail checks"
 msgstr "Минута између две провере"
 
-#: data/mail-notification.schemas.in.h:17
+#: data/mail-notification.schemas.in.h:19
 msgid "Minutes to wait before closing the mail summary popup"
 msgstr ""
 "Број минута који треба да протекне пре затварања прозора са сажетком порука"
 
-#: data/mail-notification.schemas.in.h:18
+#: data/mail-notification.schemas.in.h:20
 msgid "New mail command"
 msgstr "Изврши када пошта стигне"
 
-#: data/mail-notification.schemas.in.h:19
+#: data/mail-notification.schemas.in.h:21
+#, fuzzy
+msgid "Only display recent mail in mail summary popup"
+msgstr "Затвори прозор са сажетком порука"
+
+#: data/mail-notification.schemas.in.h:22
 msgid "Run a command when all mail is read"
 msgstr "Покрени команду када је сва пошта прочитана"
 
-#: data/mail-notification.schemas.in.h:20
+#: data/mail-notification.schemas.in.h:23
 msgid "Run a command when new mail arrives"
 msgstr "Покрени команду када стигне нова пошта"
 
-#: data/mail-notification.schemas.in.h:21
+#: data/mail-notification.schemas.in.h:24
 msgid "Seconds between mail checks"
 msgstr "Секунди између две провере"
 
-#: data/mail-notification.schemas.in.h:22
+#: data/mail-notification.schemas.in.h:25
 msgid "Seconds to wait before closing the mail summary popup"
 msgstr "Број секунди који треба да протекне пре затварања сажетка порука"
 
-#: data/mail-notification.schemas.in.h:23
+#: data/mail-notification.schemas.in.h:26
+#, fuzzy
+msgid "Set a mail reader"
+msgstr "Изаберите датотеку или директоријум"
+
+#: data/mail-notification.schemas.in.h:27
+msgid ""
+"The action to perform when the icon is double-clicked. Must be \"display-"
+"mail-summary\" or \"launch-mail-reader\"."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:28
 msgid ""
 "The amount of time to wait before closing the mail summary popup (minutes "
 "part)."
 msgstr "Пауза пре затварања прозора са сажетком порука (минути)."
 
-#: data/mail-notification.schemas.in.h:24
+#: data/mail-notification.schemas.in.h:29
 msgid ""
 "The amount of time to wait before closing the mail summary popup (seconds "
 "part)."
 msgstr "Пауза пре затварања прозора са сажетком порука (секунде)."
 
-#: data/mail-notification.schemas.in.h:25
+#: data/mail-notification.schemas.in.h:30
+#, fuzzy
+msgid "The command to run to launch the mail reader."
+msgstr "Команда коју треба покренути када је сва пошта прочитана."
+
+#: data/mail-notification.schemas.in.h:31
 msgid "The command to run when all mail is read."
 msgstr "Команда коју треба покренути када је сва пошта прочитана."
 
-#: data/mail-notification.schemas.in.h:26
+#: data/mail-notification.schemas.in.h:32
 msgid "The command to run when new mail arrives."
 msgstr "Покрени ову команду када стигне нова пошта."
 
-#: data/mail-notification.schemas.in.h:27
+#: data/mail-notification.schemas.in.h:33
 msgid "The height of the mail summary dialog in pixels."
 msgstr "Висина прозора са сажетком порука изражена у тачкама."
 
-#: data/mail-notification.schemas.in.h:28
+#: data/mail-notification.schemas.in.h:34
 msgid "The height of the properties dialog in pixels."
 msgstr "Висина прозора са поставкама изражена у тачкама."
 
-#: data/mail-notification.schemas.in.h:29
+#: data/mail-notification.schemas.in.h:35
 msgid "The list of mailboxes to monitor."
 msgstr "Списак сандучића који се прате."
 
-#: data/mail-notification.schemas.in.h:30
+#: data/mail-notification.schemas.in.h:36
 msgid ""
 "The list of trusted SSL/TLS servers (hostname:port) lacking a X509 "
 "certificate."
 msgstr ""
 "Списак проверених SSL/TLS сервера (рачунар:порт) који немају X509 сертификат."
 
-#: data/mail-notification.schemas.in.h:31
+#: data/mail-notification.schemas.in.h:37
 msgid ""
 "The list of trusted X509 certificates, represented by their MD5 fingerprint."
 msgstr "Списак проверених X509 сертификата, представљених MD5 отиском."
 
-#: data/mail-notification.schemas.in.h:32
+#: data/mail-notification.schemas.in.h:38
 msgid ""
 "The number of pixels to leave between the left or right side of the screen "
 "and the mail summary popup."
@@ -184,7 +215,7 @@ msgstr ""
 "Број тачака које треба оставити између леве, одн. десне стране екрана и "
 "прозора са сажетком порука."
 
-#: data/mail-notification.schemas.in.h:33
+#: data/mail-notification.schemas.in.h:39
 msgid ""
 "The number of pixels to leave between the top or bottom side of the screen "
 "and the mail summary popup."
@@ -192,7 +223,7 @@ msgstr ""
 "Број тачака које треба оставити између врха, одн. дна екрана и прозора са "
 "сажетком порука."
 
-#: data/mail-notification.schemas.in.h:34
+#: data/mail-notification.schemas.in.h:40
 msgid ""
 "The position of the mail summary popup. Must be \"top-left\", \"top-right\", "
 "\"bottom-left\" or \"bottom-right\"."
@@ -200,55 +231,68 @@ msgstr ""
 "Положај прозора са сажетком порука. Може бити: „горе-лево‟, „горе-десно‟, "
 "„доле-лево‟ или „доле-десно‟."
 
-#: data/mail-notification.schemas.in.h:35
+#: data/mail-notification.schemas.in.h:41
 msgid "The width of the mail summary dialog in pixels."
 msgstr "Ширина прозора са сажетком порука изражена у тачкама."
 
-#: data/mail-notification.schemas.in.h:36
+#: data/mail-notification.schemas.in.h:42
 msgid "The width of the properties dialog in pixels."
 msgstr "Ширина прозора са поставкама изражена у тачкама."
 
-#: data/mail-notification.schemas.in.h:37
+#: data/mail-notification.schemas.in.h:43
 msgid "Trusted servers list"
 msgstr "Списак проверених сервера"
 
-#: data/mail-notification.schemas.in.h:38
+#: data/mail-notification.schemas.in.h:44
 msgid "Whether Mail Notification has already been run or not."
 msgstr "Да ли је програм покретан пре или није."
 
-#: data/mail-notification.schemas.in.h:39
+#: data/mail-notification.schemas.in.h:45
 msgid "Whether the status icon should blink on errors or not."
 msgstr "Да ли сличица треба да трепери ако дође до грешке или не."
 
-#: data/mail-notification.schemas.in.h:40
+#: data/mail-notification.schemas.in.h:46
 msgid "Whether to automatically close the mail summary popup or not."
 msgstr ""
 "Да ли треба или не треба аутоматски затворити прозор са сажетком поште."
 
-#: data/mail-notification.schemas.in.h:41
+#: data/mail-notification.schemas.in.h:47
 msgid "Whether to display the mail summary popup when new mail arrives or not."
 msgstr "Да ли треба приказати сажетак порука када стигне нова пошта."
 
-#: data/mail-notification.schemas.in.h:42
+#: data/mail-notification.schemas.in.h:48
+#, fuzzy
+msgid ""
+"Whether to hide previously displayed mail in the mail summary popup or not."
+msgstr ""
+"Да ли треба или не треба аутоматски затворити прозор са сажетком поште."
+
+#: data/mail-notification.schemas.in.h:49
 msgid ""
 "Whether to prevent the immediate notification error dialog from being "
 "displayed or not."
 msgstr "Да ли треба или не треба спречити појаву прозора са описом грешака."
 
-#: data/mail-notification.schemas.in.h:43
+#: data/mail-notification.schemas.in.h:50
 msgid "Whether to run a command when all mail is read or not."
 msgstr ""
 "Да ли треба или не треба покренути неку команду када је сва пошта прочитана."
 
-#: data/mail-notification.schemas.in.h:44
+#: data/mail-notification.schemas.in.h:51
 msgid "Whether to run a command when new mail arrives or not."
 msgstr "Да ли треба покренути неку команду када стигне нова пошта."
 
-#: data/mail-notification.schemas.in.h:45
+#: data/mail-notification.schemas.in.h:52
+#, fuzzy
+msgid "Whether to set a mail reader or not."
+msgstr ""
+"Да ли треба или не треба покренути неку команду када је сва пошта прочитана."
+
+#: data/mail-notification.schemas.in.h:53
 msgid "Width of mail summary dialog"
 msgstr "Ширина прозора са сажетком порука"
 
-#: data/mail-notification.schemas.in.h:46
+#: data/mail-notification.schemas.in.h:54
 msgid "Width of properties dialog"
 msgstr "Ширина прозора са поставкама"
 
@@ -446,129 +490,129 @@ msgstr "одговор \"%s\" није исправан у тренутно ва
 msgid "unable to parse response \"%s\""
 msgstr "није могуће обрадити одговор \"%s\""
 
-#: src/mn-client-session.c:592 src/mn-client-session.c:599
+#: src/mn-client-session.c:601 src/mn-client-session.c:608
 #, c-format
 msgid "unable to read from server: %s"
 msgstr "Није могуће читање са сервера: %s"
 
-#: src/mn-client-session.c:597
+#: src/mn-client-session.c:606
 msgid "unable to read from server: EOF"
 msgstr "Није могуће читање са сервера: EOF"
 
-#: src/mn-client-session.c:609
+#: src/mn-client-session.c:618
 #, c-format
 msgid "unable to decode data using SASL: %s"
 msgstr "Не могу се декодовати подаци путем SASL: %s"
 
-#: src/mn-client-session.c:746
+#: src/mn-client-session.c:755
 #, c-format
 msgid "unable to encode data using SASL: %s"
 msgstr "није могуће кодирати податке уз помоћ SASL: %s"
 
-#: src/mn-client-session.c:777 src/mn-client-session.c:784
+#: src/mn-client-session.c:786 src/mn-client-session.c:793
 #, c-format
 msgid "unable to write to server: %s"
 msgstr "није могућ упис на сервер: %s"
 
-#: src/mn-client-session.c:782
+#: src/mn-client-session.c:791
 msgid "unable to write to server: EOF"
 msgstr "није могућ упис на сервер: EOF"
 
-#: src/mn-client-session.c:814
+#: src/mn-client-session.c:823
 #, c-format
 msgid "unable to encode Base64: %s"
 msgstr "није могуће кодирати Base64: %s"
 
-#: src/mn-client-session.c:917
+#: src/mn-client-session.c:927
 #, c-format
 msgid "unable to initialize the SASL library: %s"
 msgstr "не може се покренути SASL библиотека: %s"
 
-#: src/mn-client-session.c:926
+#: src/mn-client-session.c:936
 #, c-format
 msgid "unable to retrieve local address of socket: %s"
 msgstr "не може да се добави локална адреса утичнице: %s"
 
-#: src/mn-client-session.c:932
+#: src/mn-client-session.c:942
 #, c-format
 msgid "unable to retrieve remote address of socket: %s"
 msgstr "не може да се добави удаљена адреса утичнице: %s"
 
-#: src/mn-client-session.c:966
+#: src/mn-client-session.c:976
 #, c-format
 msgid "warning: unable to set SASL security properties: %s"
 msgstr "упозорење: није могуће поставити SASL сигурносне поставке %s"
 
-#: src/mn-client-session.c:1005
+#: src/mn-client-session.c:1015
 msgid ""
 "unable to start SASL authentication: SASL asked for something we did not know"
 msgstr "не може се покренути SASL пријава: SASL тражи податке које немамо"
 
-#: src/mn-client-session.c:1009
+#: src/mn-client-session.c:1019
 #, c-format
 msgid "unable to start SASL authentication: %s"
 msgstr "не може се покренути SASL пријава: %s"
 
-#: src/mn-client-session.c:1013
+#: src/mn-client-session.c:1023
 #, c-format
 msgid "unable to create a SASL connection: %s"
 msgstr "није могуће успоставити SASL везу: %s"
 
-#: src/mn-client-session.c:1063
+#: src/mn-client-session.c:1073
 msgid "SASL asked for something we did not know, aborting SASL authentication"
 msgstr "SASL је тражио нама непознате податке, обустављам SASL пријаву"
 
-#: src/mn-client-session.c:1067
+#: src/mn-client-session.c:1077
 #, c-format
 msgid "%s, aborting SASL authentication"
 msgstr "%s, обустављам SASL пријаву"
 
 #. compliance error
-#: src/mn-client-session.c:1072
+#: src/mn-client-session.c:1082
 #, c-format
 msgid "unable to decode Base64 input from server: %s"
 msgstr "није могуће декодовати Base64 улаз са сервера: %s"
 
-#: src/mn-client-session.c:1075
+#: src/mn-client-session.c:1085
 msgid ""
 "the server sent a SASL challenge, but there was a pending initial SASL "
 "client response"
 msgstr ""
 "сервер је започео SASL разговор, али одговор од клијента стигао пре тога"
 
-#: src/mn-client-session.c:1089
+#: src/mn-client-session.c:1099
 msgid ""
 "the server did not send a SASL challenge, but there was no pending initial "
 "SASL client response"
 msgstr ""
 "сервер није послао SASL разговор, али није било ни одговора од клијента."
 
-#: src/mn-client-session.c:1112
+#: src/mn-client-session.c:1122
 #, c-format
 msgid "a SASL security layer of strength factor %i is now active"
 msgstr "SASL сигурносни слој нивоа снаге %i је успостављен"
 
 #. a security layer is active but we can't retrieve maxoutbuf -> fatal
-#: src/mn-client-session.c:1117
+#: src/mn-client-session.c:1127
 #, c-format
 msgid "unable to get SASL_MAXOUTBUF property: %s"
 msgstr "не могу да прочитам поставку SASL_MAXOUTBUF: %s"
 
-#: src/mn-client-session.c:1123
+#: src/mn-client-session.c:1133
 #, c-format
 msgid "warning: unable to get SASL_SSF property: %s"
 msgstr "упозорење: не могу да прочитам поставку SASL_SSF: %s"
 
-#: src/mn-conf.c:123
+#: src/mn-conf.c:136
 #, c-format
 msgid "recursively unsetting %s"
 msgstr "рекурзивно поништавам %s"
 
-#: src/mn-conf.c:127
+#: src/mn-conf.c:140
 msgid "syncing the GConf database"
 msgstr "усклађујем GConf базу података"
 
-#: src/mn-conf.c:130
+#: src/mn-conf.c:143
 msgid "completed"
 msgstr "урађено"
 
@@ -584,33 +628,33 @@ msgstr ""
 "Ваша лозинка на сервису Gmail (ако не упишете лозинку, програм ће Вас "
 "замолити да је унесете када то буде потребно)"
 
-#: src/mn-gmail-mailbox.gob:63
+#: src/mn-gmail-mailbox.gob:81
 msgid "libsoup has not been compiled with SSL/TLS support"
 msgstr "libsoup није изграђен са подршком за SSL/TLS"
 
-#: src/mn-gmail-mailbox.gob:105
+#: src/mn-gmail-mailbox.gob:123
 #, c-format
 msgid "unable to parse URI \"%s\""
 msgstr "није могуће обрадити URI \"%s\""
 
-#: src/mn-gmail-mailbox.gob:159
+#: src/mn-gmail-mailbox.gob:177
 #, c-format
 msgid "unable to transfer data: %s"
 msgstr "не могу да преузмем податке: %s"
 
-#: src/mn-gmail-mailbox.gob:280
+#: src/mn-gmail-mailbox.gob:298
 msgid "logging in"
 msgstr "пријава у току"
 
-#: src/mn-gmail-mailbox.gob:358
+#: src/mn-gmail-mailbox.gob:376
 msgid "login failed"
 msgstr "пријава није успела"
 
-#: src/mn-gmail-mailbox.gob:433
+#: src/mn-gmail-mailbox.gob:451
 msgid "searching for unread mail"
 msgstr "тражим нову пошту"
 
-#: src/mn-gmail-mailbox.gob:529
+#: src/mn-gmail-mailbox.gob:490
 msgid "unable to parse Gmail data"
 msgstr "не могу да обрадим податке са сервиса Gmail"
 
@@ -676,50 +720,50 @@ msgstr "Број порта на IMAP серверу"
 msgid "The mailbox name"
 msgstr "Име сандучета"
 
-#: src/mn-imap-mailbox.gob:133 src/mn-pop3-mailbox.gob:142
+#: src/mn-imap-mailbox.gob:164 src/mn-pop3-mailbox.gob:142
 msgid "SSL/TLS support has not been compiled in"
 msgstr "Подршка за SSL/TLS није уграђена"
 
-#: src/mn-imap-mailbox.gob:204
+#: src/mn-imap-mailbox.gob:253
 msgid "server did not send capabilities"
 msgstr "сервер није обавестио о својим могућностима"
 
-#: src/mn-imap-mailbox.gob:319
+#: src/mn-imap-mailbox.gob:374
 msgid "server advertised LOGINDISABLED, not using LOGIN authentication"
 msgstr "сервер је дојавио LOGINDISABLED, LOGIN пријавa неће бити коришћена"
 
-#: src/mn-imap-mailbox.gob:320
+#: src/mn-imap-mailbox.gob:375
 msgid "unable to login"
 msgstr "пријава није могућа"
 
 #. compliance error
-#: src/mn-imap-mailbox.gob:451
+#: src/mn-imap-mailbox.gob:516
 msgid "server did not send search results"
 msgstr "сервер није послао резултате претраге"
 
 #. compliance error
-#: src/mn-imap-mailbox.gob:527
+#: src/mn-imap-mailbox.gob:596
 msgid "server did not send all the messages we requested"
 msgstr "сервер није послао све тражене поруке"
 
-#: src/mn-imap-mailbox.gob:574
+#: src/mn-imap-mailbox.gob:645
 msgid "unable to fetch message"
 msgstr "није могуће добавити поруку"
 
 #. compliance error
-#: src/mn-imap-mailbox.gob:621
+#: src/mn-imap-mailbox.gob:763
 msgid "server did not send status"
 msgstr "сервер није послао статус"
 
-#: src/mn-imap-mailbox.gob:856 src/mn-pop3-mailbox.gob:913
+#: src/mn-imap-mailbox.gob:1035 src/mn-pop3-mailbox.gob:922
 msgid "unknown server error"
 msgstr "непозната грешка на серверу"
 
-#: src/mn-imap-mailbox.gob:927 src/mn-pop3-mailbox.gob:226
+#: src/mn-imap-mailbox.gob:1106 src/mn-pop3-mailbox.gob:226
 msgid "server does not support in-band SSL/TLS"
 msgstr "сервер не подржава заштиту путем SSL/TLS"
 
-#: src/mn-imap-mailbox.gob:946 src/mn-pop3-mailbox.gob:832
+#: src/mn-imap-mailbox.gob:1125 src/mn-pop3-mailbox.gob:841
 msgid ""
 "a SASL authentication mechanism was selected but SASL support has not been "
 "compiled in"
@@ -727,24 +771,28 @@ msgstr ""
 "изабран је механизам за пријаву који користи SASL али подршка за SASL није "
 "уграђена у програм"
 
-#: src/mn-imap-mailbox.gob:954 src/mn-pop3-mailbox.gob:844
+#: src/mn-imap-mailbox.gob:1133 src/mn-pop3-mailbox.gob:853
 #, c-format
 msgid "unknown authentication mechanism \"%s\""
 msgstr "непознат механизам за пријаву \"%s\""
 
-#: src/mn-imap-mailbox.gob:972
+#: src/mn-imap-mailbox.gob:1151
 msgid "falling back to IMAP LOGIN authentication"
 msgstr "повратак на  IMAP LOGIN пријаву"
 
-#: src/mn-imap-mailbox.gob:977 src/mn-pop3-mailbox.gob:879
+#: src/mn-imap-mailbox.gob:1156 src/mn-pop3-mailbox.gob:888
 msgid "authentication failed"
 msgstr "пријава није успела"
 
-#: src/mn-mail-icon.gob:84 ui/summary-dialog.glade.h:2
+#: src/mn-mail-icon.gob:92 ui/summary-dialog.glade.h:2
+msgid "_Launch Mail Reader"
+msgstr ""
+
+#: src/mn-mail-icon.gob:93 ui/summary-dialog.glade.h:3
 msgid "_Update"
 msgstr "_Освежи"
 
-#: src/mn-mail-icon.gob:90
+#: src/mn-mail-icon.gob:99
 msgid "R_emove From Notification Area"
 msgstr "_Уклони са обавештајне зоне"
 
@@ -801,7 +849,7 @@ msgstr "Готово"
 msgid "Whether the properties are completely filled or not"
 msgstr "Да ли су поставке сасвим попуњене или не"
 
-#: src/mn-mailbox-view.gob:263 src/mn-message-label.gob:74
+#: src/mn-mailbox-view.gob:263 src/mn-message-box.gob:58
 msgid "Mailbox"
 msgstr "Сандуче"
 
@@ -827,35 +875,36 @@ msgid "The mailbox human-readable name"
 msgstr "Име сандучета"
 
 #: src/mn-mailbox.gob:145
-msgid "Whether the mailbox has to be manually checked or not"
+#, fuzzy
+msgid "Whether the mailbox has to be polled or not"
 msgstr "Да ли се ово сандуче ручно проверава или не"
 
-#: src/mn-mailbox.gob:150
+#: src/mn-mailbox.gob:151
 msgid "Whether the mailbox has new mail or not"
 msgstr "Да ли у сандучету стоји нова пошта или не"
 
-#: src/mn-mailbox.gob:155
+#: src/mn-mailbox.gob:156
 msgid "The list of new and unread MNMessage objects"
 msgstr "Списак нових и непрочитаних MNMessage објеката"
 
-#: src/mn-mailbox.gob:209
+#: src/mn-mailbox.gob:210
 msgid "The mailbox error, if any"
 msgstr "Грешка у приступу сандучету, ако постоји"
 
-#: src/mn-mailbox.gob:308
+#: src/mn-mailbox.gob:309
 msgid "does not exist"
 msgstr "не постоји"
 
-#: src/mn-mailbox.gob:340
+#: src/mn-mailbox.gob:341
 msgid "unknown format"
 msgstr "непознат формат"
 
-#: src/mn-mailbox.gob:406
+#: src/mn-mailbox.gob:407
 #, c-format
 msgid "unable to enable immediate notification for %s: %s"
 msgstr "Није могуће наместити непосредну дојаву нове поште за %s: %s"
 
-#: src/mn-mailbox.gob:424
+#: src/mn-mailbox.gob:425
 #, c-format
 msgid ""
 "As a fallback, they will be checked every %i second (this delay is "
@@ -873,7 +922,7 @@ msgstr[2] ""
 "Пошто нема друге могућности, биће проверавани сваких %i секунди (ово кашњење "
 "се може променити из прозора са поставкама)"
 
-#: src/mn-mailbox.gob:435
+#: src/mn-mailbox.gob:436
 #, c-format
 msgid ""
 "As a fallback, they will be checked every %i minute (this delay is "
@@ -891,7 +940,7 @@ msgstr[2] ""
 "Пошто нема друге могућности, биће проверавани сваких %i минута (ово кашњење "
 "се може променити из прозора са поставкама)"
 
-#: src/mn-mailbox.gob:446
+#: src/mn-mailbox.gob:447
 #, c-format
 msgid ""
 "As a fallback, they will be checked approximately every %i minute (this "
@@ -909,11 +958,11 @@ msgstr[2] ""
 "Пошто нема друге могућности, биће проверавани на око %i минута (ово кашњење "
 "се може променити из прозора са поставкама)"
 
-#: src/mn-mailbox.gob:462
+#: src/mn-mailbox.gob:463
 msgid "A monitoring error has occurred"
 msgstr "Дошло је до грешке при мотрењу"
 
-#: src/mn-mailbox.gob:463
+#: src/mn-mailbox.gob:464
 #, c-format
 msgid ""
 "Mail Notification was unable to enable immediate notification for one or "
@@ -922,27 +971,27 @@ msgstr ""
 "Није могуће наместити непосредну дојаву нове поште за један или више "
 "сандучића. %s"
 
-#: src/mn-mailboxes.gob:143
+#: src/mn-mailboxes.gob:142
 msgid "Whether one or more of the mailboxes has to be polled"
 msgstr ""
 "Показује да ли постоји бар једно сандуче које мора да се учестало проверава"
 
-#: src/mn-mailboxes.gob:276
+#: src/mn-mailboxes.gob:272
 #, c-format
 msgid "%s is unsupported: %s"
 msgstr "%s није подржан: %s"
 
-#: src/mn-mailboxes.gob:307
+#: src/mn-mailboxes.gob:304
 #, c-format
 msgid "%s has new mail"
 msgstr "Сандуче %s има нову пошту"
 
-#: src/mn-mailboxes.gob:307
+#: src/mn-mailboxes.gob:304
 #, c-format
 msgid "%s has no new mail"
 msgstr "Сандуче %s нема нову пошту"
 
-#: src/mn-mailboxes.gob:333
+#: src/mn-mailboxes.gob:330
 #, c-format
 msgid "%s reported an error: %s"
 msgstr "%s је дојавио грешку: %s"
@@ -1068,23 +1117,23 @@ msgstr "грешка при читању сандучета: %s"
 msgid "unable to open mailbox: %s"
 msgstr "није могуће отворити сандуче: %s"
 
-#: src/mn-message-label.gob:77
+#: src/mn-message-box.gob:61
 msgid "Unreadable message"
 msgstr "Нечитљива порука"
 
-#: src/mn-message-label.gob:97
+#: src/mn-message-box.gob:66
 msgid "From"
 msgstr "Од"
 
-#: src/mn-message-label.gob:98
+#: src/mn-message-box.gob:67
 msgid "Subject"
 msgstr "Тема"
 
-#: src/mn-message-label.gob:102
+#: src/mn-message-box.gob:72
 msgid "Sent"
 msgstr "Послато"
 
-#: src/mn-message-label.gob:151
+#: src/mn-message-box.gob:184
 #, c-format
 msgid "%i second ago"
 msgid_plural "%i seconds ago"
@@ -1092,7 +1141,7 @@ msgstr[0] "пре %i секунду"
 msgstr[1] "пре %i секунде"
 msgstr[2] "пре %i секунди"
 
-#: src/mn-message-label.gob:155
+#: src/mn-message-box.gob:188
 #, c-format
 msgid "%i minute ago"
 msgid_plural "%i minutes ago"
@@ -1100,7 +1149,7 @@ msgstr[0] "пре %i минут"
 msgstr[1] "пре %i минута"
 msgstr[2] "пре %i минута"
 
-#: src/mn-message-label.gob:160
+#: src/mn-message-box.gob:193
 #, c-format
 msgid "%i hour ago"
 msgid_plural "%i hours ago"
@@ -1108,7 +1157,7 @@ msgstr[0] "пре %i сат"
 msgstr[1] "пре %i сата"
 msgstr[2] "пре %i сати"
 
-#: src/mn-message-label.gob:165
+#: src/mn-message-box.gob:198
 #, c-format
 msgid "%i day ago"
 msgid_plural "%i days ago"
@@ -1116,7 +1165,7 @@ msgstr[0] "пре %i дан"
 msgstr[1] "пре %i дана"
 msgstr[2] "пре %i дана"
 
-#: src/mn-message-label.gob:170
+#: src/mn-message-box.gob:203
 #, c-format
 msgid "%i week ago"
 msgid_plural "%i weeks ago"
@@ -1166,15 +1215,15 @@ msgstr "_уграђени SSL/TLS"
 msgid "SSL/TLS on sepa_rate port"
 msgstr "SSL/TLS на посебном порту"
 
-#: src/mn-pop3-mailbox-properties.gob:85
+#: src/mn-pop3-mailbox-properties.gob:86
 msgid "The hostname or IP address of the POP3 server"
 msgstr "Име или IP број POP3 сервера"
 
-#: src/mn-pop3-mailbox-properties.gob:86
+#: src/mn-pop3-mailbox-properties.gob:87
 msgid "Your username on the POP3 server"
 msgstr "Ваше име на  POP3 серверу"
 
-#: src/mn-pop3-mailbox-properties.gob:87
+#: src/mn-pop3-mailbox-properties.gob:88
 msgid ""
 "Your password on the POP3 server (if left blank, you will be prompted for "
 "the password when needed)"
@@ -1182,7 +1231,7 @@ msgstr ""
 "Ваша лозинка на POP3 серверу (ако не упишете лозинку, програм ће Вас "
 "замолити да је унесете када то буде потребно)"
 
-#: src/mn-pop3-mailbox-properties.gob:88 src/mn-pop3-mailbox-properties.gob:89
+#: src/mn-pop3-mailbox-properties.gob:89 src/mn-pop3-mailbox-properties.gob:90
 msgid "The port number of the POP3 server"
 msgstr "Број порта на POP3 серверу"
 
@@ -1190,11 +1239,11 @@ msgstr "Број порта на POP3 серверу"
 msgid "invalid arguments for the LOGIN-DELAY capability"
 msgstr "параметри за могућност LOGIN-DELAY нису исправно постављени"
 
-#: src/mn-pop3-mailbox.gob:549
+#: src/mn-pop3-mailbox.gob:556
 msgid "unknown error"
 msgstr "непозната грешка"
 
-#: src/mn-pop3-mailbox.gob:681
+#: src/mn-pop3-mailbox.gob:690
 #, c-format
 msgid "honouring LOGIN-DELAY, sleeping for %i second"
 msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds"
@@ -1202,39 +1251,39 @@ msgstr[0] "тражен је застој при пријави, паузира
 msgstr[1] "тражен је застој при пријави, паузирам %i секундe"
 msgstr[2] "тражен је застој при пријави, паузирам %i секунди"
 
-#: src/mn-pop3-mailbox.gob:840
+#: src/mn-pop3-mailbox.gob:849
 msgid "server does not support APOP authentication"
 msgstr "сервер не подржава пријаву коришћењем механизма APOP"
 
-#: src/mn-pop3-mailbox.gob:868
+#: src/mn-pop3-mailbox.gob:877
 msgid "falling back to APOP authentication"
 msgstr "прелазим на  APOP пријаву"
 
-#: src/mn-pop3-mailbox.gob:873
+#: src/mn-pop3-mailbox.gob:882
 msgid "falling back to USER/PASS authentication"
 msgstr "прелазим на пријаву помоћу имена и лозинке"
 
-#: src/mn-properties.c:170
+#: src/mn-properties.c:181
 msgid "top left"
 msgstr "горе-лево"
 
-#: src/mn-properties.c:171
+#: src/mn-properties.c:182
 msgid "top right"
 msgstr "горе-десно"
 
-#: src/mn-properties.c:172
+#: src/mn-properties.c:183
 msgid "bottom left"
 msgstr "доле-лево"
 
-#: src/mn-properties.c:173
+#: src/mn-properties.c:184
 msgid "bottom right"
 msgstr "доле-десно"
 
-#: src/mn-properties.c:251
+#: src/mn-properties.c:270
 msgid "No mailbox selected."
 msgstr "Ниједно сандуче није изабрано."
 
-#: src/mn-properties.c:256
+#: src/mn-properties.c:275
 #, c-format
 msgid "%i mailbox selected."
 msgid_plural "%i mailboxes selected."
@@ -1242,43 +1291,26 @@ msgstr[0] "Изабрано %i сандуче"
 msgstr[1] "Изабрана %i сандучета"
 msgstr[2] "Изабрано %i сандучета"
 
-#: src/mn-shell.gob:86
+#: src/mn-shell.gob:92
 msgid "You have new mail."
 msgstr "Имате нову пошту."
 
-#: src/mn-shell.gob:263
-msgid "The following mailbox has new mail:\n"
-msgid_plural "The following mailboxes have new mail:\n"
-msgstr[0] "Сандуче са новом поштом:\n"
-msgstr[1] "Сандучићи са новом поштом:\n"
-msgstr[2] "Сандучићи са новом поштом:\n"
-
-#: src/mn-shell.gob:267
-msgid "You have no new mail."
-msgstr "Нема поште."
-
-#: src/mn-shell.gob:270
-msgid "The following mailbox reported an error:\n"
-msgid_plural "The following mailboxes reported an error:\n"
-msgstr[0] "Ово сандуче има грешку:\n"
-msgstr[1] "Ови сандучићи имају грешку:\n"
-msgstr[2] "Ови сандучићи имају грешку:\n"
-
-#: src/mn-shell.gob:275
-msgid "The following mailbox is unsupported:\n"
-msgid_plural "The following mailboxes are unsupported:\n"
-msgstr[0] "Ово сандуче није подржано:\n"
-msgstr[1] "Ови сандучићи нису подржани:\n"
-msgstr[2] "Ови сандучићи нису подржани:\n"
-
-#: src/mn-shell.gob:320
-msgid "A command error has occurred in Mail Notification"
-msgstr "Дошло је до грешке у командама"
+#: src/mn-shell.gob:347
+msgid "Mailboxes Having New Mail"
+msgstr ""
 
-#: src/mn-shell.gob:321
-#, c-format
-msgid "Unable to execute \"%s\": %s."
-msgstr "Није могуће извршити %s: %s"
+#: src/mn-shell.gob:349
+msgid "Errors"
+msgstr ""
+
+#: src/mn-shell.gob:351
+#, fuzzy
+msgid "Unsupported Mailboxes"
+msgstr "Локално сандуче"
+
+#: src/mn-shell.gob:364 ui/summary-dialog.glade.h:1
+msgid "Mail Summary"
+msgstr "Сажетак порука"
 
 #: src/mn-soup.c:140
 #, c-format
@@ -1377,11 +1409,20 @@ msgstr "Дошло је до кобне грешке у програму за д
 msgid "unable to get current time: %s"
 msgstr "није могуће добавити тренутно време: %s"
 
-#: src/mn-util.c:887
+#: src/mn-util.c:906
 #, c-format
 msgid "invalid signal specification \"%s\""
 msgstr "неважећа одредница за сигнал „%s‟"
 
+#: src/mn-util.c:945
+msgid "A command error has occurred in Mail Notification"
+msgstr "Дошло је до грешке у командама"
+
+#: src/mn-util.c:946
+#, c-format
+msgid "Unable to execute \"%s\": %s."
+msgstr "Није могуће извршити %s: %s"
+
 #: ui/authentication.glade.h:1 ui/properties.glade.h:2
 msgid "*"
 msgstr "*"
@@ -1403,58 +1444,72 @@ msgid "<span weight=\"bold\">Commands</span>"
 msgstr "<span weight=\"bold\">Наредбе</span>"
 
 #: ui/properties.glade.h:4
+#, fuzzy
+msgid "<span weight=\"bold\">Double-click Action</span>"
+msgstr "<span weight=\"bold\">Место</span>"
+
+#: ui/properties.glade.h:5
 msgid "<span weight=\"bold\">General</span>"
 msgstr "<span weight=\"bold\">Опште</span>"
 
-#: ui/properties.glade.h:5
+#: ui/properties.glade.h:6
 msgid "<span weight=\"bold\">Mailbox List</span>"
 msgstr "<span weight=\"bold\">Сандучићи</span>"
 
-#: ui/properties.glade.h:6
+#: ui/properties.glade.h:7
 msgid "<span weight=\"bold\">Position</span>"
 msgstr "<span weight=\"bold\">Место</span>"
 
-#: ui/properties.glade.h:7
+#: ui/properties.glade.h:8
 msgid "General"
 msgstr "Опште"
 
-#: ui/properties.glade.h:8
+#: ui/properties.glade.h:9
 msgid "Hori_zontal offset:"
 msgstr "Хори_зонтални помак:"
 
-#: ui/properties.glade.h:9
+#: ui/properties.glade.h:10
 msgid "Mail Notification Properties"
 msgstr "Поставке за дојаву"
 
-#: ui/properties.glade.h:10
+#: ui/properties.glade.h:11
 msgid "Mail Summary Popup"
 msgstr "Сажетак порука"
 
-#: ui/properties.glade.h:11
+#: ui/properties.glade.h:12
 msgid "Mailboxes"
 msgstr "Сандучићи"
 
-#: ui/properties.glade.h:12
+#: ui/properties.glade.h:13
+msgid "Only display _recent mail"
+msgstr ""
+
+#: ui/properties.glade.h:14
 msgid "P_osition:"
 msgstr "_Место:"
 
-#: ui/properties.glade.h:13
+#: ui/properties.glade.h:15
 msgid "The amount of time to wait before closing the mail summary popup"
 msgstr "Пауза пре затварања прозора са сажетком порука"
 
-#: ui/properties.glade.h:14
+#: ui/properties.glade.h:16
 msgid "The amount of time to wait between mail checks"
 msgstr "Пауза између две узастопне провере"
 
-#: ui/properties.glade.h:15
+#: ui/properties.glade.h:17
+#, fuzzy
+msgid "The command to run to launch the mail reader"
+msgstr "Наредба која се покреће када је сва пошта прочитана"
+
+#: ui/properties.glade.h:18
 msgid "The command to run when all mail is read"
 msgstr "Наредба која се покреће када је сва пошта прочитана"
 
-#: ui/properties.glade.h:16
+#: ui/properties.glade.h:19
 msgid "The command to run when new mail arrives"
 msgstr "Наредба која се покреће када стиже нова пошта"
 
-#: ui/properties.glade.h:17
+#: ui/properties.glade.h:20
 msgid ""
 "The number of pixels to leave between the left or right side of the screen "
 "and the mail summary popup"
@@ -1462,7 +1517,7 @@ msgstr ""
 "Број тачака које треба оставити између леве, одн. десне стране екрана и "
 "прозора са сажетком порука"
 
-#: ui/properties.glade.h:18
+#: ui/properties.glade.h:21
 msgid ""
 "The number of pixels to leave between the top or bottom side of the screen "
 "and the mail summary popup"
@@ -1470,82 +1525,102 @@ msgstr ""
 "Број тачака које треба оставити између врха, одн. дна екрана и прозора са "
 "сажетком порука"
 
-#: ui/properties.glade.h:19
+#: ui/properties.glade.h:22
 msgid "When _all mail is read:"
 msgstr "Када је с_ва пошта прочитана:"
 
-#: ui/properties.glade.h:20
+#: ui/properties.glade.h:23
 msgid "When _new mail arrives:"
 msgstr "Када _стигне нова пошта:"
 
-#: ui/properties.glade.h:21
+#: ui/properties.glade.h:24
 msgid "Whether the status icon should blink on errors or not"
 msgstr "Да ли статусна сличица трепери при грешкама или не"
 
-#: ui/properties.glade.h:22
+#: ui/properties.glade.h:25
 msgid "Whether to automatically close the mail summary popup or not"
 msgstr ""
 "Да ли треба или не треба аутоматски затворити прозор са сажетком порука"
 
-#: ui/properties.glade.h:23
+#: ui/properties.glade.h:26
 msgid "Whether to display the mail summary popup when new mail arrives or not"
 msgstr ""
 "Да ли треба или не треба приказивати сажетак порука када стигне нова пошта"
 
-#: ui/properties.glade.h:24
+#: ui/properties.glade.h:27
+#, fuzzy
+msgid "Whether to hide previously displayed mail or not"
+msgstr "Да ли у сандучету стоји нова пошта или не"
+
+#: ui/properties.glade.h:28
 msgid "Whether to run a command when all mail is read or not"
 msgstr "Да ли се покреће или не покреће команда када је сва пошта прочитана"
 
-#: ui/properties.glade.h:25
+#: ui/properties.glade.h:29
 msgid "Whether to run a command when new mail arrives or not"
 msgstr "Да ли се покреће команда када стигне пошта или не"
 
-#: ui/properties.glade.h:26
+#: ui/properties.glade.h:30
+#, fuzzy
+msgid "Whether to set a mail reader or not"
+msgstr "Да ли се покреће или не покреће команда када је сва пошта прочитана"
+
+#: ui/properties.glade.h:31
 msgid ""
 "Whether to start Mail Notification when you log into your GNOME session or "
 "not"
 msgstr "Да ли покренути дојаву поште када се пријавите на систем"
 
-#: ui/properties.glade.h:27
+#: ui/properties.glade.h:32
 msgid "_Automatically close after:"
 msgstr "_Аутоматски затвори после:"
 
-#: ui/properties.glade.h:28
+#: ui/properties.glade.h:33
 msgid "_Blink on errors"
 msgstr "_Трепери при грешкама"
 
-#: ui/properties.glade.h:29
+#: ui/properties.glade.h:34
 msgid "_Delay between mail checks:"
 msgstr "_Пауза између провера:"
 
-#: ui/properties.glade.h:30
+#: ui/properties.glade.h:35
+#, fuzzy
+msgid "_Display the mail summary dialog"
+msgstr "Прикажи прозор са сажетком порука"
+
+#: ui/properties.glade.h:36
 msgid "_Enable mail summary popup"
 msgstr "Дозволи приказ сажетка порука"
 
-#: ui/properties.glade.h:31
+#: ui/properties.glade.h:37
+msgid "_Launch the mail reader"
+msgstr ""
+
+#: ui/properties.glade.h:38
+#, fuzzy
+msgid "_Mail reader:"
+msgstr "_Сажетак порука"
+
+#: ui/properties.glade.h:39
 msgid "_Start Mail Notification on GNOME login"
 msgstr "Покрени _дојаву при пријави"
 
-#: ui/properties.glade.h:32
+#: ui/properties.glade.h:40
 msgid "_Vertical offset:"
 msgstr "_Вертикални помак:"
 
-#: ui/properties.glade.h:33
+#: ui/properties.glade.h:41
 msgid "minutes"
 msgstr "минута"
 
-#: ui/properties.glade.h:34
+#: ui/properties.glade.h:42
 msgid "pixels"
 msgstr "тачака"
 
-#: ui/properties.glade.h:35
+#: ui/properties.glade.h:43
 msgid "seconds"
 msgstr "секунди"
 
-#: ui/summary-dialog.glade.h:1
-msgid "Mail Summary"
-msgstr "Сажетак порука"
-
 #: ui/summary-popup.glade.h:1
 msgid "<span size=\"larger\" weight=\"bold\">Mail Summary</span>"
 msgstr "<span weight=\"bold\">Сажетак порука</span>"
@@ -1586,8 +1661,26 @@ msgstr "_Подеси дојаву поште"
 msgid "_Skip configuration"
 msgstr "П_рескочи подешавања"
 
-#~ msgid "Double-clicked command"
-#~ msgstr "Изврши на двоструки клик"
+#~ msgid "The following mailbox has new mail:\n"
+#~ msgid_plural "The following mailboxes have new mail:\n"
+#~ msgstr[0] "Сандуче са новом поштом:\n"
+#~ msgstr[1] "Сандучићи са новом поштом:\n"
+#~ msgstr[2] "Сандучићи са новом поштом:\n"
+
+#~ msgid "You have no new mail."
+#~ msgstr "Нема поште."
+
+#~ msgid "The following mailbox reported an error:\n"
+#~ msgid_plural "The following mailboxes reported an error:\n"
+#~ msgstr[0] "Ово сандуче има грешку:\n"
+#~ msgstr[1] "Ови сандучићи имају грешку:\n"
+#~ msgstr[2] "Ови сандучићи имају грешку:\n"
+
+#~ msgid "The following mailbox is unsupported:\n"
+#~ msgid_plural "The following mailboxes are unsupported:\n"
+#~ msgstr[0] "Ово сандуче није подржано:\n"
+#~ msgstr[1] "Ови сандучићи нису подржани:\n"
+#~ msgstr[2] "Ови сандучићи нису подржани:\n"
 
 #~ msgid "Run a command when the icon is double-clicked"
 #~ msgstr "Изврши команду при двоструком клику на икону"
diff --git a/po/sr@Latn.gmo b/po/sr@Latn.gmo
Binary files differ.
diff --git a/po/sr@Latn.po b/po/sr@Latn.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: mail-notification 0.7.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2004-10-25 15:26+0200\n"
+"POT-Creation-Date: 2004-10-31 18:42+0100\n"
 "PO-Revision-Date: 2004-10-18 20:04+0100\n"
 "Last-Translator: Filip Miletić <filmil@gmail.com>\n"
 "Language-Team: Serbian (sr) <gnu@prevod.org>\n"
@@ -35,7 +35,7 @@ msgstr "Podesi dojavu prispeća pošte"
 #: data/mail-notification-properties.desktop.in.h:2
 #: data/mail-notification.desktop.in.h:2
 #: data/mail-notification.soundlist.in.h:1 src/mn-about-dialog.gob:40
-#: src/mn-mail-icon.gob:163 src/mn-main.c:271
+#: src/mn-mail-icon.gob:194 src/mn-main.c:271
 msgid "Mail Notification"
 msgstr "Dojava pošte"
 
@@ -64,119 +64,150 @@ msgid "Do not show the immediate notification error dialog"
 msgstr "Ne pokazuj prozor sa obaveštenjem o greškama"
 
 #: data/mail-notification.schemas.in.h:6
+#, fuzzy
+msgid "Double-click action"
+msgstr "Izvrši na dvostruki klik"
+
+#: data/mail-notification.schemas.in.h:7
 msgid "Enable mail summary popup"
 msgstr "Dozvoli prikaz sažetka poruka"
 
-#: data/mail-notification.schemas.in.h:7
+#: data/mail-notification.schemas.in.h:8
 msgid "Fingerprints of trusted X509 certificates"
 msgstr "Otisci proverenih X509 sertifikata"
 
-#: data/mail-notification.schemas.in.h:8
+#: data/mail-notification.schemas.in.h:9
 msgid "Has already been run"
 msgstr "Već je pokrenut"
 
-#: data/mail-notification.schemas.in.h:9
+#: data/mail-notification.schemas.in.h:10
 msgid "Height of mail summary dialog"
 msgstr "Visina prozora sa sažetkom poruka"
 
-#: data/mail-notification.schemas.in.h:10
+#: data/mail-notification.schemas.in.h:11
 msgid "Height of properties dialog"
 msgstr "Visina prozora sa postavkama"
 
-#: data/mail-notification.schemas.in.h:11
+#: data/mail-notification.schemas.in.h:12
 msgid "Mail read command"
 msgstr "Komanda za čitanje pošte"
 
-#: data/mail-notification.schemas.in.h:12
+#: data/mail-notification.schemas.in.h:13
+#, fuzzy
+msgid "Mail reader command"
+msgstr "Komanda za čitanje pošte"
+
+#: data/mail-notification.schemas.in.h:14
 msgid "Mail summary popup horizontal offset"
 msgstr "Pomeraj horizontalnih tačaka za prozor sa sažetkom poruka"
 
-#: data/mail-notification.schemas.in.h:13
+#: data/mail-notification.schemas.in.h:15
 msgid "Mail summary popup position"
 msgstr "Broj horizontalnih tačaka za prozor sa sažetkom poruka"
 
-#: data/mail-notification.schemas.in.h:14
+#: data/mail-notification.schemas.in.h:16
 msgid "Mail summary popup vertical offset"
 msgstr "Pomeraj vertikalnih tačaka ѕa prozor sa sažetkom poruka"
 
-#: data/mail-notification.schemas.in.h:15
+#: data/mail-notification.schemas.in.h:17
 msgid "Mailbox list"
 msgstr "Spisak sandučića"
 
-#: data/mail-notification.schemas.in.h:16
+#: data/mail-notification.schemas.in.h:18
 msgid "Minutes between mail checks"
 msgstr "Minuta između dve provere"
 
-#: data/mail-notification.schemas.in.h:17
+#: data/mail-notification.schemas.in.h:19
 msgid "Minutes to wait before closing the mail summary popup"
 msgstr ""
 "Broj minuta koji treba da protekne pre zatvaranja prozora sa sažetkom poruka"
 
-#: data/mail-notification.schemas.in.h:18
+#: data/mail-notification.schemas.in.h:20
 msgid "New mail command"
 msgstr "Izvrši kada pošta stigne"
 
-#: data/mail-notification.schemas.in.h:19
+#: data/mail-notification.schemas.in.h:21
+#, fuzzy
+msgid "Only display recent mail in mail summary popup"
+msgstr "Zatvori prozor sa sažetkom poruka"
+
+#: data/mail-notification.schemas.in.h:22
 msgid "Run a command when all mail is read"
 msgstr "Pokreni komandu kada je sva pošta pročitana"
 
-#: data/mail-notification.schemas.in.h:20
+#: data/mail-notification.schemas.in.h:23
 msgid "Run a command when new mail arrives"
 msgstr "Pokreni komandu kada stigne nova pošta"
 
-#: data/mail-notification.schemas.in.h:21
+#: data/mail-notification.schemas.in.h:24
 msgid "Seconds between mail checks"
 msgstr "Sekundi između dve provere"
 
-#: data/mail-notification.schemas.in.h:22
+#: data/mail-notification.schemas.in.h:25
 msgid "Seconds to wait before closing the mail summary popup"
 msgstr "Broj sekundi koji treba da protekne pre zatvaranja sažetka poruka"
 
-#: data/mail-notification.schemas.in.h:23
+#: data/mail-notification.schemas.in.h:26
+#, fuzzy
+msgid "Set a mail reader"
+msgstr "Izaberite datoteku ili direktorijum"
+
+#: data/mail-notification.schemas.in.h:27
+msgid ""
+"The action to perform when the icon is double-clicked. Must be \"display-"
+"mail-summary\" or \"launch-mail-reader\"."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:28
 msgid ""
 "The amount of time to wait before closing the mail summary popup (minutes "
 "part)."
 msgstr "Pauza pre zatvaranja prozora sa sažetkom poruka (minuti)."
 
-#: data/mail-notification.schemas.in.h:24
+#: data/mail-notification.schemas.in.h:29
 msgid ""
 "The amount of time to wait before closing the mail summary popup (seconds "
 "part)."
 msgstr "Pauza pre zatvaranja prozora sa sažetkom poruka (sekunde)."
 
-#: data/mail-notification.schemas.in.h:25
+#: data/mail-notification.schemas.in.h:30
+#, fuzzy
+msgid "The command to run to launch the mail reader."
+msgstr "Komanda koju treba pokrenuti kada je sva pošta pročitana."
+
+#: data/mail-notification.schemas.in.h:31
 msgid "The command to run when all mail is read."
 msgstr "Komanda koju treba pokrenuti kada je sva pošta pročitana."
 
-#: data/mail-notification.schemas.in.h:26
+#: data/mail-notification.schemas.in.h:32
 msgid "The command to run when new mail arrives."
 msgstr "Pokreni ovu komandu kada stigne nova pošta."
 
-#: data/mail-notification.schemas.in.h:27
+#: data/mail-notification.schemas.in.h:33
 msgid "The height of the mail summary dialog in pixels."
 msgstr "Visina prozora sa sažetkom poruka izražena u tačkama."
 
-#: data/mail-notification.schemas.in.h:28
+#: data/mail-notification.schemas.in.h:34
 msgid "The height of the properties dialog in pixels."
 msgstr "Visina prozora sa postavkama izražena u tačkama."
 
-#: data/mail-notification.schemas.in.h:29
+#: data/mail-notification.schemas.in.h:35
 msgid "The list of mailboxes to monitor."
 msgstr "Spisak sandučića koji se prate."
 
-#: data/mail-notification.schemas.in.h:30
+#: data/mail-notification.schemas.in.h:36
 msgid ""
 "The list of trusted SSL/TLS servers (hostname:port) lacking a X509 "
 "certificate."
 msgstr ""
 "Spisak proverenih SSL/TLS servera (računar:port) koji nemaju X509 sertifikat."
 
-#: data/mail-notification.schemas.in.h:31
+#: data/mail-notification.schemas.in.h:37
 msgid ""
 "The list of trusted X509 certificates, represented by their MD5 fingerprint."
 msgstr "Spisak proverenih X509 sertifikata, predstavljenih MD5 otiskom."
 
-#: data/mail-notification.schemas.in.h:32
+#: data/mail-notification.schemas.in.h:38
 msgid ""
 "The number of pixels to leave between the left or right side of the screen "
 "and the mail summary popup."
@@ -184,7 +215,7 @@ msgstr ""
 "Broj tačaka koje treba ostaviti između leve, odn. desne strane ekrana i "
 "prozora sa sažetkom poruka."
 
-#: data/mail-notification.schemas.in.h:33
+#: data/mail-notification.schemas.in.h:39
 msgid ""
 "The number of pixels to leave between the top or bottom side of the screen "
 "and the mail summary popup."
@@ -192,7 +223,7 @@ msgstr ""
 "Broj tačaka koje treba ostaviti između vrha, odn. dna ekrana i prozora sa "
 "sažetkom poruka."
 
-#: data/mail-notification.schemas.in.h:34
+#: data/mail-notification.schemas.in.h:40
 msgid ""
 "The position of the mail summary popup. Must be \"top-left\", \"top-right\", "
 "\"bottom-left\" or \"bottom-right\"."
@@ -200,55 +231,68 @@ msgstr ""
 "Položaj prozora sa sažetkom poruka. Može biti: „gore-levo‟, „gore-desno‟, "
 "„dole-levo‟ ili „dole-desno‟."
 
-#: data/mail-notification.schemas.in.h:35
+#: data/mail-notification.schemas.in.h:41
 msgid "The width of the mail summary dialog in pixels."
 msgstr "Širina prozora sa sažetkom poruka izražena u tačkama."
 
-#: data/mail-notification.schemas.in.h:36
+#: data/mail-notification.schemas.in.h:42
 msgid "The width of the properties dialog in pixels."
 msgstr "Širina prozora sa postavkama izražena u tačkama."
 
-#: data/mail-notification.schemas.in.h:37
+#: data/mail-notification.schemas.in.h:43
 msgid "Trusted servers list"
 msgstr "Spisak proverenih servera"
 
-#: data/mail-notification.schemas.in.h:38
+#: data/mail-notification.schemas.in.h:44
 msgid "Whether Mail Notification has already been run or not."
 msgstr "Da li je program pokretan pre ili nije."
 
-#: data/mail-notification.schemas.in.h:39
+#: data/mail-notification.schemas.in.h:45
 msgid "Whether the status icon should blink on errors or not."
 msgstr "Da li sličica treba da treperi ako dođe do greške ili ne."
 
-#: data/mail-notification.schemas.in.h:40
+#: data/mail-notification.schemas.in.h:46
 msgid "Whether to automatically close the mail summary popup or not."
 msgstr ""
 "Da li treba ili ne treba automatski zatvoriti prozor sa sažetkom pošte."
 
-#: data/mail-notification.schemas.in.h:41
+#: data/mail-notification.schemas.in.h:47
 msgid "Whether to display the mail summary popup when new mail arrives or not."
 msgstr "Da li treba prikazati sažetak poruka kada stigne nova pošta."
 
-#: data/mail-notification.schemas.in.h:42
+#: data/mail-notification.schemas.in.h:48
+#, fuzzy
+msgid ""
+"Whether to hide previously displayed mail in the mail summary popup or not."
+msgstr ""
+"Da li treba ili ne treba automatski zatvoriti prozor sa sažetkom pošte."
+
+#: data/mail-notification.schemas.in.h:49
 msgid ""
 "Whether to prevent the immediate notification error dialog from being "
 "displayed or not."
 msgstr "Da li treba ili ne treba sprečiti pojavu prozora sa opisom grešaka."
 
-#: data/mail-notification.schemas.in.h:43
+#: data/mail-notification.schemas.in.h:50
 msgid "Whether to run a command when all mail is read or not."
 msgstr ""
 "Da li treba ili ne treba pokrenuti neku komandu kada je sva pošta pročitana."
 
-#: data/mail-notification.schemas.in.h:44
+#: data/mail-notification.schemas.in.h:51
 msgid "Whether to run a command when new mail arrives or not."
 msgstr "Da li treba pokrenuti neku komandu kada stigne nova pošta."
 
-#: data/mail-notification.schemas.in.h:45
+#: data/mail-notification.schemas.in.h:52
+#, fuzzy
+msgid "Whether to set a mail reader or not."
+msgstr ""
+"Da li treba ili ne treba pokrenuti neku komandu kada je sva pošta pročitana."
+
+#: data/mail-notification.schemas.in.h:53
 msgid "Width of mail summary dialog"
 msgstr "Širina prozora sa sažetkom poruka"
 
-#: data/mail-notification.schemas.in.h:46
+#: data/mail-notification.schemas.in.h:54
 msgid "Width of properties dialog"
 msgstr "Širina prozora sa postavkama"
 
@@ -446,129 +490,129 @@ msgstr "odgovor \"%s\" nije ispravan u trenutno važećem kontekstu"
 msgid "unable to parse response \"%s\""
 msgstr "nije moguće obraditi odgovor \"%s\""
 
-#: src/mn-client-session.c:592 src/mn-client-session.c:599
+#: src/mn-client-session.c:601 src/mn-client-session.c:608
 #, c-format
 msgid "unable to read from server: %s"
 msgstr "Nije moguće čitanje sa servera: %s"
 
-#: src/mn-client-session.c:597
+#: src/mn-client-session.c:606
 msgid "unable to read from server: EOF"
 msgstr "Nije moguće čitanje sa servera: EOF"
 
-#: src/mn-client-session.c:609
+#: src/mn-client-session.c:618
 #, c-format
 msgid "unable to decode data using SASL: %s"
 msgstr "Ne mogu se dekodovati podaci putem SASL: %s"
 
-#: src/mn-client-session.c:746
+#: src/mn-client-session.c:755
 #, c-format
 msgid "unable to encode data using SASL: %s"
 msgstr "nije moguće kodirati podatke uz pomoć SASL: %s"
 
-#: src/mn-client-session.c:777 src/mn-client-session.c:784
+#: src/mn-client-session.c:786 src/mn-client-session.c:793
 #, c-format
 msgid "unable to write to server: %s"
 msgstr "nije moguć upis na server: %s"
 
-#: src/mn-client-session.c:782
+#: src/mn-client-session.c:791
 msgid "unable to write to server: EOF"
 msgstr "nije moguć upis na server: EOF"
 
-#: src/mn-client-session.c:814
+#: src/mn-client-session.c:823
 #, c-format
 msgid "unable to encode Base64: %s"
 msgstr "nije moguće kodirati Base64: %s"
 
-#: src/mn-client-session.c:917
+#: src/mn-client-session.c:927
 #, c-format
 msgid "unable to initialize the SASL library: %s"
 msgstr "ne može se pokrenuti SASL biblioteka: %s"
 
-#: src/mn-client-session.c:926
+#: src/mn-client-session.c:936
 #, c-format
 msgid "unable to retrieve local address of socket: %s"
 msgstr "ne može da se dobavi lokalna adresa utičnice: %s"
 
-#: src/mn-client-session.c:932
+#: src/mn-client-session.c:942
 #, c-format
 msgid "unable to retrieve remote address of socket: %s"
 msgstr "ne može da se dobavi udaljena adresa utičnice: %s"
 
-#: src/mn-client-session.c:966
+#: src/mn-client-session.c:976
 #, c-format
 msgid "warning: unable to set SASL security properties: %s"
 msgstr "upozorenje: nije moguće postaviti SASL sigurnosne postavke %s"
 
-#: src/mn-client-session.c:1005
+#: src/mn-client-session.c:1015
 msgid ""
 "unable to start SASL authentication: SASL asked for something we did not know"
 msgstr "ne može se pokrenuti SASL prijava: SASL traži podatke koje nemamo"
 
-#: src/mn-client-session.c:1009
+#: src/mn-client-session.c:1019
 #, c-format
 msgid "unable to start SASL authentication: %s"
 msgstr "ne može se pokrenuti SASL prijava: %s"
 
-#: src/mn-client-session.c:1013
+#: src/mn-client-session.c:1023
 #, c-format
 msgid "unable to create a SASL connection: %s"
 msgstr "nije moguće uspostaviti SASL vezu: %s"
 
-#: src/mn-client-session.c:1063
+#: src/mn-client-session.c:1073
 msgid "SASL asked for something we did not know, aborting SASL authentication"
 msgstr "SASL je tražio nama nepoznate podatke, obustavljam SASL prijavu"
 
-#: src/mn-client-session.c:1067
+#: src/mn-client-session.c:1077
 #, c-format
 msgid "%s, aborting SASL authentication"
 msgstr "%s, obustavljam SASL prijavu"
 
 #. compliance error
-#: src/mn-client-session.c:1072
+#: src/mn-client-session.c:1082
 #, c-format
 msgid "unable to decode Base64 input from server: %s"
 msgstr "nije moguće dekodovati Base64 ulaz sa servera: %s"
 
-#: src/mn-client-session.c:1075
+#: src/mn-client-session.c:1085
 msgid ""
 "the server sent a SASL challenge, but there was a pending initial SASL "
 "client response"
 msgstr ""
 "server je započeo SASL razgovor, ali odgovor od klijenta stigao pre toga"
 
-#: src/mn-client-session.c:1089
+#: src/mn-client-session.c:1099
 msgid ""
 "the server did not send a SASL challenge, but there was no pending initial "
 "SASL client response"
 msgstr ""
 "server nije poslao SASL razgovor, ali nije bilo ni odgovora od klijenta."
 
-#: src/mn-client-session.c:1112
+#: src/mn-client-session.c:1122
 #, c-format
 msgid "a SASL security layer of strength factor %i is now active"
 msgstr "SASL sigurnosni sloj nivoa snage %i je uspostavljen"
 
 #. a security layer is active but we can't retrieve maxoutbuf -> fatal
-#: src/mn-client-session.c:1117
+#: src/mn-client-session.c:1127
 #, c-format
 msgid "unable to get SASL_MAXOUTBUF property: %s"
 msgstr "ne mogu da pročitam postavku SASL_MAXOUTBUF: %s"
 
-#: src/mn-client-session.c:1123
+#: src/mn-client-session.c:1133
 #, c-format
 msgid "warning: unable to get SASL_SSF property: %s"
 msgstr "upozorenje: ne mogu da pročitam postavku SASL_SSF: %s"
 
-#: src/mn-conf.c:123
+#: src/mn-conf.c:136
 #, c-format
 msgid "recursively unsetting %s"
 msgstr "rekurzivno poništavam %s"
 
-#: src/mn-conf.c:127
+#: src/mn-conf.c:140
 msgid "syncing the GConf database"
 msgstr "usklađujem GConf bazu podataka"
 
-#: src/mn-conf.c:130
+#: src/mn-conf.c:143
 msgid "completed"
 msgstr "urađeno"
 
@@ -584,33 +628,33 @@ msgstr ""
 "Vaša lozinka na servisu Gmail (ako ne upišete lozinku, program će Vas "
 "zamoliti da je unesete kada to bude potrebno)"
 
-#: src/mn-gmail-mailbox.gob:63
+#: src/mn-gmail-mailbox.gob:81
 msgid "libsoup has not been compiled with SSL/TLS support"
 msgstr "libsoup nije izgrađen sa podrškom za SSL/TLS"
 
-#: src/mn-gmail-mailbox.gob:105
+#: src/mn-gmail-mailbox.gob:123
 #, c-format
 msgid "unable to parse URI \"%s\""
 msgstr "nije moguće obraditi URI \"%s\""
 
-#: src/mn-gmail-mailbox.gob:159
+#: src/mn-gmail-mailbox.gob:177
 #, c-format
 msgid "unable to transfer data: %s"
 msgstr "ne mogu da preuzmem podatke: %s"
 
-#: src/mn-gmail-mailbox.gob:280
+#: src/mn-gmail-mailbox.gob:298
 msgid "logging in"
 msgstr "prijava u toku"
 
-#: src/mn-gmail-mailbox.gob:358
+#: src/mn-gmail-mailbox.gob:376
 msgid "login failed"
 msgstr "prijava nije uspela"
 
-#: src/mn-gmail-mailbox.gob:433
+#: src/mn-gmail-mailbox.gob:451
 msgid "searching for unread mail"
 msgstr "tražim novu poštu"
 
-#: src/mn-gmail-mailbox.gob:529
+#: src/mn-gmail-mailbox.gob:490
 msgid "unable to parse Gmail data"
 msgstr "ne mogu da obradim podatke sa servisa Gmail"
 
@@ -676,50 +720,50 @@ msgstr "Broj porta na IMAP serveru"
 msgid "The mailbox name"
 msgstr "Ime sandučeta"
 
-#: src/mn-imap-mailbox.gob:133 src/mn-pop3-mailbox.gob:142
+#: src/mn-imap-mailbox.gob:164 src/mn-pop3-mailbox.gob:142
 msgid "SSL/TLS support has not been compiled in"
 msgstr "Podrška za SSL/TLS nije ugrađena"
 
-#: src/mn-imap-mailbox.gob:204
+#: src/mn-imap-mailbox.gob:253
 msgid "server did not send capabilities"
 msgstr "server nije obavestio o svojim mogućnostima"
 
-#: src/mn-imap-mailbox.gob:319
+#: src/mn-imap-mailbox.gob:374
 msgid "server advertised LOGINDISABLED, not using LOGIN authentication"
 msgstr "server je dojavio LOGINDISABLED, LOGIN prijava neće biti korišćena"
 
-#: src/mn-imap-mailbox.gob:320
+#: src/mn-imap-mailbox.gob:375
 msgid "unable to login"
 msgstr "prijava nije moguća"
 
 #. compliance error
-#: src/mn-imap-mailbox.gob:451
+#: src/mn-imap-mailbox.gob:516
 msgid "server did not send search results"
 msgstr "server nije poslao rezultate pretrage"
 
 #. compliance error
-#: src/mn-imap-mailbox.gob:527
+#: src/mn-imap-mailbox.gob:596
 msgid "server did not send all the messages we requested"
 msgstr "server nije poslao sve tražene poruke"
 
-#: src/mn-imap-mailbox.gob:574
+#: src/mn-imap-mailbox.gob:645
 msgid "unable to fetch message"
 msgstr "nije moguće dobaviti poruku"
 
 #. compliance error
-#: src/mn-imap-mailbox.gob:621
+#: src/mn-imap-mailbox.gob:763
 msgid "server did not send status"
 msgstr "server nije poslao status"
 
-#: src/mn-imap-mailbox.gob:856 src/mn-pop3-mailbox.gob:913
+#: src/mn-imap-mailbox.gob:1035 src/mn-pop3-mailbox.gob:922
 msgid "unknown server error"
 msgstr "nepoznata greška na serveru"
 
-#: src/mn-imap-mailbox.gob:927 src/mn-pop3-mailbox.gob:226
+#: src/mn-imap-mailbox.gob:1106 src/mn-pop3-mailbox.gob:226
 msgid "server does not support in-band SSL/TLS"
 msgstr "server ne podržava zaštitu putem SSL/TLS"
 
-#: src/mn-imap-mailbox.gob:946 src/mn-pop3-mailbox.gob:832
+#: src/mn-imap-mailbox.gob:1125 src/mn-pop3-mailbox.gob:841
 msgid ""
 "a SASL authentication mechanism was selected but SASL support has not been "
 "compiled in"
@@ -727,24 +771,28 @@ msgstr ""
 "izabran je mehanizam za prijavu koji koristi SASL ali podrška za SASL nije "
 "ugrađena u program"
 
-#: src/mn-imap-mailbox.gob:954 src/mn-pop3-mailbox.gob:844
+#: src/mn-imap-mailbox.gob:1133 src/mn-pop3-mailbox.gob:853
 #, c-format
 msgid "unknown authentication mechanism \"%s\""
 msgstr "nepoznat mehanizam za prijavu \"%s\""
 
-#: src/mn-imap-mailbox.gob:972
+#: src/mn-imap-mailbox.gob:1151
 msgid "falling back to IMAP LOGIN authentication"
 msgstr "povratak na  IMAP LOGIN prijavu"
 
-#: src/mn-imap-mailbox.gob:977 src/mn-pop3-mailbox.gob:879
+#: src/mn-imap-mailbox.gob:1156 src/mn-pop3-mailbox.gob:888
 msgid "authentication failed"
 msgstr "prijava nije uspela"
 
-#: src/mn-mail-icon.gob:84 ui/summary-dialog.glade.h:2
+#: src/mn-mail-icon.gob:92 ui/summary-dialog.glade.h:2
+msgid "_Launch Mail Reader"
+msgstr ""
+
+#: src/mn-mail-icon.gob:93 ui/summary-dialog.glade.h:3
 msgid "_Update"
 msgstr "_Osveži"
 
-#: src/mn-mail-icon.gob:90
+#: src/mn-mail-icon.gob:99
 msgid "R_emove From Notification Area"
 msgstr "_Ukloni sa obaveštajne zone"
 
@@ -801,7 +849,7 @@ msgstr "Gotovo"
 msgid "Whether the properties are completely filled or not"
 msgstr "Da li su postavke sasvim popunjene ili ne"
 
-#: src/mn-mailbox-view.gob:263 src/mn-message-label.gob:74
+#: src/mn-mailbox-view.gob:263 src/mn-message-box.gob:58
 msgid "Mailbox"
 msgstr "Sanduče"
 
@@ -827,35 +875,36 @@ msgid "The mailbox human-readable name"
 msgstr "Ime sandučeta"
 
 #: src/mn-mailbox.gob:145
-msgid "Whether the mailbox has to be manually checked or not"
+#, fuzzy
+msgid "Whether the mailbox has to be polled or not"
 msgstr "Da li se ovo sanduče ručno proverava ili ne"
 
-#: src/mn-mailbox.gob:150
+#: src/mn-mailbox.gob:151
 msgid "Whether the mailbox has new mail or not"
 msgstr "Da li u sandučetu stoji nova pošta ili ne"
 
-#: src/mn-mailbox.gob:155
+#: src/mn-mailbox.gob:156
 msgid "The list of new and unread MNMessage objects"
 msgstr "Spisak novih i nepročitanih MNMessage objekata"
 
-#: src/mn-mailbox.gob:209
+#: src/mn-mailbox.gob:210
 msgid "The mailbox error, if any"
 msgstr "Greška u pristupu sandučetu, ako postoji"
 
-#: src/mn-mailbox.gob:308
+#: src/mn-mailbox.gob:309
 msgid "does not exist"
 msgstr "ne postoji"
 
-#: src/mn-mailbox.gob:340
+#: src/mn-mailbox.gob:341
 msgid "unknown format"
 msgstr "nepoznat format"
 
-#: src/mn-mailbox.gob:406
+#: src/mn-mailbox.gob:407
 #, c-format
 msgid "unable to enable immediate notification for %s: %s"
 msgstr "Nije moguće namestiti neposrednu dojavu nove pošte za %s: %s"
 
-#: src/mn-mailbox.gob:424
+#: src/mn-mailbox.gob:425
 #, c-format
 msgid ""
 "As a fallback, they will be checked every %i second (this delay is "
@@ -873,7 +922,7 @@ msgstr[2] ""
 "Pošto nema druge mogućnosti, biće proveravani svakih %i sekundi (ovo "
 "kašnjenje se može promeniti iz prozora sa postavkama)"
 
-#: src/mn-mailbox.gob:435
+#: src/mn-mailbox.gob:436
 #, c-format
 msgid ""
 "As a fallback, they will be checked every %i minute (this delay is "
@@ -891,7 +940,7 @@ msgstr[2] ""
 "Pošto nema druge mogućnosti, biće proveravani svakih %i minuta (ovo "
 "kašnjenje se može promeniti iz prozora sa postavkama)"
 
-#: src/mn-mailbox.gob:446
+#: src/mn-mailbox.gob:447
 #, c-format
 msgid ""
 "As a fallback, they will be checked approximately every %i minute (this "
@@ -909,11 +958,11 @@ msgstr[2] ""
 "Pošto nema druge mogućnosti, biće proveravani na oko %i minuta (ovo "
 "kašnjenje se može promeniti iz prozora sa postavkama)"
 
-#: src/mn-mailbox.gob:462
+#: src/mn-mailbox.gob:463
 msgid "A monitoring error has occurred"
 msgstr "Došlo je do greške pri motrenju"
 
-#: src/mn-mailbox.gob:463
+#: src/mn-mailbox.gob:464
 #, c-format
 msgid ""
 "Mail Notification was unable to enable immediate notification for one or "
@@ -922,27 +971,27 @@ msgstr ""
 "Nije moguće namestiti neposrednu dojavu nove pošte za jedan ili više "
 "sandučića. %s"
 
-#: src/mn-mailboxes.gob:143
+#: src/mn-mailboxes.gob:142
 msgid "Whether one or more of the mailboxes has to be polled"
 msgstr ""
 "Pokazuje da li postoji bar jedno sanduče koje mora da se učestalo proverava"
 
-#: src/mn-mailboxes.gob:276
+#: src/mn-mailboxes.gob:272
 #, c-format
 msgid "%s is unsupported: %s"
 msgstr "%s nije podržan: %s"
 
-#: src/mn-mailboxes.gob:307
+#: src/mn-mailboxes.gob:304
 #, c-format
 msgid "%s has new mail"
 msgstr "Sanduče %s ima novu poštu"
 
-#: src/mn-mailboxes.gob:307
+#: src/mn-mailboxes.gob:304
 #, c-format
 msgid "%s has no new mail"
 msgstr "Sanduče %s nema novu poštu"
 
-#: src/mn-mailboxes.gob:333
+#: src/mn-mailboxes.gob:330
 #, c-format
 msgid "%s reported an error: %s"
 msgstr "%s je dojavio grešku: %s"
@@ -1068,23 +1117,23 @@ msgstr "greška pri čitanju sandučeta: %s"
 msgid "unable to open mailbox: %s"
 msgstr "nije moguće otvoriti sanduče: %s"
 
-#: src/mn-message-label.gob:77
+#: src/mn-message-box.gob:61
 msgid "Unreadable message"
 msgstr "Nečitljiva poruka"
 
-#: src/mn-message-label.gob:97
+#: src/mn-message-box.gob:66
 msgid "From"
 msgstr "Od"
 
-#: src/mn-message-label.gob:98
+#: src/mn-message-box.gob:67
 msgid "Subject"
 msgstr "Tema"
 
-#: src/mn-message-label.gob:102
+#: src/mn-message-box.gob:72
 msgid "Sent"
 msgstr "Poslato"
 
-#: src/mn-message-label.gob:151
+#: src/mn-message-box.gob:184
 #, c-format
 msgid "%i second ago"
 msgid_plural "%i seconds ago"
@@ -1092,7 +1141,7 @@ msgstr[0] "pre %i sekundu"
 msgstr[1] "pre %i sekunde"
 msgstr[2] "pre %i sekundi"
 
-#: src/mn-message-label.gob:155
+#: src/mn-message-box.gob:188
 #, c-format
 msgid "%i minute ago"
 msgid_plural "%i minutes ago"
@@ -1100,7 +1149,7 @@ msgstr[0] "pre %i minut"
 msgstr[1] "pre %i minuta"
 msgstr[2] "pre %i minuta"
 
-#: src/mn-message-label.gob:160
+#: src/mn-message-box.gob:193
 #, c-format
 msgid "%i hour ago"
 msgid_plural "%i hours ago"
@@ -1108,7 +1157,7 @@ msgstr[0] "pre %i sat"
 msgstr[1] "pre %i sata"
 msgstr[2] "pre %i sati"
 
-#: src/mn-message-label.gob:165
+#: src/mn-message-box.gob:198
 #, c-format
 msgid "%i day ago"
 msgid_plural "%i days ago"
@@ -1116,7 +1165,7 @@ msgstr[0] "pre %i dan"
 msgstr[1] "pre %i dana"
 msgstr[2] "pre %i dana"
 
-#: src/mn-message-label.gob:170
+#: src/mn-message-box.gob:203
 #, c-format
 msgid "%i week ago"
 msgid_plural "%i weeks ago"
@@ -1166,15 +1215,15 @@ msgstr "_ugrađeni SSL/TLS"
 msgid "SSL/TLS on sepa_rate port"
 msgstr "SSL/TLS na posebnom portu"
 
-#: src/mn-pop3-mailbox-properties.gob:85
+#: src/mn-pop3-mailbox-properties.gob:86
 msgid "The hostname or IP address of the POP3 server"
 msgstr "Ime ili IP broj POP3 servera"
 
-#: src/mn-pop3-mailbox-properties.gob:86
+#: src/mn-pop3-mailbox-properties.gob:87
 msgid "Your username on the POP3 server"
 msgstr "Vaše ime na  POP3 serveru"
 
-#: src/mn-pop3-mailbox-properties.gob:87
+#: src/mn-pop3-mailbox-properties.gob:88
 msgid ""
 "Your password on the POP3 server (if left blank, you will be prompted for "
 "the password when needed)"
@@ -1182,7 +1231,7 @@ msgstr ""
 "Vaša lozinka na POP3 serveru (ako ne upišete lozinku, program će Vas "
 "zamoliti da je unesete kada to bude potrebno)"
 
-#: src/mn-pop3-mailbox-properties.gob:88 src/mn-pop3-mailbox-properties.gob:89
+#: src/mn-pop3-mailbox-properties.gob:89 src/mn-pop3-mailbox-properties.gob:90
 msgid "The port number of the POP3 server"
 msgstr "Broj porta na POP3 serveru"
 
@@ -1190,11 +1239,11 @@ msgstr "Broj porta na POP3 serveru"
 msgid "invalid arguments for the LOGIN-DELAY capability"
 msgstr "parametri za mogućnost LOGIN-DELAY nisu ispravno postavljeni"
 
-#: src/mn-pop3-mailbox.gob:549
+#: src/mn-pop3-mailbox.gob:556
 msgid "unknown error"
 msgstr "nepoznata greška"
 
-#: src/mn-pop3-mailbox.gob:681
+#: src/mn-pop3-mailbox.gob:690
 #, c-format
 msgid "honouring LOGIN-DELAY, sleeping for %i second"
 msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds"
@@ -1202,39 +1251,39 @@ msgstr[0] "tražen je zastoj pri prijavi, pauziram %i sekundu"
 msgstr[1] "tražen je zastoj pri prijavi, pauziram %i sekunde"
 msgstr[2] "tražen je zastoj pri prijavi, pauziram %i sekundi"
 
-#: src/mn-pop3-mailbox.gob:840
+#: src/mn-pop3-mailbox.gob:849
 msgid "server does not support APOP authentication"
 msgstr "server ne podržava prijavu korišćenjem mehanizma APOP"
 
-#: src/mn-pop3-mailbox.gob:868
+#: src/mn-pop3-mailbox.gob:877
 msgid "falling back to APOP authentication"
 msgstr "prelazim na  APOP prijavu"
 
-#: src/mn-pop3-mailbox.gob:873
+#: src/mn-pop3-mailbox.gob:882
 msgid "falling back to USER/PASS authentication"
 msgstr "prelazim na prijavu pomoću imena i lozinke"
 
-#: src/mn-properties.c:170
+#: src/mn-properties.c:181
 msgid "top left"
 msgstr "gore-levo"
 
-#: src/mn-properties.c:171
+#: src/mn-properties.c:182
 msgid "top right"
 msgstr "gore-desno"
 
-#: src/mn-properties.c:172
+#: src/mn-properties.c:183
 msgid "bottom left"
 msgstr "dole-levo"
 
-#: src/mn-properties.c:173
+#: src/mn-properties.c:184
 msgid "bottom right"
 msgstr "dole-desno"
 
-#: src/mn-properties.c:251
+#: src/mn-properties.c:270
 msgid "No mailbox selected."
 msgstr "Nijedno sanduče nije izabrano."
 
-#: src/mn-properties.c:256
+#: src/mn-properties.c:275
 #, c-format
 msgid "%i mailbox selected."
 msgid_plural "%i mailboxes selected."
@@ -1242,43 +1291,26 @@ msgstr[0] "Izabrano %i sanduče"
 msgstr[1] "Izabrana %i sandučeta"
 msgstr[2] "Izabrano %i sandučeta"
 
-#: src/mn-shell.gob:86
+#: src/mn-shell.gob:92
 msgid "You have new mail."
 msgstr "Imate novu poštu."
 
-#: src/mn-shell.gob:263
-msgid "The following mailbox has new mail:\n"
-msgid_plural "The following mailboxes have new mail:\n"
-msgstr[0] "Sanduče sa novom poštom:\n"
-msgstr[1] "Sandučići sa novom poštom:\n"
-msgstr[2] "Sandučići sa novom poštom:\n"
-
-#: src/mn-shell.gob:267
-msgid "You have no new mail."
-msgstr "Nema pošte."
-
-#: src/mn-shell.gob:270
-msgid "The following mailbox reported an error:\n"
-msgid_plural "The following mailboxes reported an error:\n"
-msgstr[0] "Ovo sanduče ima grešku:\n"
-msgstr[1] "Ovi sandučići imaju grešku:\n"
-msgstr[2] "Ovi sandučići imaju grešku:\n"
-
-#: src/mn-shell.gob:275
-msgid "The following mailbox is unsupported:\n"
-msgid_plural "The following mailboxes are unsupported:\n"
-msgstr[0] "Ovo sanduče nije podržano:\n"
-msgstr[1] "Ovi sandučići nisu podržani:\n"
-msgstr[2] "Ovi sandučići nisu podržani:\n"
-
-#: src/mn-shell.gob:320
-msgid "A command error has occurred in Mail Notification"
-msgstr "Došlo je do greške u komandama"
+#: src/mn-shell.gob:347
+msgid "Mailboxes Having New Mail"
+msgstr ""
 
-#: src/mn-shell.gob:321
-#, c-format
-msgid "Unable to execute \"%s\": %s."
-msgstr "Nije moguće izvršiti %s: %s"
+#: src/mn-shell.gob:349
+msgid "Errors"
+msgstr ""
+
+#: src/mn-shell.gob:351
+#, fuzzy
+msgid "Unsupported Mailboxes"
+msgstr "Lokalno sanduče"
+
+#: src/mn-shell.gob:364 ui/summary-dialog.glade.h:1
+msgid "Mail Summary"
+msgstr "Sažetak poruka"
 
 #: src/mn-soup.c:140
 #, c-format
@@ -1377,11 +1409,20 @@ msgstr "Došlo je do kobne greške u programu za dojavu pošte"
 msgid "unable to get current time: %s"
 msgstr "nije moguće dobaviti trenutno vreme: %s"
 
-#: src/mn-util.c:887
+#: src/mn-util.c:906
 #, c-format
 msgid "invalid signal specification \"%s\""
 msgstr "nevažeća odrednica za signal „%s‟"
 
+#: src/mn-util.c:945
+msgid "A command error has occurred in Mail Notification"
+msgstr "Došlo je do greške u komandama"
+
+#: src/mn-util.c:946
+#, c-format
+msgid "Unable to execute \"%s\": %s."
+msgstr "Nije moguće izvršiti %s: %s"
+
 #: ui/authentication.glade.h:1 ui/properties.glade.h:2
 msgid "*"
 msgstr "*"
@@ -1403,58 +1444,72 @@ msgid "<span weight=\"bold\">Commands</span>"
 msgstr "<span weight=\"bold\">Naredbe</span>"
 
 #: ui/properties.glade.h:4
+#, fuzzy
+msgid "<span weight=\"bold\">Double-click Action</span>"
+msgstr "<span weight=\"bold\">Mesto</span>"
+
+#: ui/properties.glade.h:5
 msgid "<span weight=\"bold\">General</span>"
 msgstr "<span weight=\"bold\">Opšte</span>"
 
-#: ui/properties.glade.h:5
+#: ui/properties.glade.h:6
 msgid "<span weight=\"bold\">Mailbox List</span>"
 msgstr "<span weight=\"bold\">Sandučići</span>"
 
-#: ui/properties.glade.h:6
+#: ui/properties.glade.h:7
 msgid "<span weight=\"bold\">Position</span>"
 msgstr "<span weight=\"bold\">Mesto</span>"
 
-#: ui/properties.glade.h:7
+#: ui/properties.glade.h:8
 msgid "General"
 msgstr "Opšte"
 
-#: ui/properties.glade.h:8
+#: ui/properties.glade.h:9
 msgid "Hori_zontal offset:"
 msgstr "Hori_zontalni pomak:"
 
-#: ui/properties.glade.h:9
+#: ui/properties.glade.h:10
 msgid "Mail Notification Properties"
 msgstr "Postavke za dojavu"
 
-#: ui/properties.glade.h:10
+#: ui/properties.glade.h:11
 msgid "Mail Summary Popup"
 msgstr "Sažetak poruka"
 
-#: ui/properties.glade.h:11
+#: ui/properties.glade.h:12
 msgid "Mailboxes"
 msgstr "Sandučići"
 
-#: ui/properties.glade.h:12
+#: ui/properties.glade.h:13
+msgid "Only display _recent mail"
+msgstr ""
+
+#: ui/properties.glade.h:14
 msgid "P_osition:"
 msgstr "_Mesto:"
 
-#: ui/properties.glade.h:13
+#: ui/properties.glade.h:15
 msgid "The amount of time to wait before closing the mail summary popup"
 msgstr "Pauza pre zatvaranja prozora sa sažetkom poruka"
 
-#: ui/properties.glade.h:14
+#: ui/properties.glade.h:16
 msgid "The amount of time to wait between mail checks"
 msgstr "Pauza između dve uzastopne provere"
 
-#: ui/properties.glade.h:15
+#: ui/properties.glade.h:17
+#, fuzzy
+msgid "The command to run to launch the mail reader"
+msgstr "Naredba koja se pokreće kada je sva pošta pročitana"
+
+#: ui/properties.glade.h:18
 msgid "The command to run when all mail is read"
 msgstr "Naredba koja se pokreće kada je sva pošta pročitana"
 
-#: ui/properties.glade.h:16
+#: ui/properties.glade.h:19
 msgid "The command to run when new mail arrives"
 msgstr "Naredba koja se pokreće kada stiže nova pošta"
 
-#: ui/properties.glade.h:17
+#: ui/properties.glade.h:20
 msgid ""
 "The number of pixels to leave between the left or right side of the screen "
 "and the mail summary popup"
@@ -1462,7 +1517,7 @@ msgstr ""
 "Broj tačaka koje treba ostaviti između leve, odn. desne strane ekrana i "
 "prozora sa sažetkom poruka"
 
-#: ui/properties.glade.h:18
+#: ui/properties.glade.h:21
 msgid ""
 "The number of pixels to leave between the top or bottom side of the screen "
 "and the mail summary popup"
@@ -1470,82 +1525,102 @@ msgstr ""
 "Broj tačaka koje treba ostaviti između vrha, odn. dna ekrana i prozora sa "
 "sažetkom poruka"
 
-#: ui/properties.glade.h:19
+#: ui/properties.glade.h:22
 msgid "When _all mail is read:"
 msgstr "Kada je s_va pošta pročitana:"
 
-#: ui/properties.glade.h:20
+#: ui/properties.glade.h:23
 msgid "When _new mail arrives:"
 msgstr "Kada _stigne nova pošta:"
 
-#: ui/properties.glade.h:21
+#: ui/properties.glade.h:24
 msgid "Whether the status icon should blink on errors or not"
 msgstr "Da li statusna sličica treperi pri greškama ili ne"
 
-#: ui/properties.glade.h:22
+#: ui/properties.glade.h:25
 msgid "Whether to automatically close the mail summary popup or not"
 msgstr ""
 "Da li treba ili ne treba automatski zatvoriti prozor sa sažetkom poruka"
 
-#: ui/properties.glade.h:23
+#: ui/properties.glade.h:26
 msgid "Whether to display the mail summary popup when new mail arrives or not"
 msgstr ""
 "Da li treba ili ne treba prikazivati sažetak poruka kada stigne nova pošta"
 
-#: ui/properties.glade.h:24
+#: ui/properties.glade.h:27
+#, fuzzy
+msgid "Whether to hide previously displayed mail or not"
+msgstr "Da li u sandučetu stoji nova pošta ili ne"
+
+#: ui/properties.glade.h:28
 msgid "Whether to run a command when all mail is read or not"
 msgstr "Da li se pokreće ili ne pokreće komanda kada je sva pošta pročitana"
 
-#: ui/properties.glade.h:25
+#: ui/properties.glade.h:29
 msgid "Whether to run a command when new mail arrives or not"
 msgstr "Da li se pokreće komanda kada stigne pošta ili ne"
 
-#: ui/properties.glade.h:26
+#: ui/properties.glade.h:30
+#, fuzzy
+msgid "Whether to set a mail reader or not"
+msgstr "Da li se pokreće ili ne pokreće komanda kada je sva pošta pročitana"
+
+#: ui/properties.glade.h:31
 msgid ""
 "Whether to start Mail Notification when you log into your GNOME session or "
 "not"
 msgstr "Da li pokrenuti dojavu pošte kada se prijavite na sistem"
 
-#: ui/properties.glade.h:27
+#: ui/properties.glade.h:32
 msgid "_Automatically close after:"
 msgstr "_Automatski zatvori posle:"
 
-#: ui/properties.glade.h:28
+#: ui/properties.glade.h:33
 msgid "_Blink on errors"
 msgstr "_Treperi pri greškama"
 
-#: ui/properties.glade.h:29
+#: ui/properties.glade.h:34
 msgid "_Delay between mail checks:"
 msgstr "_Pauza između provera:"
 
-#: ui/properties.glade.h:30
+#: ui/properties.glade.h:35
+#, fuzzy
+msgid "_Display the mail summary dialog"
+msgstr "Prikaži prozor sa sažetkom poruka"
+
+#: ui/properties.glade.h:36
 msgid "_Enable mail summary popup"
 msgstr "Dozvoli prikaz sažetka poruka"
 
-#: ui/properties.glade.h:31
+#: ui/properties.glade.h:37
+msgid "_Launch the mail reader"
+msgstr ""
+
+#: ui/properties.glade.h:38
+#, fuzzy
+msgid "_Mail reader:"
+msgstr "_Sažetak poruka"
+
+#: ui/properties.glade.h:39
 msgid "_Start Mail Notification on GNOME login"
 msgstr "Pokreni _dojavu pri prijavi"
 
-#: ui/properties.glade.h:32
+#: ui/properties.glade.h:40
 msgid "_Vertical offset:"
 msgstr "_Vertikalni pomak:"
 
-#: ui/properties.glade.h:33
+#: ui/properties.glade.h:41
 msgid "minutes"
 msgstr "minuta"
 
-#: ui/properties.glade.h:34
+#: ui/properties.glade.h:42
 msgid "pixels"
 msgstr "tačaka"
 
-#: ui/properties.glade.h:35
+#: ui/properties.glade.h:43
 msgid "seconds"
 msgstr "sekundi"
 
-#: ui/summary-dialog.glade.h:1
-msgid "Mail Summary"
-msgstr "Sažetak poruka"
-
 #: ui/summary-popup.glade.h:1
 msgid "<span size=\"larger\" weight=\"bold\">Mail Summary</span>"
 msgstr "<span weight=\"bold\">Sažetak poruka</span>"
@@ -1586,8 +1661,26 @@ msgstr "_Podesi dojavu pošte"
 msgid "_Skip configuration"
 msgstr "P_reskoči podešavanja"
 
-#~ msgid "Double-clicked command"
-#~ msgstr "Izvrši na dvostruki klik"
+#~ msgid "The following mailbox has new mail:\n"
+#~ msgid_plural "The following mailboxes have new mail:\n"
+#~ msgstr[0] "Sanduče sa novom poštom:\n"
+#~ msgstr[1] "Sandučići sa novom poštom:\n"
+#~ msgstr[2] "Sandučići sa novom poštom:\n"
+
+#~ msgid "You have no new mail."
+#~ msgstr "Nema pošte."
+
+#~ msgid "The following mailbox reported an error:\n"
+#~ msgid_plural "The following mailboxes reported an error:\n"
+#~ msgstr[0] "Ovo sanduče ima grešku:\n"
+#~ msgstr[1] "Ovi sandučići imaju grešku:\n"
+#~ msgstr[2] "Ovi sandučići imaju grešku:\n"
+
+#~ msgid "The following mailbox is unsupported:\n"
+#~ msgid_plural "The following mailboxes are unsupported:\n"
+#~ msgstr[0] "Ovo sanduče nije podržano:\n"
+#~ msgstr[1] "Ovi sandučići nisu podržani:\n"
+#~ msgstr[2] "Ovi sandučići nisu podržani:\n"
 
 #~ msgid "Run a command when the icon is double-clicked"
 #~ msgstr "Izvrši komandu pri dvostrukom kliku na ikonu"
diff --git a/src/Makefile.am b/src/Makefile.am
@@ -148,11 +148,12 @@ gob_sources = \
 	mn-mailbox-view.gob			\
 	mn-mailbox.gob				\
 	mn-mailboxes.gob			\
-	mn-message-label.gob			\
+	mn-message-box.gob			\
 	mn-message.gob				\
 	mn-pending-mailbox.gob			\
 	mn-shell.gob				\
 	mn-system-mailbox-properties.gob	\
+	mn-tooltips.gob				\
 	mn-unsupported-mailbox.gob		\
 	mn-uri.gob
 gob_built_sources = \
@@ -190,9 +191,9 @@ gob_built_sources = \
 	mn-mailboxes-private.h				\
 	mn-mailboxes.c					\
 	mn-mailboxes.h					\
-	mn-message-label-private.h			\
-	mn-message-label.c				\
-	mn-message-label.h				\
+	mn-message-box-private.h			\
+	mn-message-box.c				\
+	mn-message-box.h				\
 	mn-message-private.h				\
 	mn-message.c					\
 	mn-message.h					\
@@ -205,6 +206,9 @@ gob_built_sources = \
 	mn-system-mailbox-properties-private.h		\
 	mn-system-mailbox-properties.c			\
 	mn-system-mailbox-properties.h			\
+	mn-tooltips-private.h				\
+	mn-tooltips.c					\
+	mn-tooltips.h					\
 	mn-unsupported-mailbox-private.h		\
 	mn-unsupported-mailbox.c			\
 	mn-unsupported-mailbox.h			\
diff --git a/src/Makefile.in b/src/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.8.5 from Makefile.am.
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -40,9 +40,9 @@ bin_PROGRAMS = mail-notification$(EXEEXT)
 subdir = src
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/openssl.m4 \
-	$(top_srcdir)/m4/sasl2.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
+am__aclocal_m4_deps = $(top_srcdir)/m4/intltool.m4 \
+	$(top_srcdir)/m4/openssl.m4 $(top_srcdir)/m4/sasl2.m4 \
+	$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
@@ -61,14 +61,14 @@ am__mail_notification_SOURCES_DIST = MNAutomation.idl \
 	mn-gmime-stream-vfs.gob mn-about-dialog.gob \
 	mn-autodetect-mailbox-properties.gob mn-automation.gob \
 	mn-blinking-image.gob mn-mail-icon.gob mn-mailbox-view.gob \
-	mn-mailbox.gob mn-mailboxes.gob mn-message-label.gob \
+	mn-mailbox.gob mn-mailboxes.gob mn-message-box.gob \
 	mn-message.gob mn-pending-mailbox.gob mn-shell.gob \
-	mn-system-mailbox-properties.gob mn-unsupported-mailbox.gob \
-	mn-uri.gob mn-mbox-mailbox-private.h mn-mbox-mailbox.c \
-	mn-mbox-mailbox.h mn-mh-mailbox-private.h mn-mh-mailbox.c \
-	mn-mh-mailbox.h mn-maildir-mailbox-private.h \
-	mn-maildir-mailbox.c mn-maildir-mailbox.h \
-	mn-pop3-mailbox-properties-private.h \
+	mn-system-mailbox-properties.gob mn-tooltips.gob \
+	mn-unsupported-mailbox.gob mn-uri.gob \
+	mn-mbox-mailbox-private.h mn-mbox-mailbox.c mn-mbox-mailbox.h \
+	mn-mh-mailbox-private.h mn-mh-mailbox.c mn-mh-mailbox.h \
+	mn-maildir-mailbox-private.h mn-maildir-mailbox.c \
+	mn-maildir-mailbox.h mn-pop3-mailbox-properties-private.h \
 	mn-pop3-mailbox-properties.c mn-pop3-mailbox-properties.h \
 	mn-pop3-mailbox-private.h mn-pop3-mailbox.c mn-pop3-mailbox.h \
 	mn-imap-mailbox-properties-private.h \
@@ -94,12 +94,13 @@ am__mail_notification_SOURCES_DIST = MNAutomation.idl \
 	mn-mail-icon.c mn-mail-icon.h mn-mailbox-view-private.h \
 	mn-mailbox-view.c mn-mailbox-view.h mn-mailbox-private.h \
 	mn-mailbox.c mn-mailbox.h mn-mailboxes-private.h \
-	mn-mailboxes.c mn-mailboxes.h mn-message-label-private.h \
-	mn-message-label.c mn-message-label.h mn-message-private.h \
+	mn-mailboxes.c mn-mailboxes.h mn-message-box-private.h \
+	mn-message-box.c mn-message-box.h mn-message-private.h \
 	mn-message.c mn-message.h mn-pending-mailbox-private.h \
 	mn-pending-mailbox.c mn-pending-mailbox.h mn-shell-private.h \
 	mn-shell.c mn-shell.h mn-system-mailbox-properties-private.h \
 	mn-system-mailbox-properties.c mn-system-mailbox-properties.h \
+	mn-tooltips-private.h mn-tooltips.c mn-tooltips.h \
 	mn-unsupported-mailbox-private.h mn-unsupported-mailbox.c \
 	mn-unsupported-mailbox.h mn-uri-private.h mn-uri.c mn-uri.h \
 	mn-sgml-ref.c mn-sgml-ref.h mn-soup.c mn-soup.h \
@@ -142,9 +143,9 @@ am__objects_13 = $(am__objects_3) $(am__objects_4) $(am__objects_5) \
 	mn-automation.$(OBJEXT) mn-blinking-image.$(OBJEXT) \
 	mn-mail-icon.$(OBJEXT) mn-mailbox-view.$(OBJEXT) \
 	mn-mailbox.$(OBJEXT) mn-mailboxes.$(OBJEXT) \
-	mn-message-label.$(OBJEXT) mn-message.$(OBJEXT) \
+	mn-message-box.$(OBJEXT) mn-message.$(OBJEXT) \
 	mn-pending-mailbox.$(OBJEXT) mn-shell.$(OBJEXT) \
-	mn-system-mailbox-properties.$(OBJEXT) \
+	mn-system-mailbox-properties.$(OBJEXT) mn-tooltips.$(OBJEXT) \
 	mn-unsupported-mailbox.$(OBJEXT) mn-uri.$(OBJEXT)
 @WITH_GMAIL_TRUE@am__objects_14 = mn-sgml-ref.$(OBJEXT) \
 @WITH_GMAIL_TRUE@	mn-soup.$(OBJEXT)
@@ -172,54 +173,6 @@ mail_notification_LDADD = $(LDADD)
 DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/MNAutomation-common.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/MNAutomation-skels.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/MNAutomation-stubs.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/eggtrayicon.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-about-dialog.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-auth-combo-box.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-authenticated-mailbox.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-autodetect-mailbox-properties.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-automation.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-blinking-image.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-client-session.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-conf.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-gmail-mailbox-properties.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-gmail-mailbox.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-gmime-stream-vfs.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-imap-mailbox-properties.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-imap-mailbox.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-mail-icon.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-mailbox-properties-dialog.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-mailbox-properties-util.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-mailbox-properties.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-mailbox-view.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-mailbox.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-mailboxes.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-maildir-mailbox.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-main.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-mbox-mailbox.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-md5.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-message-label.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-message-mime.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-message.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-mh-mailbox.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-pending-mailbox.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-pi-mailbox-properties.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-pop3-mailbox-properties.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-pop3-mailbox.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-properties.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-sasl.Po ./$(DEPDIR)/mn-sgml-ref.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-shell.Po ./$(DEPDIR)/mn-soup.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-ssl.Po ./$(DEPDIR)/mn-stock.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-summary-dialog.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-summary-popup.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-summary.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-sylpheed-mailbox.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-system-mailbox-properties.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-unsupported-mailbox.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-uri.Po ./$(DEPDIR)/mn-util.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-vfs.Po
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 CCLD = $(CC)
@@ -270,6 +223,7 @@ GNOME_LIBS = @GNOME_LIBS@
 GOB2 = @GOB2@
 GTK_CFLAGS = @GTK_CFLAGS@
 GTK_LIBS = @GTK_LIBS@
+ICONV = @ICONV@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -307,6 +261,7 @@ MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
 MAKEINFO = @MAKEINFO@
 MKINSTALLDIRS = @MKINSTALLDIRS@
 MSGFMT = @MSGFMT@
+MSGMERGE = @MSGMERGE@
 OBJEXT = @OBJEXT@
 OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
 OPENSSL_LIBS = @OPENSSL_LIBS@
@@ -367,6 +322,8 @@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
 bindir = @bindir@
 build_alias = @build_alias@
 datadir = @datadir@
@@ -518,11 +475,12 @@ gob_sources = \
 	mn-mailbox-view.gob			\
 	mn-mailbox.gob				\
 	mn-mailboxes.gob			\
-	mn-message-label.gob			\
+	mn-message-box.gob			\
 	mn-message.gob				\
 	mn-pending-mailbox.gob			\
 	mn-shell.gob				\
 	mn-system-mailbox-properties.gob	\
+	mn-tooltips.gob				\
 	mn-unsupported-mailbox.gob		\
 	mn-uri.gob
 
@@ -561,9 +519,9 @@ gob_built_sources = \
 	mn-mailboxes-private.h				\
 	mn-mailboxes.c					\
 	mn-mailboxes.h					\
-	mn-message-label-private.h			\
-	mn-message-label.c				\
-	mn-message-label.h				\
+	mn-message-box-private.h			\
+	mn-message-box.c				\
+	mn-message-box.h				\
 	mn-message-private.h				\
 	mn-message.c					\
 	mn-message.h					\
@@ -576,6 +534,9 @@ gob_built_sources = \
 	mn-system-mailbox-properties-private.h		\
 	mn-system-mailbox-properties.c			\
 	mn-system-mailbox-properties.h			\
+	mn-tooltips-private.h				\
+	mn-tooltips.c					\
+	mn-tooltips.h					\
 	mn-unsupported-mailbox-private.h		\
 	mn-unsupported-mailbox.c			\
 	mn-unsupported-mailbox.h			\
@@ -736,7 +697,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-main.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-mbox-mailbox.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-md5.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-message-label.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-message-box.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-message-mime.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-message.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-mh-mailbox.Po@am__quote@
@@ -756,6 +717,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-summary.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-sylpheed-mailbox.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-system-mailbox-properties.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-tooltips.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-unsupported-mailbox.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-uri.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-util.Po@am__quote@
@@ -765,16 +727,14 @@ distclean-compile:
 @am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
 uninstall-info-am:
 
@@ -882,13 +842,13 @@ clean-generic:
 	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
 
 distclean-generic:
-	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
 	@echo "it deletes files that may require special tools to rebuild."
-	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
 	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
 clean: clean-am
 
 clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
diff --git a/src/mn-about-dialog-private.h b/src/mn-about-dialog-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #ifndef __MN_ABOUT_DIALOG_PRIVATE_H__
 #define __MN_ABOUT_DIALOG_PRIVATE_H__
diff --git a/src/mn-about-dialog.c b/src/mn-about-dialog.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.10) on Mon Oct 25 15:24:34 2004
+/* Generated by GOB (v2.0.11) on Sun Oct 31 18:41:22 2004
    (do not edit directly) */
 
 /* End world hunger, donate to the World Food Programme, http://www.wfp.org */
 
 #define GOB_VERSION_MAJOR 2
 #define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 10
+#define GOB_VERSION_PATCHLEVEL 11
 
 #define selfp (self->_priv)
 
diff --git a/src/mn-about-dialog.h b/src/mn-about-dialog.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-auth-combo-box-private.h b/src/mn-auth-combo-box-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #ifndef __MN_AUTH_COMBO_BOX_PRIVATE_H__
 #define __MN_AUTH_COMBO_BOX_PRIVATE_H__
diff --git a/src/mn-auth-combo-box.c b/src/mn-auth-combo-box.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.10) on Mon Oct 25 15:24:33 2004
+/* Generated by GOB (v2.0.11) on Sun Oct 31 18:41:21 2004
    (do not edit directly) */
 
 /* End world hunger, donate to the World Food Programme, http://www.wfp.org */
 
 #define GOB_VERSION_MAJOR 2
 #define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 10
+#define GOB_VERSION_PATCHLEVEL 11
 
 #define selfp (self->_priv)
 
diff --git a/src/mn-auth-combo-box.h b/src/mn-auth-combo-box.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-authenticated-mailbox-private.h b/src/mn-authenticated-mailbox-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #ifndef __MN_AUTHENTICATED_MAILBOX_PRIVATE_H__
 #define __MN_AUTHENTICATED_MAILBOX_PRIVATE_H__
diff --git a/src/mn-authenticated-mailbox.c b/src/mn-authenticated-mailbox.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.10) on Mon Oct 25 15:24:33 2004
+/* Generated by GOB (v2.0.11) on Sun Oct 31 18:41:21 2004
    (do not edit directly) */
 
 /* End world hunger, donate to the World Food Programme, http://www.wfp.org */
 
 #define GOB_VERSION_MAJOR 2
 #define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 10
+#define GOB_VERSION_PATCHLEVEL 11
 
 #define selfp (self->_priv)
 
@@ -132,9 +132,9 @@ mn_authenticated_mailbox_class_init (MNAuthenticatedMailboxClass * c G_GNUC_UNUS
 {
 #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
+	MNMailboxClass *mn_mailbox_class = (MNMailboxClass *)c;
 
 	g_type_class_add_private(c,sizeof(MNAuthenticatedMailboxPrivate));
-	MNMailboxClass *mn_mailbox_class = (MNMailboxClass *)c;
 
 	parent_class = g_type_class_ref (MN_TYPE_MAILBOX);
 
diff --git a/src/mn-authenticated-mailbox.h b/src/mn-authenticated-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-autodetect-mailbox-properties-private.h b/src/mn-autodetect-mailbox-properties-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #ifndef __MN_AUTODETECT_MAILBOX_PROPERTIES_PRIVATE_H__
 #define __MN_AUTODETECT_MAILBOX_PROPERTIES_PRIVATE_H__
diff --git a/src/mn-autodetect-mailbox-properties.c b/src/mn-autodetect-mailbox-properties.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.10) on Mon Oct 25 15:24:34 2004
+/* Generated by GOB (v2.0.11) on Sun Oct 31 18:41:22 2004
    (do not edit directly) */
 
 /* End world hunger, donate to the World Food Programme, http://www.wfp.org */
 
 #define GOB_VERSION_MAJOR 2
 #define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 10
+#define GOB_VERSION_PATCHLEVEL 11
 
 #define selfp (self->_priv)
 
@@ -173,7 +173,7 @@ mn_autodetect_mailbox_properties_init (MNAutodetectMailboxProperties * o G_GNUC_
 #define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::init"
 	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,TYPE_SELF,MNAutodetectMailboxPropertiesPrivate);
 #line 51 "mn-autodetect-mailbox-properties.gob"
-	o->_priv->tooltips = mn_tooltips_new();
+	o->_priv->tooltips = mn_gtk_tooltips_new();
 #line 178 "mn-autodetect-mailbox-properties.c"
 }
 #undef __GOB_FUNCTION__
@@ -326,9 +326,9 @@ ___1_mn_autodetect_mailbox_properties_constructor (GType type G_GNUC_UNUSED, gui
     gtk_label_set_mnemonic_widget(GTK_LABEL(label), selfp->location_entry);
     gtk_entry_set_activates_default(GTK_ENTRY(selfp->location_entry), TRUE);
 
-    mn_tooltips_set_tip(selfp->tooltips,
-			selfp->location_entry,
-			_("The URI of the mailbox"));
+    mn_gtk_tooltips_set_tip(selfp->tooltips,
+			    selfp->location_entry,
+			    _("The URI of the mailbox"));
 
     gtk_box_pack_start(GTK_BOX(hbox), selfp->location_entry, TRUE, TRUE, 0);
     gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
diff --git a/src/mn-autodetect-mailbox-properties.gob b/src/mn-autodetect-mailbox-properties.gob
@@ -48,7 +48,7 @@ class MN:Autodetect:Mailbox:Properties from Gtk:HBox (interface MN:Mailbox:Prope
       g_value_set_boolean(VAL, *location != 0);
     };
 
-  private GtkTooltips *tooltips = {mn_tooltips_new()} unrefwith g_object_unref;
+  private GtkTooltips *tooltips = {mn_gtk_tooltips_new()} unrefwith g_object_unref;
   private GtkWidget *location_entry;
 
   override (G:Object) GObject *
@@ -76,9 +76,9 @@ class MN:Autodetect:Mailbox:Properties from Gtk:HBox (interface MN:Mailbox:Prope
     gtk_label_set_mnemonic_widget(GTK_LABEL(label), selfp->location_entry);
     gtk_entry_set_activates_default(GTK_ENTRY(selfp->location_entry), TRUE);
 
-    mn_tooltips_set_tip(selfp->tooltips,
-			selfp->location_entry,
-			_("The URI of the mailbox"));
+    mn_gtk_tooltips_set_tip(selfp->tooltips,
+			    selfp->location_entry,
+			    _("The URI of the mailbox"));
 
     gtk_box_pack_start(GTK_BOX(hbox), selfp->location_entry, TRUE, TRUE, 0);
     gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
diff --git a/src/mn-autodetect-mailbox-properties.h b/src/mn-autodetect-mailbox-properties.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-automation-private.h b/src/mn-automation-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #ifndef __MN_AUTOMATION_PRIVATE_H__
 #define __MN_AUTOMATION_PRIVATE_H__
diff --git a/src/mn-automation.c b/src/mn-automation.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.10) on Mon Oct 25 15:24:34 2004
+/* Generated by GOB (v2.0.11) on Sun Oct 31 18:41:22 2004
    (do not edit directly) */
 
 /* End world hunger, donate to the World Food Programme, http://www.wfp.org */
 
 #define GOB_VERSION_MAJOR 2
 #define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 10
+#define GOB_VERSION_PATCHLEVEL 11
 
 #define selfp (self->_priv)
 
diff --git a/src/mn-automation.h b/src/mn-automation.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-blinking-image-private.h b/src/mn-blinking-image-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #ifndef __MN_BLINKING_IMAGE_PRIVATE_H__
 #define __MN_BLINKING_IMAGE_PRIVATE_H__
diff --git a/src/mn-blinking-image.c b/src/mn-blinking-image.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.10) on Mon Oct 25 15:24:34 2004
+/* Generated by GOB (v2.0.11) on Sun Oct 31 18:41:22 2004
    (do not edit directly) */
 
 /* End world hunger, donate to the World Food Programme, http://www.wfp.org */
 
 #define GOB_VERSION_MAJOR 2
 #define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 10
+#define GOB_VERSION_PATCHLEVEL 11
 
 #define selfp (self->_priv)
 
diff --git a/src/mn-blinking-image.h b/src/mn-blinking-image.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-client-session.c b/src/mn-client-session.c
@@ -563,7 +563,10 @@ mn_client_session_prepare_input_buffer (MNClientSession *session)
   g_return_if_fail(session != NULL);
 
   if (session->bytes_to_remove)
-    g_byte_array_remove_range(session->input_buffer, 0, session->bytes_to_remove);
+    {
+      g_byte_array_remove_range(session->input_buffer, 0, session->bytes_to_remove);
+      session->bytes_to_remove = 0;
+    }
 }
 
 static gboolean
@@ -576,6 +579,9 @@ mn_client_session_fill_input_buffer (MNClientSession *session)
   
   g_return_val_if_fail(session != NULL, FALSE);
 
+  if (session->callbacks->pre_read)
+    session->callbacks->pre_read(session, session->private);
+
 #ifdef WITH_SSL
   if (session->ssl)
     bytes_read = SSL_read(session->ssl, buf, sizeof(buf));
@@ -585,6 +591,9 @@ mn_client_session_fill_input_buffer (MNClientSession *session)
       bytes_read = read(session->s, buf, sizeof(buf));
     while (bytes_read < 0 && errno == EINTR);
 	  
+  if (session->callbacks->post_read)
+    session->callbacks->post_read(session, session->private);
+
   if (bytes_read <= 0)
     {
 #ifdef WITH_SSL
@@ -898,7 +907,8 @@ mn_client_session_sasl_authentication_start (MNClientSession *session,
 					     const char *service,
 					     GSList *mechanisms,
 					     const char *forced_mechanism,
-					     const char **used_mechanism)
+					     const char **used_mechanism,
+					     gboolean initial_response)
 {
   GError *err = NULL;
   int result;
@@ -981,8 +991,8 @@ mn_client_session_sasl_authentication_start (MNClientSession *session,
 	  result = sasl_client_start(session->sasl_conn,
 				     mechanisms_string->str,
 				     &interact,
-				     &session->sasl_initial_clientout,
-				     &session->sasl_initial_clientoutlen,
+				     initial_response ? &session->sasl_initial_clientout : NULL,
+				     initial_response ? &session->sasl_initial_clientoutlen : NULL,
 				     used_mechanism);
 
 	  if (result == SASL_INTERACT)
diff --git a/src/mn-client-session.h b/src/mn-client-session.h
@@ -63,6 +63,11 @@ typedef struct
 				 MNClientSessionResponse  *response,
 				 int			  result,
 				 MNClientSessionPrivate   *private);
+
+  void      (*pre_read)		(MNClientSession          *session,
+				 MNClientSessionPrivate   *private);
+  void      (*post_read)	(MNClientSession          *session,
+				 MNClientSessionPrivate   *private);
 } MNClientSessionCallbacks;
 
 gboolean mn_client_session_run (MNClientSessionState *states,
@@ -93,7 +98,8 @@ gboolean mn_client_session_sasl_authentication_start (MNClientSession *session,
 						      const char *service,
 						      GSList *mechanisms,
 						      const char *forced_mechanism,
-						      const char **used_mechanism);
+						      const char **used_mechanism,
+						      gboolean initial_response);
 int mn_client_session_sasl_authentication_step (MNClientSession *session,
 						const char *input);
 gboolean mn_client_session_sasl_authentication_done (MNClientSession *session);
diff --git a/src/mn-conf.c b/src/mn-conf.c
@@ -35,6 +35,9 @@
 #define COMBO_BOX_KEY			"mn-conf-combo-box-key"
 #define COMBO_BOX_STRING_COLUMN		"mn-conf-combo-box-string-column"
 
+#define RADIO_BUTTON_KEY		"mn-conf-radio-button-key"
+#define RADIO_BUTTON_STRING		"mn-conf-radio-button-string"
+
 /*** types *******************************************************************/
 
 typedef struct
@@ -56,6 +59,16 @@ static void mn_conf_link_combo_box_to_string_notify_cb (GConfClient *client,
 							GConfEntry *entry,
 							gpointer user_data);
 
+static void mn_conf_link_radio_button_to_string (GtkRadioButton *radio,
+						 const char *key,
+						 const char *str);
+static void mn_conf_link_radio_button_to_string_toggled_h (GtkToggleButton *toggle,
+							   gpointer user_data);
+static void mn_conf_link_radio_button_to_string_notify_cb (GConfClient *client,
+							   guint cnxn_id,
+							   GConfEntry *entry,
+							   gpointer user_data);
+
 static gboolean mn_conf_link_window_h (GtkWidget *widget,
 				       GdkEventConfigure *event,
 				       gpointer user_data);
@@ -84,9 +97,6 @@ static void mn_conf_link_entry_notify_cb (GConfClient *client,
 					  GConfEntry *entry,
 					  gpointer user_data);
 
-static void mn_conf_link_weak_notify_cb (gpointer data,
-					 GObject *former_object);
-
 static void mn_conf_startup_client_free (StartupClient *client);
 static void mn_conf_startup_clients_free (GSList *list);
 
@@ -97,6 +107,9 @@ static void mn_conf_startup_list_write (GSList *list, const char *name);
 
 static GSList *mn_conf_get_autostart_elem (GSList *list);
 
+static void mn_conf_notification_add_weak_notify_cb (gpointer data,
+						     GObject *former_object);
+
 /*** implementation **********************************************************/
 
 void
@@ -157,7 +170,6 @@ mn_conf_link (GtkWidget *widget, ...)
       const char *signal_name;
       GCallback signal_handler;
       GConfClientNotifyFunc notification_cb;
-      unsigned int notification_id;
 
       key = va_arg(args, const char *);
       g_return_if_fail(key != NULL);
@@ -214,8 +226,7 @@ mn_conf_link (GtkWidget *widget, ...)
 	g_return_if_reached();
 
       g_signal_connect_data(widget, signal_name, signal_handler, g_strdup(key), (GClosureNotify) g_free, 0);
-      notification_id = eel_gconf_notification_add(key, notification_cb, widget);
-      g_object_weak_ref(G_OBJECT(widget), mn_conf_link_weak_notify_cb, GUINT_TO_POINTER(notification_id));
+      mn_conf_notification_add(widget, key, notification_cb, widget);
 
       widget = va_arg(args, GtkWidget *);
     }
@@ -228,7 +239,6 @@ mn_conf_link_combo_box_to_string (GtkComboBox *combo,
 				  const char *key)
 {
   char *value;
-  unsigned int notification_id;
 
   g_return_if_fail(GTK_IS_COMBO_BOX(combo));
   g_return_if_fail(key != NULL);
@@ -241,8 +251,7 @@ mn_conf_link_combo_box_to_string (GtkComboBox *combo,
   g_free(value);
 
   g_signal_connect(combo, "changed", G_CALLBACK(mn_conf_link_combo_box_to_string_changed_h), NULL);
-  notification_id = eel_gconf_notification_add(key, mn_conf_link_combo_box_to_string_notify_cb, combo);
-  g_object_weak_ref(G_OBJECT(combo), mn_conf_link_weak_notify_cb, GUINT_TO_POINTER(notification_id));
+  mn_conf_notification_add(combo, key, mn_conf_link_combo_box_to_string_notify_cb, combo);
 }
 
 static void
@@ -316,6 +325,98 @@ mn_conf_link_combo_box_to_string_notify_cb (GConfClient *client,
   GDK_THREADS_LEAVE();
 }
 
+void
+mn_conf_link_radio_group_to_enum (GType enum_type,
+				  const char *key,
+				  ...)
+{
+  GEnumClass *enum_class;
+  GtkRadioButton *radio;
+  va_list args;
+
+  g_return_if_fail(key != NULL);
+
+  enum_class = g_type_class_ref(enum_type);
+  g_return_if_fail(enum_class != NULL);
+
+  va_start(args, key);
+
+  while ((radio = va_arg(args, GtkRadioButton *)))
+    {
+      int value;
+      GEnumValue *enum_value;
+
+      value = va_arg(args, int);
+
+      enum_value = g_enum_get_value(enum_class, value);
+      g_return_if_fail(enum_value != NULL);
+
+      mn_conf_link_radio_button_to_string(radio, key, enum_value->value_nick);
+    }
+
+  va_end(args);
+}
+
+static void
+mn_conf_link_radio_button_to_string (GtkRadioButton *radio,
+				     const char *key,
+				     const char *str)
+{
+  char *current_str;
+
+  g_return_if_fail(GTK_IS_RADIO_BUTTON(radio));
+  g_return_if_fail(key != NULL);
+  g_return_if_fail(str != NULL);
+
+  current_str = eel_gconf_get_string(key);
+  if (current_str)
+    {
+      if (! strcmp(current_str, str))
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio), TRUE);
+      g_free(current_str);
+    }
+  
+  g_object_set_data_full(G_OBJECT(radio), RADIO_BUTTON_KEY, g_strdup(key), g_free);
+  g_object_set_data_full(G_OBJECT(radio), RADIO_BUTTON_STRING, g_strdup(str), g_free);
+
+  g_signal_connect(radio, "toggled", G_CALLBACK(mn_conf_link_radio_button_to_string_toggled_h), NULL);
+  mn_conf_notification_add(radio, key, mn_conf_link_radio_button_to_string_notify_cb, radio);
+}
+
+static void
+mn_conf_link_radio_button_to_string_toggled_h (GtkToggleButton *toggle,
+					       gpointer user_data)
+{
+  if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toggle)))
+    {
+      const char *key = g_object_get_data(G_OBJECT(toggle), RADIO_BUTTON_KEY);
+      const char *str = g_object_get_data(G_OBJECT(toggle), RADIO_BUTTON_STRING);
+
+      eel_gconf_set_string(key, str);
+    }
+}
+
+static void
+mn_conf_link_radio_button_to_string_notify_cb (GConfClient *client,
+					       guint cnxn_id,
+					       GConfEntry *entry,
+					       gpointer user_data)
+{
+  GtkRadioButton *radio = user_data;
+  GConfValue *value = gconf_entry_get_value(entry);
+  const char *str = gconf_value_get_string(value);
+
+  if (str)
+    {
+      GDK_THREADS_ENTER();
+      
+      if (! strcmp(str, g_object_get_data(G_OBJECT(radio), RADIO_BUTTON_STRING)))
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio), TRUE);
+	
+      GDK_THREADS_LEAVE();
+    }
+}
+
 static gboolean
 mn_conf_link_window_h (GtkWidget *widget,
 		       GdkEventConfigure *event,
@@ -421,13 +522,6 @@ mn_conf_link_entry_notify_cb (GConfClient *client,
   GDK_THREADS_LEAVE();
 }
 
-static void
-mn_conf_link_weak_notify_cb (gpointer data, GObject *former_object)
-{
-  unsigned int notification_id = GPOINTER_TO_UINT(data);
-  eel_gconf_notification_remove(notification_id);
-}
-
 /*
  * The mn_conf_startup_* functions are based on code taken from
  * startup-programs.c in gnome-session, written by Owen Taylor.
@@ -616,28 +710,49 @@ mn_conf_set_autostart (gboolean autostart)
   mn_conf_startup_clients_free(clients);
 }
 
-GEnumValue *
+int
 mn_conf_get_enum_value (GType enum_type, const char *key)
 {
   GEnumClass *enum_class;
   GEnumValue *enum_value = NULL;
+  char *nick;
 
-  g_return_val_if_fail(key != NULL, NULL);
+  g_return_val_if_fail(key != NULL, 0);
 
   enum_class = g_type_class_ref(enum_type);
-  if (enum_class)
+  g_return_val_if_fail(enum_class != NULL, 0);
+
+  nick = eel_gconf_get_string(key);
+  if (nick)
     {
-      char *nick;
+      enum_value = g_enum_get_value_by_nick(enum_class, nick);
+      g_free(nick);
+    }
 
-      nick = eel_gconf_get_string(key);
-      if (nick)
-	{
-	  enum_value = g_enum_get_value_by_nick(enum_class, nick);
-	  g_free(nick);
-	}
+  g_type_class_unref(enum_class);
 
-      g_type_class_unref(enum_class);
-    }
+  return enum_value ? enum_value->value : 0;
+}
+
+void
+mn_conf_notification_add (gpointer object,
+			  const char *key,
+			  GConfClientNotifyFunc callback,
+			  gpointer user_data)
+{
+  unsigned int notification_id;
+
+  g_return_if_fail(G_IS_OBJECT(object));
+  g_return_if_fail(key != NULL);
+  g_return_if_fail(callback != NULL);
+
+  notification_id = eel_gconf_notification_add(key, callback, user_data);
+  g_object_weak_ref(G_OBJECT(object), mn_conf_notification_add_weak_notify_cb, GUINT_TO_POINTER(notification_id));
+}
 
-  return enum_value;
+static void
+mn_conf_notification_add_weak_notify_cb (gpointer data, GObject *former_object)
+{
+  unsigned int notification_id = GPOINTER_TO_UINT(data);
+  eel_gconf_notification_remove(notification_id);
 }
diff --git a/src/mn-conf.h b/src/mn-conf.h
@@ -61,6 +61,12 @@
   MN_CONF_COMMANDS_MAIL_READ_NAMESPACE "/enabled"
 #define MN_CONF_COMMANDS_MAIL_READ_COMMAND \
   MN_CONF_COMMANDS_MAIL_READ_NAMESPACE "/command"
+#define MN_CONF_COMMANDS_MAIL_READER_NAMESPACE \
+  MN_CONF_COMMANDS_NAMESPACE "/mail-reader"
+#define MN_CONF_COMMANDS_MAIL_READER_ENABLED \
+  MN_CONF_COMMANDS_MAIL_READER_NAMESPACE "/enabled"
+#define MN_CONF_COMMANDS_MAIL_READER_COMMAND \
+  MN_CONF_COMMANDS_MAIL_READER_NAMESPACE "/command"
 #define MN_CONF_COMMANDS_CLICKED_NAMESPACE \
   MN_CONF_COMMANDS_NAMESPACE "/clicked"		/* obsolete */
 #define MN_CONF_COMMANDS_CLICKED_ENABLED \
@@ -115,6 +121,10 @@
   MN_CONF_MAIL_SUMMARY_POPUP_OFFSET_NAMESPACE "/horizontal"
 #define MN_CONF_MAIL_SUMMARY_POPUP_VERTICAL_OFFSET \
   MN_CONF_MAIL_SUMMARY_POPUP_OFFSET_NAMESPACE "/vertical"
+#define MN_CONF_MAIL_SUMMARY_POPUP_ONLY_RECENT \
+  MN_CONF_MAIL_SUMMARY_POPUP_NAMESPACE "/only-recent"
+#define MN_CONF_DOUBLE_CLICK_ACTION \
+  MN_CONF_NAMESPACE "/double-click-action"
 
 void		mn_conf_init		(void);
 void		mn_conf_unset_obsolete	(void);
@@ -127,11 +137,19 @@ void		mn_conf_link		(GtkWidget	*widget,
 void		mn_conf_link_combo_box_to_string (GtkComboBox	*combo,
 						  int		string_column,
 						  const char	*key);
+void		mn_conf_link_radio_group_to_enum (GType		enum_type,
+						  const char	*key,
+						  ...);
 
 gboolean	mn_conf_get_autostart	(void);
 void		mn_conf_set_autostart	(gboolean	autostart);
 
-GEnumValue	*mn_conf_get_enum_value	(GType		enum_type,
+int		mn_conf_get_enum_value	(GType		enum_type,
 					 const char	*key);
 
+void		mn_conf_notification_add (gpointer		object,
+					  const char		*key,
+					  GConfClientNotifyFunc	callback,
+					  gpointer		user_data);
+
 #endif /* _MN_CONF_H */
diff --git a/src/mn-gmail-mailbox-private.h b/src/mn-gmail-mailbox-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #ifndef __MN_GMAIL_MAILBOX_PRIVATE_H__
 #define __MN_GMAIL_MAILBOX_PRIVATE_H__
@@ -16,9 +16,9 @@ extern "C" {
 
 #line 18 "mn-gmail-mailbox-private.h"
 struct _MNGmailMailboxPrivate {
-#line 46 "mn-gmail-mailbox.gob"
+#line 64 "mn-gmail-mailbox.gob"
 	GHashTable * cookies;
-#line 47 "mn-gmail-mailbox.gob"
+#line 65 "mn-gmail-mailbox.gob"
 	gboolean logged_in;
 #line 24 "mn-gmail-mailbox-private.h"
 };
diff --git a/src/mn-gmail-mailbox-properties-private.h b/src/mn-gmail-mailbox-properties-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #ifndef __MN_GMAIL_MAILBOX_PROPERTIES_PRIVATE_H__
 #define __MN_GMAIL_MAILBOX_PROPERTIES_PRIVATE_H__
diff --git a/src/mn-gmail-mailbox-properties.c b/src/mn-gmail-mailbox-properties.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.10) on Mon Oct 25 15:24:33 2004
+/* Generated by GOB (v2.0.11) on Sun Oct 31 18:41:21 2004
    (do not edit directly) */
 
 /* End world hunger, donate to the World Food Programme, http://www.wfp.org */
 
 #define GOB_VERSION_MAJOR 2
 #define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 10
+#define GOB_VERSION_PATCHLEVEL 11
 
 #define selfp (self->_priv)
 
@@ -167,7 +167,7 @@ mn_gmail_mailbox_properties_init (MNGmailMailboxProperties * o G_GNUC_UNUSED)
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox:Properties::init"
 	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,TYPE_SELF,MNGmailMailboxPropertiesPrivate);
 #line 52 "mn-gmail-mailbox-properties.gob"
-	o->_priv->tooltips = mn_tooltips_new();
+	o->_priv->tooltips = mn_gtk_tooltips_new();
 #line 172 "mn-gmail-mailbox-properties.c"
 }
 #undef __GOB_FUNCTION__
@@ -318,10 +318,10 @@ ___1_mn_gmail_mailbox_properties_constructor (GType type G_GNUC_UNUSED, guint n_
     gtk_size_group_add_widget(selfp->size_group, label1);
     gtk_size_group_add_widget(selfp->size_group, label2);
 
-    mn_tooltips_set_tips(selfp->tooltips,
-			 selfp->username_entry, _("Your Gmail username"),
-			 selfp->password_entry, _("Your Gmail password (if left blank, you will be prompted for the password when needed)"),
-			 NULL);
+    mn_gtk_tooltips_set_tips(selfp->tooltips,
+			     selfp->username_entry, _("Your Gmail username"),
+			     selfp->password_entry, _("Your Gmail password (if left blank, you will be prompted for the password when needed)"),
+			     NULL);
 
     mn_mailbox_properties_link_entries(GTK_ENTRY(selfp->username_entry),
 				       GTK_ENTRY(selfp->password_entry),
diff --git a/src/mn-gmail-mailbox-properties.gob b/src/mn-gmail-mailbox-properties.gob
@@ -49,7 +49,7 @@ class MN:Gmail:Mailbox:Properties from Gtk:VBox (interface MN:Mailbox:Properties
       
   private GtkWidget *username_entry;
   private GtkWidget *password_entry;
-  private GtkTooltips *tooltips = {mn_tooltips_new()} unrefwith g_object_unref;
+  private GtkTooltips *tooltips = {mn_gtk_tooltips_new()} unrefwith g_object_unref;
   
   override (G:Object) GObject *
     constructor (GType type, guint n_construct_properties, GObjectConstructParam *construct_params)
@@ -73,10 +73,10 @@ class MN:Gmail:Mailbox:Properties from Gtk:VBox (interface MN:Mailbox:Properties
     gtk_size_group_add_widget(selfp->size_group, label1);
     gtk_size_group_add_widget(selfp->size_group, label2);
 
-    mn_tooltips_set_tips(selfp->tooltips,
-			 selfp->username_entry, _("Your Gmail username"),
-			 selfp->password_entry, _("Your Gmail password (if left blank, you will be prompted for the password when needed)"),
-			 NULL);
+    mn_gtk_tooltips_set_tips(selfp->tooltips,
+			     selfp->username_entry, _("Your Gmail username"),
+			     selfp->password_entry, _("Your Gmail password (if left blank, you will be prompted for the password when needed)"),
+			     NULL);
 
     mn_mailbox_properties_link_entries(GTK_ENTRY(selfp->username_entry),
 				       GTK_ENTRY(selfp->password_entry),
diff --git a/src/mn-gmail-mailbox-properties.h b/src/mn-gmail-mailbox-properties.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-gmail-mailbox.c b/src/mn-gmail-mailbox.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.10) on Mon Oct 25 15:24:33 2004
+/* Generated by GOB (v2.0.11) on Sun Oct 31 18:41:21 2004
    (do not edit directly) */
 
 /* End world hunger, donate to the World Food Programme, http://www.wfp.org */
 
 #define GOB_VERSION_MAJOR 2
 #define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 10
+#define GOB_VERSION_PATCHLEVEL 11
 
 #define selfp (self->_priv)
 
@@ -26,17 +26,35 @@
 #include "config.h"
 #include <stdio.h>
 #include <string.h>
+#include <stdarg.h>
 #include <time.h>
 #ifdef TM_IN_SYS_TIME
 #include <sys/time.h>
 #endif
 #include <glib/gi18n.h>
+#include <eel/eel.h>
 #include "mn-mailbox-private.h"
 #include "mn-util.h"
 #include "mn-stock.h"
 #include "mn-sgml-ref.h"
 
-#line 40 "mn-gmail-mailbox.c"
+  typedef enum
+  {
+    JS_ARG_STRING,
+    JS_ARG_LIST
+  } JSArgType;
+  
+  typedef struct
+  {
+    JSArgType type;
+    union 
+    {
+      char	*string;
+      GSList	*list;
+    } value;
+  } JSArg;
+
+#line 58 "mn-gmail-mailbox.c"
 /* self casting macros */
 #define SELF(x) MN_GMAIL_MAILBOX(x)
 #define SELF_CONST(x) MN_GMAIL_MAILBOX_CONST(x)
@@ -63,12 +81,19 @@ static void mn_gmail_mailbox_dump_request (MNGmailMailbox * self, SoupMessage * 
 static void mn_gmail_mailbox_dump_request_cb (gpointer key, gpointer value, gpointer user_data) G_GNUC_UNUSED;
 static void mn_gmail_mailbox_dump_response (MNGmailMailbox * self, SoupMessage * message, const char * body) G_GNUC_UNUSED;
 static void mn_gmail_mailbox_dump_response_cb (gpointer key, gpointer value, gpointer user_data) G_GNUC_UNUSED;
-static char * mn_gmail_mailbox_get_token (const char * str, const char * pre, const char * post, gboolean include_pre, gboolean include_post) G_GNUC_UNUSED;
+static char * mn_gmail_mailbox_get_substring (const char * str, const char * pre, const char * post, gboolean include_pre, gboolean include_post) G_GNUC_UNUSED;
 static gboolean mn_gmail_mailbox_login (MNGmailMailbox * self, SoupSession * session, gboolean * authentication_failed, GError ** err) G_GNUC_UNUSED;
 static void mn_gmail_mailbox_update_cookies (MNGmailMailbox * self, SoupMessage * message) G_GNUC_UNUSED;
 static char * mn_gmail_mailbox_build_cookie (MNGmailMailbox * self) G_GNUC_UNUSED;
 static void mn_gmail_mailbox_build_cookie_cb (gpointer key, gpointer value, gpointer user_data) G_GNUC_UNUSED;
 static gboolean mn_gmail_mailbox_check (MNGmailMailbox * self, SoupSession * session, GError ** err) G_GNUC_UNUSED;
+static void mn_gmail_mailbox_append_message (MNGmailMailbox * self, GSList ** messages, JSArg * arg) G_GNUC_UNUSED;
+static gboolean mn_gmail_mailbox_js_get_arg_list (char ** str, GSList ** list) G_GNUC_UNUSED;
+static gboolean mn_gmail_mailbox_js_arg_list_scan (GSList * list, ...) G_GNUC_UNUSED;
+static void mn_gmail_mailbox_js_arg_list_free (GSList * list) G_GNUC_UNUSED;
+static JSArg * mn_gmail_mailbox_js_arg_new_string (const char * string) G_GNUC_UNUSED;
+static JSArg * mn_gmail_mailbox_js_arg_new_list (GSList * list) G_GNUC_UNUSED;
+static void mn_gmail_mailbox_js_arg_free (JSArg * arg) G_GNUC_UNUSED;
 static time_t mn_gmail_mailbox_parse_date (const char * date) G_GNUC_UNUSED;
 
 /* pointer to the class of our parent */
@@ -82,12 +107,19 @@ static MNAuthenticatedMailboxClass *parent_class = NULL;
 #define self_dump_request_cb mn_gmail_mailbox_dump_request_cb
 #define self_dump_response mn_gmail_mailbox_dump_response
 #define self_dump_response_cb mn_gmail_mailbox_dump_response_cb
-#define self_get_token mn_gmail_mailbox_get_token
+#define self_get_substring mn_gmail_mailbox_get_substring
 #define self_login mn_gmail_mailbox_login
 #define self_update_cookies mn_gmail_mailbox_update_cookies
 #define self_build_cookie mn_gmail_mailbox_build_cookie
 #define self_build_cookie_cb mn_gmail_mailbox_build_cookie_cb
 #define self_check mn_gmail_mailbox_check
+#define self_append_message mn_gmail_mailbox_append_message
+#define self_js_get_arg_list mn_gmail_mailbox_js_get_arg_list
+#define self_js_arg_list_scan mn_gmail_mailbox_js_arg_list_scan
+#define self_js_arg_list_free mn_gmail_mailbox_js_arg_list_free
+#define self_js_arg_new_string mn_gmail_mailbox_js_arg_new_string
+#define self_js_arg_new_list mn_gmail_mailbox_js_arg_new_list
+#define self_js_arg_free mn_gmail_mailbox_js_arg_free
 #define self_parse_date mn_gmail_mailbox_parse_date
 GType
 mn_gmail_mailbox_get_type (void)
@@ -140,9 +172,9 @@ ___finalize(GObject *obj_self)
 	gpointer priv G_GNUC_UNUSED = self->_priv;
 	if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-#line 46 "mn-gmail-mailbox.gob"
+#line 64 "mn-gmail-mailbox.gob"
 	if(self->_priv->cookies) { g_hash_table_destroy ((gpointer) self->_priv->cookies); self->_priv->cookies = NULL; }
-#line 146 "mn-gmail-mailbox.c"
+#line 178 "mn-gmail-mailbox.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -153,45 +185,45 @@ mn_gmail_mailbox_init (MNGmailMailbox * o G_GNUC_UNUSED)
 	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,TYPE_SELF,MNGmailMailboxPrivate);
 }
 #undef __GOB_FUNCTION__
-#line 49 "mn-gmail-mailbox.gob"
+#line 67 "mn-gmail-mailbox.gob"
 static void 
 mn_gmail_mailbox_class_init (MNGmailMailboxClass * class G_GNUC_UNUSED)
-#line 160 "mn-gmail-mailbox.c"
+#line 192 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
-
-	g_type_class_add_private(class,sizeof(MNGmailMailboxPrivate));
 	MNMailboxClass *mn_mailbox_class = (MNMailboxClass *)class;
 	MNAuthenticatedMailboxClass *mn_authenticated_mailbox_class = (MNAuthenticatedMailboxClass *)class;
 
+	g_type_class_add_private(class,sizeof(MNGmailMailboxPrivate));
+
 	parent_class = g_type_class_ref (MN_TYPE_AUTHENTICATED_MAILBOX);
 
-#line 55 "mn-gmail-mailbox.gob"
+#line 73 "mn-gmail-mailbox.gob"
 	g_object_class->constructor = ___2_mn_gmail_mailbox_constructor;
-#line 68 "mn-gmail-mailbox.gob"
+#line 86 "mn-gmail-mailbox.gob"
 	mn_mailbox_class->impl_is = ___3_mn_gmail_mailbox_impl_is;
-#line 74 "mn-gmail-mailbox.gob"
+#line 92 "mn-gmail-mailbox.gob"
 	mn_authenticated_mailbox_class->impl_authenticated_check = ___4_mn_gmail_mailbox_impl_authenticated_check;
-#line 177 "mn-gmail-mailbox.c"
+#line 209 "mn-gmail-mailbox.c"
 	g_object_class->finalize = ___finalize;
  {
-#line 50 "mn-gmail-mailbox.gob"
+#line 68 "mn-gmail-mailbox.gob"
 
     MN_MAILBOX_CLASS(class)->stock_id = MN_STOCK_GMAIL;
     MN_MAILBOX_CLASS(class)->format = "Gmail";
   
-#line 185 "mn-gmail-mailbox.c"
+#line 217 "mn-gmail-mailbox.c"
  }
 }
 #undef __GOB_FUNCTION__
 
 
 
-#line 55 "mn-gmail-mailbox.gob"
+#line 73 "mn-gmail-mailbox.gob"
 static GObject * 
 ___2_mn_gmail_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_properties, GObjectConstructParam * construct_params)
-#line 195 "mn-gmail-mailbox.c"
+#line 227 "mn-gmail-mailbox.c"
 #define PARENT_HANDLER(___type,___n_construct_properties,___construct_params) \
 	((G_OBJECT_CLASS(parent_class)->constructor)? \
 		(* G_OBJECT_CLASS(parent_class)->constructor)(___type,___n_construct_properties,___construct_params): \
@@ -199,7 +231,7 @@ ___2_mn_gmail_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_p
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::constructor"
 {
-#line 57 "mn-gmail-mailbox.gob"
+#line 75 "mn-gmail-mailbox.gob"
 	
     GObject *object;
 
@@ -210,51 +242,51 @@ ___2_mn_gmail_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_p
 
     return object;
   }}
-#line 214 "mn-gmail-mailbox.c"
+#line 246 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 68 "mn-gmail-mailbox.gob"
+#line 86 "mn-gmail-mailbox.gob"
 static gboolean 
 ___3_mn_gmail_mailbox_impl_is (MNMailbox * dummy G_GNUC_UNUSED, MNURI * uri)
-#line 221 "mn-gmail-mailbox.c"
+#line 253 "mn-gmail-mailbox.c"
 #define PARENT_HANDLER(___dummy,___uri) \
 	((MN_MAILBOX_CLASS(parent_class)->impl_is)? \
 		(* MN_MAILBOX_CLASS(parent_class)->impl_is)(___dummy,___uri): \
 		((gboolean )0))
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::impl_is"
-#line 68 "mn-gmail-mailbox.gob"
+#line 86 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (uri != NULL, (gboolean )0);
-#line 68 "mn-gmail-mailbox.gob"
+#line 86 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (MN_IS_URI (uri), (gboolean )0);
-#line 232 "mn-gmail-mailbox.c"
+#line 264 "mn-gmail-mailbox.c"
 {
-#line 70 "mn-gmail-mailbox.gob"
+#line 88 "mn-gmail-mailbox.gob"
 	
     return MN_URI_IS_GMAIL(uri);
   }}
-#line 238 "mn-gmail-mailbox.c"
+#line 270 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 74 "mn-gmail-mailbox.gob"
+#line 92 "mn-gmail-mailbox.gob"
 static MNAuthenticatedMailboxResult 
 ___4_mn_gmail_mailbox_impl_authenticated_check (MNAuthenticatedMailbox * authenticated_mailbox G_GNUC_UNUSED, GError ** err)
-#line 245 "mn-gmail-mailbox.c"
+#line 277 "mn-gmail-mailbox.c"
 #define PARENT_HANDLER(___authenticated_mailbox,___err) \
 	((MN_AUTHENTICATED_MAILBOX_CLASS(parent_class)->impl_authenticated_check)? \
 		(* MN_AUTHENTICATED_MAILBOX_CLASS(parent_class)->impl_authenticated_check)(___authenticated_mailbox,___err): \
 		((MNAuthenticatedMailboxResult )0))
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::impl_authenticated_check"
-#line 74 "mn-gmail-mailbox.gob"
+#line 92 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (authenticated_mailbox != NULL, (MNAuthenticatedMailboxResult )0);
-#line 74 "mn-gmail-mailbox.gob"
+#line 92 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (MN_IS_AUTHENTICATED_MAILBOX (authenticated_mailbox), (MNAuthenticatedMailboxResult )0);
-#line 256 "mn-gmail-mailbox.c"
+#line 288 "mn-gmail-mailbox.c"
 {
-#line 77 "mn-gmail-mailbox.gob"
+#line 95 "mn-gmail-mailbox.gob"
 	
     Self *self = SELF(authenticated_mailbox);
     SoupSession *session;
@@ -275,21 +307,21 @@ ___4_mn_gmail_mailbox_impl_authenticated_check (MNAuthenticatedMailbox * authent
 
     return result;
   }}
-#line 279 "mn-gmail-mailbox.c"
+#line 311 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 98 "mn-gmail-mailbox.gob"
+#line 116 "mn-gmail-mailbox.gob"
 static SoupUri * 
 mn_gmail_mailbox_soup_uri_new (const char * text_uri, GError ** err)
-#line 286 "mn-gmail-mailbox.c"
+#line 318 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::soup_uri_new"
-#line 98 "mn-gmail-mailbox.gob"
+#line 116 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (text_uri != NULL, (SoupUri * )0);
-#line 291 "mn-gmail-mailbox.c"
+#line 323 "mn-gmail-mailbox.c"
 {
-#line 100 "mn-gmail-mailbox.gob"
+#line 118 "mn-gmail-mailbox.gob"
 	
     SoupUri *uri;
 
@@ -299,28 +331,28 @@ mn_gmail_mailbox_soup_uri_new (const char * text_uri, GError ** err)
 
     return uri;
   }}
-#line 303 "mn-gmail-mailbox.c"
+#line 335 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 110 "mn-gmail-mailbox.gob"
+#line 128 "mn-gmail-mailbox.gob"
 static char * 
 mn_gmail_mailbox_get (MNGmailMailbox * self, SoupSession * session, const char * text_uri, GError ** err)
-#line 309 "mn-gmail-mailbox.c"
+#line 341 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::get"
-#line 110 "mn-gmail-mailbox.gob"
+#line 128 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (char * )0);
-#line 110 "mn-gmail-mailbox.gob"
+#line 128 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (MN_IS_GMAIL_MAILBOX (self), (char * )0);
-#line 110 "mn-gmail-mailbox.gob"
+#line 128 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (char * )0);
-#line 110 "mn-gmail-mailbox.gob"
+#line 128 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (SOUP_IS_SESSION (session), (char * )0);
-#line 110 "mn-gmail-mailbox.gob"
+#line 128 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (text_uri != NULL, (char * )0);
-#line 322 "mn-gmail-mailbox.c"
+#line 354 "mn-gmail-mailbox.c"
 {
-#line 115 "mn-gmail-mailbox.gob"
+#line 133 "mn-gmail-mailbox.gob"
 	
     SoupUri *uri;
     char *body;
@@ -334,28 +366,28 @@ mn_gmail_mailbox_get (MNGmailMailbox * self, SoupSession * session, const char *
 
     return body;
   }}
-#line 338 "mn-gmail-mailbox.c"
+#line 370 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 129 "mn-gmail-mailbox.gob"
+#line 147 "mn-gmail-mailbox.gob"
 static char * 
 mn_gmail_mailbox_get_from_uri (MNGmailMailbox * self, SoupSession * session, SoupUri * uri, GError ** err)
-#line 344 "mn-gmail-mailbox.c"
+#line 376 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::get_from_uri"
-#line 129 "mn-gmail-mailbox.gob"
+#line 147 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (char * )0);
-#line 129 "mn-gmail-mailbox.gob"
+#line 147 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (MN_IS_GMAIL_MAILBOX (self), (char * )0);
-#line 129 "mn-gmail-mailbox.gob"
+#line 147 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (char * )0);
-#line 129 "mn-gmail-mailbox.gob"
+#line 147 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (SOUP_IS_SESSION (session), (char * )0);
-#line 129 "mn-gmail-mailbox.gob"
+#line 147 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (uri != NULL, (char * )0);
-#line 357 "mn-gmail-mailbox.c"
+#line 389 "mn-gmail-mailbox.c"
 {
-#line 134 "mn-gmail-mailbox.gob"
+#line 152 "mn-gmail-mailbox.gob"
 	
     SoupMessage *message;
     char *cookie;
@@ -387,26 +419,26 @@ mn_gmail_mailbox_get_from_uri (MNGmailMailbox * self, SoupSession * session, Sou
     
     return body;
   }}
-#line 391 "mn-gmail-mailbox.c"
+#line 423 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 166 "mn-gmail-mailbox.gob"
+#line 184 "mn-gmail-mailbox.gob"
 static void 
 mn_gmail_mailbox_dump_request (MNGmailMailbox * self, SoupMessage * message)
-#line 397 "mn-gmail-mailbox.c"
+#line 429 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::dump_request"
-#line 166 "mn-gmail-mailbox.gob"
+#line 184 "mn-gmail-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 166 "mn-gmail-mailbox.gob"
+#line 184 "mn-gmail-mailbox.gob"
 	g_return_if_fail (MN_IS_GMAIL_MAILBOX (self));
-#line 166 "mn-gmail-mailbox.gob"
+#line 184 "mn-gmail-mailbox.gob"
 	g_return_if_fail (message != NULL);
-#line 166 "mn-gmail-mailbox.gob"
+#line 184 "mn-gmail-mailbox.gob"
 	g_return_if_fail (SOUP_IS_MESSAGE (message));
-#line 408 "mn-gmail-mailbox.c"
+#line 440 "mn-gmail-mailbox.c"
 {
-#line 168 "mn-gmail-mailbox.gob"
+#line 186 "mn-gmail-mailbox.gob"
 	
     const SoupUri *suri;
     char *uri;
@@ -418,24 +450,24 @@ mn_gmail_mailbox_dump_request (MNGmailMailbox * self, SoupMessage * message)
 
     soup_message_foreach_header(message->request_headers, self_dump_request_cb, self);
   }}
-#line 422 "mn-gmail-mailbox.c"
+#line 454 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 180 "mn-gmail-mailbox.gob"
+#line 198 "mn-gmail-mailbox.gob"
 static void 
 mn_gmail_mailbox_dump_request_cb (gpointer key, gpointer value, gpointer user_data)
-#line 428 "mn-gmail-mailbox.c"
+#line 460 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::dump_request_cb"
-#line 180 "mn-gmail-mailbox.gob"
+#line 198 "mn-gmail-mailbox.gob"
 	g_return_if_fail (key != NULL);
-#line 180 "mn-gmail-mailbox.gob"
+#line 198 "mn-gmail-mailbox.gob"
 	g_return_if_fail (value != NULL);
-#line 180 "mn-gmail-mailbox.gob"
+#line 198 "mn-gmail-mailbox.gob"
 	g_return_if_fail (user_data != NULL);
-#line 437 "mn-gmail-mailbox.c"
+#line 469 "mn-gmail-mailbox.c"
 {
-#line 184 "mn-gmail-mailbox.gob"
+#line 202 "mn-gmail-mailbox.gob"
 	
     Self *self = user_data;
     const char *header_name = key;
@@ -443,28 +475,28 @@ mn_gmail_mailbox_dump_request_cb (gpointer key, gpointer value, gpointer user_da
 
     mn_mailbox_notice(MN_MAILBOX(self), "> %s: %s", header_name, header_value);
   }}
-#line 447 "mn-gmail-mailbox.c"
+#line 479 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 192 "mn-gmail-mailbox.gob"
+#line 210 "mn-gmail-mailbox.gob"
 static void 
 mn_gmail_mailbox_dump_response (MNGmailMailbox * self, SoupMessage * message, const char * body)
-#line 453 "mn-gmail-mailbox.c"
+#line 485 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::dump_response"
-#line 192 "mn-gmail-mailbox.gob"
+#line 210 "mn-gmail-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 192 "mn-gmail-mailbox.gob"
+#line 210 "mn-gmail-mailbox.gob"
 	g_return_if_fail (MN_IS_GMAIL_MAILBOX (self));
-#line 192 "mn-gmail-mailbox.gob"
+#line 210 "mn-gmail-mailbox.gob"
 	g_return_if_fail (message != NULL);
-#line 192 "mn-gmail-mailbox.gob"
+#line 210 "mn-gmail-mailbox.gob"
 	g_return_if_fail (SOUP_IS_MESSAGE (message));
-#line 192 "mn-gmail-mailbox.gob"
+#line 210 "mn-gmail-mailbox.gob"
 	g_return_if_fail (body != NULL);
-#line 466 "mn-gmail-mailbox.c"
+#line 498 "mn-gmail-mailbox.c"
 {
-#line 196 "mn-gmail-mailbox.gob"
+#line 214 "mn-gmail-mailbox.gob"
 	
     char **lines;
     int i;
@@ -476,24 +508,24 @@ mn_gmail_mailbox_dump_response (MNGmailMailbox * self, SoupMessage * message, co
       mn_mailbox_notice(MN_MAILBOX(self), "< %s", lines[i]);
     g_strfreev(lines);
   }}
-#line 480 "mn-gmail-mailbox.c"
+#line 512 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 208 "mn-gmail-mailbox.gob"
+#line 226 "mn-gmail-mailbox.gob"
 static void 
 mn_gmail_mailbox_dump_response_cb (gpointer key, gpointer value, gpointer user_data)
-#line 486 "mn-gmail-mailbox.c"
+#line 518 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::dump_response_cb"
-#line 208 "mn-gmail-mailbox.gob"
+#line 226 "mn-gmail-mailbox.gob"
 	g_return_if_fail (key != NULL);
-#line 208 "mn-gmail-mailbox.gob"
+#line 226 "mn-gmail-mailbox.gob"
 	g_return_if_fail (value != NULL);
-#line 208 "mn-gmail-mailbox.gob"
+#line 226 "mn-gmail-mailbox.gob"
 	g_return_if_fail (user_data != NULL);
-#line 495 "mn-gmail-mailbox.c"
+#line 527 "mn-gmail-mailbox.c"
 {
-#line 212 "mn-gmail-mailbox.gob"
+#line 230 "mn-gmail-mailbox.gob"
 	
     Self *self = user_data;
     const char *header_name = key;
@@ -501,39 +533,39 @@ mn_gmail_mailbox_dump_response_cb (gpointer key, gpointer value, gpointer user_d
 
     mn_mailbox_notice(MN_MAILBOX(self), "< %s: %s", header_name, header_value);
   }}
-#line 505 "mn-gmail-mailbox.c"
+#line 537 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 
 /**
- * mn_gmail_mailbox_get_token:
+ * mn_gmail_mailbox_get_substring:
  * @str: the string to search
- * @pre: the start of the token
- * @post: the end of the token
+ * @pre: the start of the substring
+ * @post: the end of the substring
  * @include_pre: whether to include @pre in the result or not
  * @include_post: whether to include @post in the result or not
  *
- * Gets the first token of @str included between @pre and @post.
+ * Gets the first substring of @str included between @pre and @post.
  *
- * Return value: a newly allocated string containing the token or
- *               %NULL if not found.
+ * Return value: a newly allocated string containing the substring
+ *               or %NULL if not found.
  **/
-#line 233 "mn-gmail-mailbox.gob"
+#line 251 "mn-gmail-mailbox.gob"
 static char * 
-mn_gmail_mailbox_get_token (const char * str, const char * pre, const char * post, gboolean include_pre, gboolean include_post)
-#line 524 "mn-gmail-mailbox.c"
+mn_gmail_mailbox_get_substring (const char * str, const char * pre, const char * post, gboolean include_pre, gboolean include_post)
+#line 556 "mn-gmail-mailbox.c"
 {
-#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::get_token"
-#line 233 "mn-gmail-mailbox.gob"
+#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::get_substring"
+#line 251 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (str != NULL, (char * )0);
-#line 233 "mn-gmail-mailbox.gob"
+#line 251 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (pre != NULL, (char * )0);
-#line 233 "mn-gmail-mailbox.gob"
+#line 251 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (post != NULL, (char * )0);
-#line 533 "mn-gmail-mailbox.c"
+#line 565 "mn-gmail-mailbox.c"
 {
-#line 239 "mn-gmail-mailbox.gob"
+#line 257 "mn-gmail-mailbox.gob"
 	
-    char *token = NULL;
+    char *sub = NULL;
     char *pre_loc;
     
     pre_loc = strstr(str, pre);
@@ -549,34 +581,34 @@ mn_gmail_mailbox_get_token (const char * str, const char * pre, const char * pos
 	    char *start = include_pre ? pre_loc : after_pre_loc;
 	    char *end = include_post ? post_loc + strlen(post) : post_loc;
 	    
-	    token = g_strndup(start, end - start);
+	    sub = g_strndup(start, end - start);
 	  }
       }
     
-    return token;
+    return sub;
   }}
-#line 559 "mn-gmail-mailbox.c"
+#line 591 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 263 "mn-gmail-mailbox.gob"
+#line 281 "mn-gmail-mailbox.gob"
 static gboolean 
 mn_gmail_mailbox_login (MNGmailMailbox * self, SoupSession * session, gboolean * authentication_failed, GError ** err)
-#line 565 "mn-gmail-mailbox.c"
+#line 597 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::login"
-#line 263 "mn-gmail-mailbox.gob"
+#line 281 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 263 "mn-gmail-mailbox.gob"
+#line 281 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (MN_IS_GMAIL_MAILBOX (self), (gboolean )0);
-#line 263 "mn-gmail-mailbox.gob"
+#line 281 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (gboolean )0);
-#line 263 "mn-gmail-mailbox.gob"
+#line 281 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (SOUP_IS_SESSION (session), (gboolean )0);
-#line 263 "mn-gmail-mailbox.gob"
+#line 281 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (authentication_failed != NULL, (gboolean )0);
-#line 578 "mn-gmail-mailbox.c"
+#line 610 "mn-gmail-mailbox.c"
 {
-#line 268 "mn-gmail-mailbox.gob"
+#line 286 "mn-gmail-mailbox.gob"
 	
     char *text_uri;
     char *escaped_username;
@@ -609,7 +641,7 @@ mn_gmail_mailbox_login (MNGmailMailbox * self, SoupSession * session, gboolean *
     if (! body)
       return FALSE;
 
-    next_location = self_get_token(body, "top.location = \"", "\"", FALSE, FALSE);
+    next_location = self_get_substring(body, "top.location = \"", "\"", FALSE, FALSE);
     g_free(body);
 
     if (! next_location)
@@ -651,7 +683,7 @@ mn_gmail_mailbox_login (MNGmailMailbox * self, SoupSession * session, gboolean *
     if (! body)
       return FALSE;
 
-    next_location = self_get_token(body, "location.replace(\"", "\")", FALSE, FALSE);
+    next_location = self_get_substring(body, "location.replace(\"", "\")", FALSE, FALSE);
     g_free(body);
 
     if (! next_location)
@@ -670,26 +702,26 @@ mn_gmail_mailbox_login (MNGmailMailbox * self, SoupSession * session, gboolean *
     g_set_error(err, 0, 0, _("login failed"));
     return FALSE;
   }}
-#line 674 "mn-gmail-mailbox.c"
+#line 706 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 362 "mn-gmail-mailbox.gob"
+#line 380 "mn-gmail-mailbox.gob"
 static void 
 mn_gmail_mailbox_update_cookies (MNGmailMailbox * self, SoupMessage * message)
-#line 680 "mn-gmail-mailbox.c"
+#line 712 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::update_cookies"
-#line 362 "mn-gmail-mailbox.gob"
+#line 380 "mn-gmail-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 362 "mn-gmail-mailbox.gob"
+#line 380 "mn-gmail-mailbox.gob"
 	g_return_if_fail (MN_IS_GMAIL_MAILBOX (self));
-#line 362 "mn-gmail-mailbox.gob"
+#line 380 "mn-gmail-mailbox.gob"
 	g_return_if_fail (message != NULL);
-#line 362 "mn-gmail-mailbox.gob"
+#line 380 "mn-gmail-mailbox.gob"
 	g_return_if_fail (SOUP_IS_MESSAGE (message));
-#line 691 "mn-gmail-mailbox.c"
+#line 723 "mn-gmail-mailbox.c"
 {
-#line 364 "mn-gmail-mailbox.gob"
+#line 382 "mn-gmail-mailbox.gob"
 	
     const GSList *set_cookie_headers;
     const GSList *l;
@@ -718,22 +750,22 @@ mn_gmail_mailbox_update_cookies (MNGmailMailbox * self, SoupMessage * message)
 	  }
       }
   }}
-#line 722 "mn-gmail-mailbox.c"
+#line 754 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 393 "mn-gmail-mailbox.gob"
+#line 411 "mn-gmail-mailbox.gob"
 static char * 
 mn_gmail_mailbox_build_cookie (MNGmailMailbox * self)
-#line 728 "mn-gmail-mailbox.c"
+#line 760 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::build_cookie"
-#line 393 "mn-gmail-mailbox.gob"
+#line 411 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (char * )0);
-#line 393 "mn-gmail-mailbox.gob"
+#line 411 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (MN_IS_GMAIL_MAILBOX (self), (char * )0);
-#line 735 "mn-gmail-mailbox.c"
+#line 767 "mn-gmail-mailbox.c"
 {
-#line 395 "mn-gmail-mailbox.gob"
+#line 413 "mn-gmail-mailbox.gob"
 	
     GString *cookie;
     char *str;
@@ -751,17 +783,17 @@ mn_gmail_mailbox_build_cookie (MNGmailMailbox * self)
 
     return str;
   }}
-#line 755 "mn-gmail-mailbox.c"
+#line 787 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 413 "mn-gmail-mailbox.gob"
+#line 431 "mn-gmail-mailbox.gob"
 static void 
 mn_gmail_mailbox_build_cookie_cb (gpointer key, gpointer value, gpointer user_data)
-#line 761 "mn-gmail-mailbox.c"
+#line 793 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::build_cookie_cb"
 {
-#line 415 "mn-gmail-mailbox.gob"
+#line 433 "mn-gmail-mailbox.gob"
 	
     GString *cookie = user_data;
 
@@ -770,29 +802,29 @@ mn_gmail_mailbox_build_cookie_cb (gpointer key, gpointer value, gpointer user_da
 
     g_string_append_printf(cookie, "%s=%s", (const char *) key, (const char *) value);
   }}
-#line 774 "mn-gmail-mailbox.c"
+#line 806 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 424 "mn-gmail-mailbox.gob"
+#line 442 "mn-gmail-mailbox.gob"
 static gboolean 
 mn_gmail_mailbox_check (MNGmailMailbox * self, SoupSession * session, GError ** err)
-#line 780 "mn-gmail-mailbox.c"
+#line 812 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::check"
-#line 424 "mn-gmail-mailbox.gob"
+#line 442 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 424 "mn-gmail-mailbox.gob"
+#line 442 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (MN_IS_GMAIL_MAILBOX (self), (gboolean )0);
-#line 424 "mn-gmail-mailbox.gob"
+#line 442 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (gboolean )0);
-#line 424 "mn-gmail-mailbox.gob"
+#line 442 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (SOUP_IS_SESSION (session), (gboolean )0);
-#line 791 "mn-gmail-mailbox.c"
+#line 823 "mn-gmail-mailbox.c"
 {
-#line 426 "mn-gmail-mailbox.gob"
+#line 444 "mn-gmail-mailbox.gob"
 	
     char *body;
-    char *results;
+    char *work;
     gboolean status = FALSE;
 
     g_return_val_if_fail(selfp->logged_in == TRUE, FALSE);
@@ -803,86 +835,29 @@ mn_gmail_mailbox_check (MNGmailMailbox * self, SoupSession * session, GError ** 
     if (! body)
       return FALSE;
 
-    results = strstr(body, "Search results for: is:unread\",\"");
-    if (results)
+    work = strstr(body, "Search results for: is:unread\",\"");
+    if (work)
       {
 	GSList *messages = NULL;
-	char *p = strstr(results + 32, ",1,");
 
-	while (p)
+	work += 32;
+
+	while ((work = strstr(work, "D([")))
 	  {
-	    char *inbox_marker;
-	    char *next_p;
+	    GSList *arg_list;
 
-	    /*
-	     * FIXME: we should parse the list instead of using field
-	     * separator matching (this breaks if a separator is
-	     * present in a field value).
-	     */
+	    work += 2;
+	    if (self_js_get_arg_list(&work, &arg_list) && arg_list)
+	      {
+		GSList *l;
 
-	    p += 3;		/* skip ,1, */
-	    inbox_marker = strstr(p, ",[\"^i\"");
-	    next_p = strstr(p, ",1,");
+		MN_LIST_FOREACH(l, arg_list->next)
+		  self_append_message(self, &messages, l->data);
 
-	    if (inbox_marker && (! next_p || inbox_marker < next_p)) /* msg from inbox */
-	      {
-		char *date;
-		char *sender_email;
-		char *sender_name;
-		char *subject;
-
-		time_t sent_time = 0;
-		char *from = NULL;
-		char *expanded_subject = NULL;
-
-		date = self_get_token(p, "\\<b\\>", "\\</b\\>", FALSE, FALSE);
-		sender_email = self_get_token(p, "<span id=\\'_user_", "\\'", FALSE, FALSE);
-		sender_name = self_get_token(p, "\\'\\>\\<b\\>", "\\</b\\>", FALSE, FALSE);
-		subject = self_get_token(p, ";\",\"\\<b\\>", "\\</b\\>", FALSE, FALSE);
-
-		if (date)
-		  {
-		    sent_time = self_parse_date(date);
-		    g_free(date);
-		  }
-		
-		if (sender_name && sender_email)
-		  {
-		    char *tmp;
-		    
-		    tmp = g_strdup_printf("%s <%s>", sender_name, sender_email);
-		    from = mn_sgml_ref_expand(tmp);
-		    g_free(tmp);
-		  }
-		else if (sender_name)
-		  from = mn_sgml_ref_expand(sender_name);
-		else if (sender_email)
-		  from = mn_sgml_ref_expand(sender_email);
-		
-		g_free(sender_email);
-		g_free(sender_name);
-		
-		if (subject)
-		  {
-		    if (strcmp(subject, "(no subject)"))
-		      expanded_subject = mn_sgml_ref_expand(subject);
-		    g_free(subject);
-		  }
-	    
-		messages = g_slist_append(messages, mn_message_new(MN_MAILBOX(self)->uri,
-								   NULL,
-								   sent_time,
-								   NULL,
-								   from,
-								   expanded_subject));
-		
-		g_free(from);
-		g_free(expanded_subject);
+		self_js_arg_list_free(arg_list);
 	      }
-	    
-	    p = next_p;
 	  }
-
+	
 	GDK_THREADS_ENTER();
 	mn_mailbox_set_has_new(MN_MAILBOX(self), messages != NULL);
 	mn_mailbox_set_messages(MN_MAILBOX(self), messages);
@@ -899,20 +874,380 @@ mn_gmail_mailbox_check (MNGmailMailbox * self, SoupSession * session, GError ** 
 
     return status;
   }}
-#line 903 "mn-gmail-mailbox.c"
+#line 878 "mn-gmail-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 497 "mn-gmail-mailbox.gob"
+static void 
+mn_gmail_mailbox_append_message (MNGmailMailbox * self, GSList ** messages, JSArg * arg)
+#line 884 "mn-gmail-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::append_message"
+#line 497 "mn-gmail-mailbox.gob"
+	g_return_if_fail (self != NULL);
+#line 497 "mn-gmail-mailbox.gob"
+	g_return_if_fail (MN_IS_GMAIL_MAILBOX (self));
+#line 497 "mn-gmail-mailbox.gob"
+	g_return_if_fail (messages != NULL);
+#line 497 "mn-gmail-mailbox.gob"
+	g_return_if_fail (arg != NULL);
+#line 895 "mn-gmail-mailbox.c"
+{
+#line 501 "mn-gmail-mailbox.gob"
+	
+    char *date_field;
+    char *sender_field;
+    char *subject_field;
+    GSList *labels_list;
+    GSList *l;
+    gboolean in_inbox = FALSE;
+
+    char *date;
+    char *sender_email;
+    char *sender_name;
+    char *subject;
+
+    time_t sent_time = 0;
+    char *from = NULL;
+    char *expanded_subject = NULL;
+
+    if (arg->type != JS_ARG_LIST
+	|| ! self_js_arg_list_scan(arg->value.list,
+				   3, JS_ARG_STRING, &date_field,
+				   4, JS_ARG_STRING, &sender_field,
+				   6, JS_ARG_STRING, &subject_field,
+				   8, JS_ARG_LIST, &labels_list,
+				   -1))
+      return;
+				  
+    MN_LIST_FOREACH(l, labels_list)
+      {
+	JSArg *label = l->data;
+
+	if (label->type == JS_ARG_STRING && ! strcmp(label->value.string, "^i"))
+	  {
+	    in_inbox = TRUE;
+	    break;
+	  }
+      }
+
+    if (! in_inbox)
+      return;
+    
+    date = self_get_substring(date_field, "<b>", "</b>", FALSE, FALSE);
+    sender_email = self_get_substring(sender_field, "<span id='_user_", "'", FALSE, FALSE);
+    sender_name = self_get_substring(sender_field, "'><b>", "</b>", FALSE, FALSE);
+    subject = self_get_substring(subject_field, "<b>", "</b>", FALSE, FALSE);
+		    
+    if (date)
+      {
+	sent_time = self_parse_date(date);
+	g_free(date);
+      }
+    
+    if (sender_name && sender_email)
+      {
+	char *tmp;
+	
+	tmp = g_strdup_printf("%s <%s>", sender_name, sender_email);
+	from = mn_sgml_ref_expand(tmp);
+	g_free(tmp);
+      }
+    else if (sender_name)
+      from = mn_sgml_ref_expand(sender_name);
+    else if (sender_email)
+      from = mn_sgml_ref_expand(sender_email);
+    
+    g_free(sender_email);
+    g_free(sender_name);
+    
+    if (subject)
+      {
+	if (strcmp(subject, "(no subject)"))
+	  expanded_subject = mn_sgml_ref_expand(subject);
+	g_free(subject);
+      }
+    
+    *messages = g_slist_append(*messages, mn_message_new(MN_MAILBOX(self)->uri,
+							 NULL,
+							 sent_time,
+							 NULL,
+							 from,
+							 expanded_subject));
+    
+    g_free(from);
+    g_free(expanded_subject);
+  }}
+#line 982 "mn-gmail-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 586 "mn-gmail-mailbox.gob"
+static gboolean 
+mn_gmail_mailbox_js_get_arg_list (char ** str, GSList ** list)
+#line 988 "mn-gmail-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::js_get_arg_list"
+#line 586 "mn-gmail-mailbox.gob"
+	g_return_val_if_fail (str != NULL, (gboolean )0);
+#line 586 "mn-gmail-mailbox.gob"
+	g_return_val_if_fail (list != NULL, (gboolean )0);
+#line 995 "mn-gmail-mailbox.c"
+{
+#line 588 "mn-gmail-mailbox.gob"
+	
+    GSList *our_list = NULL;
+    gboolean done = FALSE;
+    gboolean in_literal = FALSE;	/* a string enclosed in double quotes */
+    gboolean quoted = FALSE;		/* the next character is quoted with a backslash */
+    JSArg *arg = NULL;
+    GString *string;
+
+    g_return_val_if_fail(*str != NULL, FALSE);
+    g_return_val_if_fail(**str == '[', FALSE);
+
+    (*str)++;			/* skip the initial open bracket */
+    string = g_string_new(NULL);
+
+    while (**str && ! done)
+      {
+	gboolean next = TRUE;
+
+	if (in_literal)
+	  switch (**str)
+	    {
+	    case '\\':
+	      quoted = TRUE;
+	      break;
+
+	    case '"':
+	      if (! quoted)
+		{
+		  in_literal = FALSE;
+		  break;
+		}
+	      /* else pass through */
+	      
+	    default:
+	      quoted = FALSE;
+	      g_string_append_c(string, **str);
+	    }
+	else
+	  switch (**str)
+	    {
+	    case '[':
+	      {
+		GSList *sub_list;
+
+		if (arg || ! self_js_get_arg_list(str, &sub_list))
+		  goto end;	/* parse error */
+
+		arg = self_js_arg_new_list(sub_list);
+		next = FALSE;
+		break;
+	      }
+
+	    case ']':
+	      done = TRUE;
+	      /* fall through */
+	    
+	    case ',':
+	      if (! arg)
+		arg = self_js_arg_new_string(string->str);
+	      
+	      our_list = g_slist_append(our_list, arg);
+
+	      g_string_truncate(string, 0);
+	      arg = NULL;
+	      break;
+
+	    case '"':
+	      in_literal = TRUE;
+	      break;
+	      
+	    default:
+	      g_string_append_c(string, **str);
+	    }
+
+	if (next)
+	  (*str)++;
+      }
+
+  end:
+    if (arg)
+      self_js_arg_free(arg);
+    g_string_free(string, TRUE);
+
+    if (done)
+      {
+	*list = our_list;
+	return TRUE;
+      }
+    else
+      {
+	self_js_arg_list_free(our_list);
+	return FALSE;
+      }
+  }}
+#line 1092 "mn-gmail-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 683 "mn-gmail-mailbox.gob"
+static gboolean 
+mn_gmail_mailbox_js_arg_list_scan (GSList * list, ...)
+#line 1098 "mn-gmail-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::js_arg_list_scan"
+{
+#line 685 "mn-gmail-mailbox.gob"
+	
+    va_list args;
+    int position;
+    gboolean status = TRUE;
+
+    va_start(args, list);
+
+    while ((position = va_arg(args, int)) != -1)
+      {
+	JSArgType type = va_arg(args, JSArgType);
+	JSArg *arg = g_slist_nth_data(list, position);
+	
+	if (! arg)
+	  {
+	    status = FALSE;
+	    break;
+	  }
+
+	switch (type)
+	  {
+	  case JS_ARG_STRING:
+	    {
+	      char **str = va_arg(args, char **);
+	      g_return_val_if_fail(str != NULL, FALSE);
+
+	      *str = arg->value.string;
+	      break;
+	    }
+
+	  case JS_ARG_LIST:
+	    {
+	      GSList **elem_list = va_arg(args, GSList **);
+	      g_return_val_if_fail(elem_list != NULL, FALSE);
+
+	      *elem_list = arg->value.list;
+	      break;
+	    }
+
+	  default:
+	    g_return_val_if_reached(FALSE);
+	  }
+      }
+
+    va_end(args);
+
+    return status;
+  }}
+#line 1150 "mn-gmail-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 733 "mn-gmail-mailbox.gob"
+static void 
+mn_gmail_mailbox_js_arg_list_free (GSList * list)
+#line 1156 "mn-gmail-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::js_arg_list_free"
+{
+#line 735 "mn-gmail-mailbox.gob"
+	
+    eel_g_slist_free_deep_custom(list, (GFunc) self_js_arg_free, NULL);
+  }}
+#line 1164 "mn-gmail-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 739 "mn-gmail-mailbox.gob"
+static JSArg * 
+mn_gmail_mailbox_js_arg_new_string (const char * string)
+#line 1170 "mn-gmail-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::js_arg_new_string"
+#line 739 "mn-gmail-mailbox.gob"
+	g_return_val_if_fail (string != NULL, (JSArg * )0);
+#line 1175 "mn-gmail-mailbox.c"
+{
+#line 741 "mn-gmail-mailbox.gob"
+	
+    JSArg *arg;
+
+    arg = g_new(JSArg, 1);
+    arg->type = JS_ARG_STRING;
+    arg->value.string = g_strdup(string);
+
+    return arg;
+  }}
+#line 1187 "mn-gmail-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 751 "mn-gmail-mailbox.gob"
+static JSArg * 
+mn_gmail_mailbox_js_arg_new_list (GSList * list)
+#line 1193 "mn-gmail-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::js_arg_new_list"
+{
+#line 753 "mn-gmail-mailbox.gob"
+	
+    JSArg *arg;
+
+    arg = g_new(JSArg, 1);
+    arg->type = JS_ARG_LIST;
+    arg->value.list = list;
+
+    return arg;
+  }}
+#line 1207 "mn-gmail-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 763 "mn-gmail-mailbox.gob"
+static void 
+mn_gmail_mailbox_js_arg_free (JSArg * arg)
+#line 1213 "mn-gmail-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::js_arg_free"
+#line 763 "mn-gmail-mailbox.gob"
+	g_return_if_fail (arg != NULL);
+#line 1218 "mn-gmail-mailbox.c"
+{
+#line 765 "mn-gmail-mailbox.gob"
+	
+    switch (arg->type)
+      {
+      case JS_ARG_STRING:
+	g_free(arg->value.string);
+	break;
+
+      case JS_ARG_LIST:
+	self_js_arg_list_free(arg->value.list);
+	break;
+
+      default:
+	g_return_if_reached();
+      }
+
+    g_free(arg);
+  }}
+#line 1238 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 536 "mn-gmail-mailbox.gob"
+#line 783 "mn-gmail-mailbox.gob"
 static time_t 
 mn_gmail_mailbox_parse_date (const char * date)
-#line 909 "mn-gmail-mailbox.c"
+#line 1244 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::parse_date"
-#line 536 "mn-gmail-mailbox.gob"
+#line 783 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (date != NULL, (time_t )0);
-#line 914 "mn-gmail-mailbox.c"
+#line 1249 "mn-gmail-mailbox.c"
 {
-#line 538 "mn-gmail-mailbox.gob"
+#line 785 "mn-gmail-mailbox.gob"
 	
     time_t t = 0;
 #ifdef HAVE_TIMEGM
@@ -966,5 +1301,5 @@ mn_gmail_mailbox_parse_date (const char * date)
 
     return t;
   }}
-#line 970 "mn-gmail-mailbox.c"
+#line 1305 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-gmail-mailbox.gob b/src/mn-gmail-mailbox.gob
@@ -30,15 +30,33 @@ requires 2.0.10
 #include "config.h"
 #include <stdio.h>
 #include <string.h>
+#include <stdarg.h>
 #include <time.h>
 #ifdef TM_IN_SYS_TIME
 #include <sys/time.h>
 #endif
 #include <glib/gi18n.h>
+#include <eel/eel.h>
 #include "mn-mailbox-private.h"
 #include "mn-util.h"
 #include "mn-stock.h"
 #include "mn-sgml-ref.h"
+
+  typedef enum
+  {
+    JS_ARG_STRING,
+    JS_ARG_LIST
+  } JSArgType;
+  
+  typedef struct
+  {
+    JSArgType type;
+    union 
+    {
+      char	*string;
+      GSList	*list;
+    } value;
+  } JSArg;
 %}
 
 class MN:Gmail:Mailbox from MN:Authenticated:Mailbox
@@ -218,26 +236,26 @@ class MN:Gmail:Mailbox from MN:Authenticated:Mailbox
   }
 
   /**
-   * get_token:
+   * get_substring:
    * @str: the string to search
-   * @pre: the start of the token
-   * @post: the end of the token
+   * @pre: the start of the substring
+   * @post: the end of the substring
    * @include_pre: whether to include @pre in the result or not
    * @include_post: whether to include @post in the result or not
    *
-   * Gets the first token of @str included between @pre and @post.
+   * Gets the first substring of @str included between @pre and @post.
    *
-   * Return value: a newly allocated string containing the token or
-   *               %NULL if not found.
+   * Return value: a newly allocated string containing the substring
+   *               or %NULL if not found.
    **/
   private char *
-    get_token (const char *str (check null),
-	       const char *pre (check null),
-	       const char *post (check null),
-	       gboolean include_pre,
-	       gboolean include_post)
+    get_substring (const char *str (check null),
+		   const char *pre (check null),
+		   const char *post (check null),
+		   gboolean include_pre,
+		   gboolean include_post)
   {
-    char *token = NULL;
+    char *sub = NULL;
     char *pre_loc;
     
     pre_loc = strstr(str, pre);
@@ -253,11 +271,11 @@ class MN:Gmail:Mailbox from MN:Authenticated:Mailbox
 	    char *start = include_pre ? pre_loc : after_pre_loc;
 	    char *end = include_post ? post_loc + strlen(post) : post_loc;
 	    
-	    token = g_strndup(start, end - start);
+	    sub = g_strndup(start, end - start);
 	  }
       }
     
-    return token;
+    return sub;
   }
 
   private gboolean
@@ -297,7 +315,7 @@ class MN:Gmail:Mailbox from MN:Authenticated:Mailbox
     if (! body)
       return FALSE;
 
-    next_location = self_get_token(body, "top.location = \"", "\"", FALSE, FALSE);
+    next_location = self_get_substring(body, "top.location = \"", "\"", FALSE, FALSE);
     g_free(body);
 
     if (! next_location)
@@ -339,7 +357,7 @@ class MN:Gmail:Mailbox from MN:Authenticated:Mailbox
     if (! body)
       return FALSE;
 
-    next_location = self_get_token(body, "location.replace(\"", "\")", FALSE, FALSE);
+    next_location = self_get_substring(body, "location.replace(\"", "\")", FALSE, FALSE);
     g_free(body);
 
     if (! next_location)
@@ -425,7 +443,7 @@ class MN:Gmail:Mailbox from MN:Authenticated:Mailbox
     check (self, Soup:Session *session (check null type), GError **err)
   {
     char *body;
-    char *results;
+    char *work;
     gboolean status = FALSE;
 
     g_return_val_if_fail(selfp->logged_in == TRUE, FALSE);
@@ -436,86 +454,29 @@ class MN:Gmail:Mailbox from MN:Authenticated:Mailbox
     if (! body)
       return FALSE;
 
-    results = strstr(body, "Search results for: is:unread\",\"");
-    if (results)
+    work = strstr(body, "Search results for: is:unread\",\"");
+    if (work)
       {
 	GSList *messages = NULL;
-	char *p = strstr(results + 32, ",1,");
 
-	while (p)
+	work += 32;
+
+	while ((work = strstr(work, "D([")))
 	  {
-	    char *inbox_marker;
-	    char *next_p;
+	    GSList *arg_list;
 
-	    /*
-	     * FIXME: we should parse the list instead of using field
-	     * separator matching (this breaks if a separator is
-	     * present in a field value).
-	     */
+	    work += 2;
+	    if (self_js_get_arg_list(&work, &arg_list) && arg_list)
+	      {
+		GSList *l;
 
-	    p += 3;		/* skip ,1, */
-	    inbox_marker = strstr(p, ",[\"^i\"");
-	    next_p = strstr(p, ",1,");
+		MN_LIST_FOREACH(l, arg_list->next)
+		  self_append_message(self, &messages, l->data);
 
-	    if (inbox_marker && (! next_p || inbox_marker < next_p)) /* msg from inbox */
-	      {
-		char *date;
-		char *sender_email;
-		char *sender_name;
-		char *subject;
-
-		time_t sent_time = 0;
-		char *from = NULL;
-		char *expanded_subject = NULL;
-
-		date = self_get_token(p, "\\<b\\>", "\\</b\\>", FALSE, FALSE);
-		sender_email = self_get_token(p, "<span id=\\'_user_", "\\'", FALSE, FALSE);
-		sender_name = self_get_token(p, "\\'\\>\\<b\\>", "\\</b\\>", FALSE, FALSE);
-		subject = self_get_token(p, ";\",\"\\<b\\>", "\\</b\\>", FALSE, FALSE);
-
-		if (date)
-		  {
-		    sent_time = self_parse_date(date);
-		    g_free(date);
-		  }
-		
-		if (sender_name && sender_email)
-		  {
-		    char *tmp;
-		    
-		    tmp = g_strdup_printf("%s <%s>", sender_name, sender_email);
-		    from = mn_sgml_ref_expand(tmp);
-		    g_free(tmp);
-		  }
-		else if (sender_name)
-		  from = mn_sgml_ref_expand(sender_name);
-		else if (sender_email)
-		  from = mn_sgml_ref_expand(sender_email);
-		
-		g_free(sender_email);
-		g_free(sender_name);
-		
-		if (subject)
-		  {
-		    if (strcmp(subject, "(no subject)"))
-		      expanded_subject = mn_sgml_ref_expand(subject);
-		    g_free(subject);
-		  }
-	    
-		messages = g_slist_append(messages, mn_message_new(MN_MAILBOX(self)->uri,
-								   NULL,
-								   sent_time,
-								   NULL,
-								   from,
-								   expanded_subject));
-		
-		g_free(from);
-		g_free(expanded_subject);
+		self_js_arg_list_free(arg_list);
 	      }
-	    
-	    p = next_p;
 	  }
-
+	
 	GDK_THREADS_ENTER();
 	mn_mailbox_set_has_new(MN_MAILBOX(self), messages != NULL);
 	mn_mailbox_set_messages(MN_MAILBOX(self), messages);
@@ -532,6 +493,292 @@ class MN:Gmail:Mailbox from MN:Authenticated:Mailbox
 
     return status;
   }
+
+  private void
+    append_message (self,
+		    GSList **messages (check null),
+		    JSArg *arg (check null))
+  {
+    char *date_field;
+    char *sender_field;
+    char *subject_field;
+    GSList *labels_list;
+    GSList *l;
+    gboolean in_inbox = FALSE;
+
+    char *date;
+    char *sender_email;
+    char *sender_name;
+    char *subject;
+
+    time_t sent_time = 0;
+    char *from = NULL;
+    char *expanded_subject = NULL;
+
+    if (arg->type != JS_ARG_LIST
+	|| ! self_js_arg_list_scan(arg->value.list,
+				   3, JS_ARG_STRING, &date_field,
+				   4, JS_ARG_STRING, &sender_field,
+				   6, JS_ARG_STRING, &subject_field,
+				   8, JS_ARG_LIST, &labels_list,
+				   -1))
+      return;
+				  
+    MN_LIST_FOREACH(l, labels_list)
+      {
+	JSArg *label = l->data;
+
+	if (label->type == JS_ARG_STRING && ! strcmp(label->value.string, "^i"))
+	  {
+	    in_inbox = TRUE;
+	    break;
+	  }
+      }
+
+    if (! in_inbox)
+      return;
+    
+    date = self_get_substring(date_field, "<b>", "</b>", FALSE, FALSE);
+    sender_email = self_get_substring(sender_field, "<span id='_user_", "'", FALSE, FALSE);
+    sender_name = self_get_substring(sender_field, "'><b>", "</b>", FALSE, FALSE);
+    subject = self_get_substring(subject_field, "<b>", "</b>", FALSE, FALSE);
+		    
+    if (date)
+      {
+	sent_time = self_parse_date(date);
+	g_free(date);
+      }
+    
+    if (sender_name && sender_email)
+      {
+	char *tmp;
+	
+	tmp = g_strdup_printf("%s <%s>", sender_name, sender_email);
+	from = mn_sgml_ref_expand(tmp);
+	g_free(tmp);
+      }
+    else if (sender_name)
+      from = mn_sgml_ref_expand(sender_name);
+    else if (sender_email)
+      from = mn_sgml_ref_expand(sender_email);
+    
+    g_free(sender_email);
+    g_free(sender_name);
+    
+    if (subject)
+      {
+	if (strcmp(subject, "(no subject)"))
+	  expanded_subject = mn_sgml_ref_expand(subject);
+	g_free(subject);
+      }
+    
+    *messages = g_slist_append(*messages, mn_message_new(MN_MAILBOX(self)->uri,
+							 NULL,
+							 sent_time,
+							 NULL,
+							 from,
+							 expanded_subject));
+    
+    g_free(from);
+    g_free(expanded_subject);
+  }
+  
+  private gboolean
+    js_get_arg_list (char **str (check null), GSList **list (check null))
+  {
+    GSList *our_list = NULL;
+    gboolean done = FALSE;
+    gboolean in_literal = FALSE;	/* a string enclosed in double quotes */
+    gboolean quoted = FALSE;		/* the next character is quoted with a backslash */
+    JSArg *arg = NULL;
+    GString *string;
+
+    g_return_val_if_fail(*str != NULL, FALSE);
+    g_return_val_if_fail(**str == '[', FALSE);
+
+    (*str)++;			/* skip the initial open bracket */
+    string = g_string_new(NULL);
+
+    while (**str && ! done)
+      {
+	gboolean next = TRUE;
+
+	if (in_literal)
+	  switch (**str)
+	    {
+	    case '\\':
+	      quoted = TRUE;
+	      break;
+
+	    case '"':
+	      if (! quoted)
+		{
+		  in_literal = FALSE;
+		  break;
+		}
+	      /* else pass through */
+	      
+	    default:
+	      quoted = FALSE;
+	      g_string_append_c(string, **str);
+	    }
+	else
+	  switch (**str)
+	    {
+	    case '[':
+	      {
+		GSList *sub_list;
+
+		if (arg || ! self_js_get_arg_list(str, &sub_list))
+		  goto end;	/* parse error */
+
+		arg = self_js_arg_new_list(sub_list);
+		next = FALSE;
+		break;
+	      }
+
+	    case ']':
+	      done = TRUE;
+	      /* fall through */
+	    
+	    case ',':
+	      if (! arg)
+		arg = self_js_arg_new_string(string->str);
+	      
+	      our_list = g_slist_append(our_list, arg);
+
+	      g_string_truncate(string, 0);
+	      arg = NULL;
+	      break;
+
+	    case '"':
+	      in_literal = TRUE;
+	      break;
+	      
+	    default:
+	      g_string_append_c(string, **str);
+	    }
+
+	if (next)
+	  (*str)++;
+      }
+
+  end:
+    if (arg)
+      self_js_arg_free(arg);
+    g_string_free(string, TRUE);
+
+    if (done)
+      {
+	*list = our_list;
+	return TRUE;
+      }
+    else
+      {
+	self_js_arg_list_free(our_list);
+	return FALSE;
+      }
+  }
+  
+  private gboolean
+    js_arg_list_scan (GSList *list, ...)
+  {
+    va_list args;
+    int position;
+    gboolean status = TRUE;
+
+    va_start(args, list);
+
+    while ((position = va_arg(args, int)) != -1)
+      {
+	JSArgType type = va_arg(args, JSArgType);
+	JSArg *arg = g_slist_nth_data(list, position);
+	
+	if (! arg)
+	  {
+	    status = FALSE;
+	    break;
+	  }
+
+	switch (type)
+	  {
+	  case JS_ARG_STRING:
+	    {
+	      char **str = va_arg(args, char **);
+	      g_return_val_if_fail(str != NULL, FALSE);
+
+	      *str = arg->value.string;
+	      break;
+	    }
+
+	  case JS_ARG_LIST:
+	    {
+	      GSList **elem_list = va_arg(args, GSList **);
+	      g_return_val_if_fail(elem_list != NULL, FALSE);
+
+	      *elem_list = arg->value.list;
+	      break;
+	    }
+
+	  default:
+	    g_return_val_if_reached(FALSE);
+	  }
+      }
+
+    va_end(args);
+
+    return status;
+  }
+  
+  private void
+    js_arg_list_free (GSList *list)
+  {
+    eel_g_slist_free_deep_custom(list, (GFunc) self_js_arg_free, NULL);
+  }
+  
+  private JSArg *
+    js_arg_new_string (const char *string (check null))
+  {
+    JSArg *arg;
+
+    arg = g_new(JSArg, 1);
+    arg->type = JS_ARG_STRING;
+    arg->value.string = g_strdup(string);
+
+    return arg;
+  }
+
+  private JSArg *
+    js_arg_new_list (GSList *list)
+  {
+    JSArg *arg;
+
+    arg = g_new(JSArg, 1);
+    arg->type = JS_ARG_LIST;
+    arg->value.list = list;
+
+    return arg;
+  }
+
+  private void
+    js_arg_free (JSArg *arg (check null))
+  {
+    switch (arg->type)
+      {
+      case JS_ARG_STRING:
+	g_free(arg->value.string);
+	break;
+
+      case JS_ARG_LIST:
+	self_js_arg_list_free(arg->value.list);
+	break;
+
+      default:
+	g_return_if_reached();
+      }
+
+    g_free(arg);
+  }
   
   private time_t
     parse_date (const char *date (check null))
diff --git a/src/mn-gmail-mailbox.h b/src/mn-gmail-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-gmime-stream-vfs-private.h b/src/mn-gmime-stream-vfs-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #ifndef __MN_GMIME_STREAM_VFS_PRIVATE_H__
 #define __MN_GMIME_STREAM_VFS_PRIVATE_H__
diff --git a/src/mn-gmime-stream-vfs.c b/src/mn-gmime-stream-vfs.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.10) on Mon Oct 25 15:24:33 2004
+/* Generated by GOB (v2.0.11) on Sun Oct 31 18:41:22 2004
    (do not edit directly) */
 
 /* End world hunger, donate to the World Food Programme, http://www.wfp.org */
 
 #define GOB_VERSION_MAJOR 2
 #define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 10
+#define GOB_VERSION_PATCHLEVEL 11
 
 #define selfp (self->_priv)
 
@@ -159,9 +159,9 @@ mn_gmime_stream_vfs_class_init (MNGMimeStreamVFSClass * c G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
+	GMimeStreamClass *gmime_stream_class = (GMimeStreamClass *)c;
 
 	g_type_class_add_private(c,sizeof(MNGMimeStreamVFSPrivate));
-	GMimeStreamClass *gmime_stream_class = (GMimeStreamClass *)c;
 
 	parent_class = g_type_class_ref (GMIME_TYPE_STREAM);
 
diff --git a/src/mn-gmime-stream-vfs.h b/src/mn-gmime-stream-vfs.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-imap-mailbox-private.h b/src/mn-imap-mailbox-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #ifndef __MN_IMAP_MAILBOX_PRIVATE_H__
 #define __MN_IMAP_MAILBOX_PRIVATE_H__
@@ -10,6 +10,21 @@ extern "C" {
 #endif /* __cplusplus */
 
 
+#line 32 "mn-imap-mailbox.gob"
+
+#include "mn-client-session.h"
+
+#line 18 "mn-imap-mailbox-private.h"
+struct _MNIMAPMailboxPrivate {
+#line 143 "mn-imap-mailbox.gob"
+	int removed;
+#line 145 "mn-imap-mailbox.gob"
+	MNClientSessionPrivate * idle_session;
+#line 146 "mn-imap-mailbox.gob"
+	GMutex * idle_session_mutex;
+#line 26 "mn-imap-mailbox-private.h"
+};
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */
diff --git a/src/mn-imap-mailbox-properties-private.h b/src/mn-imap-mailbox-properties-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #ifndef __MN_IMAP_MAILBOX_PROPERTIES_PRIVATE_H__
 #define __MN_IMAP_MAILBOX_PROPERTIES_PRIVATE_H__
diff --git a/src/mn-imap-mailbox-properties.c b/src/mn-imap-mailbox-properties.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.10) on Mon Oct 25 15:24:33 2004
+/* Generated by GOB (v2.0.11) on Sun Oct 31 18:41:21 2004
    (do not edit directly) */
 
 /* End world hunger, donate to the World Food Programme, http://www.wfp.org */
 
 #define GOB_VERSION_MAJOR 2
 #define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 10
+#define GOB_VERSION_PATCHLEVEL 11
 
 #define selfp (self->_priv)
 
@@ -298,14 +298,14 @@ ___2_mn_imap_mailbox_properties_constructor (GType type G_GNUC_UNUSED, guint n_c
     
     mn_auth_combo_box_append(MN_AUTH_COMBO_BOX(pi->auth_combo), "+LOGIN", "IMAP LOGIN");
 
-    mn_tooltips_set_tips(pi->tooltips,
-			 pi->hostname_entry, _("The hostname or IP address of the IMAP server"),
-			 pi->username_entry, _("Your username on the IMAP server"),
-			 pi->password_entry, _("Your password on the IMAP server (if left blank, you will be prompted for the password when needed)"),
-			 pi->port_spin[0], _("The port number of the IMAP server"),
-			 pi->port_spin[1], _("The port number of the IMAP server"),
-			 selfp->mailbox_entry, _("The mailbox name"),
-			 NULL);
+    mn_gtk_tooltips_set_tips(pi->tooltips,
+			     pi->hostname_entry, _("The hostname or IP address of the IMAP server"),
+			     pi->username_entry, _("Your username on the IMAP server"),
+			     pi->password_entry, _("Your password on the IMAP server (if left blank, you will be prompted for the password when needed)"),
+			     pi->port_spin[0], _("The port number of the IMAP server"),
+			     pi->port_spin[1], _("The port number of the IMAP server"),
+			     selfp->mailbox_entry, _("The mailbox name"),
+			     NULL);
 
     g_signal_connect(selfp->inbox_radio, "toggled", G_CALLBACK(self_radio_toggled_h), self);
     g_signal_connect(selfp->other_radio, "toggled", G_CALLBACK(self_radio_toggled_h), self);
diff --git a/src/mn-imap-mailbox-properties.gob b/src/mn-imap-mailbox-properties.gob
@@ -119,14 +119,14 @@ class MN:IMAP:Mailbox:Properties from MN:PI:Mailbox:Properties (interface MN:Mai
     
     mn_auth_combo_box_append(MN_AUTH_COMBO_BOX(pi->auth_combo), "+LOGIN", "IMAP LOGIN");
 
-    mn_tooltips_set_tips(pi->tooltips,
-			 pi->hostname_entry, _("The hostname or IP address of the IMAP server"),
-			 pi->username_entry, _("Your username on the IMAP server"),
-			 pi->password_entry, _("Your password on the IMAP server (if left blank, you will be prompted for the password when needed)"),
-			 pi->port_spin[0], _("The port number of the IMAP server"),
-			 pi->port_spin[1], _("The port number of the IMAP server"),
-			 selfp->mailbox_entry, _("The mailbox name"),
-			 NULL);
+    mn_gtk_tooltips_set_tips(pi->tooltips,
+			     pi->hostname_entry, _("The hostname or IP address of the IMAP server"),
+			     pi->username_entry, _("Your username on the IMAP server"),
+			     pi->password_entry, _("Your password on the IMAP server (if left blank, you will be prompted for the password when needed)"),
+			     pi->port_spin[0], _("The port number of the IMAP server"),
+			     pi->port_spin[1], _("The port number of the IMAP server"),
+			     selfp->mailbox_entry, _("The mailbox name"),
+			     NULL);
 
     g_signal_connect(selfp->inbox_radio, "toggled", G_CALLBACK(self_radio_toggled_h), self);
     g_signal_connect(selfp->other_radio, "toggled", G_CALLBACK(self_radio_toggled_h), self);
diff --git a/src/mn-imap-mailbox-properties.h b/src/mn-imap-mailbox-properties.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-imap-mailbox.c b/src/mn-imap-mailbox.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.10) on Mon Oct 25 15:24:33 2004
+/* Generated by GOB (v2.0.11) on Sun Oct 31 18:41:21 2004
    (do not edit directly) */
 
 /* End world hunger, donate to the World Food Programme, http://www.wfp.org */
 
 #define GOB_VERSION_MAJOR 2
 #define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 10
+#define GOB_VERSION_PATCHLEVEL 11
 
 #define selfp (self->_priv)
 
@@ -21,7 +21,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 27 "mn-imap-mailbox.gob"
+#line 36 "mn-imap-mailbox.gob"
 
 #include "config.h"
 #include <stdio.h>
@@ -33,7 +33,6 @@
 #include <eel/eel.h>
 #include "mn-mailbox-private.h"
 #include "mn-util.h"
-#include "mn-client-session.h"
 #ifdef WITH_MIME
 #include "mn-message-mime.h"
 #endif
@@ -45,6 +44,8 @@
 #define IS_BAD(response)		IS(response, "BAD")
 #define IS_BYE(response)		IS(response, "BYE")
 
+#define REMOVED(self)			(g_atomic_int_get(&(self)->_priv->removed))
+
   enum
   {
     STATE_GREETING = MN_CLIENT_SESSION_INITIAL_STATE,
@@ -56,13 +57,14 @@
     STATE_AUTHENTICATE,
 #endif
     STATE_LOGIN,
-#ifdef WITH_MIME
     STATE_EXAMINE,
     STATE_SEARCH,
+#ifdef WITH_MIME
     STATE_FETCH,
 #else /* WITH_MIME */
     STATE_STATUS,
 #endif
+    STATE_IDLE,
     STATE_LOGOUT
   };
   
@@ -73,31 +75,46 @@
     RESULT_DEFAULT_HANDLER	= -3  /* invoke the default response handler */
   };
 
+  typedef enum
+  {
+    IDLE_STATE_NORMAL,
+    IDLE_STATE_IDLING,
+    IDLE_STATE_WAS_IDLING
+  } IdleState;
+
   struct _MNClientSessionPrivate
   {
     MNMailbox		*mailbox;
     MNIMAPMailbox	*self;
     MNClientSession	*session;
+
     int			numeric_tag;
     char		tag[5];
+
     char		**capabilities;
     GSList		*auth_mechanisms;
     gboolean		authentication_failed;
-#ifdef WITH_MIME
+
     gboolean		search_received;
     GSList		*fetch_numbers;
     char		*fetch_set;
+
+#ifdef WITH_MIME
     GSList		*received_numbers;
     GSList		*messages;
 #else /* WITH_MIME */
     gboolean		status_received;
 #endif
+
 #ifdef WITH_SSL
     gboolean		starttls_completed;
 #endif
 #ifdef WITH_SASL
     const char		*sasl_mechanism;
 #endif
+
+    IdleState		idle_state;
+    gboolean		could_idle;	/* could idle at least once */
   };
   
   struct _MNClientSessionResponse
@@ -109,7 +126,7 @@
     char		*arguments;
   };
 
-#line 113 "mn-imap-mailbox.c"
+#line 130 "mn-imap-mailbox.c"
 /* self casting macros */
 #define SELF(x) MN_IMAP_MAILBOX(x)
 #define SELF_CONST(x) MN_IMAP_MAILBOX_CONST(x)
@@ -128,6 +145,7 @@ static void mn_imap_mailbox_init (MNIMAPMailbox * o) G_GNUC_UNUSED;
 static void mn_imap_mailbox_class_init (MNIMAPMailboxClass * class) G_GNUC_UNUSED;
 static GObject * ___2_mn_imap_mailbox_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_params) G_GNUC_UNUSED;
 static gboolean ___3_mn_imap_mailbox_impl_is (MNMailbox * dummy, MNURI * uri) G_GNUC_UNUSED;
+static void ___4_mn_imap_mailbox_removed (MNMailbox * mailbox) G_GNUC_UNUSED;
 static int mn_imap_mailbox_handle_greeting_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_imap_mailbox_enter_capability_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_imap_mailbox_handle_capability_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
@@ -143,15 +161,19 @@ static int mn_imap_mailbox_enter_search_cb (MNClientSession * session, MNClientS
 static int mn_imap_mailbox_handle_search_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_imap_mailbox_enter_fetch_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_imap_mailbox_handle_fetch_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+static int mn_imap_mailbox_enter_idle_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+static int mn_imap_mailbox_handle_idle_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_imap_mailbox_enter_status_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_imap_mailbox_handle_status_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_imap_mailbox_enter_logout_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_imap_mailbox_handle_logout_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
-static MNAuthenticatedMailboxResult ___17_mn_imap_mailbox_impl_authenticated_check (MNAuthenticatedMailbox * authenticated_mailbox, GError ** err) G_GNUC_UNUSED;
+static MNAuthenticatedMailboxResult ___1a_mn_imap_mailbox_impl_authenticated_check (MNAuthenticatedMailbox * authenticated_mailbox, GError ** err) G_GNUC_UNUSED;
 static void mn_imap_mailbox_notice_cb (MNClientSession * session, const char * str, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static MNClientSessionResponse * mn_imap_mailbox_response_new_cb (MNClientSession * session, const char * input, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static void mn_imap_mailbox_response_free_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_imap_mailbox_custom_handler_cb (MNClientSession * session, MNClientSessionResponse * response, int result, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+static void mn_imap_mailbox_pre_read_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+static void mn_imap_mailbox_post_read_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static void mn_imap_mailbox_session_set_error_from_arguments (MNClientSessionPrivate * priv, MNClientSessionResponse * response) G_GNUC_UNUSED;
 static int mn_imap_mailbox_session_write (MNClientSessionPrivate * priv, const char * format, ...) G_GNUC_UNUSED;
 static void mn_imap_mailbox_session_parse_capabilities (MNClientSessionPrivate * priv, const char * capabilities) G_GNUC_UNUSED;
@@ -181,6 +203,8 @@ static MNAuthenticatedMailboxClass *parent_class = NULL;
 #define self_handle_search_cb mn_imap_mailbox_handle_search_cb
 #define self_enter_fetch_cb mn_imap_mailbox_enter_fetch_cb
 #define self_handle_fetch_cb mn_imap_mailbox_handle_fetch_cb
+#define self_enter_idle_cb mn_imap_mailbox_enter_idle_cb
+#define self_handle_idle_cb mn_imap_mailbox_handle_idle_cb
 #define self_enter_status_cb mn_imap_mailbox_enter_status_cb
 #define self_handle_status_cb mn_imap_mailbox_handle_status_cb
 #define self_enter_logout_cb mn_imap_mailbox_enter_logout_cb
@@ -189,6 +213,8 @@ static MNAuthenticatedMailboxClass *parent_class = NULL;
 #define self_response_new_cb mn_imap_mailbox_response_new_cb
 #define self_response_free_cb mn_imap_mailbox_response_free_cb
 #define self_custom_handler_cb mn_imap_mailbox_custom_handler_cb
+#define self_pre_read_cb mn_imap_mailbox_pre_read_cb
+#define self_post_read_cb mn_imap_mailbox_post_read_cb
 #define self_session_set_error_from_arguments mn_imap_mailbox_session_set_error_from_arguments
 #define self_session_write mn_imap_mailbox_session_write
 #define self_session_parse_capabilities mn_imap_mailbox_session_parse_capabilities
@@ -240,47 +266,71 @@ GET_NEW_VARG (const char *first, ...)
 	return ret;
 }
 
+
+static void
+___finalize(GObject *obj_self)
+{
+#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::finalize"
+	MNIMAPMailbox *self G_GNUC_UNUSED = MN_IMAP_MAILBOX (obj_self);
+	gpointer priv G_GNUC_UNUSED = self->_priv;
+	if(G_OBJECT_CLASS(parent_class)->finalize) \
+		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
+#line 146 "mn-imap-mailbox.gob"
+	if(self->_priv->idle_session_mutex) { g_mutex_free ((gpointer) self->_priv->idle_session_mutex); self->_priv->idle_session_mutex = NULL; }
+#line 281 "mn-imap-mailbox.c"
+}
+#undef __GOB_FUNCTION__
+
 static void 
 mn_imap_mailbox_init (MNIMAPMailbox * o G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::init"
+	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,TYPE_SELF,MNIMAPMailboxPrivate);
+#line 146 "mn-imap-mailbox.gob"
+	o->_priv->idle_session_mutex = g_mutex_new();
+#line 292 "mn-imap-mailbox.c"
 }
 #undef __GOB_FUNCTION__
-#line 117 "mn-imap-mailbox.gob"
+#line 148 "mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_class_init (MNIMAPMailboxClass * class G_GNUC_UNUSED)
-#line 253 "mn-imap-mailbox.c"
+#line 298 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::class_init"
-	GObjectClass *g_object_class = (GObjectClass *)class;
+	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
 	MNMailboxClass *mn_mailbox_class = (MNMailboxClass *)class;
 	MNAuthenticatedMailboxClass *mn_authenticated_mailbox_class = (MNAuthenticatedMailboxClass *)class;
 
+	g_type_class_add_private(class,sizeof(MNIMAPMailboxPrivate));
+
 	parent_class = g_type_class_ref (MN_TYPE_AUTHENTICATED_MAILBOX);
 
-#line 122 "mn-imap-mailbox.gob"
+#line 153 "mn-imap-mailbox.gob"
 	g_object_class->constructor = ___2_mn_imap_mailbox_constructor;
-#line 139 "mn-imap-mailbox.gob"
+#line 170 "mn-imap-mailbox.gob"
 	mn_mailbox_class->impl_is = ___3_mn_imap_mailbox_impl_is;
-#line 681 "mn-imap-mailbox.gob"
-	mn_authenticated_mailbox_class->impl_authenticated_check = ___17_mn_imap_mailbox_impl_authenticated_check;
-#line 268 "mn-imap-mailbox.c"
+#line 176 "mn-imap-mailbox.gob"
+	mn_mailbox_class->removed = ___4_mn_imap_mailbox_removed;
+#line 823 "mn-imap-mailbox.gob"
+	mn_authenticated_mailbox_class->impl_authenticated_check = ___1a_mn_imap_mailbox_impl_authenticated_check;
+#line 317 "mn-imap-mailbox.c"
+	g_object_class->finalize = ___finalize;
  {
-#line 118 "mn-imap-mailbox.gob"
+#line 149 "mn-imap-mailbox.gob"
 
     MN_MAILBOX_CLASS(class)->format = "IMAP";
   
-#line 274 "mn-imap-mailbox.c"
+#line 324 "mn-imap-mailbox.c"
  }
 }
 #undef __GOB_FUNCTION__
 
 
 
-#line 122 "mn-imap-mailbox.gob"
+#line 153 "mn-imap-mailbox.gob"
 static GObject * 
 ___2_mn_imap_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_properties, GObjectConstructParam * construct_params)
-#line 284 "mn-imap-mailbox.c"
+#line 334 "mn-imap-mailbox.c"
 #define PARENT_HANDLER(___type,___n_construct_properties,___construct_params) \
 	((G_OBJECT_CLASS(parent_class)->constructor)? \
 		(* G_OBJECT_CLASS(parent_class)->constructor)(___type,___n_construct_properties,___construct_params): \
@@ -288,7 +338,7 @@ ___2_mn_imap_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_pr
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::constructor"
 {
-#line 124 "mn-imap-mailbox.gob"
+#line 155 "mn-imap-mailbox.gob"
 	
     GObject *object;
     MNMailbox *mailbox;
@@ -303,49 +353,84 @@ ___2_mn_imap_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_pr
 
     return object;
   }}
-#line 307 "mn-imap-mailbox.c"
+#line 357 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 139 "mn-imap-mailbox.gob"
+#line 170 "mn-imap-mailbox.gob"
 static gboolean 
 ___3_mn_imap_mailbox_impl_is (MNMailbox * dummy G_GNUC_UNUSED, MNURI * uri)
-#line 314 "mn-imap-mailbox.c"
+#line 364 "mn-imap-mailbox.c"
 #define PARENT_HANDLER(___dummy,___uri) \
 	((MN_MAILBOX_CLASS(parent_class)->impl_is)? \
 		(* MN_MAILBOX_CLASS(parent_class)->impl_is)(___dummy,___uri): \
 		((gboolean )0))
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::impl_is"
-#line 139 "mn-imap-mailbox.gob"
+#line 170 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (uri != NULL, (gboolean )0);
-#line 139 "mn-imap-mailbox.gob"
+#line 170 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (MN_IS_URI (uri), (gboolean )0);
-#line 325 "mn-imap-mailbox.c"
+#line 375 "mn-imap-mailbox.c"
 {
-#line 141 "mn-imap-mailbox.gob"
+#line 172 "mn-imap-mailbox.gob"
 	
     return MN_URI_IS_IMAP(uri);
   }}
-#line 331 "mn-imap-mailbox.c"
+#line 381 "mn-imap-mailbox.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 176 "mn-imap-mailbox.gob"
+static void 
+___4_mn_imap_mailbox_removed (MNMailbox * mailbox G_GNUC_UNUSED)
+#line 388 "mn-imap-mailbox.c"
+#define PARENT_HANDLER(___mailbox) \
+	{ if(MN_MAILBOX_CLASS(parent_class)->removed) \
+		(* MN_MAILBOX_CLASS(parent_class)->removed)(___mailbox); }
+{
+#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::removed"
+#line 176 "mn-imap-mailbox.gob"
+	g_return_if_fail (mailbox != NULL);
+#line 176 "mn-imap-mailbox.gob"
+	g_return_if_fail (MN_IS_MAILBOX (mailbox));
+#line 398 "mn-imap-mailbox.c"
+{
+#line 178 "mn-imap-mailbox.gob"
+	
+    Self *self = SELF(mailbox);
+
+    g_atomic_int_inc(&selfp->removed);
+
+    g_mutex_lock(selfp->idle_session_mutex);
+    if (selfp->idle_session)
+      {
+	mn_client_session_write(selfp->idle_session->session, "DONE");
+	selfp->idle_session->idle_state = IDLE_STATE_WAS_IDLING;
+      }
+    g_mutex_unlock(selfp->idle_session_mutex);
+
+    PARENT_HANDLER(mailbox);
+  }}
+#line 416 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 145 "mn-imap-mailbox.gob"
+#line 194 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_greeting_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 338 "mn-imap-mailbox.c"
+#line 423 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_greeting_cb"
-#line 145 "mn-imap-mailbox.gob"
+#line 194 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 145 "mn-imap-mailbox.gob"
+#line 194 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 145 "mn-imap-mailbox.gob"
+#line 194 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 347 "mn-imap-mailbox.c"
+#line 432 "mn-imap-mailbox.c"
 {
-#line 149 "mn-imap-mailbox.gob"
+#line 198 "mn-imap-mailbox.gob"
 	
     priv->session = session;
 
@@ -372,22 +457,22 @@ mn_imap_mailbox_handle_greeting_cb (MNClientSession * session, MNClientSessionRe
     else
       return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
   }}
-#line 376 "mn-imap-mailbox.c"
+#line 461 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 176 "mn-imap-mailbox.gob"
+#line 225 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_capability_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 382 "mn-imap-mailbox.c"
+#line 467 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_capability_cb"
-#line 176 "mn-imap-mailbox.gob"
+#line 225 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 176 "mn-imap-mailbox.gob"
+#line 225 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 389 "mn-imap-mailbox.c"
+#line 474 "mn-imap-mailbox.c"
 {
-#line 179 "mn-imap-mailbox.gob"
+#line 228 "mn-imap-mailbox.gob"
 	
     g_strfreev(priv->capabilities);
     priv->capabilities = NULL;
@@ -397,24 +482,24 @@ mn_imap_mailbox_enter_capability_cb (MNClientSession * session, MNClientSessionP
 
     return self_session_write(priv, "CAPABILITY");
   }}
-#line 401 "mn-imap-mailbox.c"
+#line 486 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 189 "mn-imap-mailbox.gob"
+#line 238 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_capability_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 407 "mn-imap-mailbox.c"
+#line 492 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_capability_cb"
-#line 189 "mn-imap-mailbox.gob"
+#line 238 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 189 "mn-imap-mailbox.gob"
+#line 238 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 189 "mn-imap-mailbox.gob"
+#line 238 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 416 "mn-imap-mailbox.c"
+#line 501 "mn-imap-mailbox.c"
 {
-#line 193 "mn-imap-mailbox.gob"
+#line 242 "mn-imap-mailbox.gob"
 	
     if (response->continuation)
       return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
@@ -442,22 +527,22 @@ mn_imap_mailbox_handle_capability_cb (MNClientSession * session, MNClientSession
     
     return RESULT_DEFAULT_HANDLER;
   }}
-#line 446 "mn-imap-mailbox.c"
+#line 531 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 221 "mn-imap-mailbox.gob"
+#line 270 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_starttls_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 452 "mn-imap-mailbox.c"
+#line 537 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_starttls_cb"
-#line 221 "mn-imap-mailbox.gob"
+#line 270 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 221 "mn-imap-mailbox.gob"
+#line 270 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 459 "mn-imap-mailbox.c"
+#line 544 "mn-imap-mailbox.c"
 {
-#line 224 "mn-imap-mailbox.gob"
+#line 273 "mn-imap-mailbox.gob"
 	
 #ifdef WITH_SSL
     return self_session_write(priv, "STARTTLS");
@@ -465,24 +550,24 @@ mn_imap_mailbox_enter_starttls_cb (MNClientSession * session, MNClientSessionPri
     g_return_val_if_reached(0);
 #endif /* WITH_SSL */
   }}
-#line 469 "mn-imap-mailbox.c"
+#line 554 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 232 "mn-imap-mailbox.gob"
+#line 281 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_starttls_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 475 "mn-imap-mailbox.c"
+#line 560 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_starttls_cb"
-#line 232 "mn-imap-mailbox.gob"
+#line 281 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 232 "mn-imap-mailbox.gob"
+#line 281 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 232 "mn-imap-mailbox.gob"
+#line 281 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 484 "mn-imap-mailbox.c"
+#line 569 "mn-imap-mailbox.c"
 {
-#line 236 "mn-imap-mailbox.gob"
+#line 285 "mn-imap-mailbox.gob"
 	
 #ifdef WITH_SSL
     if (response->continuation)
@@ -510,29 +595,35 @@ mn_imap_mailbox_handle_starttls_cb (MNClientSession * session, MNClientSessionRe
     g_return_val_if_reached(0);
 #endif /* WITH_SSL */
   }}
-#line 514 "mn-imap-mailbox.c"
+#line 599 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 264 "mn-imap-mailbox.gob"
+#line 313 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_authenticate_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 520 "mn-imap-mailbox.c"
+#line 605 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_authenticate_cb"
-#line 264 "mn-imap-mailbox.gob"
+#line 313 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 264 "mn-imap-mailbox.gob"
+#line 313 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 527 "mn-imap-mailbox.c"
+#line 612 "mn-imap-mailbox.c"
 {
-#line 267 "mn-imap-mailbox.gob"
+#line 316 "mn-imap-mailbox.gob"
 	
 #ifdef WITH_SASL
+    /*
+     * RFC 3501 6.2.2 specifies that the IMAP protocol does not
+     * support the "initial response" feature of SASL, so we set the
+     * initial_response argument to FALSE.
+     */
     if (mn_client_session_sasl_authentication_start(priv->session,
 						    "imap",
 						    priv->auth_mechanisms,
 						    priv->mailbox->uri->authmech,
-						    &priv->sasl_mechanism))
+						    &priv->sasl_mechanism,
+						    FALSE))
       return self_session_write(priv, "AUTHENTICATE %s", priv->sasl_mechanism);
     else
       return self_session_authenticate_fallback(priv);
@@ -540,24 +631,24 @@ mn_imap_mailbox_enter_authenticate_cb (MNClientSession * session, MNClientSessio
     g_return_val_if_reached(0);
 #endif /* WITH_SASL */
   }}
-#line 544 "mn-imap-mailbox.c"
+#line 635 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 282 "mn-imap-mailbox.gob"
+#line 337 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_authenticate_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 550 "mn-imap-mailbox.c"
+#line 641 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_authenticate_cb"
-#line 282 "mn-imap-mailbox.gob"
+#line 337 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 282 "mn-imap-mailbox.gob"
+#line 337 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 282 "mn-imap-mailbox.gob"
+#line 337 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 559 "mn-imap-mailbox.c"
+#line 650 "mn-imap-mailbox.c"
 {
-#line 286 "mn-imap-mailbox.gob"
+#line 341 "mn-imap-mailbox.gob"
 	
 #ifdef WITH_SASL
     if (response->tag)
@@ -584,22 +675,22 @@ mn_imap_mailbox_handle_authenticate_cb (MNClientSession * session, MNClientSessi
     g_return_val_if_reached(0);
 #endif /* WITH_SASL */
   }}
-#line 588 "mn-imap-mailbox.c"
+#line 679 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 313 "mn-imap-mailbox.gob"
+#line 368 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_login_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 594 "mn-imap-mailbox.c"
+#line 685 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_login_cb"
-#line 313 "mn-imap-mailbox.gob"
+#line 368 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 313 "mn-imap-mailbox.gob"
+#line 368 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 601 "mn-imap-mailbox.c"
+#line 692 "mn-imap-mailbox.c"
 {
-#line 316 "mn-imap-mailbox.gob"
+#line 371 "mn-imap-mailbox.gob"
 	
     if (self_session_has_capability(priv, "LOGINDISABLED"))
       {
@@ -622,24 +713,24 @@ mn_imap_mailbox_enter_login_cb (MNClientSession * session, MNClientSessionPrivat
 	return result;
       }
   }}
-#line 626 "mn-imap-mailbox.c"
+#line 717 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 339 "mn-imap-mailbox.gob"
+#line 394 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_login_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 632 "mn-imap-mailbox.c"
+#line 723 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_login_cb"
-#line 339 "mn-imap-mailbox.gob"
+#line 394 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 339 "mn-imap-mailbox.gob"
+#line 394 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 339 "mn-imap-mailbox.gob"
+#line 394 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 641 "mn-imap-mailbox.c"
+#line 732 "mn-imap-mailbox.c"
 {
-#line 343 "mn-imap-mailbox.gob"
+#line 398 "mn-imap-mailbox.gob"
 	
     if (response->continuation)
       return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
@@ -661,24 +752,23 @@ mn_imap_mailbox_handle_login_cb (MNClientSession * session, MNClientSessionRespo
     
     return RESULT_DEFAULT_HANDLER;
   }}
-#line 665 "mn-imap-mailbox.c"
+#line 756 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 365 "mn-imap-mailbox.gob"
+#line 420 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_examine_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 671 "mn-imap-mailbox.c"
+#line 762 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_examine_cb"
-#line 365 "mn-imap-mailbox.gob"
+#line 420 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 365 "mn-imap-mailbox.gob"
+#line 420 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 678 "mn-imap-mailbox.c"
+#line 769 "mn-imap-mailbox.c"
 {
-#line 368 "mn-imap-mailbox.gob"
+#line 423 "mn-imap-mailbox.gob"
 	
-#ifdef WITH_MIME
     char *quoted_mailbox;
     int result;
 
@@ -687,30 +777,26 @@ mn_imap_mailbox_enter_examine_cb (MNClientSession * session, MNClientSessionPriv
     g_free(quoted_mailbox);
 
     return result;
-#else /* WITH_MIME */
-    g_return_val_if_reached(0);
-#endif
   }}
-#line 695 "mn-imap-mailbox.c"
+#line 782 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 383 "mn-imap-mailbox.gob"
+#line 434 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_examine_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 701 "mn-imap-mailbox.c"
+#line 788 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_examine_cb"
-#line 383 "mn-imap-mailbox.gob"
+#line 434 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 383 "mn-imap-mailbox.gob"
+#line 434 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 383 "mn-imap-mailbox.gob"
+#line 434 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 710 "mn-imap-mailbox.c"
+#line 797 "mn-imap-mailbox.c"
 {
-#line 387 "mn-imap-mailbox.gob"
+#line 438 "mn-imap-mailbox.gob"
 	
-#ifdef WITH_MIME
     if (response->continuation)
       return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
     else if (response->tag)
@@ -727,53 +813,53 @@ mn_imap_mailbox_handle_examine_cb (MNClientSession * session, MNClientSessionRes
       }
 
     return RESULT_DEFAULT_HANDLER;
-#else /* WITH_MIME */
-    g_return_val_if_reached(0);
-#endif
   }}
-#line 735 "mn-imap-mailbox.c"
+#line 818 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 410 "mn-imap-mailbox.gob"
+#line 457 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_search_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 741 "mn-imap-mailbox.c"
+#line 824 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_search_cb"
-#line 410 "mn-imap-mailbox.gob"
+#line 457 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 410 "mn-imap-mailbox.gob"
+#line 457 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 748 "mn-imap-mailbox.c"
+#line 831 "mn-imap-mailbox.c"
 {
-#line 413 "mn-imap-mailbox.gob"
+#line 460 "mn-imap-mailbox.gob"
 	
-#ifdef WITH_MIME
+    priv->search_received = FALSE;
+
+    g_slist_free(priv->fetch_numbers);
+    priv->fetch_numbers = NULL;
+
+    g_free(priv->fetch_set);
+    priv->fetch_set = NULL;
+    
     return self_session_write(priv, "SEARCH UNSEEN");
-#else
-    g_return_val_if_reached(0);
-#endif
   }}
-#line 758 "mn-imap-mailbox.c"
+#line 845 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 421 "mn-imap-mailbox.gob"
+#line 472 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_search_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 764 "mn-imap-mailbox.c"
+#line 851 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_search_cb"
-#line 421 "mn-imap-mailbox.gob"
+#line 472 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 421 "mn-imap-mailbox.gob"
+#line 472 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 421 "mn-imap-mailbox.gob"
+#line 472 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 773 "mn-imap-mailbox.c"
+#line 860 "mn-imap-mailbox.c"
 {
-#line 425 "mn-imap-mailbox.gob"
+#line 476 "mn-imap-mailbox.gob"
 	
-#ifdef WITH_MIME
     if (response->continuation)
       return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
     else if (response->tag)
@@ -785,16 +871,31 @@ mn_imap_mailbox_handle_search_cb (MNClientSession * session, MNClientSessionResp
 		if (priv->search_received)
 		  {
 		    if (priv->fetch_set)
-		      return STATE_FETCH;
+		      {
+#ifdef WITH_MIME
+			return STATE_FETCH;
+#else
+			GDK_THREADS_ENTER();
+			mn_mailbox_set_has_new(priv->mailbox, TRUE);
+			gdk_flush();
+			GDK_THREADS_LEAVE();
+
+			return STATE_IDLE;
+#endif /* WITH_MIME */
+		      }
 		    else
 		      {
 			GDK_THREADS_ENTER();
 			mn_mailbox_set_has_new(priv->mailbox, FALSE);
+#ifdef WITH_MIME
 			mn_mailbox_set_messages(priv->mailbox, NULL);
+#endif
 			gdk_flush();
 			GDK_THREADS_LEAVE();
 
-			return STATE_LOGOUT;
+			return self_session_has_capability(priv, "IDLE")
+			  ? STATE_IDLE
+			  : STATE_LOGOUT;
 		      }
 		  }
 		else		/* compliance error */
@@ -838,52 +939,56 @@ mn_imap_mailbox_handle_search_cb (MNClientSession * session, MNClientSessionResp
       }
 
     return RESULT_DEFAULT_HANDLER;
-#else /* WITH_MIME */
-    g_return_val_if_reached(0);
-#endif
   }}
-#line 846 "mn-imap-mailbox.c"
+#line 944 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 496 "mn-imap-mailbox.gob"
+#line 558 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_fetch_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 852 "mn-imap-mailbox.c"
+#line 950 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_fetch_cb"
-#line 496 "mn-imap-mailbox.gob"
+#line 558 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 496 "mn-imap-mailbox.gob"
+#line 558 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 859 "mn-imap-mailbox.c"
+#line 957 "mn-imap-mailbox.c"
 {
-#line 499 "mn-imap-mailbox.gob"
+#line 561 "mn-imap-mailbox.gob"
 	
 #ifdef WITH_MIME
     g_return_val_if_fail(priv->fetch_set != NULL, 0);
+
+    g_slist_free(priv->received_numbers);
+    priv->received_numbers = NULL;
+
+    mn_g_object_slist_free(priv->messages);
+    priv->messages = NULL;
+
     return self_session_write(priv, "FETCH %s BODY[HEADER]", priv->fetch_set);
 #else /* WITH_MIME */
     g_return_val_if_reached(0);
 #endif
   }}
-#line 870 "mn-imap-mailbox.c"
+#line 975 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 508 "mn-imap-mailbox.gob"
+#line 577 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_fetch_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 876 "mn-imap-mailbox.c"
+#line 981 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_fetch_cb"
-#line 508 "mn-imap-mailbox.gob"
+#line 577 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 508 "mn-imap-mailbox.gob"
+#line 577 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 508 "mn-imap-mailbox.gob"
+#line 577 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 885 "mn-imap-mailbox.c"
+#line 990 "mn-imap-mailbox.c"
 {
-#line 512 "mn-imap-mailbox.gob"
+#line 581 "mn-imap-mailbox.gob"
 	
 #ifdef WITH_MIME
     if (response->continuation)
@@ -907,7 +1012,9 @@ mn_imap_mailbox_handle_fetch_cb (MNClientSession * session, MNClientSessionRespo
 		gdk_flush();
 		GDK_THREADS_LEAVE();
 		
-		return STATE_LOGOUT;
+		return self_session_has_capability(priv, "IDLE")
+		  ? STATE_IDLE
+		  : STATE_LOGOUT;
 	      }
 	    else if (IS_NO(response) || IS_BAD(response))
 	      return RESULT_ERROR_LOGOUT;
@@ -957,22 +1064,118 @@ mn_imap_mailbox_handle_fetch_cb (MNClientSession * session, MNClientSessionRespo
     g_return_val_if_reached(0);
 #endif
   }}
-#line 961 "mn-imap-mailbox.c"
+#line 1068 "mn-imap-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 657 "mn-imap-mailbox.gob"
+static int 
+mn_imap_mailbox_enter_idle_cb (MNClientSession * session, MNClientSessionPrivate * priv)
+#line 1074 "mn-imap-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_idle_cb"
+#line 657 "mn-imap-mailbox.gob"
+	g_return_val_if_fail (session != NULL, (int )0);
+#line 657 "mn-imap-mailbox.gob"
+	g_return_val_if_fail (priv != NULL, (int )0);
+#line 1081 "mn-imap-mailbox.c"
+{
+#line 660 "mn-imap-mailbox.gob"
+	
+    priv->idle_state = IDLE_STATE_NORMAL;
+    return REMOVED(priv->self) ? STATE_LOGOUT : self_session_write(priv, "IDLE");
+  }}
+#line 1088 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 586 "mn-imap-mailbox.gob"
+#line 665 "mn-imap-mailbox.gob"
+static int 
+mn_imap_mailbox_handle_idle_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
+#line 1094 "mn-imap-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_idle_cb"
+#line 665 "mn-imap-mailbox.gob"
+	g_return_val_if_fail (session != NULL, (int )0);
+#line 665 "mn-imap-mailbox.gob"
+	g_return_val_if_fail (response != NULL, (int )0);
+#line 665 "mn-imap-mailbox.gob"
+	g_return_val_if_fail (priv != NULL, (int )0);
+#line 1103 "mn-imap-mailbox.c"
+{
+#line 669 "mn-imap-mailbox.gob"
+	
+    if (priv->idle_state == IDLE_STATE_IDLING)
+      {
+	if (response->continuation || response->tag)
+	  return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+
+	priv->idle_state = IDLE_STATE_WAS_IDLING;
+
+	if (IS_BYE(response))
+	  return MN_CLIENT_SESSION_RESULT_END; /* we'll reconnect */
+	else
+	  /* any other response wakes us up */
+	  return mn_client_session_write(session, "DONE");
+      }
+    else
+      {
+	if (response->continuation)
+	  {
+	    if (priv->idle_state == IDLE_STATE_WAS_IDLING)
+	      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+	    else
+	      {
+		/* we're now in the idle loop */
+		priv->idle_state = IDLE_STATE_IDLING;
+		priv->could_idle = TRUE;
+		
+		GDK_THREADS_ENTER();
+		mn_mailbox_set_must_poll(priv->mailbox, FALSE);
+		gdk_flush();
+		GDK_THREADS_LEAVE();
+
+		return MN_CLIENT_SESSION_RESULT_CONTINUE;
+	      }
+	  }
+	else if (response->tag)
+	  {
+	    if (HAS_CURRENT_TAG(response, priv))
+	      {
+		if (IS_OK(response))
+		  return REMOVED(priv->self) ? STATE_LOGOUT : STATE_SEARCH;
+		else if (IS_NO(response) || IS_BAD(response))
+		  /*
+		   * The server advertised IDLE but does not actually
+		   * support it.
+		   *
+		   * Although strictly speaking this can be considered
+		   * a compliance fault, we'll be tolerant and just
+		   * logout without setting an error.
+		   */
+		  return STATE_LOGOUT;
+		else
+		  return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+	      }
+	  }
+      }
+
+    return RESULT_DEFAULT_HANDLER;
+  }}
+#line 1164 "mn-imap-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 728 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_status_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 967 "mn-imap-mailbox.c"
+#line 1170 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_status_cb"
-#line 586 "mn-imap-mailbox.gob"
+#line 728 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 586 "mn-imap-mailbox.gob"
+#line 728 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 974 "mn-imap-mailbox.c"
+#line 1177 "mn-imap-mailbox.c"
 {
-#line 589 "mn-imap-mailbox.gob"
+#line 731 "mn-imap-mailbox.gob"
 	
 #ifndef WITH_MIME
     char *quoted_mailbox;
@@ -987,24 +1190,24 @@ mn_imap_mailbox_enter_status_cb (MNClientSession * session, MNClientSessionPriva
     g_return_val_if_reached(0);
 #endif
   }}
-#line 991 "mn-imap-mailbox.c"
+#line 1194 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 604 "mn-imap-mailbox.gob"
+#line 746 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_status_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 997 "mn-imap-mailbox.c"
+#line 1200 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_status_cb"
-#line 604 "mn-imap-mailbox.gob"
+#line 746 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 604 "mn-imap-mailbox.gob"
+#line 746 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 604 "mn-imap-mailbox.gob"
+#line 746 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1006 "mn-imap-mailbox.c"
+#line 1209 "mn-imap-mailbox.c"
 {
-#line 608 "mn-imap-mailbox.gob"
+#line 750 "mn-imap-mailbox.gob"
 	
 #ifndef WITH_MIME
     if (response->continuation)
@@ -1050,43 +1253,43 @@ mn_imap_mailbox_handle_status_cb (MNClientSession * session, MNClientSessionResp
     g_return_val_if_reached(0);
 #endif
   }}
-#line 1054 "mn-imap-mailbox.c"
+#line 1257 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 654 "mn-imap-mailbox.gob"
+#line 796 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_logout_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 1060 "mn-imap-mailbox.c"
+#line 1263 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_logout_cb"
-#line 654 "mn-imap-mailbox.gob"
+#line 796 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 654 "mn-imap-mailbox.gob"
+#line 796 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1067 "mn-imap-mailbox.c"
+#line 1270 "mn-imap-mailbox.c"
 {
-#line 657 "mn-imap-mailbox.gob"
+#line 799 "mn-imap-mailbox.gob"
 	
     return self_session_write(priv, "LOGOUT");
   }}
-#line 1073 "mn-imap-mailbox.c"
+#line 1276 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 661 "mn-imap-mailbox.gob"
+#line 803 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_logout_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 1079 "mn-imap-mailbox.c"
+#line 1282 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_logout_cb"
-#line 661 "mn-imap-mailbox.gob"
+#line 803 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 661 "mn-imap-mailbox.gob"
+#line 803 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 661 "mn-imap-mailbox.gob"
+#line 803 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1088 "mn-imap-mailbox.c"
+#line 1291 "mn-imap-mailbox.c"
 {
-#line 665 "mn-imap-mailbox.gob"
+#line 807 "mn-imap-mailbox.gob"
 	
     if (response->continuation)
       return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
@@ -1102,26 +1305,26 @@ mn_imap_mailbox_handle_logout_cb (MNClientSession * session, MNClientSessionResp
     else
       return MN_CLIENT_SESSION_RESULT_CONTINUE;
   }}
-#line 1106 "mn-imap-mailbox.c"
+#line 1309 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 681 "mn-imap-mailbox.gob"
+#line 823 "mn-imap-mailbox.gob"
 static MNAuthenticatedMailboxResult 
-___17_mn_imap_mailbox_impl_authenticated_check (MNAuthenticatedMailbox * authenticated_mailbox G_GNUC_UNUSED, GError ** err)
-#line 1112 "mn-imap-mailbox.c"
+___1a_mn_imap_mailbox_impl_authenticated_check (MNAuthenticatedMailbox * authenticated_mailbox G_GNUC_UNUSED, GError ** err)
+#line 1315 "mn-imap-mailbox.c"
 #define PARENT_HANDLER(___authenticated_mailbox,___err) \
 	((MN_AUTHENTICATED_MAILBOX_CLASS(parent_class)->impl_authenticated_check)? \
 		(* MN_AUTHENTICATED_MAILBOX_CLASS(parent_class)->impl_authenticated_check)(___authenticated_mailbox,___err): \
 		((MNAuthenticatedMailboxResult )0))
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::impl_authenticated_check"
-#line 681 "mn-imap-mailbox.gob"
+#line 823 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (authenticated_mailbox != NULL, (MNAuthenticatedMailboxResult )0);
-#line 681 "mn-imap-mailbox.gob"
+#line 823 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (MN_IS_AUTHENTICATED_MAILBOX (authenticated_mailbox), (MNAuthenticatedMailboxResult )0);
-#line 1123 "mn-imap-mailbox.c"
+#line 1326 "mn-imap-mailbox.c"
 {
-#line 684 "mn-imap-mailbox.gob"
+#line 826 "mn-imap-mailbox.gob"
 	
     MNMailbox *mailbox = MN_MAILBOX(authenticated_mailbox);
     Self *self = SELF(authenticated_mailbox);
@@ -1135,13 +1338,14 @@ ___17_mn_imap_mailbox_impl_authenticated_check (MNAuthenticatedMailbox * authent
       { STATE_AUTHENTICATE,	self_enter_authenticate_cb,	self_handle_authenticate_cb },
 #endif
       { STATE_LOGIN,		self_enter_login_cb,		self_handle_login_cb },
-#ifdef WITH_MIME
       { STATE_EXAMINE,		self_enter_examine_cb,		self_handle_examine_cb },
       { STATE_SEARCH,		self_enter_search_cb,		self_handle_search_cb },
+#ifdef WITH_MIME
       { STATE_FETCH,		self_enter_fetch_cb,		self_handle_fetch_cb },
-#else /* WITH_MIME */
+#else
       { STATE_STATUS,		self_enter_status_cb,		self_handle_status_cb },
 #endif
+      { STATE_IDLE,		self_enter_idle_cb,		self_handle_idle_cb },
       { STATE_LOGOUT,		self_enter_logout_cb,		self_handle_logout_cb },
       
       MN_CLIENT_SESSION_STATES_END
@@ -1150,36 +1354,48 @@ ___17_mn_imap_mailbox_impl_authenticated_check (MNAuthenticatedMailbox * authent
       self_notice_cb,
       self_response_new_cb,
       self_response_free_cb,
-      self_custom_handler_cb
+      self_custom_handler_cb,
+      self_pre_read_cb,
+      self_post_read_cb
     };
     MNClientSessionPrivate priv;
     gboolean status;
 
-    memset(&priv, 0, sizeof(priv));
-    priv.mailbox = mailbox;
-    priv.self = self;
+    do
+      {
+	memset(&priv, 0, sizeof(priv));
+	priv.mailbox = mailbox;
+	priv.self = self;
     
-    status = mn_client_session_run(states,
-				   &callbacks,
+	status = mn_client_session_run(states,
+				       &callbacks,
 #ifdef WITH_SSL
-				   MN_URI_IS_SSL(mailbox->uri),
+				       MN_URI_IS_SSL(mailbox->uri),
 #endif
-				   mailbox->uri->hostname,
-				   mailbox->uri->port,
-				   mailbox->uri->username,
-				   MN_AUTHENTICATED_MAILBOX(self)->password,
-				   &priv,
-				   err);
+				       mailbox->uri->hostname,
+				       mailbox->uri->port,
+				       mailbox->uri->username,
+				       MN_AUTHENTICATED_MAILBOX(self)->password,
+				       &priv,
+				       err);
     
-    g_strfreev(priv.capabilities);
-    eel_g_slist_free_deep(priv.auth_mechanisms);
+	g_strfreev(priv.capabilities);
+	eel_g_slist_free_deep(priv.auth_mechanisms);
+
+	g_slist_free(priv.fetch_numbers);
+	g_free(priv.fetch_set);
 
 #ifdef WITH_MIME
-    g_slist_free(priv.fetch_numbers);
-    g_free(priv.fetch_set);
-    g_slist_free(priv.received_numbers);
-    mn_g_object_slist_free(priv.messages);
+	g_slist_free(priv.received_numbers);
+	mn_g_object_slist_free(priv.messages);
 #endif
+      }
+    while (status && priv.could_idle && ! REMOVED(self));
+
+    GDK_THREADS_ENTER();
+    mn_mailbox_set_must_poll(mailbox, TRUE);
+    gdk_flush();
+    GDK_THREADS_LEAVE();
 
     return status
       ? MN_AUTHENTICATED_MAILBOX_OK
@@ -1187,46 +1403,46 @@ ___17_mn_imap_mailbox_impl_authenticated_check (MNAuthenticatedMailbox * authent
 	 ? MN_AUTHENTICATED_MAILBOX_ERROR_AUTHENTICATION
 	 : MN_AUTHENTICATED_MAILBOX_ERROR_OTHER);
   }}
-#line 1191 "mn-imap-mailbox.c"
+#line 1407 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 750 "mn-imap-mailbox.gob"
+#line 905 "mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_notice_cb (MNClientSession * session, const char * str, MNClientSessionPrivate * priv)
-#line 1198 "mn-imap-mailbox.c"
+#line 1414 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::notice_cb"
-#line 750 "mn-imap-mailbox.gob"
+#line 905 "mn-imap-mailbox.gob"
 	g_return_if_fail (session != NULL);
-#line 750 "mn-imap-mailbox.gob"
+#line 905 "mn-imap-mailbox.gob"
 	g_return_if_fail (str != NULL);
-#line 750 "mn-imap-mailbox.gob"
+#line 905 "mn-imap-mailbox.gob"
 	g_return_if_fail (priv != NULL);
-#line 1207 "mn-imap-mailbox.c"
+#line 1423 "mn-imap-mailbox.c"
 {
-#line 754 "mn-imap-mailbox.gob"
+#line 909 "mn-imap-mailbox.gob"
 	
     mn_mailbox_notice(priv->mailbox, "%s", str);
   }}
-#line 1213 "mn-imap-mailbox.c"
+#line 1429 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 758 "mn-imap-mailbox.gob"
+#line 913 "mn-imap-mailbox.gob"
 static MNClientSessionResponse * 
 mn_imap_mailbox_response_new_cb (MNClientSession * session, const char * input, MNClientSessionPrivate * priv)
-#line 1219 "mn-imap-mailbox.c"
+#line 1435 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::response_new_cb"
-#line 758 "mn-imap-mailbox.gob"
+#line 913 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (MNClientSessionResponse * )0);
-#line 758 "mn-imap-mailbox.gob"
+#line 913 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (input != NULL, (MNClientSessionResponse * )0);
-#line 758 "mn-imap-mailbox.gob"
+#line 913 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (MNClientSessionResponse * )0);
-#line 1228 "mn-imap-mailbox.c"
+#line 1444 "mn-imap-mailbox.c"
 {
-#line 762 "mn-imap-mailbox.gob"
+#line 917 "mn-imap-mailbox.gob"
 	
     MNClientSessionResponse *response = NULL;
 
@@ -1273,24 +1489,24 @@ mn_imap_mailbox_response_new_cb (MNClientSession * session, const char * input, 
     
     return response;
   }}
-#line 1277 "mn-imap-mailbox.c"
+#line 1493 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 809 "mn-imap-mailbox.gob"
+#line 964 "mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_response_free_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 1283 "mn-imap-mailbox.c"
+#line 1499 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::response_free_cb"
-#line 809 "mn-imap-mailbox.gob"
+#line 964 "mn-imap-mailbox.gob"
 	g_return_if_fail (session != NULL);
-#line 809 "mn-imap-mailbox.gob"
+#line 964 "mn-imap-mailbox.gob"
 	g_return_if_fail (response != NULL);
-#line 809 "mn-imap-mailbox.gob"
+#line 964 "mn-imap-mailbox.gob"
 	g_return_if_fail (priv != NULL);
-#line 1292 "mn-imap-mailbox.c"
+#line 1508 "mn-imap-mailbox.c"
 {
-#line 813 "mn-imap-mailbox.gob"
+#line 968 "mn-imap-mailbox.gob"
 	
     g_free(response->continuation);
     g_free(response->tag);
@@ -1299,24 +1515,24 @@ mn_imap_mailbox_response_free_cb (MNClientSession * session, MNClientSessionResp
     g_free(response->arguments);
     g_free(response);
   }}
-#line 1303 "mn-imap-mailbox.c"
+#line 1519 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 822 "mn-imap-mailbox.gob"
+#line 977 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_custom_handler_cb (MNClientSession * session, MNClientSessionResponse * response, int result, MNClientSessionPrivate * priv)
-#line 1309 "mn-imap-mailbox.c"
+#line 1525 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::custom_handler_cb"
-#line 822 "mn-imap-mailbox.gob"
+#line 977 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 822 "mn-imap-mailbox.gob"
+#line 977 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 822 "mn-imap-mailbox.gob"
+#line 977 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1318 "mn-imap-mailbox.c"
+#line 1534 "mn-imap-mailbox.c"
 {
-#line 827 "mn-imap-mailbox.gob"
+#line 982 "mn-imap-mailbox.gob"
 	
     switch (result)
       {
@@ -1338,44 +1554,92 @@ mn_imap_mailbox_custom_handler_cb (MNClientSession * session, MNClientSessionRes
 	g_return_val_if_reached(0);
       }
   }}
-#line 1342 "mn-imap-mailbox.c"
+#line 1558 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 849 "mn-imap-mailbox.gob"
+#line 1004 "mn-imap-mailbox.gob"
+static void 
+mn_imap_mailbox_pre_read_cb (MNClientSession * session, MNClientSessionPrivate * priv)
+#line 1564 "mn-imap-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::pre_read_cb"
+#line 1004 "mn-imap-mailbox.gob"
+	g_return_if_fail (session != NULL);
+#line 1004 "mn-imap-mailbox.gob"
+	g_return_if_fail (priv != NULL);
+#line 1571 "mn-imap-mailbox.c"
+{
+#line 1007 "mn-imap-mailbox.gob"
+	
+    if (priv->idle_state == IDLE_STATE_IDLING)
+      {
+	g_mutex_lock(priv->self->_priv->idle_session_mutex);
+	priv->self->_priv->idle_session = priv;
+	g_mutex_unlock(priv->self->_priv->idle_session_mutex);
+      }
+  }}
+#line 1582 "mn-imap-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 1016 "mn-imap-mailbox.gob"
+static void 
+mn_imap_mailbox_post_read_cb (MNClientSession * session, MNClientSessionPrivate * priv)
+#line 1588 "mn-imap-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::post_read_cb"
+#line 1016 "mn-imap-mailbox.gob"
+	g_return_if_fail (session != NULL);
+#line 1016 "mn-imap-mailbox.gob"
+	g_return_if_fail (priv != NULL);
+#line 1595 "mn-imap-mailbox.c"
+{
+#line 1019 "mn-imap-mailbox.gob"
+	
+    if (priv->idle_state == IDLE_STATE_IDLING)
+      {
+	g_mutex_lock(priv->self->_priv->idle_session_mutex);
+	priv->self->_priv->idle_session = NULL;
+	g_mutex_unlock(priv->self->_priv->idle_session_mutex);
+      }
+  }}
+#line 1606 "mn-imap-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 1028 "mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_session_set_error_from_arguments (MNClientSessionPrivate * priv, MNClientSessionResponse * response)
-#line 1348 "mn-imap-mailbox.c"
+#line 1612 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_set_error_from_arguments"
-#line 849 "mn-imap-mailbox.gob"
+#line 1028 "mn-imap-mailbox.gob"
 	g_return_if_fail (priv != NULL);
-#line 849 "mn-imap-mailbox.gob"
+#line 1028 "mn-imap-mailbox.gob"
 	g_return_if_fail (response != NULL);
-#line 1355 "mn-imap-mailbox.c"
+#line 1619 "mn-imap-mailbox.c"
 {
-#line 852 "mn-imap-mailbox.gob"
+#line 1031 "mn-imap-mailbox.gob"
 	
     if (response->arguments)
       mn_client_session_error(priv->session, "\"%s\"", response->arguments);
     else
       mn_client_session_error(priv->session, _("unknown server error"));
   }}
-#line 1364 "mn-imap-mailbox.c"
+#line 1628 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 859 "mn-imap-mailbox.gob"
+#line 1038 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_session_write (MNClientSessionPrivate * priv, const char * format, ...)
-#line 1370 "mn-imap-mailbox.c"
+#line 1634 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_write"
-#line 859 "mn-imap-mailbox.gob"
+#line 1038 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 859 "mn-imap-mailbox.gob"
+#line 1038 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (format != NULL, (int )0);
-#line 1377 "mn-imap-mailbox.c"
+#line 1641 "mn-imap-mailbox.c"
 {
-#line 863 "mn-imap-mailbox.gob"
+#line 1042 "mn-imap-mailbox.gob"
 	
     va_list args;
     char *command;
@@ -1394,20 +1658,20 @@ mn_imap_mailbox_session_write (MNClientSessionPrivate * priv, const char * forma
 
     return result;
   }}
-#line 1398 "mn-imap-mailbox.c"
+#line 1662 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 882 "mn-imap-mailbox.gob"
+#line 1061 "mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_session_parse_capabilities (MNClientSessionPrivate * priv, const char * capabilities)
-#line 1404 "mn-imap-mailbox.c"
+#line 1668 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_parse_capabilities"
-#line 882 "mn-imap-mailbox.gob"
+#line 1061 "mn-imap-mailbox.gob"
 	g_return_if_fail (priv != NULL);
-#line 1409 "mn-imap-mailbox.c"
+#line 1673 "mn-imap-mailbox.c"
 {
-#line 885 "mn-imap-mailbox.gob"
+#line 1064 "mn-imap-mailbox.gob"
 	
     if (capabilities)
       {
@@ -1422,22 +1686,22 @@ mn_imap_mailbox_session_parse_capabilities (MNClientSessionPrivate * priv, const
     else
       priv->capabilities = g_new0(char *, 1);
   }}
-#line 1426 "mn-imap-mailbox.c"
+#line 1690 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 900 "mn-imap-mailbox.gob"
+#line 1079 "mn-imap-mailbox.gob"
 static gboolean 
 mn_imap_mailbox_session_has_capability (MNClientSessionPrivate * priv, const char * capability)
-#line 1432 "mn-imap-mailbox.c"
+#line 1696 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_has_capability"
-#line 900 "mn-imap-mailbox.gob"
+#line 1079 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (gboolean )0);
-#line 900 "mn-imap-mailbox.gob"
+#line 1079 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (capability != NULL, (gboolean )0);
-#line 1439 "mn-imap-mailbox.c"
+#line 1703 "mn-imap-mailbox.c"
 {
-#line 903 "mn-imap-mailbox.gob"
+#line 1082 "mn-imap-mailbox.gob"
 	
     int i;
 
@@ -1449,20 +1713,20 @@ mn_imap_mailbox_session_has_capability (MNClientSessionPrivate * priv, const cha
     
     return FALSE;
   }}
-#line 1453 "mn-imap-mailbox.c"
+#line 1717 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 915 "mn-imap-mailbox.gob"
+#line 1094 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_session_after_capability (MNClientSessionPrivate * priv)
-#line 1459 "mn-imap-mailbox.c"
+#line 1723 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_after_capability"
-#line 915 "mn-imap-mailbox.gob"
+#line 1094 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1464 "mn-imap-mailbox.c"
+#line 1728 "mn-imap-mailbox.c"
 {
-#line 917 "mn-imap-mailbox.gob"
+#line 1096 "mn-imap-mailbox.gob"
 	
 #ifdef WITH_SSL
     if (MN_URI_IS_INBAND_SSL(priv->mailbox->uri)
@@ -1481,20 +1745,20 @@ mn_imap_mailbox_session_after_capability (MNClientSessionPrivate * priv)
 #endif /* WITH_SSL */
       return self_session_authenticate(priv);
   }}
-#line 1485 "mn-imap-mailbox.c"
+#line 1749 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 936 "mn-imap-mailbox.gob"
+#line 1115 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_session_authenticate (MNClientSessionPrivate * priv)
-#line 1491 "mn-imap-mailbox.c"
+#line 1755 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_authenticate"
-#line 936 "mn-imap-mailbox.gob"
+#line 1115 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1496 "mn-imap-mailbox.c"
+#line 1760 "mn-imap-mailbox.c"
 {
-#line 938 "mn-imap-mailbox.gob"
+#line 1117 "mn-imap-mailbox.gob"
 	
     if (priv->mailbox->uri->authmech)
       {
@@ -1523,20 +1787,20 @@ mn_imap_mailbox_session_authenticate (MNClientSessionPrivate * priv)
 	return STATE_LOGIN;
       }
   }}
-#line 1527 "mn-imap-mailbox.c"
+#line 1791 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 967 "mn-imap-mailbox.gob"
+#line 1146 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv)
-#line 1533 "mn-imap-mailbox.c"
+#line 1797 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_authenticate_fallback"
-#line 967 "mn-imap-mailbox.gob"
+#line 1146 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1538 "mn-imap-mailbox.c"
+#line 1802 "mn-imap-mailbox.c"
 {
-#line 969 "mn-imap-mailbox.gob"
+#line 1148 "mn-imap-mailbox.gob"
 	
     if (! priv->mailbox->uri->authmech)
       {
@@ -1547,28 +1811,30 @@ mn_imap_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv)
     priv->authentication_failed = TRUE;
     return mn_client_session_error(priv->session, _("authentication failed"));
   }}
-#line 1551 "mn-imap-mailbox.c"
+#line 1815 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 980 "mn-imap-mailbox.gob"
+#line 1159 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_session_check_mail (MNClientSessionPrivate * priv)
-#line 1557 "mn-imap-mailbox.c"
+#line 1821 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_check_mail"
-#line 980 "mn-imap-mailbox.gob"
+#line 1159 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1562 "mn-imap-mailbox.c"
+#line 1826 "mn-imap-mailbox.c"
 {
-#line 982 "mn-imap-mailbox.gob"
+#line 1161 "mn-imap-mailbox.gob"
 	
 #ifdef WITH_MIME
     return STATE_EXAMINE;
 #else
-    return STATE_STATUS;
-#endif
+    return self_session_has_capability(priv, "IDLE")
+      ? STATE_EXAMINE
+      : STATE_STATUS;
+#endif /* WITH_MIME */
   }}
-#line 1572 "mn-imap-mailbox.c"
+#line 1838 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
 /**
@@ -1579,17 +1845,17 @@ mn_imap_mailbox_session_check_mail (MNClientSessionPrivate * priv)
  *
  * Return value: the quoted string.
  **/
-#line 998 "mn-imap-mailbox.gob"
+#line 1179 "mn-imap-mailbox.gob"
 static char * 
 mn_imap_mailbox_quote (const char * str)
-#line 1586 "mn-imap-mailbox.c"
+#line 1852 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::quote"
-#line 998 "mn-imap-mailbox.gob"
+#line 1179 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (str != NULL, (char * )0);
-#line 1591 "mn-imap-mailbox.c"
+#line 1857 "mn-imap-mailbox.c"
 {
-#line 1000 "mn-imap-mailbox.gob"
+#line 1181 "mn-imap-mailbox.gob"
 	
     GString *quoted;
     int i;
@@ -1604,5 +1870,5 @@ mn_imap_mailbox_quote (const char * str)
 
     return g_string_free(quoted, FALSE);
   }}
-#line 1608 "mn-imap-mailbox.c"
+#line 1874 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-imap-mailbox.gob b/src/mn-imap-mailbox.gob
@@ -1,6 +1,10 @@
 /* 
  * mn-imap-mailbox.gob - IMAP 4rev1 support for Mail Notification
- * Complies with RFC 3501
+ *
+ * Compliance:
+ *
+ *	- RFC 3501
+ *	- RFC 2177
  *
  * Copyright (c) 2004 Jean-Yves Lefort <jylefort@brutele.be>
  *
@@ -24,6 +28,11 @@ requires 2.0.10
 %headertop{
 #include "mn-authenticated-mailbox.h"
 %}
+
+%privateheader{
+#include "mn-client-session.h"
+%}
+
 %{
 #include "config.h"
 #include <stdio.h>
@@ -35,7 +44,6 @@ requires 2.0.10
 #include <eel/eel.h>
 #include "mn-mailbox-private.h"
 #include "mn-util.h"
-#include "mn-client-session.h"
 #ifdef WITH_MIME
 #include "mn-message-mime.h"
 #endif
@@ -47,6 +55,8 @@ requires 2.0.10
 #define IS_BAD(response)		IS(response, "BAD")
 #define IS_BYE(response)		IS(response, "BYE")
 
+#define REMOVED(self)			(g_atomic_int_get(&(self)->_priv->removed))
+
   enum
   {
     STATE_GREETING = MN_CLIENT_SESSION_INITIAL_STATE,
@@ -58,13 +68,14 @@ requires 2.0.10
     STATE_AUTHENTICATE,
 #endif
     STATE_LOGIN,
-#ifdef WITH_MIME
     STATE_EXAMINE,
     STATE_SEARCH,
+#ifdef WITH_MIME
     STATE_FETCH,
 #else /* WITH_MIME */
     STATE_STATUS,
 #endif
+    STATE_IDLE,
     STATE_LOGOUT
   };
   
@@ -75,31 +86,46 @@ requires 2.0.10
     RESULT_DEFAULT_HANDLER	= -3  /* invoke the default response handler */
   };
 
+  typedef enum
+  {
+    IDLE_STATE_NORMAL,
+    IDLE_STATE_IDLING,
+    IDLE_STATE_WAS_IDLING
+  } IdleState;
+
   struct _MNClientSessionPrivate
   {
     MNMailbox		*mailbox;
     MNIMAPMailbox	*self;
     MNClientSession	*session;
+
     int			numeric_tag;
     char		tag[5];
+
     char		**capabilities;
     GSList		*auth_mechanisms;
     gboolean		authentication_failed;
-#ifdef WITH_MIME
+
     gboolean		search_received;
     GSList		*fetch_numbers;
     char		*fetch_set;
+
+#ifdef WITH_MIME
     GSList		*received_numbers;
     GSList		*messages;
 #else /* WITH_MIME */
     gboolean		status_received;
 #endif
+
 #ifdef WITH_SSL
     gboolean		starttls_completed;
 #endif
 #ifdef WITH_SASL
     const char		*sasl_mechanism;
 #endif
+
+    IdleState		idle_state;
+    gboolean		could_idle;	/* could idle at least once */
   };
   
   struct _MNClientSessionResponse
@@ -114,6 +140,11 @@ requires 2.0.10
 
 class MN:IMAP:Mailbox from MN:Authenticated:Mailbox
 {
+  private int removed;		/* boolean, access with g_atomic_int_ API */
+
+  private MNClientSessionPrivate *idle_session;
+  private GMutex *idle_session_mutex = {g_mutex_new()} destroywith g_mutex_free;
+  
   class_init (class)
   {
     MN_MAILBOX_CLASS(class)->format = "IMAP";
@@ -142,6 +173,24 @@ class MN:IMAP:Mailbox from MN:Authenticated:Mailbox
     return MN_URI_IS_IMAP(uri);
   }
 
+  override (MN:Mailbox) void
+    removed (MN:Mailbox *mailbox (check null type))
+  {
+    Self *self = SELF(mailbox);
+
+    g_atomic_int_inc(&selfp->removed);
+
+    g_mutex_lock(selfp->idle_session_mutex);
+    if (selfp->idle_session)
+      {
+	mn_client_session_write(selfp->idle_session->session, "DONE");
+	selfp->idle_session->idle_state = IDLE_STATE_WAS_IDLING;
+      }
+    g_mutex_unlock(selfp->idle_session_mutex);
+
+    PARENT_HANDLER(mailbox);
+  }
+
   private int
     handle_greeting_cb (MNClientSession *session (check null),
 			MNClientSessionResponse *response (check null),
@@ -266,11 +315,17 @@ class MN:IMAP:Mailbox from MN:Authenticated:Mailbox
 			   MNClientSessionPrivate *priv (check null))
   {
 #ifdef WITH_SASL
+    /*
+     * RFC 3501 6.2.2 specifies that the IMAP protocol does not
+     * support the "initial response" feature of SASL, so we set the
+     * initial_response argument to FALSE.
+     */
     if (mn_client_session_sasl_authentication_start(priv->session,
 						    "imap",
 						    priv->auth_mechanisms,
 						    priv->mailbox->uri->authmech,
-						    &priv->sasl_mechanism))
+						    &priv->sasl_mechanism,
+						    FALSE))
       return self_session_write(priv, "AUTHENTICATE %s", priv->sasl_mechanism);
     else
       return self_session_authenticate_fallback(priv);
@@ -366,7 +421,6 @@ class MN:IMAP:Mailbox from MN:Authenticated:Mailbox
     enter_examine_cb (MNClientSession *session (check null),
 		      MNClientSessionPrivate *priv (check null))
   {
-#ifdef WITH_MIME
     char *quoted_mailbox;
     int result;
 
@@ -375,9 +429,6 @@ class MN:IMAP:Mailbox from MN:Authenticated:Mailbox
     g_free(quoted_mailbox);
 
     return result;
-#else /* WITH_MIME */
-    g_return_val_if_reached(0);
-#endif
   }
   
   private int
@@ -385,7 +436,6 @@ class MN:IMAP:Mailbox from MN:Authenticated:Mailbox
 		       MNClientSessionResponse *response (check null),
 		       MNClientSessionPrivate *priv (check null))
   {
-#ifdef WITH_MIME
     if (response->continuation)
       return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
     else if (response->tag)
@@ -402,20 +452,21 @@ class MN:IMAP:Mailbox from MN:Authenticated:Mailbox
       }
 
     return RESULT_DEFAULT_HANDLER;
-#else /* WITH_MIME */
-    g_return_val_if_reached(0);
-#endif
   }
   
   private int
     enter_search_cb (MNClientSession *session (check null),
 		     MNClientSessionPrivate *priv (check null))
   {
-#ifdef WITH_MIME
+    priv->search_received = FALSE;
+
+    g_slist_free(priv->fetch_numbers);
+    priv->fetch_numbers = NULL;
+
+    g_free(priv->fetch_set);
+    priv->fetch_set = NULL;
+    
     return self_session_write(priv, "SEARCH UNSEEN");
-#else
-    g_return_val_if_reached(0);
-#endif
   }
   
   private int
@@ -423,7 +474,6 @@ class MN:IMAP:Mailbox from MN:Authenticated:Mailbox
 		      MNClientSessionResponse *response (check null),
 		      MNClientSessionPrivate *priv (check null))
   {
-#ifdef WITH_MIME
     if (response->continuation)
       return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
     else if (response->tag)
@@ -435,16 +485,31 @@ class MN:IMAP:Mailbox from MN:Authenticated:Mailbox
 		if (priv->search_received)
 		  {
 		    if (priv->fetch_set)
-		      return STATE_FETCH;
+		      {
+#ifdef WITH_MIME
+			return STATE_FETCH;
+#else
+			GDK_THREADS_ENTER();
+			mn_mailbox_set_has_new(priv->mailbox, TRUE);
+			gdk_flush();
+			GDK_THREADS_LEAVE();
+
+			return STATE_IDLE;
+#endif /* WITH_MIME */
+		      }
 		    else
 		      {
 			GDK_THREADS_ENTER();
 			mn_mailbox_set_has_new(priv->mailbox, FALSE);
+#ifdef WITH_MIME
 			mn_mailbox_set_messages(priv->mailbox, NULL);
+#endif
 			gdk_flush();
 			GDK_THREADS_LEAVE();
 
-			return STATE_LOGOUT;
+			return self_session_has_capability(priv, "IDLE")
+			  ? STATE_IDLE
+			  : STATE_LOGOUT;
 		      }
 		  }
 		else		/* compliance error */
@@ -488,9 +553,6 @@ class MN:IMAP:Mailbox from MN:Authenticated:Mailbox
       }
 
     return RESULT_DEFAULT_HANDLER;
-#else /* WITH_MIME */
-    g_return_val_if_reached(0);
-#endif
   }
   
   private int
@@ -499,6 +561,13 @@ class MN:IMAP:Mailbox from MN:Authenticated:Mailbox
   {
 #ifdef WITH_MIME
     g_return_val_if_fail(priv->fetch_set != NULL, 0);
+
+    g_slist_free(priv->received_numbers);
+    priv->received_numbers = NULL;
+
+    mn_g_object_slist_free(priv->messages);
+    priv->messages = NULL;
+
     return self_session_write(priv, "FETCH %s BODY[HEADER]", priv->fetch_set);
 #else /* WITH_MIME */
     g_return_val_if_reached(0);
@@ -532,7 +601,9 @@ class MN:IMAP:Mailbox from MN:Authenticated:Mailbox
 		gdk_flush();
 		GDK_THREADS_LEAVE();
 		
-		return STATE_LOGOUT;
+		return self_session_has_capability(priv, "IDLE")
+		  ? STATE_IDLE
+		  : STATE_LOGOUT;
 	      }
 	    else if (IS_NO(response) || IS_BAD(response))
 	      return RESULT_ERROR_LOGOUT;
@@ -584,6 +655,77 @@ class MN:IMAP:Mailbox from MN:Authenticated:Mailbox
   }
   
   private int
+    enter_idle_cb (MNClientSession *session (check null),
+		   MNClientSessionPrivate *priv (check null))
+  {
+    priv->idle_state = IDLE_STATE_NORMAL;
+    return REMOVED(priv->self) ? STATE_LOGOUT : self_session_write(priv, "IDLE");
+  }
+  
+  private int
+    handle_idle_cb (MNClientSession *session (check null),
+		    MNClientSessionResponse *response (check null),
+		    MNClientSessionPrivate *priv (check null))
+  {
+    if (priv->idle_state == IDLE_STATE_IDLING)
+      {
+	if (response->continuation || response->tag)
+	  return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+
+	priv->idle_state = IDLE_STATE_WAS_IDLING;
+
+	if (IS_BYE(response))
+	  return MN_CLIENT_SESSION_RESULT_END; /* we'll reconnect */
+	else
+	  /* any other response wakes us up */
+	  return mn_client_session_write(session, "DONE");
+      }
+    else
+      {
+	if (response->continuation)
+	  {
+	    if (priv->idle_state == IDLE_STATE_WAS_IDLING)
+	      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+	    else
+	      {
+		/* we're now in the idle loop */
+		priv->idle_state = IDLE_STATE_IDLING;
+		priv->could_idle = TRUE;
+		
+		GDK_THREADS_ENTER();
+		mn_mailbox_set_must_poll(priv->mailbox, FALSE);
+		gdk_flush();
+		GDK_THREADS_LEAVE();
+
+		return MN_CLIENT_SESSION_RESULT_CONTINUE;
+	      }
+	  }
+	else if (response->tag)
+	  {
+	    if (HAS_CURRENT_TAG(response, priv))
+	      {
+		if (IS_OK(response))
+		  return REMOVED(priv->self) ? STATE_LOGOUT : STATE_SEARCH;
+		else if (IS_NO(response) || IS_BAD(response))
+		  /*
+		   * The server advertised IDLE but does not actually
+		   * support it.
+		   *
+		   * Although strictly speaking this can be considered
+		   * a compliance fault, we'll be tolerant and just
+		   * logout without setting an error.
+		   */
+		  return STATE_LOGOUT;
+		else
+		  return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+	      }
+	  }
+      }
+
+    return RESULT_DEFAULT_HANDLER;
+  }
+
+  private int
     enter_status_cb (MNClientSession *session (check null),
 		     MNClientSessionPrivate *priv (check null))
   {
@@ -694,13 +836,14 @@ class MN:IMAP:Mailbox from MN:Authenticated:Mailbox
       { STATE_AUTHENTICATE,	self_enter_authenticate_cb,	self_handle_authenticate_cb },
 #endif
       { STATE_LOGIN,		self_enter_login_cb,		self_handle_login_cb },
-#ifdef WITH_MIME
       { STATE_EXAMINE,		self_enter_examine_cb,		self_handle_examine_cb },
       { STATE_SEARCH,		self_enter_search_cb,		self_handle_search_cb },
+#ifdef WITH_MIME
       { STATE_FETCH,		self_enter_fetch_cb,		self_handle_fetch_cb },
-#else /* WITH_MIME */
+#else
       { STATE_STATUS,		self_enter_status_cb,		self_handle_status_cb },
 #endif
+      { STATE_IDLE,		self_enter_idle_cb,		self_handle_idle_cb },
       { STATE_LOGOUT,		self_enter_logout_cb,		self_handle_logout_cb },
       
       MN_CLIENT_SESSION_STATES_END
@@ -709,36 +852,48 @@ class MN:IMAP:Mailbox from MN:Authenticated:Mailbox
       self_notice_cb,
       self_response_new_cb,
       self_response_free_cb,
-      self_custom_handler_cb
+      self_custom_handler_cb,
+      self_pre_read_cb,
+      self_post_read_cb
     };
     MNClientSessionPrivate priv;
     gboolean status;
 
-    memset(&priv, 0, sizeof(priv));
-    priv.mailbox = mailbox;
-    priv.self = self;
+    do
+      {
+	memset(&priv, 0, sizeof(priv));
+	priv.mailbox = mailbox;
+	priv.self = self;
     
-    status = mn_client_session_run(states,
-				   &callbacks,
+	status = mn_client_session_run(states,
+				       &callbacks,
 #ifdef WITH_SSL
-				   MN_URI_IS_SSL(mailbox->uri),
+				       MN_URI_IS_SSL(mailbox->uri),
 #endif
-				   mailbox->uri->hostname,
-				   mailbox->uri->port,
-				   mailbox->uri->username,
-				   MN_AUTHENTICATED_MAILBOX(self)->password,
-				   &priv,
-				   err);
+				       mailbox->uri->hostname,
+				       mailbox->uri->port,
+				       mailbox->uri->username,
+				       MN_AUTHENTICATED_MAILBOX(self)->password,
+				       &priv,
+				       err);
     
-    g_strfreev(priv.capabilities);
-    eel_g_slist_free_deep(priv.auth_mechanisms);
+	g_strfreev(priv.capabilities);
+	eel_g_slist_free_deep(priv.auth_mechanisms);
+
+	g_slist_free(priv.fetch_numbers);
+	g_free(priv.fetch_set);
 
 #ifdef WITH_MIME
-    g_slist_free(priv.fetch_numbers);
-    g_free(priv.fetch_set);
-    g_slist_free(priv.received_numbers);
-    mn_g_object_slist_free(priv.messages);
+	g_slist_free(priv.received_numbers);
+	mn_g_object_slist_free(priv.messages);
 #endif
+      }
+    while (status && priv.could_idle && ! REMOVED(self));
+
+    GDK_THREADS_ENTER();
+    mn_mailbox_set_must_poll(mailbox, TRUE);
+    gdk_flush();
+    GDK_THREADS_LEAVE();
 
     return status
       ? MN_AUTHENTICATED_MAILBOX_OK
@@ -847,6 +1002,30 @@ class MN:IMAP:Mailbox from MN:Authenticated:Mailbox
   }
 
   private void
+    pre_read_cb (MNClientSession *session (check null),
+		 MNClientSessionPrivate *priv (check null))
+  {
+    if (priv->idle_state == IDLE_STATE_IDLING)
+      {
+	g_mutex_lock(priv->self->_priv->idle_session_mutex);
+	priv->self->_priv->idle_session = priv;
+	g_mutex_unlock(priv->self->_priv->idle_session_mutex);
+      }
+  }
+
+  private void
+    post_read_cb (MNClientSession *session (check null),
+		  MNClientSessionPrivate *priv (check null))
+  {
+    if (priv->idle_state == IDLE_STATE_IDLING)
+      {
+	g_mutex_lock(priv->self->_priv->idle_session_mutex);
+	priv->self->_priv->idle_session = NULL;
+	g_mutex_unlock(priv->self->_priv->idle_session_mutex);
+      }
+  }
+  
+  private void
     session_set_error_from_arguments (MNClientSessionPrivate *priv (check null),
 				      MNClientSessionResponse *response (check null))
   {
@@ -983,8 +1162,10 @@ class MN:IMAP:Mailbox from MN:Authenticated:Mailbox
 #ifdef WITH_MIME
     return STATE_EXAMINE;
 #else
-    return STATE_STATUS;
-#endif
+    return self_session_has_capability(priv, "IDLE")
+      ? STATE_EXAMINE
+      : STATE_STATUS;
+#endif /* WITH_MIME */
   }
 
   /**
diff --git a/src/mn-imap-mailbox.h b/src/mn-imap-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
@@ -25,6 +25,9 @@ extern "C" {
 
 #define MN_IMAP_MAILBOX_GET_CLASS(obj)	G_TYPE_INSTANCE_GET_CLASS((obj), mn_imap_mailbox_get_type(), MNIMAPMailboxClass)
 
+/* Private structure type */
+typedef struct _MNIMAPMailboxPrivate MNIMAPMailboxPrivate;
+
 /*
  * Main object structure
  */
@@ -34,6 +37,8 @@ typedef struct _MNIMAPMailbox MNIMAPMailbox;
 #endif
 struct _MNIMAPMailbox {
 	MNAuthenticatedMailbox __parent__;
+	/*< private >*/
+	MNIMAPMailboxPrivate *_priv;
 };
 
 /*
diff --git a/src/mn-mail-icon-private.h b/src/mn-mail-icon-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #ifndef __MN_MAIL_ICON_PRIVATE_H__
 #define __MN_MAIL_ICON_PRIVATE_H__
@@ -9,10 +9,20 @@
 extern "C" {
 #endif /* __cplusplus */
 
+
+#line 27 "mn-mail-icon.gob"
+
+#include "mn-tooltips.h"
+
+#line 18 "mn-mail-icon-private.h"
 struct _MNMailIconPrivate {
-#line 39 "mn-mail-icon.gob"
+#line 41 "mn-mail-icon.gob"
+	MNTooltips * tooltips;
+#line 42 "mn-mail-icon.gob"
+	GtkWidget * event_box;
+#line 45 "mn-mail-icon.gob"
 	GtkWidget * menu;
-#line 16 "mn-mail-icon-private.h"
+#line 26 "mn-mail-icon-private.h"
 };
 
 #ifdef __cplusplus
diff --git a/src/mn-mail-icon.c b/src/mn-mail-icon.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.10) on Mon Oct 25 15:24:34 2004
+/* Generated by GOB (v2.0.11) on Sun Oct 31 18:41:22 2004
    (do not edit directly) */
 
 /* End world hunger, donate to the World Food Programme, http://www.wfp.org */
 
 #define GOB_VERSION_MAJOR 2
 #define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 10
+#define GOB_VERSION_PATCHLEVEL 11
 
 #define selfp (self->_priv)
 
@@ -23,7 +23,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 26 "mn-mail-icon.gob"
+#line 31 "mn-mail-icon.gob"
 
 #include "config.h"
 #include <gdk/gdkkeysyms.h>
@@ -48,6 +48,7 @@ typedef MNMailIconClass SelfClass;
 /* here are local prototypes */
 static void mn_mail_icon_activate (MNMailIcon * self) G_GNUC_UNUSED;
 static void mn_mail_icon_activate_summary (MNMailIcon * self) G_GNUC_UNUSED;
+static void mn_mail_icon_activate_mail_reader (MNMailIcon * self) G_GNUC_UNUSED;
 static void mn_mail_icon_activate_update (MNMailIcon * self) G_GNUC_UNUSED;
 static void mn_mail_icon_activate_properties (MNMailIcon * self) G_GNUC_UNUSED;
 static void mn_mail_icon_activate_help (MNMailIcon * self) G_GNUC_UNUSED;
@@ -55,6 +56,7 @@ static void mn_mail_icon_activate_about (MNMailIcon * self) G_GNUC_UNUSED;
 static void mn_mail_icon_activate_remove (MNMailIcon * self) G_GNUC_UNUSED;
 static void mn_mail_icon_class_init (MNMailIconClass * class) G_GNUC_UNUSED;
 static void mn_mail_icon_init (MNMailIcon * self) G_GNUC_UNUSED;
+static gboolean mn_mail_icon_show_help_h (GtkWidget * widget, GtkWidgetHelpType help_type, gpointer user_data) G_GNUC_UNUSED;
 static gboolean mn_mail_icon_button_press_event_h (GtkWidget * widget, GdkEventButton * event, gpointer user_data) G_GNUC_UNUSED;
 static gboolean mn_mail_icon_button_release_event_h (GtkWidget * widget, GdkEventButton * event, gpointer user_data) G_GNUC_UNUSED;
 static gboolean mn_mail_icon_popup_menu_h (GtkWidget * widget, gpointer user_data) G_GNUC_UNUSED;
@@ -68,6 +70,9 @@ static gboolean mn_mail_icon_popup_menu_h (GtkWidget * widget, gpointer user_dat
 #define self_connect__activate_summary(object,func,data)	mn_mail_icon_connect__activate_summary((object),(func),(data))
 #define self_connect_after__activate_summary(object,func,data)	mn_mail_icon_connect_after__activate_summary((object),(func),(data))
 #define self_connect_data__activate_summary(object,func,data,destroy_data,flags)	mn_mail_icon_connect_data__activate_summary((object),(func),(data),(destroy_data),(flags))
+#define self_connect__activate_mail_reader(object,func,data)	mn_mail_icon_connect__activate_mail_reader((object),(func),(data))
+#define self_connect_after__activate_mail_reader(object,func,data)	mn_mail_icon_connect_after__activate_mail_reader((object),(func),(data))
+#define self_connect_data__activate_mail_reader(object,func,data,destroy_data,flags)	mn_mail_icon_connect_data__activate_mail_reader((object),(func),(data),(destroy_data),(flags))
 #define self_connect__activate_update(object,func,data)	mn_mail_icon_connect__activate_update((object),(func),(data))
 #define self_connect_after__activate_update(object,func,data)	mn_mail_icon_connect_after__activate_update((object),(func),(data))
 #define self_connect_data__activate_update(object,func,data,destroy_data,flags)	mn_mail_icon_connect_data__activate_update((object),(func),(data),(destroy_data),(flags))
@@ -87,6 +92,7 @@ static gboolean mn_mail_icon_popup_menu_h (GtkWidget * widget, gpointer user_dat
 enum {
 	ACTIVATE_SIGNAL,
 	ACTIVATE_SUMMARY_SIGNAL,
+	ACTIVATE_MAIL_READER_SIGNAL,
 	ACTIVATE_UPDATE_SIGNAL,
 	ACTIVATE_PROPERTIES_SIGNAL,
 	ACTIVATE_HELP_SIGNAL,
@@ -103,14 +109,17 @@ static EggTrayIconClass *parent_class = NULL;
 /* Short form macros */
 #define self_activate mn_mail_icon_activate
 #define self_activate_summary mn_mail_icon_activate_summary
+#define self_activate_mail_reader mn_mail_icon_activate_mail_reader
 #define self_activate_update mn_mail_icon_activate_update
 #define self_activate_properties mn_mail_icon_activate_properties
 #define self_activate_help mn_mail_icon_activate_help
 #define self_activate_about mn_mail_icon_activate_about
 #define self_activate_remove mn_mail_icon_activate_remove
+#define self_show_help_h mn_mail_icon_show_help_h
 #define self_button_press_event_h mn_mail_icon_button_press_event_h
 #define self_button_release_event_h mn_mail_icon_button_release_event_h
 #define self_popup_menu_h mn_mail_icon_popup_menu_h
+#define self_set_tip_widget mn_mail_icon_set_tip_widget
 #define self_new mn_mail_icon_new
 GType
 mn_mail_icon_get_type (void)
@@ -162,9 +171,9 @@ ___dispose (GObject *obj_self)
 	MNMailIcon *self G_GNUC_UNUSED = MN_MAIL_ICON (obj_self);
 	if (G_OBJECT_CLASS (parent_class)->dispose) \
 		(* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
-#line 36 "mn-mail-icon.gob"
-	if(self->tooltips) { g_object_unref ((gpointer) self->tooltips); self->tooltips = NULL; }
-#line 168 "mn-mail-icon.c"
+#line 41 "mn-mail-icon.gob"
+	if(self->_priv->tooltips) { g_object_unref ((gpointer) self->_priv->tooltips); self->_priv->tooltips = NULL; }
+#line 177 "mn-mail-icon.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -177,16 +186,16 @@ ___finalize(GObject *obj_self)
 	gpointer priv G_GNUC_UNUSED = self->_priv;
 	if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-#line 39 "mn-mail-icon.gob"
+#line 45 "mn-mail-icon.gob"
 	if(self->_priv->menu) { gtk_widget_destroy ((gpointer) self->_priv->menu); self->_priv->menu = NULL; }
-#line 183 "mn-mail-icon.c"
+#line 192 "mn-mail-icon.c"
 }
 #undef __GOB_FUNCTION__
 
-#line 57 "mn-mail-icon.gob"
+#line 66 "mn-mail-icon.gob"
 static void 
 mn_mail_icon_class_init (MNMailIconClass * class G_GNUC_UNUSED)
-#line 190 "mn-mail-icon.c"
+#line 199 "mn-mail-icon.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Icon::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
@@ -211,6 +220,14 @@ mn_mail_icon_class_init (MNMailIconClass * class G_GNUC_UNUSED)
 			NULL, NULL,
 			g_cclosure_marshal_VOID__VOID,
 			G_TYPE_NONE, 0);
+	object_signals[ACTIVATE_MAIL_READER_SIGNAL] =
+		g_signal_new ("activate_mail_reader",
+			G_TYPE_FROM_CLASS (g_object_class),
+			(GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+			G_STRUCT_OFFSET (MNMailIconClass, activate_mail_reader),
+			NULL, NULL,
+			g_cclosure_marshal_VOID__VOID,
+			G_TYPE_NONE, 0);
 	object_signals[ACTIVATE_UPDATE_SIGNAL] =
 		g_signal_new ("activate_update",
 			G_TYPE_FROM_CLASS (g_object_class),
@@ -254,6 +271,7 @@ mn_mail_icon_class_init (MNMailIconClass * class G_GNUC_UNUSED)
 
 	class->activate = NULL;
 	class->activate_summary = NULL;
+	class->activate_mail_reader = NULL;
 	class->activate_update = NULL;
 	class->activate_properties = NULL;
 	class->activate_help = NULL;
@@ -262,7 +280,7 @@ mn_mail_icon_class_init (MNMailIconClass * class G_GNUC_UNUSED)
 	g_object_class->dispose = ___dispose;
 	g_object_class->finalize = ___finalize;
  {
-#line 58 "mn-mail-icon.gob"
+#line 67 "mn-mail-icon.gob"
 
     GtkBindingSet *binding_set;
 
@@ -276,31 +294,30 @@ mn_mail_icon_class_init (MNMailIconClass * class G_GNUC_UNUSED)
     gtk_binding_entry_add_signal(binding_set, GDK_ISO_Enter, GDK_MOD1_MASK, "activate-properties", 0);
     gtk_binding_entry_add_signal(binding_set, GDK_KP_Enter, GDK_MOD1_MASK, "activate-properties", 0);
   
-#line 280 "mn-mail-icon.c"
+#line 298 "mn-mail-icon.c"
  }
 }
 #undef __GOB_FUNCTION__
-#line 72 "mn-mail-icon.gob"
+#line 81 "mn-mail-icon.gob"
 static void 
 mn_mail_icon_init (MNMailIcon * self G_GNUC_UNUSED)
-#line 287 "mn-mail-icon.c"
+#line 305 "mn-mail-icon.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Icon::init"
 	self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,TYPE_SELF,MNMailIconPrivate);
-#line 36 "mn-mail-icon.gob"
-	self->tooltips = mn_tooltips_new();
-#line 293 "mn-mail-icon.c"
-#line 37 "mn-mail-icon.gob"
+#line 41 "mn-mail-icon.gob"
+	self->_priv->tooltips = mn_tooltips_new();
+#line 311 "mn-mail-icon.c"
+#line 43 "mn-mail-icon.gob"
 	self->image = mn_blinking_image_new_from_stock(MN_STOCK_MAIL, GTK_ICON_SIZE_LARGE_TOOLBAR);
-#line 296 "mn-mail-icon.c"
-#line 39 "mn-mail-icon.gob"
+#line 314 "mn-mail-icon.c"
+#line 45 "mn-mail-icon.gob"
 	self->_priv->menu = gtk_menu_new();
-#line 299 "mn-mail-icon.c"
+#line 317 "mn-mail-icon.c"
  {
-#line 73 "mn-mail-icon.gob"
+#line 82 "mn-mail-icon.gob"
 
     GtkMenuShell *shell;
-    GtkWidget *event_box;
     GtkWidget *summary_item;
     GtkWidget *properties_item;
     GtkWidget *help_item;
@@ -309,6 +326,7 @@ mn_mail_icon_init (MNMailIcon * self G_GNUC_UNUSED)
     
     shell = GTK_MENU_SHELL(selfp->menu);
     summary_item = mn_menu_shell_append(shell, MN_STOCK_MAIL_SUMMARY, NULL);
+    self->mail_reader_item = mn_menu_shell_append(shell, GTK_STOCK_EXECUTE, _("_Launch Mail Reader"));
     self->update_item = mn_menu_shell_append(shell, GTK_STOCK_REFRESH, _("_Update"));
     mn_menu_shell_append(shell, NULL, NULL);
     properties_item = mn_menu_shell_append(shell, GTK_STOCK_PROPERTIES, NULL);
@@ -318,37 +336,39 @@ mn_mail_icon_init (MNMailIcon * self G_GNUC_UNUSED)
     remove_item = mn_menu_shell_append(shell, GTK_STOCK_REMOVE, _("R_emove From Notification Area"));
     
     g_signal_connect_swapped(summary_item, "activate", G_CALLBACK(self_activate_summary), self);
+    g_signal_connect_swapped(self->mail_reader_item, "activate", G_CALLBACK(self_activate_mail_reader), self);
     g_signal_connect_swapped(self->update_item, "activate", G_CALLBACK(self_activate_update), self);
     g_signal_connect_swapped(properties_item, "activate", G_CALLBACK(self_activate_properties), self);
     g_signal_connect_swapped(help_item, "activate", G_CALLBACK(self_activate_help), self);
     g_signal_connect_swapped(about_item, "activate", G_CALLBACK(self_activate_about), self);
     g_signal_connect_swapped(remove_item, "activate", G_CALLBACK(self_activate_remove), self);
 
-    event_box = gtk_event_box_new();
-    GTK_WIDGET_SET_FLAGS(event_box, GTK_CAN_FOCUS);
-    mn_setup_dnd(event_box);
+    selfp->event_box = gtk_event_box_new();
+    GTK_WIDGET_SET_FLAGS(selfp->event_box, GTK_CAN_FOCUS);
+    mn_setup_dnd(selfp->event_box);
 
-    gtk_container_add(GTK_CONTAINER(event_box), self->image);
-    gtk_container_add(GTK_CONTAINER(self), event_box);
+    gtk_container_add(GTK_CONTAINER(selfp->event_box), self->image);
+    gtk_container_add(GTK_CONTAINER(self), selfp->event_box);
   
-    g_object_connect(event_box,
+    g_object_connect(selfp->event_box,
+		     "signal::show-help", self_show_help_h, self,
 		     "signal::button-press-event", self_button_press_event_h, self,
 		     "signal::button-release-event", self_button_release_event_h, self,
 		     "signal::popup-menu", self_popup_menu_h, self,
 		     NULL);
 
     gtk_widget_show(self->image);
-    gtk_widget_show(event_box);
+    gtk_widget_show(selfp->event_box);
   
-#line 344 "mn-mail-icon.c"
+#line 364 "mn-mail-icon.c"
  }
 }
 #undef __GOB_FUNCTION__
 
-#line 42 "mn-mail-icon.gob"
+#line 49 "mn-mail-icon.gob"
 static void 
 mn_mail_icon_activate (MNMailIcon * self)
-#line 352 "mn-mail-icon.c"
+#line 372 "mn-mail-icon.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -356,11 +376,11 @@ mn_mail_icon_activate (MNMailIcon * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 42 "mn-mail-icon.gob"
+#line 49 "mn-mail-icon.gob"
 	g_return_if_fail (self != NULL);
-#line 42 "mn-mail-icon.gob"
+#line 49 "mn-mail-icon.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 364 "mn-mail-icon.c"
+#line 384 "mn-mail-icon.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -374,10 +394,10 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[0]);
 }
 
-#line 44 "mn-mail-icon.gob"
+#line 51 "mn-mail-icon.gob"
 static void 
 mn_mail_icon_activate_summary (MNMailIcon * self)
-#line 381 "mn-mail-icon.c"
+#line 401 "mn-mail-icon.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -385,11 +405,11 @@ mn_mail_icon_activate_summary (MNMailIcon * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 44 "mn-mail-icon.gob"
+#line 51 "mn-mail-icon.gob"
 	g_return_if_fail (self != NULL);
-#line 44 "mn-mail-icon.gob"
+#line 51 "mn-mail-icon.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 393 "mn-mail-icon.c"
+#line 413 "mn-mail-icon.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -403,10 +423,39 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[0]);
 }
 
-#line 46 "mn-mail-icon.gob"
+#line 53 "mn-mail-icon.gob"
+static void 
+mn_mail_icon_activate_mail_reader (MNMailIcon * self)
+#line 430 "mn-mail-icon.c"
+{
+	GValue ___param_values[1];
+	GValue ___return_val;
+
+memset (&___return_val, 0, sizeof (___return_val));
+memset (&___param_values, 0, sizeof (___param_values));
+
+#line 53 "mn-mail-icon.gob"
+	g_return_if_fail (self != NULL);
+#line 53 "mn-mail-icon.gob"
+	g_return_if_fail (MN_IS_MAIL_ICON (self));
+#line 442 "mn-mail-icon.c"
+
+	___param_values[0].g_type = 0;
+	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
+	g_value_set_instance (&___param_values[0], (gpointer) self);
+
+	g_signal_emitv (___param_values,
+		object_signals[ACTIVATE_MAIL_READER_SIGNAL],
+		0 /* detail */,
+		&___return_val);
+
+	g_value_unset (&___param_values[0]);
+}
+
+#line 55 "mn-mail-icon.gob"
 static void 
 mn_mail_icon_activate_update (MNMailIcon * self)
-#line 410 "mn-mail-icon.c"
+#line 459 "mn-mail-icon.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -414,11 +463,11 @@ mn_mail_icon_activate_update (MNMailIcon * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 46 "mn-mail-icon.gob"
+#line 55 "mn-mail-icon.gob"
 	g_return_if_fail (self != NULL);
-#line 46 "mn-mail-icon.gob"
+#line 55 "mn-mail-icon.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 422 "mn-mail-icon.c"
+#line 471 "mn-mail-icon.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -432,10 +481,10 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[0]);
 }
 
-#line 48 "mn-mail-icon.gob"
+#line 57 "mn-mail-icon.gob"
 static void 
 mn_mail_icon_activate_properties (MNMailIcon * self)
-#line 439 "mn-mail-icon.c"
+#line 488 "mn-mail-icon.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -443,11 +492,11 @@ mn_mail_icon_activate_properties (MNMailIcon * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 48 "mn-mail-icon.gob"
+#line 57 "mn-mail-icon.gob"
 	g_return_if_fail (self != NULL);
-#line 48 "mn-mail-icon.gob"
+#line 57 "mn-mail-icon.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 451 "mn-mail-icon.c"
+#line 500 "mn-mail-icon.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -461,10 +510,10 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[0]);
 }
 
-#line 50 "mn-mail-icon.gob"
+#line 59 "mn-mail-icon.gob"
 static void 
 mn_mail_icon_activate_help (MNMailIcon * self)
-#line 468 "mn-mail-icon.c"
+#line 517 "mn-mail-icon.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -472,11 +521,11 @@ mn_mail_icon_activate_help (MNMailIcon * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 50 "mn-mail-icon.gob"
+#line 59 "mn-mail-icon.gob"
 	g_return_if_fail (self != NULL);
-#line 50 "mn-mail-icon.gob"
+#line 59 "mn-mail-icon.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 480 "mn-mail-icon.c"
+#line 529 "mn-mail-icon.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -490,10 +539,10 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[0]);
 }
 
-#line 52 "mn-mail-icon.gob"
+#line 61 "mn-mail-icon.gob"
 static void 
 mn_mail_icon_activate_about (MNMailIcon * self)
-#line 497 "mn-mail-icon.c"
+#line 546 "mn-mail-icon.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -501,11 +550,11 @@ mn_mail_icon_activate_about (MNMailIcon * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 52 "mn-mail-icon.gob"
+#line 61 "mn-mail-icon.gob"
 	g_return_if_fail (self != NULL);
-#line 52 "mn-mail-icon.gob"
+#line 61 "mn-mail-icon.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 509 "mn-mail-icon.c"
+#line 558 "mn-mail-icon.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -519,10 +568,10 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[0]);
 }
 
-#line 54 "mn-mail-icon.gob"
+#line 63 "mn-mail-icon.gob"
 static void 
 mn_mail_icon_activate_remove (MNMailIcon * self)
-#line 526 "mn-mail-icon.c"
+#line 575 "mn-mail-icon.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -530,11 +579,11 @@ mn_mail_icon_activate_remove (MNMailIcon * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 54 "mn-mail-icon.gob"
+#line 63 "mn-mail-icon.gob"
 	g_return_if_fail (self != NULL);
-#line 54 "mn-mail-icon.gob"
+#line 63 "mn-mail-icon.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 538 "mn-mail-icon.c"
+#line 587 "mn-mail-icon.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -550,23 +599,48 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 
 
-#line 116 "mn-mail-icon.gob"
+#line 127 "mn-mail-icon.gob"
+static gboolean 
+mn_mail_icon_show_help_h (GtkWidget * widget, GtkWidgetHelpType help_type, gpointer user_data)
+#line 606 "mn-mail-icon.c"
+{
+#define __GOB_FUNCTION__ "MN:Mail:Icon::show_help_h"
+#line 127 "mn-mail-icon.gob"
+	g_return_val_if_fail (widget != NULL, (gboolean )0);
+#line 127 "mn-mail-icon.gob"
+	g_return_val_if_fail (GTK_IS_WIDGET (widget), (gboolean )0);
+#line 613 "mn-mail-icon.c"
+{
+#line 131 "mn-mail-icon.gob"
+	
+    if (help_type == GTK_WIDGET_HELP_TOOLTIP)
+      {
+	mn_tooltips_toggle_keyboard_mode(widget);
+	return TRUE;
+      }
+    else
+      return FALSE;
+  }}
+#line 625 "mn-mail-icon.c"
+#undef __GOB_FUNCTION__
+
+#line 141 "mn-mail-icon.gob"
 static gboolean 
 mn_mail_icon_button_press_event_h (GtkWidget * widget, GdkEventButton * event, gpointer user_data)
-#line 557 "mn-mail-icon.c"
+#line 631 "mn-mail-icon.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Icon::button_press_event_h"
-#line 116 "mn-mail-icon.gob"
+#line 141 "mn-mail-icon.gob"
 	g_return_val_if_fail (widget != NULL, (gboolean )0);
-#line 116 "mn-mail-icon.gob"
+#line 141 "mn-mail-icon.gob"
 	g_return_val_if_fail (GTK_IS_WIDGET (widget), (gboolean )0);
-#line 116 "mn-mail-icon.gob"
+#line 141 "mn-mail-icon.gob"
 	g_return_val_if_fail (event != NULL, (gboolean )0);
-#line 116 "mn-mail-icon.gob"
+#line 141 "mn-mail-icon.gob"
 	g_return_val_if_fail (user_data != NULL, (gboolean )0);
-#line 568 "mn-mail-icon.c"
+#line 642 "mn-mail-icon.c"
 {
-#line 120 "mn-mail-icon.gob"
+#line 145 "mn-mail-icon.gob"
 	
     Self *self = user_data;
 
@@ -580,26 +654,26 @@ mn_mail_icon_button_press_event_h (GtkWidget * widget, GdkEventButton * event, g
 
     return FALSE;		/* propagate event */
   }}
-#line 584 "mn-mail-icon.c"
+#line 658 "mn-mail-icon.c"
 #undef __GOB_FUNCTION__
 
-#line 134 "mn-mail-icon.gob"
+#line 159 "mn-mail-icon.gob"
 static gboolean 
 mn_mail_icon_button_release_event_h (GtkWidget * widget, GdkEventButton * event, gpointer user_data)
-#line 590 "mn-mail-icon.c"
+#line 664 "mn-mail-icon.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Icon::button_release_event_h"
-#line 134 "mn-mail-icon.gob"
+#line 159 "mn-mail-icon.gob"
 	g_return_val_if_fail (widget != NULL, (gboolean )0);
-#line 134 "mn-mail-icon.gob"
+#line 159 "mn-mail-icon.gob"
 	g_return_val_if_fail (GTK_IS_WIDGET (widget), (gboolean )0);
-#line 134 "mn-mail-icon.gob"
+#line 159 "mn-mail-icon.gob"
 	g_return_val_if_fail (event != NULL, (gboolean )0);
-#line 134 "mn-mail-icon.gob"
+#line 159 "mn-mail-icon.gob"
 	g_return_val_if_fail (user_data != NULL, (gboolean )0);
-#line 601 "mn-mail-icon.c"
+#line 675 "mn-mail-icon.c"
 {
-#line 138 "mn-mail-icon.gob"
+#line 163 "mn-mail-icon.gob"
 	
     Self *self = user_data;
 
@@ -611,43 +685,62 @@ mn_mail_icon_button_release_event_h (GtkWidget * widget, GdkEventButton * event,
     
     return FALSE;		/* propagate event */
   }}
-#line 615 "mn-mail-icon.c"
+#line 689 "mn-mail-icon.c"
 #undef __GOB_FUNCTION__
 
-#line 150 "mn-mail-icon.gob"
+#line 175 "mn-mail-icon.gob"
 static gboolean 
 mn_mail_icon_popup_menu_h (GtkWidget * widget, gpointer user_data)
-#line 621 "mn-mail-icon.c"
+#line 695 "mn-mail-icon.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Icon::popup_menu_h"
-#line 150 "mn-mail-icon.gob"
+#line 175 "mn-mail-icon.gob"
 	g_return_val_if_fail (widget != NULL, (gboolean )0);
-#line 150 "mn-mail-icon.gob"
+#line 175 "mn-mail-icon.gob"
 	g_return_val_if_fail (GTK_IS_WIDGET (widget), (gboolean )0);
-#line 150 "mn-mail-icon.gob"
+#line 175 "mn-mail-icon.gob"
 	g_return_val_if_fail (user_data != NULL, (gboolean )0);
-#line 630 "mn-mail-icon.c"
+#line 704 "mn-mail-icon.c"
 {
-#line 153 "mn-mail-icon.gob"
+#line 178 "mn-mail-icon.gob"
 	
     Self *self = user_data;
 
     gtk_menu_popup(GTK_MENU(selfp->menu), NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time());
     return TRUE;		/* a menu was activated */
   }}
-#line 639 "mn-mail-icon.c"
+#line 713 "mn-mail-icon.c"
+#undef __GOB_FUNCTION__
+
+#line 185 "mn-mail-icon.gob"
+void 
+mn_mail_icon_set_tip_widget (MNMailIcon * self, GtkWidget * tip_widget)
+#line 719 "mn-mail-icon.c"
+{
+#define __GOB_FUNCTION__ "MN:Mail:Icon::set_tip_widget"
+#line 185 "mn-mail-icon.gob"
+	g_return_if_fail (self != NULL);
+#line 185 "mn-mail-icon.gob"
+	g_return_if_fail (MN_IS_MAIL_ICON (self));
+#line 726 "mn-mail-icon.c"
+{
+#line 187 "mn-mail-icon.gob"
+	
+    mn_tooltips_set_tip_widget(selfp->tooltips, selfp->event_box, tip_widget);
+  }}
+#line 732 "mn-mail-icon.c"
 #undef __GOB_FUNCTION__
 
-#line 160 "mn-mail-icon.gob"
+#line 191 "mn-mail-icon.gob"
 GtkWidget * 
 mn_mail_icon_new (void)
-#line 645 "mn-mail-icon.c"
+#line 738 "mn-mail-icon.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Icon::new"
 {
-#line 162 "mn-mail-icon.gob"
+#line 193 "mn-mail-icon.gob"
 	
     return GTK_WIDGET(GET_NEW_VARG("title", _("Mail Notification"), NULL));
   }}
-#line 653 "mn-mail-icon.c"
+#line 746 "mn-mail-icon.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-mail-icon.gob b/src/mn-mail-icon.gob
@@ -23,6 +23,11 @@ requires 2.0.10
 #include "eggtrayicon.h"
 #include "mn-blinking-image.h"
 %}
+
+%privateheader{
+#include "mn-tooltips.h"
+%}
+
 %{
 #include "config.h"
 #include <gdk/gdkkeysyms.h>
@@ -33,10 +38,12 @@ requires 2.0.10
 
 class MN:Mail:Icon from Egg:Tray:Icon
 {
-  public GtkTooltips *tooltips = {mn_tooltips_new()} unrefwith g_object_unref;
+  private MNTooltips *tooltips = {mn_tooltips_new()} unrefwith g_object_unref;
+  private GtkWidget *event_box;
   public GtkWidget *image = {mn_blinking_image_new_from_stock(MN_STOCK_MAIL, GTK_ICON_SIZE_LARGE_TOOLBAR)};
 
   private GtkWidget *menu = {gtk_menu_new()} destroywith gtk_widget_destroy;
+  public GtkWidget *mail_reader_item;
   public GtkWidget *update_item;
   
   signal (ACTION) private NONE (NONE)
@@ -44,6 +51,8 @@ class MN:Mail:Icon from Egg:Tray:Icon
   signal (ACTION) private NONE (NONE)
     void activate_summary (self);
   signal (ACTION) private NONE (NONE)
+    void activate_mail_reader (self);
+  signal (ACTION) private NONE (NONE)
     void activate_update (self);
   signal (ACTION) private NONE (NONE)
     void activate_properties (self);
@@ -72,7 +81,6 @@ class MN:Mail:Icon from Egg:Tray:Icon
   init (self)
   {
     GtkMenuShell *shell;
-    GtkWidget *event_box;
     GtkWidget *summary_item;
     GtkWidget *properties_item;
     GtkWidget *help_item;
@@ -81,6 +89,7 @@ class MN:Mail:Icon from Egg:Tray:Icon
     
     shell = GTK_MENU_SHELL(selfp->menu);
     summary_item = mn_menu_shell_append(shell, MN_STOCK_MAIL_SUMMARY, NULL);
+    self->mail_reader_item = mn_menu_shell_append(shell, GTK_STOCK_EXECUTE, _("_Launch Mail Reader"));
     self->update_item = mn_menu_shell_append(shell, GTK_STOCK_REFRESH, _("_Update"));
     mn_menu_shell_append(shell, NULL, NULL);
     properties_item = mn_menu_shell_append(shell, GTK_STOCK_PROPERTIES, NULL);
@@ -90,30 +99,46 @@ class MN:Mail:Icon from Egg:Tray:Icon
     remove_item = mn_menu_shell_append(shell, GTK_STOCK_REMOVE, _("R_emove From Notification Area"));
     
     g_signal_connect_swapped(summary_item, "activate", G_CALLBACK(self_activate_summary), self);
+    g_signal_connect_swapped(self->mail_reader_item, "activate", G_CALLBACK(self_activate_mail_reader), self);
     g_signal_connect_swapped(self->update_item, "activate", G_CALLBACK(self_activate_update), self);
     g_signal_connect_swapped(properties_item, "activate", G_CALLBACK(self_activate_properties), self);
     g_signal_connect_swapped(help_item, "activate", G_CALLBACK(self_activate_help), self);
     g_signal_connect_swapped(about_item, "activate", G_CALLBACK(self_activate_about), self);
     g_signal_connect_swapped(remove_item, "activate", G_CALLBACK(self_activate_remove), self);
 
-    event_box = gtk_event_box_new();
-    GTK_WIDGET_SET_FLAGS(event_box, GTK_CAN_FOCUS);
-    mn_setup_dnd(event_box);
+    selfp->event_box = gtk_event_box_new();
+    GTK_WIDGET_SET_FLAGS(selfp->event_box, GTK_CAN_FOCUS);
+    mn_setup_dnd(selfp->event_box);
 
-    gtk_container_add(GTK_CONTAINER(event_box), self->image);
-    gtk_container_add(GTK_CONTAINER(self), event_box);
+    gtk_container_add(GTK_CONTAINER(selfp->event_box), self->image);
+    gtk_container_add(GTK_CONTAINER(self), selfp->event_box);
   
-    g_object_connect(event_box,
+    g_object_connect(selfp->event_box,
+		     "signal::show-help", self_show_help_h, self,
 		     "signal::button-press-event", self_button_press_event_h, self,
 		     "signal::button-release-event", self_button_release_event_h, self,
 		     "signal::popup-menu", self_popup_menu_h, self,
 		     NULL);
 
     gtk_widget_show(self->image);
-    gtk_widget_show(event_box);
+    gtk_widget_show(selfp->event_box);
   }
 
   private gboolean
+    show_help_h (Gtk:Widget *widget (check null type),
+		 GtkWidgetHelpType help_type,
+		 gpointer user_data)
+  {
+    if (help_type == GTK_WIDGET_HELP_TOOLTIP)
+      {
+	mn_tooltips_toggle_keyboard_mode(widget);
+	return TRUE;
+      }
+    else
+      return FALSE;
+  }
+  
+  private gboolean
     button_press_event_h (Gtk:Widget *widget (check null type),
 			  GdkEventButton *event (check null),
 			  gpointer user_data (check null))
@@ -156,6 +181,12 @@ class MN:Mail:Icon from Egg:Tray:Icon
     gtk_menu_popup(GTK_MENU(selfp->menu), NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time());
     return TRUE;		/* a menu was activated */
   }
+
+  public void
+    set_tip_widget (self, Gtk:Widget *tip_widget)
+  {
+    mn_tooltips_set_tip_widget(selfp->tooltips, selfp->event_box, tip_widget);
+  }
   
   public GtkWidget *
     new (void)
diff --git a/src/mn-mail-icon.h b/src/mn-mail-icon.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
@@ -40,8 +40,8 @@ typedef struct _MNMailIcon MNMailIcon;
 struct _MNMailIcon {
 	EggTrayIcon __parent__;
 	/*< public >*/
-	GtkTooltips * tooltips;
 	GtkWidget * image;
+	GtkWidget * mail_reader_item;
 	GtkWidget * update_item;
 	/*< private >*/
 	MNMailIconPrivate *_priv;
@@ -55,6 +55,7 @@ struct _MNMailIconClass {
 	EggTrayIconClass __parent__;
 	/*signal*/void (* activate) (MNMailIcon * self);
 	/*signal*/void (* activate_summary) (MNMailIcon * self);
+	/*signal*/void (* activate_mail_reader) (MNMailIcon * self);
 	/*signal*/void (* activate_update) (MNMailIcon * self);
 	/*signal*/void (* activate_properties) (MNMailIcon * self);
 	/*signal*/void (* activate_help) (MNMailIcon * self);
@@ -67,6 +68,8 @@ struct _MNMailIconClass {
  * Public methods
  */
 GType	mn_mail_icon_get_type	(void);
+void 	mn_mail_icon_set_tip_widget	(MNMailIcon * self,
+					GtkWidget * tip_widget);
 GtkWidget * 	mn_mail_icon_new	(void);
 
 /*
@@ -79,6 +82,9 @@ GtkWidget * 	mn_mail_icon_new	(void);
 #define mn_mail_icon_connect__activate_summary(object,func,data)	g_signal_connect(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_summary",(GCallback) __extension__ ({void (* ___activate_summary) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_summary; }), (data))
 #define mn_mail_icon_connect_after__activate_summary(object,func,data)	g_signal_connect_after(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_summary",(GCallback) __extension__ ({void (* ___activate_summary) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_summary; }), (data))
 #define mn_mail_icon_connect_data__activate_summary(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_summary",(GCallback) __extension__ ({void (* ___activate_summary) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_summary; }), (data), (destroy_data), (GConnectFlags)(flags))
+#define mn_mail_icon_connect__activate_mail_reader(object,func,data)	g_signal_connect(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_mail_reader",(GCallback) __extension__ ({void (* ___activate_mail_reader) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_mail_reader; }), (data))
+#define mn_mail_icon_connect_after__activate_mail_reader(object,func,data)	g_signal_connect_after(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_mail_reader",(GCallback) __extension__ ({void (* ___activate_mail_reader) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_mail_reader; }), (data))
+#define mn_mail_icon_connect_data__activate_mail_reader(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_mail_reader",(GCallback) __extension__ ({void (* ___activate_mail_reader) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_mail_reader; }), (data), (destroy_data), (GConnectFlags)(flags))
 #define mn_mail_icon_connect__activate_update(object,func,data)	g_signal_connect(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_update",(GCallback) __extension__ ({void (* ___activate_update) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_update; }), (data))
 #define mn_mail_icon_connect_after__activate_update(object,func,data)	g_signal_connect_after(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_update",(GCallback) __extension__ ({void (* ___activate_update) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_update; }), (data))
 #define mn_mail_icon_connect_data__activate_update(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_update",(GCallback) __extension__ ({void (* ___activate_update) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_update; }), (data), (destroy_data), (GConnectFlags)(flags))
@@ -101,6 +107,9 @@ GtkWidget * 	mn_mail_icon_new	(void);
 #define mn_mail_icon_connect__activate_summary(object,func,data)	g_signal_connect(MN_MAIL_ICON(object),"activate_summary",(GCallback)(func),(data))
 #define mn_mail_icon_connect_after__activate_summary(object,func,data)	g_signal_connect_after(MN_MAIL_ICON(object),"activate_summary",(GCallback)(func),(data))
 #define mn_mail_icon_connect_data__activate_summary(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAIL_ICON(object),"activate_summary",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
+#define mn_mail_icon_connect__activate_mail_reader(object,func,data)	g_signal_connect(MN_MAIL_ICON(object),"activate_mail_reader",(GCallback)(func),(data))
+#define mn_mail_icon_connect_after__activate_mail_reader(object,func,data)	g_signal_connect_after(MN_MAIL_ICON(object),"activate_mail_reader",(GCallback)(func),(data))
+#define mn_mail_icon_connect_data__activate_mail_reader(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAIL_ICON(object),"activate_mail_reader",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
 #define mn_mail_icon_connect__activate_update(object,func,data)	g_signal_connect(MN_MAIL_ICON(object),"activate_update",(GCallback)(func),(data))
 #define mn_mail_icon_connect_after__activate_update(object,func,data)	g_signal_connect_after(MN_MAIL_ICON(object),"activate_update",(GCallback)(func),(data))
 #define mn_mail_icon_connect_data__activate_update(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAIL_ICON(object),"activate_update",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
diff --git a/src/mn-mailbox-private.h b/src/mn-mailbox-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #ifndef __MN_MAILBOX_PRIVATE_H__
 #define __MN_MAILBOX_PRIVATE_H__
@@ -29,22 +29,22 @@ struct _MNMailboxPrivate {
 #line 140 "mn-mailbox.gob"
 	char * name;
 #line 144 "mn-mailbox.gob"
-	gboolean automatic;
-#line 149 "mn-mailbox.gob"
+	gboolean must_poll;
+#line 150 "mn-mailbox.gob"
 	gboolean has_new;
-#line 154 "mn-mailbox.gob"
+#line 155 "mn-mailbox.gob"
 	GSList * messages;
-#line 208 "mn-mailbox.gob"
+#line 209 "mn-mailbox.gob"
 	char * error;
-#line 228 "mn-mailbox.gob"
-	GnomeVFSMonitorHandle * monitor_handle;
 #line 229 "mn-mailbox.gob"
-	char * monitor_uri;
+	GnomeVFSMonitorHandle * monitor_handle;
 #line 230 "mn-mailbox.gob"
+	char * monitor_uri;
+#line 231 "mn-mailbox.gob"
 	MNMailboxMonitorEventType monitor_events;
-#line 232 "mn-mailbox.gob"
+#line 233 "mn-mailbox.gob"
 	gboolean checking;
-#line 363 "mn-mailbox.gob"
+#line 364 "mn-mailbox.gob"
 	char * init_error;
 #line 50 "mn-mailbox-private.h"
 };
diff --git a/src/mn-mailbox-view-private.h b/src/mn-mailbox-view-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #ifndef __MN_MAILBOX_VIEW_PRIVATE_H__
 #define __MN_MAILBOX_VIEW_PRIVATE_H__
diff --git a/src/mn-mailbox-view.c b/src/mn-mailbox-view.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.10) on Mon Oct 25 15:24:34 2004
+/* Generated by GOB (v2.0.11) on Sun Oct 31 18:41:22 2004
    (do not edit directly) */
 
 /* End world hunger, donate to the World Food Programme, http://www.wfp.org */
 
 #define GOB_VERSION_MAJOR 2
 #define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 10
+#define GOB_VERSION_PATCHLEVEL 11
 
 #define selfp (self->_priv)
 
diff --git a/src/mn-mailbox-view.h b/src/mn-mailbox-view.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-mailbox.c b/src/mn-mailbox.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.10) on Mon Oct 25 15:24:34 2004
+/* Generated by GOB (v2.0.11) on Sun Oct 31 18:41:22 2004
    (do not edit directly) */
 
 /* End world hunger, donate to the World Food Programme, http://www.wfp.org */
 
 #define GOB_VERSION_MAJOR 2
 #define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 10
+#define GOB_VERSION_PATCHLEVEL 11
 
 #define selfp (self->_priv)
 
@@ -141,7 +141,7 @@ enum {
 	PROP_0,
 	PROP_URI,
 	PROP_NAME,
-	PROP_AUTOMATIC,
+	PROP_MUST_POLL,
 	PROP_HAS_NEW,
 	PROP_MESSAGES,
 	PROP_ERROR
@@ -155,8 +155,8 @@ static GObjectClass *parent_class = NULL;
 /* Short form macros */
 #define self_removed mn_mailbox_removed
 #define self_get_name mn_mailbox_get_name
-#define self_get_automatic mn_mailbox_get_automatic
-#define self_set_automatic mn_mailbox_set_automatic
+#define self_get_must_poll mn_mailbox_get_must_poll
+#define self_set_must_poll mn_mailbox_set_must_poll
 #define self_get_has_new mn_mailbox_get_has_new
 #define self_set_has_new mn_mailbox_set_has_new
 #define self_get_messages mn_mailbox_get_messages
@@ -238,22 +238,22 @@ ___finalize(GObject *obj_self)
 #define __GOB_FUNCTION__ "MN:Mailbox::finalize"
 	MNMailbox *self G_GNUC_UNUSED = MN_MAILBOX (obj_self);
 	gpointer priv G_GNUC_UNUSED = self->_priv;
-#line 234 "mn-mailbox.gob"
+#line 235 "mn-mailbox.gob"
 	___c_mn_mailbox_finalize(obj_self);
 #line 244 "mn-mailbox.c"
 #line 140 "mn-mailbox.gob"
 	if(self->_priv->name) { g_free ((gpointer) self->_priv->name); self->_priv->name = NULL; }
 #line 247 "mn-mailbox.c"
-#line 154 "mn-mailbox.gob"
+#line 155 "mn-mailbox.gob"
 	if(self->_priv->messages) { mn_g_object_slist_free ((gpointer) self->_priv->messages); self->_priv->messages = NULL; }
 #line 250 "mn-mailbox.c"
-#line 208 "mn-mailbox.gob"
+#line 209 "mn-mailbox.gob"
 	if(self->_priv->error) { g_free ((gpointer) self->_priv->error); self->_priv->error = NULL; }
 #line 253 "mn-mailbox.c"
-#line 229 "mn-mailbox.gob"
+#line 230 "mn-mailbox.gob"
 	if(self->_priv->monitor_uri) { g_free ((gpointer) self->_priv->monitor_uri); self->_priv->monitor_uri = NULL; }
 #line 256 "mn-mailbox.c"
-#line 363 "mn-mailbox.gob"
+#line 364 "mn-mailbox.gob"
 	if(self->_priv->init_error) { g_free ((gpointer) self->_priv->init_error); self->_priv->init_error = NULL; }
 #line 259 "mn-mailbox.c"
 }
@@ -267,6 +267,9 @@ mn_mailbox_init (MNMailbox * o G_GNUC_UNUSED)
 #line 52 "mn-mailbox.gob"
 	o->uri = NULL;
 #line 270 "mn-mailbox.c"
+#line 142 "mn-mailbox.gob"
+	o->_priv->must_poll = TRUE;
+#line 273 "mn-mailbox.c"
 }
 #undef __GOB_FUNCTION__
 static void 
@@ -297,14 +300,14 @@ mn_mailbox_class_init (MNMailboxClass * c G_GNUC_UNUSED)
 			G_TYPE_NONE, 1,
 			G_TYPE_BOOLEAN);
 	if ___GOB_UNLIKELY(sizeof(gboolean ) != sizeof(gboolean ) || parent_class == NULL /* avoid warning */) {
-		g_error("mn-mailbox.gob line 205: Type mismatch of \"messages_changed\" signal signature");
+		g_error("mn-mailbox.gob line 206: Type mismatch of \"messages_changed\" signal signature");
 	}
 
 	c->removed = NULL;
 	c->messages_changed = NULL;
-#line 234 "mn-mailbox.gob"
+#line 235 "mn-mailbox.gob"
 	g_object_class->finalize = ___finalize;
-#line 308 "mn-mailbox.c"
+#line 311 "mn-mailbox.c"
 	c->impl_is = NULL;
 	c->impl_check = NULL;
 	g_object_class->dispose = ___dispose;
@@ -332,13 +335,13 @@ mn_mailbox_class_init (MNMailboxClass * c G_GNUC_UNUSED)
 		PROP_NAME,
 		param_spec);
 	param_spec = g_param_spec_boolean
-		("automatic" /* name */,
+		("must_poll" /* name */,
 		 NULL /* nick */,
-		 _("Whether the mailbox has to be manually checked or not") /* blurb */,
-		 FALSE /* default_value */,
+		 _("Whether the mailbox has to be polled or not") /* blurb */,
+		 TRUE /* default_value */,
 		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE));
 	g_object_class_install_property (g_object_class,
-		PROP_AUTOMATIC,
+		PROP_MUST_POLL,
 		param_spec);
 	param_spec = g_param_spec_boolean
 		("has_new" /* name */,
@@ -390,33 +393,33 @@ ___object_set_property (GObject *object,
       self->uri = MN_URI(g_value_dup_object(VAL));
       selfp->name = g_strdup(self->uri->human_readable);
     
-#line 394 "mn-mailbox.c"
+#line 397 "mn-mailbox.c"
 		}
 		break;
 	case PROP_NAME:
 		{
 #line 141 "mn-mailbox.gob"
 { char *old = self->_priv->name; self->_priv->name = g_value_dup_string (VAL); g_free (old); }
-#line 401 "mn-mailbox.c"
+#line 404 "mn-mailbox.c"
 		}
 		break;
-	case PROP_AUTOMATIC:
+	case PROP_MUST_POLL:
 		{
 #line 145 "mn-mailbox.gob"
-self->_priv->automatic = g_value_get_boolean (VAL);
-#line 408 "mn-mailbox.c"
+self->_priv->must_poll = g_value_get_boolean (VAL);
+#line 411 "mn-mailbox.c"
 		}
 		break;
 	case PROP_HAS_NEW:
 		{
-#line 150 "mn-mailbox.gob"
+#line 151 "mn-mailbox.gob"
 self->_priv->has_new = g_value_get_boolean (VAL);
-#line 415 "mn-mailbox.c"
+#line 418 "mn-mailbox.c"
 		}
 		break;
 	case PROP_MESSAGES:
 		{
-#line 158 "mn-mailbox.gob"
+#line 159 "mn-mailbox.gob"
 
       GSList *messages;
       GSList *l;
@@ -446,14 +449,14 @@ self->_priv->has_new = g_value_get_boolean (VAL);
       if (changed)
 	self_messages_changed(self, has_new);
     
-#line 450 "mn-mailbox.c"
+#line 453 "mn-mailbox.c"
 		}
 		break;
 	case PROP_ERROR:
 		{
-#line 209 "mn-mailbox.gob"
+#line 210 "mn-mailbox.gob"
 { char *old = self->_priv->error; self->_priv->error = g_value_dup_string (VAL); g_free (old); }
-#line 457 "mn-mailbox.c"
+#line 460 "mn-mailbox.c"
 		}
 		break;
 	default:
@@ -484,37 +487,37 @@ ___object_get_property (GObject *object,
 		{
 #line 141 "mn-mailbox.gob"
 g_value_set_string (VAL, self->_priv->name);
-#line 488 "mn-mailbox.c"
+#line 491 "mn-mailbox.c"
 		}
 		break;
-	case PROP_AUTOMATIC:
+	case PROP_MUST_POLL:
 		{
 #line 145 "mn-mailbox.gob"
-g_value_set_boolean (VAL, self->_priv->automatic);
-#line 495 "mn-mailbox.c"
+g_value_set_boolean (VAL, self->_priv->must_poll);
+#line 498 "mn-mailbox.c"
 		}
 		break;
 	case PROP_HAS_NEW:
 		{
-#line 150 "mn-mailbox.gob"
+#line 151 "mn-mailbox.gob"
 g_value_set_boolean (VAL, self->_priv->has_new);
-#line 502 "mn-mailbox.c"
+#line 505 "mn-mailbox.c"
 		}
 		break;
 	case PROP_MESSAGES:
 		{
-#line 188 "mn-mailbox.gob"
+#line 189 "mn-mailbox.gob"
 
       g_value_set_pointer(VAL, selfp->messages);
     
-#line 511 "mn-mailbox.c"
+#line 514 "mn-mailbox.c"
 		}
 		break;
 	case PROP_ERROR:
 		{
-#line 209 "mn-mailbox.gob"
+#line 210 "mn-mailbox.gob"
 g_value_set_string (VAL, self->_priv->error);
-#line 518 "mn-mailbox.c"
+#line 521 "mn-mailbox.c"
 		}
 		break;
 	default:
@@ -541,7 +544,7 @@ g_value_set_string (VAL, self->_priv->error);
 #line 126 "mn-mailbox.gob"
 void 
 mn_mailbox_removed (MNMailbox * self)
-#line 545 "mn-mailbox.c"
+#line 548 "mn-mailbox.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -553,7 +556,7 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_return_if_fail (self != NULL);
 #line 126 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 557 "mn-mailbox.c"
+#line 560 "mn-mailbox.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -570,102 +573,102 @@ memset (&___param_values, 0, sizeof (___param_values));
 #line 142 "mn-mailbox.gob"
 const char * 
 mn_mailbox_get_name (MNMailbox * self)
-#line 574 "mn-mailbox.c"
+#line 577 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::get_name"
 #line 142 "mn-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (const char * )0);
 #line 142 "mn-mailbox.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX (self), (const char * )0);
-#line 581 "mn-mailbox.c"
+#line 584 "mn-mailbox.c"
 {
 #line 142 "mn-mailbox.gob"
 	 return selfp->name; }}
-#line 585 "mn-mailbox.c"
+#line 588 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
 #line 145 "mn-mailbox.gob"
 gboolean 
-mn_mailbox_get_automatic (MNMailbox * self)
-#line 591 "mn-mailbox.c"
+mn_mailbox_get_must_poll (MNMailbox * self)
+#line 594 "mn-mailbox.c"
 {
-#define __GOB_FUNCTION__ "MN:Mailbox::get_automatic"
+#define __GOB_FUNCTION__ "MN:Mailbox::get_must_poll"
 {
 #line 145 "mn-mailbox.gob"
-		gboolean val; g_object_get (G_OBJECT (self), "automatic", &val, NULL); return val;
+		gboolean val; g_object_get (G_OBJECT (self), "must_poll", &val, NULL); return val;
 }}
-#line 598 "mn-mailbox.c"
+#line 601 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
 #line 145 "mn-mailbox.gob"
 void 
-mn_mailbox_set_automatic (MNMailbox * self, gboolean val)
-#line 604 "mn-mailbox.c"
+mn_mailbox_set_must_poll (MNMailbox * self, gboolean val)
+#line 607 "mn-mailbox.c"
 {
-#define __GOB_FUNCTION__ "MN:Mailbox::set_automatic"
+#define __GOB_FUNCTION__ "MN:Mailbox::set_must_poll"
 {
 #line 145 "mn-mailbox.gob"
-		g_object_set (G_OBJECT (self), "automatic", val, NULL);
+		g_object_set (G_OBJECT (self), "must_poll", val, NULL);
 }}
-#line 611 "mn-mailbox.c"
+#line 614 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 150 "mn-mailbox.gob"
+#line 151 "mn-mailbox.gob"
 gboolean 
 mn_mailbox_get_has_new (MNMailbox * self)
-#line 617 "mn-mailbox.c"
+#line 620 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::get_has_new"
 {
-#line 150 "mn-mailbox.gob"
+#line 151 "mn-mailbox.gob"
 		gboolean val; g_object_get (G_OBJECT (self), "has_new", &val, NULL); return val;
 }}
-#line 624 "mn-mailbox.c"
+#line 627 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 150 "mn-mailbox.gob"
+#line 151 "mn-mailbox.gob"
 void 
 mn_mailbox_set_has_new (MNMailbox * self, gboolean val)
-#line 630 "mn-mailbox.c"
+#line 633 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::set_has_new"
 {
-#line 150 "mn-mailbox.gob"
+#line 151 "mn-mailbox.gob"
 		g_object_set (G_OBJECT (self), "has_new", val, NULL);
 }}
-#line 637 "mn-mailbox.c"
+#line 640 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 188 "mn-mailbox.gob"
+#line 189 "mn-mailbox.gob"
 gpointer 
 mn_mailbox_get_messages (MNMailbox * self)
-#line 643 "mn-mailbox.c"
+#line 646 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::get_messages"
 {
-#line 155 "mn-mailbox.gob"
+#line 156 "mn-mailbox.gob"
 		gpointer val; g_object_get (G_OBJECT (self), "messages", &val, NULL); return val;
 }}
-#line 650 "mn-mailbox.c"
+#line 653 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 158 "mn-mailbox.gob"
+#line 159 "mn-mailbox.gob"
 void 
 mn_mailbox_set_messages (MNMailbox * self, gpointer val)
-#line 656 "mn-mailbox.c"
+#line 659 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::set_messages"
 {
-#line 155 "mn-mailbox.gob"
+#line 156 "mn-mailbox.gob"
 		g_object_set (G_OBJECT (self), "messages", val, NULL);
 }}
-#line 663 "mn-mailbox.c"
+#line 666 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 205 "mn-mailbox.gob"
+#line 206 "mn-mailbox.gob"
 static void 
 mn_mailbox_messages_changed (MNMailbox * self, gboolean has_new)
-#line 669 "mn-mailbox.c"
+#line 672 "mn-mailbox.c"
 {
 	GValue ___param_values[2];
 	GValue ___return_val;
@@ -673,11 +676,11 @@ mn_mailbox_messages_changed (MNMailbox * self, gboolean has_new)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 205 "mn-mailbox.gob"
+#line 206 "mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 205 "mn-mailbox.gob"
+#line 206 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 681 "mn-mailbox.c"
+#line 684 "mn-mailbox.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -696,19 +699,19 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[1]);
 }
 
-#line 210 "mn-mailbox.gob"
+#line 211 "mn-mailbox.gob"
 void 
 mn_mailbox_set_error (MNMailbox * self, const char * format, ...)
-#line 703 "mn-mailbox.c"
+#line 706 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::set_error"
-#line 210 "mn-mailbox.gob"
+#line 211 "mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 210 "mn-mailbox.gob"
+#line 211 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 710 "mn-mailbox.c"
+#line 713 "mn-mailbox.c"
 {
-#line 212 "mn-mailbox.gob"
+#line 213 "mn-mailbox.gob"
 	
     va_list args;
     char *error = NULL;
@@ -723,42 +726,42 @@ mn_mailbox_set_error (MNMailbox * self, const char * format, ...)
     g_object_set(G_OBJECT(self), MN_MAILBOX_PROP_ERROR(error), NULL);
     g_free(error);
   }}
-#line 727 "mn-mailbox.c"
+#line 730 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 226 "mn-mailbox.gob"
+#line 227 "mn-mailbox.gob"
 const char * 
 mn_mailbox_get_error (MNMailbox * self)
-#line 733 "mn-mailbox.c"
+#line 736 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::get_error"
-#line 226 "mn-mailbox.gob"
+#line 227 "mn-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (const char * )0);
-#line 226 "mn-mailbox.gob"
+#line 227 "mn-mailbox.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX (self), (const char * )0);
-#line 740 "mn-mailbox.c"
+#line 743 "mn-mailbox.c"
 {
-#line 226 "mn-mailbox.gob"
+#line 227 "mn-mailbox.gob"
 	 return selfp->error; }}
-#line 744 "mn-mailbox.c"
+#line 747 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 234 "mn-mailbox.gob"
+#line 235 "mn-mailbox.gob"
 static void 
 ___c_mn_mailbox_finalize (GObject * object G_GNUC_UNUSED)
-#line 750 "mn-mailbox.c"
+#line 753 "mn-mailbox.c"
 #define PARENT_HANDLER(___object) \
 	{ if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(___object); }
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::finalize"
-#line 234 "mn-mailbox.gob"
+#line 235 "mn-mailbox.gob"
 	g_return_if_fail (object != NULL);
-#line 234 "mn-mailbox.gob"
+#line 235 "mn-mailbox.gob"
 	g_return_if_fail (G_IS_OBJECT (object));
-#line 760 "mn-mailbox.c"
+#line 763 "mn-mailbox.c"
 {
-#line 236 "mn-mailbox.gob"
+#line 237 "mn-mailbox.gob"
 	
     Self *self = SELF(object);
 
@@ -767,18 +770,18 @@ ___c_mn_mailbox_finalize (GObject * object G_GNUC_UNUSED)
 
     PARENT_HANDLER(object);
   }}
-#line 771 "mn-mailbox.c"
+#line 774 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 245 "mn-mailbox.gob"
+#line 246 "mn-mailbox.gob"
 void 
 mn_mailbox_init_types (void)
-#line 778 "mn-mailbox.c"
+#line 781 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::init_types"
 {
-#line 247 "mn-mailbox.gob"
+#line 248 "mn-mailbox.gob"
 	
     int i = 0;
 
@@ -805,7 +808,7 @@ mn_mailbox_init_types (void)
 #endif
     mn_mailbox_types[i] = 0;
   }}
-#line 809 "mn-mailbox.c"
+#line 812 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
 /**
@@ -818,21 +821,21 @@ mn_mailbox_init_types (void)
  * Creates a new #MNMailbox asynchronously. The newly created
  * #MNMailbox will be passed to @callback.
  **/
-#line 284 "mn-mailbox.gob"
+#line 285 "mn-mailbox.gob"
 void 
 mn_mailbox_new_async (MNURI * uri, gpointer callback, gpointer user_data)
-#line 825 "mn-mailbox.c"
+#line 828 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::new_async"
-#line 284 "mn-mailbox.gob"
+#line 285 "mn-mailbox.gob"
 	g_return_if_fail (uri != NULL);
-#line 284 "mn-mailbox.gob"
+#line 285 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_URI (uri));
-#line 284 "mn-mailbox.gob"
+#line 285 "mn-mailbox.gob"
 	g_return_if_fail (callback != NULL);
-#line 834 "mn-mailbox.c"
+#line 837 "mn-mailbox.c"
 {
-#line 288 "mn-mailbox.gob"
+#line 289 "mn-mailbox.gob"
 	
     NewInfo *info;
 
@@ -843,17 +846,17 @@ mn_mailbox_new_async (MNURI * uri, gpointer callback, gpointer user_data)
 
     mn_thread_create(self_new_async_thread, info);
   }}
-#line 847 "mn-mailbox.c"
+#line 850 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 299 "mn-mailbox.gob"
+#line 300 "mn-mailbox.gob"
 static gpointer 
 mn_mailbox_new_async_thread (gpointer data)
-#line 853 "mn-mailbox.c"
+#line 856 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::new_async_thread"
 {
-#line 301 "mn-mailbox.gob"
+#line 302 "mn-mailbox.gob"
 	
     NewInfo *info = data;
     Self *mailbox = NULL;
@@ -915,24 +918,24 @@ mn_mailbox_new_async_thread (gpointer data)
 
     return NULL;
   }}
-#line 919 "mn-mailbox.c"
+#line 922 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 364 "mn-mailbox.gob"
+#line 365 "mn-mailbox.gob"
 void 
 mn_mailbox_set_init_error (MNMailbox * self, const char * format, ...)
-#line 925 "mn-mailbox.c"
+#line 928 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::set_init_error"
-#line 364 "mn-mailbox.gob"
+#line 365 "mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 364 "mn-mailbox.gob"
+#line 365 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 364 "mn-mailbox.gob"
+#line 365 "mn-mailbox.gob"
 	g_return_if_fail (format != NULL);
-#line 934 "mn-mailbox.c"
+#line 937 "mn-mailbox.c"
 {
-#line 366 "mn-mailbox.gob"
+#line 367 "mn-mailbox.gob"
 	
     va_list args;
 
@@ -942,24 +945,24 @@ mn_mailbox_set_init_error (MNMailbox * self, const char * format, ...)
     selfp->init_error = g_strdup_vprintf(format, args);
     va_end(args);
   }}
-#line 946 "mn-mailbox.c"
+#line 949 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 376 "mn-mailbox.gob"
+#line 377 "mn-mailbox.gob"
 void 
 mn_mailbox_monitor (MNMailbox * self, const char * uri, GnomeVFSMonitorType monitor_type, MNMailboxMonitorEventType events)
-#line 952 "mn-mailbox.c"
+#line 955 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::monitor"
-#line 376 "mn-mailbox.gob"
+#line 377 "mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 376 "mn-mailbox.gob"
+#line 377 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 376 "mn-mailbox.gob"
+#line 377 "mn-mailbox.gob"
 	g_return_if_fail (uri != NULL);
-#line 961 "mn-mailbox.c"
+#line 964 "mn-mailbox.c"
 {
-#line 381 "mn-mailbox.gob"
+#line 382 "mn-mailbox.gob"
 	
     GnomeVFSResult result;
 
@@ -981,7 +984,7 @@ mn_mailbox_monitor (MNMailbox * self, const char * uri, GnomeVFSMonitorType moni
       {
 	selfp->monitor_uri = g_strdup(uri);
 	selfp->monitor_events = events;
-	self_set_automatic(self, TRUE);
+	self_set_must_poll(self, FALSE);
       }
     else
       {
@@ -1049,20 +1052,20 @@ mn_mailbox_monitor (MNMailbox * self, const char * uri, GnomeVFSMonitorType moni
 	  }
       }
   }}
-#line 1053 "mn-mailbox.c"
+#line 1056 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 471 "mn-mailbox.gob"
+#line 472 "mn-mailbox.gob"
 static void 
 mn_mailbox_monitor_cb (GnomeVFSMonitorHandle * handle, const char * monitor_uri, const char * info_uri, GnomeVFSMonitorEventType event_type, gpointer user_data)
-#line 1059 "mn-mailbox.c"
+#line 1062 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::monitor_cb"
-#line 471 "mn-mailbox.gob"
+#line 472 "mn-mailbox.gob"
 	g_return_if_fail (user_data != NULL);
-#line 1064 "mn-mailbox.c"
+#line 1067 "mn-mailbox.c"
 {
-#line 477 "mn-mailbox.gob"
+#line 478 "mn-mailbox.gob"
 	
     Self *self = user_data;
 
@@ -1071,20 +1074,20 @@ mn_mailbox_monitor_cb (GnomeVFSMonitorHandle * handle, const char * monitor_uri,
       self_check(self);
     GDK_THREADS_LEAVE();
   }}
-#line 1075 "mn-mailbox.c"
+#line 1078 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 486 "mn-mailbox.gob"
+#line 487 "mn-mailbox.gob"
 static gboolean 
 mn_mailbox_impl_is (MNMailbox * self, MNURI * uri)
-#line 1081 "mn-mailbox.c"
+#line 1084 "mn-mailbox.c"
 {
 	MNMailboxClass *klass;
-#line 486 "mn-mailbox.gob"
+#line 487 "mn-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 486 "mn-mailbox.gob"
+#line 487 "mn-mailbox.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX (self), (gboolean )0);
-#line 1088 "mn-mailbox.c"
+#line 1091 "mn-mailbox.c"
 	klass = MN_MAILBOX_GET_CLASS(self);
 
 	if(klass->impl_is)
@@ -1093,36 +1096,36 @@ mn_mailbox_impl_is (MNMailbox * self, MNURI * uri)
 		return (gboolean )(0);
 }
 
-#line 488 "mn-mailbox.gob"
+#line 489 "mn-mailbox.gob"
 static void 
 mn_mailbox_impl_check (MNMailbox * self)
-#line 1100 "mn-mailbox.c"
+#line 1103 "mn-mailbox.c"
 {
 	MNMailboxClass *klass;
-#line 488 "mn-mailbox.gob"
+#line 489 "mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 488 "mn-mailbox.gob"
+#line 489 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 1107 "mn-mailbox.c"
+#line 1110 "mn-mailbox.c"
 	klass = MN_MAILBOX_GET_CLASS(self);
 
 	if(klass->impl_check)
 		(*klass->impl_check)(self);
 }
 
-#line 491 "mn-mailbox.gob"
+#line 492 "mn-mailbox.gob"
 void 
 mn_mailbox_check (MNMailbox * self)
-#line 1117 "mn-mailbox.c"
+#line 1120 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::check"
-#line 491 "mn-mailbox.gob"
+#line 492 "mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 491 "mn-mailbox.gob"
+#line 492 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 1124 "mn-mailbox.c"
+#line 1127 "mn-mailbox.c"
 {
-#line 493 "mn-mailbox.gob"
+#line 494 "mn-mailbox.gob"
 	
     g_return_if_fail(MN_MAILBOX_CAN_CHECK(self));
 
@@ -1135,46 +1138,46 @@ mn_mailbox_check (MNMailbox * self)
 	mn_thread_create((GThreadFunc) SELF_GET_CLASS(self)->impl_check, self);
       }
   }}
-#line 1139 "mn-mailbox.c"
+#line 1142 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 506 "mn-mailbox.gob"
+#line 507 "mn-mailbox.gob"
 void 
 mn_mailbox_end_check (MNMailbox * self)
-#line 1145 "mn-mailbox.c"
+#line 1148 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::end_check"
-#line 506 "mn-mailbox.gob"
+#line 507 "mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 506 "mn-mailbox.gob"
+#line 507 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 1152 "mn-mailbox.c"
+#line 1155 "mn-mailbox.c"
 {
-#line 508 "mn-mailbox.gob"
+#line 509 "mn-mailbox.gob"
 	
     g_return_if_fail(selfp->checking == TRUE);
 
     selfp->checking = FALSE;
     g_object_unref(self);
   }}
-#line 1161 "mn-mailbox.c"
+#line 1164 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 515 "mn-mailbox.gob"
+#line 516 "mn-mailbox.gob"
 void 
 mn_mailbox_notice (MNMailbox * self, const char * format, ...)
-#line 1167 "mn-mailbox.c"
+#line 1170 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::notice"
-#line 515 "mn-mailbox.gob"
+#line 516 "mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 515 "mn-mailbox.gob"
+#line 516 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 515 "mn-mailbox.gob"
+#line 516 "mn-mailbox.gob"
 	g_return_if_fail (format != NULL);
-#line 1176 "mn-mailbox.c"
+#line 1179 "mn-mailbox.c"
 {
-#line 517 "mn-mailbox.gob"
+#line 518 "mn-mailbox.gob"
 	
     va_list args;
     char *notice;
@@ -1186,5 +1189,5 @@ mn_mailbox_notice (MNMailbox * self, const char * format, ...)
     mn_info("%s: %s", self->uri->text, notice);
     g_free(notice);
   }}
-#line 1190 "mn-mailbox.c"
+#line 1193 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-mailbox.gob b/src/mn-mailbox.gob
@@ -46,7 +46,7 @@ requires 2.0.10
 #define MN_MAILBOX_CAN_CHECK(self) \
   (MN_MAILBOX_GET_CLASS((self))->impl_check != NULL)
 #define MN_MAILBOX_MUST_POLL(self) \
-  (MN_MAILBOX_CAN_CHECK((self)) && ! mn_mailbox_get_automatic((self)))
+  (MN_MAILBOX_CAN_CHECK((self)) && mn_mailbox_get_must_poll((self)))
 %}
   
 %{
@@ -141,8 +141,9 @@ class MN:Mailbox from G:Object
   property STRING name (blurb = _("The mailbox human-readable name"), link);
   public const char *get_name (self) { return selfp->name; }
   
-  private gboolean automatic;
-  property BOOLEAN automatic (blurb = _("Whether the mailbox has to be manually checked or not"),
+  private gboolean must_poll = TRUE;
+  property BOOLEAN must_poll (blurb = _("Whether the mailbox has to be polled or not"),
+			      default_value = TRUE,
 			      link,
 			      export);
 
@@ -399,7 +400,7 @@ class MN:Mailbox from G:Object
       {
 	selfp->monitor_uri = g_strdup(uri);
 	selfp->monitor_events = events;
-	self_set_automatic(self, TRUE);
+	self_set_must_poll(self, FALSE);
       }
     else
       {
diff --git a/src/mn-mailbox.h b/src/mn-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
@@ -24,7 +24,7 @@ extern "C" {
 #define MN_MAILBOX_CAN_CHECK(self) \
   (MN_MAILBOX_GET_CLASS((self))->impl_check != NULL)
 #define MN_MAILBOX_MUST_POLL(self) \
-  (MN_MAILBOX_CAN_CHECK((self)) && ! mn_mailbox_get_automatic((self)))
+  (MN_MAILBOX_CAN_CHECK((self)) && mn_mailbox_get_must_poll((self)))
 
 
 /*
@@ -77,8 +77,8 @@ struct _MNMailboxClass {
 GType	mn_mailbox_get_type	(void);
 void 	mn_mailbox_removed	(MNMailbox * self);
 const char * 	mn_mailbox_get_name	(MNMailbox * self);
-gboolean 	mn_mailbox_get_automatic	(MNMailbox * self);
-void 	mn_mailbox_set_automatic	(MNMailbox * self,
+gboolean 	mn_mailbox_get_must_poll	(MNMailbox * self);
+void 	mn_mailbox_set_must_poll	(MNMailbox * self,
 					gboolean val);
 gboolean 	mn_mailbox_get_has_new	(MNMailbox * self);
 void 	mn_mailbox_set_has_new	(MNMailbox * self,
@@ -120,8 +120,8 @@ void 	mn_mailbox_check	(MNMailbox * self);
 #define MN_MAILBOX_PROP_URI(arg)    	"uri", __extension__ ({GObject *z = (arg); z;})
 #define MN_MAILBOX_PROP_NAME(arg)    	"name", __extension__ ({gchar *z = (arg); z;})
 #define MN_MAILBOX_GET_PROP_NAME(arg)	"name", __extension__ ({gchar **z = (arg); z;})
-#define MN_MAILBOX_PROP_AUTOMATIC(arg)    	"automatic", __extension__ ({gboolean z = (arg); z;})
-#define MN_MAILBOX_GET_PROP_AUTOMATIC(arg)	"automatic", __extension__ ({gboolean *z = (arg); z;})
+#define MN_MAILBOX_PROP_MUST_POLL(arg)    	"must_poll", __extension__ ({gboolean z = (arg); z;})
+#define MN_MAILBOX_GET_PROP_MUST_POLL(arg)	"must_poll", __extension__ ({gboolean *z = (arg); z;})
 #define MN_MAILBOX_PROP_HAS_NEW(arg)    	"has_new", __extension__ ({gboolean z = (arg); z;})
 #define MN_MAILBOX_GET_PROP_HAS_NEW(arg)	"has_new", __extension__ ({gboolean *z = (arg); z;})
 #define MN_MAILBOX_PROP_MESSAGES(arg)    	"messages", __extension__ ({gpointer z = (arg); z;})
@@ -132,8 +132,8 @@ void 	mn_mailbox_check	(MNMailbox * self);
 #define MN_MAILBOX_PROP_URI(arg)    	"uri",(GObject *)(arg)
 #define MN_MAILBOX_PROP_NAME(arg)    	"name",(gchar *)(arg)
 #define MN_MAILBOX_GET_PROP_NAME(arg)	"name",(gchar **)(arg)
-#define MN_MAILBOX_PROP_AUTOMATIC(arg)    	"automatic",(gboolean )(arg)
-#define MN_MAILBOX_GET_PROP_AUTOMATIC(arg)	"automatic",(gboolean *)(arg)
+#define MN_MAILBOX_PROP_MUST_POLL(arg)    	"must_poll",(gboolean )(arg)
+#define MN_MAILBOX_GET_PROP_MUST_POLL(arg)	"must_poll",(gboolean *)(arg)
 #define MN_MAILBOX_PROP_HAS_NEW(arg)    	"has_new",(gboolean )(arg)
 #define MN_MAILBOX_GET_PROP_HAS_NEW(arg)	"has_new",(gboolean *)(arg)
 #define MN_MAILBOX_PROP_MESSAGES(arg)    	"messages",(gpointer )(arg)
diff --git a/src/mn-mailboxes-private.h b/src/mn-mailboxes-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #ifndef __MN_MAILBOXES_PRIVATE_H__
 #define __MN_MAILBOXES_PRIVATE_H__
@@ -14,11 +14,7 @@ struct _MNMailboxesPrivate {
 	GSList * list;
 #line 37 "mn-mailboxes.gob"
 	unsigned int timeout_id;
-#line 38 "mn-mailboxes.gob"
-	unsigned int delay_notification_id;
-#line 39 "mn-mailboxes.gob"
-	unsigned int mailboxes_notification_id;
-#line 22 "mn-mailboxes-private.h"
+#line 18 "mn-mailboxes-private.h"
 };
 
 #ifdef __cplusplus
diff --git a/src/mn-mailboxes.c b/src/mn-mailboxes.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.10) on Mon Oct 25 15:24:34 2004
+/* Generated by GOB (v2.0.11) on Sun Oct 31 18:41:22 2004
    (do not edit directly) */
 
 /* End world hunger, donate to the World Food Programme, http://www.wfp.org */
 
 #define GOB_VERSION_MAJOR 2
 #define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 10
+#define GOB_VERSION_PATCHLEVEL 11
 
 #define selfp (self->_priv)
 
@@ -68,6 +68,7 @@ static void mn_mailboxes_new_cb (MNMailbox * mailbox, gpointer user_data) G_GNUC
 static void mn_mailboxes_notify_has_new_h (GObject * object, GParamSpec * pspec, gpointer user_data) G_GNUC_UNUSED;
 static void mn_mailboxes_messages_changed_h (MNMailbox * mailbox, gboolean has_new, gpointer user_data) G_GNUC_UNUSED;
 static void mn_mailboxes_notify_error_h (GObject * object, GParamSpec * pspec, gpointer user_data) G_GNUC_UNUSED;
+static void mn_mailboxes_notify_must_poll_h (GObject * object, GParamSpec * pspec, gpointer user_data) G_GNUC_UNUSED;
 static void mn_mailboxes_install_timeout (MNMailboxes * self) G_GNUC_UNUSED;
 static gboolean mn_mailboxes_timeout_cb (gpointer data) G_GNUC_UNUSED;
 static int mn_mailboxes_find_compare_func (gconstpointer a, gconstpointer b) G_GNUC_UNUSED;
@@ -199,6 +200,7 @@ static GObjectClass *parent_class = NULL;
 #define self_notify_has_new_h mn_mailboxes_notify_has_new_h
 #define self_messages_changed_h mn_mailboxes_messages_changed_h
 #define self_notify_error_h mn_mailboxes_notify_error_h
+#define self_notify_must_poll_h mn_mailboxes_notify_must_poll_h
 #define self_install_timeout mn_mailboxes_install_timeout
 #define self_timeout_cb mn_mailboxes_timeout_cb
 #define self_check mn_mailboxes_check
@@ -260,12 +262,12 @@ ___finalize(GObject *obj_self)
 #define __GOB_FUNCTION__ "MN:Mailboxes::finalize"
 	MNMailboxes *self G_GNUC_UNUSED = MN_MAILBOXES (obj_self);
 	gpointer priv G_GNUC_UNUSED = self->_priv;
-#line 169 "mn-mailboxes.gob"
+#line 168 "mn-mailboxes.gob"
 	___a_mn_mailboxes_finalize(obj_self);
-#line 266 "mn-mailboxes.c"
+#line 268 "mn-mailboxes.c"
 #line 36 "mn-mailboxes.gob"
 	if(self->_priv->list) { mn_g_object_slist_free ((gpointer) self->_priv->list); self->_priv->list = NULL; }
-#line 269 "mn-mailboxes.c"
+#line 271 "mn-mailboxes.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -289,7 +291,7 @@ mn_mailboxes_class_init (MNMailboxesClass * c G_GNUC_UNUSED)
 			G_TYPE_NONE, 1,
 			G_TYPE_OBJECT);
 	if ___GOB_UNLIKELY(sizeof(MNMailbox * ) != sizeof(GObject *) || parent_class == NULL /* avoid warning */) {
-		g_error("mn-mailboxes.gob line 48: Type mismatch of \"mailbox_added\" signal signature");
+		g_error("mn-mailboxes.gob line 46: Type mismatch of \"mailbox_added\" signal signature");
 	}
 	object_signals[MAILBOX_CHANGED_SIGNAL] =
 		g_signal_new ("mailbox_changed",
@@ -301,7 +303,7 @@ mn_mailboxes_class_init (MNMailboxesClass * c G_GNUC_UNUSED)
 			G_TYPE_NONE, 1,
 			G_TYPE_OBJECT);
 	if ___GOB_UNLIKELY(sizeof(MNMailbox * ) != sizeof(GObject *) || parent_class == NULL /* avoid warning */) {
-		g_error("mn-mailboxes.gob line 58: Type mismatch of \"mailbox_changed\" signal signature");
+		g_error("mn-mailboxes.gob line 56: Type mismatch of \"mailbox_changed\" signal signature");
 	}
 	object_signals[MAILBOX_REMOVED_SIGNAL] =
 		g_signal_new ("mailbox_removed",
@@ -313,7 +315,7 @@ mn_mailboxes_class_init (MNMailboxesClass * c G_GNUC_UNUSED)
 			G_TYPE_NONE, 1,
 			G_TYPE_OBJECT);
 	if ___GOB_UNLIKELY(sizeof(MNMailbox * ) != sizeof(GObject *) || parent_class == NULL /* avoid warning */) {
-		g_error("mn-mailboxes.gob line 69: Type mismatch of \"mailbox_removed\" signal signature");
+		g_error("mn-mailboxes.gob line 67: Type mismatch of \"mailbox_removed\" signal signature");
 	}
 	object_signals[LIST_CHANGED_SIGNAL] =
 		g_signal_new ("list_changed",
@@ -341,7 +343,7 @@ mn_mailboxes_class_init (MNMailboxesClass * c G_GNUC_UNUSED)
 			G_TYPE_NONE, 1,
 			G_TYPE_BOOLEAN);
 	if ___GOB_UNLIKELY(sizeof(gboolean ) != sizeof(gboolean ) || parent_class == NULL /* avoid warning */) {
-		g_error("mn-mailboxes.gob line 128: Type mismatch of \"messages_changed\" signal signature");
+		g_error("mn-mailboxes.gob line 127: Type mismatch of \"messages_changed\" signal signature");
 	}
 	object_signals[ERROR_CHANGED_SIGNAL] =
 		g_signal_new ("error_changed",
@@ -354,17 +356,17 @@ mn_mailboxes_class_init (MNMailboxesClass * c G_GNUC_UNUSED)
 
 	c->mailbox_added = NULL;
 	c->mailbox_changed = NULL;
-#line 69 "mn-mailboxes.gob"
+#line 67 "mn-mailboxes.gob"
 	c->mailbox_removed = ___real_mn_mailboxes_mailbox_removed;
-#line 96 "mn-mailboxes.gob"
+#line 95 "mn-mailboxes.gob"
 	c->list_changed = ___real_mn_mailboxes_list_changed;
-#line 362 "mn-mailboxes.c"
+#line 364 "mn-mailboxes.c"
 	c->has_new_changed = NULL;
 	c->messages_changed = NULL;
 	c->error_changed = NULL;
-#line 169 "mn-mailboxes.gob"
+#line 168 "mn-mailboxes.gob"
 	g_object_class->finalize = ___finalize;
-#line 368 "mn-mailboxes.c"
+#line 370 "mn-mailboxes.c"
 	g_object_class->get_property = ___object_get_property;
     {
 	GParamSpec   *param_spec;
@@ -381,23 +383,23 @@ mn_mailboxes_class_init (MNMailboxesClass * c G_GNUC_UNUSED)
     }
 }
 #undef __GOB_FUNCTION__
-#line 160 "mn-mailboxes.gob"
+#line 159 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_init (MNMailboxes * self G_GNUC_UNUSED)
-#line 388 "mn-mailboxes.c"
+#line 390 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::init"
 	self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,TYPE_SELF,MNMailboxesPrivate);
  {
-#line 161 "mn-mailboxes.gob"
+#line 160 "mn-mailboxes.gob"
 
     self_update_from_conf(self);
     self_install_timeout(self);
 
-    selfp->delay_notification_id = eel_gconf_notification_add(MN_CONF_DELAY_NAMESPACE, self_notify_delay_cb, self);
-    selfp->mailboxes_notification_id = eel_gconf_notification_add(MN_CONF_MAILBOXES, self_notify_mailboxes_cb, self);
+    mn_conf_notification_add(self, MN_CONF_DELAY_NAMESPACE, self_notify_delay_cb, self);
+    mn_conf_notification_add(self, MN_CONF_MAILBOXES, self_notify_mailboxes_cb, self);
   
-#line 401 "mn-mailboxes.c"
+#line 403 "mn-mailboxes.c"
  }
 }
 #undef __GOB_FUNCTION__
@@ -416,7 +418,7 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_MUST_POLL:
 		{
-#line 146 "mn-mailboxes.gob"
+#line 145 "mn-mailboxes.gob"
 
       gboolean must_poll = FALSE;
       GSList *l;
@@ -430,7 +432,7 @@ ___object_get_property (GObject *object,
 
       g_value_set_boolean(VAL, must_poll);
     
-#line 434 "mn-mailboxes.c"
+#line 436 "mn-mailboxes.c"
 		}
 		break;
 	default:
@@ -446,10 +448,10 @@ ___object_get_property (GObject *object,
 #undef __GOB_FUNCTION__
 
 
-#line 48 "mn-mailboxes.gob"
+#line 46 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_mailbox_added (MNMailboxes * self, MNMailbox * mailbox)
-#line 453 "mn-mailboxes.c"
+#line 455 "mn-mailboxes.c"
 {
 	GValue ___param_values[2];
 	GValue ___return_val;
@@ -457,15 +459,15 @@ mn_mailboxes_mailbox_added (MNMailboxes * self, MNMailbox * mailbox)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 48 "mn-mailboxes.gob"
+#line 46 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 48 "mn-mailboxes.gob"
+#line 46 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 48 "mn-mailboxes.gob"
+#line 46 "mn-mailboxes.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 48 "mn-mailboxes.gob"
+#line 46 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 469 "mn-mailboxes.c"
+#line 471 "mn-mailboxes.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -484,10 +486,10 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[1]);
 }
 
-#line 58 "mn-mailboxes.gob"
+#line 56 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_mailbox_changed (MNMailboxes * self, MNMailbox * mailbox)
-#line 491 "mn-mailboxes.c"
+#line 493 "mn-mailboxes.c"
 {
 	GValue ___param_values[2];
 	GValue ___return_val;
@@ -495,15 +497,15 @@ mn_mailboxes_mailbox_changed (MNMailboxes * self, MNMailbox * mailbox)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 58 "mn-mailboxes.gob"
+#line 56 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 58 "mn-mailboxes.gob"
+#line 56 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 58 "mn-mailboxes.gob"
+#line 56 "mn-mailboxes.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 58 "mn-mailboxes.gob"
+#line 56 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 507 "mn-mailboxes.c"
+#line 509 "mn-mailboxes.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -522,10 +524,10 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[1]);
 }
 
-#line 69 "mn-mailboxes.gob"
+#line 67 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_mailbox_removed (MNMailboxes * self, MNMailbox * mailbox)
-#line 529 "mn-mailboxes.c"
+#line 531 "mn-mailboxes.c"
 {
 	GValue ___param_values[2];
 	GValue ___return_val;
@@ -533,15 +535,15 @@ mn_mailboxes_mailbox_removed (MNMailboxes * self, MNMailbox * mailbox)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 69 "mn-mailboxes.gob"
+#line 67 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 69 "mn-mailboxes.gob"
+#line 67 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 69 "mn-mailboxes.gob"
+#line 67 "mn-mailboxes.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 69 "mn-mailboxes.gob"
+#line 67 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 545 "mn-mailboxes.c"
+#line 547 "mn-mailboxes.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -559,20 +561,21 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[0]);
 	g_value_unset (&___param_values[1]);
 }
-#line 69 "mn-mailboxes.gob"
+#line 67 "mn-mailboxes.gob"
 static void 
 ___real_mn_mailboxes_mailbox_removed (MNMailboxes * self G_GNUC_UNUSED, MNMailbox * mailbox)
-#line 566 "mn-mailboxes.c"
+#line 568 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::mailbox_removed"
 {
-#line 71 "mn-mailboxes.gob"
+#line 69 "mn-mailboxes.gob"
 	
     /* disconnect signals */
     g_object_disconnect(mailbox,
 			"any_signal", self_notify_has_new_h, self,
 			"any_signal", self_messages_changed_h, self,
 			"any_signal", self_notify_error_h, self,
+			"any_signal", self_notify_must_poll_h, self,
 			NULL);
 
     /* emit the "removed" signal on the mailbox */
@@ -583,13 +586,13 @@ ___real_mn_mailboxes_mailbox_removed (MNMailboxes * self G_GNUC_UNUSED, MNMailbo
     self_messages_changed(self, FALSE);
     self_error_changed(self);
   }}
-#line 587 "mn-mailboxes.c"
+#line 590 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 96 "mn-mailboxes.gob"
+#line 95 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_list_changed (MNMailboxes * self)
-#line 593 "mn-mailboxes.c"
+#line 596 "mn-mailboxes.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -597,11 +600,11 @@ mn_mailboxes_list_changed (MNMailboxes * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 96 "mn-mailboxes.gob"
+#line 95 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 96 "mn-mailboxes.gob"
+#line 95 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 605 "mn-mailboxes.c"
+#line 608 "mn-mailboxes.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -614,25 +617,25 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 	g_value_unset (&___param_values[0]);
 }
-#line 96 "mn-mailboxes.gob"
+#line 95 "mn-mailboxes.gob"
 static void 
 ___real_mn_mailboxes_list_changed (MNMailboxes * self G_GNUC_UNUSED)
-#line 621 "mn-mailboxes.c"
+#line 624 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::list_changed"
 {
-#line 98 "mn-mailboxes.gob"
+#line 97 "mn-mailboxes.gob"
 	
     /* must-poll has possibly changed */
     g_object_notify(G_OBJECT(self), "must-poll");
   }}
-#line 630 "mn-mailboxes.c"
+#line 633 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 112 "mn-mailboxes.gob"
+#line 111 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_has_new_changed (MNMailboxes * self)
-#line 636 "mn-mailboxes.c"
+#line 639 "mn-mailboxes.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -640,11 +643,11 @@ mn_mailboxes_has_new_changed (MNMailboxes * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 112 "mn-mailboxes.gob"
+#line 111 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 112 "mn-mailboxes.gob"
+#line 111 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 648 "mn-mailboxes.c"
+#line 651 "mn-mailboxes.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -658,10 +661,10 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[0]);
 }
 
-#line 128 "mn-mailboxes.gob"
+#line 127 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_messages_changed (MNMailboxes * self, gboolean has_new)
-#line 665 "mn-mailboxes.c"
+#line 668 "mn-mailboxes.c"
 {
 	GValue ___param_values[2];
 	GValue ___return_val;
@@ -669,11 +672,11 @@ mn_mailboxes_messages_changed (MNMailboxes * self, gboolean has_new)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 128 "mn-mailboxes.gob"
+#line 127 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 128 "mn-mailboxes.gob"
+#line 127 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 677 "mn-mailboxes.c"
+#line 680 "mn-mailboxes.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -692,10 +695,10 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[1]);
 }
 
-#line 140 "mn-mailboxes.gob"
+#line 139 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_error_changed (MNMailboxes * self)
-#line 699 "mn-mailboxes.c"
+#line 702 "mn-mailboxes.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -703,11 +706,11 @@ mn_mailboxes_error_changed (MNMailboxes * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 140 "mn-mailboxes.gob"
+#line 139 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 140 "mn-mailboxes.gob"
+#line 139 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 711 "mn-mailboxes.c"
+#line 714 "mn-mailboxes.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -721,62 +724,59 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[0]);
 }
 
-#line 146 "mn-mailboxes.gob"
+#line 145 "mn-mailboxes.gob"
 gboolean 
 mn_mailboxes_get_must_poll (MNMailboxes * self)
-#line 728 "mn-mailboxes.c"
+#line 731 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::get_must_poll"
 {
-#line 143 "mn-mailboxes.gob"
+#line 142 "mn-mailboxes.gob"
 		gboolean val; g_object_get (G_OBJECT (self), "must_poll", &val, NULL); return val;
 }}
-#line 735 "mn-mailboxes.c"
+#line 738 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
 
-#line 169 "mn-mailboxes.gob"
+#line 168 "mn-mailboxes.gob"
 static void 
 ___a_mn_mailboxes_finalize (GObject * object G_GNUC_UNUSED)
-#line 742 "mn-mailboxes.c"
+#line 745 "mn-mailboxes.c"
 #define PARENT_HANDLER(___object) \
 	{ if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(___object); }
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::finalize"
-#line 169 "mn-mailboxes.gob"
+#line 168 "mn-mailboxes.gob"
 	g_return_if_fail (object != NULL);
-#line 169 "mn-mailboxes.gob"
+#line 168 "mn-mailboxes.gob"
 	g_return_if_fail (G_IS_OBJECT (object));
-#line 752 "mn-mailboxes.c"
+#line 755 "mn-mailboxes.c"
 {
-#line 171 "mn-mailboxes.gob"
+#line 170 "mn-mailboxes.gob"
 	
     Self *self = SELF(object);
 
     if (selfp->timeout_id)
       g_source_remove(selfp->timeout_id);
 
-    eel_gconf_notification_remove(selfp->delay_notification_id);
-    eel_gconf_notification_remove(selfp->mailboxes_notification_id);
-
     PARENT_HANDLER(object);
   }}
 #line 766 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 183 "mn-mailboxes.gob"
+#line 179 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_notify_delay_cb (GConfClient * client, guint cnxn_id, GConfEntry * entry, gpointer user_data)
 #line 773 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::notify_delay_cb"
-#line 183 "mn-mailboxes.gob"
+#line 179 "mn-mailboxes.gob"
 	g_return_if_fail (user_data != NULL);
 #line 778 "mn-mailboxes.c"
 {
-#line 188 "mn-mailboxes.gob"
+#line 184 "mn-mailboxes.gob"
 	
     Self *self = user_data;
 
@@ -787,17 +787,17 @@ mn_mailboxes_notify_delay_cb (GConfClient * client, guint cnxn_id, GConfEntry * 
 #line 788 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 196 "mn-mailboxes.gob"
+#line 192 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_notify_mailboxes_cb (GConfClient * client, guint cnxn_id, GConfEntry * entry, gpointer user_data)
 #line 794 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::notify_mailboxes_cb"
-#line 196 "mn-mailboxes.gob"
+#line 192 "mn-mailboxes.gob"
 	g_return_if_fail (user_data != NULL);
 #line 799 "mn-mailboxes.c"
 {
-#line 201 "mn-mailboxes.gob"
+#line 197 "mn-mailboxes.gob"
 	
     Self *self = user_data;
 
@@ -808,19 +808,19 @@ mn_mailboxes_notify_mailboxes_cb (GConfClient * client, guint cnxn_id, GConfEntr
 #line 809 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 209 "mn-mailboxes.gob"
+#line 205 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_update_from_conf (MNMailboxes * self)
 #line 815 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::update_from_conf"
-#line 209 "mn-mailboxes.gob"
+#line 205 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 209 "mn-mailboxes.gob"
+#line 205 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
 #line 822 "mn-mailboxes.c"
 {
-#line 211 "mn-mailboxes.gob"
+#line 207 "mn-mailboxes.gob"
 	
     GSList *gconf_mailboxes;
     GSList *l;
@@ -877,21 +877,21 @@ mn_mailboxes_update_from_conf (MNMailboxes * self)
 #line 878 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 265 "mn-mailboxes.gob"
+#line 261 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_new_cb (MNMailbox * mailbox, gpointer user_data)
 #line 884 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::new_cb"
-#line 265 "mn-mailboxes.gob"
+#line 261 "mn-mailboxes.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 265 "mn-mailboxes.gob"
+#line 261 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 265 "mn-mailboxes.gob"
+#line 261 "mn-mailboxes.gob"
 	g_return_if_fail (user_data != NULL);
 #line 893 "mn-mailboxes.c"
 {
-#line 268 "mn-mailboxes.gob"
+#line 264 "mn-mailboxes.gob"
 	
     Self *self = user_data;
     GSList *elem;
@@ -906,6 +906,7 @@ mn_mailboxes_new_cb (MNMailbox * mailbox, gpointer user_data)
 			 "signal::notify::has-new", self_notify_has_new_h, self,
 			 "signal::messages-changed", self_messages_changed_h, self,
 			 "signal::notify::error", self_notify_error_h, self,
+			 "signal::notify::must-poll", self_notify_must_poll_h, self,
 			 NULL);
 
 	if (MN_MAILBOX_CAN_CHECK(mailbox))
@@ -920,26 +921,26 @@ mn_mailboxes_new_cb (MNMailbox * mailbox, gpointer user_data)
     else
       g_object_unref(mailbox);
   }}
-#line 924 "mn-mailboxes.c"
+#line 925 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 297 "mn-mailboxes.gob"
+#line 294 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_notify_has_new_h (GObject * object, GParamSpec * pspec, gpointer user_data)
-#line 930 "mn-mailboxes.c"
+#line 931 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::notify_has_new_h"
-#line 297 "mn-mailboxes.gob"
+#line 294 "mn-mailboxes.gob"
 	g_return_if_fail (object != NULL);
-#line 297 "mn-mailboxes.gob"
+#line 294 "mn-mailboxes.gob"
 	g_return_if_fail (G_IS_OBJECT (object));
-#line 297 "mn-mailboxes.gob"
+#line 294 "mn-mailboxes.gob"
 	g_return_if_fail (pspec != NULL);
-#line 297 "mn-mailboxes.gob"
+#line 294 "mn-mailboxes.gob"
 	g_return_if_fail (user_data != NULL);
-#line 941 "mn-mailboxes.c"
+#line 942 "mn-mailboxes.c"
 {
-#line 301 "mn-mailboxes.gob"
+#line 298 "mn-mailboxes.gob"
 	
     Self *self = user_data;
     MNMailbox *mailbox = MN_MAILBOX(object);
@@ -950,49 +951,49 @@ mn_mailboxes_notify_has_new_h (GObject * object, GParamSpec * pspec, gpointer us
 
     self_has_new_changed(self);
   }}
-#line 954 "mn-mailboxes.c"
+#line 955 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 312 "mn-mailboxes.gob"
+#line 309 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_messages_changed_h (MNMailbox * mailbox, gboolean has_new, gpointer user_data)
-#line 960 "mn-mailboxes.c"
+#line 961 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::messages_changed_h"
-#line 312 "mn-mailboxes.gob"
+#line 309 "mn-mailboxes.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 312 "mn-mailboxes.gob"
+#line 309 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 312 "mn-mailboxes.gob"
+#line 309 "mn-mailboxes.gob"
 	g_return_if_fail (user_data != NULL);
-#line 969 "mn-mailboxes.c"
+#line 970 "mn-mailboxes.c"
 {
-#line 316 "mn-mailboxes.gob"
+#line 313 "mn-mailboxes.gob"
 	
     Self *self = user_data;
 
     self_messages_changed(self, has_new);
   }}
-#line 977 "mn-mailboxes.c"
+#line 978 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 322 "mn-mailboxes.gob"
+#line 319 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_notify_error_h (GObject * object, GParamSpec * pspec, gpointer user_data)
-#line 983 "mn-mailboxes.c"
+#line 984 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::notify_error_h"
-#line 322 "mn-mailboxes.gob"
+#line 319 "mn-mailboxes.gob"
 	g_return_if_fail (object != NULL);
-#line 322 "mn-mailboxes.gob"
+#line 319 "mn-mailboxes.gob"
 	g_return_if_fail (G_IS_OBJECT (object));
-#line 322 "mn-mailboxes.gob"
+#line 319 "mn-mailboxes.gob"
 	g_return_if_fail (pspec != NULL);
-#line 322 "mn-mailboxes.gob"
+#line 319 "mn-mailboxes.gob"
 	g_return_if_fail (user_data != NULL);
-#line 994 "mn-mailboxes.c"
+#line 995 "mn-mailboxes.c"
 {
-#line 326 "mn-mailboxes.gob"
+#line 323 "mn-mailboxes.gob"
 	
     Self *self = user_data;
     MNMailbox *mailbox = MN_MAILBOX(object);
@@ -1004,22 +1005,48 @@ mn_mailboxes_notify_error_h (GObject * object, GParamSpec * pspec, gpointer user
 
     self_error_changed(self);
   }}
-#line 1008 "mn-mailboxes.c"
+#line 1009 "mn-mailboxes.c"
+#undef __GOB_FUNCTION__
+
+#line 335 "mn-mailboxes.gob"
+static void 
+mn_mailboxes_notify_must_poll_h (GObject * object, GParamSpec * pspec, gpointer user_data)
+#line 1015 "mn-mailboxes.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailboxes::notify_must_poll_h"
+#line 335 "mn-mailboxes.gob"
+	g_return_if_fail (object != NULL);
+#line 335 "mn-mailboxes.gob"
+	g_return_if_fail (G_IS_OBJECT (object));
+#line 335 "mn-mailboxes.gob"
+	g_return_if_fail (pspec != NULL);
+#line 335 "mn-mailboxes.gob"
+	g_return_if_fail (user_data != NULL);
+#line 1026 "mn-mailboxes.c"
+{
+#line 339 "mn-mailboxes.gob"
+	
+    Self *self = user_data;
+
+    /* must-poll has possibly changed */
+    g_object_notify(G_OBJECT(self), "must-poll");
+  }}
+#line 1035 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 338 "mn-mailboxes.gob"
+#line 346 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_install_timeout (MNMailboxes * self)
-#line 1014 "mn-mailboxes.c"
+#line 1041 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::install_timeout"
-#line 338 "mn-mailboxes.gob"
+#line 346 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 338 "mn-mailboxes.gob"
+#line 346 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 1021 "mn-mailboxes.c"
+#line 1048 "mn-mailboxes.c"
 {
-#line 340 "mn-mailboxes.gob"
+#line 348 "mn-mailboxes.gob"
 	
     int minutes;
     int seconds;
@@ -1038,20 +1065,20 @@ mn_mailboxes_install_timeout (MNMailboxes * self)
 					self_timeout_cb,
 					self);
   }}
-#line 1042 "mn-mailboxes.c"
+#line 1069 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 359 "mn-mailboxes.gob"
+#line 367 "mn-mailboxes.gob"
 static gboolean 
 mn_mailboxes_timeout_cb (gpointer data)
-#line 1048 "mn-mailboxes.c"
+#line 1075 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::timeout_cb"
-#line 359 "mn-mailboxes.gob"
+#line 367 "mn-mailboxes.gob"
 	g_return_val_if_fail (data != NULL, (gboolean )0);
-#line 1053 "mn-mailboxes.c"
+#line 1080 "mn-mailboxes.c"
 {
-#line 361 "mn-mailboxes.gob"
+#line 369 "mn-mailboxes.gob"
 	
     Self *self = data;
 
@@ -1061,22 +1088,22 @@ mn_mailboxes_timeout_cb (gpointer data)
     
     return TRUE;		/* continue */
   }}
-#line 1065 "mn-mailboxes.c"
+#line 1092 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 371 "mn-mailboxes.gob"
+#line 379 "mn-mailboxes.gob"
 void 
 mn_mailboxes_check (MNMailboxes * self)
-#line 1071 "mn-mailboxes.c"
+#line 1098 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::check"
-#line 371 "mn-mailboxes.gob"
+#line 379 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 371 "mn-mailboxes.gob"
+#line 379 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 1078 "mn-mailboxes.c"
+#line 1105 "mn-mailboxes.c"
 {
-#line 373 "mn-mailboxes.gob"
+#line 381 "mn-mailboxes.gob"
 	
     GSList *l;
 
@@ -1088,41 +1115,41 @@ mn_mailboxes_check (MNMailboxes * self)
 	  mn_mailbox_check(mailbox);
       }
   }}
-#line 1092 "mn-mailboxes.c"
+#line 1119 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 385 "mn-mailboxes.gob"
+#line 393 "mn-mailboxes.gob"
 GSList * 
 mn_mailboxes_get (MNMailboxes * self)
-#line 1098 "mn-mailboxes.c"
+#line 1125 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::get"
-#line 385 "mn-mailboxes.gob"
+#line 393 "mn-mailboxes.gob"
 	g_return_val_if_fail (self != NULL, (GSList * )0);
-#line 385 "mn-mailboxes.gob"
+#line 393 "mn-mailboxes.gob"
 	g_return_val_if_fail (MN_IS_MAILBOXES (self), (GSList * )0);
-#line 1105 "mn-mailboxes.c"
+#line 1132 "mn-mailboxes.c"
 {
-#line 387 "mn-mailboxes.gob"
+#line 395 "mn-mailboxes.gob"
 	
     return selfp->list;
   }}
-#line 1111 "mn-mailboxes.c"
+#line 1138 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 391 "mn-mailboxes.gob"
+#line 399 "mn-mailboxes.gob"
 GSList * 
 mn_mailboxes_get_messages (MNMailboxes * self)
-#line 1117 "mn-mailboxes.c"
+#line 1144 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::get_messages"
-#line 391 "mn-mailboxes.gob"
+#line 399 "mn-mailboxes.gob"
 	g_return_val_if_fail (self != NULL, (GSList * )0);
-#line 391 "mn-mailboxes.gob"
+#line 399 "mn-mailboxes.gob"
 	g_return_val_if_fail (MN_IS_MAILBOXES (self), (GSList * )0);
-#line 1124 "mn-mailboxes.c"
+#line 1151 "mn-mailboxes.c"
 {
-#line 393 "mn-mailboxes.gob"
+#line 401 "mn-mailboxes.gob"
 	
     GSList *messages = NULL;
     GSList *l;
@@ -1138,24 +1165,24 @@ mn_mailboxes_get_messages (MNMailboxes * self)
 
     return messages;
   }}
-#line 1142 "mn-mailboxes.c"
+#line 1169 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 409 "mn-mailboxes.gob"
+#line 417 "mn-mailboxes.gob"
 GSList * 
 mn_mailboxes_find (MNMailboxes * self, const char * text_uri)
-#line 1148 "mn-mailboxes.c"
+#line 1175 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::find"
-#line 409 "mn-mailboxes.gob"
+#line 417 "mn-mailboxes.gob"
 	g_return_val_if_fail (self != NULL, (GSList * )0);
-#line 409 "mn-mailboxes.gob"
+#line 417 "mn-mailboxes.gob"
 	g_return_val_if_fail (MN_IS_MAILBOXES (self), (GSList * )0);
-#line 409 "mn-mailboxes.gob"
+#line 417 "mn-mailboxes.gob"
 	g_return_val_if_fail (text_uri != NULL, (GSList * )0);
-#line 1157 "mn-mailboxes.c"
+#line 1184 "mn-mailboxes.c"
 {
-#line 411 "mn-mailboxes.gob"
+#line 419 "mn-mailboxes.gob"
 	
     MNURI *uri;
     GSList *elem;
@@ -1166,60 +1193,60 @@ mn_mailboxes_find (MNMailboxes * self, const char * text_uri)
 
     return elem;
   }}
-#line 1170 "mn-mailboxes.c"
+#line 1197 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 422 "mn-mailboxes.gob"
+#line 430 "mn-mailboxes.gob"
 GSList * 
 mn_mailboxes_find_uri (MNMailboxes * self, MNURI * uri)
-#line 1176 "mn-mailboxes.c"
+#line 1203 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::find_uri"
-#line 422 "mn-mailboxes.gob"
+#line 430 "mn-mailboxes.gob"
 	g_return_val_if_fail (self != NULL, (GSList * )0);
-#line 422 "mn-mailboxes.gob"
+#line 430 "mn-mailboxes.gob"
 	g_return_val_if_fail (MN_IS_MAILBOXES (self), (GSList * )0);
-#line 422 "mn-mailboxes.gob"
+#line 430 "mn-mailboxes.gob"
 	g_return_val_if_fail (uri != NULL, (GSList * )0);
-#line 422 "mn-mailboxes.gob"
+#line 430 "mn-mailboxes.gob"
 	g_return_val_if_fail (MN_IS_URI (uri), (GSList * )0);
-#line 1187 "mn-mailboxes.c"
+#line 1214 "mn-mailboxes.c"
 {
-#line 424 "mn-mailboxes.gob"
+#line 432 "mn-mailboxes.gob"
 	
     return g_slist_find_custom(selfp->list, uri, self_find_compare_func);
   }}
-#line 1193 "mn-mailboxes.c"
+#line 1220 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 428 "mn-mailboxes.gob"
+#line 436 "mn-mailboxes.gob"
 static int 
 mn_mailboxes_find_compare_func (gconstpointer a, gconstpointer b)
-#line 1199 "mn-mailboxes.c"
+#line 1226 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::find_compare_func"
 {
-#line 430 "mn-mailboxes.gob"
+#line 438 "mn-mailboxes.gob"
 	
     MNMailbox *mailbox = (MNMailbox *) a;
     MNURI *uri = (MNURI *) b;
 
     return strcmp(mailbox->uri->text, uri->text);
   }}
-#line 1210 "mn-mailboxes.c"
+#line 1237 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 437 "mn-mailboxes.gob"
+#line 445 "mn-mailboxes.gob"
 GSList * 
 mn_mailboxes_conf_find (GSList * gconf_mailboxes, const char * text_uri)
-#line 1216 "mn-mailboxes.c"
+#line 1243 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::conf_find"
-#line 437 "mn-mailboxes.gob"
+#line 445 "mn-mailboxes.gob"
 	g_return_val_if_fail (text_uri != NULL, (GSList * )0);
-#line 1221 "mn-mailboxes.c"
+#line 1248 "mn-mailboxes.c"
 {
-#line 439 "mn-mailboxes.gob"
+#line 447 "mn-mailboxes.gob"
 	
     MNURI *uri;
     GSList *elem;
@@ -1230,36 +1257,36 @@ mn_mailboxes_conf_find (GSList * gconf_mailboxes, const char * text_uri)
 
     return elem;
   }}
-#line 1234 "mn-mailboxes.c"
+#line 1261 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 450 "mn-mailboxes.gob"
+#line 458 "mn-mailboxes.gob"
 GSList * 
 mn_mailboxes_conf_find_uri (GSList * gconf_mailboxes, MNURI * uri)
-#line 1240 "mn-mailboxes.c"
+#line 1267 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::conf_find_uri"
-#line 450 "mn-mailboxes.gob"
+#line 458 "mn-mailboxes.gob"
 	g_return_val_if_fail (uri != NULL, (GSList * )0);
-#line 450 "mn-mailboxes.gob"
+#line 458 "mn-mailboxes.gob"
 	g_return_val_if_fail (MN_IS_URI (uri), (GSList * )0);
-#line 1247 "mn-mailboxes.c"
+#line 1274 "mn-mailboxes.c"
 {
-#line 452 "mn-mailboxes.gob"
+#line 460 "mn-mailboxes.gob"
 	
     return g_slist_find_custom(gconf_mailboxes, uri, self_conf_find_compare_func);
   }}
-#line 1253 "mn-mailboxes.c"
+#line 1280 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 456 "mn-mailboxes.gob"
+#line 464 "mn-mailboxes.gob"
 static int 
 mn_mailboxes_conf_find_compare_func (gconstpointer a, gconstpointer b)
-#line 1259 "mn-mailboxes.c"
+#line 1286 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::conf_find_compare_func"
 {
-#line 458 "mn-mailboxes.gob"
+#line 466 "mn-mailboxes.gob"
 	
     MNURI *uri_a;
     MNURI *uri_b = (MNURI *) b;
@@ -1271,19 +1298,19 @@ mn_mailboxes_conf_find_compare_func (gconstpointer a, gconstpointer b)
 
     return cmp;
   }}
-#line 1275 "mn-mailboxes.c"
+#line 1302 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 470 "mn-mailboxes.gob"
+#line 478 "mn-mailboxes.gob"
 MNMailboxes * 
 mn_mailboxes_new (void)
-#line 1281 "mn-mailboxes.c"
+#line 1308 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::new"
 {
-#line 472 "mn-mailboxes.gob"
+#line 480 "mn-mailboxes.gob"
 	
-    return MN_MAILBOXES(GET_NEW);
+    return GET_NEW;
   }}
-#line 1289 "mn-mailboxes.c"
+#line 1316 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-mailboxes.gob b/src/mn-mailboxes.gob
@@ -35,8 +35,6 @@ class MN:Mailboxes from G:Object
 {
   private GSList *list destroywith mn_g_object_slist_free;
   private unsigned int timeout_id;
-  private unsigned int delay_notification_id;
-  private unsigned int mailboxes_notification_id;
     
   /**
    * mailbox-added:
@@ -74,6 +72,7 @@ class MN:Mailboxes from G:Object
 			"any_signal", self_notify_has_new_h, self,
 			"any_signal", self_messages_changed_h, self,
 			"any_signal", self_notify_error_h, self,
+			"any_signal", self_notify_must_poll_h, self,
 			NULL);
 
     /* emit the "removed" signal on the mailbox */
@@ -162,8 +161,8 @@ class MN:Mailboxes from G:Object
     self_update_from_conf(self);
     self_install_timeout(self);
 
-    selfp->delay_notification_id = eel_gconf_notification_add(MN_CONF_DELAY_NAMESPACE, self_notify_delay_cb, self);
-    selfp->mailboxes_notification_id = eel_gconf_notification_add(MN_CONF_MAILBOXES, self_notify_mailboxes_cb, self);
+    mn_conf_notification_add(self, MN_CONF_DELAY_NAMESPACE, self_notify_delay_cb, self);
+    mn_conf_notification_add(self, MN_CONF_MAILBOXES, self_notify_mailboxes_cb, self);
   }
   
   override (G:Object) void
@@ -174,9 +173,6 @@ class MN:Mailboxes from G:Object
     if (selfp->timeout_id)
       g_source_remove(selfp->timeout_id);
 
-    eel_gconf_notification_remove(selfp->delay_notification_id);
-    eel_gconf_notification_remove(selfp->mailboxes_notification_id);
-
     PARENT_HANDLER(object);
   }
 
@@ -279,6 +275,7 @@ class MN:Mailboxes from G:Object
 			 "signal::notify::has-new", self_notify_has_new_h, self,
 			 "signal::messages-changed", self_messages_changed_h, self,
 			 "signal::notify::error", self_notify_error_h, self,
+			 "signal::notify::must-poll", self_notify_must_poll_h, self,
 			 NULL);
 
 	if (MN_MAILBOX_CAN_CHECK(mailbox))
@@ -336,6 +333,17 @@ class MN:Mailboxes from G:Object
   }
 
   private void
+    notify_must_poll_h (G:Object *object (check null type),
+			GParamSpec *pspec (check null),
+			gpointer user_data (check null))
+  {
+    Self *self = user_data;
+
+    /* must-poll has possibly changed */
+    g_object_notify(G_OBJECT(self), "must-poll");
+  }
+  
+  private void
     install_timeout (self)
   {
     int minutes;
@@ -470,6 +478,6 @@ class MN:Mailboxes from G:Object
   public MNMailboxes *
     new (void)
   {
-    return MN_MAILBOXES(GET_NEW);
+    return GET_NEW;
   }
 }
diff --git a/src/mn-mailboxes.h b/src/mn-mailboxes.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-maildir-mailbox-private.h b/src/mn-maildir-mailbox-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #ifndef __MN_MAILDIR_MAILBOX_PRIVATE_H__
 #define __MN_MAILDIR_MAILBOX_PRIVATE_H__
diff --git a/src/mn-maildir-mailbox.c b/src/mn-maildir-mailbox.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.10) on Mon Oct 25 15:24:33 2004
+/* Generated by GOB (v2.0.11) on Sun Oct 31 18:41:21 2004
    (do not edit directly) */
 
 /* End world hunger, donate to the World Food Programme, http://www.wfp.org */
 
 #define GOB_VERSION_MAJOR 2
 #define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 10
+#define GOB_VERSION_PATCHLEVEL 11
 
 #define selfp (self->_priv)
 
diff --git a/src/mn-maildir-mailbox.h b/src/mn-maildir-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-mbox-mailbox-private.h b/src/mn-mbox-mailbox-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #ifndef __MN_MBOX_MAILBOX_PRIVATE_H__
 #define __MN_MBOX_MAILBOX_PRIVATE_H__
diff --git a/src/mn-mbox-mailbox.c b/src/mn-mbox-mailbox.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.10) on Mon Oct 25 15:24:33 2004
+/* Generated by GOB (v2.0.11) on Sun Oct 31 18:41:21 2004
    (do not edit directly) */
 
 /* End world hunger, donate to the World Food Programme, http://www.wfp.org */
 
 #define GOB_VERSION_MAJOR 2
 #define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 10
+#define GOB_VERSION_PATCHLEVEL 11
 
 #define selfp (self->_priv)
 
@@ -127,9 +127,9 @@ mn_mbox_mailbox_class_init (MNmboxMailboxClass * class G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:mbox:Mailbox::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
+	MNMailboxClass *mn_mailbox_class = (MNMailboxClass *)class;
 
 	g_type_class_add_private(class,sizeof(MNmboxMailboxPrivate));
-	MNMailboxClass *mn_mailbox_class = (MNMailboxClass *)class;
 
 	parent_class = g_type_class_ref (MN_TYPE_MAILBOX);
 
@@ -269,7 +269,7 @@ ___4_mn_mbox_mailbox_impl_check (MNMailbox * mailbox G_GNUC_UNUSED)
     Self *self = SELF(mailbox);
     gboolean check = TRUE;
     
-    if (! mn_mailbox_get_automatic(mailbox))
+    if (mn_mailbox_get_must_poll(mailbox))
       {
 	GnomeVFSFileInfo *file_info;
 
@@ -277,12 +277,12 @@ ___4_mn_mbox_mailbox_impl_check (MNMailbox * mailbox G_GNUC_UNUSED)
 
 	file_info = gnome_vfs_file_info_new();
 	if (gnome_vfs_get_file_info_uri(mailbox->uri->vfs, file_info, GNOME_VFS_FILE_INFO_FOLLOW_LINKS) == GNOME_VFS_OK)
-	{
-	  if (file_info->mtime == selfp->last_mtime)
-	    check = FALSE;
-	  else
-	    selfp->last_mtime = file_info->mtime;
-	}
+	  {
+	    if (file_info->mtime == selfp->last_mtime)
+	      check = FALSE;
+	    else
+	      selfp->last_mtime = file_info->mtime;
+	  }
 	gnome_vfs_file_info_unref(file_info);
       }
 
diff --git a/src/mn-mbox-mailbox.gob b/src/mn-mbox-mailbox.gob
@@ -118,7 +118,7 @@ class MN:mbox:Mailbox from MN:Mailbox
     Self *self = SELF(mailbox);
     gboolean check = TRUE;
     
-    if (! mn_mailbox_get_automatic(mailbox))
+    if (mn_mailbox_get_must_poll(mailbox))
       {
 	GnomeVFSFileInfo *file_info;
 
@@ -126,12 +126,12 @@ class MN:mbox:Mailbox from MN:Mailbox
 
 	file_info = gnome_vfs_file_info_new();
 	if (gnome_vfs_get_file_info_uri(mailbox->uri->vfs, file_info, GNOME_VFS_FILE_INFO_FOLLOW_LINKS) == GNOME_VFS_OK)
-	{
-	  if (file_info->mtime == selfp->last_mtime)
-	    check = FALSE;
-	  else
-	    selfp->last_mtime = file_info->mtime;
-	}
+	  {
+	    if (file_info->mtime == selfp->last_mtime)
+	      check = FALSE;
+	    else
+	      selfp->last_mtime = file_info->mtime;
+	  }
 	gnome_vfs_file_info_unref(file_info);
       }
 
diff --git a/src/mn-mbox-mailbox.h b/src/mn-mbox-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-message-box-private.h b/src/mn-message-box-private.h
@@ -0,0 +1,30 @@
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
+
+#ifndef __MN_MESSAGE_BOX_PRIVATE_H__
+#define __MN_MESSAGE_BOX_PRIVATE_H__
+
+#include "mn-message-box.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+struct _MNMessageBoxPrivate {
+#line 33 "mn-message-box.gob"
+	GtkWidget * sent_label;
+#line 34 "mn-message-box.gob"
+	unsigned int update_timeout_id;
+#line 36 "mn-message-box.gob"
+	GtkSizeGroup * size_group;
+#line 41 "mn-message-box.gob"
+	MNMessage * message;
+#line 46 "mn-message-box.gob"
+	gboolean selectable;
+#line 24 "mn-message-box-private.h"
+};
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-message-box.c b/src/mn-message-box.c
@@ -0,0 +1,555 @@
+/* Generated by GOB (v2.0.11) on Sun Oct 31 18:41:22 2004
+   (do not edit directly) */
+
+/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
+
+#define GOB_VERSION_MAJOR 2
+#define GOB_VERSION_MINOR 0
+#define GOB_VERSION_PATCHLEVEL 11
+
+#define selfp (self->_priv)
+
+#include <string.h> /* memset() */
+
+#include "mn-message-box.h"
+
+#include "mn-message-box-private.h"
+
+#ifdef G_LIKELY
+#define ___GOB_LIKELY(expr) G_LIKELY(expr)
+#define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr)
+#else /* ! G_LIKELY */
+#define ___GOB_LIKELY(expr) (expr)
+#define ___GOB_UNLIKELY(expr) (expr)
+#endif /* G_LIKELY */
+
+#line 25 "mn-message-box.gob"
+
+#include "config.h"
+#include <glib/gi18n.h>
+#include "mn-util.h"
+
+#line 33 "mn-message-box.c"
+/* self casting macros */
+#define SELF(x) MN_MESSAGE_BOX(x)
+#define SELF_CONST(x) MN_MESSAGE_BOX_CONST(x)
+#define IS_SELF(x) MN_IS_MESSAGE_BOX(x)
+#define TYPE_SELF MN_TYPE_MESSAGE_BOX
+#define SELF_CLASS(x) MN_MESSAGE_BOX_CLASS(x)
+
+#define SELF_GET_CLASS(x) MN_MESSAGE_BOX_GET_CLASS(x)
+
+/* self typedefs */
+typedef MNMessageBox Self;
+typedef MNMessageBoxClass SelfClass;
+
+/* here are local prototypes */
+static void ___object_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec);
+static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec);
+static void mn_message_box_init (MNMessageBox * o) G_GNUC_UNUSED;
+static void mn_message_box_class_init (MNMessageBoxClass * c) G_GNUC_UNUSED;
+static GObject * ___1_mn_message_box_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_params) G_GNUC_UNUSED;
+static void ___2_mn_message_box_finalize (GObject * object) G_GNUC_UNUSED;
+static gboolean mn_message_box_update_cb (gpointer data) G_GNUC_UNUSED;
+static void mn_message_box_append_row (MNMessageBox * self, const char * name, const char * value, GtkWidget ** value_label) G_GNUC_UNUSED;
+static char * mn_message_box_get_ago (MNMessageBox * self) G_GNUC_UNUSED;
+static char * mn_message_box_format_delay (time_t delay) G_GNUC_UNUSED;
+
+enum {
+	PROP_0,
+	PROP_SIZE_GROUP,
+	PROP_MESSAGE,
+	PROP_SELECTABLE
+};
+
+/* pointer to the class of our parent */
+static GtkVBoxClass *parent_class = NULL;
+
+/* Short form macros */
+#define self_update_cb mn_message_box_update_cb
+#define self_append_row mn_message_box_append_row
+#define self_get_ago mn_message_box_get_ago
+#define self_format_delay mn_message_box_format_delay
+#define self_new mn_message_box_new
+GType
+mn_message_box_get_type (void)
+{
+	static GType type = 0;
+
+	if ___GOB_UNLIKELY(type == 0) {
+		static const GTypeInfo info = {
+			sizeof (MNMessageBoxClass),
+			(GBaseInitFunc) NULL,
+			(GBaseFinalizeFunc) NULL,
+			(GClassInitFunc) mn_message_box_class_init,
+			(GClassFinalizeFunc) NULL,
+			NULL /* class_data */,
+			sizeof (MNMessageBox),
+			0 /* n_preallocs */,
+			(GInstanceInitFunc) mn_message_box_init,
+			NULL
+		};
+
+		type = g_type_register_static (GTK_TYPE_VBOX, "MNMessageBox", &info, (GTypeFlags)0);
+	}
+
+	return type;
+}
+
+/* a macro for creating a new object of our type */
+#define GET_NEW ((MNMessageBox *)g_object_new(mn_message_box_get_type(), NULL))
+
+/* a function for creating a new object of our type */
+#include <stdarg.h>
+static MNMessageBox * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED;
+static MNMessageBox *
+GET_NEW_VARG (const char *first, ...)
+{
+	MNMessageBox *ret;
+	va_list ap;
+	va_start (ap, first);
+	ret = (MNMessageBox *)g_object_new_valist (mn_message_box_get_type (), first, ap);
+	va_end (ap);
+	return ret;
+}
+
+
+static void
+___dispose (GObject *obj_self)
+{
+#define __GOB_FUNCTION__ "MN:Message:Box::dispose"
+	MNMessageBox *self G_GNUC_UNUSED = MN_MESSAGE_BOX (obj_self);
+	if (G_OBJECT_CLASS (parent_class)->dispose) \
+		(* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
+#line 36 "mn-message-box.gob"
+	if(self->_priv->size_group) { g_object_unref ((gpointer) self->_priv->size_group); self->_priv->size_group = NULL; }
+#line 127 "mn-message-box.c"
+#line 41 "mn-message-box.gob"
+	if(self->_priv->message) { g_object_unref ((gpointer) self->_priv->message); self->_priv->message = NULL; }
+#line 130 "mn-message-box.c"
+}
+#undef __GOB_FUNCTION__
+
+
+static void
+___finalize(GObject *obj_self)
+{
+#define __GOB_FUNCTION__ "MN:Message:Box::finalize"
+	MNMessageBox *self G_GNUC_UNUSED = MN_MESSAGE_BOX (obj_self);
+	gpointer priv G_GNUC_UNUSED = self->_priv;
+#line 81 "mn-message-box.gob"
+	___2_mn_message_box_finalize(obj_self);
+#line 143 "mn-message-box.c"
+}
+#undef __GOB_FUNCTION__
+
+static void 
+mn_message_box_init (MNMessageBox * o G_GNUC_UNUSED)
+{
+#define __GOB_FUNCTION__ "MN:Message:Box::init"
+	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,TYPE_SELF,MNMessageBoxPrivate);
+}
+#undef __GOB_FUNCTION__
+static void 
+mn_message_box_class_init (MNMessageBoxClass * c G_GNUC_UNUSED)
+{
+#define __GOB_FUNCTION__ "MN:Message:Box::class_init"
+	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
+
+	g_type_class_add_private(c,sizeof(MNMessageBoxPrivate));
+
+	parent_class = g_type_class_ref (GTK_TYPE_VBOX);
+
+#line 49 "mn-message-box.gob"
+	g_object_class->constructor = ___1_mn_message_box_constructor;
+#line 81 "mn-message-box.gob"
+	g_object_class->finalize = ___finalize;
+#line 168 "mn-message-box.c"
+	g_object_class->dispose = ___dispose;
+	g_object_class->get_property = ___object_get_property;
+	g_object_class->set_property = ___object_set_property;
+    {
+	GParamSpec   *param_spec;
+
+	param_spec = g_param_spec_object
+		("size_group" /* name */,
+		 NULL /* nick */,
+		 NULL /* blurb */,
+		 GTK_TYPE_SIZE_GROUP /* object_type */,
+		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
+	g_object_class_install_property (g_object_class,
+		PROP_SIZE_GROUP,
+		param_spec);
+	param_spec = g_param_spec_object
+		("message" /* name */,
+		 NULL /* nick */,
+		 NULL /* blurb */,
+		 MN_TYPE_MESSAGE /* object_type */,
+		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
+	g_object_class_install_property (g_object_class,
+		PROP_MESSAGE,
+		param_spec);
+	param_spec = g_param_spec_boolean
+		("selectable" /* name */,
+		 NULL /* nick */,
+		 NULL /* blurb */,
+		 FALSE /* default_value */,
+		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
+	g_object_class_install_property (g_object_class,
+		PROP_SELECTABLE,
+		param_spec);
+    }
+}
+#undef __GOB_FUNCTION__
+
+static void
+___object_set_property (GObject *object,
+	guint property_id,
+	const GValue *VAL G_GNUC_UNUSED,
+	GParamSpec *pspec G_GNUC_UNUSED)
+#define __GOB_FUNCTION__ "MN:Message:Box::set_property"
+{
+	MNMessageBox *self G_GNUC_UNUSED;
+
+	self = MN_MESSAGE_BOX (object);
+
+	switch (property_id) {
+	case PROP_SIZE_GROUP:
+		{
+#line 37 "mn-message-box.gob"
+{ GObject *___old = (GObject *)self->_priv->size_group; self->_priv->size_group = (GtkSizeGroup *)g_value_dup_object (VAL); if (___old != NULL) { g_object_unref (G_OBJECT (___old)); } }
+#line 222 "mn-message-box.c"
+		}
+		break;
+	case PROP_MESSAGE:
+		{
+#line 42 "mn-message-box.gob"
+{ GObject *___old = (GObject *)self->_priv->message; self->_priv->message = (MNMessage *)g_value_dup_object (VAL); if (___old != NULL) { g_object_unref (G_OBJECT (___old)); } }
+#line 229 "mn-message-box.c"
+		}
+		break;
+	case PROP_SELECTABLE:
+		{
+#line 47 "mn-message-box.gob"
+self->_priv->selectable = g_value_get_boolean (VAL);
+#line 236 "mn-message-box.c"
+		}
+		break;
+	default:
+/* Apparently in g++ this is needed, glib is b0rk */
+#ifndef __PRETTY_FUNCTION__
+#  undef G_STRLOC
+#  define G_STRLOC	__FILE__ ":" G_STRINGIFY (__LINE__)
+#endif
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+		break;
+	}
+}
+#undef __GOB_FUNCTION__
+
+static void
+___object_get_property (GObject *object,
+	guint property_id,
+	GValue *VAL G_GNUC_UNUSED,
+	GParamSpec *pspec G_GNUC_UNUSED)
+#define __GOB_FUNCTION__ "MN:Message:Box::get_property"
+{
+	MNMessageBox *self G_GNUC_UNUSED;
+
+	self = MN_MESSAGE_BOX (object);
+
+	switch (property_id) {
+	case PROP_SIZE_GROUP:
+		{
+#line 37 "mn-message-box.gob"
+g_value_set_object (VAL, (gpointer)self->_priv->size_group);
+#line 267 "mn-message-box.c"
+		}
+		break;
+	case PROP_MESSAGE:
+		{
+#line 42 "mn-message-box.gob"
+g_value_set_object (VAL, (gpointer)self->_priv->message);
+#line 274 "mn-message-box.c"
+		}
+		break;
+	case PROP_SELECTABLE:
+		{
+#line 47 "mn-message-box.gob"
+g_value_set_boolean (VAL, self->_priv->selectable);
+#line 281 "mn-message-box.c"
+		}
+		break;
+	default:
+/* Apparently in g++ this is needed, glib is b0rk */
+#ifndef __PRETTY_FUNCTION__
+#  undef G_STRLOC
+#  define G_STRLOC	__FILE__ ":" G_STRINGIFY (__LINE__)
+#endif
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+		break;
+	}
+}
+#undef __GOB_FUNCTION__
+
+
+
+#line 49 "mn-message-box.gob"
+static GObject * 
+___1_mn_message_box_constructor (GType type G_GNUC_UNUSED, guint n_construct_properties, GObjectConstructParam * construct_params)
+#line 301 "mn-message-box.c"
+#define PARENT_HANDLER(___type,___n_construct_properties,___construct_params) \
+	((G_OBJECT_CLASS(parent_class)->constructor)? \
+		(* G_OBJECT_CLASS(parent_class)->constructor)(___type,___n_construct_properties,___construct_params): \
+		((GObject * )0))
+{
+#define __GOB_FUNCTION__ "MN:Message:Box::constructor"
+{
+#line 51 "mn-message-box.gob"
+	
+    GObject *object;
+    Self *self;
+
+    object = PARENT_HANDLER(type, n_construct_properties, construct_params);
+    self = SELF(object);
+
+    self_append_row(self, _("Mailbox"), selfp->message->mailbox_uri->human_readable, NULL);
+
+    if (selfp->message->error)
+      self_append_row(self, _("Unreadable message"), selfp->message->error, NULL);
+    else
+      {
+	char *ago;
+
+	self_append_row(self, _("From"), selfp->message->from, NULL);
+	self_append_row(self, _("Subject"), selfp->message->subject, NULL);
+
+	ago = self_get_ago(self);
+	if (ago)
+	  {
+	    self_append_row(self, _("Sent"), ago, &selfp->sent_label);
+	    g_free(ago);
+	    selfp->update_timeout_id = g_timeout_add(500, self_update_cb, self);
+	  }
+      }
+
+    return object;
+  }}
+#line 339 "mn-message-box.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 81 "mn-message-box.gob"
+static void 
+___2_mn_message_box_finalize (GObject * object G_GNUC_UNUSED)
+#line 346 "mn-message-box.c"
+#define PARENT_HANDLER(___object) \
+	{ if(G_OBJECT_CLASS(parent_class)->finalize) \
+		(* G_OBJECT_CLASS(parent_class)->finalize)(___object); }
+{
+#define __GOB_FUNCTION__ "MN:Message:Box::finalize"
+#line 81 "mn-message-box.gob"
+	g_return_if_fail (object != NULL);
+#line 81 "mn-message-box.gob"
+	g_return_if_fail (G_IS_OBJECT (object));
+#line 356 "mn-message-box.c"
+{
+#line 83 "mn-message-box.gob"
+	
+    Self *self = SELF(object);
+
+    if (selfp->update_timeout_id)
+      g_source_remove(selfp->update_timeout_id);
+
+    PARENT_HANDLER(object);
+  }}
+#line 367 "mn-message-box.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 92 "mn-message-box.gob"
+static gboolean 
+mn_message_box_update_cb (gpointer data)
+#line 374 "mn-message-box.c"
+{
+#define __GOB_FUNCTION__ "MN:Message:Box::update_cb"
+#line 92 "mn-message-box.gob"
+	g_return_val_if_fail (data != NULL, (gboolean )0);
+#line 379 "mn-message-box.c"
+{
+#line 94 "mn-message-box.gob"
+	
+    Self *self = data;
+    char *ago;
+
+    ago = self_get_ago(self);
+
+    GDK_THREADS_ENTER();
+    gtk_label_set_text(GTK_LABEL(selfp->sent_label), ago);
+    GDK_THREADS_LEAVE();
+
+    g_free(ago);
+
+    return TRUE;		/* continue */
+  }}
+#line 396 "mn-message-box.c"
+#undef __GOB_FUNCTION__
+
+#line 109 "mn-message-box.gob"
+static void 
+mn_message_box_append_row (MNMessageBox * self, const char * name, const char * value, GtkWidget ** value_label)
+#line 402 "mn-message-box.c"
+{
+#define __GOB_FUNCTION__ "MN:Message:Box::append_row"
+#line 109 "mn-message-box.gob"
+	g_return_if_fail (self != NULL);
+#line 109 "mn-message-box.gob"
+	g_return_if_fail (MN_IS_MESSAGE_BOX (self));
+#line 109 "mn-message-box.gob"
+	g_return_if_fail (name != NULL);
+#line 411 "mn-message-box.c"
+{
+#line 114 "mn-message-box.gob"
+	
+    GtkWidget *hbox;
+    GtkWidget *label;
+    char *markup;
+
+    hbox = gtk_hbox_new(FALSE, 0);
+    
+    /* name */
+
+    markup = g_markup_printf_escaped("<span weight=\"bold\">%s:</span>", name);
+    label = gtk_label_new(markup);
+    g_free(markup);
+
+    gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5);
+    gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
+    gtk_label_set_selectable(GTK_LABEL(label), selfp->selectable);
+
+    gtk_size_group_add_widget(selfp->size_group, label);
+    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
+
+    /* separator */
+
+    label = gtk_label_new(" ");
+    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
+
+    /* value */
+
+    label = gtk_label_new(value);
+
+    gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
+    gtk_label_set_selectable(GTK_LABEL(label), selfp->selectable);
+
+    gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0);
+
+    if (value_label)
+      *value_label = label;
+
+    gtk_box_pack_start(GTK_BOX(self), hbox, FALSE, FALSE, 0);
+    gtk_widget_show_all(hbox);
+  }}
+#line 454 "mn-message-box.c"
+#undef __GOB_FUNCTION__
+
+#line 155 "mn-message-box.gob"
+static char * 
+mn_message_box_get_ago (MNMessageBox * self)
+#line 460 "mn-message-box.c"
+{
+#define __GOB_FUNCTION__ "MN:Message:Box::get_ago"
+#line 155 "mn-message-box.gob"
+	g_return_val_if_fail (self != NULL, (char * )0);
+#line 155 "mn-message-box.gob"
+	g_return_val_if_fail (MN_IS_MESSAGE_BOX (self), (char * )0);
+#line 467 "mn-message-box.c"
+{
+#line 157 "mn-message-box.gob"
+	
+    char *ago = NULL;
+
+    if (selfp->message->sent_time)
+      {
+	time_t now;
+	
+	now = mn_time();
+	if (now > 0)
+	  {
+	    time_t diff;
+	    
+	    diff = now - selfp->message->sent_time;
+	    if (diff >= 0)
+	      ago = self_format_delay(diff);
+	  }
+      }
+
+    return ago;
+  }}
+#line 490 "mn-message-box.c"
+#undef __GOB_FUNCTION__
+
+#line 178 "mn-message-box.gob"
+static char * 
+mn_message_box_format_delay (time_t delay)
+#line 496 "mn-message-box.c"
+{
+#define __GOB_FUNCTION__ "MN:Message:Box::format_delay"
+{
+#line 180 "mn-message-box.gob"
+	
+    char *str;
+
+    if (delay < 60)
+      str = g_strdup_printf(ngettext("%i second ago", "%i seconds ago", delay), delay);
+    else if (delay < 60 * 60)
+      {
+	int minutes = delay / 60;
+	str = g_strdup_printf(ngettext("%i minute ago", "%i minutes ago", minutes), minutes);
+      }
+    else if (delay < 60 * 60 * 24)
+      {
+	int hours = delay / (60 * 60);
+	str = g_strdup_printf(ngettext("%i hour ago", "%i hours ago", hours), hours);
+      }
+    else if (delay < 60 * 60 * 24 * 7)
+      {
+	int days = delay / (60 * 60 * 24);
+	str = g_strdup_printf(ngettext("%i day ago", "%i days ago", days), days);
+      }
+    else
+      {
+	int weeks = delay / (60 * 60 * 24 * 7);
+	str = g_strdup_printf(ngettext("%i week ago", "%i weeks ago", weeks), weeks);
+      }
+
+    return str;
+  }}
+#line 529 "mn-message-box.c"
+#undef __GOB_FUNCTION__
+
+#line 209 "mn-message-box.gob"
+GtkWidget * 
+mn_message_box_new (GtkSizeGroup * size_group, MNMessage * message, gboolean selectable)
+#line 535 "mn-message-box.c"
+{
+#define __GOB_FUNCTION__ "MN:Message:Box::new"
+#line 209 "mn-message-box.gob"
+	g_return_val_if_fail (size_group != NULL, (GtkWidget * )0);
+#line 209 "mn-message-box.gob"
+	g_return_val_if_fail (GTK_IS_SIZE_GROUP (size_group), (GtkWidget * )0);
+#line 209 "mn-message-box.gob"
+	g_return_val_if_fail (message != NULL, (GtkWidget * )0);
+#line 209 "mn-message-box.gob"
+	g_return_val_if_fail (MN_IS_MESSAGE (message), (GtkWidget * )0);
+#line 546 "mn-message-box.c"
+{
+#line 213 "mn-message-box.gob"
+	
+    return GTK_WIDGET(GET_NEW_VARG(MN_MESSAGE_BOX_PROP_SIZE_GROUP(G_OBJECT(size_group)),
+				   MN_MESSAGE_BOX_PROP_MESSAGE(G_OBJECT(message)),
+				   MN_MESSAGE_BOX_PROP_SELECTABLE(selectable),
+				   NULL));
+  }}
+#line 555 "mn-message-box.c"
+#undef __GOB_FUNCTION__
diff --git a/src/mn-message-box.gob b/src/mn-message-box.gob
@@ -0,0 +1,219 @@
+/* 
+ * Copyright (c) 2004 Jean-Yves Lefort <jylefort@brutele.be>
+ *
+ * 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.
+ */
+
+requires 2.0.10
+
+%headertop{
+#include <gtk/gtk.h>
+#include "mn-message.h"
+%}
+%{
+#include "config.h"
+#include <glib/gi18n.h>
+#include "mn-util.h"
+%}
+
+class MN:Message:Box from Gtk:VBox
+{
+  private GtkWidget *sent_label;
+  private unsigned int update_timeout_id;
+
+  private GtkSizeGroup *size_group unrefwith g_object_unref;
+  property OBJECT size_group (object_type = Gtk:Size:Group,
+			      flags = CONSTRUCT_ONLY,
+			      link);
+
+  private MNMessage *message unrefwith g_object_unref;
+  property OBJECT message (object_type = MN:Message,
+			   flags = CONSTRUCT_ONLY,
+			   link);
+
+  private gboolean selectable;
+  property BOOLEAN selectable (flags = CONSTRUCT_ONLY, link);
+
+  override (G:Object) GObject *
+    constructor (GType type, guint n_construct_properties, GObjectConstructParam *construct_params)
+  {
+    GObject *object;
+    Self *self;
+
+    object = PARENT_HANDLER(type, n_construct_properties, construct_params);
+    self = SELF(object);
+
+    self_append_row(self, _("Mailbox"), selfp->message->mailbox_uri->human_readable, NULL);
+
+    if (selfp->message->error)
+      self_append_row(self, _("Unreadable message"), selfp->message->error, NULL);
+    else
+      {
+	char *ago;
+
+	self_append_row(self, _("From"), selfp->message->from, NULL);
+	self_append_row(self, _("Subject"), selfp->message->subject, NULL);
+
+	ago = self_get_ago(self);
+	if (ago)
+	  {
+	    self_append_row(self, _("Sent"), ago, &selfp->sent_label);
+	    g_free(ago);
+	    selfp->update_timeout_id = g_timeout_add(500, self_update_cb, self);
+	  }
+      }
+
+    return object;
+  }
+
+  override (G:Object) void
+    finalize (G:Object *object (check null type))
+  {
+    Self *self = SELF(object);
+
+    if (selfp->update_timeout_id)
+      g_source_remove(selfp->update_timeout_id);
+
+    PARENT_HANDLER(object);
+  }
+
+  private gboolean
+    update_cb (gpointer data (check null))
+  {
+    Self *self = data;
+    char *ago;
+
+    ago = self_get_ago(self);
+
+    GDK_THREADS_ENTER();
+    gtk_label_set_text(GTK_LABEL(selfp->sent_label), ago);
+    GDK_THREADS_LEAVE();
+
+    g_free(ago);
+
+    return TRUE;		/* continue */
+  }
+
+  private void
+    append_row (self,
+		const char *name (check null),
+		const char *value,
+		GtkWidget **value_label)
+  {
+    GtkWidget *hbox;
+    GtkWidget *label;
+    char *markup;
+
+    hbox = gtk_hbox_new(FALSE, 0);
+    
+    /* name */
+
+    markup = g_markup_printf_escaped("<span weight=\"bold\">%s:</span>", name);
+    label = gtk_label_new(markup);
+    g_free(markup);
+
+    gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5);
+    gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
+    gtk_label_set_selectable(GTK_LABEL(label), selfp->selectable);
+
+    gtk_size_group_add_widget(selfp->size_group, label);
+    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
+
+    /* separator */
+
+    label = gtk_label_new(" ");
+    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
+
+    /* value */
+
+    label = gtk_label_new(value);
+
+    gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
+    gtk_label_set_selectable(GTK_LABEL(label), selfp->selectable);
+
+    gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0);
+
+    if (value_label)
+      *value_label = label;
+
+    gtk_box_pack_start(GTK_BOX(self), hbox, FALSE, FALSE, 0);
+    gtk_widget_show_all(hbox);
+  }
+
+  private char *
+    get_ago (self)
+  {
+    char *ago = NULL;
+
+    if (selfp->message->sent_time)
+      {
+	time_t now;
+	
+	now = mn_time();
+	if (now > 0)
+	  {
+	    time_t diff;
+	    
+	    diff = now - selfp->message->sent_time;
+	    if (diff >= 0)
+	      ago = self_format_delay(diff);
+	  }
+      }
+
+    return ago;
+  }
+
+  private char *
+    format_delay (time_t delay)
+  {
+    char *str;
+
+    if (delay < 60)
+      str = g_strdup_printf(ngettext("%i second ago", "%i seconds ago", delay), delay);
+    else if (delay < 60 * 60)
+      {
+	int minutes = delay / 60;
+	str = g_strdup_printf(ngettext("%i minute ago", "%i minutes ago", minutes), minutes);
+      }
+    else if (delay < 60 * 60 * 24)
+      {
+	int hours = delay / (60 * 60);
+	str = g_strdup_printf(ngettext("%i hour ago", "%i hours ago", hours), hours);
+      }
+    else if (delay < 60 * 60 * 24 * 7)
+      {
+	int days = delay / (60 * 60 * 24);
+	str = g_strdup_printf(ngettext("%i day ago", "%i days ago", days), days);
+      }
+    else
+      {
+	int weeks = delay / (60 * 60 * 24 * 7);
+	str = g_strdup_printf(ngettext("%i week ago", "%i weeks ago", weeks), weeks);
+      }
+
+    return str;
+  }
+
+  public GtkWidget *
+    new (Gtk:Size:Group *size_group (check null type),
+	 MN:Message *message (check null type),
+	 gboolean selectable)
+  {
+    return GTK_WIDGET(GET_NEW_VARG(MN_MESSAGE_BOX_PROP_SIZE_GROUP(G_OBJECT(size_group)),
+				   MN_MESSAGE_BOX_PROP_MESSAGE(G_OBJECT(message)),
+				   MN_MESSAGE_BOX_PROP_SELECTABLE(selectable),
+				   NULL));
+  }
+}
diff --git a/src/mn-message-box.h b/src/mn-message-box.h
@@ -0,0 +1,86 @@
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
+
+#include <glib.h>
+#include <glib-object.h>
+
+
+#include <gtk/gtk.h>
+#include "mn-message.h"
+
+#ifndef __MN_MESSAGE_BOX_H__
+#define __MN_MESSAGE_BOX_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+/*
+ * Type checking and casting macros
+ */
+#define MN_TYPE_MESSAGE_BOX	(mn_message_box_get_type())
+#define MN_MESSAGE_BOX(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_message_box_get_type(), MNMessageBox)
+#define MN_MESSAGE_BOX_CONST(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_message_box_get_type(), MNMessageBox const)
+#define MN_MESSAGE_BOX_CLASS(klass)	G_TYPE_CHECK_CLASS_CAST((klass), mn_message_box_get_type(), MNMessageBoxClass)
+#define MN_IS_MESSAGE_BOX(obj)	G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_message_box_get_type ())
+
+#define MN_MESSAGE_BOX_GET_CLASS(obj)	G_TYPE_INSTANCE_GET_CLASS((obj), mn_message_box_get_type(), MNMessageBoxClass)
+
+/* Private structure type */
+typedef struct _MNMessageBoxPrivate MNMessageBoxPrivate;
+
+/*
+ * Main object structure
+ */
+#ifndef __TYPEDEF_MN_MESSAGE_BOX__
+#define __TYPEDEF_MN_MESSAGE_BOX__
+typedef struct _MNMessageBox MNMessageBox;
+#endif
+struct _MNMessageBox {
+	GtkVBox __parent__;
+	/*< private >*/
+	MNMessageBoxPrivate *_priv;
+};
+
+/*
+ * Class definition
+ */
+typedef struct _MNMessageBoxClass MNMessageBoxClass;
+struct _MNMessageBoxClass {
+	GtkVBoxClass __parent__;
+};
+
+
+/*
+ * Public methods
+ */
+GType	mn_message_box_get_type	(void);
+GtkWidget * 	mn_message_box_new	(GtkSizeGroup * size_group,
+					MNMessage * message,
+					gboolean selectable);
+
+/*
+ * Argument wrapping macros
+ */
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#define MN_MESSAGE_BOX_PROP_SIZE_GROUP(arg)    	"size_group", __extension__ ({GObject *z = (arg); z;})
+#define MN_MESSAGE_BOX_GET_PROP_SIZE_GROUP(arg)	"size_group", __extension__ ({GObject **z = (arg); z;})
+#define MN_MESSAGE_BOX_PROP_MESSAGE(arg)    	"message", __extension__ ({GObject *z = (arg); z;})
+#define MN_MESSAGE_BOX_GET_PROP_MESSAGE(arg)	"message", __extension__ ({GObject **z = (arg); z;})
+#define MN_MESSAGE_BOX_PROP_SELECTABLE(arg)    	"selectable", __extension__ ({gboolean z = (arg); z;})
+#define MN_MESSAGE_BOX_GET_PROP_SELECTABLE(arg)	"selectable", __extension__ ({gboolean *z = (arg); z;})
+#else /* __GNUC__ && !__STRICT_ANSI__ */
+#define MN_MESSAGE_BOX_PROP_SIZE_GROUP(arg)    	"size_group",(GObject *)(arg)
+#define MN_MESSAGE_BOX_GET_PROP_SIZE_GROUP(arg)	"size_group",(GObject **)(arg)
+#define MN_MESSAGE_BOX_PROP_MESSAGE(arg)    	"message",(GObject *)(arg)
+#define MN_MESSAGE_BOX_GET_PROP_MESSAGE(arg)	"message",(GObject **)(arg)
+#define MN_MESSAGE_BOX_PROP_SELECTABLE(arg)    	"selectable",(gboolean )(arg)
+#define MN_MESSAGE_BOX_GET_PROP_SELECTABLE(arg)	"selectable",(gboolean *)(arg)
+#endif /* __GNUC__ && !__STRICT_ANSI__ */
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-message-label-private.h b/src/mn-message-label-private.h
@@ -1,24 +0,0 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
-
-#ifndef __MN_MESSAGE_LABEL_PRIVATE_H__
-#define __MN_MESSAGE_LABEL_PRIVATE_H__
-
-#include "mn-message-label.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-struct _MNMessageLabelPrivate {
-#line 33 "mn-message-label.gob"
-	unsigned int update_timeout_id;
-#line 35 "mn-message-label.gob"
-	MNMessage * message;
-#line 18 "mn-message-label-private.h"
-};
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
diff --git a/src/mn-message-label.c b/src/mn-message-label.c
@@ -1,473 +0,0 @@
-/* Generated by GOB (v2.0.10) on Mon Oct 25 15:24:34 2004
-   (do not edit directly) */
-
-/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
-
-#define GOB_VERSION_MAJOR 2
-#define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 10
-
-#define selfp (self->_priv)
-
-#include <string.h> /* memset() */
-
-#include "mn-message-label.h"
-
-#include "mn-message-label-private.h"
-
-#ifdef G_LIKELY
-#define ___GOB_LIKELY(expr) G_LIKELY(expr)
-#define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr)
-#else /* ! G_LIKELY */
-#define ___GOB_LIKELY(expr) (expr)
-#define ___GOB_UNLIKELY(expr) (expr)
-#endif /* G_LIKELY */
-
-#line 25 "mn-message-label.gob"
-
-#include "config.h"
-#include <glib/gi18n.h>
-#include "mn-util.h"
-
-#line 33 "mn-message-label.c"
-/* self casting macros */
-#define SELF(x) MN_MESSAGE_LABEL(x)
-#define SELF_CONST(x) MN_MESSAGE_LABEL_CONST(x)
-#define IS_SELF(x) MN_IS_MESSAGE_LABEL(x)
-#define TYPE_SELF MN_TYPE_MESSAGE_LABEL
-#define SELF_CLASS(x) MN_MESSAGE_LABEL_CLASS(x)
-
-#define SELF_GET_CLASS(x) MN_MESSAGE_LABEL_GET_CLASS(x)
-
-/* self typedefs */
-typedef MNMessageLabel Self;
-typedef MNMessageLabelClass SelfClass;
-
-/* here are local prototypes */
-static void ___object_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec);
-static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec);
-static void mn_message_label_init (MNMessageLabel * o) G_GNUC_UNUSED;
-static void mn_message_label_class_init (MNMessageLabelClass * c) G_GNUC_UNUSED;
-static GObject * ___1_mn_message_label_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_params) G_GNUC_UNUSED;
-static void ___2_mn_message_label_finalize (GObject * object) G_GNUC_UNUSED;
-static void mn_message_label_update (MNMessageLabel * self) G_GNUC_UNUSED;
-static gboolean mn_message_label_update_cb (gpointer data) G_GNUC_UNUSED;
-static void mn_message_label_append_row (GString * string, const char * label, const char * value, gboolean newline) G_GNUC_UNUSED;
-static char * mn_message_label_format_delay (time_t delay) G_GNUC_UNUSED;
-
-enum {
-	PROP_0,
-	PROP_MESSAGE
-};
-
-/* pointer to the class of our parent */
-static GtkLabelClass *parent_class = NULL;
-
-/* Short form macros */
-#define self_update mn_message_label_update
-#define self_update_cb mn_message_label_update_cb
-#define self_append_row mn_message_label_append_row
-#define self_format_delay mn_message_label_format_delay
-#define self_new mn_message_label_new
-GType
-mn_message_label_get_type (void)
-{
-	static GType type = 0;
-
-	if ___GOB_UNLIKELY(type == 0) {
-		static const GTypeInfo info = {
-			sizeof (MNMessageLabelClass),
-			(GBaseInitFunc) NULL,
-			(GBaseFinalizeFunc) NULL,
-			(GClassInitFunc) mn_message_label_class_init,
-			(GClassFinalizeFunc) NULL,
-			NULL /* class_data */,
-			sizeof (MNMessageLabel),
-			0 /* n_preallocs */,
-			(GInstanceInitFunc) mn_message_label_init,
-			NULL
-		};
-
-		type = g_type_register_static (GTK_TYPE_LABEL, "MNMessageLabel", &info, (GTypeFlags)0);
-	}
-
-	return type;
-}
-
-/* a macro for creating a new object of our type */
-#define GET_NEW ((MNMessageLabel *)g_object_new(mn_message_label_get_type(), NULL))
-
-/* a function for creating a new object of our type */
-#include <stdarg.h>
-static MNMessageLabel * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED;
-static MNMessageLabel *
-GET_NEW_VARG (const char *first, ...)
-{
-	MNMessageLabel *ret;
-	va_list ap;
-	va_start (ap, first);
-	ret = (MNMessageLabel *)g_object_new_valist (mn_message_label_get_type (), first, ap);
-	va_end (ap);
-	return ret;
-}
-
-
-static void
-___dispose (GObject *obj_self)
-{
-#define __GOB_FUNCTION__ "MN:Message:Label::dispose"
-	MNMessageLabel *self G_GNUC_UNUSED = MN_MESSAGE_LABEL (obj_self);
-	if (G_OBJECT_CLASS (parent_class)->dispose) \
-		(* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
-#line 35 "mn-message-label.gob"
-	if(self->_priv->message) { g_object_unref ((gpointer) self->_priv->message); self->_priv->message = NULL; }
-#line 125 "mn-message-label.c"
-}
-#undef __GOB_FUNCTION__
-
-
-static void
-___finalize(GObject *obj_self)
-{
-#define __GOB_FUNCTION__ "MN:Message:Label::finalize"
-	MNMessageLabel *self G_GNUC_UNUSED = MN_MESSAGE_LABEL (obj_self);
-	gpointer priv G_GNUC_UNUSED = self->_priv;
-#line 56 "mn-message-label.gob"
-	___2_mn_message_label_finalize(obj_self);
-#line 138 "mn-message-label.c"
-}
-#undef __GOB_FUNCTION__
-
-static void 
-mn_message_label_init (MNMessageLabel * o G_GNUC_UNUSED)
-{
-#define __GOB_FUNCTION__ "MN:Message:Label::init"
-	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,TYPE_SELF,MNMessageLabelPrivate);
-}
-#undef __GOB_FUNCTION__
-static void 
-mn_message_label_class_init (MNMessageLabelClass * c G_GNUC_UNUSED)
-{
-#define __GOB_FUNCTION__ "MN:Message:Label::class_init"
-	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
-
-	g_type_class_add_private(c,sizeof(MNMessageLabelPrivate));
-
-	parent_class = g_type_class_ref (GTK_TYPE_LABEL);
-
-#line 40 "mn-message-label.gob"
-	g_object_class->constructor = ___1_mn_message_label_constructor;
-#line 56 "mn-message-label.gob"
-	g_object_class->finalize = ___finalize;
-#line 163 "mn-message-label.c"
-	g_object_class->dispose = ___dispose;
-	g_object_class->get_property = ___object_get_property;
-	g_object_class->set_property = ___object_set_property;
-    {
-	GParamSpec   *param_spec;
-
-	param_spec = g_param_spec_object
-		("message" /* name */,
-		 NULL /* nick */,
-		 NULL /* blurb */,
-		 MN_TYPE_MESSAGE /* object_type */,
-		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
-	g_object_class_install_property (g_object_class,
-		PROP_MESSAGE,
-		param_spec);
-    }
-}
-#undef __GOB_FUNCTION__
-
-static void
-___object_set_property (GObject *object,
-	guint property_id,
-	const GValue *VAL G_GNUC_UNUSED,
-	GParamSpec *pspec G_GNUC_UNUSED)
-#define __GOB_FUNCTION__ "MN:Message:Label::set_property"
-{
-	MNMessageLabel *self G_GNUC_UNUSED;
-
-	self = MN_MESSAGE_LABEL (object);
-
-	switch (property_id) {
-	case PROP_MESSAGE:
-		{
-#line 36 "mn-message-label.gob"
-{ GObject *___old = (GObject *)self->_priv->message; self->_priv->message = (MNMessage *)g_value_dup_object (VAL); if (___old != NULL) { g_object_unref (G_OBJECT (___old)); } }
-#line 199 "mn-message-label.c"
-		}
-		break;
-	default:
-/* Apparently in g++ this is needed, glib is b0rk */
-#ifndef __PRETTY_FUNCTION__
-#  undef G_STRLOC
-#  define G_STRLOC	__FILE__ ":" G_STRINGIFY (__LINE__)
-#endif
-		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
-		break;
-	}
-}
-#undef __GOB_FUNCTION__
-
-static void
-___object_get_property (GObject *object,
-	guint property_id,
-	GValue *VAL G_GNUC_UNUSED,
-	GParamSpec *pspec G_GNUC_UNUSED)
-#define __GOB_FUNCTION__ "MN:Message:Label::get_property"
-{
-	MNMessageLabel *self G_GNUC_UNUSED;
-
-	self = MN_MESSAGE_LABEL (object);
-
-	switch (property_id) {
-	case PROP_MESSAGE:
-		{
-#line 36 "mn-message-label.gob"
-g_value_set_object (VAL, (gpointer)self->_priv->message);
-#line 230 "mn-message-label.c"
-		}
-		break;
-	default:
-/* Apparently in g++ this is needed, glib is b0rk */
-#ifndef __PRETTY_FUNCTION__
-#  undef G_STRLOC
-#  define G_STRLOC	__FILE__ ":" G_STRINGIFY (__LINE__)
-#endif
-		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
-		break;
-	}
-}
-#undef __GOB_FUNCTION__
-
-
-
-#line 40 "mn-message-label.gob"
-static GObject * 
-___1_mn_message_label_constructor (GType type G_GNUC_UNUSED, guint n_construct_properties, GObjectConstructParam * construct_params)
-#line 250 "mn-message-label.c"
-#define PARENT_HANDLER(___type,___n_construct_properties,___construct_params) \
-	((G_OBJECT_CLASS(parent_class)->constructor)? \
-		(* G_OBJECT_CLASS(parent_class)->constructor)(___type,___n_construct_properties,___construct_params): \
-		((GObject * )0))
-{
-#define __GOB_FUNCTION__ "MN:Message:Label::constructor"
-{
-#line 42 "mn-message-label.gob"
-	
-    GObject *object;
-    Self *self;
-
-    object = PARENT_HANDLER(type, n_construct_properties, construct_params);
-    self = SELF(object);
-
-    self_update(self);
-    if (selfp->message->sent_time)
-      selfp->update_timeout_id = g_timeout_add(500, self_update_cb, self);
-
-    return object;
-  }}
-#line 272 "mn-message-label.c"
-#undef __GOB_FUNCTION__
-#undef PARENT_HANDLER
-
-#line 56 "mn-message-label.gob"
-static void 
-___2_mn_message_label_finalize (GObject * object G_GNUC_UNUSED)
-#line 279 "mn-message-label.c"
-#define PARENT_HANDLER(___object) \
-	{ if(G_OBJECT_CLASS(parent_class)->finalize) \
-		(* G_OBJECT_CLASS(parent_class)->finalize)(___object); }
-{
-#define __GOB_FUNCTION__ "MN:Message:Label::finalize"
-#line 56 "mn-message-label.gob"
-	g_return_if_fail (object != NULL);
-#line 56 "mn-message-label.gob"
-	g_return_if_fail (G_IS_OBJECT (object));
-#line 289 "mn-message-label.c"
-{
-#line 58 "mn-message-label.gob"
-	
-    Self *self = SELF(object);
-
-    if (selfp->update_timeout_id)
-      g_source_remove(selfp->update_timeout_id);
-
-    PARENT_HANDLER(object);
-  }}
-#line 300 "mn-message-label.c"
-#undef __GOB_FUNCTION__
-#undef PARENT_HANDLER
-
-#line 67 "mn-message-label.gob"
-static void 
-mn_message_label_update (MNMessageLabel * self)
-#line 307 "mn-message-label.c"
-{
-#define __GOB_FUNCTION__ "MN:Message:Label::update"
-#line 67 "mn-message-label.gob"
-	g_return_if_fail (self != NULL);
-#line 67 "mn-message-label.gob"
-	g_return_if_fail (MN_IS_MESSAGE_LABEL (self));
-#line 314 "mn-message-label.c"
-{
-#line 69 "mn-message-label.gob"
-	
-    GString *string;
-    const char *current_label;
-
-    string = g_string_new(NULL);
-    self_append_row(string, _("Mailbox"), selfp->message->mailbox_uri->human_readable, TRUE);
-
-    if (selfp->message->error)
-      self_append_row(string, _("Unreadable message"), selfp->message->error, FALSE);
-    else
-      {
-	char *ago = NULL;
-
-	if (selfp->message->sent_time)
-	  {
-	    time_t now;
-
-	    now = mn_time();
-	    if (now > 0)
-	      {
-		time_t diff;
-
-		diff = now - selfp->message->sent_time;
-		if (diff >= 0)
-		  ago = self_format_delay(diff);
-	      }
-	  }
-	    
-	self_append_row(string, _("From"), selfp->message->from, TRUE);
-	self_append_row(string, _("Subject"), selfp->message->subject, ago != NULL);
-
-	if (ago)
-	  {
-	    self_append_row(string, _("Sent"), ago, FALSE);
-	    g_free(ago);
-	  }
-      }
-
-    current_label = gtk_label_get_label(GTK_LABEL(self));
-    if (strcmp(current_label, string->str))
-      gtk_label_set_markup(GTK_LABEL(self), string->str);
-    g_string_free(string, TRUE);
-  }}
-#line 360 "mn-message-label.c"
-#undef __GOB_FUNCTION__
-
-#line 113 "mn-message-label.gob"
-static gboolean 
-mn_message_label_update_cb (gpointer data)
-#line 366 "mn-message-label.c"
-{
-#define __GOB_FUNCTION__ "MN:Message:Label::update_cb"
-#line 113 "mn-message-label.gob"
-	g_return_val_if_fail (data != NULL, (gboolean )0);
-#line 371 "mn-message-label.c"
-{
-#line 115 "mn-message-label.gob"
-	
-    Self *self = data;
-
-    GDK_THREADS_ENTER();
-    self_update(self);
-    GDK_THREADS_LEAVE();
-
-    return TRUE;		/* continue */
-  }}
-#line 383 "mn-message-label.c"
-#undef __GOB_FUNCTION__
-
-#line 125 "mn-message-label.gob"
-static void 
-mn_message_label_append_row (GString * string, const char * label, const char * value, gboolean newline)
-#line 389 "mn-message-label.c"
-{
-#define __GOB_FUNCTION__ "MN:Message:Label::append_row"
-#line 125 "mn-message-label.gob"
-	g_return_if_fail (string != NULL);
-#line 125 "mn-message-label.gob"
-	g_return_if_fail (label != NULL);
-#line 125 "mn-message-label.gob"
-	g_return_if_fail (value != NULL);
-#line 398 "mn-message-label.c"
-{
-#line 130 "mn-message-label.gob"
-	
-    char *markup;
-
-    markup = g_markup_printf_escaped("<span weight=\"bold\">%s:</span> ", label);
-    g_string_append(string, markup);
-    g_free(markup);
-    
-    markup = g_markup_escape_text(value, -1);
-    g_string_append(string, markup);
-    g_free(markup);
-
-    if (newline)
-      g_string_append_c(string, '\n');
-  }}
-#line 415 "mn-message-label.c"
-#undef __GOB_FUNCTION__
-
-#line 145 "mn-message-label.gob"
-static char * 
-mn_message_label_format_delay (time_t delay)
-#line 421 "mn-message-label.c"
-{
-#define __GOB_FUNCTION__ "MN:Message:Label::format_delay"
-{
-#line 147 "mn-message-label.gob"
-	
-    char *str;
-
-    if (delay < 60)
-      str = g_strdup_printf(ngettext("%i second ago", "%i seconds ago", delay), delay);
-    else if (delay < 60 * 60)
-      {
-	int minutes = delay / 60;
-	str = g_strdup_printf(ngettext("%i minute ago", "%i minutes ago", minutes), minutes);
-      }
-    else if (delay < 60 * 60 * 24)
-      {
-	int hours = delay / (60 * 60);
-	str = g_strdup_printf(ngettext("%i hour ago", "%i hours ago", hours), hours);
-      }
-    else if (delay < 60 * 60 * 24 * 7)
-      {
-	int days = delay / (60 * 60 * 24);
-	str = g_strdup_printf(ngettext("%i day ago", "%i days ago", days), days);
-      }
-    else
-      {
-	int weeks = delay / (60 * 60 * 24 * 7);
-	str = g_strdup_printf(ngettext("%i week ago", "%i weeks ago", weeks), weeks);
-      }
-
-    return str;
-  }}
-#line 454 "mn-message-label.c"
-#undef __GOB_FUNCTION__
-
-#line 176 "mn-message-label.gob"
-GtkWidget * 
-mn_message_label_new (MNMessage * message)
-#line 460 "mn-message-label.c"
-{
-#define __GOB_FUNCTION__ "MN:Message:Label::new"
-#line 176 "mn-message-label.gob"
-	g_return_val_if_fail (message != NULL, (GtkWidget * )0);
-#line 176 "mn-message-label.gob"
-	g_return_val_if_fail (MN_IS_MESSAGE (message), (GtkWidget * )0);
-#line 467 "mn-message-label.c"
-{
-#line 178 "mn-message-label.gob"
-	
-    return GTK_WIDGET(GET_NEW_VARG(MN_MESSAGE_LABEL_PROP_MESSAGE(G_OBJECT(message)), NULL));
-  }}
-#line 473 "mn-message-label.c"
-#undef __GOB_FUNCTION__
diff --git a/src/mn-message-label.gob b/src/mn-message-label.gob
@@ -1,181 +0,0 @@
-/* 
- * Copyright (c) 2004 Jean-Yves Lefort <jylefort@brutele.be>
- *
- * 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.
- */
-
-requires 2.0.10
-
-%headertop{
-#include <gtk/gtk.h>
-#include "mn-message.h"
-%}
-%{
-#include "config.h"
-#include <glib/gi18n.h>
-#include "mn-util.h"
-%}
-
-class MN:Message:Label from Gtk:Label
-{
-  private unsigned int update_timeout_id;
-
-  private MNMessage *message unrefwith g_object_unref;
-  property OBJECT message (object_type = MN:Message,
-			   flags = CONSTRUCT_ONLY,
-			   link);
-
-  override (G:Object) GObject *
-    constructor (GType type, guint n_construct_properties, GObjectConstructParam *construct_params)
-  {
-    GObject *object;
-    Self *self;
-
-    object = PARENT_HANDLER(type, n_construct_properties, construct_params);
-    self = SELF(object);
-
-    self_update(self);
-    if (selfp->message->sent_time)
-      selfp->update_timeout_id = g_timeout_add(500, self_update_cb, self);
-
-    return object;
-  }
-
-  override (G:Object) void
-    finalize (G:Object *object (check null type))
-  {
-    Self *self = SELF(object);
-
-    if (selfp->update_timeout_id)
-      g_source_remove(selfp->update_timeout_id);
-
-    PARENT_HANDLER(object);
-  }
-
-  private void
-    update (self)
-  {
-    GString *string;
-    const char *current_label;
-
-    string = g_string_new(NULL);
-    self_append_row(string, _("Mailbox"), selfp->message->mailbox_uri->human_readable, TRUE);
-
-    if (selfp->message->error)
-      self_append_row(string, _("Unreadable message"), selfp->message->error, FALSE);
-    else
-      {
-	char *ago = NULL;
-
-	if (selfp->message->sent_time)
-	  {
-	    time_t now;
-
-	    now = mn_time();
-	    if (now > 0)
-	      {
-		time_t diff;
-
-		diff = now - selfp->message->sent_time;
-		if (diff >= 0)
-		  ago = self_format_delay(diff);
-	      }
-	  }
-	    
-	self_append_row(string, _("From"), selfp->message->from, TRUE);
-	self_append_row(string, _("Subject"), selfp->message->subject, ago != NULL);
-
-	if (ago)
-	  {
-	    self_append_row(string, _("Sent"), ago, FALSE);
-	    g_free(ago);
-	  }
-      }
-
-    current_label = gtk_label_get_label(GTK_LABEL(self));
-    if (strcmp(current_label, string->str))
-      gtk_label_set_markup(GTK_LABEL(self), string->str);
-    g_string_free(string, TRUE);
-  }
-  
-  private gboolean
-    update_cb (gpointer data (check null))
-  {
-    Self *self = data;
-
-    GDK_THREADS_ENTER();
-    self_update(self);
-    GDK_THREADS_LEAVE();
-
-    return TRUE;		/* continue */
-  }
-
-  private void
-    append_row (GString *string (check null),
-		const char *label (check null),
-		const char *value (check null),
-		gboolean newline)
-  {
-    char *markup;
-
-    markup = g_markup_printf_escaped("<span weight=\"bold\">%s:</span> ", label);
-    g_string_append(string, markup);
-    g_free(markup);
-    
-    markup = g_markup_escape_text(value, -1);
-    g_string_append(string, markup);
-    g_free(markup);
-
-    if (newline)
-      g_string_append_c(string, '\n');
-  }
-  
-  private char *
-    format_delay (time_t delay)
-  {
-    char *str;
-
-    if (delay < 60)
-      str = g_strdup_printf(ngettext("%i second ago", "%i seconds ago", delay), delay);
-    else if (delay < 60 * 60)
-      {
-	int minutes = delay / 60;
-	str = g_strdup_printf(ngettext("%i minute ago", "%i minutes ago", minutes), minutes);
-      }
-    else if (delay < 60 * 60 * 24)
-      {
-	int hours = delay / (60 * 60);
-	str = g_strdup_printf(ngettext("%i hour ago", "%i hours ago", hours), hours);
-      }
-    else if (delay < 60 * 60 * 24 * 7)
-      {
-	int days = delay / (60 * 60 * 24);
-	str = g_strdup_printf(ngettext("%i day ago", "%i days ago", days), days);
-      }
-    else
-      {
-	int weeks = delay / (60 * 60 * 24 * 7);
-	str = g_strdup_printf(ngettext("%i week ago", "%i weeks ago", weeks), weeks);
-      }
-
-    return str;
-  }
-
-  public GtkWidget *
-    new (MN:Message *message (check null type))
-  {
-    return GTK_WIDGET(GET_NEW_VARG(MN_MESSAGE_LABEL_PROP_MESSAGE(G_OBJECT(message)), NULL));
-  }
-}
diff --git a/src/mn-message-label.h b/src/mn-message-label.h
@@ -1,76 +0,0 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
-
-#include <glib.h>
-#include <glib-object.h>
-
-
-#include <gtk/gtk.h>
-#include "mn-message.h"
-
-#ifndef __MN_MESSAGE_LABEL_H__
-#define __MN_MESSAGE_LABEL_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-/*
- * Type checking and casting macros
- */
-#define MN_TYPE_MESSAGE_LABEL	(mn_message_label_get_type())
-#define MN_MESSAGE_LABEL(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_message_label_get_type(), MNMessageLabel)
-#define MN_MESSAGE_LABEL_CONST(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_message_label_get_type(), MNMessageLabel const)
-#define MN_MESSAGE_LABEL_CLASS(klass)	G_TYPE_CHECK_CLASS_CAST((klass), mn_message_label_get_type(), MNMessageLabelClass)
-#define MN_IS_MESSAGE_LABEL(obj)	G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_message_label_get_type ())
-
-#define MN_MESSAGE_LABEL_GET_CLASS(obj)	G_TYPE_INSTANCE_GET_CLASS((obj), mn_message_label_get_type(), MNMessageLabelClass)
-
-/* Private structure type */
-typedef struct _MNMessageLabelPrivate MNMessageLabelPrivate;
-
-/*
- * Main object structure
- */
-#ifndef __TYPEDEF_MN_MESSAGE_LABEL__
-#define __TYPEDEF_MN_MESSAGE_LABEL__
-typedef struct _MNMessageLabel MNMessageLabel;
-#endif
-struct _MNMessageLabel {
-	GtkLabel __parent__;
-	/*< private >*/
-	MNMessageLabelPrivate *_priv;
-};
-
-/*
- * Class definition
- */
-typedef struct _MNMessageLabelClass MNMessageLabelClass;
-struct _MNMessageLabelClass {
-	GtkLabelClass __parent__;
-};
-
-
-/*
- * Public methods
- */
-GType	mn_message_label_get_type	(void);
-GtkWidget * 	mn_message_label_new	(MNMessage * message);
-
-/*
- * Argument wrapping macros
- */
-#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
-#define MN_MESSAGE_LABEL_PROP_MESSAGE(arg)    	"message", __extension__ ({GObject *z = (arg); z;})
-#define MN_MESSAGE_LABEL_GET_PROP_MESSAGE(arg)	"message", __extension__ ({GObject **z = (arg); z;})
-#else /* __GNUC__ && !__STRICT_ANSI__ */
-#define MN_MESSAGE_LABEL_PROP_MESSAGE(arg)    	"message",(GObject *)(arg)
-#define MN_MESSAGE_LABEL_GET_PROP_MESSAGE(arg)	"message",(GObject **)(arg)
-#endif /* __GNUC__ && !__STRICT_ANSI__ */
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
diff --git a/src/mn-message-private.h b/src/mn-message-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #ifndef __MN_MESSAGE_PRIVATE_H__
 #define __MN_MESSAGE_PRIVATE_H__
diff --git a/src/mn-message.c b/src/mn-message.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.10) on Mon Oct 25 15:24:34 2004
+/* Generated by GOB (v2.0.11) on Sun Oct 31 18:41:22 2004
    (do not edit directly) */
 
 /* End world hunger, donate to the World Food Programme, http://www.wfp.org */
 
 #define GOB_VERSION_MAJOR 2
 #define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 10
+#define GOB_VERSION_PATCHLEVEL 11
 
 #define selfp (self->_priv)
 
@@ -395,7 +395,7 @@ ___1_mn_message_constructor (GType type G_GNUC_UNUSED, guint n_construct_propert
 	/*
 	 * An ID should (not mandatory):
 	 *
-	 *	- be unique in a single mailbox
+	 *	- be unique, application-wise
 	 *	- persist across checks if the message does not change
 	 */
 
diff --git a/src/mn-message.gob b/src/mn-message.gob
@@ -73,7 +73,7 @@ class MN:Message from G:Object
 	/*
 	 * An ID should (not mandatory):
 	 *
-	 *	- be unique in a single mailbox
+	 *	- be unique, application-wise
 	 *	- persist across checks if the message does not change
 	 */
 
diff --git a/src/mn-message.h b/src/mn-message.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-mh-mailbox-private.h b/src/mn-mh-mailbox-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #ifndef __MN_MH_MAILBOX_PRIVATE_H__
 #define __MN_MH_MAILBOX_PRIVATE_H__
diff --git a/src/mn-mh-mailbox.c b/src/mn-mh-mailbox.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.10) on Mon Oct 25 15:24:33 2004
+/* Generated by GOB (v2.0.11) on Sun Oct 31 18:41:21 2004
    (do not edit directly) */
 
 /* End world hunger, donate to the World Food Programme, http://www.wfp.org */
 
 #define GOB_VERSION_MAJOR 2
 #define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 10
+#define GOB_VERSION_PATCHLEVEL 11
 
 #define selfp (self->_priv)
 
diff --git a/src/mn-mh-mailbox.h b/src/mn-mh-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-pending-mailbox-private.h b/src/mn-pending-mailbox-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #ifndef __MN_PENDING_MAILBOX_PRIVATE_H__
 #define __MN_PENDING_MAILBOX_PRIVATE_H__
diff --git a/src/mn-pending-mailbox.c b/src/mn-pending-mailbox.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.10) on Mon Oct 25 15:24:34 2004
+/* Generated by GOB (v2.0.11) on Sun Oct 31 18:41:22 2004
    (do not edit directly) */
 
 /* End world hunger, donate to the World Food Programme, http://www.wfp.org */
 
 #define GOB_VERSION_MAJOR 2
 #define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 10
+#define GOB_VERSION_PATCHLEVEL 11
 
 #define selfp (self->_priv)
 
diff --git a/src/mn-pending-mailbox.h b/src/mn-pending-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-pi-mailbox-properties-private.h b/src/mn-pi-mailbox-properties-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #ifndef __MN_PI_MAILBOX_PROPERTIES_PRIVATE_H__
 #define __MN_PI_MAILBOX_PROPERTIES_PRIVATE_H__
@@ -10,6 +10,8 @@ extern "C" {
 #endif /* __cplusplus */
 
 void 	mn_pi_mailbox_properties_entry_changed_h	(GtkEditable * editable, gpointer user_data);
+void 	mn_pi_mailbox_properties_set_contents	(MNPIMailboxProperties * self, gboolean ssl, gboolean inband_ssl, const char * username, const char * password, const char * authmech, const char * hostname, int port);
+void 	mn_pi_mailbox_properties_get_contents	(MNPIMailboxProperties * self, gboolean * ssl, gboolean * inband_ssl, const char ** username, const char ** password, char ** authmech, const char ** hostname, int * port);
 
 #ifdef __cplusplus
 }
diff --git a/src/mn-pi-mailbox-properties.c b/src/mn-pi-mailbox-properties.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.10) on Mon Oct 25 15:24:33 2004
+/* Generated by GOB (v2.0.11) on Sun Oct 31 18:41:21 2004
    (do not edit directly) */
 
 /* End world hunger, donate to the World Food Programme, http://www.wfp.org */
 
 #define GOB_VERSION_MAJOR 2
 #define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 10
+#define GOB_VERSION_PATCHLEVEL 11
 
 #define selfp (self->_priv)
 
@@ -151,7 +151,7 @@ mn_pi_mailbox_properties_init (MNPIMailboxProperties * o G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::init"
 #line 50 "mn-pi-mailbox-properties.gob"
-	o->tooltips = mn_tooltips_new();
+	o->tooltips = mn_gtk_tooltips_new();
 #line 156 "mn-pi-mailbox-properties.c"
 }
 #undef __GOB_FUNCTION__
diff --git a/src/mn-pi-mailbox-properties.gob b/src/mn-pi-mailbox-properties.gob
@@ -47,7 +47,7 @@ class MN:PI:Mailbox:Properties from Gtk:VBox (interface MN:Mailbox:Properties)
   protected GtkWidget *hostname_entry;
   protected GtkWidget *username_entry;
   protected GtkWidget *password_entry;
-  protected GtkTooltips *tooltips = {mn_tooltips_new()} unrefwith g_object_unref;
+  protected GtkTooltips *tooltips = {mn_gtk_tooltips_new()} unrefwith g_object_unref;
   protected GtkWidget *details_vbox;
   protected GtkSizeGroup *details_size_group;
   protected GtkWidget *conn_radio[3];
@@ -198,7 +198,7 @@ class MN:PI:Mailbox:Properties from Gtk:VBox (interface MN:Mailbox:Properties)
     g_object_notify(G_OBJECT(self), "complete");
   }
 
-  public void
+  protected void
     set_contents (self,
 		  gboolean ssl,
 		  gboolean inband_ssl,
@@ -216,7 +216,7 @@ class MN:PI:Mailbox:Properties from Gtk:VBox (interface MN:Mailbox:Properties)
     gtk_spin_button_set_value(GTK_SPIN_BUTTON(self->port_spin[ssl ? 2 : (inband_ssl ? 1 : 0)]), port);
   }
 
-  public void
+  protected void
     get_contents (self,
 		  gboolean *ssl,
 		  gboolean *inband_ssl,
diff --git a/src/mn-pi-mailbox-properties.h b/src/mn-pi-mailbox-properties.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
@@ -62,22 +62,6 @@ struct _MNPIMailboxPropertiesClass {
  * Public methods
  */
 GType	mn_pi_mailbox_properties_get_type	(void);
-void 	mn_pi_mailbox_properties_set_contents	(MNPIMailboxProperties * self,
-					gboolean ssl,
-					gboolean inband_ssl,
-					const char * username,
-					const char * password,
-					const char * authmech,
-					const char * hostname,
-					int port);
-void 	mn_pi_mailbox_properties_get_contents	(MNPIMailboxProperties * self,
-					gboolean * ssl,
-					gboolean * inband_ssl,
-					const char ** username,
-					const char ** password,
-					char ** authmech,
-					const char ** hostname,
-					int * port);
 
 /*
  * Argument wrapping macros
diff --git a/src/mn-pop3-mailbox-private.h b/src/mn-pop3-mailbox-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #ifndef __MN_POP3_MAILBOX_PRIVATE_H__
 #define __MN_POP3_MAILBOX_PRIVATE_H__
diff --git a/src/mn-pop3-mailbox-properties-private.h b/src/mn-pop3-mailbox-properties-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #ifndef __MN_POP3_MAILBOX_PROPERTIES_PRIVATE_H__
 #define __MN_POP3_MAILBOX_PROPERTIES_PRIVATE_H__
diff --git a/src/mn-pop3-mailbox-properties.c b/src/mn-pop3-mailbox-properties.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.10) on Mon Oct 25 15:24:33 2004
+/* Generated by GOB (v2.0.11) on Sun Oct 31 18:41:21 2004
    (do not edit directly) */
 
 /* End world hunger, donate to the World Food Programme, http://www.wfp.org */
 
 #define GOB_VERSION_MAJOR 2
 #define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 10
+#define GOB_VERSION_PATCHLEVEL 11
 
 #define selfp (self->_priv)
 
@@ -31,8 +31,9 @@
 #include "mn-mailbox-properties-util.h"
 #include "mn-auth-combo-box.h"
 #include "mn-util.h"
+#include "mn-pi-mailbox-properties-private.h"
 
-#line 36 "mn-pop3-mailbox-properties.c"
+#line 37 "mn-pop3-mailbox-properties.c"
 /* self casting macros */
 #define SELF(x) MN_POP3_MAILBOX_PROPERTIES(x)
 #define SELF_CONST(x) MN_POP3_MAILBOX_PROPERTIES_CONST(x)
@@ -70,11 +71,11 @@ static MNPIMailboxPropertiesClass *parent_class = NULL;
 static void
 ___MN_Mailbox_Properties_init (MNMailboxPropertiesIface *iface)
 {
-#line 95 "mn-pop3-mailbox-properties.gob"
+#line 96 "mn-pop3-mailbox-properties.gob"
 	iface->set_uri = self_set_uri;
-#line 115 "mn-pop3-mailbox-properties.gob"
+#line 116 "mn-pop3-mailbox-properties.gob"
 	iface->get_uri = self_get_uri;
-#line 78 "mn-pop3-mailbox-properties.c"
+#line 79 "mn-pop3-mailbox-properties.c"
 }
 
 GType
@@ -134,19 +135,19 @@ mn_pop3_mailbox_properties_init (MNPOP3MailboxProperties * o G_GNUC_UNUSED)
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox:Properties::init"
 }
 #undef __GOB_FUNCTION__
-#line 61 "mn-pop3-mailbox-properties.gob"
+#line 62 "mn-pop3-mailbox-properties.gob"
 static void 
 mn_pop3_mailbox_properties_class_init (MNPOP3MailboxPropertiesClass * class G_GNUC_UNUSED)
-#line 141 "mn-pop3-mailbox-properties.c"
+#line 142 "mn-pop3-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox:Properties::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
 
 	parent_class = g_type_class_ref (MN_TYPE_PI_MAILBOX_PROPERTIES);
 
-#line 70 "mn-pop3-mailbox-properties.gob"
+#line 71 "mn-pop3-mailbox-properties.gob"
 	g_object_class->constructor = ___2_mn_pop3_mailbox_properties_constructor;
-#line 150 "mn-pop3-mailbox-properties.c"
+#line 151 "mn-pop3-mailbox-properties.c"
 	g_object_class->get_property = ___object_get_property;
     {
 	g_object_class_override_property (g_object_class,
@@ -154,7 +155,7 @@ mn_pop3_mailbox_properties_class_init (MNPOP3MailboxPropertiesClass * class G_GN
 		"complete");
     }
  {
-#line 62 "mn-pop3-mailbox-properties.gob"
+#line 63 "mn-pop3-mailbox-properties.gob"
 
     MNPIMailboxPropertiesClass *pi_class = MN_PI_MAILBOX_PROPERTIES_CLASS(class);
 
@@ -162,7 +163,7 @@ mn_pop3_mailbox_properties_class_init (MNPOP3MailboxPropertiesClass * class G_GN
     pi_class->default_port[0] = mn_uri_get_default_port("pop");
     pi_class->default_port[1] = mn_uri_get_default_port("pops");
   
-#line 166 "mn-pop3-mailbox-properties.c"
+#line 167 "mn-pop3-mailbox-properties.c"
  }
 }
 #undef __GOB_FUNCTION__
@@ -181,7 +182,7 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_COMPLETE:
 		{
-#line 37 "mn-pop3-mailbox-properties.gob"
+#line 38 "mn-pop3-mailbox-properties.gob"
 
       MNPIMailboxProperties *pi = MN_PI_MAILBOX_PROPERTIES(self);
       gboolean complete;
@@ -205,7 +206,7 @@ ___object_get_property (GObject *object,
 
       g_value_set_boolean(VAL, complete);
     
-#line 209 "mn-pop3-mailbox-properties.c"
+#line 210 "mn-pop3-mailbox-properties.c"
 		}
 		break;
 	default:
@@ -222,10 +223,10 @@ ___object_get_property (GObject *object,
 
 
 
-#line 70 "mn-pop3-mailbox-properties.gob"
+#line 71 "mn-pop3-mailbox-properties.gob"
 static GObject * 
 ___2_mn_pop3_mailbox_properties_constructor (GType type G_GNUC_UNUSED, guint n_construct_properties, GObjectConstructParam * construct_params)
-#line 229 "mn-pop3-mailbox-properties.c"
+#line 230 "mn-pop3-mailbox-properties.c"
 #define PARENT_HANDLER(___type,___n_construct_properties,___construct_params) \
 	((G_OBJECT_CLASS(parent_class)->constructor)? \
 		(* G_OBJECT_CLASS(parent_class)->constructor)(___type,___n_construct_properties,___construct_params): \
@@ -233,7 +234,7 @@ ___2_mn_pop3_mailbox_properties_constructor (GType type G_GNUC_UNUSED, guint n_c
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox:Properties::constructor"
 {
-#line 72 "mn-pop3-mailbox-properties.gob"
+#line 73 "mn-pop3-mailbox-properties.gob"
 	
     GObject *object;
     Self *self;
@@ -246,37 +247,37 @@ ___2_mn_pop3_mailbox_properties_constructor (GType type G_GNUC_UNUSED, guint n_c
     mn_auth_combo_box_append(MN_AUTH_COMBO_BOX(pi->auth_combo), "+APOP", "APOP");
     mn_auth_combo_box_append(MN_AUTH_COMBO_BOX(pi->auth_combo), "+USERPASS", "USER/PASS");
 
-    mn_tooltips_set_tips(pi->tooltips,
-			 pi->hostname_entry, _("The hostname or IP address of the POP3 server"),
-			 pi->username_entry, _("Your username on the POP3 server"),
-			 pi->password_entry, _("Your password on the POP3 server (if left blank, you will be prompted for the password when needed)"),
-			 pi->port_spin[0], _("The port number of the POP3 server"),
-			 pi->port_spin[1], _("The port number of the POP3 server"),
-			 NULL);
+    mn_gtk_tooltips_set_tips(pi->tooltips,
+			     pi->hostname_entry, _("The hostname or IP address of the POP3 server"),
+			     pi->username_entry, _("Your username on the POP3 server"),
+			     pi->password_entry, _("Your password on the POP3 server (if left blank, you will be prompted for the password when needed)"),
+			     pi->port_spin[0], _("The port number of the POP3 server"),
+			     pi->port_spin[1], _("The port number of the POP3 server"),
+			     NULL);
 
     return object;
   }}
-#line 260 "mn-pop3-mailbox-properties.c"
+#line 261 "mn-pop3-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 95 "mn-pop3-mailbox-properties.gob"
+#line 96 "mn-pop3-mailbox-properties.gob"
 static gboolean 
 mn_pop3_mailbox_properties_set_uri (MNMailboxProperties * properties, MNURI * uri)
-#line 267 "mn-pop3-mailbox-properties.c"
+#line 268 "mn-pop3-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox:Properties::set_uri"
-#line 95 "mn-pop3-mailbox-properties.gob"
+#line 96 "mn-pop3-mailbox-properties.gob"
 	g_return_val_if_fail (properties != NULL, (gboolean )0);
-#line 95 "mn-pop3-mailbox-properties.gob"
+#line 96 "mn-pop3-mailbox-properties.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES (properties), (gboolean )0);
-#line 95 "mn-pop3-mailbox-properties.gob"
+#line 96 "mn-pop3-mailbox-properties.gob"
 	g_return_val_if_fail (uri != NULL, (gboolean )0);
-#line 95 "mn-pop3-mailbox-properties.gob"
+#line 96 "mn-pop3-mailbox-properties.gob"
 	g_return_val_if_fail (MN_IS_URI (uri), (gboolean )0);
-#line 278 "mn-pop3-mailbox-properties.c"
+#line 279 "mn-pop3-mailbox-properties.c"
 {
-#line 98 "mn-pop3-mailbox-properties.gob"
+#line 99 "mn-pop3-mailbox-properties.gob"
 	
     if (MN_URI_IS_POP(uri))
       {
@@ -293,22 +294,22 @@ mn_pop3_mailbox_properties_set_uri (MNMailboxProperties * properties, MNURI * ur
     else
       return FALSE;
   }}
-#line 297 "mn-pop3-mailbox-properties.c"
+#line 298 "mn-pop3-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 115 "mn-pop3-mailbox-properties.gob"
+#line 116 "mn-pop3-mailbox-properties.gob"
 static MNURI * 
 mn_pop3_mailbox_properties_get_uri (MNMailboxProperties * properties)
-#line 303 "mn-pop3-mailbox-properties.c"
+#line 304 "mn-pop3-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox:Properties::get_uri"
-#line 115 "mn-pop3-mailbox-properties.gob"
+#line 116 "mn-pop3-mailbox-properties.gob"
 	g_return_val_if_fail (properties != NULL, (MNURI * )0);
-#line 115 "mn-pop3-mailbox-properties.gob"
+#line 116 "mn-pop3-mailbox-properties.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES (properties), (MNURI * )0);
-#line 310 "mn-pop3-mailbox-properties.c"
+#line 311 "mn-pop3-mailbox-properties.c"
 {
-#line 117 "mn-pop3-mailbox-properties.gob"
+#line 118 "mn-pop3-mailbox-properties.gob"
 	
     gboolean ssl;
     gboolean inband_ssl;
@@ -333,5 +334,5 @@ mn_pop3_mailbox_properties_get_uri (MNMailboxProperties * properties)
 
     return uri;
   }}
-#line 337 "mn-pop3-mailbox-properties.c"
+#line 338 "mn-pop3-mailbox-properties.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-pop3-mailbox-properties.gob b/src/mn-pop3-mailbox-properties.gob
@@ -28,6 +28,7 @@ requires 2.0.10
 #include "mn-mailbox-properties-util.h"
 #include "mn-auth-combo-box.h"
 #include "mn-util.h"
+#include "mn-pi-mailbox-properties-private.h"
 %}
 
 class MN:POP3:Mailbox:Properties from MN:PI:Mailbox:Properties (interface MN:Mailbox:Properties)
@@ -81,13 +82,13 @@ class MN:POP3:Mailbox:Properties from MN:PI:Mailbox:Properties (interface MN:Mai
     mn_auth_combo_box_append(MN_AUTH_COMBO_BOX(pi->auth_combo), "+APOP", "APOP");
     mn_auth_combo_box_append(MN_AUTH_COMBO_BOX(pi->auth_combo), "+USERPASS", "USER/PASS");
 
-    mn_tooltips_set_tips(pi->tooltips,
-			 pi->hostname_entry, _("The hostname or IP address of the POP3 server"),
-			 pi->username_entry, _("Your username on the POP3 server"),
-			 pi->password_entry, _("Your password on the POP3 server (if left blank, you will be prompted for the password when needed)"),
-			 pi->port_spin[0], _("The port number of the POP3 server"),
-			 pi->port_spin[1], _("The port number of the POP3 server"),
-			 NULL);
+    mn_gtk_tooltips_set_tips(pi->tooltips,
+			     pi->hostname_entry, _("The hostname or IP address of the POP3 server"),
+			     pi->username_entry, _("Your username on the POP3 server"),
+			     pi->password_entry, _("Your password on the POP3 server (if left blank, you will be prompted for the password when needed)"),
+			     pi->port_spin[0], _("The port number of the POP3 server"),
+			     pi->port_spin[1], _("The port number of the POP3 server"),
+			     NULL);
 
     return object;
   }
diff --git a/src/mn-pop3-mailbox-properties.h b/src/mn-pop3-mailbox-properties.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-pop3-mailbox.c b/src/mn-pop3-mailbox.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.10) on Mon Oct 25 15:24:33 2004
+/* Generated by GOB (v2.0.11) on Sun Oct 31 18:41:21 2004
    (do not edit directly) */
 
 /* End world hunger, donate to the World Food Programme, http://www.wfp.org */
 
 #define GOB_VERSION_MAJOR 2
 #define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 10
+#define GOB_VERSION_PATCHLEVEL 11
 
 #define selfp (self->_priv)
 
@@ -267,18 +267,18 @@ mn_pop3_mailbox_class_init (MNPOP3MailboxClass * class G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
-
-	g_type_class_add_private(class,sizeof(MNPOP3MailboxPrivate));
 	MNMailboxClass *mn_mailbox_class = (MNMailboxClass *)class;
 	MNAuthenticatedMailboxClass *mn_authenticated_mailbox_class = (MNAuthenticatedMailboxClass *)class;
 
+	g_type_class_add_private(class,sizeof(MNPOP3MailboxPrivate));
+
 	parent_class = g_type_class_ref (MN_TYPE_AUTHENTICATED_MAILBOX);
 
 #line 131 "mn-pop3-mailbox.gob"
 	g_object_class->constructor = ___2_mn_pop3_mailbox_constructor;
 #line 148 "mn-pop3-mailbox.gob"
 	mn_mailbox_class->impl_is = ___3_mn_pop3_mailbox_impl_is;
-#line 631 "mn-pop3-mailbox.gob"
+#line 638 "mn-pop3-mailbox.gob"
 	mn_authenticated_mailbox_class->impl_authenticated_check = ___19_mn_pop3_mailbox_impl_authenticated_check;
 #line 284 "mn-pop3-mailbox.c"
 	g_object_class->finalize = ___finalize;
@@ -593,32 +593,39 @@ mn_pop3_mailbox_enter_auth_cb (MNClientSession * session, MNClientSessionPrivate
 						    "pop",
 						    priv->auth_mechanisms,
 						    priv->mailbox->uri->authmech,
-						    &priv->sasl_mechanism))
+						    &priv->sasl_mechanism,
+					  /* [1] */ TRUE))
       return mn_client_session_write(session, "AUTH %s", priv->sasl_mechanism);
     else
       return self_session_authenticate_fallback(priv, FALSE);
+
+    /*
+     * [1] http://www.ietf.org/internet-drafts/draft-siemborski-rfc1734bis-03.txt
+     * section 4 specifies that POP3 supports the initial client
+     * response feature of SASL.
+     */
 #else
     g_return_val_if_reached(0);
 #endif /* WITH_SASL */
   }}
-#line 605 "mn-pop3-mailbox.c"
+#line 612 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 335 "mn-pop3-mailbox.gob"
+#line 342 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_auth_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 611 "mn-pop3-mailbox.c"
+#line 618 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_auth_cb"
-#line 335 "mn-pop3-mailbox.gob"
+#line 342 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 335 "mn-pop3-mailbox.gob"
+#line 342 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 335 "mn-pop3-mailbox.gob"
+#line 342 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 620 "mn-pop3-mailbox.c"
+#line 627 "mn-pop3-mailbox.c"
 {
-#line 339 "mn-pop3-mailbox.gob"
+#line 346 "mn-pop3-mailbox.gob"
 	
 #ifdef WITH_SASL
     switch (response->type)
@@ -641,22 +648,22 @@ mn_pop3_mailbox_handle_auth_cb (MNClientSession * session, MNClientSessionRespon
     g_return_val_if_reached(0);
 #endif /* WITH_SASL */
   }}
-#line 645 "mn-pop3-mailbox.c"
+#line 652 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 362 "mn-pop3-mailbox.gob"
+#line 369 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_enter_apop_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 651 "mn-pop3-mailbox.c"
+#line 658 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_apop_cb"
-#line 362 "mn-pop3-mailbox.gob"
+#line 369 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 362 "mn-pop3-mailbox.gob"
+#line 369 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 658 "mn-pop3-mailbox.c"
+#line 665 "mn-pop3-mailbox.c"
 {
-#line 365 "mn-pop3-mailbox.gob"
+#line 372 "mn-pop3-mailbox.gob"
 	
     MNMD5Context context;
     char buf[33];
@@ -670,24 +677,24 @@ mn_pop3_mailbox_enter_apop_cb (MNClientSession * session, MNClientSessionPrivate
 
     return mn_client_session_write(session, "APOP %s %s", priv->mailbox->uri->username, buf);
   }}
-#line 674 "mn-pop3-mailbox.c"
+#line 681 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 379 "mn-pop3-mailbox.gob"
+#line 386 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_apop_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 680 "mn-pop3-mailbox.c"
+#line 687 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_apop_cb"
-#line 379 "mn-pop3-mailbox.gob"
+#line 386 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 379 "mn-pop3-mailbox.gob"
+#line 386 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 379 "mn-pop3-mailbox.gob"
+#line 386 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 689 "mn-pop3-mailbox.c"
+#line 696 "mn-pop3-mailbox.c"
 {
-#line 383 "mn-pop3-mailbox.gob"
+#line 390 "mn-pop3-mailbox.gob"
 	
     switch (response->type)
       {
@@ -701,43 +708,43 @@ mn_pop3_mailbox_handle_apop_cb (MNClientSession * session, MNClientSessionRespon
 	return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
       }
   }}
-#line 705 "mn-pop3-mailbox.c"
+#line 712 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 397 "mn-pop3-mailbox.gob"
+#line 404 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_enter_user_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 711 "mn-pop3-mailbox.c"
+#line 718 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_user_cb"
-#line 397 "mn-pop3-mailbox.gob"
+#line 404 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 397 "mn-pop3-mailbox.gob"
+#line 404 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 718 "mn-pop3-mailbox.c"
+#line 725 "mn-pop3-mailbox.c"
 {
-#line 400 "mn-pop3-mailbox.gob"
+#line 407 "mn-pop3-mailbox.gob"
 	
     return mn_client_session_write(session, "USER %s", priv->mailbox->uri->username);
   }}
-#line 724 "mn-pop3-mailbox.c"
+#line 731 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 404 "mn-pop3-mailbox.gob"
+#line 411 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_user_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 730 "mn-pop3-mailbox.c"
+#line 737 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_user_cb"
-#line 404 "mn-pop3-mailbox.gob"
+#line 411 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 404 "mn-pop3-mailbox.gob"
+#line 411 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 404 "mn-pop3-mailbox.gob"
+#line 411 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 739 "mn-pop3-mailbox.c"
+#line 746 "mn-pop3-mailbox.c"
 {
-#line 408 "mn-pop3-mailbox.gob"
+#line 415 "mn-pop3-mailbox.gob"
 	
     switch (response->type)
       {
@@ -752,43 +759,43 @@ mn_pop3_mailbox_handle_user_cb (MNClientSession * session, MNClientSessionRespon
 	return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
       }
   }}
-#line 756 "mn-pop3-mailbox.c"
+#line 763 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 423 "mn-pop3-mailbox.gob"
+#line 430 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_enter_pass_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 762 "mn-pop3-mailbox.c"
+#line 769 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_pass_cb"
-#line 423 "mn-pop3-mailbox.gob"
+#line 430 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 423 "mn-pop3-mailbox.gob"
+#line 430 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 769 "mn-pop3-mailbox.c"
+#line 776 "mn-pop3-mailbox.c"
 {
-#line 426 "mn-pop3-mailbox.gob"
+#line 433 "mn-pop3-mailbox.gob"
 	
     return mn_client_session_write(session, "PASS %s", MN_AUTHENTICATED_MAILBOX(priv->self)->password);
   }}
-#line 775 "mn-pop3-mailbox.c"
+#line 782 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 430 "mn-pop3-mailbox.gob"
+#line 437 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_pass_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 781 "mn-pop3-mailbox.c"
+#line 788 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_pass_cb"
-#line 430 "mn-pop3-mailbox.gob"
+#line 437 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 430 "mn-pop3-mailbox.gob"
+#line 437 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 430 "mn-pop3-mailbox.gob"
+#line 437 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 790 "mn-pop3-mailbox.c"
+#line 797 "mn-pop3-mailbox.c"
 {
-#line 434 "mn-pop3-mailbox.gob"
+#line 441 "mn-pop3-mailbox.gob"
 	
     switch (response->type)
       {
@@ -803,22 +810,22 @@ mn_pop3_mailbox_handle_pass_cb (MNClientSession * session, MNClientSessionRespon
 	return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
       }
   }}
-#line 807 "mn-pop3-mailbox.c"
+#line 814 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 449 "mn-pop3-mailbox.gob"
+#line 456 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_enter_list_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 813 "mn-pop3-mailbox.c"
+#line 820 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_list_cb"
-#line 449 "mn-pop3-mailbox.gob"
+#line 456 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 449 "mn-pop3-mailbox.gob"
+#line 456 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 820 "mn-pop3-mailbox.c"
+#line 827 "mn-pop3-mailbox.c"
 {
-#line 452 "mn-pop3-mailbox.gob"
+#line 459 "mn-pop3-mailbox.gob"
 	
 #ifdef WITH_MIME
     return mn_client_session_write(session, "LIST");
@@ -826,24 +833,24 @@ mn_pop3_mailbox_enter_list_cb (MNClientSession * session, MNClientSessionPrivate
     g_return_val_if_reached(0);
 #endif
   }}
-#line 830 "mn-pop3-mailbox.c"
+#line 837 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 460 "mn-pop3-mailbox.gob"
+#line 467 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_list_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 836 "mn-pop3-mailbox.c"
+#line 843 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_list_cb"
-#line 460 "mn-pop3-mailbox.gob"
+#line 467 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 460 "mn-pop3-mailbox.gob"
+#line 467 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 460 "mn-pop3-mailbox.gob"
+#line 467 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 845 "mn-pop3-mailbox.c"
+#line 852 "mn-pop3-mailbox.c"
 {
-#line 464 "mn-pop3-mailbox.gob"
+#line 471 "mn-pop3-mailbox.gob"
 	
 #ifdef WITH_MIME
     self_handle_list_response(priv, response);
@@ -879,22 +886,22 @@ mn_pop3_mailbox_handle_list_cb (MNClientSession * session, MNClientSessionRespon
     g_return_val_if_reached(0);
 #endif
   }}
-#line 883 "mn-pop3-mailbox.c"
+#line 890 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 500 "mn-pop3-mailbox.gob"
+#line 507 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_enter_retr_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 889 "mn-pop3-mailbox.c"
+#line 896 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_retr_cb"
-#line 500 "mn-pop3-mailbox.gob"
+#line 507 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 500 "mn-pop3-mailbox.gob"
+#line 507 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 896 "mn-pop3-mailbox.c"
+#line 903 "mn-pop3-mailbox.c"
 {
-#line 503 "mn-pop3-mailbox.gob"
+#line 510 "mn-pop3-mailbox.gob"
 	
 #ifdef WITH_MIME
     if (priv->current_message_number)
@@ -913,24 +920,24 @@ mn_pop3_mailbox_enter_retr_cb (MNClientSession * session, MNClientSessionPrivate
     g_return_val_if_reached(0);
 #endif
   }}
-#line 917 "mn-pop3-mailbox.c"
+#line 924 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 522 "mn-pop3-mailbox.gob"
+#line 529 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_retr_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 923 "mn-pop3-mailbox.c"
+#line 930 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_retr_cb"
-#line 522 "mn-pop3-mailbox.gob"
+#line 529 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 522 "mn-pop3-mailbox.gob"
+#line 529 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 522 "mn-pop3-mailbox.gob"
+#line 529 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 932 "mn-pop3-mailbox.c"
+#line 939 "mn-pop3-mailbox.c"
 {
-#line 526 "mn-pop3-mailbox.gob"
+#line 533 "mn-pop3-mailbox.gob"
 	
 #ifdef WITH_MIME
     self_handle_list_response(priv, response);
@@ -969,22 +976,22 @@ mn_pop3_mailbox_handle_retr_cb (MNClientSession * session, MNClientSessionRespon
     g_return_val_if_reached(0);
 #endif
   }}
-#line 973 "mn-pop3-mailbox.c"
+#line 980 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 565 "mn-pop3-mailbox.gob"
+#line 572 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_enter_stat_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 979 "mn-pop3-mailbox.c"
+#line 986 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_stat_cb"
-#line 565 "mn-pop3-mailbox.gob"
+#line 572 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 565 "mn-pop3-mailbox.gob"
+#line 572 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 986 "mn-pop3-mailbox.c"
+#line 993 "mn-pop3-mailbox.c"
 {
-#line 568 "mn-pop3-mailbox.gob"
+#line 575 "mn-pop3-mailbox.gob"
 	
 #ifndef WITH_MIME
     return mn_client_session_write(session, "STAT");
@@ -992,24 +999,24 @@ mn_pop3_mailbox_enter_stat_cb (MNClientSession * session, MNClientSessionPrivate
     g_return_val_if_reached(0);
 #endif
   }}
-#line 996 "mn-pop3-mailbox.c"
+#line 1003 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 576 "mn-pop3-mailbox.gob"
+#line 583 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_stat_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 1002 "mn-pop3-mailbox.c"
+#line 1009 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_stat_cb"
-#line 576 "mn-pop3-mailbox.gob"
+#line 583 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 576 "mn-pop3-mailbox.gob"
+#line 583 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 576 "mn-pop3-mailbox.gob"
+#line 583 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1011 "mn-pop3-mailbox.c"
+#line 1018 "mn-pop3-mailbox.c"
 {
-#line 580 "mn-pop3-mailbox.gob"
+#line 587 "mn-pop3-mailbox.gob"
 	
 #ifndef WITH_MIME
     switch (response->type)
@@ -1040,43 +1047,43 @@ mn_pop3_mailbox_handle_stat_cb (MNClientSession * session, MNClientSessionRespon
     g_return_val_if_reached(0);
 #endif
   }}
-#line 1044 "mn-pop3-mailbox.c"
+#line 1051 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 611 "mn-pop3-mailbox.gob"
+#line 618 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_enter_quit_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 1050 "mn-pop3-mailbox.c"
+#line 1057 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_quit_cb"
-#line 611 "mn-pop3-mailbox.gob"
+#line 618 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 611 "mn-pop3-mailbox.gob"
+#line 618 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1057 "mn-pop3-mailbox.c"
+#line 1064 "mn-pop3-mailbox.c"
 {
-#line 614 "mn-pop3-mailbox.gob"
+#line 621 "mn-pop3-mailbox.gob"
 	
     return mn_client_session_write(session, "QUIT");
   }}
-#line 1063 "mn-pop3-mailbox.c"
+#line 1070 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 618 "mn-pop3-mailbox.gob"
+#line 625 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_quit_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 1069 "mn-pop3-mailbox.c"
+#line 1076 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_quit_cb"
-#line 618 "mn-pop3-mailbox.gob"
+#line 625 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 618 "mn-pop3-mailbox.gob"
+#line 625 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 618 "mn-pop3-mailbox.gob"
+#line 625 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1078 "mn-pop3-mailbox.c"
+#line 1085 "mn-pop3-mailbox.c"
 {
-#line 622 "mn-pop3-mailbox.gob"
+#line 629 "mn-pop3-mailbox.gob"
 	
     switch (response->type)
       {
@@ -1085,26 +1092,26 @@ mn_pop3_mailbox_handle_quit_cb (MNClientSession * session, MNClientSessionRespon
       default:			return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
       }
   }}
-#line 1089 "mn-pop3-mailbox.c"
+#line 1096 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 631 "mn-pop3-mailbox.gob"
+#line 638 "mn-pop3-mailbox.gob"
 static MNAuthenticatedMailboxResult 
 ___19_mn_pop3_mailbox_impl_authenticated_check (MNAuthenticatedMailbox * authenticated_mailbox G_GNUC_UNUSED, GError ** err)
-#line 1095 "mn-pop3-mailbox.c"
+#line 1102 "mn-pop3-mailbox.c"
 #define PARENT_HANDLER(___authenticated_mailbox,___err) \
 	((MN_AUTHENTICATED_MAILBOX_CLASS(parent_class)->impl_authenticated_check)? \
 		(* MN_AUTHENTICATED_MAILBOX_CLASS(parent_class)->impl_authenticated_check)(___authenticated_mailbox,___err): \
 		((MNAuthenticatedMailboxResult )0))
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::impl_authenticated_check"
-#line 631 "mn-pop3-mailbox.gob"
+#line 638 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (authenticated_mailbox != NULL, (MNAuthenticatedMailboxResult )0);
-#line 631 "mn-pop3-mailbox.gob"
+#line 638 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (MN_IS_AUTHENTICATED_MAILBOX (authenticated_mailbox), (MNAuthenticatedMailboxResult )0);
-#line 1106 "mn-pop3-mailbox.c"
+#line 1113 "mn-pop3-mailbox.c"
 {
-#line 634 "mn-pop3-mailbox.gob"
+#line 641 "mn-pop3-mailbox.gob"
 	
     MNMailbox *mailbox = MN_MAILBOX(authenticated_mailbox);
     Self *self = SELF(authenticated_mailbox);
@@ -1134,7 +1141,9 @@ ___19_mn_pop3_mailbox_impl_authenticated_check (MNAuthenticatedMailbox * authent
       self_notice_cb,
       self_response_new_cb,
       self_response_free_cb,
-      self_custom_handler_cb
+      self_custom_handler_cb,
+      NULL,			/* pre_read */
+      NULL			/* post_read */
     };
     MNClientSessionPrivate priv;
     gboolean status;
@@ -1191,46 +1200,46 @@ ___19_mn_pop3_mailbox_impl_authenticated_check (MNAuthenticatedMailbox * authent
 	 ? MN_AUTHENTICATED_MAILBOX_ERROR_AUTHENTICATION
 	 : MN_AUTHENTICATED_MAILBOX_ERROR_OTHER);
   }}
-#line 1195 "mn-pop3-mailbox.c"
+#line 1204 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 721 "mn-pop3-mailbox.gob"
+#line 730 "mn-pop3-mailbox.gob"
 static void 
 mn_pop3_mailbox_notice_cb (MNClientSession * session, const char * str, MNClientSessionPrivate * priv)
-#line 1202 "mn-pop3-mailbox.c"
+#line 1211 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::notice_cb"
-#line 721 "mn-pop3-mailbox.gob"
+#line 730 "mn-pop3-mailbox.gob"
 	g_return_if_fail (session != NULL);
-#line 721 "mn-pop3-mailbox.gob"
+#line 730 "mn-pop3-mailbox.gob"
 	g_return_if_fail (str != NULL);
-#line 721 "mn-pop3-mailbox.gob"
+#line 730 "mn-pop3-mailbox.gob"
 	g_return_if_fail (priv != NULL);
-#line 1211 "mn-pop3-mailbox.c"
+#line 1220 "mn-pop3-mailbox.c"
 {
-#line 725 "mn-pop3-mailbox.gob"
+#line 734 "mn-pop3-mailbox.gob"
 	
     mn_mailbox_notice(priv->mailbox, "%s", str);
   }}
-#line 1217 "mn-pop3-mailbox.c"
+#line 1226 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 729 "mn-pop3-mailbox.gob"
+#line 738 "mn-pop3-mailbox.gob"
 static MNClientSessionResponse * 
 mn_pop3_mailbox_response_new_cb (MNClientSession * session, const char * input, MNClientSessionPrivate * priv)
-#line 1223 "mn-pop3-mailbox.c"
+#line 1232 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::response_new_cb"
-#line 729 "mn-pop3-mailbox.gob"
+#line 738 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (MNClientSessionResponse * )0);
-#line 729 "mn-pop3-mailbox.gob"
+#line 738 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (input != NULL, (MNClientSessionResponse * )0);
-#line 729 "mn-pop3-mailbox.gob"
+#line 738 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (MNClientSessionResponse * )0);
-#line 1232 "mn-pop3-mailbox.c"
+#line 1241 "mn-pop3-mailbox.c"
 {
-#line 733 "mn-pop3-mailbox.gob"
+#line 742 "mn-pop3-mailbox.gob"
 	
     MNClientSessionResponse *response = NULL;
 
@@ -1289,46 +1298,46 @@ mn_pop3_mailbox_response_new_cb (MNClientSession * session, const char * input, 
     
     return response;
   }}
-#line 1293 "mn-pop3-mailbox.c"
+#line 1302 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 792 "mn-pop3-mailbox.gob"
+#line 801 "mn-pop3-mailbox.gob"
 static void 
 mn_pop3_mailbox_response_free_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 1299 "mn-pop3-mailbox.c"
+#line 1308 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::response_free_cb"
-#line 792 "mn-pop3-mailbox.gob"
+#line 801 "mn-pop3-mailbox.gob"
 	g_return_if_fail (session != NULL);
-#line 792 "mn-pop3-mailbox.gob"
+#line 801 "mn-pop3-mailbox.gob"
 	g_return_if_fail (response != NULL);
-#line 792 "mn-pop3-mailbox.gob"
+#line 801 "mn-pop3-mailbox.gob"
 	g_return_if_fail (priv != NULL);
-#line 1308 "mn-pop3-mailbox.c"
+#line 1317 "mn-pop3-mailbox.c"
 {
-#line 796 "mn-pop3-mailbox.gob"
+#line 805 "mn-pop3-mailbox.gob"
 	
     g_free(response->arguments);
     g_free(response);
   }}
-#line 1315 "mn-pop3-mailbox.c"
+#line 1324 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 801 "mn-pop3-mailbox.gob"
+#line 810 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_custom_handler_cb (MNClientSession * session, MNClientSessionResponse * response, int result, MNClientSessionPrivate * priv)
-#line 1321 "mn-pop3-mailbox.c"
+#line 1330 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::custom_handler_cb"
-#line 801 "mn-pop3-mailbox.gob"
+#line 810 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 801 "mn-pop3-mailbox.gob"
+#line 810 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 801 "mn-pop3-mailbox.gob"
+#line 810 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1330 "mn-pop3-mailbox.c"
+#line 1339 "mn-pop3-mailbox.c"
 {
-#line 806 "mn-pop3-mailbox.gob"
+#line 815 "mn-pop3-mailbox.gob"
 	
     switch (result)
       {
@@ -1344,20 +1353,20 @@ mn_pop3_mailbox_custom_handler_cb (MNClientSession * session, MNClientSessionRes
       g_return_val_if_reached(0);
       }
   }}
-#line 1348 "mn-pop3-mailbox.c"
+#line 1357 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 822 "mn-pop3-mailbox.gob"
+#line 831 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_session_authenticate (MNClientSessionPrivate * priv)
-#line 1354 "mn-pop3-mailbox.c"
+#line 1363 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::session_authenticate"
-#line 822 "mn-pop3-mailbox.gob"
+#line 831 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1359 "mn-pop3-mailbox.c"
+#line 1368 "mn-pop3-mailbox.c"
 {
-#line 824 "mn-pop3-mailbox.gob"
+#line 833 "mn-pop3-mailbox.gob"
 	
     if (priv->mailbox->uri->authmech)
       {
@@ -1393,20 +1402,20 @@ mn_pop3_mailbox_session_authenticate (MNClientSessionPrivate * priv)
 	  return STATE_USER;
       }
   }}
-#line 1397 "mn-pop3-mailbox.c"
+#line 1406 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 860 "mn-pop3-mailbox.gob"
+#line 869 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv, gboolean tried_apop)
-#line 1403 "mn-pop3-mailbox.c"
+#line 1412 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::session_authenticate_fallback"
-#line 860 "mn-pop3-mailbox.gob"
+#line 869 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1408 "mn-pop3-mailbox.c"
+#line 1417 "mn-pop3-mailbox.c"
 {
-#line 863 "mn-pop3-mailbox.gob"
+#line 872 "mn-pop3-mailbox.gob"
 	
     if (! priv->mailbox->uri->authmech)
       {
@@ -1425,20 +1434,20 @@ mn_pop3_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv, gb
     priv->authentication_failed = TRUE;
     return mn_client_session_error(priv->session, _("authentication failed"));
   }}
-#line 1429 "mn-pop3-mailbox.c"
+#line 1438 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 882 "mn-pop3-mailbox.gob"
+#line 891 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_session_authenticated (MNClientSessionPrivate * priv)
-#line 1435 "mn-pop3-mailbox.c"
+#line 1444 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::session_authenticated"
-#line 882 "mn-pop3-mailbox.gob"
+#line 891 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1440 "mn-pop3-mailbox.c"
+#line 1449 "mn-pop3-mailbox.c"
 {
-#line 884 "mn-pop3-mailbox.gob"
+#line 893 "mn-pop3-mailbox.gob"
 	
     priv->authenticated = TRUE;
     if (priv->self->_priv->login_delay)
@@ -1450,20 +1459,20 @@ mn_pop3_mailbox_session_authenticated (MNClientSessionPrivate * priv)
       }
     return priv->login_delay_user ? STATE_CAPA : self_session_check_mail(priv);
   }}
-#line 1454 "mn-pop3-mailbox.c"
+#line 1463 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 896 "mn-pop3-mailbox.gob"
+#line 905 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_session_check_mail (MNClientSessionPrivate * priv)
-#line 1460 "mn-pop3-mailbox.c"
+#line 1469 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::session_check_mail"
-#line 896 "mn-pop3-mailbox.gob"
+#line 905 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1465 "mn-pop3-mailbox.c"
+#line 1474 "mn-pop3-mailbox.c"
 {
-#line 898 "mn-pop3-mailbox.gob"
+#line 907 "mn-pop3-mailbox.gob"
 	
 #ifdef WITH_MIME
     return STATE_LIST;
@@ -1471,44 +1480,44 @@ mn_pop3_mailbox_session_check_mail (MNClientSessionPrivate * priv)
     return STATE_STAT;
 #endif
   }}
-#line 1475 "mn-pop3-mailbox.c"
+#line 1484 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 906 "mn-pop3-mailbox.gob"
+#line 915 "mn-pop3-mailbox.gob"
 static void 
 mn_pop3_mailbox_session_set_error_from_arguments (MNClientSessionPrivate * priv, MNClientSessionResponse * response)
-#line 1481 "mn-pop3-mailbox.c"
+#line 1490 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::session_set_error_from_arguments"
-#line 906 "mn-pop3-mailbox.gob"
+#line 915 "mn-pop3-mailbox.gob"
 	g_return_if_fail (priv != NULL);
-#line 906 "mn-pop3-mailbox.gob"
+#line 915 "mn-pop3-mailbox.gob"
 	g_return_if_fail (response != NULL);
-#line 1488 "mn-pop3-mailbox.c"
+#line 1497 "mn-pop3-mailbox.c"
 {
-#line 909 "mn-pop3-mailbox.gob"
+#line 918 "mn-pop3-mailbox.gob"
 	
     if (response->arguments)
       mn_client_session_error(priv->session, "\"%s\"", response->arguments);
     else
       mn_client_session_error(priv->session, _("unknown server error"));
   }}
-#line 1497 "mn-pop3-mailbox.c"
+#line 1506 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 916 "mn-pop3-mailbox.gob"
+#line 925 "mn-pop3-mailbox.gob"
 static void 
 mn_pop3_mailbox_handle_list_response (MNClientSessionPrivate * priv, MNClientSessionResponse * response)
-#line 1503 "mn-pop3-mailbox.c"
+#line 1512 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_list_response"
-#line 916 "mn-pop3-mailbox.gob"
+#line 925 "mn-pop3-mailbox.gob"
 	g_return_if_fail (priv != NULL);
-#line 916 "mn-pop3-mailbox.gob"
+#line 925 "mn-pop3-mailbox.gob"
 	g_return_if_fail (response != NULL);
-#line 1510 "mn-pop3-mailbox.c"
+#line 1519 "mn-pop3-mailbox.c"
 {
-#line 919 "mn-pop3-mailbox.gob"
+#line 928 "mn-pop3-mailbox.gob"
 	
     switch (response->type)
       {
@@ -1524,5 +1533,5 @@ mn_pop3_mailbox_handle_list_response (MNClientSessionPrivate * priv, MNClientSes
 	break;
       }
   }}
-#line 1528 "mn-pop3-mailbox.c"
+#line 1537 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-pop3-mailbox.gob b/src/mn-pop3-mailbox.gob
@@ -323,10 +323,17 @@ class MN:POP3:Mailbox from MN:Authenticated:Mailbox
 						    "pop",
 						    priv->auth_mechanisms,
 						    priv->mailbox->uri->authmech,
-						    &priv->sasl_mechanism))
+						    &priv->sasl_mechanism,
+					  /* [1] */ TRUE))
       return mn_client_session_write(session, "AUTH %s", priv->sasl_mechanism);
     else
       return self_session_authenticate_fallback(priv, FALSE);
+
+    /*
+     * [1] http://www.ietf.org/internet-drafts/draft-siemborski-rfc1734bis-03.txt
+     * section 4 specifies that POP3 supports the initial client
+     * response feature of SASL.
+     */
 #else
     g_return_val_if_reached(0);
 #endif /* WITH_SASL */
@@ -660,7 +667,9 @@ class MN:POP3:Mailbox from MN:Authenticated:Mailbox
       self_notice_cb,
       self_response_new_cb,
       self_response_free_cb,
-      self_custom_handler_cb
+      self_custom_handler_cb,
+      NULL,			/* pre_read */
+      NULL			/* post_read */
     };
     MNClientSessionPrivate priv;
     gboolean status;
diff --git a/src/mn-pop3-mailbox.h b/src/mn-pop3-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-properties.c b/src/mn-properties.c
@@ -36,10 +36,14 @@ typedef struct
   /* general tab */
   GtkWidget		*autostart_check;
   GtkWidget		*blink_check;
+  GtkWidget		*command_mail_reader_check;
+  GtkWidget		*command_mail_reader_entry;
   GtkWidget		*command_new_mail_check;
   GtkWidget		*command_new_mail_entry;
   GtkWidget		*command_mail_read_check;
   GtkWidget		*command_mail_read_entry;
+  GtkWidget		*action_summary_radio;
+  GtkWidget		*action_mail_reader_radio;
 
   /* mailboxes tab */
   GtkWidget		*delay_label;
@@ -58,6 +62,7 @@ typedef struct
   GtkWidget		*summary_minutes_label;
   GtkWidget		*summary_seconds_spin;
   GtkWidget		*summary_seconds_label;
+  GtkWidget		*summary_only_recent_check;
   GtkWidget		*summary_position_label;
   GtkWidget		*summary_position_combo;
   GtkWidget		*summary_horizontal_offset_label;
@@ -113,10 +118,14 @@ mn_properties_display (void)
 		      "notebook", &properties.notebook,
 		      "autostart_check", &properties.autostart_check,
 		      "blink_check", &properties.blink_check,
+		      "command_mail_reader_check", &properties.command_mail_reader_check,
+		      "command_mail_reader_entry", &properties.command_mail_reader_entry,
 		      "command_new_mail_check", &properties.command_new_mail_check,
 		      "command_new_mail_entry", &properties.command_new_mail_entry,
 		      "command_mail_read_check", &properties.command_mail_read_check,
 		      "command_mail_read_entry", &properties.command_mail_read_entry,
+		      "action_summary_radio", &properties.action_summary_radio,
+		      "action_mail_reader_radio", &properties.action_mail_reader_radio,
 		      "delay_label", &properties.delay_label,
 		      "minutes_spin", &properties.minutes_spin,
 		      "seconds_spin", &properties.seconds_spin,
@@ -130,6 +139,7 @@ mn_properties_display (void)
 		      "summary_minutes_label", &properties.summary_minutes_label,
 		      "summary_seconds_spin", &properties.summary_seconds_spin,
 		      "summary_seconds_label", &properties.summary_seconds_label,
+		      "summary_only_recent_check", &properties.summary_only_recent_check,
 		      "summary_position_label", &properties.summary_position_label,
 		      "summary_position_combo", &properties.summary_position_combo,
 		      "summary_horizontal_offset_label", &properties.summary_horizontal_offset_label,
@@ -152,6 +162,7 @@ mn_properties_display (void)
   mn_setup_dnd(properties.scrolled);
 
   size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
+  gtk_size_group_add_widget(size_group, properties.command_mail_reader_check);
   gtk_size_group_add_widget(size_group, properties.command_new_mail_check);
   gtk_size_group_add_widget(size_group, properties.command_mail_read_check);
   g_object_unref(size_group);
@@ -183,6 +194,8 @@ mn_properties_display (void)
   
   mn_conf_link(properties.dialog, MN_CONF_PROPERTIES_DIALOG,
 	       properties.blink_check, MN_CONF_BLINK_ON_ERRORS,
+	       properties.command_mail_reader_check, MN_CONF_COMMANDS_MAIL_READER_ENABLED,
+	       properties.command_mail_reader_entry, MN_CONF_COMMANDS_MAIL_READER_COMMAND,
 	       properties.command_new_mail_check, MN_CONF_COMMANDS_NEW_MAIL_ENABLED,
 	       properties.command_new_mail_entry, MN_CONF_COMMANDS_NEW_MAIL_COMMAND,
 	       properties.command_mail_read_check, MN_CONF_COMMANDS_MAIL_READ_ENABLED,
@@ -193,9 +206,15 @@ mn_properties_display (void)
 	       properties.summary_autoclose_check, MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE,
 	       properties.summary_minutes_spin, MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_MINUTES,
 	       properties.summary_seconds_spin, MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_SECONDS,
+	       properties.summary_only_recent_check, MN_CONF_MAIL_SUMMARY_POPUP_ONLY_RECENT,
 	       properties.summary_horizontal_offset_spin, MN_CONF_MAIL_SUMMARY_POPUP_HORIZONTAL_OFFSET,
 	       properties.summary_vertical_offset_spin, MN_CONF_MAIL_SUMMARY_POPUP_VERTICAL_OFFSET,
 	       NULL);
+  mn_conf_link_radio_group_to_enum(MN_TYPE_ACTION,
+				   MN_CONF_DOUBLE_CLICK_ACTION,
+				   properties.action_summary_radio, MN_ACTION_DISPLAY_MAIL_SUMMARY,
+				   properties.action_mail_reader_radio, MN_ACTION_LAUNCH_MAIL_READER,
+				   NULL);
   mn_conf_link_combo_box_to_string(GTK_COMBO_BOX(properties.summary_position_combo),
 				   POSITION_COLUMN_NICK,
 				   MN_CONF_MAIL_SUMMARY_POPUP_POSITION);
@@ -264,20 +283,28 @@ mn_properties_update_selected_label (void)
 static void
 mn_properties_update_sensitivity (void)
 {
+  gboolean command_mail_reader_enabled;
   gboolean command_new_mail_enabled;
   gboolean command_mail_read_enabled;
+  char *mail_reader;
   gboolean must_poll;
   GtkTreeSelection *selection;
   gboolean has_selection;
   gboolean summary_enabled = FALSE;
   gboolean summary_autoclose_enabled = FALSE;
 
+  command_mail_reader_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(properties.command_mail_reader_check));
   command_new_mail_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(properties.command_new_mail_check));
   command_mail_read_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(properties.command_mail_read_check));
 
+  gtk_widget_set_sensitive(properties.command_mail_reader_entry, command_mail_reader_enabled);
   gtk_widget_set_sensitive(properties.command_new_mail_entry, command_new_mail_enabled);
   gtk_widget_set_sensitive(properties.command_mail_read_entry, command_mail_read_enabled);
 
+  mail_reader = eel_gconf_get_string(MN_CONF_COMMANDS_MAIL_READER_COMMAND);
+  gtk_widget_set_sensitive(properties.action_mail_reader_radio, command_mail_reader_enabled && mail_reader);
+  g_free(mail_reader);
+  
   must_poll = mn_mailboxes_get_must_poll(mn_shell->mailboxes);
   gtk_widget_set_sensitive(properties.minutes_spin, must_poll);
   gtk_widget_set_sensitive(properties.seconds_spin, must_poll);
@@ -296,6 +323,7 @@ mn_properties_update_sensitivity (void)
   gtk_widget_set_sensitive(properties.summary_minutes_label, summary_enabled && summary_autoclose_enabled);
   gtk_widget_set_sensitive(properties.summary_seconds_spin, summary_enabled && summary_autoclose_enabled);
   gtk_widget_set_sensitive(properties.summary_seconds_label, summary_enabled && summary_autoclose_enabled);
+  gtk_widget_set_sensitive(properties.summary_only_recent_check, summary_enabled);
   gtk_widget_set_sensitive(properties.summary_position_label, summary_enabled);
   gtk_widget_set_sensitive(properties.summary_position_combo, summary_enabled);
   gtk_widget_set_sensitive(properties.summary_horizontal_offset_label, summary_enabled);
@@ -330,6 +358,13 @@ mn_properties_toggled_h (GtkToggleButton *togglebutton, gpointer user_data)
 }
 
 void
+mn_properties_mail_reader_entry_changed_h (GtkEditable *editable,
+					   gpointer user_data)
+{
+  mn_properties_update_sensitivity();
+}
+
+void
 mn_properties_add_clicked_h (GtkButton *button, gpointer user_data)
 {
   mn_mailbox_view_activate_add(MN_MAILBOX_VIEW(properties.list));
diff --git a/src/mn-shell-private.h b/src/mn-shell-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #ifndef __MN_SHELL_PRIVATE_H__
 #define __MN_SHELL_PRIVATE_H__
@@ -16,11 +16,11 @@ extern "C" {
 
 #line 18 "mn-shell-private.h"
 struct _MNShellPrivate {
-#line 47 "mn-shell.gob"
-	MNMailIcon * icon;
 #line 48 "mn-shell.gob"
-	GtkWidget * about;
+	MNMailIcon * icon;
 #line 49 "mn-shell.gob"
+	GtkWidget * about;
+#line 50 "mn-shell.gob"
 	int n_new;
 #line 26 "mn-shell-private.h"
 };
diff --git a/src/mn-shell.c b/src/mn-shell.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.10) on Mon Oct 25 15:24:34 2004
+/* Generated by GOB (v2.0.11) on Sun Oct 31 18:41:22 2004
    (do not edit directly) */
 
 /* End world hunger, donate to the World Food Programme, http://www.wfp.org */
 
 #define GOB_VERSION_MAJOR 2
 #define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 10
+#define GOB_VERSION_PATCHLEVEL 11
 
 #define selfp (self->_priv)
 
@@ -35,12 +35,13 @@
 #include "mn-mailboxes.h"
 #include "mn-unsupported-mailbox.h"
 #include "mn-about-dialog.h"
+#include "mn-summary.h"
 #include "mn-summary-popup.h"
 #include "mn-summary-dialog.h"
 
   MNShell *mn_shell = NULL;
 
-#line 44 "mn-shell.c"
+#line 45 "mn-shell.c"
 /* self casting macros */
 #define SELF(x) MN_SHELL(x)
 #define SELF_CONST(x) MN_SHELL_CONST(x)
@@ -61,8 +62,10 @@ static void ___2_mn_shell_finalize (GObject * object) G_GNUC_UNUSED;
 static void mn_shell_mailboxes_messages_changed_h (MNMailboxes * mailboxes, gboolean has_new, gpointer user_data) G_GNUC_UNUSED;
 static void mn_shell_init_icon (MNShell * self) G_GNUC_UNUSED;
 static void mn_shell_notify_blink_on_errors_cb (GConfClient * client, guint cnxn_id, GConfEntry * entry, gpointer user_data) G_GNUC_UNUSED;
+static void mn_shell_notify_mail_reader_cb (GConfClient * client, guint cnxn_id, GConfEntry * entry, gpointer user_data) G_GNUC_UNUSED;
 static void mn_shell_icon_activate_h (MNMailIcon * icon, gpointer user_data) G_GNUC_UNUSED;
 static void mn_shell_icon_activate_summary_h (MNMailIcon * icon, gpointer user_data) G_GNUC_UNUSED;
+static void mn_shell_icon_activate_mail_reader_h (MNMailIcon * icon, gpointer user_data) G_GNUC_UNUSED;
 static void mn_shell_icon_activate_update_h (MNMailIcon * icon, gpointer user_data) G_GNUC_UNUSED;
 static void mn_shell_icon_activate_properties_h (MNMailIcon * icon, gpointer user_data) G_GNUC_UNUSED;
 static void mn_shell_icon_activate_help_h (MNMailIcon * icon, gpointer user_data) G_GNUC_UNUSED;
@@ -71,7 +74,9 @@ static void mn_shell_icon_activate_remove_h (MNMailIcon * icon, gpointer user_da
 static void mn_shell_icon_destroy_h (GtkObject * object, gpointer user_data) G_GNUC_UNUSED;
 static void mn_shell_update_sensitivity (MNShell * self) G_GNUC_UNUSED;
 static void mn_shell_update_icon (MNShell * self) G_GNUC_UNUSED;
-static void mn_shell_execute_command (const char * conf_key) G_GNUC_UNUSED;
+static void mn_shell_update_tooltip (MNShell * self) G_GNUC_UNUSED;
+static GtkWidget * mn_shell_tooltip_section_new (GtkVBox * vbox, const char * title) G_GNUC_UNUSED;
+static void mn_shell_tooltip_text_section_new (GtkVBox * vbox, const char * title, const char * text) G_GNUC_UNUSED;
 
 /* pointer to the class of our parent */
 static GObjectClass *parent_class = NULL;
@@ -80,8 +85,10 @@ static GObjectClass *parent_class = NULL;
 #define self_mailboxes_messages_changed_h mn_shell_mailboxes_messages_changed_h
 #define self_init_icon mn_shell_init_icon
 #define self_notify_blink_on_errors_cb mn_shell_notify_blink_on_errors_cb
+#define self_notify_mail_reader_cb mn_shell_notify_mail_reader_cb
 #define self_icon_activate_h mn_shell_icon_activate_h
 #define self_icon_activate_summary_h mn_shell_icon_activate_summary_h
+#define self_icon_activate_mail_reader_h mn_shell_icon_activate_mail_reader_h
 #define self_icon_activate_update_h mn_shell_icon_activate_update_h
 #define self_icon_activate_properties_h mn_shell_icon_activate_properties_h
 #define self_icon_activate_help_h mn_shell_icon_activate_help_h
@@ -90,7 +97,9 @@ static GObjectClass *parent_class = NULL;
 #define self_icon_destroy_h mn_shell_icon_destroy_h
 #define self_update_sensitivity mn_shell_update_sensitivity
 #define self_update_icon mn_shell_update_icon
-#define self_execute_command mn_shell_execute_command
+#define self_update_tooltip mn_shell_update_tooltip
+#define self_tooltip_section_new mn_shell_tooltip_section_new
+#define self_tooltip_text_section_new mn_shell_tooltip_text_section_new
 #define self_new mn_shell_new
 #define self_display_about mn_shell_display_about
 #define self_run_welcome mn_shell_run_welcome
@@ -145,9 +154,9 @@ ___dispose (GObject *obj_self)
 	MNShell *self G_GNUC_UNUSED = MN_SHELL (obj_self);
 	if (G_OBJECT_CLASS (parent_class)->dispose) \
 		(* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
-#line 46 "mn-shell.gob"
+#line 47 "mn-shell.gob"
 	if(self->mailboxes) { g_object_unref ((gpointer) self->mailboxes); self->mailboxes = NULL; }
-#line 151 "mn-shell.c"
+#line 160 "mn-shell.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -158,9 +167,9 @@ ___finalize(GObject *obj_self)
 #define __GOB_FUNCTION__ "MN:Shell::finalize"
 	MNShell *self G_GNUC_UNUSED = MN_SHELL (obj_self);
 	gpointer priv G_GNUC_UNUSED = self->_priv;
-#line 72 "mn-shell.gob"
+#line 78 "mn-shell.gob"
 	___2_mn_shell_finalize(obj_self);
-#line 164 "mn-shell.c"
+#line 173 "mn-shell.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -174,113 +183,119 @@ mn_shell_class_init (MNShellClass * c G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (G_TYPE_OBJECT);
 
-#line 72 "mn-shell.gob"
+#line 78 "mn-shell.gob"
 	g_object_class->finalize = ___finalize;
-#line 180 "mn-shell.c"
+#line 189 "mn-shell.c"
 	g_object_class->dispose = ___dispose;
 }
 #undef __GOB_FUNCTION__
-#line 51 "mn-shell.gob"
+#line 52 "mn-shell.gob"
 static void 
 mn_shell_init (MNShell * self G_GNUC_UNUSED)
-#line 187 "mn-shell.c"
+#line 196 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::init"
 	self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,TYPE_SELF,MNShellPrivate);
-#line 46 "mn-shell.gob"
+#line 47 "mn-shell.gob"
 	self->mailboxes = mn_mailboxes_new();
-#line 193 "mn-shell.c"
+#line 202 "mn-shell.c"
  {
-#line 52 "mn-shell.gob"
+#line 53 "mn-shell.gob"
 
     g_return_if_fail(mn_shell == NULL);
     mn_shell = self;
     eel_add_weak_pointer(&mn_shell);
 
     self_init_icon(self);
+
     eel_gconf_notification_add(MN_CONF_BLINK_ON_ERRORS, self_notify_blink_on_errors_cb, self);
+    eel_gconf_notification_add(MN_CONF_COMMANDS_MAIL_READER_NAMESPACE, self_notify_mail_reader_cb, self);
 
     g_object_connect(self->mailboxes,
 		     "signal::messages-changed", self_mailboxes_messages_changed_h, self,
 		     "swapped-signal::notify::must-poll", self_update_sensitivity, self,
+		     "swapped-signal::list-changed", self_update_tooltip, self,
 		     "swapped-signal::list-changed", self_update_icon, self,
+		     "swapped-signal::has-new-changed", self_update_tooltip, self,
 		     "swapped-signal::has-new-changed", self_update_icon, self,
-		     "swapped-signal::messages-changed", self_update_icon, self,
+		     "swapped-signal::error-changed", self_update_tooltip, self,
 		     "swapped-signal::error-changed", self_update_icon, self,
+		     "swapped-signal::messages-changed", self_update_tooltip, self,
 		     NULL);
 
     mn_summary_popup_init();
   
-#line 215 "mn-shell.c"
+#line 229 "mn-shell.c"
  }
 }
 #undef __GOB_FUNCTION__
 
 
 
-#line 72 "mn-shell.gob"
+#line 78 "mn-shell.gob"
 static void 
 ___2_mn_shell_finalize (GObject * object G_GNUC_UNUSED)
-#line 225 "mn-shell.c"
+#line 239 "mn-shell.c"
 #define PARENT_HANDLER(___object) \
 	{ if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(___object); }
 {
 #define __GOB_FUNCTION__ "MN:Shell::finalize"
 {
-#line 74 "mn-shell.gob"
+#line 80 "mn-shell.gob"
 	
     gtk_main_quit();
     PARENT_HANDLER(object);
   }}
-#line 237 "mn-shell.c"
+#line 251 "mn-shell.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 79 "mn-shell.gob"
+#line 85 "mn-shell.gob"
 static void 
 mn_shell_mailboxes_messages_changed_h (MNMailboxes * mailboxes, gboolean has_new, gpointer user_data)
-#line 244 "mn-shell.c"
+#line 258 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::mailboxes_messages_changed_h"
-#line 79 "mn-shell.gob"
+#line 85 "mn-shell.gob"
 	g_return_if_fail (mailboxes != NULL);
-#line 79 "mn-shell.gob"
+#line 85 "mn-shell.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (mailboxes));
-#line 79 "mn-shell.gob"
+#line 85 "mn-shell.gob"
 	g_return_if_fail (user_data != NULL);
-#line 253 "mn-shell.c"
+#line 267 "mn-shell.c"
 {
-#line 83 "mn-shell.gob"
+#line 89 "mn-shell.gob"
 	
     if (has_new)
       {
 	gnome_triggers_do(_("You have new mail."), NULL, "mail-notification", "new-mail", NULL);
 	if (eel_gconf_get_boolean(MN_CONF_COMMANDS_NEW_MAIL_ENABLED))
-	  self_execute_command(MN_CONF_COMMANDS_NEW_MAIL_COMMAND);
+	  mn_execute_command(MN_CONF_COMMANDS_NEW_MAIL_COMMAND);
       }
   }}
-#line 264 "mn-shell.c"
+#line 278 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 92 "mn-shell.gob"
+#line 98 "mn-shell.gob"
 static void 
 mn_shell_init_icon (MNShell * self)
-#line 270 "mn-shell.c"
+#line 284 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::init_icon"
-#line 92 "mn-shell.gob"
+#line 98 "mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 92 "mn-shell.gob"
+#line 98 "mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 277 "mn-shell.c"
+#line 291 "mn-shell.c"
 {
-#line 94 "mn-shell.gob"
+#line 100 "mn-shell.gob"
 	
     selfp->icon = MN_MAIL_ICON(mn_mail_icon_new());
 
     g_object_connect(selfp->icon,
 		     "signal::activate", self_icon_activate_h, self,
+		     "signal::activate-mail-reader", self_icon_activate_mail_reader_h, self,
 		     "signal::activate-summary", self_icon_activate_summary_h, self,
 		     "signal::activate-update", self_icon_activate_update_h, self,
 		     "signal::activate-properties", self_icon_activate_properties_h, self,
@@ -293,20 +308,20 @@ mn_shell_init_icon (MNShell * self)
     self_update_sensitivity(self);
     self_update_icon(self);
   }}
-#line 297 "mn-shell.c"
+#line 312 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 112 "mn-shell.gob"
+#line 119 "mn-shell.gob"
 static void 
 mn_shell_notify_blink_on_errors_cb (GConfClient * client, guint cnxn_id, GConfEntry * entry, gpointer user_data)
-#line 303 "mn-shell.c"
+#line 318 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::notify_blink_on_errors_cb"
-#line 112 "mn-shell.gob"
+#line 119 "mn-shell.gob"
 	g_return_if_fail (user_data != NULL);
-#line 308 "mn-shell.c"
+#line 323 "mn-shell.c"
 {
-#line 117 "mn-shell.gob"
+#line 124 "mn-shell.gob"
 	
     Self *self = user_data;
 
@@ -314,228 +329,349 @@ mn_shell_notify_blink_on_errors_cb (GConfClient * client, guint cnxn_id, GConfEn
     self_update_icon(self);
     GDK_THREADS_LEAVE();
   }}
-#line 318 "mn-shell.c"
+#line 333 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 125 "mn-shell.gob"
+#line 132 "mn-shell.gob"
+static void 
+mn_shell_notify_mail_reader_cb (GConfClient * client, guint cnxn_id, GConfEntry * entry, gpointer user_data)
+#line 339 "mn-shell.c"
+{
+#define __GOB_FUNCTION__ "MN:Shell::notify_mail_reader_cb"
+#line 132 "mn-shell.gob"
+	g_return_if_fail (user_data != NULL);
+#line 344 "mn-shell.c"
+{
+#line 137 "mn-shell.gob"
+	
+    Self *self = user_data;
+
+    GDK_THREADS_ENTER();
+    self_update_sensitivity(self);
+    GDK_THREADS_LEAVE();
+  }}
+#line 354 "mn-shell.c"
+#undef __GOB_FUNCTION__
+
+#line 145 "mn-shell.gob"
 static void 
 mn_shell_icon_activate_h (MNMailIcon * icon, gpointer user_data)
-#line 324 "mn-shell.c"
+#line 360 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::icon_activate_h"
-#line 125 "mn-shell.gob"
+#line 145 "mn-shell.gob"
 	g_return_if_fail (icon != NULL);
-#line 125 "mn-shell.gob"
+#line 145 "mn-shell.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (icon));
-#line 125 "mn-shell.gob"
+#line 145 "mn-shell.gob"
 	g_return_if_fail (user_data != NULL);
-#line 333 "mn-shell.c"
+#line 369 "mn-shell.c"
 {
-#line 128 "mn-shell.gob"
+#line 148 "mn-shell.gob"
 	
-    mn_summary_dialog_display();
+    MNAction action;
+
+    action = mn_conf_get_enum_value(MN_TYPE_ACTION, MN_CONF_DOUBLE_CLICK_ACTION);
+
+    switch (action)
+      {
+      case MN_ACTION_DISPLAY_MAIL_SUMMARY:
+	mn_summary_dialog_display();
+	break;
+
+      case MN_ACTION_LAUNCH_MAIL_READER:
+	if (eel_gconf_get_boolean(MN_CONF_COMMANDS_MAIL_READER_ENABLED))
+	  mn_execute_command(MN_CONF_COMMANDS_MAIL_READER_COMMAND);
+	break;
+
+      default:
+	g_return_if_reached();
+      }
   }}
-#line 339 "mn-shell.c"
+#line 392 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 132 "mn-shell.gob"
+#line 169 "mn-shell.gob"
 static void 
 mn_shell_icon_activate_summary_h (MNMailIcon * icon, gpointer user_data)
-#line 345 "mn-shell.c"
+#line 398 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::icon_activate_summary_h"
-#line 132 "mn-shell.gob"
+#line 169 "mn-shell.gob"
 	g_return_if_fail (icon != NULL);
-#line 132 "mn-shell.gob"
+#line 169 "mn-shell.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (icon));
-#line 132 "mn-shell.gob"
+#line 169 "mn-shell.gob"
 	g_return_if_fail (user_data != NULL);
-#line 354 "mn-shell.c"
+#line 407 "mn-shell.c"
 {
-#line 135 "mn-shell.gob"
+#line 172 "mn-shell.gob"
 	
     mn_summary_dialog_display();
   }}
-#line 360 "mn-shell.c"
+#line 413 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 139 "mn-shell.gob"
+#line 176 "mn-shell.gob"
+static void 
+mn_shell_icon_activate_mail_reader_h (MNMailIcon * icon, gpointer user_data)
+#line 419 "mn-shell.c"
+{
+#define __GOB_FUNCTION__ "MN:Shell::icon_activate_mail_reader_h"
+#line 176 "mn-shell.gob"
+	g_return_if_fail (icon != NULL);
+#line 176 "mn-shell.gob"
+	g_return_if_fail (MN_IS_MAIL_ICON (icon));
+#line 176 "mn-shell.gob"
+	g_return_if_fail (user_data != NULL);
+#line 428 "mn-shell.c"
+{
+#line 179 "mn-shell.gob"
+	
+    if (eel_gconf_get_boolean(MN_CONF_COMMANDS_MAIL_READER_ENABLED))
+      mn_execute_command(MN_CONF_COMMANDS_MAIL_READER_COMMAND);
+  }}
+#line 435 "mn-shell.c"
+#undef __GOB_FUNCTION__
+
+#line 184 "mn-shell.gob"
 static void 
 mn_shell_icon_activate_update_h (MNMailIcon * icon, gpointer user_data)
-#line 366 "mn-shell.c"
+#line 441 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::icon_activate_update_h"
-#line 139 "mn-shell.gob"
+#line 184 "mn-shell.gob"
 	g_return_if_fail (icon != NULL);
-#line 139 "mn-shell.gob"
+#line 184 "mn-shell.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (icon));
-#line 139 "mn-shell.gob"
+#line 184 "mn-shell.gob"
 	g_return_if_fail (user_data != NULL);
-#line 375 "mn-shell.c"
+#line 450 "mn-shell.c"
 {
-#line 142 "mn-shell.gob"
+#line 187 "mn-shell.gob"
 	
     Self *self = user_data;
     mn_mailboxes_check(self->mailboxes);
   }}
-#line 382 "mn-shell.c"
+#line 457 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 147 "mn-shell.gob"
+#line 192 "mn-shell.gob"
 static void 
 mn_shell_icon_activate_properties_h (MNMailIcon * icon, gpointer user_data)
-#line 388 "mn-shell.c"
+#line 463 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::icon_activate_properties_h"
-#line 147 "mn-shell.gob"
+#line 192 "mn-shell.gob"
 	g_return_if_fail (icon != NULL);
-#line 147 "mn-shell.gob"
+#line 192 "mn-shell.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (icon));
-#line 147 "mn-shell.gob"
+#line 192 "mn-shell.gob"
 	g_return_if_fail (user_data != NULL);
-#line 397 "mn-shell.c"
+#line 472 "mn-shell.c"
 {
-#line 150 "mn-shell.gob"
+#line 195 "mn-shell.gob"
 	
     mn_properties_display();
   }}
-#line 403 "mn-shell.c"
+#line 478 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 154 "mn-shell.gob"
+#line 199 "mn-shell.gob"
 static void 
 mn_shell_icon_activate_help_h (MNMailIcon * icon, gpointer user_data)
-#line 409 "mn-shell.c"
+#line 484 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::icon_activate_help_h"
-#line 154 "mn-shell.gob"
+#line 199 "mn-shell.gob"
 	g_return_if_fail (icon != NULL);
-#line 154 "mn-shell.gob"
+#line 199 "mn-shell.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (icon));
-#line 154 "mn-shell.gob"
+#line 199 "mn-shell.gob"
 	g_return_if_fail (user_data != NULL);
-#line 418 "mn-shell.c"
+#line 493 "mn-shell.c"
 {
-#line 157 "mn-shell.gob"
+#line 202 "mn-shell.gob"
 	
     mn_display_help(NULL, NULL);
   }}
-#line 424 "mn-shell.c"
+#line 499 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 161 "mn-shell.gob"
+#line 206 "mn-shell.gob"
 static void 
 mn_shell_icon_activate_about_h (MNMailIcon * icon, gpointer user_data)
-#line 430 "mn-shell.c"
+#line 505 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::icon_activate_about_h"
-#line 161 "mn-shell.gob"
+#line 206 "mn-shell.gob"
 	g_return_if_fail (icon != NULL);
-#line 161 "mn-shell.gob"
+#line 206 "mn-shell.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (icon));
-#line 161 "mn-shell.gob"
+#line 206 "mn-shell.gob"
 	g_return_if_fail (user_data != NULL);
-#line 439 "mn-shell.c"
+#line 514 "mn-shell.c"
 {
-#line 164 "mn-shell.gob"
+#line 209 "mn-shell.gob"
 	
     Self *self = user_data;
     self_display_about(self);
   }}
-#line 446 "mn-shell.c"
+#line 521 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 169 "mn-shell.gob"
+#line 214 "mn-shell.gob"
 static void 
 mn_shell_icon_activate_remove_h (MNMailIcon * icon, gpointer user_data)
-#line 452 "mn-shell.c"
+#line 527 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::icon_activate_remove_h"
-#line 169 "mn-shell.gob"
+#line 214 "mn-shell.gob"
 	g_return_if_fail (icon != NULL);
-#line 169 "mn-shell.gob"
+#line 214 "mn-shell.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (icon));
-#line 169 "mn-shell.gob"
+#line 214 "mn-shell.gob"
 	g_return_if_fail (user_data != NULL);
-#line 461 "mn-shell.c"
+#line 536 "mn-shell.c"
 {
-#line 172 "mn-shell.gob"
+#line 217 "mn-shell.gob"
 	
     Self *self = user_data;
     g_object_unref(self);
   }}
-#line 468 "mn-shell.c"
+#line 543 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 177 "mn-shell.gob"
+#line 222 "mn-shell.gob"
 static void 
 mn_shell_icon_destroy_h (GtkObject * object, gpointer user_data)
-#line 474 "mn-shell.c"
+#line 549 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::icon_destroy_h"
-#line 177 "mn-shell.gob"
+#line 222 "mn-shell.gob"
 	g_return_if_fail (object != NULL);
-#line 177 "mn-shell.gob"
+#line 222 "mn-shell.gob"
 	g_return_if_fail (GTK_IS_OBJECT (object));
-#line 177 "mn-shell.gob"
+#line 222 "mn-shell.gob"
 	g_return_if_fail (user_data != NULL);
-#line 483 "mn-shell.c"
+#line 558 "mn-shell.c"
 {
-#line 180 "mn-shell.gob"
+#line 225 "mn-shell.gob"
 	
     Self *self = user_data;
 
     /* The Notification Area applet has been terminated. Recreate the icon. */
     self_init_icon(self);
   }}
-#line 492 "mn-shell.c"
+#line 567 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 187 "mn-shell.gob"
+#line 232 "mn-shell.gob"
 static void 
 mn_shell_update_sensitivity (MNShell * self)
-#line 498 "mn-shell.c"
+#line 573 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::update_sensitivity"
-#line 187 "mn-shell.gob"
+#line 232 "mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 187 "mn-shell.gob"
+#line 232 "mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 505 "mn-shell.c"
+#line 580 "mn-shell.c"
 {
-#line 189 "mn-shell.gob"
+#line 234 "mn-shell.gob"
 	
+    gboolean mail_reader_sensitive = FALSE;
+
+    if (eel_gconf_get_boolean(MN_CONF_COMMANDS_MAIL_READER_ENABLED))
+      {
+	char *mail_reader;
+
+	mail_reader = eel_gconf_get_string(MN_CONF_COMMANDS_MAIL_READER_COMMAND);
+	if (mail_reader)
+	  {
+	    mail_reader_sensitive = TRUE;
+	    g_free(mail_reader);
+	  }
+      }
+    
+    gtk_widget_set_sensitive(selfp->icon->mail_reader_item, mail_reader_sensitive);
     gtk_widget_set_sensitive(selfp->icon->update_item, mn_mailboxes_get_must_poll(self->mailboxes));
   }}
-#line 511 "mn-shell.c"
+#line 601 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 193 "mn-shell.gob"
+#line 253 "mn-shell.gob"
 static void 
 mn_shell_update_icon (MNShell * self)
-#line 517 "mn-shell.c"
+#line 607 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::update_icon"
-#line 193 "mn-shell.gob"
+#line 253 "mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 193 "mn-shell.gob"
+#line 253 "mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 524 "mn-shell.c"
+#line 614 "mn-shell.c"
 {
-#line 195 "mn-shell.gob"
+#line 255 "mn-shell.gob"
 	
     GSList *mailboxes;
-    gboolean show = FALSE;
+    GSList *l;
+    int n_new = 0;
     gboolean blink = FALSE;
-    GString *tooltip = NULL;
+
+    mailboxes = mn_mailboxes_get(self->mailboxes);
+    MN_LIST_FOREACH(l, mailboxes)
+      {
+	MNMailbox *mailbox = l->data;
+
+	if (mn_mailbox_get_has_new(mailbox))
+	  n_new++;
+	if (! blink && (mn_mailbox_get_error(mailbox) || MN_IS_UNSUPPORTED_MAILBOX(mailbox)))
+	  blink = TRUE;
+      }
+
+    if (blink && ! eel_gconf_get_boolean(MN_CONF_BLINK_ON_ERRORS))
+      blink = FALSE;
+    
+    if (selfp->n_new > 0 && n_new == 0 && eel_gconf_get_boolean(MN_CONF_COMMANDS_MAIL_READ_ENABLED))
+      mn_execute_command(MN_CONF_COMMANDS_MAIL_READ_COMMAND);
+    selfp->n_new = n_new;
+    
+    if (n_new > 0 || blink)
+      {
+	mn_blinking_image_set_blinking(MN_BLINKING_IMAGE(selfp->icon->image), blink);
+	gtk_widget_show(GTK_WIDGET(selfp->icon));
+      }
+    else
+      gtk_widget_hide(GTK_WIDGET(selfp->icon));
+  }}
+#line 649 "mn-shell.c"
+#undef __GOB_FUNCTION__
+
+#line 288 "mn-shell.gob"
+static void 
+mn_shell_update_tooltip (MNShell * self)
+#line 655 "mn-shell.c"
+{
+#define __GOB_FUNCTION__ "MN:Shell::update_tooltip"
+#line 288 "mn-shell.gob"
+	g_return_if_fail (self != NULL);
+#line 288 "mn-shell.gob"
+	g_return_if_fail (MN_IS_SHELL (self));
+#line 662 "mn-shell.c"
+{
+#line 290 "mn-shell.gob"
+	
+    GtkWidget *vbox;
+    GSList *mailboxes;
+    GSList *messages;
+
+    vbox = gtk_vbox_new(FALSE, 18);
 
     mailboxes = mn_mailboxes_get(self->mailboxes);
     if (mailboxes)
       {
 	GSList *l;
-	int n_new = 0;
-	int n_error = 0;
-	int n_unsupported = 0;
 	GString *new_string;
 	GString *error_string;
 	GString *unsupported_string;
@@ -557,12 +693,10 @@ mn_shell_update_icon (MNShell * self)
 	      {
 		int n_messages;
 
-		n_new++;
-
 		if (*new_string->str)
 		  g_string_append_c(new_string, '\n');
-		g_string_append_printf(new_string, "    %s", name);
-
+		g_string_append(new_string, name);
+		
 		n_messages = g_slist_length(mn_mailbox_get_messages(mailbox));
 		if (n_messages > 0)
 		  g_string_append_printf(new_string, " (%i)", n_messages);
@@ -570,133 +704,155 @@ mn_shell_update_icon (MNShell * self)
 	    
 	    if (error)
 	      {
-		n_error++;
 		if (*error_string->str)
 		  g_string_append_c(error_string, '\n');
-		g_string_append_printf(error_string, "    %s (%s)", name, error);
+		g_string_append_printf(error_string, "%s: %s", name, error);
 	      }
 	  
 	    if (MN_IS_UNSUPPORTED_MAILBOX(mailbox))
 	      {
-		n_unsupported++;
 		if (*unsupported_string->str)
 		  g_string_append_c(unsupported_string, '\n');
-		g_string_append_printf(unsupported_string, "    %s (%s)", name, mn_unsupported_mailbox_get_reason(MN_UNSUPPORTED_MAILBOX(mailbox)));
+		g_string_append_printf(unsupported_string, "%s: %s", name, mn_unsupported_mailbox_get_reason(MN_UNSUPPORTED_MAILBOX(mailbox)));
 	      }
 	  }
 
-	if (n_new > 0)
-	  show = TRUE;
-	if ((n_error > 0 || n_unsupported > 0) && eel_gconf_get_boolean(MN_CONF_BLINK_ON_ERRORS))
-	  blink = TRUE;
-	
-	if (n_new > 0)
-	  g_string_prepend(new_string, ngettext("The following mailbox has new mail:\n",
-						"The following mailboxes have new mail:\n",
-						n_new));
-	else
-	  g_string_prepend(new_string, _("You have no new mail."));
-	
-	if (n_error > 0)
-	  g_string_prepend(error_string, ngettext("The following mailbox reported an error:\n",
-						  "The following mailboxes reported an error:\n",
-						  n_error));
-      
-	if (n_unsupported > 0)
-	  g_string_prepend(unsupported_string, ngettext("The following mailbox is unsupported:\n",
-							"The following mailboxes are unsupported:\n",
-							n_unsupported));
-	
-	tooltip = g_string_new(new_string->str);
-	if (n_error > 0)
-	  g_string_append_printf(tooltip, "\n\n%s", error_string->str);
-	if (n_unsupported > 0)
-	  g_string_append_printf(tooltip, "\n\n%s", unsupported_string->str);
-	
+	if (*new_string->str)
+	  self_tooltip_text_section_new(GTK_VBOX(vbox), _("Mailboxes Having New Mail"), new_string->str);
+	if (*error_string->str)
+	  self_tooltip_text_section_new(GTK_VBOX(vbox), _("Errors"), error_string->str);
+	if (*unsupported_string->str)
+	  self_tooltip_text_section_new(GTK_VBOX(vbox), _("Unsupported Mailboxes"), unsupported_string->str);
+
 	g_string_free(new_string, TRUE);
 	g_string_free(error_string, TRUE);
 	g_string_free(unsupported_string, TRUE);
-	
-	if (selfp->n_new > 0 && n_new == 0 && eel_gconf_get_boolean(MN_CONF_COMMANDS_MAIL_READ_ENABLED))
-	  self_execute_command(MN_CONF_COMMANDS_MAIL_READ_COMMAND);
-
-	selfp->n_new = n_new;
       }
-    
-    if (show || blink)
+
+    messages = mn_mailboxes_get_messages(mn_shell->mailboxes);
+    if (messages)
       {
-	mn_tooltips_set_tip(selfp->icon->tooltips, GTK_WIDGET(selfp->icon), tooltip->str);
-	mn_blinking_image_set_blinking(MN_BLINKING_IMAGE(selfp->icon->image), blink);
-	gtk_widget_show(GTK_WIDGET(selfp->icon));
+	GtkWidget *hbox;
+	GtkWidget *messages_vbox;
+	
+	hbox = self_tooltip_section_new(GTK_VBOX(vbox), _("Mail Summary"));
+
+	messages_vbox = gtk_vbox_new(FALSE, 0);
+	mn_summary_update(GTK_VBOX(messages_vbox), messages, FALSE);
+	mn_g_object_slist_free(messages);
+
+	gtk_box_pack_start(GTK_BOX(hbox), messages_vbox, TRUE, TRUE, 0);
       }
-    else
-      gtk_widget_hide(GTK_WIDGET(selfp->icon));
 
-    if (tooltip)
-      g_string_free(tooltip, TRUE);
+    gtk_widget_show_all(vbox);
+    mn_mail_icon_set_tip_widget(selfp->icon, vbox);
   }}
-#line 639 "mn-shell.c"
+#line 751 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 308 "mn-shell.gob"
-static void 
-mn_shell_execute_command (const char * conf_key)
-#line 645 "mn-shell.c"
-{
-#define __GOB_FUNCTION__ "MN:Shell::execute_command"
-#line 308 "mn-shell.gob"
-	g_return_if_fail (conf_key != NULL);
-#line 650 "mn-shell.c"
-{
-#line 310 "mn-shell.gob"
+#line 377 "mn-shell.gob"
+static GtkWidget * 
+mn_shell_tooltip_section_new (GtkVBox * vbox, const char * title)
+#line 757 "mn-shell.c"
+{
+#define __GOB_FUNCTION__ "MN:Shell::tooltip_section_new"
+#line 377 "mn-shell.gob"
+	g_return_val_if_fail (vbox != NULL, (GtkWidget * )0);
+#line 377 "mn-shell.gob"
+	g_return_val_if_fail (GTK_IS_VBOX (vbox), (GtkWidget * )0);
+#line 377 "mn-shell.gob"
+	g_return_val_if_fail (title != NULL, (GtkWidget * )0);
+#line 766 "mn-shell.c"
+{
+#line 380 "mn-shell.gob"
 	
-    char *command;
+    GtkWidget *child_vbox;
+    char *markup;
+    GtkWidget *label;
+    GtkWidget *hbox;
 
-    command = eel_gconf_get_string(conf_key);
-    if (command)
-      {
-	if (gnome_execute_shell(NULL, command) < 0)
-	  mn_error_dialog(NULL,
-			  NULL,
-			  NULL,
-			  _("A command error has occurred in Mail Notification"),
-			  _("Unable to execute \"%s\": %s."),
-			  command,
-			  g_strerror(errno));
+    child_vbox = gtk_vbox_new(FALSE, 6);
+
+    markup = g_markup_printf_escaped("<span weight=\"bold\">%s</span>", title);
+    label = gtk_label_new(markup);
+    g_free(markup);
+
+    gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
+    gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
+
+    gtk_box_pack_start(GTK_BOX(child_vbox), label, FALSE, FALSE, 0);
+
+    hbox = gtk_hbox_new(FALSE, 0);
+
+    label = gtk_label_new("    ");
+    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
+
+    gtk_box_pack_start(GTK_BOX(child_vbox), hbox, TRUE, TRUE, 0);
+    gtk_box_pack_start(GTK_BOX(vbox), child_vbox, TRUE, TRUE, 0);
+
+    return hbox;
+  }}
+#line 796 "mn-shell.c"
+#undef __GOB_FUNCTION__
+
+#line 408 "mn-shell.gob"
+static void 
+mn_shell_tooltip_text_section_new (GtkVBox * vbox, const char * title, const char * text)
+#line 802 "mn-shell.c"
+{
+#define __GOB_FUNCTION__ "MN:Shell::tooltip_text_section_new"
+#line 408 "mn-shell.gob"
+	g_return_if_fail (vbox != NULL);
+#line 408 "mn-shell.gob"
+	g_return_if_fail (GTK_IS_VBOX (vbox));
+#line 408 "mn-shell.gob"
+	g_return_if_fail (title != NULL);
+#line 408 "mn-shell.gob"
+	g_return_if_fail (text != NULL);
+#line 813 "mn-shell.c"
+{
+#line 412 "mn-shell.gob"
 	
-	g_free(command);
-      }
+    GtkWidget *hbox;
+    GtkWidget *label;
+
+    hbox = self_tooltip_section_new(GTK_VBOX(vbox), title);
+
+    label = gtk_label_new(text);
+    gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
+
+    gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0);
   }}
-#line 671 "mn-shell.c"
+#line 827 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 329 "mn-shell.gob"
+#line 424 "mn-shell.gob"
 MNShell * 
 mn_shell_new (void)
-#line 677 "mn-shell.c"
+#line 833 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::new"
 {
-#line 331 "mn-shell.gob"
+#line 426 "mn-shell.gob"
 	
-    return MN_SHELL(GET_NEW);
+    return GET_NEW;
   }}
-#line 685 "mn-shell.c"
+#line 841 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 335 "mn-shell.gob"
+#line 430 "mn-shell.gob"
 void 
 mn_shell_display_about (MNShell * self)
-#line 691 "mn-shell.c"
+#line 847 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::display_about"
-#line 335 "mn-shell.gob"
+#line 430 "mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 335 "mn-shell.gob"
+#line 430 "mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 698 "mn-shell.c"
+#line 854 "mn-shell.c"
 {
-#line 337 "mn-shell.gob"
+#line 432 "mn-shell.gob"
 	
     if (selfp->about)
       {
@@ -708,22 +864,22 @@ mn_shell_display_about (MNShell * self)
     eel_add_weak_pointer(&selfp->about);
     gtk_widget_show(GTK_WIDGET(selfp->about));
   }}
-#line 712 "mn-shell.c"
+#line 868 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 349 "mn-shell.gob"
+#line 444 "mn-shell.gob"
 void 
 mn_shell_run_welcome (MNShell * self)
-#line 718 "mn-shell.c"
+#line 874 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::run_welcome"
-#line 349 "mn-shell.gob"
+#line 444 "mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 349 "mn-shell.gob"
+#line 444 "mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 725 "mn-shell.c"
+#line 881 "mn-shell.c"
 {
-#line 351 "mn-shell.gob"
+#line 446 "mn-shell.gob"
 	
     GtkWidget *dialog;
     int response;
@@ -737,24 +893,24 @@ mn_shell_run_welcome (MNShell * self)
     if (response == GTK_RESPONSE_OK)
       mn_properties_display();
   }}
-#line 741 "mn-shell.c"
+#line 897 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 365 "mn-shell.gob"
+#line 460 "mn-shell.gob"
 void 
 mn_shell_report (MNShell * self, char ** report)
-#line 747 "mn-shell.c"
+#line 903 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::report"
-#line 365 "mn-shell.gob"
+#line 460 "mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 365 "mn-shell.gob"
+#line 460 "mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 365 "mn-shell.gob"
+#line 460 "mn-shell.gob"
 	g_return_if_fail (report != NULL);
-#line 756 "mn-shell.c"
+#line 912 "mn-shell.c"
 {
-#line 367 "mn-shell.gob"
+#line 462 "mn-shell.gob"
 	
     GString *string;
     GSList *l;
@@ -780,5 +936,5 @@ mn_shell_report (MNShell * self, char ** report)
     *report = string->str;
     g_string_free(string, FALSE);
   }}
-#line 784 "mn-shell.c"
+#line 940 "mn-shell.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-shell.gob b/src/mn-shell.gob
@@ -35,6 +35,7 @@ requires 2.0.10
 #include "mn-mailboxes.h"
 #include "mn-unsupported-mailbox.h"
 #include "mn-about-dialog.h"
+#include "mn-summary.h"
 #include "mn-summary-popup.h"
 #include "mn-summary-dialog.h"
 
@@ -55,15 +56,20 @@ class MN:Shell from G:Object
     eel_add_weak_pointer(&mn_shell);
 
     self_init_icon(self);
+
     eel_gconf_notification_add(MN_CONF_BLINK_ON_ERRORS, self_notify_blink_on_errors_cb, self);
+    eel_gconf_notification_add(MN_CONF_COMMANDS_MAIL_READER_NAMESPACE, self_notify_mail_reader_cb, self);
 
     g_object_connect(self->mailboxes,
 		     "signal::messages-changed", self_mailboxes_messages_changed_h, self,
 		     "swapped-signal::notify::must-poll", self_update_sensitivity, self,
+		     "swapped-signal::list-changed", self_update_tooltip, self,
 		     "swapped-signal::list-changed", self_update_icon, self,
+		     "swapped-signal::has-new-changed", self_update_tooltip, self,
 		     "swapped-signal::has-new-changed", self_update_icon, self,
-		     "swapped-signal::messages-changed", self_update_icon, self,
+		     "swapped-signal::error-changed", self_update_tooltip, self,
 		     "swapped-signal::error-changed", self_update_icon, self,
+		     "swapped-signal::messages-changed", self_update_tooltip, self,
 		     NULL);
 
     mn_summary_popup_init();
@@ -85,7 +91,7 @@ class MN:Shell from G:Object
       {
 	gnome_triggers_do(_("You have new mail."), NULL, "mail-notification", "new-mail", NULL);
 	if (eel_gconf_get_boolean(MN_CONF_COMMANDS_NEW_MAIL_ENABLED))
-	  self_execute_command(MN_CONF_COMMANDS_NEW_MAIL_COMMAND);
+	  mn_execute_command(MN_CONF_COMMANDS_NEW_MAIL_COMMAND);
       }
   }
   
@@ -96,6 +102,7 @@ class MN:Shell from G:Object
 
     g_object_connect(selfp->icon,
 		     "signal::activate", self_icon_activate_h, self,
+		     "signal::activate-mail-reader", self_icon_activate_mail_reader_h, self,
 		     "signal::activate-summary", self_icon_activate_summary_h, self,
 		     "signal::activate-update", self_icon_activate_update_h, self,
 		     "signal::activate-properties", self_icon_activate_properties_h, self,
@@ -123,10 +130,40 @@ class MN:Shell from G:Object
   }
   
   private void
+    notify_mail_reader_cb (GConfClient *client,
+			   guint cnxn_id,
+			   GConfEntry *entry,
+			   gpointer user_data (check null))
+  {
+    Self *self = user_data;
+
+    GDK_THREADS_ENTER();
+    self_update_sensitivity(self);
+    GDK_THREADS_LEAVE();
+  }
+  
+  private void
     icon_activate_h (MN:Mail:Icon *icon (check null type),
 		     gpointer user_data (check null))
   {
-    mn_summary_dialog_display();
+    MNAction action;
+
+    action = mn_conf_get_enum_value(MN_TYPE_ACTION, MN_CONF_DOUBLE_CLICK_ACTION);
+
+    switch (action)
+      {
+      case MN_ACTION_DISPLAY_MAIL_SUMMARY:
+	mn_summary_dialog_display();
+	break;
+
+      case MN_ACTION_LAUNCH_MAIL_READER:
+	if (eel_gconf_get_boolean(MN_CONF_COMMANDS_MAIL_READER_ENABLED))
+	  mn_execute_command(MN_CONF_COMMANDS_MAIL_READER_COMMAND);
+	break;
+
+      default:
+	g_return_if_reached();
+      }
   }
 
   private void
@@ -137,6 +174,14 @@ class MN:Shell from G:Object
   }
   
   private void
+    icon_activate_mail_reader_h (MN:Mail:Icon *icon (check null type),
+				 gpointer user_data (check null))
+  {
+    if (eel_gconf_get_boolean(MN_CONF_COMMANDS_MAIL_READER_ENABLED))
+      mn_execute_command(MN_CONF_COMMANDS_MAIL_READER_COMMAND);
+  }
+
+  private void
     icon_activate_update_h (MN:Mail:Icon *icon (check null type),
 			    gpointer user_data (check null))
   {
@@ -187,6 +232,21 @@ class MN:Shell from G:Object
   private void
     update_sensitivity (self)
   {
+    gboolean mail_reader_sensitive = FALSE;
+
+    if (eel_gconf_get_boolean(MN_CONF_COMMANDS_MAIL_READER_ENABLED))
+      {
+	char *mail_reader;
+
+	mail_reader = eel_gconf_get_string(MN_CONF_COMMANDS_MAIL_READER_COMMAND);
+	if (mail_reader)
+	  {
+	    mail_reader_sensitive = TRUE;
+	    g_free(mail_reader);
+	  }
+      }
+    
+    gtk_widget_set_sensitive(selfp->icon->mail_reader_item, mail_reader_sensitive);
     gtk_widget_set_sensitive(selfp->icon->update_item, mn_mailboxes_get_must_poll(self->mailboxes));
   }
 
@@ -194,17 +254,50 @@ class MN:Shell from G:Object
     update_icon (self)
   {
     GSList *mailboxes;
-    gboolean show = FALSE;
+    GSList *l;
+    int n_new = 0;
     gboolean blink = FALSE;
-    GString *tooltip = NULL;
+
+    mailboxes = mn_mailboxes_get(self->mailboxes);
+    MN_LIST_FOREACH(l, mailboxes)
+      {
+	MNMailbox *mailbox = l->data;
+
+	if (mn_mailbox_get_has_new(mailbox))
+	  n_new++;
+	if (! blink && (mn_mailbox_get_error(mailbox) || MN_IS_UNSUPPORTED_MAILBOX(mailbox)))
+	  blink = TRUE;
+      }
+
+    if (blink && ! eel_gconf_get_boolean(MN_CONF_BLINK_ON_ERRORS))
+      blink = FALSE;
+    
+    if (selfp->n_new > 0 && n_new == 0 && eel_gconf_get_boolean(MN_CONF_COMMANDS_MAIL_READ_ENABLED))
+      mn_execute_command(MN_CONF_COMMANDS_MAIL_READ_COMMAND);
+    selfp->n_new = n_new;
+    
+    if (n_new > 0 || blink)
+      {
+	mn_blinking_image_set_blinking(MN_BLINKING_IMAGE(selfp->icon->image), blink);
+	gtk_widget_show(GTK_WIDGET(selfp->icon));
+      }
+    else
+      gtk_widget_hide(GTK_WIDGET(selfp->icon));
+  }
+
+  private void
+    update_tooltip (self)
+  {
+    GtkWidget *vbox;
+    GSList *mailboxes;
+    GSList *messages;
+
+    vbox = gtk_vbox_new(FALSE, 18);
 
     mailboxes = mn_mailboxes_get(self->mailboxes);
     if (mailboxes)
       {
 	GSList *l;
-	int n_new = 0;
-	int n_error = 0;
-	int n_unsupported = 0;
 	GString *new_string;
 	GString *error_string;
 	GString *unsupported_string;
@@ -226,12 +319,10 @@ class MN:Shell from G:Object
 	      {
 		int n_messages;
 
-		n_new++;
-
 		if (*new_string->str)
 		  g_string_append_c(new_string, '\n');
-		g_string_append_printf(new_string, "    %s", name);
-
+		g_string_append(new_string, name);
+		
 		n_messages = g_slist_length(mn_mailbox_get_messages(mailbox));
 		if (n_messages > 0)
 		  g_string_append_printf(new_string, " (%i)", n_messages);
@@ -239,97 +330,101 @@ class MN:Shell from G:Object
 	    
 	    if (error)
 	      {
-		n_error++;
 		if (*error_string->str)
 		  g_string_append_c(error_string, '\n');
-		g_string_append_printf(error_string, "    %s (%s)", name, error);
+		g_string_append_printf(error_string, "%s: %s", name, error);
 	      }
 	  
 	    if (MN_IS_UNSUPPORTED_MAILBOX(mailbox))
 	      {
-		n_unsupported++;
 		if (*unsupported_string->str)
 		  g_string_append_c(unsupported_string, '\n');
-		g_string_append_printf(unsupported_string, "    %s (%s)", name, mn_unsupported_mailbox_get_reason(MN_UNSUPPORTED_MAILBOX(mailbox)));
+		g_string_append_printf(unsupported_string, "%s: %s", name, mn_unsupported_mailbox_get_reason(MN_UNSUPPORTED_MAILBOX(mailbox)));
 	      }
 	  }
 
-	if (n_new > 0)
-	  show = TRUE;
-	if ((n_error > 0 || n_unsupported > 0) && eel_gconf_get_boolean(MN_CONF_BLINK_ON_ERRORS))
-	  blink = TRUE;
-	
-	if (n_new > 0)
-	  g_string_prepend(new_string, ngettext("The following mailbox has new mail:\n",
-						"The following mailboxes have new mail:\n",
-						n_new));
-	else
-	  g_string_prepend(new_string, _("You have no new mail."));
-	
-	if (n_error > 0)
-	  g_string_prepend(error_string, ngettext("The following mailbox reported an error:\n",
-						  "The following mailboxes reported an error:\n",
-						  n_error));
-      
-	if (n_unsupported > 0)
-	  g_string_prepend(unsupported_string, ngettext("The following mailbox is unsupported:\n",
-							"The following mailboxes are unsupported:\n",
-							n_unsupported));
-	
-	tooltip = g_string_new(new_string->str);
-	if (n_error > 0)
-	  g_string_append_printf(tooltip, "\n\n%s", error_string->str);
-	if (n_unsupported > 0)
-	  g_string_append_printf(tooltip, "\n\n%s", unsupported_string->str);
-	
+	if (*new_string->str)
+	  self_tooltip_text_section_new(GTK_VBOX(vbox), _("Mailboxes Having New Mail"), new_string->str);
+	if (*error_string->str)
+	  self_tooltip_text_section_new(GTK_VBOX(vbox), _("Errors"), error_string->str);
+	if (*unsupported_string->str)
+	  self_tooltip_text_section_new(GTK_VBOX(vbox), _("Unsupported Mailboxes"), unsupported_string->str);
+
 	g_string_free(new_string, TRUE);
 	g_string_free(error_string, TRUE);
 	g_string_free(unsupported_string, TRUE);
-	
-	if (selfp->n_new > 0 && n_new == 0 && eel_gconf_get_boolean(MN_CONF_COMMANDS_MAIL_READ_ENABLED))
-	  self_execute_command(MN_CONF_COMMANDS_MAIL_READ_COMMAND);
-
-	selfp->n_new = n_new;
       }
-    
-    if (show || blink)
+
+    messages = mn_mailboxes_get_messages(mn_shell->mailboxes);
+    if (messages)
       {
-	mn_tooltips_set_tip(selfp->icon->tooltips, GTK_WIDGET(selfp->icon), tooltip->str);
-	mn_blinking_image_set_blinking(MN_BLINKING_IMAGE(selfp->icon->image), blink);
-	gtk_widget_show(GTK_WIDGET(selfp->icon));
+	GtkWidget *hbox;
+	GtkWidget *messages_vbox;
+	
+	hbox = self_tooltip_section_new(GTK_VBOX(vbox), _("Mail Summary"));
+
+	messages_vbox = gtk_vbox_new(FALSE, 0);
+	mn_summary_update(GTK_VBOX(messages_vbox), messages, FALSE);
+	mn_g_object_slist_free(messages);
+
+	gtk_box_pack_start(GTK_BOX(hbox), messages_vbox, TRUE, TRUE, 0);
       }
-    else
-      gtk_widget_hide(GTK_WIDGET(selfp->icon));
 
-    if (tooltip)
-      g_string_free(tooltip, TRUE);
+    gtk_widget_show_all(vbox);
+    mn_mail_icon_set_tip_widget(selfp->icon, vbox);
   }
+  
+  private GtkWidget *
+    tooltip_section_new (Gtk:VBox *vbox (check null type),
+			 const char *title (check null))
+  {
+    GtkWidget *child_vbox;
+    char *markup;
+    GtkWidget *label;
+    GtkWidget *hbox;
+
+    child_vbox = gtk_vbox_new(FALSE, 6);
+
+    markup = g_markup_printf_escaped("<span weight=\"bold\">%s</span>", title);
+    label = gtk_label_new(markup);
+    g_free(markup);
+
+    gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
+    gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
+
+    gtk_box_pack_start(GTK_BOX(child_vbox), label, FALSE, FALSE, 0);
 
+    hbox = gtk_hbox_new(FALSE, 0);
+
+    label = gtk_label_new("    ");
+    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
+
+    gtk_box_pack_start(GTK_BOX(child_vbox), hbox, TRUE, TRUE, 0);
+    gtk_box_pack_start(GTK_BOX(vbox), child_vbox, TRUE, TRUE, 0);
+
+    return hbox;
+  }
+  
   private void
-    execute_command (const char *conf_key (check null))
+    tooltip_text_section_new (Gtk:VBox *vbox (check null type),
+			      const char *title (check null),
+			      const char *text (check null))
   {
-    char *command;
+    GtkWidget *hbox;
+    GtkWidget *label;
 
-    command = eel_gconf_get_string(conf_key);
-    if (command)
-      {
-	if (gnome_execute_shell(NULL, command) < 0)
-	  mn_error_dialog(NULL,
-			  NULL,
-			  NULL,
-			  _("A command error has occurred in Mail Notification"),
-			  _("Unable to execute \"%s\": %s."),
-			  command,
-			  g_strerror(errno));
-	
-	g_free(command);
-      }
+    hbox = self_tooltip_section_new(GTK_VBOX(vbox), title);
+
+    label = gtk_label_new(text);
+    gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
+
+    gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0);
   }
   
   public MNShell *
     new (void)
   {
-    return MN_SHELL(GET_NEW);
+    return GET_NEW;
   }
 
   public void
diff --git a/src/mn-shell.h b/src/mn-shell.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-summary-dialog.c b/src/mn-summary-dialog.c
@@ -32,6 +32,7 @@ typedef struct
   GtkWidget	*dialog;
 
   GtkWidget	*vbox;
+  GtkWidget	*mail_reader_button;
   GtkWidget	*update_button;
 } SummaryDialog;
 
@@ -41,6 +42,11 @@ static SummaryDialog summary = { NULL };
   
 /*** functions ***************************************************************/
     
+static void mn_summary_dialog_notify_mail_reader_cb (GConfClient *client,
+						     guint cnxn_id,
+						     GConfEntry *entry,
+						     gpointer user_data);
+
 static void mn_summary_dialog_update (void);
 static void mn_summary_dialog_update_sensitivity (void);
 
@@ -63,6 +69,7 @@ mn_summary_dialog_display (void)
   mn_create_interface("summary-dialog",
 		      "dialog", &summary.dialog,
 		      "vbox", &summary.vbox,
+		      "mail_reader_button", &summary.mail_reader_button,
 		      "update_button", &summary.update_button,
 		      NULL);
 
@@ -73,6 +80,10 @@ mn_summary_dialog_display (void)
   mn_summary_dialog_update();
   mn_summary_dialog_update_sensitivity();
 
+  mn_conf_notification_add(summary.dialog,
+			   MN_CONF_COMMANDS_MAIL_READER_NAMESPACE,
+			   mn_summary_dialog_notify_mail_reader_cb,
+			   NULL);
   mn_g_object_connect(summary.dialog,
 		      mn_shell->mailboxes,
 		      "signal::notify::must-poll", mn_summary_dialog_update_sensitivity, NULL,
@@ -82,6 +93,17 @@ mn_summary_dialog_display (void)
   gtk_widget_show(summary.dialog);
 }
 
+static void
+mn_summary_dialog_notify_mail_reader_cb (GConfClient *client,
+					 guint cnxn_id,
+					 GConfEntry *entry,
+					 gpointer user_data)
+{
+  GDK_THREADS_ENTER();
+  mn_summary_dialog_update_sensitivity();
+  GDK_THREADS_LEAVE();
+}
+
 gboolean
 mn_summary_dialog_is_displayed (void)
 {
@@ -101,6 +123,21 @@ mn_summary_dialog_update (void)
 static void
 mn_summary_dialog_update_sensitivity (void)
 {
+  gboolean mail_reader_sensitive = FALSE;
+
+  if (eel_gconf_get_boolean(MN_CONF_COMMANDS_MAIL_READER_ENABLED))
+    {
+      char *mail_reader;
+
+      mail_reader = eel_gconf_get_string(MN_CONF_COMMANDS_MAIL_READER_COMMAND);
+      if (mail_reader)
+	{
+	  mail_reader_sensitive = TRUE;
+	  g_free(mail_reader);
+	}
+    }
+
+  gtk_widget_set_sensitive(summary.mail_reader_button, mail_reader_sensitive);
   gtk_widget_set_sensitive(summary.update_button, mn_mailboxes_get_must_poll(mn_shell->mailboxes));
 }
 
@@ -117,7 +154,12 @@ mn_summary_dialog_response_h (GtkDialog *dialog,
       mn_display_help(GTK_WINDOW(dialog), "mail-summary");
       break;
 
-    case 1:			/* update */
+    case 1:			/* launch mail reader */
+      if (eel_gconf_get_boolean(MN_CONF_COMMANDS_MAIL_READER_ENABLED))
+	mn_execute_command(MN_CONF_COMMANDS_MAIL_READER_COMMAND);
+      break;
+      
+    case 2:			/* update */
       mn_mailboxes_check(mn_shell->mailboxes);
       break;
 
diff --git a/src/mn-summary-popup.c b/src/mn-summary-popup.c
@@ -32,11 +32,13 @@
 typedef struct
 {
   gboolean	enabled;
-
   GtkWidget	*popup;
   GtkWidget	*image;
   GtkWidget	*vbox;
   unsigned int	timeout_id;
+
+  GSList	*displayed_messages;
+  GSList	*previous_messages;
 } SummaryPopup;
 
 /*** variables ***************************************************************/
@@ -205,10 +207,39 @@ mn_summary_popup_update (gboolean has_new)
 
   if (! mn_summary_dialog_is_displayed() && (displayed || has_new))
     {
-      GSList *messages;
+      GSList *l;
+
+      mn_g_object_slist_free(popup.displayed_messages);
+      popup.displayed_messages = mn_mailboxes_get_messages(mn_shell->mailboxes);
 
-      messages = mn_mailboxes_get_messages(mn_shell->mailboxes);
-      if (messages)
+    loop1:
+      MN_LIST_FOREACH(l, popup.previous_messages)
+        {
+	  MNMessage *message = l->data;
+
+	  if (! mn_message_slist_find_by_id(popup.displayed_messages, message))
+	    {
+	      popup.previous_messages = mn_g_object_slist_delete_link(popup.previous_messages, l);
+	      goto loop1;
+	    }
+	}
+      
+      if (eel_gconf_get_boolean(MN_CONF_MAIL_SUMMARY_POPUP_ONLY_RECENT))
+	{
+	loop2:
+	  MN_LIST_FOREACH(l, popup.displayed_messages)
+	    {
+	      MNMessage *message = l->data;
+	    
+	      if (mn_message_slist_find_by_id(popup.previous_messages, message))
+		{
+		  popup.displayed_messages = mn_g_object_slist_delete_link(popup.displayed_messages, l);
+		  goto loop2;
+		}
+	    }
+	}
+
+      if (popup.displayed_messages)
 	{
 	  mn_create_interface("summary-popup",
 			      "popup", &popup.popup,
@@ -247,9 +278,7 @@ mn_summary_popup_update (gboolean has_new)
 
 	  gtk_image_set_from_stock(GTK_IMAGE(popup.image), MN_STOCK_MAIL_SUMMARY, -1);
 
-	  mn_summary_update(GTK_VBOX(popup.vbox), messages, FALSE);
-	  mn_g_object_slist_free(messages);
-
+	  mn_summary_update(GTK_VBOX(popup.vbox), popup.displayed_messages, FALSE);
 	  mn_summary_popup_set_geometry();
 	  gtk_widget_show(popup.popup);
 
@@ -267,15 +296,12 @@ mn_summary_popup_update (gboolean has_new)
 static void
 mn_summary_popup_set_geometry (void)
 {
-  GEnumValue *enum_value;
   MNPosition position;
   char *geometry;
 
   g_return_if_fail(popup.popup != NULL);
 
-  enum_value = mn_conf_get_enum_value(MN_TYPE_POSITION, MN_CONF_MAIL_SUMMARY_POPUP_POSITION);
-  position = enum_value ? enum_value->value : MN_POSITION_TOP_LEFT;
-  
+  position = mn_conf_get_enum_value(MN_TYPE_POSITION, MN_CONF_MAIL_SUMMARY_POPUP_POSITION);
   geometry = g_strdup_printf("%c%i%c%i",
 			     (position == MN_POSITION_TOP_RIGHT || position == MN_POSITION_BOTTOM_RIGHT) ? '-' : '+',
 			     eel_gconf_get_integer(MN_CONF_MAIL_SUMMARY_POPUP_HORIZONTAL_OFFSET),
@@ -292,6 +318,9 @@ mn_summary_popup_destroy (void)
     {
       mn_summary_popup_remove_timeout();
       gtk_widget_destroy(popup.popup);
+
+      popup.previous_messages = g_slist_concat(popup.previous_messages, popup.displayed_messages);
+      popup.displayed_messages = NULL;
     }
 }
 
@@ -326,8 +355,7 @@ static gboolean
 mn_summary_popup_timeout_cb (gpointer data)
 {
   GDK_THREADS_ENTER();
-  if (popup.popup)
-    gtk_widget_destroy(popup.popup);
+  mn_summary_popup_destroy();
   GDK_THREADS_LEAVE();
   
   return FALSE;			/* remove timeout */
diff --git a/src/mn-summary.c b/src/mn-summary.c
@@ -18,35 +18,39 @@
 
 #include <gtk/gtk.h>
 #include "mn-util.h"
-#include "mn-message-label.h"
+#include "mn-message-box.h"
 
 void
 mn_summary_update (GtkVBox *vbox, GSList *messages, gboolean selectable)
 {
+  GtkSizeGroup *size_group;
   GSList *l;
 
   g_return_if_fail(GTK_IS_VBOX(vbox));
 
   gtk_container_foreach(GTK_CONTAINER(vbox), (GtkCallback) gtk_widget_destroy, NULL);
 
+  size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
+
   MN_LIST_FOREACH(l, messages)
     {
       MNMessage *message = l->data;
-      GtkWidget *label;
+      GtkWidget *message_box;
 
-      label = mn_message_label_new(message);
-      gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
-      if (selectable)
-	gtk_label_set_selectable(GTK_LABEL(label), TRUE);
+      message_box = mn_message_box_new(size_group, message, selectable);
 
-      gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
-      gtk_widget_show(label);
+      gtk_box_pack_start(GTK_BOX(vbox), message_box, FALSE, FALSE, 0);
+      gtk_widget_show(message_box);
 
       if (l->next)
 	{			/* spacing between messages */
+	  GtkWidget *label;
+
 	  label = gtk_label_new(NULL);
 	  gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
 	  gtk_widget_show(label);
 	}
     }
+
+  g_object_unref(size_group);
 }
diff --git a/src/mn-sylpheed-mailbox-private.h b/src/mn-sylpheed-mailbox-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #ifndef __MN_SYLPHEED_MAILBOX_PRIVATE_H__
 #define __MN_SYLPHEED_MAILBOX_PRIVATE_H__
diff --git a/src/mn-sylpheed-mailbox.c b/src/mn-sylpheed-mailbox.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.10) on Mon Oct 25 15:24:33 2004
+/* Generated by GOB (v2.0.11) on Sun Oct 31 18:41:21 2004
    (do not edit directly) */
 
 /* End world hunger, donate to the World Food Programme, http://www.wfp.org */
 
 #define GOB_VERSION_MAJOR 2
 #define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 10
+#define GOB_VERSION_PATCHLEVEL 11
 
 #define selfp (self->_priv)
 
diff --git a/src/mn-sylpheed-mailbox.h b/src/mn-sylpheed-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-system-mailbox-properties-private.h b/src/mn-system-mailbox-properties-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #ifndef __MN_SYSTEM_MAILBOX_PROPERTIES_PRIVATE_H__
 #define __MN_SYSTEM_MAILBOX_PROPERTIES_PRIVATE_H__
diff --git a/src/mn-system-mailbox-properties.c b/src/mn-system-mailbox-properties.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.10) on Mon Oct 25 15:24:34 2004
+/* Generated by GOB (v2.0.11) on Sun Oct 31 18:41:22 2004
    (do not edit directly) */
 
 /* End world hunger, donate to the World Food Programme, http://www.wfp.org */
 
 #define GOB_VERSION_MAJOR 2
 #define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 10
+#define GOB_VERSION_PATCHLEVEL 11
 
 #define selfp (self->_priv)
 
diff --git a/src/mn-system-mailbox-properties.h b/src/mn-system-mailbox-properties.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-tooltips-private.h b/src/mn-tooltips-private.h
@@ -0,0 +1,43 @@
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
+
+#ifndef __MN_TOOLTIPS_PRIVATE_H__
+#define __MN_TOOLTIPS_PRIVATE_H__
+
+#include "mn-tooltips.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+#line 29 "mn-tooltips.gob"
+
+  typedef struct
+  {
+    MNTooltips	*self;
+    GtkWidget	*widget;
+    GtkWidget	*tip_widget;
+  } TooltipsData;
+
+#line 23 "mn-tooltips-private.h"
+struct _MNTooltipsPrivate {
+#line 74 "mn-tooltips.gob"
+	GtkWidget * window;
+#line 75 "mn-tooltips.gob"
+	TooltipsData * active_data;
+#line 76 "mn-tooltips.gob"
+	GSList * data_list;
+#line 78 "mn-tooltips.gob"
+	gboolean use_sticky_delay;
+#line 79 "mn-tooltips.gob"
+	GTimeVal last_popdown;
+#line 80 "mn-tooltips.gob"
+	unsigned int timeout_id;
+#line 37 "mn-tooltips-private.h"
+};
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-tooltips.c b/src/mn-tooltips.c
@@ -0,0 +1,1079 @@
+/* Generated by GOB (v2.0.11) on Sun Oct 31 18:41:22 2004
+   (do not edit directly) */
+
+/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
+
+#define GOB_VERSION_MAJOR 2
+#define GOB_VERSION_MINOR 0
+#define GOB_VERSION_PATCHLEVEL 11
+
+#define selfp (self->_priv)
+
+#include <string.h> /* memset() */
+
+#include "mn-tooltips.h"
+
+#include "mn-tooltips-private.h"
+
+#ifdef G_LIKELY
+#define ___GOB_LIKELY(expr) G_LIKELY(expr)
+#define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr)
+#else /* ! G_LIKELY */
+#define ___GOB_LIKELY(expr) (expr)
+#define ___GOB_UNLIKELY(expr) (expr)
+#endif /* G_LIKELY */
+
+#line 38 "mn-tooltips.gob"
+
+#include "mn-util.h"
+#include <eel/eel.h>
+
+#define TOOLTIPS_DATA			"mn-tooltips-data"
+#define TOOLTIPS_INFO			"mn-tooltips-info"
+#define TOOLTIPS_KEYBOARD_MODE		"gtk-tooltips-keyboard-mode" /* compatible with GtkTooltips */
+
+#define DELAY 500			/* Default delay in ms */
+#define STICKY_DELAY 0			/* Delay before popping up next tip
+					 * if we're sticky
+					 */
+#define STICKY_REVERT_DELAY 1000	/* Delay before sticky tooltips revert
+					 * to normal
+					 */
+
+  /* The private flags that are used in the private_flags member of GtkWidget.
+   */
+  typedef enum
+  {
+    PRIVATE_GTK_LEAVE_PENDING	= 1 <<  4
+  } GtkPrivateFlags;
+
+  /* Macros for extracting a widgets private_flags from GtkWidget.
+   */
+#define GTK_PRIVATE_FLAGS(wid)            (GTK_WIDGET (wid)->private_flags)
+  
+  /* Macros for setting and clearing private widget flags.
+   * we use a preprocessor string concatenation here for a clear
+   * flags/private_flags distinction at the cost of single flag operations.
+   */
+#define GTK_PRIVATE_SET_FLAG(wid,flag)    G_STMT_START{ (GTK_PRIVATE_FLAGS (wid) |= (PRIVATE_ ## flag)); }G_STMT_END
+
+#line 61 "mn-tooltips.c"
+/* self casting macros */
+#define SELF(x) MN_TOOLTIPS(x)
+#define SELF_CONST(x) MN_TOOLTIPS_CONST(x)
+#define IS_SELF(x) MN_IS_TOOLTIPS(x)
+#define TYPE_SELF MN_TYPE_TOOLTIPS
+#define SELF_CLASS(x) MN_TOOLTIPS_CLASS(x)
+
+#define SELF_GET_CLASS(x) MN_TOOLTIPS_GET_CLASS(x)
+
+/* self typedefs */
+typedef MNTooltips Self;
+typedef MNTooltipsClass SelfClass;
+
+/* here are local prototypes */
+static void mn_tooltips_init (MNTooltips * o) G_GNUC_UNUSED;
+static void mn_tooltips_class_init (MNTooltipsClass * c) G_GNUC_UNUSED;
+static void ___1_mn_tooltips_finalize (GObject * object) G_GNUC_UNUSED;
+static void mn_tooltips_destroy_data (TooltipsData * data) G_GNUC_UNUSED;
+static void mn_tooltips_display_closed_h (GdkDisplay * display, gboolean is_error, gpointer user_data) G_GNUC_UNUSED;
+static void mn_tooltips_disconnect_display_closed (MNTooltips * self) G_GNUC_UNUSED;
+static void mn_tooltips_unset_window (MNTooltips * self) G_GNUC_UNUSED;
+static void mn_tooltips_update_screen (MNTooltips * self, gboolean new_window) G_GNUC_UNUSED;
+static void mn_tooltips_force_window (MNTooltips * self) G_GNUC_UNUSED;
+static TooltipsData * mn_tooltips_get_data (GtkWidget * widget) G_GNUC_UNUSED;
+static gboolean mn_tooltips_paint_window (MNTooltips * self) G_GNUC_UNUSED;
+static void mn_tooltips_draw_tips (MNTooltips * self) G_GNUC_UNUSED;
+static gboolean mn_tooltips_timeout_cb (gpointer data) G_GNUC_UNUSED;
+static void mn_tooltips_set_active_widget (MNTooltips * self, GtkWidget * widget) G_GNUC_UNUSED;
+static void mn_tooltips_show_tip (GtkWidget * widget) G_GNUC_UNUSED;
+static void mn_tooltips_hide_tip (GtkWidget * widget) G_GNUC_UNUSED;
+static gboolean mn_tooltips_recently_shown (MNTooltips * self) G_GNUC_UNUSED;
+static gboolean mn_tooltips_get_keyboard_mode (GtkWidget * widget) G_GNUC_UNUSED;
+static void mn_tooltips_start_keyboard_mode (GtkWidget * widget) G_GNUC_UNUSED;
+static void mn_tooltips_stop_keyboard_mode (GtkWidget * widget) G_GNUC_UNUSED;
+static void mn_tooltips_start_delay (MNTooltips * self, GtkWidget * widget) G_GNUC_UNUSED;
+static void mn_tooltips_event_after_h (GtkWidget * widget, GdkEvent * event, gpointer user_data) G_GNUC_UNUSED;
+static void mn_tooltips_widget_unmap (GtkWidget * widget, gpointer user_data) G_GNUC_UNUSED;
+static void mn_tooltips_widget_remove (GtkWidget * widget, gpointer user_data) G_GNUC_UNUSED;
+
+/* pointer to the class of our parent */
+static GObjectClass *parent_class = NULL;
+
+/* Short form macros */
+#define self_destroy_data mn_tooltips_destroy_data
+#define self_display_closed_h mn_tooltips_display_closed_h
+#define self_disconnect_display_closed mn_tooltips_disconnect_display_closed
+#define self_unset_window mn_tooltips_unset_window
+#define self_update_screen mn_tooltips_update_screen
+#define self_force_window mn_tooltips_force_window
+#define self_get_data mn_tooltips_get_data
+#define self_set_tip_widget mn_tooltips_set_tip_widget
+#define self_paint_window mn_tooltips_paint_window
+#define self_draw_tips mn_tooltips_draw_tips
+#define self_timeout_cb mn_tooltips_timeout_cb
+#define self_set_active_widget mn_tooltips_set_active_widget
+#define self_show_tip mn_tooltips_show_tip
+#define self_hide_tip mn_tooltips_hide_tip
+#define self_recently_shown mn_tooltips_recently_shown
+#define self_get_keyboard_mode mn_tooltips_get_keyboard_mode
+#define self_start_keyboard_mode mn_tooltips_start_keyboard_mode
+#define self_stop_keyboard_mode mn_tooltips_stop_keyboard_mode
+#define self_start_delay mn_tooltips_start_delay
+#define self_event_after_h mn_tooltips_event_after_h
+#define self_widget_unmap mn_tooltips_widget_unmap
+#define self_widget_remove mn_tooltips_widget_remove
+#define self_toggle_keyboard_mode mn_tooltips_toggle_keyboard_mode
+#define self_new mn_tooltips_new
+GType
+mn_tooltips_get_type (void)
+{
+	static GType type = 0;
+
+	if ___GOB_UNLIKELY(type == 0) {
+		static const GTypeInfo info = {
+			sizeof (MNTooltipsClass),
+			(GBaseInitFunc) NULL,
+			(GBaseFinalizeFunc) NULL,
+			(GClassInitFunc) mn_tooltips_class_init,
+			(GClassFinalizeFunc) NULL,
+			NULL /* class_data */,
+			sizeof (MNTooltips),
+			0 /* n_preallocs */,
+			(GInstanceInitFunc) mn_tooltips_init,
+			NULL
+		};
+
+		type = g_type_register_static (G_TYPE_OBJECT, "MNTooltips", &info, (GTypeFlags)0);
+	}
+
+	return type;
+}
+
+/* a macro for creating a new object of our type */
+#define GET_NEW ((MNTooltips *)g_object_new(mn_tooltips_get_type(), NULL))
+
+/* a function for creating a new object of our type */
+#include <stdarg.h>
+static MNTooltips * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED;
+static MNTooltips *
+GET_NEW_VARG (const char *first, ...)
+{
+	MNTooltips *ret;
+	va_list ap;
+	va_start (ap, first);
+	ret = (MNTooltips *)g_object_new_valist (mn_tooltips_get_type (), first, ap);
+	va_end (ap);
+	return ret;
+}
+
+
+static void
+___finalize(GObject *obj_self)
+{
+#define __GOB_FUNCTION__ "MN:Tooltips::finalize"
+	MNTooltips *self G_GNUC_UNUSED = MN_TOOLTIPS (obj_self);
+	gpointer priv G_GNUC_UNUSED = self->_priv;
+#line 82 "mn-tooltips.gob"
+	___1_mn_tooltips_finalize(obj_self);
+#line 180 "mn-tooltips.c"
+}
+#undef __GOB_FUNCTION__
+
+static void 
+mn_tooltips_init (MNTooltips * o G_GNUC_UNUSED)
+{
+#define __GOB_FUNCTION__ "MN:Tooltips::init"
+	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,TYPE_SELF,MNTooltipsPrivate);
+}
+#undef __GOB_FUNCTION__
+static void 
+mn_tooltips_class_init (MNTooltipsClass * c G_GNUC_UNUSED)
+{
+#define __GOB_FUNCTION__ "MN:Tooltips::class_init"
+	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
+
+	g_type_class_add_private(c,sizeof(MNTooltipsPrivate));
+
+	parent_class = g_type_class_ref (G_TYPE_OBJECT);
+
+#line 82 "mn-tooltips.gob"
+	g_object_class->finalize = ___finalize;
+#line 203 "mn-tooltips.c"
+}
+#undef __GOB_FUNCTION__
+
+
+
+#line 82 "mn-tooltips.gob"
+static void 
+___1_mn_tooltips_finalize (GObject * object G_GNUC_UNUSED)
+#line 212 "mn-tooltips.c"
+#define PARENT_HANDLER(___object) \
+	{ if(G_OBJECT_CLASS(parent_class)->finalize) \
+		(* G_OBJECT_CLASS(parent_class)->finalize)(___object); }
+{
+#define __GOB_FUNCTION__ "MN:Tooltips::finalize"
+#line 82 "mn-tooltips.gob"
+	g_return_if_fail (object != NULL);
+#line 82 "mn-tooltips.gob"
+	g_return_if_fail (G_IS_OBJECT (object));
+#line 222 "mn-tooltips.c"
+{
+#line 84 "mn-tooltips.gob"
+	
+    Self *self = SELF(object);
+    GSList *l;
+
+    if (selfp->timeout_id)
+      g_source_remove(selfp->timeout_id);
+
+    MN_LIST_FOREACH(l, selfp->data_list)
+      {
+	TooltipsData *data = l->data;
+	self_widget_remove(data->widget, data);
+      }
+
+    self_unset_window(self);
+
+    PARENT_HANDLER(object);
+  }}
+#line 242 "mn-tooltips.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 102 "mn-tooltips.gob"
+static void 
+mn_tooltips_destroy_data (TooltipsData * data)
+#line 249 "mn-tooltips.c"
+{
+#define __GOB_FUNCTION__ "MN:Tooltips::destroy_data"
+{
+#line 104 "mn-tooltips.gob"
+	
+    g_object_disconnect(data->widget,
+			"any-signal", self_event_after_h, data,
+			"any-signal", self_widget_unmap, data,
+			"any-signal", self_widget_remove, data,
+			NULL);
+
+    g_object_set_data(G_OBJECT(data->widget), TOOLTIPS_DATA, NULL);
+    g_object_unref(data->widget);
+    g_object_unref(data->tip_widget);
+    g_free(data);
+  }}
+#line 266 "mn-tooltips.c"
+#undef __GOB_FUNCTION__
+
+#line 117 "mn-tooltips.gob"
+static void 
+mn_tooltips_display_closed_h (GdkDisplay * display, gboolean is_error, gpointer user_data)
+#line 272 "mn-tooltips.c"
+{
+#define __GOB_FUNCTION__ "MN:Tooltips::display_closed_h"
+#line 117 "mn-tooltips.gob"
+	g_return_if_fail (display != NULL);
+#line 117 "mn-tooltips.gob"
+	g_return_if_fail (GDK_IS_DISPLAY (display));
+#line 279 "mn-tooltips.c"
+{
+#line 121 "mn-tooltips.gob"
+	
+    Self *self = SELF(user_data);
+    self_unset_window(self);
+  }}
+#line 286 "mn-tooltips.c"
+#undef __GOB_FUNCTION__
+
+#line 126 "mn-tooltips.gob"
+static void 
+mn_tooltips_disconnect_display_closed (MNTooltips * self)
+#line 292 "mn-tooltips.c"
+{
+#define __GOB_FUNCTION__ "MN:Tooltips::disconnect_display_closed"
+#line 126 "mn-tooltips.gob"
+	g_return_if_fail (self != NULL);
+#line 126 "mn-tooltips.gob"
+	g_return_if_fail (MN_IS_TOOLTIPS (self));
+#line 299 "mn-tooltips.c"
+{
+#line 128 "mn-tooltips.gob"
+	
+    g_signal_handlers_disconnect_by_func(gtk_widget_get_display(selfp->window),
+					 self_display_closed_h,
+					 self);
+  }}
+#line 307 "mn-tooltips.c"
+#undef __GOB_FUNCTION__
+
+#line 134 "mn-tooltips.gob"
+static void 
+mn_tooltips_unset_window (MNTooltips * self)
+#line 313 "mn-tooltips.c"
+{
+#define __GOB_FUNCTION__ "MN:Tooltips::unset_window"
+#line 134 "mn-tooltips.gob"
+	g_return_if_fail (self != NULL);
+#line 134 "mn-tooltips.gob"
+	g_return_if_fail (MN_IS_TOOLTIPS (self));
+#line 320 "mn-tooltips.c"
+{
+#line 136 "mn-tooltips.gob"
+	
+    if (selfp->window)
+      {
+	self_disconnect_display_closed(self);
+	gtk_widget_destroy(selfp->window);
+      }
+  }}
+#line 330 "mn-tooltips.c"
+#undef __GOB_FUNCTION__
+
+#line 144 "mn-tooltips.gob"
+static void 
+mn_tooltips_update_screen (MNTooltips * self, gboolean new_window)
+#line 336 "mn-tooltips.c"
+{
+#define __GOB_FUNCTION__ "MN:Tooltips::update_screen"
+#line 144 "mn-tooltips.gob"
+	g_return_if_fail (self != NULL);
+#line 144 "mn-tooltips.gob"
+	g_return_if_fail (MN_IS_TOOLTIPS (self));
+#line 343 "mn-tooltips.c"
+{
+#line 146 "mn-tooltips.gob"
+	
+    gboolean screen_changed = FALSE;
+
+    if (selfp->active_data && selfp->active_data->widget)
+      {
+	GdkScreen *screen = gtk_widget_get_screen(selfp->active_data->widget);
+
+	screen_changed = (screen != gtk_widget_get_screen(selfp->window));
+
+	if (screen_changed)
+	  {
+	    if (! new_window)
+	      self_disconnect_display_closed(self);
+      
+	    gtk_window_set_screen(GTK_WINDOW(selfp->window), screen);
+	  }
+      }
+
+    if (screen_changed || new_window)
+      g_signal_connect(gtk_widget_get_display(selfp->window),
+		       "closed",
+		       G_CALLBACK(self_display_closed_h),
+		       self);
+  }}
+#line 370 "mn-tooltips.c"
+#undef __GOB_FUNCTION__
+
+#line 171 "mn-tooltips.gob"
+static void 
+mn_tooltips_force_window (MNTooltips * self)
+#line 376 "mn-tooltips.c"
+{
+#define __GOB_FUNCTION__ "MN:Tooltips::force_window"
+#line 171 "mn-tooltips.gob"
+	g_return_if_fail (self != NULL);
+#line 171 "mn-tooltips.gob"
+	g_return_if_fail (MN_IS_TOOLTIPS (self));
+#line 383 "mn-tooltips.c"
+{
+#line 173 "mn-tooltips.gob"
+	
+    if (! selfp->window)
+      {
+	selfp->window = gtk_window_new(GTK_WINDOW_POPUP);
+	self_update_screen(self, TRUE);
+	gtk_widget_set_app_paintable(selfp->window, TRUE);
+	gtk_window_set_resizable(GTK_WINDOW(selfp->window), FALSE);
+	gtk_widget_set_name(selfp->window, "gtk-tooltips");
+	gtk_container_set_border_width(GTK_CONTAINER(selfp->window), 12);
+
+	g_signal_connect_swapped(selfp->window,
+				 "expose-event",
+				 G_CALLBACK(self_paint_window), 
+				 self);
+
+	eel_add_weak_pointer(&selfp->window);
+      }
+  }}
+#line 404 "mn-tooltips.c"
+#undef __GOB_FUNCTION__
+
+#line 192 "mn-tooltips.gob"
+static TooltipsData * 
+mn_tooltips_get_data (GtkWidget * widget)
+#line 410 "mn-tooltips.c"
+{
+#define __GOB_FUNCTION__ "MN:Tooltips::get_data"
+#line 192 "mn-tooltips.gob"
+	g_return_val_if_fail (widget != NULL, (TooltipsData * )0);
+#line 192 "mn-tooltips.gob"
+	g_return_val_if_fail (GTK_IS_WIDGET (widget), (TooltipsData * )0);
+#line 417 "mn-tooltips.c"
+{
+#line 194 "mn-tooltips.gob"
+	
+    return g_object_get_data(G_OBJECT(widget), TOOLTIPS_DATA);
+  }}
+#line 423 "mn-tooltips.c"
+#undef __GOB_FUNCTION__
+
+#line 198 "mn-tooltips.gob"
+void 
+mn_tooltips_set_tip_widget (MNTooltips * self, GtkWidget * widget, GtkWidget * tip_widget)
+#line 429 "mn-tooltips.c"
+{
+#define __GOB_FUNCTION__ "MN:Tooltips::set_tip_widget"
+#line 198 "mn-tooltips.gob"
+	g_return_if_fail (self != NULL);
+#line 198 "mn-tooltips.gob"
+	g_return_if_fail (MN_IS_TOOLTIPS (self));
+#line 198 "mn-tooltips.gob"
+	g_return_if_fail (widget != NULL);
+#line 198 "mn-tooltips.gob"
+	g_return_if_fail (GTK_IS_WIDGET (widget));
+#line 440 "mn-tooltips.c"
+{
+#line 202 "mn-tooltips.gob"
+	
+    TooltipsData *data;
+
+    data = self_get_data(widget);
+
+    if (! tip_widget)
+      {
+	if (data)
+	  self_widget_remove(data->widget, data);
+	return;
+      }
+
+    if (selfp->active_data
+	&& selfp->active_data->widget == widget
+	&& GTK_WIDGET_DRAWABLE(selfp->active_data->widget))
+      {
+	if (data->tip_widget)
+	  g_object_unref(data->tip_widget);
+
+	data->tip_widget = tip_widget;
+
+	if (data->tip_widget)
+	  {
+	    g_object_ref(data->tip_widget);
+	    gtk_object_sink(GTK_OBJECT(data->tip_widget));
+	  }
+
+	self_draw_tips(self);
+      }
+    else
+      {
+	g_object_ref(widget);
+
+	if (data)
+	  self_widget_remove(data->widget, data);
+	
+	data = g_new0(TooltipsData, 1);
+	data->self = self;
+	data->widget = widget;
+	data->tip_widget = tip_widget;
+
+	if (data->tip_widget)
+	  {
+	    g_object_ref(data->tip_widget);
+	    gtk_object_sink(GTK_OBJECT(data->tip_widget));
+	  }
+
+	selfp->data_list = g_slist_append(selfp->data_list, data);
+	g_signal_connect_after(widget, "event-after", G_CALLBACK(self_event_after_h), data);
+
+	g_object_set_data(G_OBJECT(widget), TOOLTIPS_DATA, data);
+
+	g_object_connect(widget,
+			 "signal::unmap", self_widget_unmap, data,
+			 "signal::unrealize", self_widget_unmap, data,
+			 "signal::destroy", self_widget_remove, data,
+			 NULL);
+      }
+  }}
+#line 502 "mn-tooltips.c"
+#undef __GOB_FUNCTION__
+
+#line 262 "mn-tooltips.gob"
+static gboolean 
+mn_tooltips_paint_window (MNTooltips * self)
+#line 508 "mn-tooltips.c"
+{
+#define __GOB_FUNCTION__ "MN:Tooltips::paint_window"
+#line 262 "mn-tooltips.gob"
+	g_return_val_if_fail (self != NULL, (gboolean )0);
+#line 262 "mn-tooltips.gob"
+	g_return_val_if_fail (MN_IS_TOOLTIPS (self), (gboolean )0);
+#line 515 "mn-tooltips.c"
+{
+#line 264 "mn-tooltips.gob"
+	
+    GtkRequisition req;
+
+    gtk_widget_size_request(selfp->window, &req);
+    gtk_paint_flat_box(selfp->window->style,
+		       selfp->window->window,
+		       GTK_STATE_NORMAL,
+		       GTK_SHADOW_OUT, 
+		       NULL,
+		       selfp->window,
+		       "tooltip",
+		       0,
+		       0,
+		       req.width,
+		       req.height);
+    
+    return FALSE;
+  }}
+#line 536 "mn-tooltips.c"
+#undef __GOB_FUNCTION__
+
+#line 283 "mn-tooltips.gob"
+static void 
+mn_tooltips_draw_tips (MNTooltips * self)
+#line 542 "mn-tooltips.c"
+{
+#define __GOB_FUNCTION__ "MN:Tooltips::draw_tips"
+#line 283 "mn-tooltips.gob"
+	g_return_if_fail (self != NULL);
+#line 283 "mn-tooltips.gob"
+	g_return_if_fail (MN_IS_TOOLTIPS (self));
+#line 549 "mn-tooltips.c"
+{
+#line 285 "mn-tooltips.gob"
+	
+    GtkRequisition requisition;
+    GtkWidget *widget;
+    gint x, y, w, h;
+    TooltipsData *data;
+    GtkWidget *child;
+    gboolean keyboard_mode;
+    GdkScreen *screen;
+    GdkScreen *pointer_screen;
+    gint monitor_num, px, py;
+    GdkRectangle monitor;
+
+    if (! selfp->window)
+      self_force_window(self);
+    else if (GTK_WIDGET_VISIBLE(selfp->window))
+      g_get_current_time(&selfp->last_popdown);
+
+    gtk_widget_ensure_style(selfp->window);
+
+    widget = selfp->active_data->widget;
+    g_object_set_data(G_OBJECT(selfp->window), TOOLTIPS_INFO, self);
+
+    keyboard_mode = self_get_keyboard_mode(widget);
+
+    self_update_screen(self, FALSE);
+  
+    screen = gtk_widget_get_screen(widget);
+
+    data = selfp->active_data;
+
+    child = GTK_BIN(selfp->window)->child;
+    if (child)
+      gtk_container_remove(GTK_CONTAINER(selfp->window), child);
+
+    if (data->tip_widget)
+      {
+	gtk_container_add(GTK_CONTAINER(selfp->window), data->tip_widget);
+	gtk_widget_show(data->tip_widget);
+      }
+  
+    gtk_widget_size_request(selfp->window, &requisition);
+    w = requisition.width;
+    h = requisition.height;
+
+    gdk_window_get_origin(widget->window, &x, &y);
+    if (GTK_WIDGET_NO_WINDOW(widget))
+      {
+	x += widget->allocation.x;
+	y += widget->allocation.y;
+      }
+
+    x += widget->allocation.width / 2;
+    
+    if (! keyboard_mode)
+      gdk_window_get_pointer(gdk_screen_get_root_window(screen), &x, NULL, NULL);
+
+    x -= (w / 2 + 4);
+
+    gdk_display_get_pointer(gdk_screen_get_display(screen), &pointer_screen, &px, &py, NULL);
+    if (pointer_screen != screen) 
+      {
+	px = x;
+	py = y;
+      }
+    monitor_num = gdk_screen_get_monitor_at_point(screen, px, py);
+    gdk_screen_get_monitor_geometry(screen, monitor_num, &monitor);
+
+    if ((x + w) > monitor.x + monitor.width)
+      x -= (x + w) - (monitor.x + monitor.width);
+    else if (x < monitor.x)
+      x = monitor.x;
+
+    if ((y + h + widget->allocation.height + 4) > monitor.y + monitor.height
+	&& (y - 4) > monitor.y)
+      y = y - h - 4;
+    else
+      y = y + widget->allocation.height + 4;
+
+    gtk_window_move(GTK_WINDOW(selfp->window), x, y);
+    gtk_widget_show(selfp->window);
+  }}
+#line 633 "mn-tooltips.c"
+#undef __GOB_FUNCTION__
+
+#line 367 "mn-tooltips.gob"
+static gboolean 
+mn_tooltips_timeout_cb (gpointer data)
+#line 639 "mn-tooltips.c"
+{
+#define __GOB_FUNCTION__ "MN:Tooltips::timeout_cb"
+{
+#line 369 "mn-tooltips.gob"
+	
+    Self *self = SELF(data);
+
+    GDK_THREADS_ENTER ();
+      
+    if (selfp->active_data != NULL && GTK_WIDGET_DRAWABLE(selfp->active_data->widget))
+      self_draw_tips(self);
+      
+    GDK_THREADS_LEAVE ();
+
+    return FALSE;		/* remove timeout */
+  }}
+#line 656 "mn-tooltips.c"
+#undef __GOB_FUNCTION__
+
+#line 382 "mn-tooltips.gob"
+static void 
+mn_tooltips_set_active_widget (MNTooltips * self, GtkWidget * widget)
+#line 662 "mn-tooltips.c"
+{
+#define __GOB_FUNCTION__ "MN:Tooltips::set_active_widget"
+#line 382 "mn-tooltips.gob"
+	g_return_if_fail (self != NULL);
+#line 382 "mn-tooltips.gob"
+	g_return_if_fail (MN_IS_TOOLTIPS (self));
+#line 669 "mn-tooltips.c"
+{
+#line 384 "mn-tooltips.gob"
+	
+    if (selfp->window)
+      {
+	if (GTK_WIDGET_VISIBLE(selfp->window))
+	  g_get_current_time(&selfp->last_popdown);
+	gtk_widget_hide(selfp->window);
+      }
+    if (selfp->timeout_id)
+      {
+	g_source_remove(selfp->timeout_id);
+	selfp->timeout_id = 0;
+      }
+  
+    selfp->active_data = NULL;
+  
+    if (widget)
+      {
+	GSList *l;
+
+	MN_LIST_FOREACH(l, selfp->data_list)
+	{
+	  TooltipsData *data = l->data;
+	  
+	  if (data->widget == widget && GTK_WIDGET_DRAWABLE(widget))
+	    {
+	      selfp->active_data = data;
+	      break;
+	    }
+	}
+      }
+    else
+      selfp->use_sticky_delay = FALSE;
+  }}
+#line 705 "mn-tooltips.c"
+#undef __GOB_FUNCTION__
+
+#line 418 "mn-tooltips.gob"
+static void 
+mn_tooltips_show_tip (GtkWidget * widget)
+#line 711 "mn-tooltips.c"
+{
+#define __GOB_FUNCTION__ "MN:Tooltips::show_tip"
+#line 418 "mn-tooltips.gob"
+	g_return_if_fail (widget != NULL);
+#line 418 "mn-tooltips.gob"
+	g_return_if_fail (GTK_IS_WIDGET (widget));
+#line 718 "mn-tooltips.c"
+{
+#line 420 "mn-tooltips.gob"
+	
+    TooltipsData *data;
+
+    data = self_get_data(widget);
+
+    if (data &&
+	(! data->self->_priv->active_data ||
+	 data->self->_priv->active_data->widget != widget))
+      {
+	self_set_active_widget(data->self, widget);
+	self_draw_tips(data->self);
+      }
+  }}
+#line 734 "mn-tooltips.c"
+#undef __GOB_FUNCTION__
+
+#line 434 "mn-tooltips.gob"
+static void 
+mn_tooltips_hide_tip (GtkWidget * widget)
+#line 740 "mn-tooltips.c"
+{
+#define __GOB_FUNCTION__ "MN:Tooltips::hide_tip"
+#line 434 "mn-tooltips.gob"
+	g_return_if_fail (widget != NULL);
+#line 434 "mn-tooltips.gob"
+	g_return_if_fail (GTK_IS_WIDGET (widget));
+#line 747 "mn-tooltips.c"
+{
+#line 436 "mn-tooltips.gob"
+	
+    TooltipsData *data;
+
+    data = self_get_data(widget);
+      
+    if (data &&
+	(data->self->_priv->active_data &&
+	 data->self->_priv->active_data->widget == widget))
+      self_set_active_widget(data->self, NULL);
+  }}
+#line 760 "mn-tooltips.c"
+#undef __GOB_FUNCTION__
+
+#line 447 "mn-tooltips.gob"
+static gboolean 
+mn_tooltips_recently_shown (MNTooltips * self)
+#line 766 "mn-tooltips.c"
+{
+#define __GOB_FUNCTION__ "MN:Tooltips::recently_shown"
+#line 447 "mn-tooltips.gob"
+	g_return_val_if_fail (self != NULL, (gboolean )0);
+#line 447 "mn-tooltips.gob"
+	g_return_val_if_fail (MN_IS_TOOLTIPS (self), (gboolean )0);
+#line 773 "mn-tooltips.c"
+{
+#line 449 "mn-tooltips.gob"
+	
+    GTimeVal now;
+    glong msec;
+      
+    g_get_current_time (&now);
+    msec = (now.tv_sec - selfp->last_popdown.tv_sec) * 1000 +
+      (now.tv_usec - selfp->last_popdown.tv_usec) / 1000;
+    return (msec < STICKY_REVERT_DELAY);
+  }}
+#line 785 "mn-tooltips.c"
+#undef __GOB_FUNCTION__
+
+#line 459 "mn-tooltips.gob"
+static gboolean 
+mn_tooltips_get_keyboard_mode (GtkWidget * widget)
+#line 791 "mn-tooltips.c"
+{
+#define __GOB_FUNCTION__ "MN:Tooltips::get_keyboard_mode"
+#line 459 "mn-tooltips.gob"
+	g_return_val_if_fail (widget != NULL, (gboolean )0);
+#line 459 "mn-tooltips.gob"
+	g_return_val_if_fail (GTK_IS_WIDGET (widget), (gboolean )0);
+#line 798 "mn-tooltips.c"
+{
+#line 461 "mn-tooltips.gob"
+	
+    GtkWidget *toplevel = gtk_widget_get_toplevel(widget);
+
+    if (GTK_IS_WINDOW(toplevel))
+      return GPOINTER_TO_INT(g_object_get_data(G_OBJECT(toplevel), TOOLTIPS_KEYBOARD_MODE));
+    else
+      return FALSE;
+  }}
+#line 809 "mn-tooltips.c"
+#undef __GOB_FUNCTION__
+
+#line 470 "mn-tooltips.gob"
+static void 
+mn_tooltips_start_keyboard_mode (GtkWidget * widget)
+#line 815 "mn-tooltips.c"
+{
+#define __GOB_FUNCTION__ "MN:Tooltips::start_keyboard_mode"
+#line 470 "mn-tooltips.gob"
+	g_return_if_fail (widget != NULL);
+#line 470 "mn-tooltips.gob"
+	g_return_if_fail (GTK_IS_WIDGET (widget));
+#line 822 "mn-tooltips.c"
+{
+#line 472 "mn-tooltips.gob"
+	
+    GtkWidget *toplevel = gtk_widget_get_toplevel(widget);
+
+    if (GTK_IS_WINDOW(toplevel))
+      {
+	GtkWidget *focus = GTK_WINDOW(toplevel)->focus_widget;
+	
+	g_object_set_data(G_OBJECT(toplevel), TOOLTIPS_KEYBOARD_MODE, GINT_TO_POINTER(TRUE));
+	
+	if (focus)
+	  self_show_tip(focus);
+      }
+  }}
+#line 838 "mn-tooltips.c"
+#undef __GOB_FUNCTION__
+
+#line 486 "mn-tooltips.gob"
+static void 
+mn_tooltips_stop_keyboard_mode (GtkWidget * widget)
+#line 844 "mn-tooltips.c"
+{
+#define __GOB_FUNCTION__ "MN:Tooltips::stop_keyboard_mode"
+#line 486 "mn-tooltips.gob"
+	g_return_if_fail (widget != NULL);
+#line 486 "mn-tooltips.gob"
+	g_return_if_fail (GTK_IS_WIDGET (widget));
+#line 851 "mn-tooltips.c"
+{
+#line 488 "mn-tooltips.gob"
+	
+    GtkWidget *toplevel = gtk_widget_get_toplevel(widget);
+
+    if (GTK_IS_WINDOW(toplevel))
+      {
+	GtkWidget *focus = GTK_WINDOW(toplevel)->focus_widget;
+
+	if (focus)
+	  self_hide_tip(focus);
+	
+	g_object_set_data(G_OBJECT(toplevel), TOOLTIPS_KEYBOARD_MODE, GINT_TO_POINTER(FALSE));
+      }
+  }}
+#line 867 "mn-tooltips.c"
+#undef __GOB_FUNCTION__
+
+#line 502 "mn-tooltips.gob"
+static void 
+mn_tooltips_start_delay (MNTooltips * self, GtkWidget * widget)
+#line 873 "mn-tooltips.c"
+{
+#define __GOB_FUNCTION__ "MN:Tooltips::start_delay"
+#line 502 "mn-tooltips.gob"
+	g_return_if_fail (self != NULL);
+#line 502 "mn-tooltips.gob"
+	g_return_if_fail (MN_IS_TOOLTIPS (self));
+#line 880 "mn-tooltips.c"
+{
+#line 504 "mn-tooltips.gob"
+	
+    TooltipsData *old_data;
+  
+    old_data = selfp->active_data;
+    if (! old_data || old_data->widget != widget)
+      {
+	self_set_active_widget(self, widget);
+	selfp->timeout_id = g_timeout_add((selfp->use_sticky_delay && self_recently_shown(self)) ? STICKY_DELAY : DELAY,
+					  self_timeout_cb,
+					  self);
+      }
+  }}
+#line 895 "mn-tooltips.c"
+#undef __GOB_FUNCTION__
+
+#line 517 "mn-tooltips.gob"
+static void 
+mn_tooltips_event_after_h (GtkWidget * widget, GdkEvent * event, gpointer user_data)
+#line 901 "mn-tooltips.c"
+{
+#define __GOB_FUNCTION__ "MN:Tooltips::event_after_h"
+#line 517 "mn-tooltips.gob"
+	g_return_if_fail (widget != NULL);
+#line 517 "mn-tooltips.gob"
+	g_return_if_fail (GTK_IS_WIDGET (widget));
+#line 517 "mn-tooltips.gob"
+	g_return_if_fail (event != NULL);
+#line 910 "mn-tooltips.c"
+{
+#line 521 "mn-tooltips.gob"
+	
+    Self *self;
+    TooltipsData *old_data;
+    GtkWidget *event_widget;
+    gboolean keyboard_mode = self_get_keyboard_mode(widget);
+
+    if ((event->type == GDK_LEAVE_NOTIFY || event->type == GDK_ENTER_NOTIFY) &&
+	event->crossing.detail == GDK_NOTIFY_INFERIOR)
+      return;
+
+    old_data = self_get_data(widget);
+    self = old_data->self;
+
+    if (keyboard_mode)
+      {
+	switch (event->type)
+	  {
+	  case GDK_FOCUS_CHANGE:
+	    if (event->focus_change.in)
+	      self_show_tip(widget);
+	    else
+	      self_hide_tip(widget);
+	    break;
+
+	  default:
+	    break;
+	  }
+      }
+    else
+      {
+	if (event->type != GDK_KEY_PRESS && event->type != GDK_KEY_RELEASE)
+	  {
+	    event_widget = gtk_get_event_widget(event);
+	    if (event_widget != widget)
+	      return;
+	  }
+  
+	switch (event->type)
+	  {
+	  case GDK_EXPOSE:
+	    /* do nothing */
+	    break;
+
+	  case GDK_ENTER_NOTIFY:
+	    if (! (GTK_IS_MENU_ITEM(widget) && GTK_MENU_ITEM(widget)->submenu))
+	      self_start_delay(self, widget);
+	    break;
+	  
+	  case GDK_LEAVE_NOTIFY:
+	    self_set_active_widget(self, NULL);
+	    selfp->use_sticky_delay = selfp->window && GTK_WIDGET_VISIBLE(selfp->window);
+	    break;
+
+	  case GDK_MOTION_NOTIFY:
+	    /* Handle menu items specially ... pend popup for each motion
+	     * on other widgets, we ignore motion.
+	     */
+	    if (GTK_IS_MENU_ITEM(widget) && ! GTK_MENU_ITEM(widget)->submenu)
+	      {
+		/* Completely evil hack to make sure we get the LEAVE_NOTIFY
+		 */
+		GTK_PRIVATE_SET_FLAG(widget, GTK_LEAVE_PENDING);
+		self_set_active_widget(self, NULL);
+		self_start_delay(self, widget);
+		break;
+	      }
+	    break;		/* ignore */
+
+	  case GDK_BUTTON_PRESS:
+	  case GDK_BUTTON_RELEASE:
+	  case GDK_KEY_PRESS:
+	  case GDK_KEY_RELEASE:
+	  case GDK_PROXIMITY_IN:
+	  case GDK_SCROLL:
+	    self_set_active_widget(self, NULL);
+	    break;
+
+	  default:
+	    break;
+	  }
+      }
+  }}
+#line 995 "mn-tooltips.c"
+#undef __GOB_FUNCTION__
+
+#line 604 "mn-tooltips.gob"
+static void 
+mn_tooltips_widget_unmap (GtkWidget * widget, gpointer user_data)
+#line 1001 "mn-tooltips.c"
+{
+#define __GOB_FUNCTION__ "MN:Tooltips::widget_unmap"
+#line 604 "mn-tooltips.gob"
+	g_return_if_fail (widget != NULL);
+#line 604 "mn-tooltips.gob"
+	g_return_if_fail (GTK_IS_WIDGET (widget));
+#line 1008 "mn-tooltips.c"
+{
+#line 606 "mn-tooltips.gob"
+	
+    TooltipsData *data = user_data;
+    Self *self = data->self;
+  
+    if (selfp->active_data &&
+	(selfp->active_data->widget == widget))
+      self_set_active_widget(self, NULL);
+  }}
+#line 1019 "mn-tooltips.c"
+#undef __GOB_FUNCTION__
+
+#line 615 "mn-tooltips.gob"
+static void 
+mn_tooltips_widget_remove (GtkWidget * widget, gpointer user_data)
+#line 1025 "mn-tooltips.c"
+{
+#define __GOB_FUNCTION__ "MN:Tooltips::widget_remove"
+#line 615 "mn-tooltips.gob"
+	g_return_if_fail (widget != NULL);
+#line 615 "mn-tooltips.gob"
+	g_return_if_fail (GTK_IS_WIDGET (widget));
+#line 1032 "mn-tooltips.c"
+{
+#line 617 "mn-tooltips.gob"
+	
+    TooltipsData *data = user_data;
+    Self *self = data->self;
+
+    self_widget_unmap(widget, user_data);
+    selfp->data_list = g_slist_remove(selfp->data_list, data);
+    self_destroy_data(data);
+  }}
+#line 1043 "mn-tooltips.c"
+#undef __GOB_FUNCTION__
+
+#line 626 "mn-tooltips.gob"
+void 
+mn_tooltips_toggle_keyboard_mode (GtkWidget * widget)
+#line 1049 "mn-tooltips.c"
+{
+#define __GOB_FUNCTION__ "MN:Tooltips::toggle_keyboard_mode"
+#line 626 "mn-tooltips.gob"
+	g_return_if_fail (widget != NULL);
+#line 626 "mn-tooltips.gob"
+	g_return_if_fail (GTK_IS_WIDGET (widget));
+#line 1056 "mn-tooltips.c"
+{
+#line 628 "mn-tooltips.gob"
+	
+    if (self_get_keyboard_mode(widget))
+      self_stop_keyboard_mode(widget);
+    else
+      self_start_keyboard_mode(widget);
+  }}
+#line 1065 "mn-tooltips.c"
+#undef __GOB_FUNCTION__
+
+#line 635 "mn-tooltips.gob"
+MNTooltips * 
+mn_tooltips_new (void)
+#line 1071 "mn-tooltips.c"
+{
+#define __GOB_FUNCTION__ "MN:Tooltips::new"
+{
+#line 637 "mn-tooltips.gob"
+	
+    return GET_NEW;
+  }}
+#line 1079 "mn-tooltips.c"
+#undef __GOB_FUNCTION__
diff --git a/src/mn-tooltips.gob b/src/mn-tooltips.gob
@@ -0,0 +1,640 @@
+/* 
+ * MNTooltips - a tooltips implementation allowing to use an arbitrary
+ * widget as tooltip (heavily based on GtkTooltips)
+ *
+ * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
+ * Copyright (c) 2004 Jean-Yves Lefort <jylefort@brutele.be>
+ *
+ * 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.
+ */
+
+requires 2.0.10
+
+%headertop{
+#include <gtk/gtk.h>
+%}
+
+%privateheader{
+  typedef struct
+  {
+    MNTooltips	*self;
+    GtkWidget	*widget;
+    GtkWidget	*tip_widget;
+  } TooltipsData;
+%}
+
+%{
+#include "mn-util.h"
+#include <eel/eel.h>
+
+#define TOOLTIPS_DATA			"mn-tooltips-data"
+#define TOOLTIPS_INFO			"mn-tooltips-info"
+#define TOOLTIPS_KEYBOARD_MODE		"gtk-tooltips-keyboard-mode" /* compatible with GtkTooltips */
+
+#define DELAY 500			/* Default delay in ms */
+#define STICKY_DELAY 0			/* Delay before popping up next tip
+					 * if we're sticky
+					 */
+#define STICKY_REVERT_DELAY 1000	/* Delay before sticky tooltips revert
+					 * to normal
+					 */
+
+  /* The private flags that are used in the private_flags member of GtkWidget.
+   */
+  typedef enum
+  {
+    PRIVATE_GTK_LEAVE_PENDING	= 1 <<  4
+  } GtkPrivateFlags;
+
+  /* Macros for extracting a widgets private_flags from GtkWidget.
+   */
+#define GTK_PRIVATE_FLAGS(wid)            (GTK_WIDGET (wid)->private_flags)
+  
+  /* Macros for setting and clearing private widget flags.
+   * we use a preprocessor string concatenation here for a clear
+   * flags/private_flags distinction at the cost of single flag operations.
+   */
+#define GTK_PRIVATE_SET_FLAG(wid,flag)    G_STMT_START{ (GTK_PRIVATE_FLAGS (wid) |= (PRIVATE_ ## flag)); }G_STMT_END
+%} 
+
+class MN:Tooltips from G:Object
+{
+  private GtkWidget *window;
+  private TooltipsData *active_data;
+  private GSList *data_list;
+
+  private gboolean use_sticky_delay;
+  private GTimeVal last_popdown;
+  private unsigned int timeout_id;
+  
+  override (G:Object) void
+    finalize (G:Object *object (check null type))
+  {
+    Self *self = SELF(object);
+    GSList *l;
+
+    if (selfp->timeout_id)
+      g_source_remove(selfp->timeout_id);
+
+    MN_LIST_FOREACH(l, selfp->data_list)
+      {
+	TooltipsData *data = l->data;
+	self_widget_remove(data->widget, data);
+      }
+
+    self_unset_window(self);
+
+    PARENT_HANDLER(object);
+  }
+
+  private void
+    destroy_data (TooltipsData *data)
+  {
+    g_object_disconnect(data->widget,
+			"any-signal", self_event_after_h, data,
+			"any-signal", self_widget_unmap, data,
+			"any-signal", self_widget_remove, data,
+			NULL);
+
+    g_object_set_data(G_OBJECT(data->widget), TOOLTIPS_DATA, NULL);
+    g_object_unref(data->widget);
+    g_object_unref(data->tip_widget);
+    g_free(data);
+  }
+
+  private void
+    display_closed_h (Gdk:Display *display (check null type),
+		      gboolean is_error,
+		      gpointer user_data)
+  {
+    Self *self = SELF(user_data);
+    self_unset_window(self);
+  }
+
+  private void
+    disconnect_display_closed (self)
+  {
+    g_signal_handlers_disconnect_by_func(gtk_widget_get_display(selfp->window),
+					 self_display_closed_h,
+					 self);
+  }
+
+  private void
+    unset_window (self)
+  {
+    if (selfp->window)
+      {
+	self_disconnect_display_closed(self);
+	gtk_widget_destroy(selfp->window);
+      }
+  }
+
+  private void
+    update_screen (self, gboolean new_window)
+  {
+    gboolean screen_changed = FALSE;
+
+    if (selfp->active_data && selfp->active_data->widget)
+      {
+	GdkScreen *screen = gtk_widget_get_screen(selfp->active_data->widget);
+
+	screen_changed = (screen != gtk_widget_get_screen(selfp->window));
+
+	if (screen_changed)
+	  {
+	    if (! new_window)
+	      self_disconnect_display_closed(self);
+      
+	    gtk_window_set_screen(GTK_WINDOW(selfp->window), screen);
+	  }
+      }
+
+    if (screen_changed || new_window)
+      g_signal_connect(gtk_widget_get_display(selfp->window),
+		       "closed",
+		       G_CALLBACK(self_display_closed_h),
+		       self);
+  }
+
+  private void
+    force_window (self)
+  {
+    if (! selfp->window)
+      {
+	selfp->window = gtk_window_new(GTK_WINDOW_POPUP);
+	self_update_screen(self, TRUE);
+	gtk_widget_set_app_paintable(selfp->window, TRUE);
+	gtk_window_set_resizable(GTK_WINDOW(selfp->window), FALSE);
+	gtk_widget_set_name(selfp->window, "gtk-tooltips");
+	gtk_container_set_border_width(GTK_CONTAINER(selfp->window), 12);
+
+	g_signal_connect_swapped(selfp->window,
+				 "expose-event",
+				 G_CALLBACK(self_paint_window), 
+				 self);
+
+	eel_add_weak_pointer(&selfp->window);
+      }
+  }
+
+  private TooltipsData *
+    get_data (Gtk:Widget *widget (check null type))
+  {
+    return g_object_get_data(G_OBJECT(widget), TOOLTIPS_DATA);
+  }
+
+  public void
+    set_tip_widget (self,
+		    Gtk:Widget *widget (check null type),
+		    Gtk:Widget *tip_widget)
+  {
+    TooltipsData *data;
+
+    data = self_get_data(widget);
+
+    if (! tip_widget)
+      {
+	if (data)
+	  self_widget_remove(data->widget, data);
+	return;
+      }
+
+    if (selfp->active_data
+	&& selfp->active_data->widget == widget
+	&& GTK_WIDGET_DRAWABLE(selfp->active_data->widget))
+      {
+	if (data->tip_widget)
+	  g_object_unref(data->tip_widget);
+
+	data->tip_widget = tip_widget;
+
+	if (data->tip_widget)
+	  {
+	    g_object_ref(data->tip_widget);
+	    gtk_object_sink(GTK_OBJECT(data->tip_widget));
+	  }
+
+	self_draw_tips(self);
+      }
+    else
+      {
+	g_object_ref(widget);
+
+	if (data)
+	  self_widget_remove(data->widget, data);
+	
+	data = g_new0(TooltipsData, 1);
+	data->self = self;
+	data->widget = widget;
+	data->tip_widget = tip_widget;
+
+	if (data->tip_widget)
+	  {
+	    g_object_ref(data->tip_widget);
+	    gtk_object_sink(GTK_OBJECT(data->tip_widget));
+	  }
+
+	selfp->data_list = g_slist_append(selfp->data_list, data);
+	g_signal_connect_after(widget, "event-after", G_CALLBACK(self_event_after_h), data);
+
+	g_object_set_data(G_OBJECT(widget), TOOLTIPS_DATA, data);
+
+	g_object_connect(widget,
+			 "signal::unmap", self_widget_unmap, data,
+			 "signal::unrealize", self_widget_unmap, data,
+			 "signal::destroy", self_widget_remove, data,
+			 NULL);
+      }
+  }
+  
+  private gboolean
+    paint_window (self)
+  {
+    GtkRequisition req;
+
+    gtk_widget_size_request(selfp->window, &req);
+    gtk_paint_flat_box(selfp->window->style,
+		       selfp->window->window,
+		       GTK_STATE_NORMAL,
+		       GTK_SHADOW_OUT, 
+		       NULL,
+		       selfp->window,
+		       "tooltip",
+		       0,
+		       0,
+		       req.width,
+		       req.height);
+    
+    return FALSE;
+  }
+  
+  private void
+    draw_tips (self)
+  {
+    GtkRequisition requisition;
+    GtkWidget *widget;
+    gint x, y, w, h;
+    TooltipsData *data;
+    GtkWidget *child;
+    gboolean keyboard_mode;
+    GdkScreen *screen;
+    GdkScreen *pointer_screen;
+    gint monitor_num, px, py;
+    GdkRectangle monitor;
+
+    if (! selfp->window)
+      self_force_window(self);
+    else if (GTK_WIDGET_VISIBLE(selfp->window))
+      g_get_current_time(&selfp->last_popdown);
+
+    gtk_widget_ensure_style(selfp->window);
+
+    widget = selfp->active_data->widget;
+    g_object_set_data(G_OBJECT(selfp->window), TOOLTIPS_INFO, self);
+
+    keyboard_mode = self_get_keyboard_mode(widget);
+
+    self_update_screen(self, FALSE);
+  
+    screen = gtk_widget_get_screen(widget);
+
+    data = selfp->active_data;
+
+    child = GTK_BIN(selfp->window)->child;
+    if (child)
+      gtk_container_remove(GTK_CONTAINER(selfp->window), child);
+
+    if (data->tip_widget)
+      {
+	gtk_container_add(GTK_CONTAINER(selfp->window), data->tip_widget);
+	gtk_widget_show(data->tip_widget);
+      }
+  
+    gtk_widget_size_request(selfp->window, &requisition);
+    w = requisition.width;
+    h = requisition.height;
+
+    gdk_window_get_origin(widget->window, &x, &y);
+    if (GTK_WIDGET_NO_WINDOW(widget))
+      {
+	x += widget->allocation.x;
+	y += widget->allocation.y;
+      }
+
+    x += widget->allocation.width / 2;
+    
+    if (! keyboard_mode)
+      gdk_window_get_pointer(gdk_screen_get_root_window(screen), &x, NULL, NULL);
+
+    x -= (w / 2 + 4);
+
+    gdk_display_get_pointer(gdk_screen_get_display(screen), &pointer_screen, &px, &py, NULL);
+    if (pointer_screen != screen) 
+      {
+	px = x;
+	py = y;
+      }
+    monitor_num = gdk_screen_get_monitor_at_point(screen, px, py);
+    gdk_screen_get_monitor_geometry(screen, monitor_num, &monitor);
+
+    if ((x + w) > monitor.x + monitor.width)
+      x -= (x + w) - (monitor.x + monitor.width);
+    else if (x < monitor.x)
+      x = monitor.x;
+
+    if ((y + h + widget->allocation.height + 4) > monitor.y + monitor.height
+	&& (y - 4) > monitor.y)
+      y = y - h - 4;
+    else
+      y = y + widget->allocation.height + 4;
+
+    gtk_window_move(GTK_WINDOW(selfp->window), x, y);
+    gtk_widget_show(selfp->window);
+  }
+
+  private gboolean
+    timeout_cb (gpointer data)
+  {
+    Self *self = SELF(data);
+
+    GDK_THREADS_ENTER ();
+      
+    if (selfp->active_data != NULL && GTK_WIDGET_DRAWABLE(selfp->active_data->widget))
+      self_draw_tips(self);
+      
+    GDK_THREADS_LEAVE ();
+
+    return FALSE;		/* remove timeout */
+  }
+
+  private void
+    set_active_widget (self, Gtk:Widget *widget)
+  {
+    if (selfp->window)
+      {
+	if (GTK_WIDGET_VISIBLE(selfp->window))
+	  g_get_current_time(&selfp->last_popdown);
+	gtk_widget_hide(selfp->window);
+      }
+    if (selfp->timeout_id)
+      {
+	g_source_remove(selfp->timeout_id);
+	selfp->timeout_id = 0;
+      }
+  
+    selfp->active_data = NULL;
+  
+    if (widget)
+      {
+	GSList *l;
+
+	MN_LIST_FOREACH(l, selfp->data_list)
+	{
+	  TooltipsData *data = l->data;
+	  
+	  if (data->widget == widget && GTK_WIDGET_DRAWABLE(widget))
+	    {
+	      selfp->active_data = data;
+	      break;
+	    }
+	}
+      }
+    else
+      selfp->use_sticky_delay = FALSE;
+  }
+
+  private void
+    show_tip (Gtk:Widget *widget (check null type))
+  {
+    TooltipsData *data;
+
+    data = self_get_data(widget);
+
+    if (data &&
+	(! data->self->_priv->active_data ||
+	 data->self->_priv->active_data->widget != widget))
+      {
+	self_set_active_widget(data->self, widget);
+	self_draw_tips(data->self);
+      }
+  }
+
+  private void
+    hide_tip (Gtk:Widget *widget (check null type))
+  {
+    TooltipsData *data;
+
+    data = self_get_data(widget);
+      
+    if (data &&
+	(data->self->_priv->active_data &&
+	 data->self->_priv->active_data->widget == widget))
+      self_set_active_widget(data->self, NULL);
+  }
+    
+  private gboolean
+    recently_shown (self)
+  {
+    GTimeVal now;
+    glong msec;
+      
+    g_get_current_time (&now);
+    msec = (now.tv_sec - selfp->last_popdown.tv_sec) * 1000 +
+      (now.tv_usec - selfp->last_popdown.tv_usec) / 1000;
+    return (msec < STICKY_REVERT_DELAY);
+  }
+
+  private gboolean
+    get_keyboard_mode (Gtk:Widget *widget (check null type))
+  {
+    GtkWidget *toplevel = gtk_widget_get_toplevel(widget);
+
+    if (GTK_IS_WINDOW(toplevel))
+      return GPOINTER_TO_INT(g_object_get_data(G_OBJECT(toplevel), TOOLTIPS_KEYBOARD_MODE));
+    else
+      return FALSE;
+  }
+
+  private void
+    start_keyboard_mode (Gtk:Widget *widget (check null type))
+  {
+    GtkWidget *toplevel = gtk_widget_get_toplevel(widget);
+
+    if (GTK_IS_WINDOW(toplevel))
+      {
+	GtkWidget *focus = GTK_WINDOW(toplevel)->focus_widget;
+	
+	g_object_set_data(G_OBJECT(toplevel), TOOLTIPS_KEYBOARD_MODE, GINT_TO_POINTER(TRUE));
+	
+	if (focus)
+	  self_show_tip(focus);
+      }
+  }
+
+  private void
+    stop_keyboard_mode (Gtk:Widget *widget (check null type))
+  {
+    GtkWidget *toplevel = gtk_widget_get_toplevel(widget);
+
+    if (GTK_IS_WINDOW(toplevel))
+      {
+	GtkWidget *focus = GTK_WINDOW(toplevel)->focus_widget;
+
+	if (focus)
+	  self_hide_tip(focus);
+	
+	g_object_set_data(G_OBJECT(toplevel), TOOLTIPS_KEYBOARD_MODE, GINT_TO_POINTER(FALSE));
+      }
+  }
+  
+  private void
+    start_delay (self, Gtk:Widget *widget)
+  {
+    TooltipsData *old_data;
+  
+    old_data = selfp->active_data;
+    if (! old_data || old_data->widget != widget)
+      {
+	self_set_active_widget(self, widget);
+	selfp->timeout_id = g_timeout_add((selfp->use_sticky_delay && self_recently_shown(self)) ? STICKY_DELAY : DELAY,
+					  self_timeout_cb,
+					  self);
+      }
+  }
+
+  private void
+    event_after_h (Gtk:Widget *widget (check null type),
+		   GdkEvent *event (check null),
+		   gpointer user_data)
+  {
+    Self *self;
+    TooltipsData *old_data;
+    GtkWidget *event_widget;
+    gboolean keyboard_mode = self_get_keyboard_mode(widget);
+
+    if ((event->type == GDK_LEAVE_NOTIFY || event->type == GDK_ENTER_NOTIFY) &&
+	event->crossing.detail == GDK_NOTIFY_INFERIOR)
+      return;
+
+    old_data = self_get_data(widget);
+    self = old_data->self;
+
+    if (keyboard_mode)
+      {
+	switch (event->type)
+	  {
+	  case GDK_FOCUS_CHANGE:
+	    if (event->focus_change.in)
+	      self_show_tip(widget);
+	    else
+	      self_hide_tip(widget);
+	    break;
+
+	  default:
+	    break;
+	  }
+      }
+    else
+      {
+	if (event->type != GDK_KEY_PRESS && event->type != GDK_KEY_RELEASE)
+	  {
+	    event_widget = gtk_get_event_widget(event);
+	    if (event_widget != widget)
+	      return;
+	  }
+  
+	switch (event->type)
+	  {
+	  case GDK_EXPOSE:
+	    /* do nothing */
+	    break;
+
+	  case GDK_ENTER_NOTIFY:
+	    if (! (GTK_IS_MENU_ITEM(widget) && GTK_MENU_ITEM(widget)->submenu))
+	      self_start_delay(self, widget);
+	    break;
+	  
+	  case GDK_LEAVE_NOTIFY:
+	    self_set_active_widget(self, NULL);
+	    selfp->use_sticky_delay = selfp->window && GTK_WIDGET_VISIBLE(selfp->window);
+	    break;
+
+	  case GDK_MOTION_NOTIFY:
+	    /* Handle menu items specially ... pend popup for each motion
+	     * on other widgets, we ignore motion.
+	     */
+	    if (GTK_IS_MENU_ITEM(widget) && ! GTK_MENU_ITEM(widget)->submenu)
+	      {
+		/* Completely evil hack to make sure we get the LEAVE_NOTIFY
+		 */
+		GTK_PRIVATE_SET_FLAG(widget, GTK_LEAVE_PENDING);
+		self_set_active_widget(self, NULL);
+		self_start_delay(self, widget);
+		break;
+	      }
+	    break;		/* ignore */
+
+	  case GDK_BUTTON_PRESS:
+	  case GDK_BUTTON_RELEASE:
+	  case GDK_KEY_PRESS:
+	  case GDK_KEY_RELEASE:
+	  case GDK_PROXIMITY_IN:
+	  case GDK_SCROLL:
+	    self_set_active_widget(self, NULL);
+	    break;
+
+	  default:
+	    break;
+	  }
+      }
+  }
+
+  private void
+    widget_unmap (Gtk:Widget *widget (check null type), gpointer user_data)
+  {
+    TooltipsData *data = user_data;
+    Self *self = data->self;
+  
+    if (selfp->active_data &&
+	(selfp->active_data->widget == widget))
+      self_set_active_widget(self, NULL);
+  }
+
+  private void
+    widget_remove (Gtk:Widget *widget (check null type), gpointer user_data)
+  {
+    TooltipsData *data = user_data;
+    Self *self = data->self;
+
+    self_widget_unmap(widget, user_data);
+    selfp->data_list = g_slist_remove(selfp->data_list, data);
+    self_destroy_data(data);
+  }
+
+  public void
+    toggle_keyboard_mode (Gtk:Widget *widget (check null type))
+  {
+    if (self_get_keyboard_mode(widget))
+      self_stop_keyboard_mode(widget);
+    else
+      self_start_keyboard_mode(widget);
+  }
+  
+  public MNTooltips *
+    new (void)
+  {
+    return GET_NEW;
+  }
+}
diff --git a/src/mn-tooltips.h b/src/mn-tooltips.h
@@ -0,0 +1,67 @@
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
+
+#include <glib.h>
+#include <glib-object.h>
+
+
+#include <gtk/gtk.h>
+
+#ifndef __MN_TOOLTIPS_H__
+#define __MN_TOOLTIPS_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+/*
+ * Type checking and casting macros
+ */
+#define MN_TYPE_TOOLTIPS	(mn_tooltips_get_type())
+#define MN_TOOLTIPS(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_tooltips_get_type(), MNTooltips)
+#define MN_TOOLTIPS_CONST(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_tooltips_get_type(), MNTooltips const)
+#define MN_TOOLTIPS_CLASS(klass)	G_TYPE_CHECK_CLASS_CAST((klass), mn_tooltips_get_type(), MNTooltipsClass)
+#define MN_IS_TOOLTIPS(obj)	G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_tooltips_get_type ())
+
+#define MN_TOOLTIPS_GET_CLASS(obj)	G_TYPE_INSTANCE_GET_CLASS((obj), mn_tooltips_get_type(), MNTooltipsClass)
+
+/* Private structure type */
+typedef struct _MNTooltipsPrivate MNTooltipsPrivate;
+
+/*
+ * Main object structure
+ */
+#ifndef __TYPEDEF_MN_TOOLTIPS__
+#define __TYPEDEF_MN_TOOLTIPS__
+typedef struct _MNTooltips MNTooltips;
+#endif
+struct _MNTooltips {
+	GObject __parent__;
+	/*< private >*/
+	MNTooltipsPrivate *_priv;
+};
+
+/*
+ * Class definition
+ */
+typedef struct _MNTooltipsClass MNTooltipsClass;
+struct _MNTooltipsClass {
+	GObjectClass __parent__;
+};
+
+
+/*
+ * Public methods
+ */
+GType	mn_tooltips_get_type	(void);
+void 	mn_tooltips_set_tip_widget	(MNTooltips * self,
+					GtkWidget * widget,
+					GtkWidget * tip_widget);
+void 	mn_tooltips_toggle_keyboard_mode	(GtkWidget * widget);
+MNTooltips * 	mn_tooltips_new	(void);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-unsupported-mailbox-private.h b/src/mn-unsupported-mailbox-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #ifndef __MN_UNSUPPORTED_MAILBOX_PRIVATE_H__
 #define __MN_UNSUPPORTED_MAILBOX_PRIVATE_H__
diff --git a/src/mn-unsupported-mailbox.c b/src/mn-unsupported-mailbox.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.10) on Mon Oct 25 15:24:35 2004
+/* Generated by GOB (v2.0.11) on Sun Oct 31 18:41:23 2004
    (do not edit directly) */
 
 /* End world hunger, donate to the World Food Programme, http://www.wfp.org */
 
 #define GOB_VERSION_MAJOR 2
 #define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 10
+#define GOB_VERSION_PATCHLEVEL 11
 
 #define selfp (self->_priv)
 
diff --git a/src/mn-unsupported-mailbox.h b/src/mn-unsupported-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-uri-private.h b/src/mn-uri-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #ifndef __MN_URI_PRIVATE_H__
 #define __MN_URI_PRIVATE_H__
diff --git a/src/mn-uri.c b/src/mn-uri.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.10) on Mon Oct 25 15:24:35 2004
+/* Generated by GOB (v2.0.11) on Sun Oct 31 18:41:23 2004
    (do not edit directly) */
 
 /* End world hunger, donate to the World Food Programme, http://www.wfp.org */
 
 #define GOB_VERSION_MAJOR 2
 #define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 10
+#define GOB_VERSION_PATCHLEVEL 11
 
 #define selfp (self->_priv)
 
diff --git a/src/mn-uri.h b/src/mn-uri.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.10)   (do not edit directly) */
+/* Generated by GOB (v2.0.11)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-util.c b/src/mn-util.c
@@ -531,7 +531,7 @@ mn_thread_create (GThreadFunc func, gpointer data)
 }
 
 /**
- * mn_tooltips_new:
+ * mn_gtk_tooltips_new:
  *
  * Creates and sinks a #GtkTooltips object.
  *
@@ -539,7 +539,7 @@ mn_thread_create (GThreadFunc func, gpointer data)
  *               reference count of 1).
  **/
 GtkTooltips *
-mn_tooltips_new (void)
+mn_gtk_tooltips_new (void)
 {
   GtkTooltips *tooltips;
 
@@ -551,21 +551,21 @@ mn_tooltips_new (void)
 }
 
 /**
- * mn_tooltips_set_tips:
+ * mn_gtk_tooltips_set_tips:
  * @tooltips: a #GtkTooltips object
  * @...: a %NULL-terminated list of widget-tip pairs
  *
  * Sets the tooltips of several widgets at once.
  *
  * <example>
- * mn_tooltips_set_tips(tooltips,
- *                      button, "Click here to proceed",
- *                      entry, "Your username",
- *                      NULL);
+ * mn_gtk_tooltips_set_tips(tooltips,
+ *                          button, "Click here to proceed",
+ *                          entry, "Your username",
+ *                          NULL);
  * </example>
  **/
 void
-mn_tooltips_set_tips (GtkTooltips *tooltips, ...)
+mn_gtk_tooltips_set_tips (GtkTooltips *tooltips, ...)
 {
   va_list args;
   GtkWidget *widget;
@@ -582,7 +582,7 @@ mn_tooltips_set_tips (GtkTooltips *tooltips, ...)
       tip = va_arg(args, const char *);
       g_return_if_fail(tip != NULL);
 
-      mn_tooltips_set_tip(tooltips, widget, tip);
+      mn_gtk_tooltips_set_tip(tooltips, widget, tip);
     }
   va_end(args);
 }
@@ -828,6 +828,25 @@ mn_position_get_type (void)
   return type;
 }
 
+GType
+mn_action_get_type (void)
+{
+  static GType type = 0;
+
+  if (type == 0)
+    {
+      static const GEnumValue values[] = {
+	{ MN_ACTION_DISPLAY_MAIL_SUMMARY, "MN_ACTION_DISPLAY_MAIL_SUMMARY", "display-mail-summary" },
+	{ MN_ACTION_LAUNCH_MAIL_READER, "MN_ACTION_LAUNCH_MAIL_READER", "launch-mail-reader" },
+	{ 0, NULL, NULL }
+      };
+
+      type = g_enum_register_static("MNAction", values);
+    }
+
+  return type;
+}
+
 /**
  * mn_g_object_connect:
  * @object: the object to associate the handlers with
@@ -908,3 +927,25 @@ mn_g_object_connect_weak_notify_cb (gpointer data, GObject *former_object)
     }
   g_free(handler);
 }
+
+void
+mn_execute_command (const char *conf_key)
+{
+  char *command;
+
+  g_return_if_fail(conf_key != NULL);
+
+  command = eel_gconf_get_string(conf_key);
+  if (command)
+    {
+      if (gnome_execute_shell(NULL, command) < 0)
+	mn_error_dialog(NULL,
+			NULL,
+			NULL,
+			_("A command error has occurred in Mail Notification"),
+			_("Unable to execute \"%s\": %s."),
+			command,
+			g_strerror(errno));
+      g_free(command);
+    }
+}
diff --git a/src/mn-util.h b/src/mn-util.h
@@ -76,11 +76,11 @@ void		mn_display_help			(GtkWindow	*parent,
 void		mn_thread_create		(GThreadFunc	func,
 						 gpointer	data);
 
-GtkTooltips	*mn_tooltips_new		(void);
-void		mn_tooltips_set_tips		(GtkTooltips	*tooltips,
+GtkTooltips	*mn_gtk_tooltips_new		(void);
+void		mn_gtk_tooltips_set_tips	(GtkTooltips	*tooltips,
 						 ...);
 
-#define mn_tooltips_set_tip(tooltips, widget, tip) \
+#define mn_gtk_tooltips_set_tip(tooltips, widget, tip) \
   gtk_tooltips_set_tip((tooltips), (widget), (tip), NULL)
 
 GtkWidget	*mn_menu_shell_append		(GtkMenuShell	*shell,
@@ -113,11 +113,22 @@ typedef enum
 GType		mn_position_get_type		(void);
 #define MN_TYPE_POSITION (mn_position_get_type())
 
+typedef enum
+{
+  MN_ACTION_DISPLAY_MAIL_SUMMARY,
+  MN_ACTION_LAUNCH_MAIL_READER
+} MNAction;
+
+GType		mn_action_get_type		(void);
+#define MN_TYPE_ACTION (mn_action_get_type())
+
 gpointer	mn_g_object_connect		(gpointer	object,
 						 gpointer	instance,
 						 const char	*signal_spec,
 						 ...);
 
+void		mn_execute_command		(const char	*conf_key);
+
 #define MN_STRING_TO_POINTER(str)	((*str) ? (str) : NULL)
 #define MN_POINTER_TO_STRING(ptr)	((ptr) ? (ptr) : "")
 
diff --git a/tests/Makefile.in b/tests/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.8.5 from Makefile.am.
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -43,9 +43,9 @@ noinst_PROGRAMS = test-uri$(EXEEXT) \
 subdir = tests
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/openssl.m4 \
-	$(top_srcdir)/m4/sasl2.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
+am__aclocal_m4_deps = $(top_srcdir)/m4/intltool.m4 \
+	$(top_srcdir)/m4/openssl.m4 $(top_srcdir)/m4/sasl2.m4 \
+	$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
@@ -70,11 +70,6 @@ test_vfs_read_line_smallblock_LDADD = $(LDADD)
 DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/mn-uri.Po ./$(DEPDIR)/test-uri.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/test_vfs_read_line_largeblock-mn-vfs.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/test_vfs_read_line_largeblock-test-vfs-read-line.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/test_vfs_read_line_smallblock-mn-vfs.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/test_vfs_read_line_smallblock-test-vfs-read-line.Po
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 CCLD = $(CC)
@@ -128,6 +123,7 @@ GNOME_LIBS = @GNOME_LIBS@
 GOB2 = @GOB2@
 GTK_CFLAGS = @GTK_CFLAGS@
 GTK_LIBS = @GTK_LIBS@
+ICONV = @ICONV@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -165,6 +161,7 @@ MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
 MAKEINFO = @MAKEINFO@
 MKINSTALLDIRS = @MKINSTALLDIRS@
 MSGFMT = @MSGFMT@
+MSGMERGE = @MSGMERGE@
 OBJEXT = @OBJEXT@
 OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
 OPENSSL_LIBS = @OPENSSL_LIBS@
@@ -225,6 +222,8 @@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
 bindir = @bindir@
 build_alias = @build_alias@
 datadir = @datadir@
@@ -346,96 +345,84 @@ distclean-compile:
 @am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 mn-uri.o: $(top_srcdir)/src/mn-uri.c
 @am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mn-uri.o -MD -MP -MF "$(DEPDIR)/mn-uri.Tpo" -c -o mn-uri.o `test -f '$(top_srcdir)/src/mn-uri.c' || echo '$(srcdir)/'`$(top_srcdir)/src/mn-uri.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mn-uri.Tpo" "$(DEPDIR)/mn-uri.Po"; else rm -f "$(DEPDIR)/mn-uri.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$(top_srcdir)/src/mn-uri.c' object='mn-uri.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/mn-uri.Po' tmpdepfile='$(DEPDIR)/mn-uri.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mn-uri.o `test -f '$(top_srcdir)/src/mn-uri.c' || echo '$(srcdir)/'`$(top_srcdir)/src/mn-uri.c
 
 mn-uri.obj: $(top_srcdir)/src/mn-uri.c
 @am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mn-uri.obj -MD -MP -MF "$(DEPDIR)/mn-uri.Tpo" -c -o mn-uri.obj `if test -f '$(top_srcdir)/src/mn-uri.c'; then $(CYGPATH_W) '$(top_srcdir)/src/mn-uri.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/mn-uri.c'; fi`; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mn-uri.Tpo" "$(DEPDIR)/mn-uri.Po"; else rm -f "$(DEPDIR)/mn-uri.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$(top_srcdir)/src/mn-uri.c' object='mn-uri.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/mn-uri.Po' tmpdepfile='$(DEPDIR)/mn-uri.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mn-uri.obj `if test -f '$(top_srcdir)/src/mn-uri.c'; then $(CYGPATH_W) '$(top_srcdir)/src/mn-uri.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/mn-uri.c'; fi`
 
 test_vfs_read_line_largeblock-mn-vfs.o: $(top_srcdir)/src/mn-vfs.c
 @am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_vfs_read_line_largeblock_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_vfs_read_line_largeblock-mn-vfs.o -MD -MP -MF "$(DEPDIR)/test_vfs_read_line_largeblock-mn-vfs.Tpo" -c -o test_vfs_read_line_largeblock-mn-vfs.o `test -f '$(top_srcdir)/src/mn-vfs.c' || echo '$(srcdir)/'`$(top_srcdir)/src/mn-vfs.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/test_vfs_read_line_largeblock-mn-vfs.Tpo" "$(DEPDIR)/test_vfs_read_line_largeblock-mn-vfs.Po"; else rm -f "$(DEPDIR)/test_vfs_read_line_largeblock-mn-vfs.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$(top_srcdir)/src/mn-vfs.c' object='test_vfs_read_line_largeblock-mn-vfs.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/test_vfs_read_line_largeblock-mn-vfs.Po' tmpdepfile='$(DEPDIR)/test_vfs_read_line_largeblock-mn-vfs.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_vfs_read_line_largeblock_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_vfs_read_line_largeblock-mn-vfs.o `test -f '$(top_srcdir)/src/mn-vfs.c' || echo '$(srcdir)/'`$(top_srcdir)/src/mn-vfs.c
 
 test_vfs_read_line_largeblock-mn-vfs.obj: $(top_srcdir)/src/mn-vfs.c
 @am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_vfs_read_line_largeblock_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_vfs_read_line_largeblock-mn-vfs.obj -MD -MP -MF "$(DEPDIR)/test_vfs_read_line_largeblock-mn-vfs.Tpo" -c -o test_vfs_read_line_largeblock-mn-vfs.obj `if test -f '$(top_srcdir)/src/mn-vfs.c'; then $(CYGPATH_W) '$(top_srcdir)/src/mn-vfs.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/mn-vfs.c'; fi`; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/test_vfs_read_line_largeblock-mn-vfs.Tpo" "$(DEPDIR)/test_vfs_read_line_largeblock-mn-vfs.Po"; else rm -f "$(DEPDIR)/test_vfs_read_line_largeblock-mn-vfs.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$(top_srcdir)/src/mn-vfs.c' object='test_vfs_read_line_largeblock-mn-vfs.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/test_vfs_read_line_largeblock-mn-vfs.Po' tmpdepfile='$(DEPDIR)/test_vfs_read_line_largeblock-mn-vfs.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_vfs_read_line_largeblock_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_vfs_read_line_largeblock-mn-vfs.obj `if test -f '$(top_srcdir)/src/mn-vfs.c'; then $(CYGPATH_W) '$(top_srcdir)/src/mn-vfs.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/mn-vfs.c'; fi`
 
 test_vfs_read_line_largeblock-test-vfs-read-line.o: test-vfs-read-line.c
 @am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_vfs_read_line_largeblock_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_vfs_read_line_largeblock-test-vfs-read-line.o -MD -MP -MF "$(DEPDIR)/test_vfs_read_line_largeblock-test-vfs-read-line.Tpo" -c -o test_vfs_read_line_largeblock-test-vfs-read-line.o `test -f 'test-vfs-read-line.c' || echo '$(srcdir)/'`test-vfs-read-line.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/test_vfs_read_line_largeblock-test-vfs-read-line.Tpo" "$(DEPDIR)/test_vfs_read_line_largeblock-test-vfs-read-line.Po"; else rm -f "$(DEPDIR)/test_vfs_read_line_largeblock-test-vfs-read-line.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='test-vfs-read-line.c' object='test_vfs_read_line_largeblock-test-vfs-read-line.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/test_vfs_read_line_largeblock-test-vfs-read-line.Po' tmpdepfile='$(DEPDIR)/test_vfs_read_line_largeblock-test-vfs-read-line.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_vfs_read_line_largeblock_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_vfs_read_line_largeblock-test-vfs-read-line.o `test -f 'test-vfs-read-line.c' || echo '$(srcdir)/'`test-vfs-read-line.c
 
 test_vfs_read_line_largeblock-test-vfs-read-line.obj: test-vfs-read-line.c
 @am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_vfs_read_line_largeblock_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_vfs_read_line_largeblock-test-vfs-read-line.obj -MD -MP -MF "$(DEPDIR)/test_vfs_read_line_largeblock-test-vfs-read-line.Tpo" -c -o test_vfs_read_line_largeblock-test-vfs-read-line.obj `if test -f 'test-vfs-read-line.c'; then $(CYGPATH_W) 'test-vfs-read-line.c'; else $(CYGPATH_W) '$(srcdir)/test-vfs-read-line.c'; fi`; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/test_vfs_read_line_largeblock-test-vfs-read-line.Tpo" "$(DEPDIR)/test_vfs_read_line_largeblock-test-vfs-read-line.Po"; else rm -f "$(DEPDIR)/test_vfs_read_line_largeblock-test-vfs-read-line.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='test-vfs-read-line.c' object='test_vfs_read_line_largeblock-test-vfs-read-line.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/test_vfs_read_line_largeblock-test-vfs-read-line.Po' tmpdepfile='$(DEPDIR)/test_vfs_read_line_largeblock-test-vfs-read-line.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_vfs_read_line_largeblock_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_vfs_read_line_largeblock-test-vfs-read-line.obj `if test -f 'test-vfs-read-line.c'; then $(CYGPATH_W) 'test-vfs-read-line.c'; else $(CYGPATH_W) '$(srcdir)/test-vfs-read-line.c'; fi`
 
 test_vfs_read_line_smallblock-mn-vfs.o: $(top_srcdir)/src/mn-vfs.c
 @am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_vfs_read_line_smallblock_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_vfs_read_line_smallblock-mn-vfs.o -MD -MP -MF "$(DEPDIR)/test_vfs_read_line_smallblock-mn-vfs.Tpo" -c -o test_vfs_read_line_smallblock-mn-vfs.o `test -f '$(top_srcdir)/src/mn-vfs.c' || echo '$(srcdir)/'`$(top_srcdir)/src/mn-vfs.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/test_vfs_read_line_smallblock-mn-vfs.Tpo" "$(DEPDIR)/test_vfs_read_line_smallblock-mn-vfs.Po"; else rm -f "$(DEPDIR)/test_vfs_read_line_smallblock-mn-vfs.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$(top_srcdir)/src/mn-vfs.c' object='test_vfs_read_line_smallblock-mn-vfs.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/test_vfs_read_line_smallblock-mn-vfs.Po' tmpdepfile='$(DEPDIR)/test_vfs_read_line_smallblock-mn-vfs.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_vfs_read_line_smallblock_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_vfs_read_line_smallblock-mn-vfs.o `test -f '$(top_srcdir)/src/mn-vfs.c' || echo '$(srcdir)/'`$(top_srcdir)/src/mn-vfs.c
 
 test_vfs_read_line_smallblock-mn-vfs.obj: $(top_srcdir)/src/mn-vfs.c
 @am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_vfs_read_line_smallblock_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_vfs_read_line_smallblock-mn-vfs.obj -MD -MP -MF "$(DEPDIR)/test_vfs_read_line_smallblock-mn-vfs.Tpo" -c -o test_vfs_read_line_smallblock-mn-vfs.obj `if test -f '$(top_srcdir)/src/mn-vfs.c'; then $(CYGPATH_W) '$(top_srcdir)/src/mn-vfs.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/mn-vfs.c'; fi`; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/test_vfs_read_line_smallblock-mn-vfs.Tpo" "$(DEPDIR)/test_vfs_read_line_smallblock-mn-vfs.Po"; else rm -f "$(DEPDIR)/test_vfs_read_line_smallblock-mn-vfs.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$(top_srcdir)/src/mn-vfs.c' object='test_vfs_read_line_smallblock-mn-vfs.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/test_vfs_read_line_smallblock-mn-vfs.Po' tmpdepfile='$(DEPDIR)/test_vfs_read_line_smallblock-mn-vfs.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_vfs_read_line_smallblock_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_vfs_read_line_smallblock-mn-vfs.obj `if test -f '$(top_srcdir)/src/mn-vfs.c'; then $(CYGPATH_W) '$(top_srcdir)/src/mn-vfs.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/mn-vfs.c'; fi`
 
 test_vfs_read_line_smallblock-test-vfs-read-line.o: test-vfs-read-line.c
 @am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_vfs_read_line_smallblock_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_vfs_read_line_smallblock-test-vfs-read-line.o -MD -MP -MF "$(DEPDIR)/test_vfs_read_line_smallblock-test-vfs-read-line.Tpo" -c -o test_vfs_read_line_smallblock-test-vfs-read-line.o `test -f 'test-vfs-read-line.c' || echo '$(srcdir)/'`test-vfs-read-line.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/test_vfs_read_line_smallblock-test-vfs-read-line.Tpo" "$(DEPDIR)/test_vfs_read_line_smallblock-test-vfs-read-line.Po"; else rm -f "$(DEPDIR)/test_vfs_read_line_smallblock-test-vfs-read-line.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='test-vfs-read-line.c' object='test_vfs_read_line_smallblock-test-vfs-read-line.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/test_vfs_read_line_smallblock-test-vfs-read-line.Po' tmpdepfile='$(DEPDIR)/test_vfs_read_line_smallblock-test-vfs-read-line.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_vfs_read_line_smallblock_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_vfs_read_line_smallblock-test-vfs-read-line.o `test -f 'test-vfs-read-line.c' || echo '$(srcdir)/'`test-vfs-read-line.c
 
 test_vfs_read_line_smallblock-test-vfs-read-line.obj: test-vfs-read-line.c
 @am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_vfs_read_line_smallblock_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_vfs_read_line_smallblock-test-vfs-read-line.obj -MD -MP -MF "$(DEPDIR)/test_vfs_read_line_smallblock-test-vfs-read-line.Tpo" -c -o test_vfs_read_line_smallblock-test-vfs-read-line.obj `if test -f 'test-vfs-read-line.c'; then $(CYGPATH_W) 'test-vfs-read-line.c'; else $(CYGPATH_W) '$(srcdir)/test-vfs-read-line.c'; fi`; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/test_vfs_read_line_smallblock-test-vfs-read-line.Tpo" "$(DEPDIR)/test_vfs_read_line_smallblock-test-vfs-read-line.Po"; else rm -f "$(DEPDIR)/test_vfs_read_line_smallblock-test-vfs-read-line.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='test-vfs-read-line.c' object='test_vfs_read_line_smallblock-test-vfs-read-line.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/test_vfs_read_line_smallblock-test-vfs-read-line.Po' tmpdepfile='$(DEPDIR)/test_vfs_read_line_smallblock-test-vfs-read-line.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_vfs_read_line_smallblock_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_vfs_read_line_smallblock-test-vfs-read-line.obj `if test -f 'test-vfs-read-line.c'; then $(CYGPATH_W) 'test-vfs-read-line.c'; else $(CYGPATH_W) '$(srcdir)/test-vfs-read-line.c'; fi`
 uninstall-info-am:
 
@@ -538,7 +525,7 @@ mostlyclean-generic:
 clean-generic:
 
 distclean-generic:
-	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
diff --git a/ui/Makefile.in b/ui/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.8.5 from Makefile.am.
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -38,9 +38,9 @@ subdir = ui
 DIST_COMMON = $(am__dist_ui_DATA_DIST) $(srcdir)/Makefile.am \
 	$(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/openssl.m4 \
-	$(top_srcdir)/m4/sasl2.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
+am__aclocal_m4_deps = $(top_srcdir)/m4/intltool.m4 \
+	$(top_srcdir)/m4/openssl.m4 $(top_srcdir)/m4/sasl2.m4 \
+	$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
@@ -51,6 +51,12 @@ DIST_SOURCES =
 am__dist_ui_DATA_DIST = authentication.glade mailbox-properties.glade \
 	properties.glade summary-dialog.glade summary-popup.glade \
 	welcome.glade
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
 am__installdirs = "$(DESTDIR)$(uidir)"
 dist_uiDATA_INSTALL = $(INSTALL_DATA)
 DATA = $(dist_ui_DATA)
@@ -95,6 +101,7 @@ GNOME_LIBS = @GNOME_LIBS@
 GOB2 = @GOB2@
 GTK_CFLAGS = @GTK_CFLAGS@
 GTK_LIBS = @GTK_LIBS@
+ICONV = @ICONV@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -132,6 +139,7 @@ MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
 MAKEINFO = @MAKEINFO@
 MKINSTALLDIRS = @MKINSTALLDIRS@
 MSGFMT = @MSGFMT@
+MSGMERGE = @MSGMERGE@
 OBJEXT = @OBJEXT@
 OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
 OPENSSL_LIBS = @OPENSSL_LIBS@
@@ -192,6 +200,8 @@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
 bindir = @bindir@
 build_alias = @build_alias@
 datadir = @datadir@
@@ -271,7 +281,7 @@ install-dist_uiDATA: $(dist_ui_DATA)
 	test -z "$(uidir)" || $(mkdir_p) "$(DESTDIR)$(uidir)"
 	@list='$(dist_ui_DATA)'; for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  f=$(am__strip_dir) \
 	  echo " $(dist_uiDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(uidir)/$$f'"; \
 	  $(dist_uiDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(uidir)/$$f"; \
 	done
@@ -279,7 +289,7 @@ install-dist_uiDATA: $(dist_ui_DATA)
 uninstall-dist_uiDATA:
 	@$(NORMAL_UNINSTALL)
 	@list='$(dist_ui_DATA)'; for p in $$list; do \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  f=$(am__strip_dir) \
 	  echo " rm -f '$(DESTDIR)$(uidir)/$$f'"; \
 	  rm -f "$(DESTDIR)$(uidir)/$$f"; \
 	done
@@ -343,7 +353,7 @@ mostlyclean-generic:
 clean-generic:
 
 distclean-generic:
-	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
diff --git a/ui/properties.glade b/ui/properties.glade
@@ -267,6 +267,61 @@
 			  <property name="spacing">6</property>
 
 			  <child>
+			    <widget class="GtkHBox" id="hbox33">
+			      <property name="visible">True</property>
+			      <property name="homogeneous">False</property>
+			      <property name="spacing">12</property>
+
+			      <child>
+				<widget class="GtkCheckButton" id="command_mail_reader_check">
+				  <property name="visible">True</property>
+				  <property name="tooltip" translatable="yes">Whether to set a mail reader or not</property>
+				  <property name="can_focus">True</property>
+				  <property name="label" translatable="yes">_Mail reader:</property>
+				  <property name="use_underline">True</property>
+				  <property name="relief">GTK_RELIEF_NORMAL</property>
+				  <property name="focus_on_click">True</property>
+				  <property name="active">False</property>
+				  <property name="inconsistent">False</property>
+				  <property name="draw_indicator">True</property>
+				  <signal name="toggled" handler="mn_properties_toggled_h" last_modification_time="Fri, 29 Oct 2004 16:42:45 GMT"/>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">False</property>
+				  <property name="fill">False</property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkEntry" id="command_mail_reader_entry">
+				  <property name="visible">True</property>
+				  <property name="tooltip" translatable="yes">The command to run to launch the mail reader</property>
+				  <property name="can_focus">True</property>
+				  <property name="editable">True</property>
+				  <property name="visibility">True</property>
+				  <property name="max_length">0</property>
+				  <property name="text" translatable="yes"></property>
+				  <property name="has_frame">True</property>
+				  <property name="invisible_char" translatable="yes">*</property>
+				  <property name="activates_default">False</property>
+				  <signal name="changed" handler="mn_properties_mail_reader_entry_changed_h" after="yes" last_modification_time="Fri, 29 Oct 2004 16:48:44 GMT"/>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">True</property>
+				  <property name="fill">True</property>
+				</packing>
+			      </child>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">True</property>
+			      <property name="fill">True</property>
+			    </packing>
+			  </child>
+
+			  <child>
 			    <widget class="GtkHBox" id="hbox29">
 			      <property name="visible">True</property>
 			      <property name="homogeneous">False</property>
@@ -394,6 +449,127 @@
 		  <property name="fill">False</property>
 		</packing>
 	      </child>
+
+	      <child>
+		<widget class="GtkVBox" id="vbox26">
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">6</property>
+
+		  <child>
+		    <widget class="GtkLabel" id="label40">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">&lt;span weight=&quot;bold&quot;&gt;Double-click Action&lt;/span&gt;</property>
+		      <property name="use_underline">False</property>
+		      <property name="use_markup">True</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkHBox" id="hbox31">
+		      <property name="visible">True</property>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">0</property>
+
+		      <child>
+			<widget class="GtkLabel" id="label41">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">    </property>
+			  <property name="use_underline">False</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkVBox" id="vbox27">
+			  <property name="visible">True</property>
+			  <property name="homogeneous">False</property>
+			  <property name="spacing">6</property>
+
+			  <child>
+			    <widget class="GtkRadioButton" id="action_summary_radio">
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="label" translatable="yes">_Display the mail summary dialog</property>
+			      <property name="use_underline">True</property>
+			      <property name="relief">GTK_RELIEF_NORMAL</property>
+			      <property name="focus_on_click">True</property>
+			      <property name="active">False</property>
+			      <property name="inconsistent">False</property>
+			      <property name="draw_indicator">True</property>
+			      <signal name="toggled" handler="mn_properties_toggled_h" last_modification_time="Tue, 26 Oct 2004 11:27:38 GMT"/>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkRadioButton" id="action_mail_reader_radio">
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="label" translatable="yes">_Launch the mail reader</property>
+			      <property name="use_underline">True</property>
+			      <property name="relief">GTK_RELIEF_NORMAL</property>
+			      <property name="focus_on_click">True</property>
+			      <property name="active">False</property>
+			      <property name="inconsistent">False</property>
+			      <property name="draw_indicator">True</property>
+			      <property name="group">action_summary_radio</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">True</property>
+			  <property name="fill">True</property>
+			</packing>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">True</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">True</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
 	    </widget>
 	    <packing>
 	      <property name="tab_expand">False</property>
@@ -1052,6 +1228,26 @@
 			      <property name="fill">True</property>
 			    </packing>
 			  </child>
+
+			  <child>
+			    <widget class="GtkCheckButton" id="summary_only_recent_check">
+			      <property name="visible">True</property>
+			      <property name="tooltip" translatable="yes">Whether to hide previously displayed mail or not</property>
+			      <property name="can_focus">True</property>
+			      <property name="label" translatable="yes">Only display _recent mail</property>
+			      <property name="use_underline">True</property>
+			      <property name="relief">GTK_RELIEF_NORMAL</property>
+			      <property name="focus_on_click">True</property>
+			      <property name="active">False</property>
+			      <property name="inconsistent">False</property>
+			      <property name="draw_indicator">True</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
 			</widget>
 			<packing>
 			  <property name="padding">0</property>
diff --git a/ui/summary-dialog.glade b/ui/summary-dialog.glade
@@ -46,7 +46,7 @@
 	  </child>
 
 	  <child>
-	    <widget class="GtkButton" id="update_button">
+	    <widget class="GtkButton" id="mail_reader_button">
 	      <property name="visible">True</property>
 	      <property name="can_default">True</property>
 	      <property name="can_focus">True</property>
@@ -55,7 +55,78 @@
 	      <property name="response_id">1</property>
 
 	      <child>
-		<widget class="GtkAlignment" id="alignment1">
+		<widget class="GtkAlignment" id="alignment3">
+		  <property name="visible">True</property>
+		  <property name="xalign">0.5</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xscale">0</property>
+		  <property name="yscale">0</property>
+		  <property name="top_padding">0</property>
+		  <property name="bottom_padding">0</property>
+		  <property name="left_padding">0</property>
+		  <property name="right_padding">0</property>
+
+		  <child>
+		    <widget class="GtkHBox" id="hbox3">
+		      <property name="visible">True</property>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">2</property>
+
+		      <child>
+			<widget class="GtkImage" id="image3">
+			  <property name="visible">True</property>
+			  <property name="stock">gtk-execute</property>
+			  <property name="icon_size">4</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label3">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">_Launch Mail Reader</property>
+			  <property name="use_underline">True</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+		    </widget>
+		  </child>
+		</widget>
+	      </child>
+	    </widget>
+	  </child>
+
+	  <child>
+	    <widget class="GtkButton" id="update_button">
+	      <property name="visible">True</property>
+	      <property name="can_default">True</property>
+	      <property name="can_focus">True</property>
+	      <property name="relief">GTK_RELIEF_NORMAL</property>
+	      <property name="focus_on_click">True</property>
+	      <property name="response_id">2</property>
+
+	      <child>
+		<widget class="GtkAlignment" id="alignment2">
 		  <property name="visible">True</property>
 		  <property name="xalign">0.5</property>
 		  <property name="yalign">0.5</property>
@@ -67,13 +138,13 @@
 		  <property name="right_padding">0</property>
 
 		  <child>
-		    <widget class="GtkHBox" id="hbox1">
+		    <widget class="GtkHBox" id="hbox2">
 		      <property name="visible">True</property>
 		      <property name="homogeneous">False</property>
 		      <property name="spacing">2</property>
 
 		      <child>
-			<widget class="GtkImage" id="image1">
+			<widget class="GtkImage" id="image2">
 			  <property name="visible">True</property>
 			  <property name="stock">gtk-refresh</property>
 			  <property name="icon_size">4</property>
@@ -90,7 +161,7 @@
 		      </child>
 
 		      <child>
-			<widget class="GtkLabel" id="label1">
+			<widget class="GtkLabel" id="label2">
 			  <property name="visible">True</property>
 			  <property name="label" translatable="yes">_Update</property>
 			  <property name="use_underline">True</property>
@@ -117,7 +188,7 @@
 	  </child>
 
 	  <child>
-	    <widget class="GtkButton" id="button4">
+	    <widget class="GtkButton" id="button5">
 	      <property name="visible">True</property>
 	      <property name="can_default">True</property>
 	      <property name="can_focus">True</property>