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 ecf5b066f5f6310f7681946589e50cfe7978424c
parent 515dd02ab9b52043e250629a98425bb50e608acd
Author: Jean-Yves Lefort <jylefort@brutele.be>
Date:   Thu,  7 Oct 2004 03:32:35 +1000

mail-notification-0.7.0

* Binaries compiled with GCC 3.4.x were crashing in various
  places: fixed
* Fixed a vulnerability in the IMAP code (a malicious IMAP
  server could trigger a null pointer dereference by sending
  an invalid reply)
* Fixed a vulnerability in the Gmail code (a man in the middle
  attack could, with some libsoup configurations, trigger a
  null pointer indirection)
* The properties dialog has been split into tabs
* A mail summary has been added (requires GMime version 2.0 or
  superior)
* Double-clicking on the icon now displays the mail summary
  (the double-clicked command has been removed)
* The "new mail" command is now executed every time a mailbox
  receives one or more new messages
* Tracks the latest Gmail change (reported by Vincent Noel)
* Gmail support now requires libsoup version 2.2 or superior
  (which is part of GNOME 2.8)
* The manual is now installed in the proper location (Pascal
  Giard, Christian Krause)
* The --with-gconf-schema-file-dir configure argument was
  ignored: fixed (Julio M. Merino Vidal)
* A few minor issues have been fixed
* Some cleanups have been performed
* The German translations have been updated (Hendrik Brandt)
* Added Serbian translations (Filip Miletic)
* Added Bulgarian translations (Vladimir Petkov)

Diffstat:
MAUTHORS | 3+++
MINSTALL | 96+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------
MMakefile.in | 7++++---
MNEWS | 32+++++++++++++++++++++++++++++++-
MREADME | 3++-
MTODO | 5+++++
Macinclude.m4 | 100+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------
Maclocal.m4 | 476++++++++++++++++++++++++++++++++++++++++----------------------------------------
Mart/Makefile.in | 7++++---
Mconfig.h.in | 107++++++++++++-------------------------------------------------------------------
Mconfigure | 859+++++++++++++++++++++++++++++++------------------------------------------------
Mconfigure.ac | 280++++++++++++++++++++++++-------------------------------------------------------
Mdata/Makefile.am | 2+-
Mdata/Makefile.in | 9+++++----
Mdata/mail-notification.schemas.in | 135+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------
Mhelp/C/Makefile.in | 9+++++----
Mhelp/C/mail-notification-C.omf | 4++--
Mhelp/C/mail-notification.xml | 331+++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------
Mhelp/Makefile.in | 7++++---
Mhelp/xmldocs.make | 2+-
Mm4/Makefile.in | 7++++---
Mpo/POTFILES.in | 15+++++++++++++++
Apo/bg.gmo | 0
Apo/bg.po | 1508+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mpo/de.gmo | 0
Mpo/de.po | 1082++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------
Mpo/fr.gmo | 0
Mpo/fr.po | 875+++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------
Mpo/mail-notification.pot | 782+++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------
Mpo/pt.gmo | 0
Mpo/pt.po | 902++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------
Mpo/ru.gmo | 0
Mpo/ru.po | 806+++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------
Apo/sr.gmo | 0
Apo/sr.po | 1542+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apo/sr@Latn.gmo | 0
Apo/sr@Latn.po | 1542+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/MNAutomation.idl | 2++
Msrc/Makefile.am | 56+++++++++++++++++++++++++++++++++++++++++++++++++-------
Msrc/Makefile.in | 159+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------
Asrc/ent2h.sh | 51+++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/mn-about-dialog-private.h | 2+-
Msrc/mn-about-dialog.c | 27+++++++++++++++------------
Msrc/mn-about-dialog.gob | 3+++
Msrc/mn-about-dialog.h | 2+-
Msrc/mn-auth-combo-box-private.h | 2+-
Msrc/mn-auth-combo-box.c | 66++++++++++++++++++++++++++++++++++--------------------------------
Msrc/mn-auth-combo-box.gob | 2++
Msrc/mn-auth-combo-box.h | 2+-
Msrc/mn-autodetect-mailbox-properties-private.h | 8++++----
Msrc/mn-autodetect-mailbox-properties.c | 153++++++++++++++++++++++++++++++++++++++++---------------------------------------
Msrc/mn-autodetect-mailbox-properties.gob | 8+++++---
Msrc/mn-autodetect-mailbox-properties.h | 2+-
Msrc/mn-automation-private.h | 2+-
Msrc/mn-automation.c | 100++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------
Msrc/mn-automation.gob | 18++++++++++++++++++
Msrc/mn-automation.h | 2+-
Msrc/mn-blinking-image-private.h | 12++++++------
Msrc/mn-blinking-image.c | 140++++++++++++++++++++++++++++++++++++++++++++++---------------------------------
Msrc/mn-blinking-image.gob | 15++++++++++++++-
Msrc/mn-blinking-image.h | 2+-
Msrc/mn-client-session.c | 227+++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------
Msrc/mn-client-session.h | 9++++++---
Msrc/mn-conf.c | 134+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/mn-conf.h | 39++++++++++++++++++++++++++++++++++++---
Msrc/mn-gmail-mailbox-private.h | 16++++++++++++----
Msrc/mn-gmail-mailbox-properties-private.h | 10+++++-----
Msrc/mn-gmail-mailbox-properties.c | 121++++++++++++++++++++++++++++++++++++++++---------------------------------------
Msrc/mn-gmail-mailbox-properties.gob | 6++++--
Msrc/mn-gmail-mailbox-properties.h | 2+-
Msrc/mn-gmail-mailbox.c | 751+++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------
Msrc/mn-gmail-mailbox.gob | 343+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------
Msrc/mn-gmail-mailbox.h | 2+-
Asrc/mn-gmime-stream-vfs-private.h | 26++++++++++++++++++++++++++
Asrc/mn-gmime-stream-vfs.c | 579+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-gmime-stream-vfs.gob | 260+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-gmime-stream-vfs.h | 65+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/mn-imap-mailbox-private.h | 2+-
Msrc/mn-imap-mailbox-properties-private.h | 8++++----
Msrc/mn-imap-mailbox-properties.c | 103+++++++++++++++++++++++++++++++++++++++++--------------------------------------
Msrc/mn-imap-mailbox-properties.gob | 8+++++---
Msrc/mn-imap-mailbox-properties.h | 2+-
Msrc/mn-imap-mailbox.c | 835+++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------
Msrc/mn-imap-mailbox.gob | 311+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----
Msrc/mn-imap-mailbox.h | 2+-
Msrc/mn-mail-icon-private.h | 8+++-----
Msrc/mn-mail-icon.c | 258+++++++++++++++++++++++++++++++++++--------------------------------------------
Msrc/mn-mail-icon.gob | 50+++++++++++++++++---------------------------------
Msrc/mn-mail-icon.h | 18++++++++----------
Msrc/mn-mailbox-private.h | 26++++++++++++++------------
Msrc/mn-mailbox-properties-dialog.c | 5+----
Msrc/mn-mailbox-properties-util.c | 2+-
Msrc/mn-mailbox-view-private.h | 14+++++++-------
Msrc/mn-mailbox-view.c | 750+++++++++++++++++++++++++++++++++++++++++++------------------------------------
Msrc/mn-mailbox-view.gob | 168++++++++++++++++++++++++++++++++++++++++++++++---------------------------------
Msrc/mn-mailbox-view.h | 2+-
Msrc/mn-mailbox.c | 733++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------------
Msrc/mn-mailbox.gob | 236+++++++++++++++++++++++++++++++++++++++++++++++++------------------------------
Msrc/mn-mailbox.h | 32++++++++++++++++++++++++++++++--
Msrc/mn-mailboxes-private.h | 8++++----
Msrc/mn-mailboxes.c | 926++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------
Msrc/mn-mailboxes.gob | 203+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------
Msrc/mn-mailboxes.h | 64+++++++++++++++++++++++++++++++++++++++++++++++++++++++---------
Msrc/mn-maildir-mailbox-private.h | 2+-
Msrc/mn-maildir-mailbox.c | 109+++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------
Msrc/mn-maildir-mailbox.gob | 51+++++++++++++++++++++++++++++++++++++++++----------
Msrc/mn-maildir-mailbox.h | 2+-
Msrc/mn-main.c | 115++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------
Msrc/mn-mbox-mailbox-private.h | 6+++---
Msrc/mn-mbox-mailbox.c | 118++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------
Msrc/mn-mbox-mailbox.gob | 51+++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/mn-mbox-mailbox.h | 2+-
Asrc/mn-message-label-private.h | 24++++++++++++++++++++++++
Asrc/mn-message-label.c | 468+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-message-label.gob | 176+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-message-label.h | 76++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-message-mime.c | 158+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-message-mime.h | 35+++++++++++++++++++++++++++++++++++
Asrc/mn-message-private.h | 17+++++++++++++++++
Asrc/mn-message.c | 511+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-message.gob | 157+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-message.h | 108+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/mn-mh-mailbox-private.h | 2+-
Msrc/mn-mh-mailbox.c | 144+++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------
Msrc/mn-mh-mailbox.gob | 86+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------
Msrc/mn-mh-mailbox.h | 2+-
Msrc/mn-pending-mailbox-private.h | 2+-
Msrc/mn-pending-mailbox.c | 34++++++++++++++++++----------------
Msrc/mn-pending-mailbox.gob | 4+++-
Msrc/mn-pending-mailbox.h | 2+-
Msrc/mn-pi-mailbox-properties-private.h | 2+-
Msrc/mn-pi-mailbox-properties.c | 152++++++++++++++++++++++++++++++++++++++++---------------------------------------
Msrc/mn-pi-mailbox-properties.gob | 12+++++++-----
Msrc/mn-pi-mailbox-properties.h | 2+-
Msrc/mn-pop3-mailbox-private.h | 6+++---
Msrc/mn-pop3-mailbox-properties-private.h | 2+-
Msrc/mn-pop3-mailbox-properties.c | 72+++++++++++++++++++++++++++++++++++++-----------------------------------
Msrc/mn-pop3-mailbox-properties.gob | 2++
Msrc/mn-pop3-mailbox-properties.h | 2+-
Msrc/mn-pop3-mailbox.c | 721++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------
Msrc/mn-pop3-mailbox.gob | 192++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
Msrc/mn-pop3-mailbox.h | 2+-
Msrc/mn-properties.c | 209++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------
Asrc/mn-sgml-entities.h | 277+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-sgml-ref.c | 128+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-sgml-ref.h | 24++++++++++++++++++++++++
Msrc/mn-shell-private.h | 8++++----
Msrc/mn-shell.c | 520++++++++++++++++++++++++++++++++-----------------------------------------------
Msrc/mn-shell.gob | 162+++++++++++++++++++++++++++++--------------------------------------------------
Msrc/mn-shell.h | 2+-
Msrc/mn-soup.c | 99+++++++++++++++++++------------------------------------------------------------
Msrc/mn-soup.h | 5+++--
Msrc/mn-stock.c | 4+++-
Msrc/mn-stock.h | 1+
Asrc/mn-summary-dialog.c | 128+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-summary-dialog.h | 27+++++++++++++++++++++++++++
Asrc/mn-summary-popup.c | 345+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-summary-popup.h | 25+++++++++++++++++++++++++
Asrc/mn-summary.c | 52++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-summary.h | 26++++++++++++++++++++++++++
Msrc/mn-sylpheed-mailbox-private.h | 2+-
Msrc/mn-sylpheed-mailbox.c | 185+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------
Msrc/mn-sylpheed-mailbox.gob | 109++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
Msrc/mn-sylpheed-mailbox.h | 2+-
Msrc/mn-system-mailbox-properties-private.h | 6+++---
Msrc/mn-system-mailbox-properties.c | 85+++++++++++++++++++++++++++++++++++++++++--------------------------------------
Msrc/mn-system-mailbox-properties.gob | 2++
Msrc/mn-system-mailbox-properties.h | 2+-
Msrc/mn-unsupported-mailbox-private.h | 4++--
Msrc/mn-unsupported-mailbox.c | 70+++++++++++++++++++++++++++++++++++-----------------------------------
Msrc/mn-unsupported-mailbox.gob | 9+++++----
Msrc/mn-unsupported-mailbox.h | 2+-
Msrc/mn-uri-private.h | 2+-
Msrc/mn-uri.c | 176++++++++++++++++++++++++++++++++++++++++----------------------------------------
Msrc/mn-uri.gob | 2++
Msrc/mn-uri.h | 2+-
Msrc/mn-util.c | 273+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------
Msrc/mn-util.h | 35++++++++++++++++++++++++++++++-----
Asrc/xhtml-lat1.ent | 196+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/xhtml-special.ent | 79+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/xhtml-symbol.ent | 242+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mtests/Makefile.in | 7++++---
Mtests/test-uri.c | 2++
Mui/Makefile.am | 6++++++
Mui/Makefile.in | 13++++++++++---
Mui/properties.glade | 972+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------
Aui/summary-dialog.glade | 176+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aui/summary-dialog.gladep | 14++++++++++++++
Aui/summary-popup.glade | 112+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aui/summary-popup.gladep | 14++++++++++++++
190 files changed, 21607 insertions(+), 6600 deletions(-)
diff --git a/AUTHORS b/AUTHORS
@@ -9,6 +9,9 @@ Contributors:
 	* Duarte Henriques <duarte_henriques@myrealbox.com>
 	  (portuguese translations)
 	* Dan Korostelev <dan@ats.energo.ru> (russian translations)
+	* Filip Miletic <filmil@gmail.com> (serbian translations)
+	* Vladimir Petkov <vpetkov@i-space.org> (bulgarian
+	  translations)
 
 External art sources:
 	* Google (gmail.png)
diff --git a/INSTALL b/INSTALL
@@ -7,10 +7,11 @@ Index
 	0. About this document
 	1. Dependencies
 	2. Instructions
+	3. Configure options
 
 0. About this document
 
-	$Id: INSTALL,v 1.10 2004/09/08 23:35:47 jylefort Exp $
+	$Id: INSTALL,v 1.12 2004/10/03 15:58:02 jylefort Exp $
 
 	Copyright (c) 2003, 2004 Jean-Yves Lefort.
 
@@ -31,8 +32,8 @@ Index
 
 		* for Gmail support:
 
-		  libsoup (version 1.99.28)
-		  ftp://ftp.gnome.org/pub/GNOME/sources/libsoup/1.99/
+		  GNOME (version 2.8.0 or superior)
+		  http://www.gnome.org/
 
 		* for SSL/TLS support:
 
@@ -44,6 +45,11 @@ Index
 		  Cyrus SASL (version 2.0 or superior)
 		  http://asg.web.cmu.edu/sasl/sasl-library.html
 
+		* for MIME support:
+
+		  GMime (version 2.0 or superior)
+		  http://spruce.sourceforge.net/gmime/
+
 2. Instructions
 
 	Mail Notification uses the well-known GNU build system. Hence,
@@ -66,22 +72,68 @@ Index
 		  (http://bugzilla.gnome.org/show_bug.cgi?id=151082),
 		  your session must be restarted after installing Mail
 		  Notification.
-	
-	The ./configure script behaviour can be changed using
-	command-line options: type "./configure --help" for an
-	exhaustive list.
-
-	These options are specific to Mail Notification:
-
-		--enable-mbox
-		--enable-mh
-		--enable-maildir
-		--enable-pop3
-		--enable-imap
-		--enable-ssl
-		--enable-sasl
-		--enable-sylpheed
-		--enable-gmail
-		--enable-ipv6
-
-	They are all enabled by default.
+
+	The ./configure script options are documented below. They are
+	enabled by default and automatically disabled if a requirement
+	is not met, so you probably do not need to use them.
+
+3. Configure options
+
+	--enable-mbox (default: yes)
+
+		Enable mbox mailbox support.
+
+	--enable-mh (default: yes)
+
+		Enable MH mailbox support.
+
+	--enable-maildir (default: yes)
+
+		Enable Maildir mailbox support.
+
+	--enable-pop3 (default: yes)
+
+		Enable POP3 mailbox support.
+
+	--enable-imap (default: yes)
+
+		Enable IMAP mailbox support.
+
+	--enable-ssl (default: yes)
+
+		Enable SSL/TLS support.
+
+		Requirements: OpenSSL version 0.9.5b or superior.
+		Applies to: POP3, IMAP.
+
+	--enable-sasl (default: yes)
+
+		Enable SASL authentication support.
+
+		Requirements: Cyrus SASL version 2.0 or superior.
+		Applies to: POP3, IMAP.
+
+	--enable-sylpheed (default: yes)
+
+		Enable Sylpheed format support.
+
+	--enable-gmail (default: yes)
+
+		Enable Gmail mailbox support.
+
+		Requirements: GNOME version 2.8.0 or superior.
+
+	--enable-ipv6 (default: yes)
+
+		Enable IPv6 support.
+
+		Applies to: POP3, IMAP.
+
+	--enable-mime (default: yes)
+
+		Enable MIME support. If this option is disabled, the
+		mail summary will not be able to display messages of
+		mbox, MH, Maildir, POP3, IMAP and Sylpheed mailboxes.
+
+		Requirements: GMime version 2.0 or superior.
+		Applies to: mbox, MH, Maildir, POP3, IMAP, Sylpheed.
diff --git a/Makefile.in b/Makefile.in
@@ -103,6 +103,8 @@ GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
 GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
 GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
 GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMIME_CFLAGS = @GMIME_CFLAGS@
+GMIME_LIBS = @GMIME_LIBS@
 GMOFILES = @GMOFILES@
 GMSGFMT = @GMSGFMT@
 GNOME_CFLAGS = @GNOME_CFLAGS@
@@ -110,9 +112,6 @@ GNOME_LIBS = @GNOME_LIBS@
 GOB2 = @GOB2@
 GTK_CFLAGS = @GTK_CFLAGS@
 GTK_LIBS = @GTK_LIBS@
-G_ASSERTIONS = @G_ASSERTIONS@
-HAVE_SOUP_FALSE = @HAVE_SOUP_FALSE@
-HAVE_SOUP_TRUE = @HAVE_SOUP_TRUE@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -186,6 +185,8 @@ WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
 WITH_MBOX_TRUE = @WITH_MBOX_TRUE@
 WITH_MH_FALSE = @WITH_MH_FALSE@
 WITH_MH_TRUE = @WITH_MH_TRUE@
+WITH_MIME_FALSE = @WITH_MIME_FALSE@
+WITH_MIME_TRUE = @WITH_MIME_TRUE@
 WITH_POP3_FALSE = @WITH_POP3_FALSE@
 WITH_POP3_OR_IMAP_FALSE = @WITH_POP3_OR_IMAP_FALSE@
 WITH_POP3_OR_IMAP_TRUE = @WITH_POP3_OR_IMAP_TRUE@
diff --git a/NEWS b/NEWS
@@ -1,3 +1,33 @@
+0.7.0					06 October 2004
+
+	* Binaries compiled with GCC 3.4.x were crashing in various
+	  places: fixed
+	* Fixed a vulnerability in the IMAP code (a malicious IMAP
+	  server could trigger a null pointer dereference by sending
+	  an invalid reply)
+	* Fixed a vulnerability in the Gmail code (a man in the middle
+	  attack could, with some libsoup configurations, trigger a
+	  null pointer indirection)
+	* The properties dialog has been split into tabs
+	* A mail summary has been added (requires GMime version 2.0 or
+	  superior)
+	* Double-clicking on the icon now displays the mail summary
+	  (the double-clicked command has been removed)
+	* The "new mail" command is now executed everytime a mailbox
+	  receives one or more new messages
+	* Tracks the latest Gmail change (reported by Vincent Noel)
+	* Gmail support now requires libsoup version 2.2 or superior
+	  (which is part of GNOME 2.8)
+	* The manual is now installed in the proper location (Pascal
+	  Giard, Christian Krause)
+	* The --with-gconf-schema-file-dir configure argument was
+	  ignored: fixed (Julio M. Merino Vidal)
+	* A few minor issues have been fixed
+	* Some cleanups have been performed
+	* The german translations have been updated (Hendrik Brandt)
+	* Added serbian translations (Filip Miletic)
+	* Added bulgarian translations (Vladimir Petkov)
+
 0.6.2					09 September 2004
 
 	* Added STARTTLS support to the IMAP backend
@@ -17,7 +47,7 @@
 	* Fixed a typo in the MD5 code which prevented builds on some
 	  platforms (reported by Andy Shaw)
 	* Automatic mailboxes were also polled: fixed
-	* Added german translations (Henrik Brandt)
+	* Added german translations (Hendrik Brandt)
 	* Added portuguese translations (Duarte Henriques)
 	* A few minor issues have been fixed
 	* Some cleanups have been performed
diff --git a/README b/README
@@ -10,7 +10,7 @@ Index
 
 0. About this document
 
-	$Id: README,v 1.21 2004/09/08 23:35:47 jylefort Exp $
+	$Id: README,v 1.22 2004/10/06 17:24:26 jylefort Exp $
 
 	Copyright (c) 2003, 2004 Jean-Yves Lefort.
 
@@ -38,6 +38,7 @@ Index
 		* automatic detection of mailbox format
 		* immediate notification (the status icon is updated
 		  within seconds after a mailbox changes)
+		* a mail summary
 		* HIG 2.0 compliance
 
 2. Installation instructions
diff --git a/TODO b/TODO
@@ -1,2 +1,7 @@
 * Check the SSL certificate's hostname against the hostname we used
   (RFC 3501, section 11.1)
+* Add a Gmail "Mailbox" option similar to the IMAP one (or if that is
+  not feasible, a checkbutton "Only check inbox").
+* Add a per-mailbox check delay setting (probably GConf only, as that
+  feature is seldomly needed)
+* See if we can add an Evolution data server mailbox backend
diff --git a/acinclude.m4 b/acinclude.m4
@@ -1,35 +1,68 @@
-# $Id: acinclude.m4,v 1.6 2004/06/03 19:15:30 jylefort Exp $
+# $Id: acinclude.m4,v 1.13 2004/09/29 22:15:14 jylefort Exp $
 #
-# Copyright (c) 2003 Jean-Yves Lefort.
+# Copyright (c) 2003, 2004 Jean-Yves Lefort.
 #
 # This file is part of Mail Notification.
 # It may be distributed under the same terms as Mail Notification.
 
-dnl AC_ARG_G_ASSERTIONS
+### feature handling ##########################################################
+
+dnl MN_FEATURE_VAR_NAME(FEATURE)
 dnl
-AC_DEFUN([AC_ARG_G_ASSERTIONS],
-[AC_ARG_ENABLE(assertions,
-AC_HELP_STRING([--disable-assertions],
-[disable GLib assertions (not recommended)]),
-[case "$enableval" in
-	yes|no) enable_assertions=$enableval ;;
-	*) AC_MSG_ERROR([bad value $enableval for --enable-assertions]) ;;
-esac], [enable_assertions=yes])
+AC_DEFUN([MN_FEATURE_VAR_NAME], [enable_[]translit([$1], -, _)])
 
-if test $enable_assertions = no; then
-	G_ASSERTIONS="-DG_DISABLE_ASSERT"
-else
-	G_ASSERTIONS=""
+dnl MN_FEATURE_DISABLE_REASON_VAR_NAME(FEATURE)
+dnl
+AC_DEFUN([MN_FEATURE_DISABLE_REASON_VAR_NAME], [disable_[]translit([$1], -, _)_reason])
+
+dnl MN_FEATURE_SYMBOL_NAME(FEATURE)
+dnl
+AC_DEFUN([MN_FEATURE_SYMBOL_NAME], [WITH_[]translit([$1], -a-z, _A-Z)])
+
+dnl MN_FEATURE_ENABLED(FEATURE)
+dnl
+AC_DEFUN([MN_FEATURE_ENABLED], [test $MN_FEATURE_VAR_NAME([$1]) = yes])
+
+dnl MN_FEATURE_DISABLED(FEATURE)
+dnl
+AC_DEFUN([MN_FEATURE_DISABLED], [test $MN_FEATURE_VAR_NAME([$1]) = no])
+
+dnl MN_FEATURE_DISABLE(FEATURE, REASON)
+dnl
+AC_DEFUN([MN_FEATURE_DISABLE],
+[AC_MSG_NOTICE([[$2]: forcing --disable-[$1]])
+MN_FEATURE_VAR_NAME([$1])=no
+MN_FEATURE_DISABLE_REASON_VAR_NAME([$1])="([$2])"])
+
+dnl MN_FEATURE_DEFINE(FEATURE)
+dnl
+AC_DEFUN([MN_FEATURE_DEFINE],
+[if MN_FEATURE_ENABLED([$1]); then
+	AC_DEFINE(MN_FEATURE_SYMBOL_NAME([$1]), 1, [Define to 1 if [$1] is enabled])
 fi
+])
+
+dnl MN_FEATURES_DEFINE(FEATURES)
+dnl
+AC_DEFUN([MN_FEATURES_DEFINE], [m4_foreach(feature, [$1], [MN_FEATURE_DEFINE(feature)])])
+
+### command line arguments ####################################################
 
-AC_SUBST(G_ASSERTIONS)])
+dnl MN_ARG_ENABLE(FEATURE, DESCRIPTION, [DEFAULT])
+dnl
+AC_DEFUN([MN_ARG_ENABLE],
+[AC_ARG_ENABLE([$1],
+AS_HELP_STRING(--ifelse([$3], no, enable, disable)-[$1], $2),
+[case "$enableval" in
+	yes|no) MN_FEATURE_VAR_NAME([$1])=$enableval ;;
+	*) AC_MSG_ERROR([bad value $enableval for --enable-[$1]]) ;;
+esac], [MN_FEATURE_VAR_NAME([$1])=ifelse([$3],, yes, [$3])])])
 
-dnl AC_ARG_COMPILE_WARNINGS
-dnl (only works with gcc)
+dnl MN_ARG_COMPILE_WARNINGS
 dnl
-AC_DEFUN([AC_ARG_COMPILE_WARNINGS],
+AC_DEFUN([MN_ARG_COMPILE_WARNINGS],
 [AC_ARG_ENABLE(compile-warnings,
-AC_HELP_STRING([--enable-compile-warnings=no|yes|error],
+AS_HELP_STRING([--enable-compile-warnings=no|yes|error],
 [enable compiler warnings [[no]]]),
 [case "$enableval" in
 	yes|no|error) enable_compile_warnings=$enableval ;;
@@ -39,8 +72,35 @@ esac], [enable_compile_warnings=no])
 if test $enable_compile_warnings = no; then
 	WARN_CFLAGS=
 else
+	# some flags are specific to GCC
 	WARN_CFLAGS="-Wall -Wcast-align -Wredundant-decls -Wnested-externs -Winline"
 	test $enable_compile_warnings = error && WARN_CFLAGS="$WARN_CFLAGS -Werror"
 fi
 
 AC_SUBST(WARN_CFLAGS)])
+
+### report ####################################################################
+
+dnl MN_REPORT(NAME, VALUE)
+dnl
+AC_DEFUN([MN_REPORT], [  m4_format([%-20s %s], [$1], [$2])])
+
+dnl MN_REPORT_ARG(NAME)
+dnl
+AC_DEFUN([MN_REPORT_ARG], [MN_REPORT([--[$1]], [$translit([$1], -, _)])])
+
+dnl MN_REPORT_ARGS(NAMES)
+dnl
+AC_DEFUN([MN_REPORT_ARGS], [m4_foreach(name, [$1], [MN_REPORT_ARG(name)
+])])
+
+dnl MN_REPORT_FEATURE(FEATURE)
+dnl
+AC_DEFUN([MN_REPORT_FEATURE],
+[MN_REPORT([--enable-[$1]],
+[$MN_FEATURE_VAR_NAME([$1]) $MN_FEATURE_DISABLE_REASON_VAR_NAME([$1])])])
+
+dnl MN_REPORT_FEATURES(FEATURES)
+dnl
+AC_DEFUN([MN_REPORT_FEATURES], [m4_foreach(feature, [$1], [MN_REPORT_FEATURE(feature)
+])])
diff --git a/aclocal.m4 b/aclocal.m4
@@ -11,244 +11,6 @@
 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 # PARTICULAR PURPOSE.
 
-dnl AM_GCONF_SOURCE_2
-dnl Defines GCONF_SCHEMA_CONFIG_SOURCE which is where you should install schemas
-dnl  (i.e. pass to gconftool-2
-dnl Defines GCONF_SCHEMA_FILE_DIR which is a filesystem directory where
-dnl  you should install foo.schemas files
-dnl
-
-AC_DEFUN([AM_GCONF_SOURCE_2],
-[
-  if test "x$GCONF_SCHEMA_INSTALL_SOURCE" = "x"; then
-    GCONF_SCHEMA_CONFIG_SOURCE=`gconftool-2 --get-default-source`
-  else
-    GCONF_SCHEMA_CONFIG_SOURCE=$GCONF_SCHEMA_INSTALL_SOURCE
-  fi
-
-  AC_ARG_WITH(gconf-source, 
-  [  --with-gconf-source=sourceaddress      Config database for installing schema files.],GCONF_SCHEMA_CONFIG_SOURCE="$withval",)
-
-  AC_SUBST(GCONF_SCHEMA_CONFIG_SOURCE)
-  AC_MSG_RESULT([Using config source $GCONF_SCHEMA_CONFIG_SOURCE for schema installation])
-
-  if test "x$GCONF_SCHEMA_FILE_DIR" = "x"; then
-    GCONF_SCHEMA_FILE_DIR='$(sysconfdir)/gconf/schemas'
-  fi
-
-  AC_ARG_WITH(gconf-schema-file-dir, 
-  [  --with-gconf-schema-file-dir=dir        Directory for installing schema files.],GCONF_SCHEMA_FILE_DIR="$withval",)
-
-  AC_SUBST(GCONF_SCHEMA_FILE_DIR)
-  AC_MSG_RESULT([Using $GCONF_SCHEMA_FILE_DIR as install directory for schema files])
-
-  AC_ARG_ENABLE(schemas-install,
-     [  --disable-schemas-install	Disable the schemas installation],
-     [case "${enableval}" in
-       yes) schemas_install=true ;;
-       no)  schemas_install=false ;;
-       *) AC_MSG_ERROR(bad value ${enableval} for --disable-schemas-install) ;;
-     esac],[schemas_install=true])
-     AM_CONDITIONAL(GCONF_SCHEMAS_INSTALL, test x$schemas_install = xtrue)
-])
-
-# Configure paths for GTK+
-# Owen Taylor     1997-2001
-
-dnl AM_PATH_GTK_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
-dnl Test for GTK+, and define GTK_CFLAGS and GTK_LIBS, if gthread is specified in MODULES, 
-dnl pass to pkg-config
-dnl
-AC_DEFUN([AM_PATH_GTK_2_0],
-[dnl 
-dnl Get the cflags and libraries from pkg-config
-dnl
-AC_ARG_ENABLE(gtktest, [  --disable-gtktest       do not try to compile and run a test GTK+ program],
-		    , enable_gtktest=yes)
-
-  pkg_config_args=gtk+-2.0
-  for module in . $4
-  do
-      case "$module" in
-         gthread) 
-             pkg_config_args="$pkg_config_args gthread-2.0"
-         ;;
-      esac
-  done
-
-  no_gtk=""
-
-  AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
-
-  if test x$PKG_CONFIG != xno ; then
-    if pkg-config --atleast-pkgconfig-version 0.7 ; then
-      :
-    else
-      echo "*** pkg-config too old; version 0.7 or better required."
-      no_gtk=yes
-      PKG_CONFIG=no
-    fi
-  else
-    no_gtk=yes
-  fi
-
-  min_gtk_version=ifelse([$1], ,2.0.0,$1)
-  AC_MSG_CHECKING(for GTK+ - version >= $min_gtk_version)
-
-  if test x$PKG_CONFIG != xno ; then
-    ## don't try to run the test against uninstalled libtool libs
-    if $PKG_CONFIG --uninstalled $pkg_config_args; then
-	  echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH"
-	  enable_gtktest=no
-    fi
-
-    if $PKG_CONFIG --atleast-version $min_gtk_version $pkg_config_args; then
-	  :
-    else
-	  no_gtk=yes
-    fi
-  fi
-
-  if test x"$no_gtk" = x ; then
-    GTK_CFLAGS=`$PKG_CONFIG $pkg_config_args --cflags`
-    GTK_LIBS=`$PKG_CONFIG $pkg_config_args --libs`
-    gtk_config_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
-    gtk_config_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
-    gtk_config_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
-    if test "x$enable_gtktest" = "xyes" ; then
-      ac_save_CFLAGS="$CFLAGS"
-      ac_save_LIBS="$LIBS"
-      CFLAGS="$CFLAGS $GTK_CFLAGS"
-      LIBS="$GTK_LIBS $LIBS"
-dnl
-dnl Now check if the installed GTK+ is sufficiently new. (Also sanity
-dnl checks the results of pkg-config to some extent)
-dnl
-      rm -f conf.gtktest
-      AC_TRY_RUN([
-#include <gtk/gtk.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-int 
-main ()
-{
-  int major, minor, micro;
-  char *tmp_version;
-
-  system ("touch conf.gtktest");
-
-  /* HP/UX 9 (%@#!) writes to sscanf strings */
-  tmp_version = g_strdup("$min_gtk_version");
-  if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
-     printf("%s, bad version string\n", "$min_gtk_version");
-     exit(1);
-   }
-
-  if ((gtk_major_version != $gtk_config_major_version) ||
-      (gtk_minor_version != $gtk_config_minor_version) ||
-      (gtk_micro_version != $gtk_config_micro_version))
-    {
-      printf("\n*** 'pkg-config --modversion gtk+-2.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", 
-             $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
-             gtk_major_version, gtk_minor_version, gtk_micro_version);
-      printf ("*** was found! If pkg-config was correct, then it is best\n");
-      printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
-      printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
-      printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
-      printf("*** required on your system.\n");
-      printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
-      printf("*** to point to the correct configuration files\n");
-    } 
-  else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
-	   (gtk_minor_version != GTK_MINOR_VERSION) ||
-           (gtk_micro_version != GTK_MICRO_VERSION))
-    {
-      printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
-	     GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
-      printf("*** library (version %d.%d.%d)\n",
-	     gtk_major_version, gtk_minor_version, gtk_micro_version);
-    }
-  else
-    {
-      if ((gtk_major_version > major) ||
-        ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
-        ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
-      {
-        return 0;
-       }
-     else
-      {
-        printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
-               gtk_major_version, gtk_minor_version, gtk_micro_version);
-        printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
-	       major, minor, micro);
-        printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
-        printf("***\n");
-        printf("*** If you have already installed a sufficiently new version, this error\n");
-        printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
-        printf("*** being found. The easiest way to fix this is to remove the old version\n");
-        printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n");
-        printf("*** correct copy of pkg-config. (In this case, you will have to\n");
-        printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
-        printf("*** so that the correct libraries are found at run-time))\n");
-      }
-    }
-  return 1;
-}
-],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
-       CFLAGS="$ac_save_CFLAGS"
-       LIBS="$ac_save_LIBS"
-     fi
-  fi
-  if test "x$no_gtk" = x ; then
-     AC_MSG_RESULT(yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version))
-     ifelse([$2], , :, [$2])     
-  else
-     AC_MSG_RESULT(no)
-     if test "$PKG_CONFIG" = "no" ; then
-       echo "*** A new enough version of pkg-config was not found."
-       echo "*** See http://pkgconfig.sourceforge.net"
-     else
-       if test -f conf.gtktest ; then
-        :
-       else
-          echo "*** Could not run GTK+ test program, checking why..."
-	  ac_save_CFLAGS="$CFLAGS"
-	  ac_save_LIBS="$LIBS"
-          CFLAGS="$CFLAGS $GTK_CFLAGS"
-          LIBS="$LIBS $GTK_LIBS"
-          AC_TRY_LINK([
-#include <gtk/gtk.h>
-#include <stdio.h>
-],      [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ],
-        [ echo "*** The test program compiled, but did not run. This usually means"
-          echo "*** that the run-time linker is not finding GTK+ or finding the wrong"
-          echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your"
-          echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
-          echo "*** to the installed location  Also, make sure you have run ldconfig if that"
-          echo "*** is required on your system"
-	  echo "***"
-          echo "*** If you have an old version installed, it is best to remove it, although"
-          echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ],
-        [ echo "*** The test program failed to compile or link. See the file config.log for the"
-          echo "*** exact error that occured. This usually means GTK+ is incorrectly installed."])
-          CFLAGS="$ac_save_CFLAGS"
-          LIBS="$ac_save_LIBS"
-       fi
-     fi
-     GTK_CFLAGS=""
-     GTK_LIBS=""
-     ifelse([$3], , :, [$3])
-  fi
-  AC_SUBST(GTK_CFLAGS)
-  AC_SUBST(GTK_LIBS)
-  rm -f conf.gtktest
-])
-
 # Copyright (C) 1995-2002 Free Software Foundation, Inc.
 # Copyright (C) 2001-2003 Red Hat, Inc.
 #
@@ -1791,4 +1553,242 @@ AC_SUBST([INSTALL_STRIP_PROGRAM])])
 
 m4_include([m4/openssl.m4])
 m4_include([m4/sasl2.m4])
+dnl AM_GCONF_SOURCE_2
+dnl Defines GCONF_SCHEMA_CONFIG_SOURCE which is where you should install schemas
+dnl  (i.e. pass to gconftool-2
+dnl Defines GCONF_SCHEMA_FILE_DIR which is a filesystem directory where
+dnl  you should install foo.schemas files
+dnl
+
+AC_DEFUN([AM_GCONF_SOURCE_2],
+[
+  if test "x$GCONF_SCHEMA_INSTALL_SOURCE" = "x"; then
+    GCONF_SCHEMA_CONFIG_SOURCE=`gconftool-2 --get-default-source`
+  else
+    GCONF_SCHEMA_CONFIG_SOURCE=$GCONF_SCHEMA_INSTALL_SOURCE
+  fi
+
+  AC_ARG_WITH(gconf-source, 
+  [  --with-gconf-source=sourceaddress      Config database for installing schema files.],GCONF_SCHEMA_CONFIG_SOURCE="$withval",)
+
+  AC_SUBST(GCONF_SCHEMA_CONFIG_SOURCE)
+  AC_MSG_RESULT([Using config source $GCONF_SCHEMA_CONFIG_SOURCE for schema installation])
+
+  if test "x$GCONF_SCHEMA_FILE_DIR" = "x"; then
+    GCONF_SCHEMA_FILE_DIR='$(sysconfdir)/gconf/schemas'
+  fi
+
+  AC_ARG_WITH(gconf-schema-file-dir, 
+  [  --with-gconf-schema-file-dir=dir        Directory for installing schema files.],GCONF_SCHEMA_FILE_DIR="$withval",)
+
+  AC_SUBST(GCONF_SCHEMA_FILE_DIR)
+  AC_MSG_RESULT([Using $GCONF_SCHEMA_FILE_DIR as install directory for schema files])
+
+  AC_ARG_ENABLE(schemas-install,
+     [  --disable-schemas-install	Disable the schemas installation],
+     [case "${enableval}" in
+       yes) schemas_install=true ;;
+       no)  schemas_install=false ;;
+       *) AC_MSG_ERROR(bad value ${enableval} for --disable-schemas-install) ;;
+     esac],[schemas_install=true])
+     AM_CONDITIONAL(GCONF_SCHEMAS_INSTALL, test x$schemas_install = xtrue)
+])
+
+# Configure paths for GTK+
+# Owen Taylor     1997-2001
+
+dnl AM_PATH_GTK_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
+dnl Test for GTK+, and define GTK_CFLAGS and GTK_LIBS, if gthread is specified in MODULES, 
+dnl pass to pkg-config
+dnl
+AC_DEFUN([AM_PATH_GTK_2_0],
+[dnl 
+dnl Get the cflags and libraries from pkg-config
+dnl
+AC_ARG_ENABLE(gtktest, [  --disable-gtktest       do not try to compile and run a test GTK+ program],
+		    , enable_gtktest=yes)
+
+  pkg_config_args=gtk+-2.0
+  for module in . $4
+  do
+      case "$module" in
+         gthread) 
+             pkg_config_args="$pkg_config_args gthread-2.0"
+         ;;
+      esac
+  done
+
+  no_gtk=""
+
+  AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+
+  if test x$PKG_CONFIG != xno ; then
+    if pkg-config --atleast-pkgconfig-version 0.7 ; then
+      :
+    else
+      echo "*** pkg-config too old; version 0.7 or better required."
+      no_gtk=yes
+      PKG_CONFIG=no
+    fi
+  else
+    no_gtk=yes
+  fi
+
+  min_gtk_version=ifelse([$1], ,2.0.0,$1)
+  AC_MSG_CHECKING(for GTK+ - version >= $min_gtk_version)
+
+  if test x$PKG_CONFIG != xno ; then
+    ## don't try to run the test against uninstalled libtool libs
+    if $PKG_CONFIG --uninstalled $pkg_config_args; then
+	  echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH"
+	  enable_gtktest=no
+    fi
+
+    if $PKG_CONFIG --atleast-version $min_gtk_version $pkg_config_args; then
+	  :
+    else
+	  no_gtk=yes
+    fi
+  fi
+
+  if test x"$no_gtk" = x ; then
+    GTK_CFLAGS=`$PKG_CONFIG $pkg_config_args --cflags`
+    GTK_LIBS=`$PKG_CONFIG $pkg_config_args --libs`
+    gtk_config_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+    gtk_config_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+    gtk_config_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+    if test "x$enable_gtktest" = "xyes" ; then
+      ac_save_CFLAGS="$CFLAGS"
+      ac_save_LIBS="$LIBS"
+      CFLAGS="$CFLAGS $GTK_CFLAGS"
+      LIBS="$GTK_LIBS $LIBS"
+dnl
+dnl Now check if the installed GTK+ is sufficiently new. (Also sanity
+dnl checks the results of pkg-config to some extent)
+dnl
+      rm -f conf.gtktest
+      AC_TRY_RUN([
+#include <gtk/gtk.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int 
+main ()
+{
+  int major, minor, micro;
+  char *tmp_version;
+
+  system ("touch conf.gtktest");
+
+  /* HP/UX 9 (%@#!) writes to sscanf strings */
+  tmp_version = g_strdup("$min_gtk_version");
+  if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
+     printf("%s, bad version string\n", "$min_gtk_version");
+     exit(1);
+   }
+
+  if ((gtk_major_version != $gtk_config_major_version) ||
+      (gtk_minor_version != $gtk_config_minor_version) ||
+      (gtk_micro_version != $gtk_config_micro_version))
+    {
+      printf("\n*** 'pkg-config --modversion gtk+-2.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", 
+             $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
+             gtk_major_version, gtk_minor_version, gtk_micro_version);
+      printf ("*** was found! If pkg-config was correct, then it is best\n");
+      printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
+      printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
+      printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
+      printf("*** required on your system.\n");
+      printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
+      printf("*** to point to the correct configuration files\n");
+    } 
+  else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
+	   (gtk_minor_version != GTK_MINOR_VERSION) ||
+           (gtk_micro_version != GTK_MICRO_VERSION))
+    {
+      printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
+	     GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
+      printf("*** library (version %d.%d.%d)\n",
+	     gtk_major_version, gtk_minor_version, gtk_micro_version);
+    }
+  else
+    {
+      if ((gtk_major_version > major) ||
+        ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
+        ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
+      {
+        return 0;
+       }
+     else
+      {
+        printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
+               gtk_major_version, gtk_minor_version, gtk_micro_version);
+        printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
+	       major, minor, micro);
+        printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
+        printf("***\n");
+        printf("*** If you have already installed a sufficiently new version, this error\n");
+        printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
+        printf("*** being found. The easiest way to fix this is to remove the old version\n");
+        printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n");
+        printf("*** correct copy of pkg-config. (In this case, you will have to\n");
+        printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
+        printf("*** so that the correct libraries are found at run-time))\n");
+      }
+    }
+  return 1;
+}
+],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+       CFLAGS="$ac_save_CFLAGS"
+       LIBS="$ac_save_LIBS"
+     fi
+  fi
+  if test "x$no_gtk" = x ; then
+     AC_MSG_RESULT(yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version))
+     ifelse([$2], , :, [$2])     
+  else
+     AC_MSG_RESULT(no)
+     if test "$PKG_CONFIG" = "no" ; then
+       echo "*** A new enough version of pkg-config was not found."
+       echo "*** See http://pkgconfig.sourceforge.net"
+     else
+       if test -f conf.gtktest ; then
+        :
+       else
+          echo "*** Could not run GTK+ test program, checking why..."
+	  ac_save_CFLAGS="$CFLAGS"
+	  ac_save_LIBS="$LIBS"
+          CFLAGS="$CFLAGS $GTK_CFLAGS"
+          LIBS="$LIBS $GTK_LIBS"
+          AC_TRY_LINK([
+#include <gtk/gtk.h>
+#include <stdio.h>
+],      [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ],
+        [ echo "*** The test program compiled, but did not run. This usually means"
+          echo "*** that the run-time linker is not finding GTK+ or finding the wrong"
+          echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your"
+          echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+          echo "*** to the installed location  Also, make sure you have run ldconfig if that"
+          echo "*** is required on your system"
+	  echo "***"
+          echo "*** If you have an old version installed, it is best to remove it, although"
+          echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ],
+        [ echo "*** The test program failed to compile or link. See the file config.log for the"
+          echo "*** exact error that occured. This usually means GTK+ is incorrectly installed."])
+          CFLAGS="$ac_save_CFLAGS"
+          LIBS="$ac_save_LIBS"
+       fi
+     fi
+     GTK_CFLAGS=""
+     GTK_LIBS=""
+     ifelse([$3], , :, [$3])
+  fi
+  AC_SUBST(GTK_CFLAGS)
+  AC_SUBST(GTK_LIBS)
+  rm -f conf.gtktest
+])
+
 m4_include([acinclude.m4])
diff --git a/art/Makefile.in b/art/Makefile.in
@@ -84,6 +84,8 @@ GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
 GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
 GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
 GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMIME_CFLAGS = @GMIME_CFLAGS@
+GMIME_LIBS = @GMIME_LIBS@
 GMOFILES = @GMOFILES@
 GMSGFMT = @GMSGFMT@
 GNOME_CFLAGS = @GNOME_CFLAGS@
@@ -91,9 +93,6 @@ GNOME_LIBS = @GNOME_LIBS@
 GOB2 = @GOB2@
 GTK_CFLAGS = @GTK_CFLAGS@
 GTK_LIBS = @GTK_LIBS@
-G_ASSERTIONS = @G_ASSERTIONS@
-HAVE_SOUP_FALSE = @HAVE_SOUP_FALSE@
-HAVE_SOUP_TRUE = @HAVE_SOUP_TRUE@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -167,6 +166,8 @@ WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
 WITH_MBOX_TRUE = @WITH_MBOX_TRUE@
 WITH_MH_FALSE = @WITH_MH_FALSE@
 WITH_MH_TRUE = @WITH_MH_TRUE@
+WITH_MIME_FALSE = @WITH_MIME_FALSE@
+WITH_MIME_TRUE = @WITH_MIME_TRUE@
 WITH_POP3_FALSE = @WITH_POP3_FALSE@
 WITH_POP3_OR_IMAP_FALSE = @WITH_POP3_OR_IMAP_FALSE@
 WITH_POP3_OR_IMAP_TRUE = @WITH_POP3_OR_IMAP_TRUE@
diff --git a/config.h.in b/config.h.in
@@ -6,45 +6,12 @@
 /* Define to the gettext package name */
 #undef GETTEXT_PACKAGE
 
-/* Define to 1 if you have the `atoi' function. */
-#undef HAVE_ATOI
-
 /* Define to 1 if you have the `bind_textdomain_codeset' function. */
 #undef HAVE_BIND_TEXTDOMAIN_CODESET
 
-/* Define to 1 if you have the `close' function. */
-#undef HAVE_CLOSE
-
-/* Define to 1 if you have the `connect' function. */
-#undef HAVE_CONNECT
-
 /* Define to 1 if you have the `dcgettext' function. */
 #undef HAVE_DCGETTEXT
 
-/* Define to 1 if you have the <errno.h> header file. */
-#undef HAVE_ERRNO_H
-
-/* Define to 1 if you have the `exit' function. */
-#undef HAVE_EXIT
-
-/* Define to 1 if you have the `freeaddrinfo' function. */
-#undef HAVE_FREEADDRINFO
-
-/* Define to 1 if you have the `gai_strerror' function. */
-#undef HAVE_GAI_STRERROR
-
-/* Define to 1 if you have the `getaddrinfo' function. */
-#undef HAVE_GETADDRINFO
-
-/* Define to 1 if you have the `getnameinfo' function. */
-#undef HAVE_GETNAMEINFO
-
-/* Define to 1 if you have the `getpeername' function. */
-#undef HAVE_GETPEERNAME
-
-/* Define to 1 if you have the `getsockname' function. */
-#undef HAVE_GETSOCKNAME
-
 /* Define if the GNU gettext() function is already present or preinstalled. */
 #undef HAVE_GETTEXT
 
@@ -57,78 +24,33 @@
 /* Define to 1 if you have the <locale.h> header file. */
 #undef HAVE_LOCALE_H
 
-/* Define to 1 if you have the `memcpy' function. */
-#undef HAVE_MEMCPY
-
 /* Define to 1 if you have the <memory.h> header file. */
 #undef HAVE_MEMORY_H
 
-/* Define to 1 if you have the `memset' function. */
-#undef HAVE_MEMSET
-
-/* Define to 1 if you have the `read' function. */
-#undef HAVE_READ
-
-/* Define to 1 if you have the `signal' function. */
-#undef HAVE_SIGNAL
-
-/* Define to 1 if you have the <signal.h> header file. */
-#undef HAVE_SIGNAL_H
-
-/* Define to 1 if you have the `sleep' function. */
-#undef HAVE_SLEEP
-
-/* Define to 1 if you have the `socket' function. */
-#undef HAVE_SOCKET
-
-/* Define to 1 if you have the `sscanf' function. */
-#undef HAVE_SSCANF
-
-/* Define to 1 if you have the <stdarg.h> header file. */
-#undef HAVE_STDARG_H
-
 /* Define to 1 if you have the <stdint.h> header file. */
 #undef HAVE_STDINT_H
 
-/* Define to 1 if you have the <stdio.h> header file. */
-#undef HAVE_STDIO_H
-
 /* Define to 1 if you have the <stdlib.h> header file. */
 #undef HAVE_STDLIB_H
 
-/* Define to 1 if you have the `strchr' function. */
-#undef HAVE_STRCHR
-
-/* Define to 1 if you have the `strcmp' function. */
-#undef HAVE_STRCMP
-
 /* Define to 1 if you have the <strings.h> header file. */
 #undef HAVE_STRINGS_H
 
 /* Define to 1 if you have the <string.h> header file. */
 #undef HAVE_STRING_H
 
-/* Define to 1 if you have the `strlen' function. */
-#undef HAVE_STRLEN
-
-/* Define to 1 if you have the `strncmp' function. */
-#undef HAVE_STRNCMP
-
-/* Define to 1 if you have the `strstr' function. */
-#undef HAVE_STRSTR
-
 /* Define to 1 if you have the <sys/stat.h> header file. */
 #undef HAVE_SYS_STAT_H
 
 /* Define to 1 if you have the <sys/types.h> header file. */
 #undef HAVE_SYS_TYPES_H
 
+/* Define to 1 if you have the `timegm' function. */
+#undef HAVE_TIMEGM
+
 /* Define to 1 if you have the <unistd.h> header file. */
 #undef HAVE_UNISTD_H
 
-/* Define to 1 if you have the `write' function. */
-#undef HAVE_WRITE
-
 /* Name of package */
 #undef PACKAGE
 
@@ -153,34 +75,37 @@
 /* Version number of package */
 #undef VERSION
 
-/* Define to 1 if Gmail support is enabled */
+/* Define to 1 if [gmail] is enabled */
 #undef WITH_GMAIL
 
-/* Define to 1 if IMAP support is enabled */
+/* Define to 1 if [imap] is enabled */
 #undef WITH_IMAP
 
-/* Define to 1 if IPv6 support is enabled */
+/* Define to 1 if [ipv6] is enabled */
 #undef WITH_IPV6
 
-/* Define to 1 if Maildir support is enabled */
+/* Define to 1 if [maildir] is enabled */
 #undef WITH_MAILDIR
 
-/* Define to 1 if mbox support is enabled */
+/* Define to 1 if [mbox] is enabled */
 #undef WITH_MBOX
 
-/* Define to 1 if MH support is enabled */
+/* Define to 1 if [mh] is enabled */
 #undef WITH_MH
 
-/* Define to 1 if POP3 support is enabled */
+/* Define to 1 if [mime] is enabled */
+#undef WITH_MIME
+
+/* Define to 1 if [pop3] is enabled */
 #undef WITH_POP3
 
-/* Define to 1 if SASL support is enabled */
+/* Define to 1 if [sasl] is enabled */
 #undef WITH_SASL
 
-/* Define to 1 if SSL/TLS support is enabled */
+/* Define to 1 if [ssl] is enabled */
 #undef WITH_SSL
 
-/* Define to 1 if Sylpheed support is enabled */
+/* Define to 1 if [sylpheed] is enabled */
 #undef WITH_SYLPHEED
 
 /* Number of bits in a file offset, on hosts where this is settable. */
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.6.2.
+# Generated by GNU Autoconf 2.59 for mail-notification 0.7.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.6.2'
-PACKAGE_STRING='mail-notification 0.6.2'
+PACKAGE_VERSION='0.7.0'
+PACKAGE_STRING='mail-notification 0.7.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 G_ASSERTIONS 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 OPENSSL_CFLAGS OPENSSL_LIBS SASL_CFLAGS SASL_LIBS SOUP_CFLAGS SOUP_LIBS ORBIT_IDL LIBBONOBO_IDL BONOBO_ACTIVATION_IDL GOB2 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_SSL_TRUE WITH_SSL_FALSE WITH_SASL_TRUE WITH_SASL_FALSE WITH_SYLPHEED_TRUE WITH_SYLPHEED_FALSE WITH_GMAIL_TRUE WITH_GMAIL_FALSE HAVE_SOUP_TRUE HAVE_SOUP_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 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_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.6.2 to adapt to many kinds of systems.
+\`configure' configures mail-notification 0.7.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.6.2:";;
+     short | recursive ) echo "Configuration of mail-notification 0.7.0:";;
    esac
   cat <<\_ACEOF
 
@@ -859,11 +859,11 @@ Optional Features:
   --disable-sylpheed      disable Sylpheed support
   --disable-gmail         disable Gmail support
   --disable-ipv6          disable IPv6 support
-  --disable-assertions    disable GLib assertions (not recommended)
+  --disable-mime          disable MIME support
   --enable-compile-warnings=no|yes|error
                           enable compiler warnings [no]
   --enable-regression-tests
-                          build and run regression tests [no]
+                          build and run regression tests
   --enable-maintainer-mode  enable make rules and dependencies not useful
 			  (and sometimes confusing) to the casual installer
   --disable-dependency-tracking  speeds up one-time build
@@ -986,7 +986,7 @@ fi
 test -n "$ac_init_help" && exit 0
 if $ac_init_version; then
   cat <<\_ACEOF
-mail-notification configure 0.6.2
+mail-notification configure 0.7.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.6.2, which was
+It was created by mail-notification $as_me 0.7.0, which was
 generated by GNU Autoconf 2.59.  Invocation command line was
 
   $ $0 $@
@@ -1354,7 +1354,6 @@ esac
 else
   enable_mbox=yes
 fi;
-
 # Check whether --enable-mh or --disable-mh was given.
 if test "${enable_mh+set}" = set; then
   enableval="$enable_mh"
@@ -1367,7 +1366,6 @@ esac
 else
   enable_mh=yes
 fi;
-
 # Check whether --enable-maildir or --disable-maildir was given.
 if test "${enable_maildir+set}" = set; then
   enableval="$enable_maildir"
@@ -1380,7 +1378,6 @@ esac
 else
   enable_maildir=yes
 fi;
-
 # Check whether --enable-pop3 or --disable-pop3 was given.
 if test "${enable_pop3+set}" = set; then
   enableval="$enable_pop3"
@@ -1393,7 +1390,6 @@ esac
 else
   enable_pop3=yes
 fi;
-
 # Check whether --enable-imap or --disable-imap was given.
 if test "${enable_imap+set}" = set; then
   enableval="$enable_imap"
@@ -1406,7 +1402,6 @@ esac
 else
   enable_imap=yes
 fi;
-
 # Check whether --enable-ssl or --disable-ssl was given.
 if test "${enable_ssl+set}" = set; then
   enableval="$enable_ssl"
@@ -1419,7 +1414,6 @@ esac
 else
   enable_ssl=yes
 fi;
-
 # Check whether --enable-sasl or --disable-sasl was given.
 if test "${enable_sasl+set}" = set; then
   enableval="$enable_sasl"
@@ -1432,7 +1426,6 @@ esac
 else
   enable_sasl=yes
 fi;
-
 # Check whether --enable-sylpheed or --disable-sylpheed was given.
 if test "${enable_sylpheed+set}" = set; then
   enableval="$enable_sylpheed"
@@ -1445,7 +1438,6 @@ esac
 else
   enable_sylpheed=yes
 fi;
-
 # Check whether --enable-gmail or --disable-gmail was given.
 if test "${enable_gmail+set}" = set; then
   enableval="$enable_gmail"
@@ -1458,7 +1450,6 @@ esac
 else
   enable_gmail=yes
 fi;
-
 # Check whether --enable-ipv6 or --disable-ipv6 was given.
 if test "${enable_ipv6+set}" = set; then
   enableval="$enable_ipv6"
@@ -1471,27 +1462,19 @@ esac
 else
   enable_ipv6=yes
 fi;
-
-# Check whether --enable-assertions or --disable-assertions was given.
-if test "${enable_assertions+set}" = set; then
-  enableval="$enable_assertions"
+# Check whether --enable-mime or --disable-mime was given.
+if test "${enable_mime+set}" = set; then
+  enableval="$enable_mime"
   case "$enableval" in
-	yes|no) enable_assertions=$enableval ;;
-	*) { { echo "$as_me:$LINENO: error: bad value $enableval for --enable-assertions" >&5
-echo "$as_me: error: bad value $enableval for --enable-assertions" >&2;}
+	yes|no) enable_mime=$enableval ;;
+	*) { { echo "$as_me:$LINENO: error: bad value $enableval for --enable-mime" >&5
+echo "$as_me: error: bad value $enableval for --enable-mime" >&2;}
    { (exit 1); exit 1; }; } ;;
 esac
 else
-  enable_assertions=yes
+  enable_mime=yes
 fi;
 
-if test $enable_assertions = no; then
-	G_ASSERTIONS="-DG_DISABLE_ASSERT"
-else
-	G_ASSERTIONS=""
-fi
-
-
 # Check whether --enable-compile-warnings or --disable-compile-warnings was given.
 if test "${enable_compile_warnings+set}" = set; then
   enableval="$enable_compile_warnings"
@@ -1508,12 +1491,12 @@ fi;
 if test $enable_compile_warnings = no; then
 	WARN_CFLAGS=
 else
+	# some flags are specific to GCC
 	WARN_CFLAGS="-Wall -Wcast-align -Wredundant-decls -Wnested-externs -Winline"
 	test $enable_compile_warnings = error && WARN_CFLAGS="$WARN_CFLAGS -Werror"
 fi
 
 
-
 # Check whether --enable-regression-tests or --disable-regression-tests was given.
 if test "${enable_regression_tests+set}" = set; then
   enableval="$enable_regression_tests"
@@ -1828,7 +1811,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='mail-notification'
- VERSION='0.6.2'
+ VERSION='0.7.0'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -1991,7 +1974,7 @@ _ACEOF
 
 
 
-ALL_LINGUAS="de fr pt ru"
+ALL_LINGUAS="bg de fr pt ru sr sr@Latn"
 DEPDIR="${am__leading_dot}deps"
 
           ac_config_commands="$ac_config_commands depfiles"
@@ -6304,38 +6287,30 @@ rm -f conftest*
 fi
 
 
-# the order of these tests matters
-
-
-
-
-
-
-
-
-for ac_header in errno.h signal.h stdarg.h stdio.h stdlib.h string.h sys/types.h unistd.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
+# check for ANSI C headers
+echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
 else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
+  cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
@@ -6359,117 +6334,61 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_header_compiler=yes
+  ac_cv_header_stdc=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_header_compiler=no
+ac_cv_header_stdc=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
 
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <$ac_header>
+#include <string.h>
+
 _ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then
+  :
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
+  ac_cv_header_stdc=no
 fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
+rm -f conftest*
 
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ---------------------------------- ##
-## Report this to jylefort@brutele.be ##
-## ---------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
 fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
 
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
 _ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
 
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then
+  :
 else
-  { { echo "$as_me:$LINENO: error: header not found" >&5
-echo "$as_me: error: header not found" >&2;}
-   { (exit 1); exit 1; }; }
+  ac_cv_header_stdc=no
 fi
+rm -f conftest*
 
-done
+fi
 
-echo "$as_me:$LINENO: checking for sys/uio.h" >&5
-echo $ECHO_N "checking for sys/uio.h... $ECHO_C" >&6
-if test "${ac_cv_header_sys_uio_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then
+  :
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -6477,55 +6396,78 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <sys/types.h>
+#include <ctype.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
 
-#include <sys/uio.h>
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      exit(2);
+  exit (0);
+}
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_header_sys_uio_h=yes
+  :
 else
-  echo "$as_me: failed program was:" >&5
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_header_sys_uio_h=no
+( exit $ac_status )
+ac_cv_header_stdc=no
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_header_sys_uio_h" >&5
-echo "${ECHO_T}$ac_cv_header_sys_uio_h" >&6
-if test $ac_cv_header_sys_uio_h = yes; then
-  :
-else
-  { { echo "$as_me:$LINENO: error: header not found" >&5
-echo "$as_me: error: header not found" >&2;}
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+if test $ac_cv_header_stdc != yes; then
+	{ { echo "$as_me:$LINENO: error: ANSI C headers not present" >&5
+echo "$as_me: error: ANSI C headers not present" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
+# timegm() is non-standard, define HAVE_TIMEGM if it is present
 
-echo "$as_me:$LINENO: checking for sys/socket.h" >&5
-echo $ECHO_N "checking for sys/socket.h... $ECHO_C" >&6
-if test "${ac_cv_header_sys_socket_h+set}" = set; then
+for ac_func in timegm
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -6534,276 +6476,9 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-
-#include <sys/socket.h>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_header_sys_socket_h=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_header_sys_socket_h=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_sys_socket_h" >&5
-echo "${ECHO_T}$ac_cv_header_sys_socket_h" >&6
-if test $ac_cv_header_sys_socket_h = yes; then
-  :
-else
-  { { echo "$as_me:$LINENO: error: header not found" >&5
-echo "$as_me: error: header not found" >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
-
-echo "$as_me:$LINENO: checking for netdb.h" >&5
-echo $ECHO_N "checking for netdb.h... $ECHO_C" >&6
-if test "${ac_cv_header_netdb_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-
-#include <netdb.h>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_header_netdb_h=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_header_netdb_h=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_netdb_h" >&5
-echo "${ECHO_T}$ac_cv_header_netdb_h" >&6
-if test $ac_cv_header_netdb_h = yes; then
-  :
-else
-  { { echo "$as_me:$LINENO: error: header not found" >&5
-echo "$as_me: error: header not found" >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
-
-echo "$as_me:$LINENO: checking for netinet/in.h" >&5
-echo $ECHO_N "checking for netinet/in.h... $ECHO_C" >&6
-if test "${ac_cv_header_netinet_in_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-
-#include <netinet/in.h>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_header_netinet_in_h=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_header_netinet_in_h=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_netinet_in_h" >&5
-echo "${ECHO_T}$ac_cv_header_netinet_in_h" >&6
-if test $ac_cv_header_netinet_in_h = yes; then
-  :
-else
-  { { echo "$as_me:$LINENO: error: header not found" >&5
-echo "$as_me: error: header not found" >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
-
-echo "$as_me:$LINENO: checking for arpa/inet.h" >&5
-echo $ECHO_N "checking for arpa/inet.h... $ECHO_C" >&6
-if test "${ac_cv_header_arpa_inet_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-
-#include <arpa/inet.h>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_header_arpa_inet_h=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_header_arpa_inet_h=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_arpa_inet_h" >&5
-echo "${ECHO_T}$ac_cv_header_arpa_inet_h" >&6
-if test $ac_cv_header_arpa_inet_h = yes; then
-  :
-else
-  { { echo "$as_me:$LINENO: error: header not found" >&5
-echo "$as_me: error: header not found" >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-for ac_func in atoi close connect exit freeaddrinfo gai_strerror getaddrinfo getnameinfo getpeername getsockname memcpy memset read signal sleep socket sscanf strchr strcmp strlen strncmp strstr write
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
 
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func (); below.
@@ -6885,15 +6560,11 @@ if test `eval echo '${'$as_ac_var'}'` = yes; then
 #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
 
-else
-  { { echo "$as_me:$LINENO: error: library function not found" >&5
-echo "$as_me: error: library function not found" >&2;}
-   { (exit 1); exit 1; }; }
 fi
 done
 
 
-### build dependencies
+### mandatory libraries and programs
 
 # Check whether --enable-gtktest or --disable-gtktest was given.
 if test "${enable_gtktest+set}" = set; then
@@ -7300,9 +6971,6 @@ echo "$as_me: error: unable to find the GNOME libraries" >&2;}
   fi
 
 
-
-
-
   if test "x$GCONF_SCHEMA_INSTALL_SOURCE" = "x"; then
     GCONF_SCHEMA_CONFIG_SOURCE=`gconftool-2 --get-default-source`
   else
@@ -7405,18 +7073,76 @@ echo "$as_me: error: unable to find the gconftool-2 program" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
+ORBIT_IDL="`$PKG_CONFIG --variable=orbit_idl ORBit-2.0`"
+
+
+LIBBONOBO_IDL="`$PKG_CONFIG --variable=idldir libbonobo-2.0`"
+
+
+BONOBO_ACTIVATION_IDL="`$PKG_CONFIG --variable=idldir bonobo-activation-2.0`"
+
+
+### optional libraries
+
+# not needed by end-users, as files generated by GOB are distributed
+# Extract the first word of "gob2", so it can be a program name with args.
+set dummy gob2; 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_GOB2+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $GOB2 in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_GOB2="$GOB2" # 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_GOB2="$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
+
+  ;;
+esac
+fi
+GOB2=$ac_cv_path_GOB2
+
+if test -n "$GOB2"; then
+  echo "$as_me:$LINENO: result: $GOB2" >&5
+echo "${ECHO_T}$GOB2" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+
 if test $enable_pop3 = no && test $enable_imap = no; then
 	if test $enable_ssl = yes; then
 		{ echo "$as_me:$LINENO: POP3 and IMAP support disabled: forcing --disable-ssl" >&5
 echo "$as_me: POP3 and IMAP support disabled: forcing --disable-ssl" >&6;}
-		enable_ssl=no
-		disable_ssl_reason="(not needed)"
+enable_ssl=no
+disable_ssl_reason="(POP3 and IMAP support disabled)"
 	fi
 	if test $enable_sasl = yes; then
 		{ echo "$as_me:$LINENO: POP3 and IMAP support disabled: forcing --disable-sasl" >&5
 echo "$as_me: POP3 and IMAP support disabled: forcing --disable-sasl" >&6;}
-		enable_sasl=no
-		disable_sasl_reason="(not needed)"
+enable_sasl=no
+disable_sasl_reason="(POP3 and IMAP support disabled)"
+	fi
+	if test $enable_ipv6 = yes; then
+		{ echo "$as_me:$LINENO: POP3 and IMAP support disabled: forcing --disable-ipv6" >&5
+echo "$as_me: POP3 and IMAP support disabled: forcing --disable-ipv6" >&6;}
+enable_ipv6=no
+disable_ipv6_reason="(POP3 and IMAP support disabled)"
 	fi
 fi
 
@@ -7494,14 +7220,15 @@ if test $found = yes; then
 else
 	OPENSSL_CFLAGS=""
 	OPENSSL_LIBS=""
-	{ echo "$as_me:$LINENO: WARNING: unable to find the OpenSSL library: forcing --disable-ssl" >&5
-echo "$as_me: WARNING: unable to find the OpenSSL library: forcing --disable-ssl" >&2;}; enable_ssl=no; disable_ssl_reason="(OpenSSL not found)"
+	{ echo "$as_me:$LINENO: OpenSSL not found: forcing --disable-ssl" >&5
+echo "$as_me: OpenSSL not found: forcing --disable-ssl" >&6;}
+enable_ssl=no
+disable_ssl_reason="(OpenSSL not found)"
 fi
 
 
 
 fi
-
 if test $enable_sasl = yes; then
 	SASL_CFLAGS=""
 SASL_LIBS="-lsasl2"
@@ -7571,15 +7298,16 @@ if test $found = yes; then
 else
 	SASL_CFLAGS=""
 	SASL_LIBS=""
-	{ echo "$as_me:$LINENO: WARNING: unable to find the Cyrus SASL library: forcing --disable-sasl" >&5
-echo "$as_me: WARNING: unable to find the Cyrus SASL library: forcing --disable-sasl" >&2;}; enable_sasl=no; disable_sasl_reason="(Cyrus SASL not found)"
+	{ echo "$as_me:$LINENO: Cyrus SASL not found: forcing --disable-sasl" >&5
+echo "$as_me: Cyrus SASL not found: forcing --disable-sasl" >&6;}
+enable_sasl=no
+disable_sasl_reason="(Cyrus SASL not found)"
 fi
 
 
 
 fi
 
-have_soup=no
 if test $enable_gmail = yes; then
 
   succeeded=no
@@ -7635,23 +7363,23 @@ fi
   else
      PKG_CONFIG_MIN_VERSION=0.9.0
      if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
-        echo "$as_me:$LINENO: checking for soup-2.0" >&5
-echo $ECHO_N "checking for soup-2.0... $ECHO_C" >&6
+        echo "$as_me:$LINENO: checking for libsoup-2.2" >&5
+echo $ECHO_N "checking for libsoup-2.2... $ECHO_C" >&6
 
-        if $PKG_CONFIG --exists "soup-2.0" ; then
+        if $PKG_CONFIG --exists "libsoup-2.2" ; then
             echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6
             succeeded=yes
 
             echo "$as_me:$LINENO: checking SOUP_CFLAGS" >&5
 echo $ECHO_N "checking SOUP_CFLAGS... $ECHO_C" >&6
-            SOUP_CFLAGS=`$PKG_CONFIG --cflags "soup-2.0"`
+            SOUP_CFLAGS=`$PKG_CONFIG --cflags "libsoup-2.2"`
             echo "$as_me:$LINENO: result: $SOUP_CFLAGS" >&5
 echo "${ECHO_T}$SOUP_CFLAGS" >&6
 
             echo "$as_me:$LINENO: checking SOUP_LIBS" >&5
 echo $ECHO_N "checking SOUP_LIBS... $ECHO_C" >&6
-            SOUP_LIBS=`$PKG_CONFIG --libs "soup-2.0"`
+            SOUP_LIBS=`$PKG_CONFIG --libs "libsoup-2.2"`
             echo "$as_me:$LINENO: result: $SOUP_LIBS" >&5
 echo "${ECHO_T}$SOUP_LIBS" >&6
         else
@@ -7659,7 +7387,7 @@ echo "${ECHO_T}$SOUP_LIBS" >&6
             SOUP_LIBS=""
             ## If we have a custom action on failure, don't print errors, but
             ## do set a variable so people can do so.
-            SOUP_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "soup-2.0"`
+            SOUP_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libsoup-2.2"`
 
         fi
 
@@ -7672,33 +7400,44 @@ echo "${ECHO_T}$SOUP_LIBS" >&6
   fi
 
   if test $succeeded = yes; then
-     have_soup=yes
+     :
   else
-     { echo "$as_me:$LINENO: WARNING: unable to find the soup library: forcing --disable-gmail" >&5
-echo "$as_me: WARNING: unable to find the soup library: forcing --disable-gmail" >&2;}; enable_gmail=no; disable_gmail_reason="(libsoup not found)"
+     { echo "$as_me:$LINENO: libsoup not found: forcing --disable-gmail" >&5
+echo "$as_me: libsoup not found: forcing --disable-gmail" >&6;}
+enable_gmail=no
+disable_gmail_reason="(libsoup not found)"
   fi
 
 fi
 
-ORBIT_IDL="`$PKG_CONFIG --variable=orbit_idl ORBit-2.0`"
-
-
-LIBBONOBO_IDL="`$PKG_CONFIG --variable=idldir libbonobo-2.0`"
-
+if test $enable_mime = yes &&
+   test $enable_mbox = no &&
+   test $enable_mh = no &&
+   test $enable_maildir = no &&
+   test $enable_pop3 = no &&
+   test $enable_imap = no &&
+   test $enable_sylpheed = no; then
+	{ echo "$as_me:$LINENO: mbox, MH, Maildir, POP3, IMAP and Sylpheed support disabled: forcing --disable-mime" >&5
+echo "$as_me: mbox, MH, Maildir, POP3, IMAP and Sylpheed support disabled: forcing --disable-mime" >&6;}
+enable_mime=no
+disable_mime_reason="(mbox, MH, Maildir, POP3, IMAP and Sylpheed support disabled)"
+fi
 
-BONOBO_ACTIVATION_IDL="`$PKG_CONFIG --variable=idldir bonobo-activation-2.0`"
+if test $enable_mime = yes; then
 
+  succeeded=no
 
-# Extract the first word of "gob2", so it can be a program name with args.
-set dummy gob2; ac_word=$2
+  if test -z "$PKG_CONFIG"; then
+    # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; 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_GOB2+set}" = set; then
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  case $GOB2 in
+  case $PKG_CONFIG in
   [\\/]* | ?:[\\/]*)
-  ac_cv_path_GOB2="$GOB2" # Let the user override the test with a path.
+  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
   ;;
   *)
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -7708,26 +7447,83 @@ do
   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_GOB2="$as_dir/$ac_word$ac_exec_ext"
+    ac_cv_path_PKG_CONFIG="$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_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
   ;;
 esac
 fi
-GOB2=$ac_cv_path_GOB2
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
 
-if test -n "$GOB2"; then
-  echo "$as_me:$LINENO: result: $GOB2" >&5
-echo "${ECHO_T}$GOB2" >&6
+if test -n "$PKG_CONFIG"; then
+  echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+echo "${ECHO_T}$PKG_CONFIG" >&6
 else
   echo "$as_me:$LINENO: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
+  fi
+
+  if test "$PKG_CONFIG" = "no" ; then
+     echo "*** The pkg-config script could not be found. Make sure it is"
+     echo "*** in your path, or set the PKG_CONFIG environment variable"
+     echo "*** to the full path to pkg-config."
+     echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
+  else
+     PKG_CONFIG_MIN_VERSION=0.9.0
+     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
+        echo "$as_me:$LINENO: checking for gmime-2.0" >&5
+echo $ECHO_N "checking for gmime-2.0... $ECHO_C" >&6
+
+        if $PKG_CONFIG --exists "gmime-2.0" ; then
+            echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+            succeeded=yes
+
+            echo "$as_me:$LINENO: checking GMIME_CFLAGS" >&5
+echo $ECHO_N "checking GMIME_CFLAGS... $ECHO_C" >&6
+            GMIME_CFLAGS=`$PKG_CONFIG --cflags "gmime-2.0"`
+            echo "$as_me:$LINENO: result: $GMIME_CFLAGS" >&5
+echo "${ECHO_T}$GMIME_CFLAGS" >&6
+
+            echo "$as_me:$LINENO: checking GMIME_LIBS" >&5
+echo $ECHO_N "checking GMIME_LIBS... $ECHO_C" >&6
+            GMIME_LIBS=`$PKG_CONFIG --libs "gmime-2.0"`
+            echo "$as_me:$LINENO: result: $GMIME_LIBS" >&5
+echo "${ECHO_T}$GMIME_LIBS" >&6
+        else
+            GMIME_CFLAGS=""
+            GMIME_LIBS=""
+            ## If we have a custom action on failure, don't print errors, but
+            ## do set a variable so people can do so.
+            GMIME_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gmime-2.0"`
+
+        fi
+
+
+
+     else
+        echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
+        echo "*** See http://www.freedesktop.org/software/pkgconfig"
+     fi
+  fi
+
+  if test $succeeded = yes; then
+     :
+  else
+     { echo "$as_me:$LINENO: GMime not found: forcing --disable-mime" >&5
+echo "$as_me: GMime not found: forcing --disable-mime" >&6;}
+enable_mime=no
+disable_mime_reason="(GMime not found)"
+  fi
+
+fi
 
 ### Automake conditionals
 
@@ -7833,12 +7629,12 @@ fi
 
 
 
-if test $have_soup = yes; then
-  HAVE_SOUP_TRUE=
-  HAVE_SOUP_FALSE='#'
+if test $enable_mime = yes; then
+  WITH_MIME_TRUE=
+  WITH_MIME_FALSE='#'
 else
-  HAVE_SOUP_TRUE='#'
-  HAVE_SOUP_FALSE=
+  WITH_MIME_TRUE='#'
+  WITH_MIME_FALSE=
 fi
 
 
@@ -7924,6 +7720,14 @@ cat >>confdefs.h <<\_ACEOF
 _ACEOF
 
 fi
+if test $enable_mime = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define WITH_MIME 1
+_ACEOF
+
+fi
+
 
 ### output
 
@@ -8132,10 +7936,10 @@ echo "$as_me: error: conditional \"WITH_GMAIL\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
-if test -z "${HAVE_SOUP_TRUE}" && test -z "${HAVE_SOUP_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"HAVE_SOUP\" was never defined.
+if test -z "${WITH_MIME_TRUE}" && test -z "${WITH_MIME_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"WITH_MIME\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"HAVE_SOUP\" was never defined.
+echo "$as_me: error: conditional \"WITH_MIME\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -8417,7 +8221,7 @@ _ASBOX
 } >&5
 cat >&5 <<_CSEOF
 
-This file was extended by mail-notification $as_me 0.6.2, which was
+This file was extended by mail-notification $as_me 0.7.0, which was
 generated by GNU Autoconf 2.59.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -8480,7 +8284,7 @@ _ACEOF
 
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-mail-notification config.status 0.6.2
+mail-notification config.status 0.7.0
 configured by $0, generated by GNU Autoconf 2.59,
   with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
 
@@ -8691,7 +8495,6 @@ s,@ECHO_C@,$ECHO_C,;t t
 s,@ECHO_N@,$ECHO_N,;t t
 s,@ECHO_T@,$ECHO_T,;t t
 s,@LIBS@,$LIBS,;t t
-s,@G_ASSERTIONS@,$G_ASSERTIONS,;t t
 s,@WARN_CFLAGS@,$WARN_CFLAGS,;t t
 s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
 s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
@@ -8780,16 +8583,18 @@ s,@GCONF_SCHEMA_FILE_DIR@,$GCONF_SCHEMA_FILE_DIR,;t t
 s,@GCONF_SCHEMAS_INSTALL_TRUE@,$GCONF_SCHEMAS_INSTALL_TRUE,;t t
 s,@GCONF_SCHEMAS_INSTALL_FALSE@,$GCONF_SCHEMAS_INSTALL_FALSE,;t t
 s,@GCONFTOOL@,$GCONFTOOL,;t t
+s,@ORBIT_IDL@,$ORBIT_IDL,;t t
+s,@LIBBONOBO_IDL@,$LIBBONOBO_IDL,;t t
+s,@BONOBO_ACTIVATION_IDL@,$BONOBO_ACTIVATION_IDL,;t t
+s,@GOB2@,$GOB2,;t t
 s,@OPENSSL_CFLAGS@,$OPENSSL_CFLAGS,;t t
 s,@OPENSSL_LIBS@,$OPENSSL_LIBS,;t t
 s,@SASL_CFLAGS@,$SASL_CFLAGS,;t t
 s,@SASL_LIBS@,$SASL_LIBS,;t t
 s,@SOUP_CFLAGS@,$SOUP_CFLAGS,;t t
 s,@SOUP_LIBS@,$SOUP_LIBS,;t t
-s,@ORBIT_IDL@,$ORBIT_IDL,;t t
-s,@LIBBONOBO_IDL@,$LIBBONOBO_IDL,;t t
-s,@BONOBO_ACTIVATION_IDL@,$BONOBO_ACTIVATION_IDL,;t t
-s,@GOB2@,$GOB2,;t t
+s,@GMIME_CFLAGS@,$GMIME_CFLAGS,;t t
+s,@GMIME_LIBS@,$GMIME_LIBS,;t t
 s,@WITH_MBOX_TRUE@,$WITH_MBOX_TRUE,;t t
 s,@WITH_MBOX_FALSE@,$WITH_MBOX_FALSE,;t t
 s,@WITH_MH_TRUE@,$WITH_MH_TRUE,;t t
@@ -8810,8 +8615,8 @@ s,@WITH_SYLPHEED_TRUE@,$WITH_SYLPHEED_TRUE,;t t
 s,@WITH_SYLPHEED_FALSE@,$WITH_SYLPHEED_FALSE,;t t
 s,@WITH_GMAIL_TRUE@,$WITH_GMAIL_TRUE,;t t
 s,@WITH_GMAIL_FALSE@,$WITH_GMAIL_FALSE,;t t
-s,@HAVE_SOUP_TRUE@,$HAVE_SOUP_TRUE,;t t
-s,@HAVE_SOUP_FALSE@,$HAVE_SOUP_FALSE,;t t
+s,@WITH_MIME_TRUE@,$WITH_MIME_TRUE,;t t
+s,@WITH_MIME_FALSE@,$WITH_MIME_FALSE,;t t
 s,@WITH_REGRESSION_TESTS_TRUE@,$WITH_REGRESSION_TESTS_TRUE,;t t
 s,@WITH_REGRESSION_TESTS_FALSE@,$WITH_REGRESSION_TESTS_FALSE,;t t
 s,@LIBOBJS@,$LIBOBJS,;t t
@@ -9580,23 +9385,27 @@ $PACKAGE $VERSION is ready to be built.
 The following settings will be used:
 
 Installation prefixes
-  --prefix                      $prefix
-  --exec-prefix                 $exec_prefix
+  --prefix           $prefix
+  --exec-prefix      $exec_prefix
 
 Installation directories
-  --bindir                      $bindir
-  --datadir                     $datadir
-  --sysconfdir                  $sysconfdir
+  --bindir           $bindir
+  --datadir          $datadir
+  --sysconfdir       $sysconfdir
+  --libdir           $libdir
 
 Features
-  --enable-mbox                 $enable_mbox
-  --enable-mh                   $enable_mh
-  --enable-maildir              $enable_maildir
-  --enable-pop3                 $enable_pop3 $disable_pop3_reason
-  --enable-imap                 $enable_imap $disable_imap_reason
-  --enable-ssl                  $enable_ssl $disable_ssl_reason
-  --enable-sasl                 $enable_sasl $disable_sasl_reason
-  --enable-sylpheed             $enable_sylpheed
-  --enable-gmail                $enable_gmail $disable_gmail_reason
-  --enable-ipv6                 $enable_ipv6
+  --enable-mbox      $enable_mbox $disable_mbox_reason
+  --enable-mh        $enable_mh $disable_mh_reason
+  --enable-maildir   $enable_maildir $disable_maildir_reason
+  --enable-pop3      $enable_pop3 $disable_pop3_reason
+  --enable-imap      $enable_imap $disable_imap_reason
+  --enable-ssl       $enable_ssl $disable_ssl_reason
+  --enable-sasl      $enable_sasl $disable_sasl_reason
+  --enable-sylpheed  $enable_sylpheed $disable_sylpheed_reason
+  --enable-gmail     $enable_gmail $disable_gmail_reason
+  --enable-ipv6      $enable_ipv6 $disable_ipv6_reason
+  --enable-mime      $enable_mime $disable_mime_reason
+
+Type "make" to build $PACKAGE $VERSION.
 EOF
diff --git a/configure.ac b/configure.ac
@@ -1,89 +1,24 @@
-AC_INIT(mail-notification, 0.6.2, jylefort@brutele.be)
+AC_INIT(mail-notification, 0.7.0, jylefort@brutele.be)
 AC_CONFIG_SRCDIR(src/mn-main.c)
 
 AC_PREREQ(2.59)
 
 ### command line arguments
 
-AC_ARG_ENABLE(mbox,
-AC_HELP_STRING([--disable-mbox], [disable mbox support]),
-[case "$enableval" in
-	yes|no) enable_mbox=$enableval ;;
-	*) AC_MSG_ERROR([bad value $enableval for --enable-mbox]) ;;
-esac], [enable_mbox=yes])
-
-AC_ARG_ENABLE(mh,
-AC_HELP_STRING([--disable-mh], [disable MH support]),
-[case "$enableval" in
-	yes|no) enable_mh=$enableval ;;
-	*) AC_MSG_ERROR([bad value $enableval for --enable-mh]) ;;
-esac], [enable_mh=yes])
-
-AC_ARG_ENABLE(maildir,
-AC_HELP_STRING([--disable-maildir], [disable Maildir support]),
-[case "$enableval" in
-	yes|no) enable_maildir=$enableval ;;
-	*) AC_MSG_ERROR([bad value $enableval for --enable-maildir]) ;;
-esac], [enable_maildir=yes])
-
-AC_ARG_ENABLE(pop3,
-AC_HELP_STRING([--disable-pop3], [disable POP3 support]),
-[case "$enableval" in
-	yes|no) enable_pop3=$enableval ;;
-	*) AC_MSG_ERROR([bad value $enableval for --enable-pop3]) ;;
-esac], [enable_pop3=yes])
-
-AC_ARG_ENABLE(imap,
-AC_HELP_STRING([--disable-imap], [disable IMAP support]),
-[case "$enableval" in
-	yes|no) enable_imap=$enableval ;;
-	*) AC_MSG_ERROR([bad value $enableval for --enable-imap]) ;;
-esac], [enable_imap=yes])
-
-AC_ARG_ENABLE(ssl,
-AC_HELP_STRING([--disable-ssl], [disable SSL/TLS support]),
-[case "$enableval" in
-	yes|no) enable_ssl=$enableval ;;
-	*) AC_MSG_ERROR([bad value $enableval for --enable-ssl]) ;;
-esac], [enable_ssl=yes])
-
-AC_ARG_ENABLE(sasl,
-AC_HELP_STRING([--disable-sasl], [disable SASL authentication support]),
-[case "$enableval" in
-	yes|no) enable_sasl=$enableval ;;
-	*) AC_MSG_ERROR([bad value $enableval for --enable-sasl]) ;;
-esac], [enable_sasl=yes])
-
-AC_ARG_ENABLE(sylpheed,
-AC_HELP_STRING([--disable-sylpheed], [disable Sylpheed support]),
-[case "$enableval" in
-	yes|no) enable_sylpheed=$enableval ;;
-	*) AC_MSG_ERROR([bad value $enableval for --enable-sylpheed]) ;;
-esac], [enable_sylpheed=yes])
-
-AC_ARG_ENABLE(gmail,
-AC_HELP_STRING([--disable-gmail], [disable Gmail support]),
-[case "$enableval" in
-	yes|no) enable_gmail=$enableval ;;
-	*) AC_MSG_ERROR([bad value $enableval for --enable-gmail]) ;;
-esac], [enable_gmail=yes])
-
-AC_ARG_ENABLE(ipv6,
-AC_HELP_STRING([--disable-ipv6], [disable IPv6 support]),
-[case "$enableval" in
-	yes|no) enable_ipv6=$enableval ;;
-	*) AC_MSG_ERROR([bad value $enableval for --enable-ipv6]) ;;
-esac], [enable_ipv6=yes])
-
-AC_ARG_G_ASSERTIONS
-AC_ARG_COMPILE_WARNINGS
-
-AC_ARG_ENABLE(regression-tests,
-AC_HELP_STRING([--enable-regression-tests], [build and run regression tests [[no]]]),
-[case "$enableval" in
-	yes|no) enable_regression_tests=$enableval ;;
-	*) AC_MSG_ERROR([bad value $enableval for --enable-regression-tests]) ;;
-esac], [enable_regression_tests=no])
+MN_ARG_ENABLE(mbox, [disable mbox support])
+MN_ARG_ENABLE(mh, [disable MH support])
+MN_ARG_ENABLE(maildir, [disable Maildir support])
+MN_ARG_ENABLE(pop3, [disable POP3 support])
+MN_ARG_ENABLE(imap, [disable IMAP support])
+MN_ARG_ENABLE(ssl, [disable SSL/TLS support])
+MN_ARG_ENABLE(sasl, [disable SASL authentication support])
+MN_ARG_ENABLE(sylpheed, [disable Sylpheed support])
+MN_ARG_ENABLE(gmail, [disable Gmail support])
+MN_ARG_ENABLE(ipv6, [disable IPv6 support])
+MN_ARG_ENABLE(mime, [disable MIME support])
+
+MN_ARG_COMPILE_WARNINGS
+MN_ARG_ENABLE(regression-tests, [build and run regression tests], no)
 
 ### initialization
 
@@ -97,7 +32,7 @@ GETTEXT_PACKAGE=AC_PACKAGE_NAME
 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Define to the gettext package name])
 AC_SUBST(GETTEXT_PACKAGE)
 
-ALL_LINGUAS="de fr pt ru"
+ALL_LINGUAS="bg de fr pt ru sr sr@Latn"
 AM_GLIB_GNU_GETTEXT
 
 AC_PROG_INTLTOOL
@@ -107,41 +42,20 @@ AC_PROG_INTLTOOL
 AC_PROG_CC
 AC_SYS_LARGEFILE
 
-# the order of these tests matters
-AC_CHECK_HEADERS(errno.h signal.h stdarg.h stdio.h stdlib.h string.h sys/types.h unistd.h,, [AC_MSG_ERROR([header not found])])
-AC_CHECK_HEADER(sys/uio.h,, [AC_MSG_ERROR([header not found])],
-[#include <sys/types.h>])
-AC_CHECK_HEADER(sys/socket.h,, [AC_MSG_ERROR([header not found])],
-[#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>])
-AC_CHECK_HEADER(netdb.h,, [AC_MSG_ERROR([header not found])],
-[#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/socket.h>])
-AC_CHECK_HEADER(netinet/in.h,, [AC_MSG_ERROR([header not found])],
-[#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/socket.h>])
-AC_CHECK_HEADER(arpa/inet.h,, [AC_MSG_ERROR([header not found])],
-[#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>])
-
-AC_CHECK_FUNCS(atoi close connect exit freeaddrinfo gai_strerror getaddrinfo getnameinfo getpeername getsockname memcpy memset read signal sleep socket sscanf strchr strcmp strlen strncmp strstr write,, [AC_MSG_ERROR([library function not found])])
-
-### build dependencies
+# check for ANSI C headers
+AC_HEADER_STDC
+if test $ac_cv_header_stdc != yes; then
+	AC_MSG_ERROR([ANSI C headers not present])
+fi
+
+# timegm() is non-standard, define HAVE_TIMEGM if it is present
+AC_CHECK_FUNCS(timegm)
+
+### mandatory libraries and programs
 
 AM_PATH_GTK_2_0(2.4.0,, [AC_MSG_ERROR([unable to find the GTK+ library])])
 
 PKG_CHECK_MODULES(GNOME, [gthread-2.0 gconf-2.0 >= 2.4.0 libgnomeui-2.0 gnome-vfs-2.0 libglade-2.0 eel-2.0 >= 2.6.0 bonobo-activation-2.0],, [AC_MSG_ERROR([unable to find the GNOME libraries])])
-AC_SUBST(GNOME_CFLAGS)
-AC_SUBST(GNOME_LIBS)
-
 AM_GCONF_SOURCE_2
 
 AC_PATH_PROG(GCONFTOOL, gconftool-2)
@@ -149,32 +63,6 @@ if test -z "$GCONFTOOL"; then
 	AC_MSG_ERROR([unable to find the gconftool-2 program])
 fi
 
-if test $enable_pop3 = no && test $enable_imap = no; then
-	if test $enable_ssl = yes; then
-		AC_MSG_NOTICE([POP3 and IMAP support disabled: forcing --disable-ssl])
-		enable_ssl=no
-		disable_ssl_reason="(not needed)"
-	fi
-	if test $enable_sasl = yes; then
-		AC_MSG_NOTICE([POP3 and IMAP support disabled: forcing --disable-sasl])
-		enable_sasl=no
-		disable_sasl_reason="(not needed)"
-	fi
-fi
-
-if test $enable_ssl = yes; then
-	AM_PATH_OPENSSL(,, [AC_MSG_WARN([unable to find the OpenSSL library: forcing --disable-ssl]); enable_ssl=no; disable_ssl_reason="(OpenSSL not found)"])
-fi
-
-if test $enable_sasl = yes; then
-	AM_PATH_SASL2(,, [AC_MSG_WARN([unable to find the Cyrus SASL library: forcing --disable-sasl]); enable_sasl=no; disable_sasl_reason="(Cyrus SASL not found)"])
-fi
-
-have_soup=no
-if test $enable_gmail = yes; then
-	PKG_CHECK_MODULES(SOUP, soup-2.0, have_soup=yes, [AC_MSG_WARN([unable to find the soup library: forcing --disable-gmail]); enable_gmail=no; disable_gmail_reason="(libsoup not found)"])
-fi	
-
 ORBIT_IDL="`$PKG_CONFIG --variable=orbit_idl ORBit-2.0`"
 AC_SUBST(ORBIT_IDL)
 
@@ -184,56 +72,67 @@ AC_SUBST(LIBBONOBO_IDL)
 BONOBO_ACTIVATION_IDL="`$PKG_CONFIG --variable=idldir bonobo-activation-2.0`"
 AC_SUBST(BONOBO_ACTIVATION_IDL)
 
-AC_PATH_PROG(GOB2, gob2)
-
-### Automake conditionals
-
-AM_CONDITIONAL(WITH_MBOX, [test $enable_mbox = yes])
-AM_CONDITIONAL(WITH_MH, [test $enable_mh = yes])
-AM_CONDITIONAL(WITH_MAILDIR, [test $enable_maildir = yes])
-AM_CONDITIONAL(WITH_POP3, [test $enable_pop3 = yes])
-AM_CONDITIONAL(WITH_IMAP, [test $enable_imap = yes])
-AM_CONDITIONAL(WITH_POP3_OR_IMAP, [test $enable_pop3 = yes || test $enable_imap = yes])
-AM_CONDITIONAL(WITH_SSL, [test $enable_ssl = yes])
-AM_CONDITIONAL(WITH_SASL, [test $enable_sasl = yes])
-AM_CONDITIONAL(WITH_SYLPHEED, [test $enable_sylpheed = yes])
-AM_CONDITIONAL(WITH_GMAIL, [test $enable_gmail = yes])
-AM_CONDITIONAL(HAVE_SOUP, [test $have_soup = yes])
-AM_CONDITIONAL(WITH_REGRESSION_TESTS, [test $enable_regression_tests = yes])
+### optional libraries
 
-### config.h definitions
+# not needed by end-users, as files generated by GOB are distributed
+AC_PATH_PROG(GOB2, gob2)
 
-if test $enable_mbox = yes; then
-	AC_DEFINE(WITH_MBOX, 1, [Define to 1 if mbox support is enabled])
-fi
-if test $enable_mh = yes; then
-	AC_DEFINE(WITH_MH, 1, [Define to 1 if MH support is enabled])
-fi
-if test $enable_maildir = yes; then
-	AC_DEFINE(WITH_MAILDIR, 1, [Define to 1 if Maildir support is enabled])
-fi
-if test $enable_pop3 = yes; then
-	AC_DEFINE(WITH_POP3, 1, [Define to 1 if POP3 support is enabled])
-fi
-if test $enable_imap = yes; then
-	AC_DEFINE(WITH_IMAP, 1, [Define to 1 if IMAP support is enabled])
-fi
-if test $enable_ssl = yes; then
-	AC_DEFINE(WITH_SSL, 1, [Define to 1 if SSL/TLS support is enabled])
+if MN_FEATURE_DISABLED(pop3) && MN_FEATURE_DISABLED(imap); then
+	if MN_FEATURE_ENABLED(ssl); then
+		MN_FEATURE_DISABLE(ssl, [POP3 and IMAP support disabled])
+	fi
+	if MN_FEATURE_ENABLED(sasl); then
+		MN_FEATURE_DISABLE(sasl, [POP3 and IMAP support disabled])
+	fi
+	if MN_FEATURE_ENABLED(ipv6); then
+		MN_FEATURE_DISABLE(ipv6, [POP3 and IMAP support disabled])
+	fi
 fi
-if test $enable_sasl = yes; then
-	AC_DEFINE(WITH_SASL, 1, [Define to 1 if SASL support is enabled])
+
+if MN_FEATURE_ENABLED(ssl); then
+	AM_PATH_OPENSSL(,, [MN_FEATURE_DISABLE(ssl, [OpenSSL not found])])
 fi
-if test $enable_sylpheed = yes; then
-	AC_DEFINE(WITH_SYLPHEED, 1, [Define to 1 if Sylpheed support is enabled])
+if MN_FEATURE_ENABLED(sasl); then
+	AM_PATH_SASL2(,, [MN_FEATURE_DISABLE(sasl, [Cyrus SASL not found])])
 fi
-if test $enable_gmail = yes; then
-	AC_DEFINE(WITH_GMAIL, 1, [Define to 1 if Gmail support is enabled])
+
+if MN_FEATURE_ENABLED(gmail); then
+	PKG_CHECK_MODULES(SOUP, libsoup-2.2,, [MN_FEATURE_DISABLE(gmail, [libsoup not found])])
+fi	
+
+if MN_FEATURE_ENABLED(mime) &&
+   MN_FEATURE_DISABLED(mbox) &&
+   MN_FEATURE_DISABLED(mh) &&
+   MN_FEATURE_DISABLED(maildir) &&
+   MN_FEATURE_DISABLED(pop3) &&
+   MN_FEATURE_DISABLED(imap) &&
+   MN_FEATURE_DISABLED(sylpheed); then
+	MN_FEATURE_DISABLE(mime, [mbox, MH, Maildir, POP3, IMAP and Sylpheed support disabled])
 fi
-if test $enable_ipv6 = yes; then
-	AC_DEFINE(WITH_IPV6, 1, [Define to 1 if IPv6 support is enabled])
+
+if MN_FEATURE_ENABLED(mime); then
+	PKG_CHECK_MODULES(GMIME, [gmime-2.0],, [MN_FEATURE_DISABLE(mime, [GMime not found])])
 fi
 
+### Automake conditionals
+
+AM_CONDITIONAL(WITH_MBOX, [MN_FEATURE_ENABLED(mbox)])
+AM_CONDITIONAL(WITH_MH, [MN_FEATURE_ENABLED(mh)])
+AM_CONDITIONAL(WITH_MAILDIR, [MN_FEATURE_ENABLED(maildir)])
+AM_CONDITIONAL(WITH_POP3, [MN_FEATURE_ENABLED(pop3)])
+AM_CONDITIONAL(WITH_IMAP, [MN_FEATURE_ENABLED(imap)])
+AM_CONDITIONAL(WITH_POP3_OR_IMAP, [MN_FEATURE_ENABLED(pop3) || MN_FEATURE_ENABLED(imap)])
+AM_CONDITIONAL(WITH_SSL, [MN_FEATURE_ENABLED(ssl)])
+AM_CONDITIONAL(WITH_SASL, [MN_FEATURE_ENABLED(sasl)])
+AM_CONDITIONAL(WITH_SYLPHEED, [MN_FEATURE_ENABLED(sylpheed)])
+AM_CONDITIONAL(WITH_GMAIL, [MN_FEATURE_ENABLED(gmail)])
+AM_CONDITIONAL(WITH_MIME, [MN_FEATURE_ENABLED(mime)])
+AM_CONDITIONAL(WITH_REGRESSION_TESTS, [MN_FEATURE_ENABLED(regression-tests)])
+
+### config.h definitions
+
+MN_FEATURES_DEFINE([mbox, mh, maildir, pop3, imap, ssl, sasl, sylpheed, gmail, ipv6, mime])
+
 ### output
 
 AC_CONFIG_FILES(Makefile
@@ -256,23 +155,10 @@ $PACKAGE $VERSION is ready to be built.
 The following settings will be used:
 
 Installation prefixes
-  --prefix                      $prefix
-  --exec-prefix                 $exec_prefix
-
+MN_REPORT_ARGS([prefix, exec-prefix])
 Installation directories
-  --bindir                      $bindir
-  --datadir                     $datadir
-  --sysconfdir                  $sysconfdir
-
+MN_REPORT_ARGS([bindir, datadir, sysconfdir, libdir])
 Features
-  --enable-mbox                 $enable_mbox
-  --enable-mh                   $enable_mh
-  --enable-maildir              $enable_maildir
-  --enable-pop3                 $enable_pop3 $disable_pop3_reason
-  --enable-imap                 $enable_imap $disable_imap_reason
-  --enable-ssl                  $enable_ssl $disable_ssl_reason
-  --enable-sasl                 $enable_sasl $disable_sasl_reason
-  --enable-sylpheed             $enable_sylpheed
-  --enable-gmail                $enable_gmail $disable_gmail_reason
-  --enable-ipv6                 $enable_ipv6
+MN_REPORT_FEATURES([mbox, mh, maildir, pop3, imap, ssl, sasl, sylpheed, gmail, ipv6, mime])
+Type "make" to build $PACKAGE $VERSION.
 EOF
diff --git a/data/Makefile.am b/data/Makefile.am
@@ -10,7 +10,7 @@ serverdir = $(libdir)/bonobo/servers
 server_in_files = GNOME_MailNotification_Automation.server.in
 server_DATA = GNOME_MailNotification_Automation.server
 
-schemasdir = $(sysconfdir)/gconf/schemas
+schemasdir = $(GCONF_SCHEMA_FILE_DIR)
 schemas_in_files = mail-notification.schemas.in
 schemas_DATA = mail-notification.schemas
 
diff --git a/data/Makefile.in b/data/Makefile.in
@@ -87,6 +87,8 @@ GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
 GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
 GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
 GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMIME_CFLAGS = @GMIME_CFLAGS@
+GMIME_LIBS = @GMIME_LIBS@
 GMOFILES = @GMOFILES@
 GMSGFMT = @GMSGFMT@
 GNOME_CFLAGS = @GNOME_CFLAGS@
@@ -94,9 +96,6 @@ GNOME_LIBS = @GNOME_LIBS@
 GOB2 = @GOB2@
 GTK_CFLAGS = @GTK_CFLAGS@
 GTK_LIBS = @GTK_LIBS@
-G_ASSERTIONS = @G_ASSERTIONS@
-HAVE_SOUP_FALSE = @HAVE_SOUP_FALSE@
-HAVE_SOUP_TRUE = @HAVE_SOUP_TRUE@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -170,6 +169,8 @@ WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
 WITH_MBOX_TRUE = @WITH_MBOX_TRUE@
 WITH_MH_FALSE = @WITH_MH_FALSE@
 WITH_MH_TRUE = @WITH_MH_TRUE@
+WITH_MIME_FALSE = @WITH_MIME_FALSE@
+WITH_MIME_TRUE = @WITH_MIME_TRUE@
 WITH_POP3_FALSE = @WITH_POP3_FALSE@
 WITH_POP3_OR_IMAP_FALSE = @WITH_POP3_OR_IMAP_FALSE@
 WITH_POP3_OR_IMAP_TRUE = @WITH_POP3_OR_IMAP_TRUE@
@@ -219,7 +220,7 @@ settings_DATA = mail-notification-properties.desktop
 serverdir = $(libdir)/bonobo/servers
 server_in_files = GNOME_MailNotification_Automation.server.in
 server_DATA = GNOME_MailNotification_Automation.server
-schemasdir = $(sysconfdir)/gconf/schemas
+schemasdir = $(GCONF_SCHEMA_FILE_DIR)
 schemas_in_files = mail-notification.schemas.in
 schemas_DATA = mail-notification.schemas
 soundlistdir = $(sysconfdir)/sound/events
diff --git a/data/mail-notification.schemas.in b/data/mail-notification.schemas.in
@@ -44,34 +44,13 @@
       </locale>
     </schema>
     <schema>
-      <key>/schemas/apps/mail-notification/commands/double-clicked/enabled</key>
-      <applyto>/apps/mail-notification/commands/double-clicked/enabled</applyto>
-      <owner>mail-notification</owner>
-      <type>bool</type>
-      <default>0</default>
-      <locale name="C">
-        <short>Run a command when the icon is double-clicked</short>
-	<long>Whether to run a command when the icon is double-clicked or not.</long>
-      </locale>
-    </schema> 
-    <schema>
-      <key>/schemas/apps/mail-notification/commands/double-clicked/command</key>
-      <applyto>/apps/mail-notification/commands/double-clicked/command</applyto>
-      <owner>mail-notification</owner>
-      <type>string</type>
-      <locale name="C">
-        <short>Double-clicked command</short>
-	<long>The command to run when the icon is double-clicked.</long>
-      </locale>
-    </schema>
-    <schema>
       <key>/schemas/apps/mail-notification/mailboxes</key>
       <applyto>/apps/mail-notification/mailboxes</applyto>
       <owner>mail-notification</owner>
       <type>list</type>
       <list_type>string</list_type>
       <locale name="C">
-        <short>Mailboxes list</short>
+        <short>Mailbox list</short>
 	<long>The list of mailboxes to monitor.</long>
       </locale>
     </schema>
@@ -80,7 +59,7 @@
       <applyto>/apps/mail-notification/ui/properties-dialog/height</applyto>
       <owner>mail-notification</owner>
       <type>int</type>
-      <default>420</default>
+      <default>366</default>
       <locale name="C">
         <short>Height of properties dialog</short>
         <long>The height of the properties dialog in pixels.</long>
@@ -98,6 +77,39 @@
       </locale>
     </schema>
     <schema>
+      <key>/schemas/apps/mail-notification/ui/summary-dialog/height</key>
+      <applyto>/apps/mail-notification/ui/summary-dialog/height</applyto>
+      <owner>mail-notification</owner>
+      <type>int</type>
+      <default>-1</default>
+      <locale name="C">
+        <short>Height of mail summary dialog</short>
+        <long>The height of the mail summary dialog in pixels.</long>
+      </locale>
+    </schema>
+    <schema>
+      <key>/schemas/apps/mail-notification/ui/summary-dialog/width</key>
+      <applyto>/apps/mail-notification/ui/summary-dialog/width</applyto>
+      <owner>mail-notification</owner>
+      <type>int</type>
+      <default>-1</default>
+      <locale name="C">
+        <short>Width of mail summary dialog</short>
+        <long>The width of the mail summary dialog in pixels.</long>
+      </locale>
+    </schema>
+    <schema>
+      <key>/schemas/apps/mail-notification/ui/immediate-notification-error-dialog/do-not-show</key>
+      <applyto>/apps/mail-notification/ui/immediate-notification-error-dialog/do-not-show</applyto>
+      <owner>mail-notification</owner>
+      <type>bool</type>
+      <default>0</default>
+      <locale name="C">
+        <short>Do not show the immediate notification error dialog</short>
+	<long>Whether to prevent the immediate notification error dialog from being displayed or not.</long>
+      </locale>
+    </schema> 
+    <schema>
       <key>/schemas/apps/mail-notification/already-run</key>
       <applyto>/apps/mail-notification/already-run</applyto>
       <owner>mail-notification</owner>
@@ -141,5 +153,82 @@
 	<long>The list of trusted SSL/TLS servers (hostname:port) lacking a X509 certificate.</long>
       </locale>
     </schema>
+    <schema>
+      <key>/schemas/apps/mail-notification/mail-summary-popup/enable</key>
+      <applyto>/apps/mail-notification/mail-summary-popup/enable</applyto>
+      <owner>mail-notification</owner>
+      <type>bool</type>
+      <default>1</default>
+      <locale name="C">
+        <short>Enable mail summary popup</short>
+	<long>Whether to display the mail summary popup when new mail arrives or not.</long>
+      </locale>
+    </schema> 
+    <schema>
+      <key>/schemas/apps/mail-notification/mail-summary-popup/autoclose</key>
+      <applyto>/apps/mail-notification/mail-summary-popup/autoclose</applyto>
+      <owner>mail-notification</owner>
+      <type>bool</type>
+      <default>1</default>
+      <locale name="C">
+        <short>Automatically close the mail summary popup</short>
+	<long>Whether to automatically close the mail summary popup or not.</long>
+      </locale>
+    </schema> 
+    <schema>
+      <key>/schemas/apps/mail-notification/mail-summary-popup/autoclose-delay/minutes</key>
+      <applyto>/apps/mail-notification/mail-summary-popup/autoclose-delay/minutes</applyto>
+      <owner>mail-notification</owner>
+      <type>int</type>
+      <default>0</default>
+      <locale name="C">
+        <short>Minutes to wait before closing the mail summary popup</short>
+        <long>The amount of time to wait before closing the mail summary popup (minutes part).</long>
+      </locale>
+    </schema>
+    <schema>
+      <key>/schemas/apps/mail-notification/mail-summary-popup/autoclose-delay/seconds</key>
+      <applyto>/apps/mail-notification/mail-summary-popup/autoclose-delay/seconds</applyto>
+      <owner>mail-notification</owner>
+      <type>int</type>
+      <default>10</default>
+      <locale name="C">
+        <short>Seconds to wait before closing the mail summary popup</short>
+        <long>The amount of time to wait before closing the mail summary popup (seconds part).</long>
+      </locale>
+    </schema>
+    <schema>
+      <key>/schemas/apps/mail-notification/mail-summary-popup/position</key>
+      <applyto>/apps/mail-notification/mail-summary-popup/position</applyto>
+      <owner>mail-notification</owner>
+      <type>string</type>
+      <default>top-left</default>
+      <locale name="C">
+        <short>Mail summary popup position</short>
+	<long>The position of the mail summary popup. Must be "top-left", "top-right", "bottom-left" or "bottom-right".</long>
+      </locale>
+    </schema>
+    <schema>
+      <key>/schemas/apps/mail-notification/mail-summary-popup/offset/horizontal</key>
+      <applyto>/apps/mail-notification/mail-summary-popup/offset/horizontal</applyto>
+      <owner>mail-notification</owner>
+      <type>int</type>
+      <default>8</default>
+      <locale name="C">
+        <short>Mail summary popup horizontal offset</short>
+        <long>The number of pixels to leave between the left or right side of the screen and the mail summary popup.</long>
+      </locale>
+    </schema>
+    <schema>
+      <key>/schemas/apps/mail-notification/mail-summary-popup/offset/vertical</key>
+      <applyto>/apps/mail-notification/mail-summary-popup/offset/vertical</applyto>
+      <owner>mail-notification</owner>
+      <type>int</type>
+      <default>32</default>
+      <locale name="C">
+        <short>Mail summary popup vertical offset</short>
+        <long>The number of pixels to leave between the top or bottom side of the screen and the mail summary popup.</long>
+      </locale>
+    </schema>
   </schemalist>
 </gconfschemafile>
diff --git a/help/C/Makefile.in b/help/C/Makefile.in
@@ -141,6 +141,8 @@ GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
 GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
 GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
 GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMIME_CFLAGS = @GMIME_CFLAGS@
+GMIME_LIBS = @GMIME_LIBS@
 GMOFILES = @GMOFILES@
 GMSGFMT = @GMSGFMT@
 GNOME_CFLAGS = @GNOME_CFLAGS@
@@ -148,9 +150,6 @@ GNOME_LIBS = @GNOME_LIBS@
 GOB2 = @GOB2@
 GTK_CFLAGS = @GTK_CFLAGS@
 GTK_LIBS = @GTK_LIBS@
-G_ASSERTIONS = @G_ASSERTIONS@
-HAVE_SOUP_FALSE = @HAVE_SOUP_FALSE@
-HAVE_SOUP_TRUE = @HAVE_SOUP_TRUE@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -224,6 +223,8 @@ WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
 WITH_MBOX_TRUE = @WITH_MBOX_TRUE@
 WITH_MH_FALSE = @WITH_MH_FALSE@
 WITH_MH_TRUE = @WITH_MH_TRUE@
+WITH_MIME_FALSE = @WITH_MIME_FALSE@
+WITH_MIME_TRUE = @WITH_MIME_TRUE@
 WITH_POP3_FALSE = @WITH_POP3_FALSE@
 WITH_POP3_OR_IMAP_FALSE = @WITH_POP3_OR_IMAP_FALSE@
 WITH_POP3_OR_IMAP_TRUE = @WITH_POP3_OR_IMAP_TRUE@
@@ -273,7 +274,7 @@ entities = documentation-license.xml software-license.xml
 # ************* Begin of section some packagers may need to modify  **************
 # This variable (docdir) specifies where the documents should be installed.
 # This default value should work for most packages.
-docdir = $(datadir)/help/$(docname)/$(lang)
+docdir = $(datadir)/gnome/help/$(docname)/$(lang)
 
 # **************  You should not have to edit below this line  *******************
 xml_files = $(entities) $(docname).xml
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-09-09
+      2004-10-06
     </date>
-    <version identifier="2.4" date="2004-09-09" description="Fifth release"/>
+    <version identifier="2.5" date="2004-10-06" description="Sixth 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.6.2">
-  <!ENTITY manrevision "2.4">
-  <!ENTITY date "Thursday, September 9, 2004">
+  <!ENTITY appversion "0.7.0">
+  <!ENTITY manrevision "2.5">
+  <!ENTITY date "Wednesday, October 6, 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.49 2004/09/08 23:26:57 jylefort Exp $ -->
+<!-- $Id: mail-notification.xml,v 1.56 2004/10/06 17:25:39 jylefort Exp $ -->
 <!-- Mail Notification Manual -->
 
 <!-- Copyright (c) 2004 Jean-Yves Lefort -->
@@ -134,6 +134,17 @@
 	</revdescription>
       </revision>
       <revision>
+	<revnumber>Mail Notification Manual V2.4</revnumber>
+	<date>Thursday, September 9, 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.3</revnumber>
 	<date>Thursday, August 19, 2004</date>
 	<revdescription>
@@ -218,6 +229,7 @@
       <listitem><para>&ssl;/&tls; support</para></listitem>
       <listitem><para>automatic detection of mailbox format</para></listitem>
       <listitem><para><link linkend="immediate-notification">immediate notification</link> (the status icon is updated within seconds after a mailbox changes)</para></listitem>
+      <listitem><para>a mail summary</para></listitem>
       <listitem><para><ulink url="http://developer.gnome.org/projects/gup/hig" type="http">HIG</ulink> 2.0 compliance</para></listitem>
     </itemizedlist>
   </sect1>
@@ -228,8 +240,7 @@
     <sect2 id="to-start">
     <title>To Start &app;</title>
       <para>
-	You can start <application>&app;</application> in the
-	following ways:
+	You can start &app; in the following ways:
       </para>
       <variablelist>
     	<varlistentry>
@@ -247,9 +258,8 @@
 	  <term>Command line</term>
 	  <listitem>
 	    <para>
-	      To start <application>&app;</application> from a command
-	      line, type the following command, then press
-	      <keycap>Return</keycap>:
+	      To start &app; from a command line, type the following
+	      command, then press <keycap>Return</keycap>:
 	    </para>
 	    <para>
 	      <command>mail-notification</command>
@@ -283,6 +293,11 @@
 	      </varlistentry>
 
 	      <varlistentry>
+		<term>--display-mail-summary</term>
+		<listitem><para>Display the mail summary dialog</para></listitem>
+	      </varlistentry>
+
+	      <varlistentry>
 		<term>--display-properties</term>
 		<listitem><para>Display the properties dialog</para></listitem>
 	      </varlistentry>
@@ -293,6 +308,11 @@
 	      </varlistentry>
 
 	      <varlistentry>
+		<term>--close-popup</term>
+		<listitem><para>Close the mail summary popup</para></listitem>
+	      </varlistentry>
+
+	      <varlistentry>
 		<term>--update</term>
 		<listitem><para>Update the mail status</para></listitem>
 	      </varlistentry>
@@ -320,8 +340,8 @@
     <sect2 id="when-start">
       <title>When You Start &app;</title>
       <para>
-	When you start <application>&app;</application>, it stays in
-	the background and monitors the status of your mailboxes.
+	When you start &app;, it stays in the background and monitors
+	the status of your mailboxes.
       </para>
       <para>
 	When new mail arrives, an icon similar to the following one is
@@ -341,12 +361,18 @@
 	</screenshot>
       </figure>
       <para>
+	Additionally, if the <link linkend="enable-mail-summary-popup">Enable mail summary popup</link>
+	setting is enabled, an overview of new and unread messages is
+	displayed.
+      </para>
+      <para>
 	If an error is detected, the icon blinks (unless the
 	<link linkend="blink-on-errors">Blink on errors</link> setting is disabled).
       </para>
       <para>
 	Leaving your mouse over the icon will reveal more details
-	about the status of your mailboxes.
+	about the status of your mailboxes. Double-clicking on the
+	icon will display the <link linkend="mail-summary">Mail	Summary</link> dialog.
       </para>
     </sect2>
   </sect1>
@@ -368,99 +394,176 @@
     </para>
     <para>
       The <guilabel>Properties</guilabel> dialog contains the
-      following settings:
+      following tabbed sections:
     </para>
+    <itemizedlist>
+      <listitem>
+	<para><link linkend="properties-general">General</link></para>
+      </listitem>
+      <listitem>
+	<para><link linkend="properties-mailboxes">Mailboxes</link></para>
+      </listitem>
+      <listitem>
+	<para><link linkend="properties-mail-summary-popup">Mail Summary Popup</link></para>
+      </listitem>
+    </itemizedlist>
 
-    <variablelist>
-      <varlistentry>
-	<term><guilabel>General</guilabel></term>
-	<listitem>
-	  <variablelist>
-	    <varlistentry id="delay-between-mail-checks">
-	      <term><guilabel>Delay between mail checks</guilabel></term>
-	      <listitem>
-		<para>
-		  This is the amount of time to wait between mail
-		  checks.
-		  <note>
-		    <para>
-		      This delay only applies to mailboxes which do
-		      not support <link linkend="immediate-notification">immediate notification</link> of changes.
-		    </para>
-		  </note>
-		</para>
-	      </listitem>
-	    </varlistentry>
-	    <varlistentry>
-	      <term><guilabel>Start Mail Notification on GNOME login</guilabel></term>
-	      <listitem>
-		<para>
-		  If this option is enabled, &app; will be started
-		  along with your GNOME session.
-		</para>
-	      </listitem>
-	    </varlistentry>
-	    <varlistentry id="blink-on-errors">
-	      <term><guilabel>Blink on errors</guilabel></term>
-	      <listitem>
+    <sect2 id="properties-general">
+      <title>General</title>
+      <variablelist>
+	<varlistentry>
+	  <term><guilabel>Start Mail Notification on GNOME login</guilabel></term>
+	  <listitem>
+	    <para>
+	      If this option is enabled, &app; will be started along
+	      with your GNOME session.
+	    </para>
+	  </listitem>
+	</varlistentry>
+	<varlistentry id="blink-on-errors">
+	  <term><guilabel>Blink on errors</guilabel></term>
+	  <listitem>
+	    <para>
+	      If this option is enabled, &app; will show the status
+	      icon and make it blink on errors. Disabling this option
+	      is useful if some of your mailboxes are not permanently
+	      accessible.
+	    </para>
+	  </listitem>
+	</varlistentry>
+	<varlistentry>
+	  <term><guilabel>Run a command when new mail arrives:</guilabel></term>
+	  <listitem>
+	    <para>
+	      This is the command to execute when new mail arrives.
+	    </para>
+	  </listitem>
+	</varlistentry>
+      </variablelist>
+    </sect2>
+    
+    <sect2 id="properties-mailboxes">
+      <title>Mailboxes</title>
+      <variablelist>
+	<varlistentry>
+	  <term><guilabel>General</guilabel></term>
+	  <listitem>
+	    <variablelist>
+	      <varlistentry id="delay-between-mail-checks">
+		<term><guilabel>Delay between mail checks</guilabel></term>
+		<listitem>
+		  <para>
+		    This is the amount of time to wait between mail
+		    checks.
+		    <note>
+		      <para>
+			This delay only applies to mailboxes which do
+			not support <link linkend="immediate-notification">immediate
+			notification</link> of changes.
+		      </para>
+		    </note>
+		  </para>
+		</listitem>
+	      </varlistentry>
+	    </variablelist>
+	  </listitem>
+	</varlistentry>
+	<varlistentry>
+	  <term><guilabel>Mailbox List</guilabel></term>
+	  <listitem>
+	    <para>
+	      This is the list of mailboxes to monitor for new
+	      mail. Selecting <guibutton>Add</guibutton> or
+	      <guibutton>Properties</guibutton> will display the <link linkend="mailbox-properties">Mailbox Properties</link>
+	      dialog.
+	      <tip>
 		<para>
-		  If this option is enabled, &app; will show the
-		  status icon and make it blink on errors. Disabling
-		  this option is useful if some of your mailboxes are
-		  not permanently accessible.
+		  You can drag a file or folder into this list.
 		</para>
-	      </listitem>
-	    </varlistentry>
-	  </variablelist>
-	</listitem>
-      </varlistentry>
-      
-      <varlistentry>
-	<term><guilabel>Mailboxes</guilabel></term>
-	<listitem>
-	  <para>
-	    This is the list of mailboxes to monitor for new mail.
-	    <tip>
-	      <para>
-		You can drag a file or folder into this list.
-	      </para>
-	    </tip>
-	  </para>
-	</listitem>
-      </varlistentry>
+	      </tip>
+	    </para>
+	  </listitem>
+	</varlistentry>
+      </variablelist>
+    </sect2>
 
-      <varlistentry>
-	<term><guilabel>Commands</guilabel></term>
-	<listitem>
-	  <variablelist>
-	    <varlistentry>
-	      <term><guilabel>When new mail arrives:</guilabel></term>
-	      <listitem>
-		<para>
-		  This is the command to execute when new mail
-		  arrives.
-		  <note>
-		    <para>
-		      This command will not be executed if you already
-		      have new mail.
-		    </para>
-		  </note>
-		</para>
-	      </listitem>
-	    </varlistentry>
-	    <varlistentry>
-	      <term><guilabel>When double-clicked:</guilabel></term>
-	      <listitem>
-		<para>
-		  This is the command to execute when the icon is
-		  double-clicked.
-		</para>
-	      </listitem>
-	    </varlistentry>
-	  </variablelist>
-	</listitem>
-      </varlistentry>
-    </variablelist>
+    <sect2 id="properties-mail-summary-popup">
+      <title>Mail Summary Popup</title>
+      <variablelist>
+	<varlistentry>
+	  <term><guilabel>General</guilabel></term>
+	  <listitem>
+	    <variablelist>
+	      <varlistentry id="enable-mail-summary-popup">
+		<term><guilabel>Enable mail summary popup</guilabel></term>
+		<listitem>
+		  <para>
+		    Whether to display the mail summary popup when new
+		    mail arrives or not.
+		    <note>
+		      <para>
+			The mail summary popup will not be displayed if the <link linkend="mail-summary">Mail Summary</link>
+			dialog is displayed.
+		      </para>
+		    </note>
+		  </para>
+		</listitem>
+	      </varlistentry>
+	      <varlistentry>
+		<term><guilabel>Automatically close after:</guilabel></term>
+		<listitem>
+		  <para>
+		    Whether to automatically close the mail summary
+		    popup after a delay has elapsed or not.
+		    <note>
+		      <para>
+			The timer is restarted when new mail arrives.
+		      </para>
+		    </note>
+		  </para>
+		</listitem>
+	      </varlistentry>
+	    </variablelist>
+	  </listitem>
+	</varlistentry>
+	<varlistentry>
+	  <term><guilabel>Position</guilabel></term>
+	  <listitem>
+	    <variablelist>
+	      <varlistentry>
+		<term><guilabel>Position:</guilabel></term>
+		<listitem>
+		  <para>
+		    The location of the mail summary popup on the
+		    screen.
+		  </para>
+		</listitem>
+	      </varlistentry>
+	      <varlistentry>
+		<term><guilabel>Horizontal offset:</guilabel></term>
+		<listitem>
+		  <para>
+		    The number of pixels to leave between the left or
+		    right side of the screen and the mail summary
+		    popup.
+		  </para>
+		</listitem>
+	      </varlistentry>
+	      <varlistentry>
+		<term><guilabel>Vertical offset:</guilabel></term>
+		<listitem>
+		  <para>
+		    The number of pixels to leave between the top or
+		    bottom side of the screen and the mail summary
+		    popup.
+		  </para>
+		</listitem>
+	      </varlistentry>
+	    </variablelist>
+	  </listitem>
+	</varlistentry>
+      </variablelist>
+    </sect2>
   </sect1>
 
   <sect1 id="mailbox-properties">
@@ -664,6 +767,32 @@
     </variablelist>
   </sect1>
 
+  <sect1 id="mail-summary">
+    <title>Mail Summary</title>
+    <para>
+      The <guilabel>Mail Summary</guilabel> dialog can be accessed by
+      double-clicking on the mail icon, or by right-clicking on it and
+      choosing <menuchoice><guimenuitem>Mail Summary</guimenuitem></menuchoice>.
+    </para>
+    <para>
+      The <guilabel>Mail Summary</guilabel> dialog displays the list
+      of new and unread messages, sorted by sent date in descending
+      order.
+    </para>
+    <important>
+      <para>
+	To be able to extract messages from mbox, MH, Maildir, POP3,
+	IMAP and Sylpheed mailboxes, &app; must have been compiled
+	with MIME support.
+      </para>
+      <para>
+	&app; has been compiled with MIME support if
+	<command>mail-notification --list-features</command> lists the
+	MIME feature.
+      </para>
+    </important>
+  </sect1>
+
   <sect1 id="troubleshooting">
     <title>Troubleshooting</title>
     <para>
@@ -812,7 +941,9 @@ endif</programlisting>
 	<listitem><para>Hendrik Brandt</para></listitem>
 	<listitem><para>Duarte Henriques</para></listitem>
 	<listitem><para>Dan Korostelev</para></listitem>
+	<listitem><para>Filip Miletic</para></listitem>
 	<listitem><para>Phil Nelson</para></listitem>
+	<listitem><para>Vladimir Petkov</para></listitem>
       </itemizedlist>
     </sect2>
 
diff --git a/help/Makefile.in b/help/Makefile.in
@@ -87,6 +87,8 @@ GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
 GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
 GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
 GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMIME_CFLAGS = @GMIME_CFLAGS@
+GMIME_LIBS = @GMIME_LIBS@
 GMOFILES = @GMOFILES@
 GMSGFMT = @GMSGFMT@
 GNOME_CFLAGS = @GNOME_CFLAGS@
@@ -94,9 +96,6 @@ GNOME_LIBS = @GNOME_LIBS@
 GOB2 = @GOB2@
 GTK_CFLAGS = @GTK_CFLAGS@
 GTK_LIBS = @GTK_LIBS@
-G_ASSERTIONS = @G_ASSERTIONS@
-HAVE_SOUP_FALSE = @HAVE_SOUP_FALSE@
-HAVE_SOUP_TRUE = @HAVE_SOUP_TRUE@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -170,6 +169,8 @@ WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
 WITH_MBOX_TRUE = @WITH_MBOX_TRUE@
 WITH_MH_FALSE = @WITH_MH_FALSE@
 WITH_MH_TRUE = @WITH_MH_TRUE@
+WITH_MIME_FALSE = @WITH_MIME_FALSE@
+WITH_MIME_TRUE = @WITH_MIME_TRUE@
 WITH_POP3_FALSE = @WITH_POP3_FALSE@
 WITH_POP3_OR_IMAP_FALSE = @WITH_POP3_OR_IMAP_FALSE@
 WITH_POP3_OR_IMAP_TRUE = @WITH_POP3_OR_IMAP_TRUE@
diff --git a/help/xmldocs.make b/help/xmldocs.make
@@ -36,7 +36,7 @@
 # ************* Begin of section some packagers may need to modify  **************
 # This variable (docdir) specifies where the documents should be installed.
 # This default value should work for most packages.
-docdir = $(datadir)/help/$(docname)/$(lang)
+docdir = $(datadir)/gnome/help/$(docname)/$(lang)
 
 # **************  You should not have to edit below this line  *******************
 xml_files = $(entities) $(docname).xml
diff --git a/m4/Makefile.in b/m4/Makefile.in
@@ -78,6 +78,8 @@ GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
 GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
 GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
 GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMIME_CFLAGS = @GMIME_CFLAGS@
+GMIME_LIBS = @GMIME_LIBS@
 GMOFILES = @GMOFILES@
 GMSGFMT = @GMSGFMT@
 GNOME_CFLAGS = @GNOME_CFLAGS@
@@ -85,9 +87,6 @@ GNOME_LIBS = @GNOME_LIBS@
 GOB2 = @GOB2@
 GTK_CFLAGS = @GTK_CFLAGS@
 GTK_LIBS = @GTK_LIBS@
-G_ASSERTIONS = @G_ASSERTIONS@
-HAVE_SOUP_FALSE = @HAVE_SOUP_FALSE@
-HAVE_SOUP_TRUE = @HAVE_SOUP_TRUE@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -161,6 +160,8 @@ WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
 WITH_MBOX_TRUE = @WITH_MBOX_TRUE@
 WITH_MH_FALSE = @WITH_MH_FALSE@
 WITH_MH_TRUE = @WITH_MH_TRUE@
+WITH_MIME_FALSE = @WITH_MIME_FALSE@
+WITH_MIME_TRUE = @WITH_MIME_TRUE@
 WITH_POP3_FALSE = @WITH_POP3_FALSE@
 WITH_POP3_OR_IMAP_FALSE = @WITH_POP3_OR_IMAP_FALSE@
 WITH_POP3_OR_IMAP_TRUE = @WITH_POP3_OR_IMAP_TRUE@
diff --git a/po/POTFILES.in b/po/POTFILES.in
@@ -18,6 +18,7 @@ src/mn-conf.c
 src/mn-conf.h
 src/mn-gmail-mailbox-properties.gob
 src/mn-gmail-mailbox.gob
+src/mn-gmime-stream-vfs.gob
 src/mn-imap-mailbox-properties.gob
 src/mn-imap-mailbox.gob
 src/mn-mail-icon.gob
@@ -35,6 +36,10 @@ 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-mime.c
+src/mn-message-mime.h
+src/mn-message.gob
 src/mn-mh-mailbox.gob
 src/mn-pending-mailbox.gob
 src/mn-pi-mailbox-properties.gob
@@ -44,6 +49,8 @@ src/mn-properties.c
 src/mn-properties.h
 src/mn-sasl.c
 src/mn-sasl.h
+src/mn-sgml-ref.c
+src/mn-sgml-ref.h
 src/mn-shell.gob
 src/mn-soup.c
 src/mn-soup.h
@@ -51,6 +58,12 @@ src/mn-ssl.c
 src/mn-ssl.h
 src/mn-stock.c
 src/mn-stock.h
+src/mn-summary-dialog.c
+src/mn-summary-dialog.h
+src/mn-summary-popup.c
+src/mn-summary-popup.h
+src/mn-summary.c
+src/mn-summary.h
 src/mn-sylpheed-mailbox.gob
 src/mn-system-mailbox-properties.gob
 src/mn-unsupported-mailbox.gob
@@ -61,4 +74,6 @@ src/mn-vfs.c
 src/mn-vfs.h
 ui/mailbox-properties.glade
 ui/properties.glade
+ui/summary-dialog.glade
+ui/summary-popup.glade
 ui/welcome.glade
diff --git a/po/bg.gmo b/po/bg.gmo
Binary files differ.
diff --git a/po/bg.po b/po/bg.po
@@ -0,0 +1,1508 @@
+# Bulgarian translations for mail-notification.
+# Copyright (c) 2003, 2004 Jean-Yves Lefort.
+#
+# This file is distributed under the same license as the
+# mail-notification package.
+#
+# Vladimir "Kaladan" Petkov <vpetkov@i-space.org>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gnome in bulgarian 0.6.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-10-06 19:31+0200\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"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+
+#: data/GNOME_MailNotification_Automation.server.in.in.h:1
+msgid "Mail Notification automation"
+msgstr "Автоматизиране на известяването за поща"
+
+#: data/GNOME_MailNotification_Automation.server.in.in.h:2
+msgid "Mail Notification automation factory"
+msgstr "Фабрика за автоматизирането на известяването за поща"
+
+#: data/mail-notification-properties.desktop.in.h:1
+msgid "Configure Mail Notification"
+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:272
+msgid "Mail Notification"
+msgstr "Известяване за поща"
+
+#: data/mail-notification.desktop.in.h:1
+msgid "Get notified when new mail arrives"
+msgstr "Ще бъдете известяван за пристигането на нова поща"
+
+#: data/mail-notification.schemas.in.h:1
+msgid "Automatically close the mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:2
+msgid "Blink on errors"
+msgstr "Мигане при грешки"
+
+#: data/mail-notification.schemas.in.h:3
+msgid "Delay between mail checks (minutes part)."
+msgstr "Период между проверката за поща (минути)."
+
+#: data/mail-notification.schemas.in.h:4
+msgid "Delay between mail checks (seconds part)."
+msgstr "Период между проверките за поща (секунди)."
+
+#: data/mail-notification.schemas.in.h:5
+msgid "Do not show the immediate notification error dialog"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:6
+msgid "Enable mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:7
+msgid "Fingerprints of trusted X509 certificates"
+msgstr "Пръстови отпечатъци на проверени X509 сертификати"
+
+#: data/mail-notification.schemas.in.h:8
+msgid "Has already been run"
+msgstr "Вече е стартиран"
+
+#: data/mail-notification.schemas.in.h:9
+#, fuzzy
+msgid "Height of mail summary dialog"
+msgstr "Височина на диалоговия прозорец за настройките"
+
+#: data/mail-notification.schemas.in.h:10
+msgid "Height of properties dialog"
+msgstr "Височина на диалоговия прозорец за настройките"
+
+#: data/mail-notification.schemas.in.h:11
+msgid "Mail summary popup horizontal offset"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:12
+msgid "Mail summary popup position"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:13
+msgid "Mail summary popup vertical offset"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:14
+#, fuzzy
+msgid "Mailbox list"
+msgstr "Списък на пощенските кутии"
+
+#: data/mail-notification.schemas.in.h:15
+msgid "Minutes between mail checks"
+msgstr "Минути между проверките"
+
+#: data/mail-notification.schemas.in.h:16
+msgid "Minutes to wait before closing the mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:17
+msgid "New mail command"
+msgstr "Нова команда за поща"
+
+#: data/mail-notification.schemas.in.h:18
+msgid "Run a command when new mail arrives"
+msgstr "Стартиране на команда при пристигането на нова поща"
+
+#: data/mail-notification.schemas.in.h:19
+msgid "Seconds between mail checks"
+msgstr "Секунди между проверките за поща"
+
+#: data/mail-notification.schemas.in.h:20
+msgid "Seconds to wait before closing the mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:21
+#, fuzzy
+msgid ""
+"The amount of time to wait before closing the mail summary popup (minutes "
+"part)."
+msgstr "Времевият интервал за изчакване между проверките за нова поща"
+
+#: data/mail-notification.schemas.in.h:22
+#, fuzzy
+msgid ""
+"The amount of time to wait before closing the mail summary popup (seconds "
+"part)."
+msgstr "Времевият интервал за изчакване между проверките за нова поща"
+
+#: data/mail-notification.schemas.in.h:23
+msgid "The command to run when new mail arrives."
+msgstr "Командата, която да се стартира при пристигането на нова поща."
+
+#: data/mail-notification.schemas.in.h:24
+#, fuzzy
+msgid "The height of the mail summary dialog in pixels."
+msgstr "Височината в пиксели на диалоговия прозорец за настройките."
+
+#: data/mail-notification.schemas.in.h:25
+msgid "The height of the properties dialog in pixels."
+msgstr "Височината в пиксели на диалоговия прозорец за настройките."
+
+#: data/mail-notification.schemas.in.h:26
+msgid "The list of mailboxes to monitor."
+msgstr "Списъкът на пощенските кутии за следене."
+
+#: data/mail-notification.schemas.in.h:27
+msgid ""
+"The list of trusted SSL/TLS servers (hostname:port) lacking a X509 "
+"certificate."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:28
+msgid ""
+"The list of trusted X509 certificates, represented by their MD5 fingerprint."
+msgstr ""
+"Списъкът на проверените сертификати тип X509, представени от техните "
+"пръстови отпечатъци в MD5 формат."
+
+#: data/mail-notification.schemas.in.h:29
+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:30
+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:31
+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:32
+#, fuzzy
+msgid "The width of the mail summary dialog in pixels."
+msgstr "Ширината на диалоговия прозорец за настройките в пиксели."
+
+#: data/mail-notification.schemas.in.h:33
+msgid "The width of the properties dialog in pixels."
+msgstr "Ширината на диалоговия прозорец за настройките в пиксели."
+
+#: data/mail-notification.schemas.in.h:34
+msgid "Trusted servers list"
+msgstr "Списък на проверените сървъри"
+
+#: data/mail-notification.schemas.in.h:35
+msgid "Whether Mail Notification has already been run or not."
+msgstr "Дали известяването за поща вече е стартирано или не."
+
+#: data/mail-notification.schemas.in.h:36
+msgid "Whether the status icon should blink on errors or not."
+msgstr "Дали иконата за състоянието да мига при грешки или не"
+
+#: data/mail-notification.schemas.in.h:37
+#, fuzzy
+msgid "Whether to automatically close the mail summary popup or not."
+msgstr "Дали да се стартира команда при пристигането на нова поща или не"
+
+#: data/mail-notification.schemas.in.h:38
+#, fuzzy
+msgid "Whether to display the mail summary popup when new mail arrives or not."
+msgstr "Дали да се стартира команда при пристигането на нова поща или не"
+
+#: data/mail-notification.schemas.in.h:39
+msgid ""
+"Whether to prevent the immediate notification error dialog from being "
+"displayed or not."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:40
+msgid "Whether to run a command when new mail arrives or not."
+msgstr "Дали да се стартира команда при пристигането на нова поща или не"
+
+#: data/mail-notification.schemas.in.h:41
+#, fuzzy
+msgid "Width of mail summary dialog"
+msgstr "Ширина на диалоговия прозорец за настройките"
+
+#: data/mail-notification.schemas.in.h:42
+msgid "Width of properties dialog"
+msgstr "Ширина на диалоговия прозорец за настройките"
+
+#: data/mail-notification.soundlist.in.h:2
+msgid "New Mail"
+msgstr "Нова поща"
+
+#: src/eggtrayicon.c:109
+msgid "Orientation"
+msgstr "Ориентация"
+
+#: src/eggtrayicon.c:110
+msgid "The orientation of the tray."
+msgstr ""
+
+#: src/mn-about-dialog.gob:43
+msgid "A Mail Notification Icon"
+msgstr "Уведомяване за поща"
+
+#. translator: replace with your name and email
+#: src/mn-about-dialog.gob:47
+msgid "Jean-Yves Lefort <jylefort@brutele.be>"
+msgstr "Vladimir Petkov <vpetkov@i-space.org>"
+
+#: src/mn-auth-combo-box.gob:101 src/mn-autodetect-mailbox-properties.gob:37
+msgid "<span style=\"italic\">autodetect</span>"
+msgstr "<span style=\"italic\">автоматично засичане</span>"
+
+#: src/mn-autodetect-mailbox-properties.gob:68
+msgid "_Location:"
+msgstr "_Местоположение:"
+
+#: src/mn-autodetect-mailbox-properties.gob:74
+msgid "_Browse..."
+msgstr "_Разглеждане..."
+
+#: src/mn-autodetect-mailbox-properties.gob:81
+msgid "The URI of the mailbox"
+msgstr "Адресът на пощенската кутия"
+
+#: src/mn-autodetect-mailbox-properties.gob:118
+msgid "Select a File or Folder"
+msgstr "Избор на файл или папка"
+
+#: src/mn-blinking-image.gob:32
+msgid "Whether the image is blinking or not"
+msgstr "Дали изображението да мига или не"
+
+#: src/mn-client-session.c:229
+#, c-format
+msgid "resolving %s"
+msgstr "търсене на %s"
+
+#: src/mn-client-session.c:239
+#, c-format
+msgid "unable to resolve %s: %s"
+msgstr "неуспех при намирането на %s: %s"
+
+#: src/mn-client-session.c:276
+#, c-format
+msgid "%s: unsupported address family"
+msgstr ""
+
+#: src/mn-client-session.c:283
+#, c-format
+msgid "%s: unable to create socket: %s"
+msgstr ""
+
+#: src/mn-client-session.c:287
+#, c-format
+msgid "connecting to %s (%s) port %i"
+msgstr "свързване с %s (%s) порт %i"
+
+#: src/mn-client-session.c:290
+#, c-format
+msgid "unable to connect: %s"
+msgstr "неуспех при свързването: %s"
+
+#: src/mn-client-session.c:295
+msgid "connected successfully"
+msgstr "успешно свързване"
+
+#. if reached, we couldn't find a working address
+#: src/mn-client-session.c:301
+#, c-format
+msgid "unable to connect to %s"
+msgstr "неуспех при свързването с %s"
+
+#: src/mn-client-session.c:317
+#, c-format
+msgid "unable to initialize the OpenSSL library: %s"
+msgstr ""
+
+#: src/mn-client-session.c:325
+#, c-format
+msgid "unable to create a SSL/TLS object: %s"
+msgstr ""
+
+#: src/mn-client-session.c:331
+#, c-format
+msgid "unable to set the SSL/TLS file descriptor: %s"
+msgstr ""
+
+#: src/mn-client-session.c:337
+#, c-format
+msgid "unable to perform the SSL/TLS handshake: %s"
+msgstr ""
+
+#: src/mn-client-session.c:343
+msgid "untrusted server"
+msgstr "непроверен сървър"
+
+#: src/mn-client-session.c:347
+#, c-format
+msgid "a SSL/TLS layer is now active (%s, %s %i-bit)"
+msgstr ""
+
+#: src/mn-client-session.c:394
+#, c-format
+msgid "%s, fingerprint: %s"
+msgstr "%s, пръстов отпечатък: %s"
+
+#: src/mn-client-session.c:423
+msgid "missing certificate"
+msgstr "липсващ сертификат"
+
+#: src/mn-client-session.c:449
+#, c-format
+msgid ""
+"Mail Notification was unable to trust \"%s\" (%s). It is possible that "
+"someone is intercepting your communication to obtain your confidential "
+"information.\n"
+"\n"
+"You should only connect to the server if you are certain you are connected "
+"to \"%s\". If you choose to connect to the server, this message will not be "
+"shown again."
+msgstr ""
+
+#: src/mn-client-session.c:466
+msgid "Connect to untrusted server?"
+msgstr "Свързване с непроверен сървър?"
+
+#: src/mn-client-session.c:471
+msgid "Co_nnect"
+msgstr "Свъ_рзване"
+
+#: src/mn-client-session.c:527
+#, c-format
+msgid "response \"%s\" is not valid in current context"
+msgstr ""
+
+#: src/mn-client-session.c:553
+#, c-format
+msgid "unable to parse response \"%s\""
+msgstr "неуспех при преглед на отговор \"%s\""
+
+#: src/mn-client-session.c:592 src/mn-client-session.c:599
+#, c-format
+msgid "unable to read from server: %s"
+msgstr "неуспех при четенето от сървър: %s"
+
+#: src/mn-client-session.c:597
+msgid "unable to read from server: EOF"
+msgstr "неуспех при четенето от сървър: EOF"
+
+#: src/mn-client-session.c:609
+#, c-format
+msgid "unable to decode data using SASL: %s"
+msgstr ""
+
+#: src/mn-client-session.c:746
+#, c-format
+msgid "unable to encode data using SASL: %s"
+msgstr ""
+
+#: src/mn-client-session.c:777 src/mn-client-session.c:784
+#, c-format
+msgid "unable to write to server: %s"
+msgstr "неуспех при записването на сървър: %s"
+
+#: src/mn-client-session.c:782
+msgid "unable to write to server: EOF"
+msgstr "неуспех при записването на сървър: EOF"
+
+#: src/mn-client-session.c:814
+#, c-format
+msgid "unable to encode Base64: %s"
+msgstr ""
+
+#: src/mn-client-session.c:917
+#, c-format
+msgid "unable to initialize the SASL library: %s"
+msgstr ""
+
+#: src/mn-client-session.c:926
+#, c-format
+msgid "unable to retrieve local address of socket: %s"
+msgstr ""
+
+#: src/mn-client-session.c:932
+#, c-format
+msgid "unable to retrieve remote address of socket: %s"
+msgstr ""
+
+#: src/mn-client-session.c:966
+#, c-format
+msgid "warning: unable to set SASL security properties: %s"
+msgstr ""
+
+#: src/mn-client-session.c:1005
+msgid ""
+"unable to start SASL authentication: SASL asked for something we did not know"
+msgstr ""
+
+#: src/mn-client-session.c:1009
+#, c-format
+msgid "unable to start SASL authentication: %s"
+msgstr ""
+
+#: src/mn-client-session.c:1013
+#, c-format
+msgid "unable to create a SASL connection: %s"
+msgstr ""
+
+#: src/mn-client-session.c:1063
+msgid "SASL asked for something we did not know, aborting SASL authentication"
+msgstr ""
+
+#: src/mn-client-session.c:1067
+#, c-format
+msgid "%s, aborting SASL authentication"
+msgstr ""
+
+#. compliance error
+#: src/mn-client-session.c:1072
+#, c-format
+msgid "unable to decode Base64 input from server: %s"
+msgstr ""
+
+#: src/mn-client-session.c:1075
+msgid ""
+"the server sent a SASL challenge, but there was a pending initial SASL "
+"client response"
+msgstr ""
+
+#: src/mn-client-session.c:1089
+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
+#, 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
+#, c-format
+msgid "unable to get SASL_MAXOUTBUF property: %s"
+msgstr ""
+
+#: src/mn-client-session.c:1123
+#, c-format
+msgid "warning: unable to get SASL_SSF property: %s"
+msgstr ""
+
+#: src/mn-conf.c:123
+#, c-format
+msgid "recursively unsetting %s"
+msgstr ""
+
+#: src/mn-conf.c:127
+msgid "syncing the GConf database"
+msgstr "синхронизиране на базата данни на GConf"
+
+#: src/mn-conf.c:130
+msgid "completed"
+msgstr "завършено"
+
+#: src/mn-gmail-mailbox-properties.gob:79
+msgid "Your Gmail username"
+msgstr "Вашето Gmail потребителско име"
+
+#: src/mn-gmail-mailbox-properties.gob:80
+msgid "Your Gmail password"
+msgstr "Вашата парола в Gmail"
+
+#: src/mn-gmail-mailbox.gob:65
+msgid "libsoup has not been compiled with SSL/TLS support"
+msgstr ""
+
+#: src/mn-gmail-mailbox.gob:110 src/mn-gmail-mailbox.gob:331
+#, fuzzy, c-format
+msgid "unable to parse URI \"%s\""
+msgstr "неуспех при преглед на отговор \"%s\""
+
+#: src/mn-gmail-mailbox.gob:257
+msgid "logging in"
+msgstr "влизане"
+
+#: src/mn-gmail-mailbox.gob:271 src/mn-gmail-mailbox.gob:342
+#: src/mn-gmail-mailbox.gob:380 src/mn-gmail-mailbox.gob:415
+msgid "login failed"
+msgstr "влизането е неуспешно"
+
+#: src/mn-gmail-mailbox.gob:283 src/mn-gmail-mailbox.gob:356
+#: src/mn-gmail-mailbox.gob:394 src/mn-gmail-mailbox.gob:503
+#, c-format
+msgid "unable to transfer data: %s"
+msgstr "неуспех при пренасянето на данни: %s"
+
+#: src/mn-gmail-mailbox.gob:409
+msgid "successfully logged in"
+msgstr "успешно влязъл в"
+
+#: src/mn-gmail-mailbox.gob:487
+msgid "searching for unread mail"
+msgstr "търсене за непрочетена поща"
+
+#: src/mn-gmail-mailbox.gob:491
+#, fuzzy
+msgid "unable to search for unread mail"
+msgstr "търсене за непрочетена поща"
+
+#: src/mn-gmail-mailbox.gob:604
+msgid "unable to parse Gmail data"
+msgstr "неуспех при прегледа на данни от Gmail"
+
+#: src/mn-gmime-stream-vfs.gob:49
+#, fuzzy, c-format
+msgid "unable to read %s: %s"
+msgstr "неуспех при намирането на %s: %s"
+
+#: src/mn-gmime-stream-vfs.gob:51
+#, fuzzy, c-format
+msgid "unable to write to %s: %s"
+msgstr "неуспех при записването на сървър: %s"
+
+#: src/mn-gmime-stream-vfs.gob:53
+#, fuzzy, c-format
+msgid "unable to seek in %s: %s"
+msgstr "неуспех при намирането на %s: %s"
+
+#: src/mn-gmime-stream-vfs.gob:55
+#, fuzzy, c-format
+msgid "unable to tell position of %s: %s"
+msgstr "неуспех при следенето %s: %s"
+
+#: src/mn-gmime-stream-vfs.gob:57
+#, fuzzy, c-format
+msgid "unable to close %s: %s"
+msgstr "неуспех при затварянето на папката: %s"
+
+#: src/mn-imap-mailbox-properties.gob:94
+msgid "Mailbox:"
+msgstr "Пощенска кутия:"
+
+#: src/mn-imap-mailbox-properties.gob:98
+msgid "in_box"
+msgstr "ку_тия"
+
+#: src/mn-imap-mailbox-properties.gob:109
+msgid "oth_er:"
+msgstr "др_уги"
+
+#: src/mn-imap-mailbox-properties.gob:124
+msgid "The hostname or IP address of the IMAP server"
+msgstr "Хостът или IP адресът на IMAP сървъра"
+
+#: src/mn-imap-mailbox-properties.gob:125
+msgid "Your username on the IMAP server"
+msgstr "Потребителското ви име за IMAP сървъра"
+
+#: src/mn-imap-mailbox-properties.gob:126
+msgid "Your password on the IMAP server"
+msgstr "Паролата ви за IMAP сървъра"
+
+#: src/mn-imap-mailbox-properties.gob:127
+#: src/mn-imap-mailbox-properties.gob:128
+msgid "The port number of the IMAP server"
+msgstr "Номера на порта на IMAP сървъра"
+
+#: src/mn-imap-mailbox-properties.gob:129
+msgid "The mailbox name"
+msgstr "Име на пощенската кутия"
+
+#: src/mn-imap-mailbox.gob:132 src/mn-pop3-mailbox.gob:141
+msgid "SSL/TLS support has not been compiled in"
+msgstr ""
+
+#: src/mn-imap-mailbox.gob:203
+msgid "server did not send capabilities"
+msgstr ""
+
+#: src/mn-imap-mailbox.gob:318
+msgid "server advertised LOGINDISABLED, not using LOGIN authentication"
+msgstr ""
+
+#: src/mn-imap-mailbox.gob:319
+msgid "unable to login"
+msgstr "неуспех при влизането"
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:447
+#, fuzzy
+msgid "server did not send search results"
+msgstr "сървърът не изпраща състоянието"
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:523
+#, fuzzy
+msgid "server did not send all the messages we requested"
+msgstr "сървърът не изпраща състоянието"
+
+#: src/mn-imap-mailbox.gob:570
+#, fuzzy
+msgid "unable to fetch message"
+msgstr "неуспех при свързването: %s"
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:617
+msgid "server did not send status"
+msgstr "сървърът не изпраща състоянието"
+
+#: src/mn-imap-mailbox.gob:856 src/mn-pop3-mailbox.gob:903
+msgid "unknown server error"
+msgstr "неизвестна грешка в сървъра"
+
+#: src/mn-imap-mailbox.gob:927 src/mn-pop3-mailbox.gob:225
+msgid "server does not support in-band SSL/TLS"
+msgstr ""
+
+#: src/mn-imap-mailbox.gob:946 src/mn-pop3-mailbox.gob:823
+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:835
+#, c-format
+msgid "unknown authentication mechanism \"%s\""
+msgstr "неизвестен механизъм за идентификация \"%s\""
+
+#: src/mn-imap-mailbox.gob:972
+msgid "falling back to IMAP LOGIN authentication"
+msgstr ""
+
+#: src/mn-imap-mailbox.gob:976 src/mn-pop3-mailbox.gob:869
+msgid "authentication failed"
+msgstr "неуспешна идентификация"
+
+#: src/mn-mail-icon.gob:84 ui/summary-dialog.glade.h:2
+msgid "_Update"
+msgstr "_Актуализиране"
+
+#: src/mn-mail-icon.gob:90
+msgid "R_emove From Notification Area"
+msgstr "Пре_махване от зоната за известяване"
+
+#: src/mn-mailbox-properties-dialog.c:109
+msgid "Add a Mailbox"
+msgstr "Добавяне на пощенска кутия"
+
+#: src/mn-mailbox-properties-dialog.c:328
+#, c-format
+msgid "%s Properties"
+msgstr "%s Настройки"
+
+#: src/mn-mailbox-properties-util.c:77
+msgid "_Username:"
+msgstr "_Име:"
+
+#: src/mn-mailbox-properties-util.c:87
+msgid "_Password:"
+msgstr "_Парола:"
+
+#: src/mn-mailbox-properties-util.c:154
+msgid "Connection type:"
+msgstr "Тип на връзката:"
+
+#: src/mn-mailbox-properties-util.c:161
+msgid "Port:"
+msgstr "Порт:"
+
+#: src/mn-mailbox-properties-util.c:189
+msgid "_Authentication mechanism:"
+msgstr "Механизъм за _идентификация:"
+
+#: src/mn-mailbox-properties.c:63
+msgid "Label"
+msgstr "Етикет"
+
+#: src/mn-mailbox-properties.c:64
+msgid "The marked up text to show in the type combo box"
+msgstr ""
+
+#: src/mn-mailbox-properties.c:69
+msgid "Size group"
+msgstr "Размер на групата"
+
+#: src/mn-mailbox-properties.c:70
+msgid "A GtkSizeGroup for aligning control labels"
+msgstr ""
+
+#: src/mn-mailbox-properties.c:75
+msgid "Complete"
+msgstr "Завършено"
+
+#: src/mn-mailbox-properties.c:76
+msgid "Whether the properties are completely filled or not"
+msgstr ""
+
+#: src/mn-mailbox-view.gob:263 src/mn-message-label.gob:74
+msgid "Mailbox"
+msgstr "Пощенска кутия"
+
+#. format column
+#: src/mn-mailbox-view.gob:279
+msgid "Format"
+msgstr "Формат"
+
+#: src/mn-mailbox-view.gob:569
+msgid "Unable to add mailbox"
+msgstr "Неуспех при добавянето на пощенската кутия"
+
+#: src/mn-mailbox-view.gob:569
+msgid "The mailbox is already in the list."
+msgstr "Пощенската кутия е вече в списъка."
+
+#: src/mn-mailbox.gob:133
+msgid "The mailbox URI"
+msgstr "Адресът на пощенската кутия"
+
+#: src/mn-mailbox.gob:144
+msgid "The mailbox human-readable name"
+msgstr "Името на пощенската кутия във формат разбираем от хора"
+
+#: src/mn-mailbox.gob:148
+msgid "Whether the mailbox has to be manually checked or not"
+msgstr ""
+
+#: src/mn-mailbox.gob:153
+msgid "Whether the mailbox has new mail or not"
+msgstr ""
+
+#: src/mn-mailbox.gob:158
+msgid "The list of new and unread MNMessage objects"
+msgstr ""
+
+#: src/mn-mailbox.gob:212
+msgid "The mailbox error, if any"
+msgstr "Грешката в пощенската кутия, ако има"
+
+#: src/mn-mailbox.gob:310
+msgid "does not exist"
+msgstr "не съществува"
+
+#: src/mn-mailbox.gob:342
+msgid "unknown format"
+msgstr "непознат формат"
+
+#: src/mn-mailbox.gob:408
+#, fuzzy, c-format
+msgid "unable to enable immediate notification for %s: %s"
+msgstr ""
+"Известяването за поща не можа да разреши моменталното известяване за една "
+"или повече пощенски кутии. %s"
+
+#: src/mn-mailbox.gob:426
+#, c-format
+msgid ""
+"As a fallback, they will be checked every %i second (this delay is "
+"configurable from the Properties Dialog)."
+msgid_plural ""
+"As a fallback, they will be checked every %i seconds (this delay is "
+"configurable from the Properties Dialog)."
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-mailbox.gob:437
+#, c-format
+msgid ""
+"As a fallback, they will be checked every %i minute (this delay is "
+"configurable from the Properties Dialog)."
+msgid_plural ""
+"As a fallback, they will be checked every %i minutes (this delay is "
+"configurable from the Properties Dialog)."
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-mailbox.gob:448
+#, c-format
+msgid ""
+"As a fallback, they will be checked approximately every %i minute (this "
+"delay is configurable from the Properties Dialog)."
+msgid_plural ""
+"As a fallback, they will be checked approximately every %i minutes (this "
+"delay is configurable from the Properties Dialog)."
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-mailbox.gob:464
+msgid "A monitoring error has occurred"
+msgstr "Получи се грешка при наблюдението"
+
+#: src/mn-mailbox.gob:465
+#, c-format
+msgid ""
+"Mail Notification was unable to enable immediate notification for one or "
+"more mailboxes. %s"
+msgstr ""
+"Известяването за поща не можа да разреши моменталното известяване за една "
+"или повече пощенски кутии. %s"
+
+#: src/mn-mailboxes.gob:133
+msgid "Whether one or more of the mailboxes has to be polled"
+msgstr ""
+
+#: src/mn-mailboxes.gob:266
+#, c-format
+msgid "%s is unsupported: %s"
+msgstr "%s е неподдържан: %s"
+
+#: src/mn-mailboxes.gob:297
+#, c-format
+msgid "%s has new mail"
+msgstr "%s има поща"
+
+#: src/mn-mailboxes.gob:297
+#, c-format
+msgid "%s has no new mail"
+msgstr "%s няма нова поща"
+
+#: src/mn-mailboxes.gob:323
+#, c-format
+msgid "%s reported an error: %s"
+msgstr "%s докладва за грешка: %s"
+
+#: src/mn-maildir-mailbox.gob:119
+#, c-format
+msgid "unable to open folder \"new\": %s"
+msgstr "неуспех при отварянето на папка \"нови\": %s"
+
+#: src/mn-maildir-mailbox.gob:161
+#, c-format
+msgid "unable to close folder \"new\": %s"
+msgstr "неуспех при отварянето на папка \"нови\": %s"
+
+#: src/mn-maildir-mailbox.gob:164
+#, c-format
+msgid "error while reading folder \"new\": %s"
+msgstr "грешка при четенето на папката \"нови\": %s"
+
+#: src/mn-main.c:97
+#, c-format
+msgid "Compiled-in mailbox backends: %s\n"
+msgstr ""
+
+#: src/mn-main.c:114
+#, c-format
+msgid "Compiled-in features: %s\n"
+msgstr "Компилирани възможности: %s\n"
+
+#: src/mn-main.c:166
+msgid "Enable informational output"
+msgstr "Разрешаване на информационния изход"
+
+#: src/mn-main.c:175
+msgid "List compiled-in features and exit"
+msgstr "Изписване на компилираните възможности и излизане"
+
+#: src/mn-main.c:184
+#, fuzzy
+msgid "Display the mail summary dialog"
+msgstr "Изобразяване на диалоговия прозорец с информацията"
+
+#: src/mn-main.c:193
+msgid "Display the properties dialog"
+msgstr "Показване на диалоговия прозорец с настройките"
+
+#: src/mn-main.c:202
+msgid "Display the about dialog"
+msgstr "Изобразяване на диалоговия прозорец с информацията"
+
+#: src/mn-main.c:211
+msgid "Close the mail summary popup"
+msgstr ""
+
+#: src/mn-main.c:220
+msgid "Update the mail status"
+msgstr "Актуализиране състоянието на пощата"
+
+#: src/mn-main.c:229
+msgid "Report the mail status"
+msgstr "Докладване за състоянието на пощата"
+
+#: src/mn-main.c:238
+msgid "Unset obsolete GConf configuration and exit"
+msgstr "Премахване на остарелите настройки в GConf и излизане"
+
+#.
+#. * We can't use mn_error_dialog() because gtk_init() has not been
+#. * called yet.
+#.
+#: src/mn-main.c:264
+msgid "multi-threading is not available"
+msgstr "много-нишки не е налично"
+
+#: src/mn-main.c:309
+msgid ""
+"Bonobo could not locate the automation object. Please check your Mail "
+"Notification installation."
+msgstr ""
+
+#: src/mn-main.c:314
+msgid "Unable to initialize the GnomeVFS library."
+msgstr "Неуспех при инициализирането на библиотеката GnomeVFS."
+
+#: src/mn-main.c:350
+msgid "updating the mail status"
+msgstr "актуализиране състоянието на пощата"
+
+#: src/mn-main.c:368
+msgid "Mail Notification is already running"
+msgstr "Известяването за поща вече е стартирано"
+
+#: src/mn-main.c:375
+msgid ""
+"Bonobo could not locate the GNOME_MailNotification_Automation.server file. "
+"Please check your Mail Notification installation."
+msgstr ""
+
+#: src/mn-main.c:379
+msgid ""
+"Bonobo was unable to register the automation server. Please check your Mail "
+"Notification installation."
+msgstr ""
+"Bonobo не успя да регистрира сървъра за автоматизация. Моля, проверете "
+"инсталацията на известяването за поща."
+
+#: src/mn-mbox-mailbox.gob:221
+#, c-format
+msgid "error while reading mailbox: %s"
+msgstr "грешка при четенето на пощенската кутия: %s"
+
+#: src/mn-mbox-mailbox.gob:230
+#, c-format
+msgid "unable to open mailbox: %s"
+msgstr "грешка при отварянето на пощенската кутия: %s"
+
+#: src/mn-message-label.gob:77
+msgid "Unreadable message"
+msgstr ""
+
+#: src/mn-message-label.gob:97
+msgid "From"
+msgstr ""
+
+#: src/mn-message-label.gob:98
+msgid "Subject"
+msgstr ""
+
+#: src/mn-message-label.gob:102
+msgid "Sent"
+msgstr ""
+
+#: src/mn-message-label.gob:151
+#, c-format
+msgid "%i second ago"
+msgid_plural "%i seconds ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:155
+#, c-format
+msgid "%i minute ago"
+msgid_plural "%i minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:160
+#, c-format
+msgid "%i hour ago"
+msgid_plural "%i hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:165
+#, c-format
+msgid "%i day ago"
+msgid_plural "%i days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-mime.c:105
+#, fuzzy
+msgid "unable to parse MIME message"
+msgstr "неуспех при преглед на отговор \"%s\""
+
+#: src/mn-message.gob:82
+msgid "Unknown"
+msgstr ""
+
+#: src/mn-mh-mailbox.gob:184
+#, c-format
+msgid "error while reading .mh_sequences: %s"
+msgstr "грешка при четенето на .mh_sequences: %s"
+
+#: src/mn-mh-mailbox.gob:196
+#, c-format
+msgid "unable to open .mh_sequences: %s"
+msgstr "неуспех при отварянето на .mh_sequences: %s"
+
+#: src/mn-pending-mailbox.gob:35
+msgid "detecting"
+msgstr "засичане"
+
+#: src/mn-pi-mailbox-properties.gob:76
+msgid "_Hostname:"
+msgstr "_Хост:"
+
+#: src/mn-pi-mailbox-properties.gob:94
+msgid "_Details"
+msgstr "_Подробности"
+
+#: src/mn-pi-mailbox-properties.gob:106
+msgid "sta_ndard"
+msgstr "стан_дартно"
+
+#: src/mn-pi-mailbox-properties.gob:116
+msgid "_in-band SSL/TLS"
+msgstr "_in-band SSL/TLS"
+
+#: src/mn-pi-mailbox-properties.gob:126
+msgid "SSL/TLS on sepa_rate port"
+msgstr "SSL/TLS на отделен по_рт"
+
+#: 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:87
+msgid "Your username on the POP3 server"
+msgstr "Потребителското име в POP3 сървъра"
+
+#: src/mn-pop3-mailbox-properties.gob:88
+msgid "Your password on the POP3 server"
+msgstr "Паролата ви в POP3 сървъра"
+
+#: src/mn-pop3-mailbox-properties.gob:89 src/mn-pop3-mailbox-properties.gob:90
+msgid "The port number of the POP3 server"
+msgstr "Номера на порта на POP3 сървъра"
+
+#: src/mn-pop3-mailbox.gob:271
+msgid "invalid arguments for the LOGIN-DELAY capability"
+msgstr ""
+
+#: src/mn-pop3-mailbox.gob:536
+#, fuzzy
+msgid "unknown error"
+msgstr "неизвестна грешка в сървъра"
+
+#: src/mn-pop3-mailbox.gob:666
+#, 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:831
+msgid "server does not support APOP authentication"
+msgstr "Сървърът не поддържа идентификация тип APOP"
+
+#: src/mn-pop3-mailbox.gob:859
+msgid "falling back to APOP authentication"
+msgstr ""
+
+#: src/mn-pop3-mailbox.gob:864
+msgid "falling back to USER/PASS authentication"
+msgstr ""
+
+#: src/mn-properties.c:161
+#, fuzzy
+msgid "top left"
+msgstr "Завършено"
+
+#: src/mn-properties.c:162
+msgid "top right"
+msgstr ""
+
+#: src/mn-properties.c:163
+msgid "bottom left"
+msgstr ""
+
+#: src/mn-properties.c:164
+msgid "bottom right"
+msgstr ""
+
+#: src/mn-properties.c:240
+msgid "No mailbox selected."
+msgstr "Няма избрана кутия."
+
+#: src/mn-properties.c:245
+#, fuzzy, c-format
+msgid "%i mailbox selected."
+msgid_plural "%i mailboxes selected."
+msgstr[0] "%i избрана кутия."
+msgstr[1] "%i избрана кутия."
+
+#: src/mn-shell.gob:84
+msgid "You have new mail."
+msgstr "Имате поща."
+
+#: src/mn-shell.gob:96
+msgid "A command error has occurred in Mail Notification"
+msgstr "Грешка с командите се получи в известяването за поща"
+
+#: src/mn-shell.gob:97
+#, c-format
+msgid "Unable to execute new mail command: %s."
+msgstr "Неуспех при стартирането на нова пощенска команда: %s."
+
+#: src/mn-shell.gob:270
+#, 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:274
+msgid "You have no new mail."
+msgstr "Нямата нова поща."
+
+#: src/mn-shell.gob:277
+#, 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:282
+#, fuzzy
+msgid "The following mailbox is unsupported:\n"
+msgid_plural "The following mailboxes are unsupported:\n"
+msgstr[0] "Следните пощенски кутии не се поддържат:\n"
+msgstr[1] "Следните пощенски кутии не се поддържат:\n"
+
+#: src/mn-ssl.c:79
+msgid "unknown SSL/TLS error"
+msgstr "неизвестна SSL/TLS грешка"
+
+#: src/mn-stock.c:28
+msgid "Select _All"
+msgstr "Избор на _всички"
+
+#: src/mn-stock.c:29
+msgid "_Mail Summary"
+msgstr ""
+
+#: src/mn-sylpheed-mailbox.gob:122
+#, c-format
+msgid "unable to open folder: %s"
+msgstr "неуспех при отварянето на папката: %s"
+
+#: src/mn-sylpheed-mailbox.gob:180
+#, c-format
+msgid "unable to close folder: %s"
+msgstr "неуспех при затварянето на папката: %s"
+
+#: src/mn-sylpheed-mailbox.gob:183
+#, c-format
+msgid "error while reading folder: %s"
+msgstr "грешка при четенето на папката: %s"
+
+#: src/mn-system-mailbox-properties.gob:34 src/mn-uri.gob:393
+msgid "System Mailbox"
+msgstr "Системна кутия"
+
+#: src/mn-system-mailbox-properties.gob:57
+#, c-format
+msgid "Your system mailbox (<span weight=\"bold\">%s</span>) will be used."
+msgstr ""
+"Системната ви пощенска кутия (<span weight=\"bold\">%s</span>) ще бъде "
+"използвана."
+
+#: src/mn-system-mailbox-properties.gob:64
+msgid ""
+"The location of your system mailbox could not be detected. Please set the "
+"MAIL environment variable."
+msgstr ""
+"Местоположението на Вашата системна пощенска кутия не може да бъде засечено. "
+"Моля, настройте променливата MAIL environment."
+
+#: src/mn-unsupported-mailbox.gob:33
+msgid "The reason why the mailbox is unsupported"
+msgstr "Причината защо пощенската кутия е неподдържана"
+
+#: src/mn-unsupported-mailbox.gob:40
+msgid "unsupported"
+msgstr "не е поддържан"
+
+#: src/mn-util.c:233
+#, c-format
+msgid "error loading image: %s"
+msgstr "грешка при зареждането на изображение: %s"
+
+#: src/mn-util.c:271
+#, fuzzy, c-format
+msgid "widget \"%s\" not found in interface \"%s\""
+msgstr "уиджета %s не е намерен в интерфейса %s"
+
+#: src/mn-util.c:385
+msgid "received an invalid URI list"
+msgstr "получен е некоректен списък с адреси"
+
+#: src/mn-util.c:421
+msgid "received an invalid Mozilla URL"
+msgstr "получен е некоректен Mozilla адрес"
+
+#: src/mn-util.c:514
+msgid "Unable to display help"
+msgstr "Неуспех при показването на помощта"
+
+#: src/mn-util.c:528
+#, c-format
+msgid "Unable to create a thread: %s."
+msgstr "Неуспех при създаването на нишка: %s."
+
+#: src/mn-util.c:705
+msgid "_Do not show this message again"
+msgstr ""
+
+#: src/mn-util.c:789
+msgid "A fatal error has occurred in Mail Notification"
+msgstr "Получи се сериозна грешка в известяването за поща"
+
+#: src/mn-util.c:804
+#, fuzzy, c-format
+msgid "unable to get current time: %s"
+msgstr "неуспех при свързването с %s"
+
+#: src/mn-util.c:887
+#, c-format
+msgid "invalid signal specification \"%s\""
+msgstr ""
+
+#: ui/mailbox-properties.glade.h:1
+msgid "_Mailbox type:"
+msgstr "_Тип на пощенската кутия:"
+
+#: ui/properties.glade.h:1
+msgid "    "
+msgstr "    "
+
+#: ui/properties.glade.h:2
+msgid "*"
+msgstr "*"
+
+#: ui/properties.glade.h:3
+msgid "<span weight=\"bold\">General</span>"
+msgstr "<span weight=\"bold\">Основни</span>"
+
+#: ui/properties.glade.h:4
+#, fuzzy
+msgid "<span weight=\"bold\">Mailbox List</span>"
+msgstr "<span weight=\"bold\">Пощенски кутии</span>"
+
+#: ui/properties.glade.h:5
+#, fuzzy
+msgid "<span weight=\"bold\">Position</span>"
+msgstr "<span weight=\"bold\">Команди</span>"
+
+#: ui/properties.glade.h:6
+msgid "General"
+msgstr ""
+
+#: ui/properties.glade.h:7
+msgid "Hori_zontal offset:"
+msgstr ""
+
+#: ui/properties.glade.h:8
+msgid "Mail Notification Properties"
+msgstr "Настройки на известяването за поща"
+
+#: ui/properties.glade.h:9
+msgid "Mail Summary Popup"
+msgstr ""
+
+#: ui/properties.glade.h:10
+#, fuzzy
+msgid "Mailboxes"
+msgstr "Пощенска кутия"
+
+#: ui/properties.glade.h:11
+#, fuzzy
+msgid "P_osition:"
+msgstr "_Местоположение:"
+
+#: ui/properties.glade.h:12
+#, fuzzy
+msgid "The amount of time to wait before closing the mail summary popup"
+msgstr "Времевият интервал за изчакване между проверките за нова поща"
+
+#: ui/properties.glade.h:13
+msgid "The amount of time to wait between mail checks"
+msgstr "Времевият интервал за изчакване между проверките за нова поща"
+
+#: ui/properties.glade.h:14
+msgid "The command to run when new mail arrives"
+msgstr "Командата, която да се изпълни при пристигането на нова поща"
+
+#: ui/properties.glade.h:15
+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:16
+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:17
+msgid "Whether the status icon should blink on errors or not"
+msgstr "Дали иконата за състоянието да започне да мига при грешки или не"
+
+#: ui/properties.glade.h:18
+#, fuzzy
+msgid "Whether to automatically close the mail summary popup or not"
+msgstr "Дали да се стартира команда при пристигането на нова поща или не"
+
+#: ui/properties.glade.h:19
+#, fuzzy
+msgid "Whether to display the mail summary popup when new mail arrives or not"
+msgstr "Дали да се стартира команда при пристигането на нова поща или не"
+
+#: ui/properties.glade.h:20
+msgid "Whether to run a command when new mail arrives or not"
+msgstr "Дали да се стартира команда при пристигането на нова поща или не"
+
+#: ui/properties.glade.h:21
+msgid ""
+"Whether to start Mail Notification when you log into your GNOME session or "
+"not"
+msgstr ""
+"Дали да се стартира известяването за поща, когато влизате в GNOME или не"
+
+#: ui/properties.glade.h:22
+msgid "_Automatically close after:"
+msgstr ""
+
+#: ui/properties.glade.h:23
+msgid "_Blink on errors"
+msgstr "_Мигане при грешки"
+
+#: ui/properties.glade.h:24
+msgid "_Delay between mail checks:"
+msgstr "_Време между проверките за поща:"
+
+#: ui/properties.glade.h:25
+msgid "_Enable mail summary popup"
+msgstr ""
+
+#: ui/properties.glade.h:26
+#, fuzzy
+msgid "_Run a command when new mail arrives:"
+msgstr "Стартиране на команда при пристигането на нова поща"
+
+#: ui/properties.glade.h:27
+msgid "_Start Mail Notification on GNOME login"
+msgstr "_Стартиране на известяването за поща при влизане в GNOME"
+
+#: ui/properties.glade.h:28
+msgid "_Vertical offset:"
+msgstr ""
+
+#: ui/properties.glade.h:29
+msgid "minutes"
+msgstr "минути"
+
+#: ui/properties.glade.h:30
+msgid "pixels"
+msgstr ""
+
+#: ui/properties.glade.h:31
+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>"
+msgstr "<span weight=\"bold\">Пощенски кутии</span>"
+
+#: ui/welcome.glade.h:1
+msgid ""
+"<span weight=\"bold\" size=\"larger\">First startup</span>\n"
+"\n"
+"Mail Notification has been loaded successfully.\n"
+"\n"
+"Since this is the first time you run Mail Notification, you might want to "
+"configure it.\n"
+"\n"
+"Note: this message will not be shown anymore. To configure Mail Notification "
+"again, choose <span weight=\"bold\">Applications</span> → <span weight=\"bold"
+"\">Desktop Preferences</span> → <span weight=\"bold\">Mail Notification</"
+"span> (or on some systems <span weight=\"bold\">Applications → Preferences → "
+"More Preferences → Mail Notification</span>)."
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">Първо стартиране</span>\n"
+"\n"
+"Известяването за поща беше стартирано успешно.\n"
+"\n"
+"След като стартирате за първи път известяването за поща то сигурно желаете "
+"да го настроите.\n"
+"\n"
+"Бележка: няма да видите това съобщение отново. За да настроите известяването "
+"за поща отново, то изберете <span weight=\"bold\">Програми</span> → "
+"<span·weight=\"bold\">Настройки на средата</span> → <span weight=\"bold"
+"\">Известяване за поща</span> (или при някои системи <span weight=\"bold"
+"\">Програми → Настройки → Допълнителни настройки → Известяване за поща</"
+"span>)."
+
+#: ui/welcome.glade.h:8
+msgid "_Configure Mail Notification"
+msgstr "_Настройки на известяването за поща"
+
+#: ui/welcome.glade.h:9
+msgid "_Skip configuration"
+msgstr "_Пропускане на настройването"
+
+#~ msgid "Double-clicked command"
+#~ msgstr "Команда при двойна натискане"
+
+#~ msgid "Run a command when the icon is double-clicked"
+#~ msgstr "Стартиране на команда при двойно натискане на иконата"
+
+#~ msgid "The command to run when the icon is double-clicked."
+#~ msgstr ""
+#~ "Командата, която да се стартира при двойно натискане на иконата - писмо."
+
+#~ msgid "Whether to run a command when the icon is double-clicked or not."
+#~ msgstr "Дали да се стартира команда при натискането на иконата-писмо или не"
+
+#~ msgid "_Run %s"
+#~ msgstr "_Стартиране %s"
+
+#~ msgid "_Run Default Action"
+#~ msgstr "_Стартиране на стандартното действие"
+
+#~ msgid "A command error has occurred"
+#~ msgstr "След изпълнението на командата се получи грешка"
+
+#~ msgid "Unable to execute double-clicked command: %s."
+#~ msgstr "Неуспех при стартирането на командата: %s."
+
+#~ msgid "The command to run when the icon is double-clicked"
+#~ msgstr ""
+#~ "Командата, която да се стартира когато иконата-писмо се натисне два пъти"
+
+#~ msgid "When _new mail arrives:"
+#~ msgstr "При пристигане на _нова поща:"
+
+#~ msgid "When double-click_ed:"
+#~ msgstr "При _двойно натискане:"
+
+#~ msgid "Whether to run a command when the icon is double-clicked or not"
+#~ msgstr "Дали да се стартира команда при двойно натискане на иконата или не"
diff --git a/po/de.gmo b/po/de.gmo
Binary files differ.
diff --git a/po/de.po b/po/de.po
@@ -10,8 +10,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: mail-notification 0.6.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2004-09-09 01:43+0200\n"
-"PO-Revision-Date: 2004-09-08 23:26+0200\n"
+"POT-Creation-Date: 2004-10-06 19:31+0200\n"
+"PO-Revision-Date: 2004-09-10 00:51+0200\n"
 "Last-Translator: Hendrik Brandt <eru@gmx.li>\n"
 "Language-Team: German <gnome-de@gnome.org>\n"
 "MIME-Version: 1.0\n"
@@ -24,7 +24,6 @@ msgid "Mail Notification automation"
 msgstr "Automatische E-Mail-Eingangsüberwachnung"
 
 #: data/GNOME_MailNotification_Automation.server.in.in.h:2
-#, fuzzy
 msgid "Mail Notification automation factory"
 msgstr "Automatische E-Mail-Eingangsüberwachnung"
 
@@ -34,8 +33,8 @@ 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:38
-#: src/mn-mail-icon.gob:160 src/mn-main.c:221
+#: data/mail-notification.soundlist.in.h:1 src/mn-about-dialog.gob:40
+#: src/mn-mail-icon.gob:163 src/mn-main.c:272
 msgid "Mail Notification"
 msgstr "E-Mail-Eingangsüberwachung"
 
@@ -44,117 +43,203 @@ msgid "Get notified when new mail arrives"
 msgstr "Informiert Sie wenn eine neue Nachricht eintrifft"
 
 #: data/mail-notification.schemas.in.h:1
-msgid "Blink on errors"
+msgid "Automatically close the mail summary popup"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:2
+msgid "Blink on errors"
+msgstr "Bei Fehler blinken"
+
+#: data/mail-notification.schemas.in.h:3
 msgid "Delay between mail checks (minutes part)."
 msgstr "Abstand zwischen Eingangsüberprüfung (Minutenteil)."
 
-#: data/mail-notification.schemas.in.h:3
+#: data/mail-notification.schemas.in.h:4
 msgid "Delay between mail checks (seconds part)."
 msgstr "Abstand zwischen Eingangsüberprüfung (Sekundenteil)."
 
-#: data/mail-notification.schemas.in.h:4
-msgid "Double-clicked command"
-msgstr "Auszuführender Befehl bei Doppelklick"
-
 #: data/mail-notification.schemas.in.h:5
-msgid "Fingerprints of trusted X509 certificates"
+msgid "Do not show the immediate notification error dialog"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:6
+msgid "Enable mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:7
+msgid "Fingerprints of trusted X509 certificates"
+msgstr "Fingerabdrücke vertrauensvoller X509-Zertifikate"
+
+#: data/mail-notification.schemas.in.h:8
 msgid "Has already been run"
 msgstr "Wurde schon einmal gestartet"
 
-#: data/mail-notification.schemas.in.h:7
+#: data/mail-notification.schemas.in.h:9
+#, fuzzy
+msgid "Height of mail summary dialog"
+msgstr "Höhe des Einstellungen-Dialogs"
+
+#: data/mail-notification.schemas.in.h:10
 msgid "Height of properties dialog"
 msgstr "Höhe des Einstellungen-Dialogs"
 
-#: data/mail-notification.schemas.in.h:8
-msgid "Mailboxes list"
+#: data/mail-notification.schemas.in.h:11
+msgid "Mail summary popup horizontal offset"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:12
+msgid "Mail summary popup position"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:13
+msgid "Mail summary popup vertical offset"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:14
+#, fuzzy
+msgid "Mailbox list"
 msgstr "Liste der Postfächer"
 
-#: data/mail-notification.schemas.in.h:9
+#: data/mail-notification.schemas.in.h:15
 msgid "Minutes between mail checks"
 msgstr "Minuten zwischen den Aktualisierungen"
 
-#: data/mail-notification.schemas.in.h:10
+#: data/mail-notification.schemas.in.h:16
+msgid "Minutes to wait before closing the mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:17
 msgid "New mail command"
 msgstr "Befehl bei neuer Nachricht"
 
-#: data/mail-notification.schemas.in.h:11
+#: data/mail-notification.schemas.in.h:18
 msgid "Run a command when new mail arrives"
 msgstr "Einen Befehl ausführen, wenn eine neue Nachricht eintrifft"
 
-#: data/mail-notification.schemas.in.h:12
-msgid "Run a command when the icon is double-clicked"
-msgstr ""
-"Einen Befehl ausführen, wenn das Nachrichtensymbol doppelt angeklickt wird"
-
-#: data/mail-notification.schemas.in.h:13
+#: data/mail-notification.schemas.in.h:19
 msgid "Seconds between mail checks"
 msgstr "Sekunden zwischen den Aktualisierungen"
 
-#: data/mail-notification.schemas.in.h:14
+#: data/mail-notification.schemas.in.h:20
+msgid "Seconds to wait before closing the mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:21
+#, fuzzy
+msgid ""
+"The amount of time to wait before closing the mail summary popup (minutes "
+"part)."
+msgstr "Die Zeit die zwischen zwei Überprüfungen auf neue Nachrichten vergeht"
+
+#: data/mail-notification.schemas.in.h:22
+#, fuzzy
+msgid ""
+"The amount of time to wait before closing the mail summary popup (seconds "
+"part)."
+msgstr "Die Zeit die zwischen zwei Überprüfungen auf neue Nachrichten vergeht"
+
+#: data/mail-notification.schemas.in.h:23
 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:15
-msgid "The command to run when the icon is double-clicked."
-msgstr ""
-"Der Befehl der ausgeführt wird, wenn das Nachrichtensymbol doppelt "
-"angeklickt wird."
+#: data/mail-notification.schemas.in.h:24
+#, fuzzy
+msgid "The height of the mail summary dialog in pixels."
+msgstr "Die Höhe des Einstellungsdialogs in Pixel."
 
-#: data/mail-notification.schemas.in.h:16
+#: data/mail-notification.schemas.in.h:25
 msgid "The height of the properties dialog in pixels."
 msgstr "Die Höhe des Einstellungsdialogs in Pixel."
 
-#: data/mail-notification.schemas.in.h:17
+#: data/mail-notification.schemas.in.h:26
 msgid "The list of mailboxes to monitor."
 msgstr "Die Liste der zu überwachenden Postfächer."
 
-#: data/mail-notification.schemas.in.h:18
+#: data/mail-notification.schemas.in.h:27
 msgid ""
 "The list of trusted SSL/TLS servers (hostname:port) lacking a X509 "
 "certificate."
 msgstr ""
+"Die Liste vertrauensvoller SSL/TLS-Server (Host-Name:Port) ohne X509-"
+"Zertifikat."
 
-#: data/mail-notification.schemas.in.h:19
+#: data/mail-notification.schemas.in.h:28
 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:20
+#: data/mail-notification.schemas.in.h:29
+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:30
+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:31
+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:32
+#, fuzzy
+msgid "The width of the mail summary dialog in pixels."
+msgstr "Die Breite des Einstellungen-Dialogs in Pixel."
+
+#: data/mail-notification.schemas.in.h:33
 msgid "The width of the properties dialog in pixels."
 msgstr "Die Breite des Einstellungen-Dialogs in Pixel."
 
-#: data/mail-notification.schemas.in.h:21
+#: data/mail-notification.schemas.in.h:34
 msgid "Trusted servers list"
-msgstr ""
+msgstr "Liste vertrauensvoller Server"
 
-#: data/mail-notification.schemas.in.h:22
+#: data/mail-notification.schemas.in.h:35
 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:23
-#, fuzzy
+#: data/mail-notification.schemas.in.h:36
 msgid "Whether the status icon should blink on errors or not."
-msgstr "Legt fest, ob das Bild blinkt oder nicht"
+msgstr ""
+"Legt fest, ob das  Nachrichtensymbol bei Auftreten eines Fehlers blinkt."
 
-#: data/mail-notification.schemas.in.h:24
-msgid "Whether to run a command when new mail arrives or not."
+#: data/mail-notification.schemas.in.h:37
+#, fuzzy
+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:25
-msgid "Whether to run a command when the icon is double-clicked or not."
+#: data/mail-notification.schemas.in.h:38
+#, fuzzy
+msgid "Whether to display the mail summary popup when new mail arrives or not."
 msgstr ""
-"Legt fest, ob ein Befehl ausgeführt wird, wenn das Nachrichtensymbol doppelt "
-"angeklickt wird."
+"Legt fest, ob ein Befehl ausgeführt wird, wenn eine neue Nachricht eintrifft."
 
-#: data/mail-notification.schemas.in.h:26
+#: data/mail-notification.schemas.in.h:39
+msgid ""
+"Whether to prevent the immediate notification error dialog from being "
+"displayed or not."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:40
+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:41
+#, fuzzy
+msgid "Width of mail summary dialog"
+msgstr "Breite des Einstellungen-Dialogs"
+
+#: data/mail-notification.schemas.in.h:42
 msgid "Width of properties dialog"
 msgstr "Breite des Einstellungen-Dialogs"
 
@@ -170,133 +255,120 @@ msgstr "Ausrichtung"
 msgid "The orientation of the tray."
 msgstr "Die Ausrichtung des Benachrichtigungsfeldes"
 
-#: src/mn-about-dialog.gob:41
+#: src/mn-about-dialog.gob:43
 msgid "A Mail Notification Icon"
 msgstr ""
 "Ein Benachrichtigungssymbol das erscheint, wenn neue Nachrichten in Ihren "
 "Postfächern liegen."
 
-#: src/mn-about-dialog.gob:44
+#. translator: replace with your name and email
+#: src/mn-about-dialog.gob:47
 msgid "Jean-Yves Lefort <jylefort@brutele.be>"
 msgstr "Hendrik Brandt <eru@gmx.li>"
 
-#: src/mn-auth-combo-box.gob:99 src/mn-autodetect-mailbox-properties.gob:35
+#: src/mn-auth-combo-box.gob:101 src/mn-autodetect-mailbox-properties.gob:37
 msgid "<span style=\"italic\">autodetect</span>"
 msgstr "<span style=\"italic\">automatisch erkennen</span>"
 
-#: src/mn-autodetect-mailbox-properties.gob:66
+#: src/mn-autodetect-mailbox-properties.gob:68
 msgid "_Location:"
 msgstr "_Ort:"
 
-#: src/mn-autodetect-mailbox-properties.gob:72
+#: src/mn-autodetect-mailbox-properties.gob:74
 msgid "_Browse..."
 msgstr "_Durchsuchen..."
 
-#: src/mn-autodetect-mailbox-properties.gob:79
+#: src/mn-autodetect-mailbox-properties.gob:81
 msgid "The URI of the mailbox"
 msgstr "Die Adresse des Postfachs"
 
-#: src/mn-autodetect-mailbox-properties.gob:116
+#: src/mn-autodetect-mailbox-properties.gob:118
 msgid "Select a File or Folder"
 msgstr "Wählen Sie eine Datei oder ein Verzeichnis"
 
-#: src/mn-blinking-image.gob:30
+#: src/mn-blinking-image.gob:32
 msgid "Whether the image is blinking or not"
 msgstr "Legt fest, ob das Bild blinkt oder nicht"
 
-#: src/mn-client-session.c:196 src/mn-client-session.c:203
-#, c-format
-msgid "unable to read from server: %s"
-msgstr "Es konnte nicht vom Server gelesen werden: %s"
-
-#: src/mn-client-session.c:201
-msgid "unable to read from server: EOF"
-msgstr "Es konnte nicht vom Server gelesen werden: EOF"
-
-#: src/mn-client-session.c:213
-#, 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:284
+#: src/mn-client-session.c:229
 #, c-format
 msgid "resolving %s"
 msgstr "%s wird kontaktiert"
 
-#: src/mn-client-session.c:294
+#: src/mn-client-session.c:239
 #, c-format
 msgid "unable to resolve %s: %s"
 msgstr "%s konnte nicht kontaktiert werden: %s"
 
-#: src/mn-client-session.c:331
+#: src/mn-client-session.c:276
 #, c-format
 msgid "%s: unsupported address family"
 msgstr "%s: Adressfamilie wird nicht unterstützt"
 
-#: src/mn-client-session.c:338
+#: src/mn-client-session.c:283
 #, c-format
 msgid "%s: unable to create socket: %s"
 msgstr "%s: Socket konnte nciht erstellt werden: %s"
 
-#: src/mn-client-session.c:342
+#: src/mn-client-session.c:287
 #, c-format
 msgid "connecting to %s (%s) port %i"
 msgstr "Verbindung mit %s (%s) über Port %i wird hergestellt"
 
-#: src/mn-client-session.c:345
+#: src/mn-client-session.c:290
 #, c-format
 msgid "unable to connect: %s"
 msgstr "Es konnte nicht verbunden werden: %s"
 
-#: src/mn-client-session.c:350
+#: src/mn-client-session.c:295
 msgid "connected successfully"
 msgstr "Verbindung hergestellt"
 
 #. if reached, we couldn't find a working address
-#: src/mn-client-session.c:356
+#: src/mn-client-session.c:301
 #, c-format
 msgid "unable to connect to %s"
 msgstr "Es konnte keine Verbindung mit %s hergestellt werden"
 
-#: src/mn-client-session.c:372
+#: src/mn-client-session.c:317
 #, c-format
 msgid "unable to initialize the OpenSSL library: %s"
 msgstr "Die OpenSSL-Bibliothek konnte nicht initializiert werden: %s"
 
-#: src/mn-client-session.c:380
-#, fuzzy, c-format
+#: src/mn-client-session.c:325
+#, c-format
 msgid "unable to create a SSL/TLS object: %s"
-msgstr "Es konnte kein SSL-Objekt erzeugt werden: %s"
+msgstr "Es konnte kein SSL/TLS-Objekt erzeugt werden: %s"
 
-#: src/mn-client-session.c:386
-#, fuzzy, c-format
+#: src/mn-client-session.c:331
+#, c-format
 msgid "unable to set the SSL/TLS file descriptor: %s"
-msgstr "Es konnte kein SSL-Dateideskriptor gesetzt werden: %s"
+msgstr "Es konnte kein SSL/TLS-Dateideskriptor gesetzt werden: %s"
 
-#: src/mn-client-session.c:392
-#, fuzzy, c-format
+#: src/mn-client-session.c:337
+#, c-format
 msgid "unable to perform the SSL/TLS handshake: %s"
-msgstr "Es konnte kein SSL-Dateideskriptor gesetzt werden: %s"
+msgstr "Es konnte kein SSL/TLS-Handshake durchgeführt werden: %s"
 
-#: src/mn-client-session.c:398
+#: src/mn-client-session.c:343
 msgid "untrusted server"
-msgstr ""
+msgstr "nicht vertrauensvolle Server"
 
-#: src/mn-client-session.c:402
+#: src/mn-client-session.c:347
 #, c-format
 msgid "a SSL/TLS layer is now active (%s, %s %i-bit)"
-msgstr ""
+msgstr "Eine SSL/TLS-Zwischenschicht ist jetzt aktiv (%s, %s %i-Bit)"
 
-#: src/mn-client-session.c:449
+#: src/mn-client-session.c:394
 #, c-format
 msgid "%s, fingerprint: %s"
-msgstr ""
+msgstr "%s, Fingerabdruck %s"
 
-#: src/mn-client-session.c:478
+#: src/mn-client-session.c:423
 msgid "missing certificate"
-msgstr ""
+msgstr "kein Zertifikat"
 
-#: src/mn-client-session.c:504
+#: src/mn-client-session.c:449
 #, c-format
 msgid ""
 "Mail Notification was unable to trust \"%s\" (%s). It is possible that "
@@ -307,246 +379,320 @@ msgid ""
 "to \"%s\". If you choose to connect to the server, this message will not be "
 "shown again."
 msgstr ""
+"Die E-Mail-Eingangsüberwachnung konnte »%s« nicht vertrauen (%s). Es ist "
+"möglich, dass ein Anderer Ihre Kommunikation abfängt um Zugriff auf "
+"Ihrepersönlichen Informationen zu bekommen.\n"
+"\n"
+"Sie sollten sich nur zu diesem Server verbinden, wenn Sie sicher sind, dass "
+"sie auch tatsächlich mit »%s« verbunden sind. Falls Sie sich dennoch mit dem "
+"Server verbinden lassen, wird dieser Dialog in Zukunft nicht mehr angeziegt."
 
-#: src/mn-client-session.c:521
+#: src/mn-client-session.c:466
 msgid "Connect to untrusted server?"
-msgstr ""
+msgstr "Möchten Sie sich mit einem nicht vertrauenswürdigen Server verbinden?"
 
-#: src/mn-client-session.c:526
+#: src/mn-client-session.c:471
 msgid "Co_nnect"
-msgstr ""
+msgstr "_Verbinden"
 
-#: src/mn-client-session.c:584
+#: src/mn-client-session.c:527
 #, c-format
 msgid "response \"%s\" is not valid in current context"
 msgstr "Die Antwort »%s« ist in diesem Kontext nicht zugelassen"
 
-#: src/mn-client-session.c:610
+#: src/mn-client-session.c:553
 #, c-format
 msgid "unable to parse response \"%s\""
 msgstr "Die Antwort »%s« konnte nicht analysiert werden"
 
-#: src/mn-client-session.c:657
+#: src/mn-client-session.c:592 src/mn-client-session.c:599
+#, c-format
+msgid "unable to read from server: %s"
+msgstr "Es konnte nicht vom Server gelesen werden: %s"
+
+#: src/mn-client-session.c:597
+msgid "unable to read from server: EOF"
+msgstr "Es konnte nicht vom Server gelesen werden: EOF"
+
+#: src/mn-client-session.c:609
+#, 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
 #, 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:688 src/mn-client-session.c:695
+#: src/mn-client-session.c:777 src/mn-client-session.c:784
 #, c-format
 msgid "unable to write to server: %s"
 msgstr "Es konnte nicht auf den Server geschrieben werden: %s"
 
-#: src/mn-client-session.c:693
+#: src/mn-client-session.c:782
 msgid "unable to write to server: EOF"
 msgstr "Es konnte nicht auf den Server geschrieben werden: EOF"
 
-#: src/mn-client-session.c:725
+#: src/mn-client-session.c:814
 #, c-format
 msgid "unable to encode Base64: %s"
 msgstr "Es konnte nicht mit Base64 kodiert werden: %s"
 
-#: src/mn-client-session.c:828
+#: src/mn-client-session.c:917
 #, c-format
 msgid "unable to initialize the SASL library: %s"
 msgstr "Die SASL-Bibliothek konnte nicht initializiert werden: %s"
 
-#: src/mn-client-session.c:837
+#: src/mn-client-session.c:926
 #, 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:843
+#: src/mn-client-session.c:932
 #, 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:877
+#: src/mn-client-session.c:966
 #, 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:916
+#: src/mn-client-session.c:1005
 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:920
+#: src/mn-client-session.c:1009
 #, c-format
 msgid "unable to start SASL authentication: %s"
 msgstr "Die SASL-Authentifizierung konnte nicht gestartet werden: %s"
 
-#: src/mn-client-session.c:924
+#: src/mn-client-session.c:1013
 #, 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:974
+#: src/mn-client-session.c:1063
 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:978
+#: src/mn-client-session.c:1067
 #, c-format
 msgid "%s, aborting SASL authentication"
 msgstr "%s, SASL-Authentifizierung wird abgebrochen"
 
 #. compliance error
-#: src/mn-client-session.c:983
+#: src/mn-client-session.c:1072
 #, 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:986
+#: src/mn-client-session.c:1075
 msgid ""
 "the server sent a SASL challenge, but there was a pending initial SASL "
 "client response"
 msgstr ""
 
-#: src/mn-client-session.c:1000
+#: src/mn-client-session.c:1089
 msgid ""
 "the server did not send a SASL challenge, but there was no pending initial "
 "SASL client response"
 msgstr ""
 
-#: src/mn-client-session.c:1023
+#: src/mn-client-session.c:1112
 #, 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:1028
+#: src/mn-client-session.c:1117
 #, c-format
 msgid "unable to get SASL_MAXOUTBUF property: %s"
 msgstr "Der Wert SASL_MAXOUTBUF wurde nicht gefunden: %s"
 
-#: src/mn-client-session.c:1034
+#: src/mn-client-session.c:1123
 #, 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:109
+#: src/mn-conf.c:123
 #, c-format
 msgid "recursively unsetting %s"
-msgstr ""
+msgstr "%s rekursiv zurück setzen"
 
-#: src/mn-conf.c:113
+#: src/mn-conf.c:127
 msgid "syncing the GConf database"
-msgstr ""
+msgstr "Synchronisiere mit der GConf-Datenbank"
 
-#: src/mn-conf.c:116
-#, fuzzy
+#: src/mn-conf.c:130
 msgid "completed"
-msgstr "Vollständig"
+msgstr "Abgeschlossen"
 
-#: src/mn-gmail-mailbox-properties.gob:77
+#: src/mn-gmail-mailbox-properties.gob:79
 msgid "Your Gmail username"
 msgstr "Ihr Gmail-Benutzername"
 
-#: src/mn-gmail-mailbox-properties.gob:78
+#: src/mn-gmail-mailbox-properties.gob:80
 msgid "Your Gmail password"
 msgstr "Ihr Gmail-Passwort"
 
-#: src/mn-gmail-mailbox.gob:220
-#, fuzzy
+#: src/mn-gmail-mailbox.gob:65
+msgid "libsoup has not been compiled with SSL/TLS support"
+msgstr ""
+
+#: src/mn-gmail-mailbox.gob:110 src/mn-gmail-mailbox.gob:331
+#, fuzzy, c-format
+msgid "unable to parse URI \"%s\""
+msgstr "Die Antwort »%s« konnte nicht analysiert werden"
+
+#: src/mn-gmail-mailbox.gob:257
 msgid "logging in"
 msgstr "Anmelden bei"
 
-#: src/mn-gmail-mailbox.gob:239 src/mn-gmail-mailbox.gob:279
-#: src/mn-gmail-mailbox.gob:313 src/mn-gmail-mailbox.gob:418
+#: src/mn-gmail-mailbox.gob:271 src/mn-gmail-mailbox.gob:342
+#: src/mn-gmail-mailbox.gob:380 src/mn-gmail-mailbox.gob:415
+msgid "login failed"
+msgstr "Anmeldung fehlgeschlagen"
+
+#: src/mn-gmail-mailbox.gob:283 src/mn-gmail-mailbox.gob:356
+#: src/mn-gmail-mailbox.gob:394 src/mn-gmail-mailbox.gob:503
 #, c-format
 msgid "unable to transfer data: %s"
 msgstr "Daten konnten nicht übertragen werden: %s"
 
-#: src/mn-gmail-mailbox.gob:265 src/mn-gmail-mailbox.gob:299
-#: src/mn-gmail-mailbox.gob:334
-msgid "login failed"
-msgstr "Anmeldung fehlgeschlagen"
-
-#: src/mn-gmail-mailbox.gob:328
+#: src/mn-gmail-mailbox.gob:409
 msgid "successfully logged in"
 msgstr "Anmeldung war erfolgreich"
 
-#: src/mn-gmail-mailbox.gob:406
+#: src/mn-gmail-mailbox.gob:487
 msgid "searching for unread mail"
 msgstr "Es wird nach ungelesenen Nachrichten gesucht"
 
-#: src/mn-gmail-mailbox.gob:427
+#: src/mn-gmail-mailbox.gob:491
+#, fuzzy
+msgid "unable to search for unread mail"
+msgstr "Es wird nach ungelesenen Nachrichten gesucht"
+
+#: src/mn-gmail-mailbox.gob:604
 msgid "unable to parse Gmail data"
 msgstr "Die Gmail-Daten konnte nicht analysiert werden"
 
-#: src/mn-imap-mailbox-properties.gob:92
+#: src/mn-gmime-stream-vfs.gob:49
+#, fuzzy, c-format
+msgid "unable to read %s: %s"
+msgstr "%s konnte nicht kontaktiert werden: %s"
+
+#: src/mn-gmime-stream-vfs.gob:51
+#, fuzzy, c-format
+msgid "unable to write to %s: %s"
+msgstr "Es konnte nicht auf den Server geschrieben werden: %s"
+
+#: src/mn-gmime-stream-vfs.gob:53
+#, fuzzy, c-format
+msgid "unable to seek in %s: %s"
+msgstr "%s konnte nicht kontaktiert werden: %s"
+
+#: src/mn-gmime-stream-vfs.gob:55
+#, fuzzy, c-format
+msgid "unable to tell position of %s: %s"
+msgstr "%s konnte nicht überwacht werden: %s"
+
+#: src/mn-gmime-stream-vfs.gob:57
+#, fuzzy, c-format
+msgid "unable to close %s: %s"
+msgstr "Ordner konnte nicht geschlossen werden: %s"
+
+#: src/mn-imap-mailbox-properties.gob:94
 msgid "Mailbox:"
 msgstr "Postfach:"
 
-#: src/mn-imap-mailbox-properties.gob:96
+#: src/mn-imap-mailbox-properties.gob:98
 msgid "in_box"
 msgstr "In_box"
 
-#: src/mn-imap-mailbox-properties.gob:107
+#: src/mn-imap-mailbox-properties.gob:109
 msgid "oth_er:"
 msgstr "_Anderer:"
 
-#: src/mn-imap-mailbox-properties.gob:122
+#: src/mn-imap-mailbox-properties.gob:124
 msgid "The hostname or IP address of the IMAP server"
 msgstr "Der Name oder die IP-Adresse des IMAP-Servers"
 
-#: src/mn-imap-mailbox-properties.gob:123
+#: src/mn-imap-mailbox-properties.gob:125
 msgid "Your username on the IMAP server"
 msgstr "Ihr Benutzername auf dem IMAP-Server"
 
-#: src/mn-imap-mailbox-properties.gob:124
+#: src/mn-imap-mailbox-properties.gob:126
 msgid "Your password on the IMAP server"
 msgstr "Ihr Passwort auf dem IMAP-Server"
 
-#: src/mn-imap-mailbox-properties.gob:125
-#: src/mn-imap-mailbox-properties.gob:126
+#: src/mn-imap-mailbox-properties.gob:127
+#: src/mn-imap-mailbox-properties.gob:128
 msgid "The port number of the IMAP server"
 msgstr "Die Port-Nummer auf dem IMAP-Server"
 
-#: src/mn-imap-mailbox-properties.gob:127
+#: src/mn-imap-mailbox-properties.gob:129
 msgid "The mailbox name"
 msgstr "Der Postfachname"
 
-#: src/mn-imap-mailbox.gob:112 src/mn-pop3-mailbox.gob:125
-#, fuzzy
+#: src/mn-imap-mailbox.gob:132 src/mn-pop3-mailbox.gob:141
 msgid "SSL/TLS support has not been compiled in"
 msgstr ""
-"Die Unterstützung für SSL wurde beim Erstellen des Programms nicht eingebaut"
+"Die Unterstützung für SSL/TLS wurde beim Erstellen des Programms nicht "
+"eingebaut"
 
-#: src/mn-imap-mailbox.gob:179
+#: src/mn-imap-mailbox.gob:203
 msgid "server did not send capabilities"
 msgstr "Der Server hat seine Fähigkeiten nicht bekannt gegeben"
 
-#: src/mn-imap-mailbox.gob:292
+#: src/mn-imap-mailbox.gob:318
 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:293
+#: src/mn-imap-mailbox.gob:319
 msgid "unable to login"
 msgstr "Anmeldung fehlgeschlagen"
 
 #. compliance error
-#: src/mn-imap-mailbox.gob:361
+#: src/mn-imap-mailbox.gob:447
+#, fuzzy
+msgid "server did not send search results"
+msgstr "Der Server hat seinen Status nicht bekannt gegeben"
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:523
+#, fuzzy
+msgid "server did not send all the messages we requested"
+msgstr "Der Server hat seinen Status nicht bekannt gegeben"
+
+#: src/mn-imap-mailbox.gob:570
+#, fuzzy
+msgid "unable to fetch message"
+msgstr "Es konnte nicht verbunden werden: %s"
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:617
 msgid "server did not send status"
 msgstr "Der Server hat seinen Status nicht bekannt gegeben"
 
-#: src/mn-imap-mailbox.gob:583 src/mn-pop3-mailbox.gob:744
+#: src/mn-imap-mailbox.gob:856 src/mn-pop3-mailbox.gob:903
 msgid "unknown server error"
 msgstr "Unbekannter Server-Fehler"
 
-#: src/mn-imap-mailbox.gob:656 src/mn-pop3-mailbox.gob:210
-#, fuzzy
+#: src/mn-imap-mailbox.gob:927 src/mn-pop3-mailbox.gob:225
 msgid "server does not support in-band SSL/TLS"
-msgstr "Der Server unterstütz eine Authentifizierung per APOP nicht."
+msgstr "Der Server unterstütz kein band-internes SSL/TLS"
 
-#: src/mn-imap-mailbox.gob:675 src/mn-pop3-mailbox.gob:674
+#: src/mn-imap-mailbox.gob:946 src/mn-pop3-mailbox.gob:823
 msgid ""
 "a SASL authentication mechanism was selected but SASL support has not been "
 "compiled in"
@@ -554,41 +700,32 @@ 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:683 src/mn-pop3-mailbox.gob:686
+#: src/mn-imap-mailbox.gob:954 src/mn-pop3-mailbox.gob:835
 #, c-format
 msgid "unknown authentication mechanism \"%s\""
 msgstr "Unbekannte Authentifizierungsmethode »%s«"
 
-#: src/mn-imap-mailbox.gob:701
+#: src/mn-imap-mailbox.gob:972
 msgid "falling back to IMAP LOGIN authentication"
 msgstr "Es wird auf die Authentifizierung per IMAP LOGIN zurückgegriffen"
 
-#: src/mn-imap-mailbox.gob:705 src/mn-pop3-mailbox.gob:720
+#: src/mn-imap-mailbox.gob:976 src/mn-pop3-mailbox.gob:869
 msgid "authentication failed"
 msgstr "Authentifizierung fehlgeschlagen"
 
-#: src/mn-mail-icon.gob:81
+#: src/mn-mail-icon.gob:84 ui/summary-dialog.glade.h:2
 msgid "_Update"
 msgstr "_Aktualisieren"
 
-#: src/mn-mail-icon.gob:87
+#: src/mn-mail-icon.gob:90
 msgid "R_emove From Notification Area"
 msgstr "Aus dem Benachrichtigungsfeld entfernen"
 
-#: src/mn-mail-icon.gob:172
-#, c-format
-msgid "_Run %s"
-msgstr "%s a_usführen"
-
-#: src/mn-mail-icon.gob:173
-msgid "_Run Default Action"
-msgstr "_Standard Aktion ausführen"
-
 #: src/mn-mailbox-properties-dialog.c:109
 msgid "Add a Mailbox"
 msgstr "Ein Postfach hinzufügen"
 
-#: src/mn-mailbox-properties-dialog.c:331
+#: src/mn-mailbox-properties-dialog.c:328
 #, c-format
 msgid "%s Properties"
 msgstr "%s Eigenschaften"
@@ -637,56 +774,63 @@ 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:254
+#: src/mn-mailbox-view.gob:263 src/mn-message-label.gob:74
 msgid "Mailbox"
 msgstr "Postfach"
 
-#: src/mn-mailbox-view.gob:268
+#. format column
+#: src/mn-mailbox-view.gob:279
 msgid "Format"
 msgstr "Protokoll"
 
-#: src/mn-mailbox-view.gob:543
+#: src/mn-mailbox-view.gob:569
 msgid "Unable to add mailbox"
 msgstr "Postfach konnte nicht hinzugefügt werden"
 
-#: src/mn-mailbox-view.gob:543
+#: src/mn-mailbox-view.gob:569
 msgid "The mailbox is already in the list."
 msgstr "Dieses Postfach exisitiert bereits in Ihrer Liste."
 
-#: src/mn-mailbox.gob:122
+#: src/mn-mailbox.gob:133
 msgid "The mailbox URI"
 msgstr "Die Postfachadresse"
 
-#: src/mn-mailbox.gob:133
+#: src/mn-mailbox.gob:144
 msgid "The mailbox human-readable name"
 msgstr "Der lesbare Postfachname"
 
-#: src/mn-mailbox.gob:137
+#: src/mn-mailbox.gob:148
 msgid "Whether the mailbox has to be manually checked or not"
 msgstr "Legt fest, ob das Postfach manuell überprüft werden soll"
 
-#: src/mn-mailbox.gob:142
+#: src/mn-mailbox.gob:153
 msgid "Whether the mailbox has new mail or not"
 msgstr "Legt fest, ob das Postfach neue Nachrichten enthält"
 
-#: src/mn-mailbox.gob:147
+#: src/mn-mailbox.gob:158
+msgid "The list of new and unread MNMessage objects"
+msgstr ""
+
+#: src/mn-mailbox.gob:212
 msgid "The mailbox error, if any"
 msgstr "Der Postfachfehler, falls vorhanden"
 
-#: src/mn-mailbox.gob:251
+#: src/mn-mailbox.gob:310
 msgid "does not exist"
 msgstr "existiert nicht"
 
-#: src/mn-mailbox.gob:287
+#: src/mn-mailbox.gob:342
 msgid "unknown format"
 msgstr "unbekanntes Format"
 
-#: src/mn-mailbox.gob:355
-#, c-format
-msgid "unable to monitor %s: %s"
-msgstr "%s konnte nicht überwacht werden: %s"
+#: src/mn-mailbox.gob:408
+#, fuzzy, c-format
+msgid "unable to enable immediate notification for %s: %s"
+msgstr ""
+"Die E-Mail-Eingangsüberwachung konnte die umgehende Benachrichtigung für ein "
+"oder mehrere Postfächer nicht aktivieren: %s"
 
-#: src/mn-mailbox.gob:369
+#: src/mn-mailbox.gob:426
 #, fuzzy, c-format
 msgid ""
 "As a fallback, they will be checked every %i second (this delay is "
@@ -695,17 +839,17 @@ msgid_plural ""
 "As a fallback, they will be checked every %i seconds (this delay is "
 "configurable from the Properties Dialog)."
 msgstr[0] ""
-"Als Rücksicherung werden die Postfächer alle %i Sekunden überprüft (Dieser "
-"Wert kann über den Einstellungen-Dialog angepasst werden).Als Rücksicherung "
-"werden die Postfächer alle %i Sekunden überprüft (Dieser Wert kann über den "
-"Einstellungen-Dialog angepasst werden)."
+"Als Rücksicherung werden diese jede %i Sekunde überprüft (Dieser Wert kann "
+"über den Einstellungen-Dialog angepasst werden).Als Rücksicherung werden "
+"diese alle %i Sekunden überprüft (Dieser Wert kann über den Einstellungen-"
+"Dialog angepasst werden)."
 msgstr[1] ""
-"Als Rücksicherung werden die Postfächer alle %i Sekunden überprüft (Dieser "
-"Wert kann über den Einstellungen-Dialog angepasst werden).Als Rücksicherung "
-"werden die Postfächer alle %i Sekunden überprüft (Dieser Wert kann über den "
-"Einstellungen-Dialog angepasst werden)."
+"Als Rücksicherung werden diese jede %i Sekunde überprüft (Dieser Wert kann "
+"über den Einstellungen-Dialog angepasst werden).Als Rücksicherung werden "
+"diese alle %i Sekunden überprüft (Dieser Wert kann über den Einstellungen-"
+"Dialog angepasst werden)."
 
-#: src/mn-mailbox.gob:380
+#: src/mn-mailbox.gob:437
 #, fuzzy, c-format
 msgid ""
 "As a fallback, they will be checked every %i minute (this delay is "
@@ -714,17 +858,17 @@ msgid_plural ""
 "As a fallback, they will be checked every %i minutes (this delay is "
 "configurable from the Properties Dialog)."
 msgstr[0] ""
-"Als Rücksicherung werden die Postfächer alle %i Minuten überprüft (Dieser "
-"Wert kann über den Einstellungen-Dialog angepasst werden).Als Rücksicherung "
-"werden die Postfächer alle %i Minuten überprüft (Dieser Wert kann über den "
-"Einstellungen-Dialog angepasst werden)."
+"Als Rücksicherung werden diese jede %i Minute überprüft (Dieser Wert kann "
+"über den Einstellungen-Dialog angepasst werden).Als Rücksicherung werden "
+"diese alle %i Minuten überprüft (Dieser Wert kann über den Einstellungen-"
+"Dialog angepasst werden)."
 msgstr[1] ""
-"Als Rücksicherung werden die Postfächer alle %i Minuten überprüft (Dieser "
-"Wert kann über den Einstellungen-Dialog angepasst werden).Als Rücksicherung "
-"werden die Postfächer alle %i Minuten überprüft (Dieser Wert kann über den "
-"Einstellungen-Dialog angepasst werden)."
+"Als Rücksicherung werden diese jede %i Minute überprüft (Dieser Wert kann "
+"über den Einstellungen-Dialog angepasst werden).Als Rücksicherung werden "
+"diese alle %i Minuten überprüft (Dieser Wert kann über den Einstellungen-"
+"Dialog angepasst werden)."
 
-#: src/mn-mailbox.gob:391
+#: src/mn-mailbox.gob:448
 #, fuzzy, c-format
 msgid ""
 "As a fallback, they will be checked approximately every %i minute (this "
@@ -733,111 +877,125 @@ msgid_plural ""
 "As a fallback, they will be checked approximately every %i minutes (this "
 "delay is configurable from the Properties Dialog)."
 msgstr[0] ""
-"Als Rücksicherung werden die Postfächer alle %i Minuten überprüft (Dieser "
-"Wert kann über den Einstellungen-Dialog angepasst werden).Als Rücksicherung "
-"werden die Postfächer alle %i Minuten überprüft (Dieser Wert kann über den "
-"Einstellungen-Dialog angepasst werden)."
+"Als Rücksicherung werden diese jede %i Minute überprüft (Dieser Wert kann "
+"über den Einstellungen-Dialog angepasst werden).Als Rücksicherung werden "
+"diese alle %i Minuten überprüft (Dieser Wert kann über den Einstellungen-"
+"Dialog angepasst werden)."
 msgstr[1] ""
-"Als Rücksicherung werden die Postfächer alle %i Minuten überprüft (Dieser "
-"Wert kann über den Einstellungen-Dialog angepasst werden).Als Rücksicherung "
-"werden die Postfächer alle %i Minuten überprüft (Dieser Wert kann über den "
-"Einstellungen-Dialog angepasst werden)."
+"Als Rücksicherung werden diese jede %i Minute überprüft (Dieser Wert kann "
+"über den Einstellungen-Dialog angepasst werden).Als Rücksicherung werden "
+"diese alle %i Minuten überprüft (Dieser Wert kann über den Einstellungen-"
+"Dialog angepasst werden)."
 
-#: src/mn-mailbox.gob:405
+#: src/mn-mailbox.gob:464
 msgid "A monitoring error has occurred"
 msgstr "Bei der Überwachung ist ein Fehler aufgetreten"
 
-#: src/mn-mailbox.gob:406
-#, fuzzy, c-format
+#: src/mn-mailbox.gob:465
+#, c-format
 msgid ""
 "Mail Notification was unable to enable immediate notification for one or "
 "more mailboxes. %s"
 msgstr ""
-"Die E-Mail-Eingangsüberwachung konnte die automatische Benachrichtigung für "
-"ein oder mehrere Postfächer nicht aktivieren: %s"
+"Die E-Mail-Eingangsüberwachung konnte die umgehende Benachrichtigung für ein "
+"oder mehrere Postfächer nicht aktivieren: %s"
+
+#: src/mn-mailboxes.gob:133
+#, fuzzy
+msgid "Whether one or more of the mailboxes has to be polled"
+msgstr "Legt fest, ob das Postfach manuell überprüft werden soll"
 
-#: src/mn-mailboxes.gob:143
+#: src/mn-mailboxes.gob:266
 #, c-format
 msgid "%s is unsupported: %s"
 msgstr "%s wird nicht unterstützt: %s"
 
-#: src/mn-mailboxes.gob:170
+#: src/mn-mailboxes.gob:297
 #, c-format
 msgid "%s has new mail"
 msgstr "%s hat neue Nachrichten"
 
-#: src/mn-mailboxes.gob:170
+#: src/mn-mailboxes.gob:297
 #, c-format
 msgid "%s has no new mail"
 msgstr "%s hat keine neuen Nachrichten"
 
-#: src/mn-mailboxes.gob:186
+#: src/mn-mailboxes.gob:323
 #, c-format
 msgid "%s reported an error: %s"
 msgstr "%s hat einen Fehler erzeugt: %s"
 
-#: src/mn-maildir-mailbox.gob:109
+#: src/mn-maildir-mailbox.gob:119
 #, c-format
 msgid "unable to open folder \"new\": %s"
 msgstr "Der Ordner »new« konnte nicht geöffnet werden: %s"
 
-#: src/mn-maildir-mailbox.gob:137
+#: src/mn-maildir-mailbox.gob:161
 #, c-format
 msgid "unable to close folder \"new\": %s"
 msgstr "Der Ordner »new« konnte nicht geschlossen werden: %s"
 
-#: src/mn-maildir-mailbox.gob:140
+#: src/mn-maildir-mailbox.gob:164
 #, c-format
 msgid "error while reading folder \"new\": %s"
 msgstr "Fehler beim Lesen des Ordners »new«: %s"
 
-#: src/mn-main.c:85
+#: src/mn-main.c:97
 #, c-format
 msgid "Compiled-in mailbox backends: %s\n"
 msgstr "Eingebaute Postfacharten: %s\n"
 
-#: src/mn-main.c:103
+#: src/mn-main.c:114
 #, c-format
 msgid "Compiled-in features: %s\n"
 msgstr "Eingebaute Programmfähigkeiten: %s\n"
 
-#: src/mn-main.c:133
+#: src/mn-main.c:166
 msgid "Enable informational output"
 msgstr "Ausgabe von Informationen aktivieren"
 
-#: src/mn-main.c:142
+#: src/mn-main.c:175
 msgid "List compiled-in features and exit"
 msgstr "Eingebaute Programmfähigkeiten anzeigen und beenden"
 
-#: src/mn-main.c:151
+#: src/mn-main.c:184
+#, fuzzy
+msgid "Display the mail summary dialog"
+msgstr "Den Info-Dialog anzeigen"
+
+#: src/mn-main.c:193
 msgid "Display the properties dialog"
 msgstr "Den Dialog zum Einstellen der E-Mail-Eingangsüberwachung anzeigen"
 
-#: src/mn-main.c:160
+#: src/mn-main.c:202
 msgid "Display the about dialog"
 msgstr "Den Info-Dialog anzeigen"
 
-#: src/mn-main.c:169
+#: src/mn-main.c:211
+msgid "Close the mail summary popup"
+msgstr ""
+
+#: src/mn-main.c:220
 msgid "Update the mail status"
 msgstr "Nach neuen Nachrichten sehen"
 
-#: src/mn-main.c:178
+#: src/mn-main.c:229
 msgid "Report the mail status"
 msgstr "Den aktuellen Nachrichten anzeigen"
 
-#: src/mn-main.c:187
+#: src/mn-main.c:238
 msgid "Unset obsolete GConf configuration and exit"
-msgstr ""
+msgstr "Veraltete GConf-Konfiguration zurücksetzen und beenden"
 
 #.
 #. * We can't use mn_error_dialog() because gtk_init() has not been
 #. * called yet.
 #.
-#: src/mn-main.c:213
+#: src/mn-main.c:264
 msgid "multi-threading is not available"
 msgstr "Multi-Threading steht nicht zur Verfügung"
 
-#: src/mn-main.c:258
+#: src/mn-main.c:309
 msgid ""
 "Bonobo could not locate the automation object. Please check your Mail "
 "Notification installation."
@@ -845,19 +1003,19 @@ msgstr ""
 "Bonobo konnte das Automatisierungsobjekt nicht finden. Bitte überprüfen Sie "
 "Ihre Installation der E-Mail-Eingangsüberwachung."
 
-#: src/mn-main.c:263
+#: src/mn-main.c:314
 msgid "Unable to initialize the GnomeVFS library."
 msgstr "Die GnomeVFS-Bibliothek konnte nicht initializiert werden."
 
-#: src/mn-main.c:285
+#: src/mn-main.c:350
 msgid "updating the mail status"
 msgstr "Nachrichtenstatus wird aktualisiert"
 
-#: src/mn-main.c:301
+#: src/mn-main.c:368
 msgid "Mail Notification is already running"
 msgstr "Die E-Mail-Eingangsüberwachung ist bereits aktiv"
 
-#: src/mn-main.c:308
+#: src/mn-main.c:375
 msgid ""
 "Bonobo could not locate the GNOME_MailNotification_Automation.server file. "
 "Please check your Mail Notification installation."
@@ -866,7 +1024,7 @@ msgstr ""
 "finden. Bitte überprüfen Sie Ihre Installation der E-Mail-"
 "Eingangsüberwachung."
 
-#: src/mn-main.c:312
+#: src/mn-main.c:379
 msgid ""
 "Bonobo was unable to register the automation server. Please check your Mail "
 "Notification installation."
@@ -874,185 +1032,253 @@ msgstr ""
 "Bonobo konnte den Automatisierungs-Server nicht registrieren.Bitte "
 "überprüfen Sie Ihre Installation der E-Mail-Eingangsüberwachung."
 
-#: src/mn-mbox-mailbox.gob:171
+#: src/mn-mbox-mailbox.gob:221
 #, c-format
 msgid "error while reading mailbox: %s"
 msgstr "Postfach konnte nicht neu geladen werden: %s"
 
-#: src/mn-mbox-mailbox.gob:179
+#: src/mn-mbox-mailbox.gob:230
 #, c-format
 msgid "unable to open mailbox: %s"
 msgstr "Postfach konnte nicht geöffnet werden: %s"
 
-#: src/mn-mh-mailbox.gob:122
+#: src/mn-message-label.gob:77
+msgid "Unreadable message"
+msgstr ""
+
+#: src/mn-message-label.gob:97
+msgid "From"
+msgstr ""
+
+#: src/mn-message-label.gob:98
+msgid "Subject"
+msgstr ""
+
+#: src/mn-message-label.gob:102
+msgid "Sent"
+msgstr ""
+
+#: src/mn-message-label.gob:151
+#, c-format
+msgid "%i second ago"
+msgid_plural "%i seconds ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:155
+#, c-format
+msgid "%i minute ago"
+msgid_plural "%i minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:160
+#, c-format
+msgid "%i hour ago"
+msgid_plural "%i hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:165
+#, c-format
+msgid "%i day ago"
+msgid_plural "%i days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-mime.c:105
+#, fuzzy
+msgid "unable to parse MIME message"
+msgstr "Die Antwort »%s« konnte nicht analysiert werden"
+
+#: src/mn-message.gob:82
+msgid "Unknown"
+msgstr ""
+
+#: src/mn-mh-mailbox.gob:184
 #, c-format
 msgid "error while reading .mh_sequences: %s"
 msgstr "Fehler beim lesen der .mh_sequences: %s"
 
-#: src/mn-mh-mailbox.gob:130
+#: src/mn-mh-mailbox.gob:196
 #, c-format
 msgid "unable to open .mh_sequences: %s"
 msgstr ".mh_sequences konnten nicht geöffnet werden: %s"
 
-#: src/mn-pending-mailbox.gob:33
+#: src/mn-pending-mailbox.gob:35
 msgid "detecting"
 msgstr "ermitteln"
 
-#: src/mn-pi-mailbox-properties.gob:74
+#: src/mn-pi-mailbox-properties.gob:76
 msgid "_Hostname:"
 msgstr "_Server:"
 
-#: src/mn-pi-mailbox-properties.gob:92
+#: src/mn-pi-mailbox-properties.gob:94
 msgid "_Details"
 msgstr "_Details"
 
-#: src/mn-pi-mailbox-properties.gob:104
+#: src/mn-pi-mailbox-properties.gob:106
 msgid "sta_ndard"
 msgstr "Sta_ndard"
 
-#: src/mn-pi-mailbox-properties.gob:114
+#: src/mn-pi-mailbox-properties.gob:116
 msgid "_in-band SSL/TLS"
-msgstr ""
+msgstr "_band-internes SSL/TLS"
 
-#: src/mn-pi-mailbox-properties.gob:124
+#: src/mn-pi-mailbox-properties.gob:126
 msgid "SSL/TLS on sepa_rate port"
-msgstr ""
+msgstr "SSL/TLS über e_xtra Port"
 
-#: src/mn-pop3-mailbox-properties.gob:84
+#: 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:85
+#: 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:86
+#: src/mn-pop3-mailbox-properties.gob:88
 msgid "Your password on the POP3 server"
 msgstr "Ihr Passwort für diesen POP3-Server"
 
-#: src/mn-pop3-mailbox-properties.gob:87 src/mn-pop3-mailbox-properties.gob:88
+#: 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"
 
-#: src/mn-pop3-mailbox.gob:256
+#: src/mn-pop3-mailbox.gob:271
 msgid "invalid arguments for the LOGIN-DELAY capability"
 msgstr "Ungültige Argumente für die Anmeldeverzögerung"
 
-#: src/mn-pop3-mailbox.gob:523
+#: src/mn-pop3-mailbox.gob:536
+#, fuzzy
+msgid "unknown error"
+msgstr "Unbekannter Server-Fehler"
+
+#: src/mn-pop3-mailbox.gob:666
 #, c-format
 msgid "honouring LOGIN-DELAY, sleeping for %i second"
 msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds"
 msgstr[0] ""
-"Anmeldeverzögerung wird berücksichtigt, es wird für eine Sekunde gewartet"
-msgstr[1] ""
-"Anmeldeverzögerung wird berücksichtigt, es wird für %i Sekunden gewartet"
+"Anmeldeverzögerung wird berücksichtigt, es wird für eine Sekunde "
+"gewartetAnmeldeverzögerung wird berücksichtigt, es wird für %i Sekunden "
+"gewartet"
 
-#: src/mn-pop3-mailbox.gob:682
+#: src/mn-pop3-mailbox.gob:831
 msgid "server does not support APOP authentication"
 msgstr "Der Server unterstütz eine Authentifizierung per APOP nicht."
 
-#: src/mn-pop3-mailbox.gob:710
+#: src/mn-pop3-mailbox.gob:859
 msgid "falling back to APOP authentication"
 msgstr "Es wird auf Authentifizierung mit APOP zurück gegriffen."
 
-#: src/mn-pop3-mailbox.gob:715
+#: src/mn-pop3-mailbox.gob:864
 msgid "falling back to USER/PASS authentication"
 msgstr ""
 "Es wird auf Authentifizierung per Nutzername und Passwort zurück gegriffen."
 
-#: src/mn-properties.c:151
+#: src/mn-properties.c:161
+#, fuzzy
+msgid "top left"
+msgstr "Vollständig"
+
+#: src/mn-properties.c:162
+msgid "top right"
+msgstr ""
+
+#: src/mn-properties.c:163
+msgid "bottom left"
+msgstr ""
+
+#: src/mn-properties.c:164
+msgid "bottom right"
+msgstr ""
+
+#: src/mn-properties.c:240
 msgid "No mailbox selected."
 msgstr "Kein Postfach ausgewählt."
 
-#: src/mn-properties.c:156
+#: src/mn-properties.c:245
 #, 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:204
-msgid "A command error has occurred"
-msgstr "Es ist ein Fehler beim Ausführen des Befehls aufgetreten"
+#: src/mn-shell.gob:84
+msgid "You have new mail."
+msgstr "Sie haben neue Nachrichten."
 
-#: src/mn-shell.gob:205
-#, c-format
-msgid "Unable to execute double-clicked command: %s."
+#: src/mn-shell.gob:96
+msgid "A command error has occurred in Mail Notification"
 msgstr ""
-"Der Befehl für einen Symboldoppelklick konnte nicht ausgeführt werden: %s."
+"Es ist ein Fehler beim Ausführen eines Befehls in der E-Mail-"
+"Eingangsüberwachung aufgetreten."
 
-#: src/mn-shell.gob:292
+#: src/mn-shell.gob:97
+#, c-format
+msgid "Unable to execute new mail command: %s."
+msgstr "Der Befehl für neue E-Mails konnte nicht ausgeführt werden: %s."
+
+#: src/mn-shell.gob:270
 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:296
+#: src/mn-shell.gob:274
 msgid "You have no new mail."
 msgstr "Sie haben keine neuen Nachrichten."
 
-#: src/mn-shell.gob:299
+#: src/mn-shell.gob:277
 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:304
+#: src/mn-shell.gob:282
 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 "You have new mail."
-msgstr "Sie haben neue Nachrichten."
-
-#: src/mn-shell.gob:330
-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-shell.gob:331
-#, c-format
-msgid "Unable to execute new mail command: %s."
-msgstr "Der Befehl für neue E-Mails konnte nicht ausgeführt werden: %s."
-
 #: src/mn-ssl.c:79
-#, fuzzy
 msgid "unknown SSL/TLS error"
-msgstr "Unbekannter Server-Fehler"
+msgstr "Unbekannter SSL/TLS-Fehler"
 
 #: src/mn-stock.c:28
 msgid "Select _All"
 msgstr "_Alles auswählen"
 
-#: src/mn-sylpheed-mailbox.gob:93
+#: src/mn-stock.c:29
+msgid "_Mail Summary"
+msgstr ""
+
+#: src/mn-sylpheed-mailbox.gob:122
 #, c-format
 msgid "unable to open folder: %s"
 msgstr "Ordner konnte nicht geöffnet werden: %s"
 
-#: src/mn-sylpheed-mailbox.gob:127
+#: src/mn-sylpheed-mailbox.gob:180
 #, c-format
 msgid "unable to close folder: %s"
 msgstr "Ordner konnte nicht geschlossen werden: %s"
 
-#: src/mn-sylpheed-mailbox.gob:130
+#: src/mn-sylpheed-mailbox.gob:183
 #, c-format
 msgid "error while reading folder: %s"
 msgstr "Fehler beim Lesen von Ordner: %s"
 
-#: src/mn-system-mailbox-properties.gob:32 src/mn-uri.gob:391
+#: src/mn-system-mailbox-properties.gob:34 src/mn-uri.gob:393
 msgid "System Mailbox"
 msgstr "Systempostfach"
 
-#: src/mn-system-mailbox-properties.gob:55
+#: src/mn-system-mailbox-properties.gob:57
 #, c-format
 msgid "Your system mailbox (<span weight=\"bold\">%s</span>) will be used."
 msgstr ""
 "Es wird Ihr Systempostfach (<span weight=\"bold\">%s</span>) verwendet."
 
-#: src/mn-system-mailbox-properties.gob:62
+#: src/mn-system-mailbox-properties.gob:64
 msgid ""
 "The location of your system mailbox could not be detected. Please set the "
 "MAIL environment variable."
@@ -1060,47 +1286,61 @@ msgstr ""
 "Der Ort Ihres Systempostfachs wurde nicht erkannt. Bitte setzen Sie die "
 "Umgebungsvariable »MAIL«."
 
-#: src/mn-unsupported-mailbox.gob:31
+#: src/mn-unsupported-mailbox.gob:33
 msgid "The reason why the mailbox is unsupported"
 msgstr "Der Grund weshalb dieses Postfach nicht unerstützt wird"
 
-#: src/mn-unsupported-mailbox.gob:38
+#: src/mn-unsupported-mailbox.gob:40
 msgid "unsupported"
 msgstr "nicht unterstützt"
 
-#: src/mn-util.c:199
+#: src/mn-util.c:233
 #, c-format
 msgid "error loading image: %s"
 msgstr "Bild konnte nicht geladen werden: %s"
 
-#: src/mn-util.c:237
-#, c-format
-msgid "widget %s not found in interface %s"
+#: src/mn-util.c:271
+#, fuzzy, c-format
+msgid "widget \"%s\" not found in interface \"%s\""
 msgstr "Widget %s konnte nicht in Interface %s gefunden werden"
 
-#: src/mn-util.c:355
+#: src/mn-util.c:385
 msgid "received an invalid URI list"
 msgstr "Es wurde eine ungültige Adressliste erhalten"
 
-#: src/mn-util.c:391
+#: src/mn-util.c:421
 msgid "received an invalid Mozilla URL"
 msgstr "Es wurde eine ungültige Mozilla-Adresse erhalten"
 
-#: src/mn-util.c:484
+#: src/mn-util.c:514
 msgid "Unable to display help"
 msgstr "Die Hilfe kann nicht angezeigt werden"
 
-#: src/mn-util.c:498
+#: src/mn-util.c:528
 #, c-format
 msgid "Unable to create a thread: %s."
 msgstr "Es konnte kein Thread erzeugt werden: %s."
 
-#: src/mn-util.c:701
+#: src/mn-util.c:705
+msgid "_Do not show this message again"
+msgstr ""
+
+#: src/mn-util.c:789
 msgid "A fatal error has occurred in Mail Notification"
 msgstr ""
 "Ein schwerwiegender Fehler ist beim Ausführen der E-Mail-Eingangsüberwachung "
 "aufgetreten"
 
+#: src/mn-util.c:804
+#, fuzzy, c-format
+msgid "unable to get current time: %s"
+msgstr "Es konnte keine Verbindung mit %s hergestellt werden"
+
+#: src/mn-util.c:887
+#, c-format
+msgid "invalid signal specification \"%s\""
+msgstr ""
+
 #: ui/mailbox-properties.glade.h:1
 msgid "_Mailbox type:"
 msgstr "_Art des Postfachs:"
@@ -1114,95 +1354,155 @@ msgid "*"
 msgstr "*"
 
 #: ui/properties.glade.h:3
-msgid "<span weight=\"bold\">Commands</span>"
-msgstr "<span weight=\"bold\">Befehle</span>"
-
-#: ui/properties.glade.h:4
 msgid "<span weight=\"bold\">General</span>"
 msgstr "<span weight=\"bold\">Allgemein</span>"
 
-#: ui/properties.glade.h:5
-msgid "<span weight=\"bold\">Mailboxes</span>"
+#: ui/properties.glade.h:4
+#, fuzzy
+msgid "<span weight=\"bold\">Mailbox List</span>"
 msgstr "<span weight=\"bold\">Postfächer</span>"
 
+#: ui/properties.glade.h:5
+#, fuzzy
+msgid "<span weight=\"bold\">Position</span>"
+msgstr "<span weight=\"bold\">Befehle</span>"
+
 #: ui/properties.glade.h:6
+msgid "General"
+msgstr ""
+
+#: ui/properties.glade.h:7
+msgid "Hori_zontal offset:"
+msgstr ""
+
+#: ui/properties.glade.h:8
 msgid "Mail Notification Properties"
 msgstr "Einstellung der E-Mail-Eingangsüberwachung"
 
-#: ui/properties.glade.h:7
+#: ui/properties.glade.h:9
+msgid "Mail Summary Popup"
+msgstr ""
+
+#: ui/properties.glade.h:10
+#, fuzzy
+msgid "Mailboxes"
+msgstr "Postfach"
+
+#: ui/properties.glade.h:11
+#, fuzzy
+msgid "P_osition:"
+msgstr "_Ort:"
+
+#: ui/properties.glade.h:12
+#, fuzzy
+msgid "The amount of time to wait before closing the mail summary popup"
+msgstr "Die Zeit die zwischen zwei Überprüfungen auf neue Nachrichten vergeht"
+
+#: ui/properties.glade.h:13
 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:8
+#: ui/properties.glade.h:14
 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:9
-msgid "The command to run when the icon is double-clicked"
+#: ui/properties.glade.h:15
+msgid ""
+"The number of pixels to leave between the left or right side of the screen "
+"and the mail summary popup"
 msgstr ""
-"Geben Sie hier den Befehl ein, der ausgeführt wird sobald das "
-"Benachrichtigungssymbol doppelt angeklickt wird."
 
-#: ui/properties.glade.h:10
-msgid "When _new mail arrives:"
-msgstr "Wenn neue Nachricht _eintrifft:"
+#: ui/properties.glade.h:16
+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:11
-msgid "When double-click_ed:"
-msgstr "Wenn _doppelt angeklickt:"
+#: ui/properties.glade.h:17
+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:12
+#: ui/properties.glade.h:18
 #, fuzzy
-msgid "Whether the status icon should blink on errors or not"
-msgstr "Legt fest, ob das Bild blinkt oder nicht"
+msgid "Whether to automatically close the mail summary popup or not"
+msgstr "Legt fest, ob das Postfach neue Nachrichten enthält"
 
-#: ui/properties.glade.h:13
-msgid "Whether to run a command when new mail arrives or not"
+#: ui/properties.glade.h:19
+#, fuzzy
+msgid "Whether to display the mail summary popup 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:14
-msgid "Whether to run a command when the icon is double-clicked or not"
+#: ui/properties.glade.h:20
+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 das Benachrichtigungssymbol doppelt angeklickt wird."
+"ausgeführt wird, sobald eine neue Nachricht eintrifft."
 
-#: ui/properties.glade.h:15
-#, fuzzy
+#: ui/properties.glade.h:21
 msgid ""
 "Whether to start Mail Notification when you log into your GNOME session or "
 "not"
 msgstr ""
-"Legt fest, ob die E-Mail-Eingangsüberwachnung schon einmal gestartet wurde."
+"Wenn diese Option ausgewählt ist, wird die E-Mail-Eingangsüberwachnung beim "
+"Starten von GNOME ebenfalls gestartet."
 
-#: ui/properties.glade.h:16
-msgid "_Blink on errors"
+#: ui/properties.glade.h:22
+msgid "_Automatically close after:"
 msgstr ""
 
-#: ui/properties.glade.h:17
+#: ui/properties.glade.h:23
+msgid "_Blink on errors"
+msgstr "_Bei Fehler blinken"
+
+#: ui/properties.glade.h:24
 msgid "_Delay between mail checks:"
 msgstr "_Nach neuen Nachrichten sehen alle:"
 
-#: ui/properties.glade.h:18
+#: ui/properties.glade.h:25
+msgid "_Enable mail summary popup"
+msgstr ""
+
+#: ui/properties.glade.h:26
 #, fuzzy
+msgid "_Run a command when new mail arrives:"
+msgstr "Einen Befehl ausführen, wenn eine neue Nachricht eintrifft"
+
+#: ui/properties.glade.h:27
 msgid "_Start Mail Notification on GNOME login"
+msgstr "_Laden beim Starten von  GNOME"
+
+#: ui/properties.glade.h:28
+msgid "_Vertical offset:"
 msgstr ""
-"Ein Benachrichtigungssymbol das erscheint, wenn neue Nachrichten in Ihren "
-"Postfächern liegen."
 
-#: ui/properties.glade.h:19
+#: ui/properties.glade.h:29
 msgid "minutes"
 msgstr "Minuten"
 
-#: ui/properties.glade.h:20
+#: ui/properties.glade.h:30
+msgid "pixels"
+msgstr ""
+
+#: ui/properties.glade.h:31
 msgid "seconds"
 msgstr "Sekunden"
 
-#: ui/welcome.glade.h:1
+#: 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>"
+msgstr "<span weight=\"bold\">Postfächer</span>"
+
+#: ui/welcome.glade.h:1
 msgid ""
 "<span weight=\"bold\" size=\"larger\">First startup</span>\n"
 "\n"
@@ -1228,7 +1528,9 @@ msgstr ""
 "Eingangsüberwachnung zu einem später Zeitpunkt einzustellen, starten Sie "
 "bitte  <span weight=\"bold\">Anwendungen</span> → <span weight=\"bold"
 "\">Desktop-Einstellungen</span> → <span weight=\"bold\">E-Mail-"
-"Eingangsüberwachnung</span>."
+"Eingangsüberwachnung</span> (auf einigen Systemen auch <span weight=\"bold"
+"\">Anwendungen → Präferenzen → erweiterte Präferenzen → E-Mail-"
+"Eingansüberwachung</span>)."
 
 #: ui/welcome.glade.h:8
 msgid "_Configure Mail Notification"
@@ -1238,11 +1540,28 @@ msgstr "Die E-Mail-Eingangsüberwachung anpassen"
 msgid "_Skip configuration"
 msgstr "Konfiguration über_springen"
 
-#~ msgid "unable to parse Gmail URI"
-#~ msgstr "Die Gmail-Adresse konnte nicht analysiert werden"
+#~ msgid "Double-clicked command"
+#~ msgstr "Auszuführender Befehl bei Doppelklick"
 
-#~ msgid "unable to parse IMAP URI"
-#~ msgstr "Die IMAP-Adresse konnte nicht analysiert werden"
+#~ msgid "Run a command when the icon is double-clicked"
+#~ msgstr ""
+#~ "Einen Befehl ausführen, wenn das Nachrichtensymbol doppelt angeklickt wird"
+
+#~ msgid "The command to run when the icon is double-clicked."
+#~ msgstr ""
+#~ "Der Befehl der ausgeführt wird, wenn das Nachrichtensymbol doppelt "
+#~ "angeklickt wird."
+
+#~ msgid "Whether to run a command when the icon is double-clicked or not."
+#~ msgstr ""
+#~ "Legt fest, ob ein Befehl ausgeführt wird, wenn das Nachrichtensymbol "
+#~ "doppelt angeklickt wird."
+
+#~ msgid "_Run %s"
+#~ msgstr "%s a_usführen"
+
+#~ msgid "_Run Default Action"
+#~ msgstr "_Standard Aktion ausführen"
 
 #~ msgid ""
 #~ "As a fallback, they will be checked approximately every %i minute (this "
@@ -1250,14 +1569,31 @@ msgstr "Konfiguration über_springen"
 #~ "will be checked approximately every %i minutes (this delay is "
 #~ "configurable from the Properties Dialog)."
 #~ msgstr ""
-#~ "Als Rücksicherung werden die Postfächer durchschnittlich alle %i Minuten "
-#~ "überprüft (Dieser Wert kann über den Einstellungen-Dialog angepasst "
-#~ "werden).Als Rücksicherung werden die Postfächer durchschnittlich alle %i "
-#~ "Minuten überprüft (Dieser Wert kann über den Einstellungen-Dialog "
-#~ "angepasst werden)."
+#~ "Als Rücksicherung werden diese in etwa jede %i Minute überprüft (Dieser "
+#~ "Wert kann über den Einstellungen-Dialog angepasst werden).Als "
+#~ "Rücksicherung werden diese in etwa alle %i Minuten überprüft (Dieser Wert "
+#~ "kann über den Einstellungen-Dialog angepasst werden)."
+
+#~ msgid "A command error has occurred"
+#~ msgstr "Es ist ein Fehler beim Ausführen des Befehls aufgetreten"
+
+#~ msgid "Unable to execute double-clicked command: %s."
+#~ msgstr ""
+#~ "Der Befehl für einen Symboldoppelklick konnte nicht ausgeführt werden: %s."
+
+#~ msgid "The command to run when the icon is double-clicked"
+#~ msgstr ""
+#~ "Geben Sie hier den Befehl ein, der ausgeführt wird sobald das "
+#~ "Benachrichtigungssymbol doppelt angeklickt wird."
+
+#~ msgid "When _new mail arrives:"
+#~ msgstr "Wenn neue Nachricht _eintrifft:"
 
-#~ msgid "_SSL"
-#~ msgstr "_SSL"
+#~ msgid "When double-click_ed:"
+#~ msgstr "Wenn _doppelt angeklickt:"
 
-#~ msgid "unable to parse POP3 URI"
-#~ msgstr "POP3-Adresse konnte nicht analysiert werden"
+#~ msgid "Whether to run a command when the icon is double-clicked or not"
+#~ msgstr ""
+#~ "Wenn diese Option ausgewählt ist, können Sie einen Befehl angeben der "
+#~ "ausgeführt wird, sobald das Benachrichtigungssymbol doppelt angeklickt "
+#~ "wird."
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.6.2\n"
+"Project-Id-Version: mail-notification 0.7.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2004-09-09 01:43+0200\n"
-"PO-Revision-Date: 2004-09-09 01:37+0200\n"
+"POT-Creation-Date: 2004-10-06 19:31+0200\n"
+"PO-Revision-Date: 2004-10-06 19:26+0200\n"
 "Last-Translator: Jean-Yves Lefort <jylefort@brutele.be>\n"
 "Language-Team: Jean-Yves Lefort <jylefort@brutele.be>\n"
 "MIME-Version: 1.0\n"
@@ -33,8 +33,8 @@ 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:38
-#: src/mn-mail-icon.gob:160 src/mn-main.c:221
+#: data/mail-notification.soundlist.in.h:1 src/mn-about-dialog.gob:40
+#: src/mn-mail-icon.gob:163 src/mn-main.c:272
 msgid "Mail Notification"
 msgstr "Notification de Courrier"
 
@@ -43,74 +43,121 @@ msgid "Get notified when new mail arrives"
 msgstr "Etre notifié lorsque du nouveau courrier arrive"
 
 #: data/mail-notification.schemas.in.h:1
+msgid "Automatically close the mail summary popup"
+msgstr "Fermer automatiquement le popup d'aperçu du courrier"
+
+#: data/mail-notification.schemas.in.h:2
 msgid "Blink on errors"
 msgstr "Clignoter lors d'erreurs"
 
-#: data/mail-notification.schemas.in.h:2
+#: data/mail-notification.schemas.in.h:3
 msgid "Delay between mail checks (minutes part)."
 msgstr "Délai entre les vérifications de courrier (partie minutes)."
 
-#: data/mail-notification.schemas.in.h:3
+#: data/mail-notification.schemas.in.h:4
 msgid "Delay between mail checks (seconds part)."
 msgstr "Délai entre les vérifications de courrier (partie secondes)."
 
-#: data/mail-notification.schemas.in.h:4
-msgid "Double-clicked command"
-msgstr "Commande associée au double-click"
-
 #: data/mail-notification.schemas.in.h:5
+msgid "Do not show the immediate notification error dialog"
+msgstr ""
+"Ne pas afficher la boîte de dialogue contenant l'erreur de notification "
+"immédiate"
+
+#: data/mail-notification.schemas.in.h:6
+msgid "Enable mail summary popup"
+msgstr "Activer le popup d'aperçu du courrier"
+
+#: data/mail-notification.schemas.in.h:7
 msgid "Fingerprints of trusted X509 certificates"
 msgstr "Empreintes digitales des certificats X509 de confiance"
 
-#: data/mail-notification.schemas.in.h:6
+#: data/mail-notification.schemas.in.h:8
 msgid "Has already been run"
 msgstr "A déjà été exécuté"
 
-#: data/mail-notification.schemas.in.h:7
+#: data/mail-notification.schemas.in.h:9
+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
 msgid "Height of properties dialog"
 msgstr "Hauteur de la boîte de dialogue contenant les propriétés"
 
-#: data/mail-notification.schemas.in.h:8
-msgid "Mailboxes list"
+#: data/mail-notification.schemas.in.h:11
+msgid "Mail summary popup horizontal offset"
+msgstr "Décalage horizontal du popup d'aperçu du courrier"
+
+#: data/mail-notification.schemas.in.h:12
+msgid "Mail summary popup position"
+msgstr "Position du popup d'aperçu du courrier"
+
+#: data/mail-notification.schemas.in.h:13
+msgid "Mail summary popup vertical offset"
+msgstr "Décalage vertical du popup d'aperçu du courrier"
+
+#: data/mail-notification.schemas.in.h:14
+msgid "Mailbox list"
 msgstr "Liste des boîtes aux lettres"
 
-#: data/mail-notification.schemas.in.h:9
+#: data/mail-notification.schemas.in.h:15
 msgid "Minutes between mail checks"
 msgstr "Minutes entre les vérifications de courrier"
 
-#: data/mail-notification.schemas.in.h:10
+#: data/mail-notification.schemas.in.h:16
+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:17
 msgid "New mail command"
 msgstr "Commande de nouveau message"
 
-#: data/mail-notification.schemas.in.h:11
+#: data/mail-notification.schemas.in.h:18
 msgid "Run a command when new mail arrives"
 msgstr "Exécuter une commande lorsque du nouveau courrier arrive"
 
-#: data/mail-notification.schemas.in.h:12
-msgid "Run a command when the icon is double-clicked"
-msgstr "Exécuter une commande lorsque l'îcone est double-cliquée"
-
-#: data/mail-notification.schemas.in.h:13
+#: data/mail-notification.schemas.in.h:19
 msgid "Seconds between mail checks"
 msgstr "Secondes entre les vérifications de courrier"
 
-#: data/mail-notification.schemas.in.h:14
+#: data/mail-notification.schemas.in.h:20
+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:21
+msgid ""
+"The amount of time to wait before closing the mail summary popup (minutes "
+"part)."
+msgstr ""
+"La quantité de temps à attendre avant de fermer le popup d'aperçu du "
+"courrier (partie minutes)."
+
+#: data/mail-notification.schemas.in.h:22
+msgid ""
+"The amount of time to wait before closing the mail summary popup (seconds "
+"part)."
+msgstr ""
+"La quantité de temps à attendre avant de fermer le popup d'aperçu du "
+"courrier (partie secondes)."
+
+#: data/mail-notification.schemas.in.h:23
 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:15
-msgid "The command to run when the icon is double-clicked."
-msgstr "La commande à exécuter lorsque l'îcone est double-cliquée."
+#: data/mail-notification.schemas.in.h:24
+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:16
+#: data/mail-notification.schemas.in.h:25
 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:17
+#: data/mail-notification.schemas.in.h:26
 msgid "The list of mailboxes to monitor."
 msgstr "La liste des boîtes aux lettres à surveiller."
 
-#: data/mail-notification.schemas.in.h:18
+#: data/mail-notification.schemas.in.h:27
 msgid ""
 "The list of trusted SSL/TLS servers (hostname:port) lacking a X509 "
 "certificate."
@@ -118,40 +165,87 @@ msgstr ""
 "La liste des serveurs SSL/TLS (hôte:port) de confiance auxquels il manque un "
 "certificat X509."
 
-#: data/mail-notification.schemas.in.h:19
+#: data/mail-notification.schemas.in.h:28
 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:20
+#: data/mail-notification.schemas.in.h:29
+msgid ""
+"The number of pixels to leave between the left or right side of the screen "
+"and the mail summary popup."
+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:30
+msgid ""
+"The number of pixels to leave between the top or bottom side of the screen "
+"and the mail summary popup."
+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:31
+msgid ""
+"The position of the mail summary popup. Must be \"top-left\", \"top-right\", "
+"\"bottom-left\" or \"bottom-right\"."
+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:32
+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:33
 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:21
+#: data/mail-notification.schemas.in.h:34
 msgid "Trusted servers list"
 msgstr "Liste des serveurs de confiance"
 
-#: data/mail-notification.schemas.in.h:22
+#: data/mail-notification.schemas.in.h:35
 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:23
+#: data/mail-notification.schemas.in.h:36
 msgid "Whether the status icon should blink on errors or not."
 msgstr "Si l'icône de status doit clignoter lors d'erreurs ou pas."
 
-#: data/mail-notification.schemas.in.h:24
+#: data/mail-notification.schemas.in.h:37
+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:38
+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:39
+msgid ""
+"Whether to prevent the immediate notification error dialog from being "
+"displayed or not."
+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:40
 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:25
-msgid "Whether to run a command when the icon is double-clicked or not."
-msgstr ""
-"Si une commande doit être exécutée lorsque l'îcone est double-cliquée ou pas."
+#: data/mail-notification.schemas.in.h:41
+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:26
+#: data/mail-notification.schemas.in.h:42
 msgid "Width of properties dialog"
 msgstr "Largeur de la boîte de dialogue contenant les propriétés"
 
@@ -167,131 +261,118 @@ msgstr "Orientation"
 msgid "The orientation of the tray."
 msgstr "L'orientation du plateau."
 
-#: src/mn-about-dialog.gob:41
+#: src/mn-about-dialog.gob:43
 msgid "A Mail Notification Icon"
 msgstr "Une Icône de Notification de Courrier"
 
-#: src/mn-about-dialog.gob:44
+#. translator: replace with your name and email
+#: src/mn-about-dialog.gob:47
 msgid "Jean-Yves Lefort <jylefort@brutele.be>"
 msgstr "Jean-Yves Lefort <jylefort@brutele.be>"
 
-#: src/mn-auth-combo-box.gob:99 src/mn-autodetect-mailbox-properties.gob:35
+#: src/mn-auth-combo-box.gob:101 src/mn-autodetect-mailbox-properties.gob:37
 msgid "<span style=\"italic\">autodetect</span>"
 msgstr "<span style=\"italic\">autodétecter</span>"
 
-#: src/mn-autodetect-mailbox-properties.gob:66
+#: src/mn-autodetect-mailbox-properties.gob:68
 msgid "_Location:"
 msgstr "_Emplacement:"
 
-#: src/mn-autodetect-mailbox-properties.gob:72
+#: src/mn-autodetect-mailbox-properties.gob:74
 msgid "_Browse..."
 msgstr "_Parcourir..."
 
-#: src/mn-autodetect-mailbox-properties.gob:79
+#: src/mn-autodetect-mailbox-properties.gob:81
 msgid "The URI of the mailbox"
 msgstr "L'URI de la boîte aux lettres"
 
-#: src/mn-autodetect-mailbox-properties.gob:116
+#: src/mn-autodetect-mailbox-properties.gob:118
 msgid "Select a File or Folder"
 msgstr "Sélectionnez un Fichier ou Dossier"
 
-#: src/mn-blinking-image.gob:30
+#: src/mn-blinking-image.gob:32
 msgid "Whether the image is blinking or not"
 msgstr "Si l'image clignote ou pas"
 
-#: src/mn-client-session.c:196 src/mn-client-session.c:203
-#, c-format
-msgid "unable to read from server: %s"
-msgstr "impossible de lire depuis le serveur: %s"
-
-#: src/mn-client-session.c:201
-msgid "unable to read from server: EOF"
-msgstr "impossible de lire depuis le serveur: EOF"
-
-#: src/mn-client-session.c:213
-#, 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:284
+#: src/mn-client-session.c:229
 #, c-format
 msgid "resolving %s"
 msgstr "résolution de %s en cours"
 
-#: src/mn-client-session.c:294
+#: src/mn-client-session.c:239
 #, c-format
 msgid "unable to resolve %s: %s"
 msgstr "impossible de résoudre %s: %s"
 
-#: src/mn-client-session.c:331
+#: src/mn-client-session.c:276
 #, c-format
 msgid "%s: unsupported address family"
 msgstr "%s: famille d'adresse non prise en charge"
 
-#: src/mn-client-session.c:338
+#: src/mn-client-session.c:283
 #, c-format
 msgid "%s: unable to create socket: %s"
 msgstr "%s: impossible de créer un soquet: %s"
 
-#: src/mn-client-session.c:342
+#: src/mn-client-session.c:287
 #, c-format
 msgid "connecting to %s (%s) port %i"
 msgstr "connection à %s (%s) port %i en cours"
 
-#: src/mn-client-session.c:345
+#: src/mn-client-session.c:290
 #, c-format
 msgid "unable to connect: %s"
 msgstr "impossible de se connecter: %s"
 
-#: src/mn-client-session.c:350
+#: src/mn-client-session.c:295
 msgid "connected successfully"
 msgstr "connecté avec succès"
 
 #. if reached, we couldn't find a working address
-#: src/mn-client-session.c:356
+#: src/mn-client-session.c:301
 #, c-format
 msgid "unable to connect to %s"
 msgstr "impossible de se connecter à %s"
 
-#: src/mn-client-session.c:372
+#: src/mn-client-session.c:317
 #, c-format
 msgid "unable to initialize the OpenSSL library: %s"
 msgstr "impossible d'initialiser la bibliothèque OpenSSL: %s"
 
-#: src/mn-client-session.c:380
+#: src/mn-client-session.c:325
 #, c-format
 msgid "unable to create a SSL/TLS object: %s"
 msgstr "impossible de créer un objet SSL/TLS: %s"
 
-#: src/mn-client-session.c:386
+#: src/mn-client-session.c:331
 #, c-format
 msgid "unable to set the SSL/TLS file descriptor: %s"
 msgstr "impossible de spécifier le descripteur de fichier SSL/TLS: %s"
 
-#: src/mn-client-session.c:392
+#: src/mn-client-session.c:337
 #, c-format
 msgid "unable to perform the SSL/TLS handshake: %s"
 msgstr "impossible d'accomplir la négotiation SSL/TLS: %s"
 
-#: src/mn-client-session.c:398
+#: src/mn-client-session.c:343
 msgid "untrusted server"
 msgstr "serveur non fiable"
 
-#: src/mn-client-session.c:402
+#: src/mn-client-session.c:347
 #, c-format
 msgid "a SSL/TLS layer is now active (%s, %s %i-bit)"
 msgstr "une couche SSL/TLS est maintenant active (%s, %s %i-bit)"
 
-#: src/mn-client-session.c:449
+#: src/mn-client-session.c:394
 #, c-format
 msgid "%s, fingerprint: %s"
 msgstr "%s, empreinte digitale: %s"
 
-#: src/mn-client-session.c:478
+#: src/mn-client-session.c:423
 msgid "missing certificate"
 msgstr "certificat manquant"
 
-#: src/mn-client-session.c:504
+#: src/mn-client-session.c:449
 #, c-format
 msgid ""
 "Mail Notification was unable to trust \"%s\" (%s). It is possible that "
@@ -310,99 +391,113 @@ msgstr ""
 "vous êtes connecté à \"%s\". Si vous choisissez de vous connecter au "
 "serveur, ce message ne sera plus affiché."
 
-#: src/mn-client-session.c:521
+#: src/mn-client-session.c:466
 msgid "Connect to untrusted server?"
 msgstr "Se connecter au serveur non fiable?"
 
-#: src/mn-client-session.c:526
+#: src/mn-client-session.c:471
 msgid "Co_nnect"
 msgstr "Se co_nnecter"
 
-#: src/mn-client-session.c:584
+#: src/mn-client-session.c:527
 #, c-format
 msgid "response \"%s\" is not valid in current context"
 msgstr "la réponse \"%s\" n'est pas valable dans le contexte actuel"
 
-#: src/mn-client-session.c:610
+#: src/mn-client-session.c:553
 #, c-format
 msgid "unable to parse response \"%s\""
 msgstr "impossible d'interpréter la réponse \"%s\""
 
-#: src/mn-client-session.c:657
+#: src/mn-client-session.c:592 src/mn-client-session.c:599
+#, c-format
+msgid "unable to read from server: %s"
+msgstr "impossible de lire depuis le serveur: %s"
+
+#: src/mn-client-session.c:597
+msgid "unable to read from server: EOF"
+msgstr "impossible de lire depuis le serveur: EOF"
+
+#: src/mn-client-session.c:609
+#, 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
 #, 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:688 src/mn-client-session.c:695
+#: src/mn-client-session.c:777 src/mn-client-session.c:784
 #, c-format
 msgid "unable to write to server: %s"
 msgstr "impossible d'écrire vers le serveur: %s"
 
-#: src/mn-client-session.c:693
+#: src/mn-client-session.c:782
 msgid "unable to write to server: EOF"
 msgstr "impossible d'écrire vers le serveur: EOF"
 
-#: src/mn-client-session.c:725
+#: src/mn-client-session.c:814
 #, c-format
 msgid "unable to encode Base64: %s"
 msgstr "impossible d'encoder en Base64: %s"
 
-#: src/mn-client-session.c:828
+#: src/mn-client-session.c:917
 #, c-format
 msgid "unable to initialize the SASL library: %s"
 msgstr "impossible d'initialiser la bibliothèque SASL: %s"
 
-#: src/mn-client-session.c:837
+#: src/mn-client-session.c:926
 #, c-format
 msgid "unable to retrieve local address of socket: %s"
 msgstr "impossible d'obtenir l'adresse locale du soquet: %s"
 
-#: src/mn-client-session.c:843
+#: src/mn-client-session.c:932
 #, c-format
 msgid "unable to retrieve remote address of socket: %s"
 msgstr "impossible d'obtenir l'adresse distante du soquet: %s"
 
-#: src/mn-client-session.c:877
+#: src/mn-client-session.c:966
 #, 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:916
+#: src/mn-client-session.c:1005
 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:920
+#: src/mn-client-session.c:1009
 #, c-format
 msgid "unable to start SASL authentication: %s"
 msgstr "impossible de démarrer l'authentification SASL: %s"
 
-#: src/mn-client-session.c:924
+#: src/mn-client-session.c:1013
 #, c-format
 msgid "unable to create a SASL connection: %s"
 msgstr "impossible de créer une connection SASL: %s"
 
-#: src/mn-client-session.c:974
+#: src/mn-client-session.c:1063
 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:978
+#: src/mn-client-session.c:1067
 #, c-format
 msgid "%s, aborting SASL authentication"
 msgstr "%s, annulation de l'authentification SASL"
 
 #. compliance error
-#: src/mn-client-session.c:983
+#: src/mn-client-session.c:1072
 #, 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:986
+#: src/mn-client-session.c:1075
 msgid ""
 "the server sent a SASL challenge, but there was a pending initial SASL "
 "client response"
@@ -410,7 +505,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:1000
+#: src/mn-client-session.c:1089
 msgid ""
 "the server did not send a SASL challenge, but there was no pending initial "
 "SASL client response"
@@ -418,136 +513,188 @@ 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:1023
+#: src/mn-client-session.c:1112
 #, 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:1028
+#: src/mn-client-session.c:1117
 #, 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:1034
+#: src/mn-client-session.c:1123
 #, 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:109
+#: src/mn-conf.c:123
 #, c-format
 msgid "recursively unsetting %s"
 msgstr "en train de supprimer récursivement %s"
 
-#: src/mn-conf.c:113
+#: src/mn-conf.c:127
 msgid "syncing the GConf database"
 msgstr "en train de synchroniser la base de données GConf"
 
-#: src/mn-conf.c:116
+#: src/mn-conf.c:130
 msgid "completed"
 msgstr "terminé"
 
-#: src/mn-gmail-mailbox-properties.gob:77
+#: src/mn-gmail-mailbox-properties.gob:79
 msgid "Your Gmail username"
 msgstr "Votre nom d'utilisateur Gmail"
 
-#: src/mn-gmail-mailbox-properties.gob:78
+#: src/mn-gmail-mailbox-properties.gob:80
 msgid "Your Gmail password"
 msgstr "Votre mot de passe Gmail"
 
-#: src/mn-gmail-mailbox.gob:220
+#: src/mn-gmail-mailbox.gob:65
+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:110 src/mn-gmail-mailbox.gob:331
+#, c-format
+msgid "unable to parse URI \"%s\""
+msgstr "impossible d'interpréter l'URI \"%s\""
+
+#: src/mn-gmail-mailbox.gob:257
 msgid "logging in"
 msgstr "ouverture de session en cours"
 
-#: src/mn-gmail-mailbox.gob:239 src/mn-gmail-mailbox.gob:279
-#: src/mn-gmail-mailbox.gob:313 src/mn-gmail-mailbox.gob:418
+#: src/mn-gmail-mailbox.gob:271 src/mn-gmail-mailbox.gob:342
+#: src/mn-gmail-mailbox.gob:380 src/mn-gmail-mailbox.gob:415
+msgid "login failed"
+msgstr "l'ouverture de session a échoué"
+
+#: src/mn-gmail-mailbox.gob:283 src/mn-gmail-mailbox.gob:356
+#: src/mn-gmail-mailbox.gob:394 src/mn-gmail-mailbox.gob:503
 #, c-format
 msgid "unable to transfer data: %s"
 msgstr "impossible de transférer des données: %s"
 
-#: src/mn-gmail-mailbox.gob:265 src/mn-gmail-mailbox.gob:299
-#: src/mn-gmail-mailbox.gob:334
-msgid "login failed"
-msgstr "l'ouverture de session a échoué"
-
-#: src/mn-gmail-mailbox.gob:328
+#: src/mn-gmail-mailbox.gob:409
 msgid "successfully logged in"
 msgstr "ouverture de session effectuée avec succès"
 
-#: src/mn-gmail-mailbox.gob:406
+#: src/mn-gmail-mailbox.gob:487
 msgid "searching for unread mail"
 msgstr "recherche du courrier non lu"
 
-#: src/mn-gmail-mailbox.gob:427
+#: src/mn-gmail-mailbox.gob:491
+msgid "unable to search for unread mail"
+msgstr "impossible de rechercher le courrier non lu"
+
+#: src/mn-gmail-mailbox.gob:604
 msgid "unable to parse Gmail data"
 msgstr "impossible d'interpréter les données Gmail"
 
-#: src/mn-imap-mailbox-properties.gob:92
+#: src/mn-gmime-stream-vfs.gob:49
+#, c-format
+msgid "unable to read %s: %s"
+msgstr "impossible de lire %s: %s"
+
+#: src/mn-gmime-stream-vfs.gob:51
+#, c-format
+msgid "unable to write to %s: %s"
+msgstr "impossible d'écrire vers %s: %s"
+
+#: src/mn-gmime-stream-vfs.gob:53
+#, c-format
+msgid "unable to seek in %s: %s"
+msgstr "impossible de chercher dans %s: %s"
+
+#: src/mn-gmime-stream-vfs.gob:55
+#, c-format
+msgid "unable to tell position of %s: %s"
+msgstr "impossible de dire la position de %s: %s"
+
+#: src/mn-gmime-stream-vfs.gob:57
+#, c-format
+msgid "unable to close %s: %s"
+msgstr "impossible de fermer %s: %s"
+
+#: src/mn-imap-mailbox-properties.gob:94
 msgid "Mailbox:"
 msgstr "Boîte aux lettres:"
 
-#: src/mn-imap-mailbox-properties.gob:96
+#: src/mn-imap-mailbox-properties.gob:98
 msgid "in_box"
 msgstr "_boîte de réception"
 
-#: src/mn-imap-mailbox-properties.gob:107
+#: src/mn-imap-mailbox-properties.gob:109
 msgid "oth_er:"
 msgstr "autr_e:"
 
-#: src/mn-imap-mailbox-properties.gob:122
+#: src/mn-imap-mailbox-properties.gob:124
 msgid "The hostname or IP address of the IMAP server"
 msgstr "Le nom d'hôte ou adresse IP du serveur IMAP"
 
-#: src/mn-imap-mailbox-properties.gob:123
+#: src/mn-imap-mailbox-properties.gob:125
 msgid "Your username on the IMAP server"
 msgstr "Votre nom d'utilisateur sur le serveur IMAP"
 
-#: src/mn-imap-mailbox-properties.gob:124
+#: src/mn-imap-mailbox-properties.gob:126
 msgid "Your password on the IMAP server"
 msgstr "Votre mot de passe sur le serveur IMAP"
 
-#: src/mn-imap-mailbox-properties.gob:125
-#: src/mn-imap-mailbox-properties.gob:126
+#: src/mn-imap-mailbox-properties.gob:127
+#: src/mn-imap-mailbox-properties.gob:128
 msgid "The port number of the IMAP server"
 msgstr "Le numéro de port du serveur IMAP"
 
-#: src/mn-imap-mailbox-properties.gob:127
+#: src/mn-imap-mailbox-properties.gob:129
 msgid "The mailbox name"
 msgstr "Le nom de la boîte aux lettres"
 
-#: src/mn-imap-mailbox.gob:112 src/mn-pop3-mailbox.gob:125
+#: src/mn-imap-mailbox.gob:132 src/mn-pop3-mailbox.gob:141
 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:179
+#: src/mn-imap-mailbox.gob:203
 msgid "server did not send capabilities"
 msgstr "le serveur n'a pas envoyé ses possibilités"
 
-#: src/mn-imap-mailbox.gob:292
+#: src/mn-imap-mailbox.gob:318
 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:293
+#: src/mn-imap-mailbox.gob:319
 msgid "unable to login"
 msgstr "impossible d'ouvrir la session"
 
 #. compliance error
-#: src/mn-imap-mailbox.gob:361
+#: src/mn-imap-mailbox.gob:447
+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:523
+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:570
+msgid "unable to fetch message"
+msgstr "impossible d'obtenir le message"
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:617
 msgid "server did not send status"
 msgstr "le serveur n'a pas envoyé de status"
 
-#: src/mn-imap-mailbox.gob:583 src/mn-pop3-mailbox.gob:744
+#: src/mn-imap-mailbox.gob:856 src/mn-pop3-mailbox.gob:903
 msgid "unknown server error"
 msgstr "erreur serveur inconnue"
 
-#: src/mn-imap-mailbox.gob:656 src/mn-pop3-mailbox.gob:210
+#: src/mn-imap-mailbox.gob:927 src/mn-pop3-mailbox.gob:225
 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:675 src/mn-pop3-mailbox.gob:674
+#: src/mn-imap-mailbox.gob:946 src/mn-pop3-mailbox.gob:823
 msgid ""
 "a SASL authentication mechanism was selected but SASL support has not been "
 "compiled in"
@@ -555,41 +702,32 @@ 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:683 src/mn-pop3-mailbox.gob:686
+#: src/mn-imap-mailbox.gob:954 src/mn-pop3-mailbox.gob:835
 #, c-format
 msgid "unknown authentication mechanism \"%s\""
 msgstr "mécanisme d'authentification inconnu \"%s\""
 
-#: src/mn-imap-mailbox.gob:701
+#: src/mn-imap-mailbox.gob:972
 msgid "falling back to IMAP LOGIN authentication"
 msgstr "rétrogradation vers l'authentification IMAP LOGIN"
 
-#: src/mn-imap-mailbox.gob:705 src/mn-pop3-mailbox.gob:720
+#: src/mn-imap-mailbox.gob:976 src/mn-pop3-mailbox.gob:869
 msgid "authentication failed"
 msgstr "l'authentification a échoué"
 
-#: src/mn-mail-icon.gob:81
+#: src/mn-mail-icon.gob:84 ui/summary-dialog.glade.h:2
 msgid "_Update"
 msgstr "_Mettre à Jour"
 
-#: src/mn-mail-icon.gob:87
+#: src/mn-mail-icon.gob:90
 msgid "R_emove From Notification Area"
 msgstr "_Enlever de l'Aire de Notification"
 
-#: src/mn-mail-icon.gob:172
-#, c-format
-msgid "_Run %s"
-msgstr "_Exécuter %s"
-
-#: src/mn-mail-icon.gob:173
-msgid "_Run Default Action"
-msgstr "_Exécuter l'Action par Défaut"
-
 #: src/mn-mailbox-properties-dialog.c:109
 msgid "Add a Mailbox"
 msgstr "Ajouter une Boîte aux Lettres"
 
-#: src/mn-mailbox-properties-dialog.c:331
+#: src/mn-mailbox-properties-dialog.c:328
 #, c-format
 msgid "%s Properties"
 msgstr "Propriétés de %s"
@@ -638,56 +776,61 @@ 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:254
+#: src/mn-mailbox-view.gob:263 src/mn-message-label.gob:74
 msgid "Mailbox"
 msgstr "Boîte aux lettres"
 
-#: src/mn-mailbox-view.gob:268
+#. format column
+#: src/mn-mailbox-view.gob:279
 msgid "Format"
 msgstr "Format"
 
-#: src/mn-mailbox-view.gob:543
+#: src/mn-mailbox-view.gob:569
 msgid "Unable to add mailbox"
 msgstr "Impossible d'ajouter la boîte aux lettres"
 
-#: src/mn-mailbox-view.gob:543
+#: src/mn-mailbox-view.gob:569
 msgid "The mailbox is already in the list."
 msgstr "La boîte aux lettres est déjà dans la liste."
 
-#: src/mn-mailbox.gob:122
+#: src/mn-mailbox.gob:133
 msgid "The mailbox URI"
 msgstr "L'URI de la boîte aux lettres"
 
-#: src/mn-mailbox.gob:133
+#: src/mn-mailbox.gob:144
 msgid "The mailbox human-readable name"
 msgstr "Le nom, lisible par un humain, de la boîte aux lettres"
 
-#: src/mn-mailbox.gob:137
+#: src/mn-mailbox.gob:148
 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"
 
-#: src/mn-mailbox.gob:142
+#: src/mn-mailbox.gob:153
 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:147
+#: src/mn-mailbox.gob:158
+msgid "The list of new and unread MNMessage objects"
+msgstr "La liste des objets MNMessage neufs et non lus"
+
+#: src/mn-mailbox.gob:212
 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:251
+#: src/mn-mailbox.gob:310
 msgid "does not exist"
 msgstr "n'existe pas"
 
-#: src/mn-mailbox.gob:287
+#: src/mn-mailbox.gob:342
 msgid "unknown format"
 msgstr "format inconnu"
 
-#: src/mn-mailbox.gob:355
+#: src/mn-mailbox.gob:408
 #, c-format
-msgid "unable to monitor %s: %s"
-msgstr "impossible de surveiller %s: %s"
+msgid "unable to enable immediate notification for %s: %s"
+msgstr "impossible d'activer la notification immédiate pour %s: %s"
 
-#: src/mn-mailbox.gob:369
+#: src/mn-mailbox.gob:426
 #, c-format
 msgid ""
 "As a fallback, they will be checked every %i second (this delay is "
@@ -702,7 +845,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:380
+#: src/mn-mailbox.gob:437
 #, c-format
 msgid ""
 "As a fallback, they will be checked every %i minute (this delay is "
@@ -717,7 +860,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:391
+#: src/mn-mailbox.gob:448
 #, c-format
 msgid ""
 "As a fallback, they will be checked approximately every %i minute (this "
@@ -732,11 +875,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:405
+#: src/mn-mailbox.gob:464
 msgid "A monitoring error has occurred"
 msgstr "Une erreur de surveillance s'est produite"
 
-#: src/mn-mailbox.gob:406
+#: src/mn-mailbox.gob:465
 #, c-format
 msgid ""
 "Mail Notification was unable to enable immediate notification for one or "
@@ -745,76 +888,89 @@ 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:133
+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:266
 #, c-format
 msgid "%s is unsupported: %s"
 msgstr "%s n'est pas pris en charge: %s"
 
-#: src/mn-mailboxes.gob:170
+#: src/mn-mailboxes.gob:297
 #, c-format
 msgid "%s has new mail"
 msgstr "%s a du nouveau courrier"
 
-#: src/mn-mailboxes.gob:170
+#: src/mn-mailboxes.gob:297
 #, c-format
 msgid "%s has no new mail"
 msgstr "%s n'a pas de nouveau courrier"
 
-#: src/mn-mailboxes.gob:186
+#: src/mn-mailboxes.gob:323
 #, c-format
 msgid "%s reported an error: %s"
 msgstr "%s a indiqué une erreur: %s"
 
-#: src/mn-maildir-mailbox.gob:109
+#: src/mn-maildir-mailbox.gob:119
 #, c-format
 msgid "unable to open folder \"new\": %s"
 msgstr "impossible d'ouvrir le dossier \"new\": %s"
 
-#: src/mn-maildir-mailbox.gob:137
+#: src/mn-maildir-mailbox.gob:161
 #, c-format
 msgid "unable to close folder \"new\": %s"
 msgstr "impossible de fermer le dossier \"new\": %s"
 
-#: src/mn-maildir-mailbox.gob:140
+#: src/mn-maildir-mailbox.gob:164
 #, c-format
 msgid "error while reading folder \"new\": %s"
 msgstr "erreur lors de la lecture du dossier \"new\": %s"
 
-#: src/mn-main.c:85
+#: src/mn-main.c:97
 #, c-format
 msgid "Compiled-in mailbox backends: %s\n"
 msgstr "Prises en charge de boîtes aux lettres disponibles: %s\n"
 
-#: src/mn-main.c:103
+#: src/mn-main.c:114
 #, c-format
 msgid "Compiled-in features: %s\n"
 msgstr "Fonctionnalités disponibles: %s\n"
 
-#: src/mn-main.c:133
+#: src/mn-main.c:166
 msgid "Enable informational output"
 msgstr "Activer la sortie informationelle"
 
-#: src/mn-main.c:142
+#: src/mn-main.c:175
 msgid "List compiled-in features and exit"
 msgstr "Afficher les fonctionnalités disponibles et quitter"
 
-#: src/mn-main.c:151
+#: src/mn-main.c:184
+msgid "Display the mail summary dialog"
+msgstr "Afficher la boîte de dialogue contenant l'aperçu du courrier"
+
+#: src/mn-main.c:193
 msgid "Display the properties dialog"
 msgstr "Afficher la boîte de dialogue contenant les propriétés"
 
-#: src/mn-main.c:160
+#: src/mn-main.c:202
 msgid "Display the about dialog"
 msgstr "Afficher la boîte de dialogue \"à propos\""
 
-#: src/mn-main.c:169
+#: src/mn-main.c:211
+msgid "Close the mail summary popup"
+msgstr "Fermer le popup d'aperçu du courrier"
+
+#: src/mn-main.c:220
 msgid "Update the mail status"
 msgstr "Mettre à jour le status du courrier"
 
-#: src/mn-main.c:178
+#: src/mn-main.c:229
 msgid "Report the mail status"
 msgstr "Rapporter le status du courrier"
 
-#: src/mn-main.c:187
+#: src/mn-main.c:238
 msgid "Unset obsolete GConf configuration and exit"
 msgstr "Supprimer la configuration GConf obsolète et quitter"
 
@@ -822,11 +978,11 @@ msgstr "Supprimer la configuration GConf obsolète et quitter"
 #. * We can't use mn_error_dialog() because gtk_init() has not been
 #. * called yet.
 #.
-#: src/mn-main.c:213
+#: src/mn-main.c:264
 msgid "multi-threading is not available"
 msgstr "le multi-threading n'est pas disponible"
 
-#: src/mn-main.c:258
+#: src/mn-main.c:309
 msgid ""
 "Bonobo could not locate the automation object. Please check your Mail "
 "Notification installation."
@@ -834,19 +990,19 @@ msgstr ""
 "Bonobo n'a pas pu localiser l'objet automation. Veuillez vérifier votre "
 "installation de la Notification de Courrier."
 
-#: src/mn-main.c:263
+#: src/mn-main.c:314
 msgid "Unable to initialize the GnomeVFS library."
 msgstr "Impossible d'initialiser la bibliothèque GnomeVFS."
 
-#: src/mn-main.c:285
+#: src/mn-main.c:350
 msgid "updating the mail status"
 msgstr "mise à jour du status du courrier"
 
-#: src/mn-main.c:301
+#: src/mn-main.c:368
 msgid "Mail Notification is already running"
 msgstr "La Notification de Courrier est déjà en cours d'exécution"
 
-#: src/mn-main.c:308
+#: src/mn-main.c:375
 msgid ""
 "Bonobo could not locate the GNOME_MailNotification_Automation.server file. "
 "Please check your Mail Notification installation."
@@ -854,7 +1010,7 @@ msgstr ""
 "Bonobo n'a pas pu localiser le fichier GNOME_MailNotification_Automation."
 "server. Veuillez vérifier votre installation de la Notification de Courrier."
 
-#: src/mn-main.c:312
+#: src/mn-main.c:379
 msgid ""
 "Bonobo was unable to register the automation server. Please check your Mail "
 "Notification installation."
@@ -862,147 +1018,209 @@ msgstr ""
 "Bonobo n'a pas été en mesure d'inscrire le serveur d'automation. Veuillez "
 "vérifier votre installation de la Notification de Courrier."
 
-#: src/mn-mbox-mailbox.gob:171
+#: src/mn-mbox-mailbox.gob:221
 #, c-format
 msgid "error while reading mailbox: %s"
 msgstr "erreur lors de la lecture de la boîte aux lettres: %s"
 
-#: src/mn-mbox-mailbox.gob:179
+#: src/mn-mbox-mailbox.gob:230
 #, c-format
 msgid "unable to open mailbox: %s"
 msgstr "impossible d'ouvrir la boîte aux lettres: %s"
 
-#: src/mn-mh-mailbox.gob:122
+#: src/mn-message-label.gob:77
+msgid "Unreadable message"
+msgstr "Message non lisible"
+
+#: src/mn-message-label.gob:97
+msgid "From"
+msgstr "De"
+
+#: src/mn-message-label.gob:98
+msgid "Subject"
+msgstr "Sujet"
+
+#: src/mn-message-label.gob:102
+msgid "Sent"
+msgstr "Envoyé"
+
+#: src/mn-message-label.gob:151
+#, 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
+#, 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
+#, 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
+#, 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-mime.c:105
+msgid "unable to parse MIME message"
+msgstr "impossible d'interpréter le message MIME"
+
+#: src/mn-message.gob:82
+msgid "Unknown"
+msgstr "Inconnu"
+
+#: src/mn-mh-mailbox.gob:184
 #, c-format
 msgid "error while reading .mh_sequences: %s"
 msgstr "erreur lors de la lecture de .mh_sequences: %s"
 
-#: src/mn-mh-mailbox.gob:130
+#: src/mn-mh-mailbox.gob:196
 #, c-format
 msgid "unable to open .mh_sequences: %s"
 msgstr "impossible d'ouvrir .mh_sequences: %s"
 
-#: src/mn-pending-mailbox.gob:33
+#: src/mn-pending-mailbox.gob:35
 msgid "detecting"
 msgstr "en cours de détection"
 
-#: src/mn-pi-mailbox-properties.gob:74
+#: src/mn-pi-mailbox-properties.gob:76
 msgid "_Hostname:"
 msgstr "Nom d'_hôte:"
 
-#: src/mn-pi-mailbox-properties.gob:92
+#: src/mn-pi-mailbox-properties.gob:94
 msgid "_Details"
 msgstr "_Détails"
 
-#: src/mn-pi-mailbox-properties.gob:104
+#: src/mn-pi-mailbox-properties.gob:106
 msgid "sta_ndard"
 msgstr "sta_ndard"
 
-#: src/mn-pi-mailbox-properties.gob:114
+#: src/mn-pi-mailbox-properties.gob:116
 msgid "_in-band SSL/TLS"
 msgstr "SSL/TLS _interne"
 
-#: src/mn-pi-mailbox-properties.gob:124
+#: src/mn-pi-mailbox-properties.gob:126
 msgid "SSL/TLS on sepa_rate port"
 msgstr "SSL/TLS sur port sépa_ré"
 
-#: src/mn-pop3-mailbox-properties.gob:84
+#: 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:85
+#: 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:86
+#: src/mn-pop3-mailbox-properties.gob:88
 msgid "Your password on the POP3 server"
 msgstr "Votre mot de passe sur le serveur POP3"
 
-#: src/mn-pop3-mailbox-properties.gob:87 src/mn-pop3-mailbox-properties.gob:88
+#: 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"
 
-#: src/mn-pop3-mailbox.gob:256
+#: src/mn-pop3-mailbox.gob:271
 msgid "invalid arguments for the LOGIN-DELAY capability"
 msgstr "arguments invalides pour la possibilité LOGIN-DELAY"
 
-#: src/mn-pop3-mailbox.gob:523
+#: src/mn-pop3-mailbox.gob:536
+msgid "unknown error"
+msgstr "erreur inconnue"
+
+#: src/mn-pop3-mailbox.gob:666
 #, c-format
 msgid "honouring LOGIN-DELAY, sleeping for %i second"
 msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds"
-msgstr[0] ""
-msgstr[1] ""
+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:682
+#: src/mn-pop3-mailbox.gob:831
 msgid "server does not support APOP authentication"
 msgstr "le serveur ne supporte pas l'authentification APOP"
 
-#: src/mn-pop3-mailbox.gob:710
+#: src/mn-pop3-mailbox.gob:859
 msgid "falling back to APOP authentication"
 msgstr "rétrogradation vers l'authentification APOP"
 
-#: src/mn-pop3-mailbox.gob:715
+#: src/mn-pop3-mailbox.gob:864
 msgid "falling back to USER/PASS authentication"
 msgstr "rétrogradation vers l'authentification USER/PASS"
 
-#: src/mn-properties.c:151
+#: src/mn-properties.c:161
+msgid "top left"
+msgstr "en haut à gauche"
+
+#: src/mn-properties.c:162
+msgid "top right"
+msgstr "en haut à droite"
+
+#: src/mn-properties.c:163
+msgid "bottom left"
+msgstr "en bas à gauche"
+
+#: src/mn-properties.c:164
+msgid "bottom right"
+msgstr "en bas à droite"
+
+#: src/mn-properties.c:240
 msgid "No mailbox selected."
 msgstr "Pas de boîte aux lettres sélectionnée."
 
-#: src/mn-properties.c:156
+#: src/mn-properties.c:245
 #, 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:204
-msgid "A command error has occurred"
-msgstr "Une erreur de commande s'est produite"
+#: src/mn-shell.gob:84
+msgid "You have new mail."
+msgstr "Vous avez du nouveau courrier."
+
+#: src/mn-shell.gob:96
+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:205
+#: src/mn-shell.gob:97
 #, c-format
-msgid "Unable to execute double-clicked command: %s."
+msgid "Unable to execute new mail command: %s."
 msgstr ""
-"Impossible d'exécuter la commande associée au double-click sur l'icône: %s."
+"Impossible d'exécuter la commande associée à l'arrivée de nouveau courrier: %"
+"s"
 
-#: src/mn-shell.gob:292
+#: src/mn-shell.gob:270
 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:296
+#: src/mn-shell.gob:274
 msgid "You have no new mail."
 msgstr "Vous n'avez pas de nouveau courrier."
 
-#: src/mn-shell.gob:299
+#: src/mn-shell.gob:277
 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:304
+#: src/mn-shell.gob:282
 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 "You have new mail."
-msgstr "Vous avez du nouveau courrier."
-
-#: src/mn-shell.gob:330
-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:331
-#, c-format
-msgid "Unable to execute new mail command: %s."
-msgstr ""
-"Impossible d'exécuter la commande associée à l'arrivée de nouveau courrier: %"
-"s"
-
 #: src/mn-ssl.c:79
 msgid "unknown SSL/TLS error"
 msgstr "erreur SSL/TLS inconnue"
@@ -1011,33 +1229,37 @@ msgstr "erreur SSL/TLS inconnue"
 msgid "Select _All"
 msgstr "Sélectionner _Tout"
 
-#: src/mn-sylpheed-mailbox.gob:93
+#: src/mn-stock.c:29
+msgid "_Mail Summary"
+msgstr "_Aperçu du Courrier"
+
+#: src/mn-sylpheed-mailbox.gob:122
 #, c-format
 msgid "unable to open folder: %s"
 msgstr "impossible d'ouvrir le dossier: %s"
 
-#: src/mn-sylpheed-mailbox.gob:127
+#: src/mn-sylpheed-mailbox.gob:180
 #, c-format
 msgid "unable to close folder: %s"
 msgstr "impossible de fermer le dossier: %s"
 
-#: src/mn-sylpheed-mailbox.gob:130
+#: src/mn-sylpheed-mailbox.gob:183
 #, c-format
 msgid "error while reading folder: %s"
 msgstr "erreur lors de la lecture du dossier: %s"
 
-#: src/mn-system-mailbox-properties.gob:32 src/mn-uri.gob:391
+#: src/mn-system-mailbox-properties.gob:34 src/mn-uri.gob:393
 msgid "System Mailbox"
 msgstr "Boîte aux Lettres Système"
 
-#: src/mn-system-mailbox-properties.gob:55
+#: src/mn-system-mailbox-properties.gob:57
 #, c-format
 msgid "Your system mailbox (<span weight=\"bold\">%s</span>) will be used."
 msgstr ""
 "Votre boîte aux lettres système (<span weight=\"bold\">%s</span>) sera "
 "utilisée."
 
-#: src/mn-system-mailbox-properties.gob:62
+#: src/mn-system-mailbox-properties.gob:64
 msgid ""
 "The location of your system mailbox could not be detected. Please set the "
 "MAIL environment variable."
@@ -1045,45 +1267,59 @@ msgstr ""
 "L'emplacement de votre boîte aux lettres système n'a pu être détecté. "
 "Veuillez spécifier la variable d'environnement MAIL."
 
-#: src/mn-unsupported-mailbox.gob:31
+#: src/mn-unsupported-mailbox.gob:33
 msgid "The reason why the mailbox is unsupported"
 msgstr "La raison pour laquelle la boîte aux lettres n'est pas prise en charge"
 
-#: src/mn-unsupported-mailbox.gob:38
+#: src/mn-unsupported-mailbox.gob:40
 msgid "unsupported"
 msgstr "non pris en charge"
 
-#: src/mn-util.c:199
+#: src/mn-util.c:233
 #, c-format
 msgid "error loading image: %s"
 msgstr "erreur de chargement d'image: %s"
 
-#: src/mn-util.c:237
+#: src/mn-util.c:271
 #, c-format
-msgid "widget %s not found in interface %s"
-msgstr "élément %s non trouvé dans interface %s"
+msgid "widget \"%s\" not found in interface \"%s\""
+msgstr "élément \"%s\" non trouvé dans interface \"%s\""
 
-#: src/mn-util.c:355
+#: src/mn-util.c:385
 msgid "received an invalid URI list"
 msgstr "une liste d'URI invalide a été reçue"
 
-#: src/mn-util.c:391
+#: src/mn-util.c:421
 msgid "received an invalid Mozilla URL"
 msgstr "une URL Mozilla invalide a été reçue"
 
-#: src/mn-util.c:484
+#: src/mn-util.c:514
 msgid "Unable to display help"
 msgstr "Impossible d'afficher l'aide"
 
-#: src/mn-util.c:498
+#: src/mn-util.c:528
 #, c-format
 msgid "Unable to create a thread: %s."
 msgstr "Impossible de créer un thread: %s."
 
-#: src/mn-util.c:701
+#: src/mn-util.c:705
+msgid "_Do not show this message again"
+msgstr "_Ne plus afficher ce message"
+
+#: src/mn-util.c:789
 msgid "A fatal error has occurred in Mail Notification"
 msgstr "Une erreur fatale s'est produite dans la Notification de Courrier"
 
+#: src/mn-util.c:804
+#, c-format
+msgid "unable to get current time: %s"
+msgstr "impossible d'obtenir l'heure courante: %s"
+
+#: src/mn-util.c:887
+#, c-format
+msgid "invalid signal specification \"%s\""
+msgstr "spécification de signal \"%s\" invalide"
+
 #: ui/mailbox-properties.glade.h:1
 msgid "_Mailbox type:"
 msgstr "_Type de boîte aux lettres:"
@@ -1097,56 +1333,91 @@ msgid "*"
 msgstr "*"
 
 #: ui/properties.glade.h:3
-msgid "<span weight=\"bold\">Commands</span>"
-msgstr "<span weight=\"bold\">Commandes</span>"
-
-#: ui/properties.glade.h:4
 msgid "<span weight=\"bold\">General</span>"
 msgstr "<span weight=\"bold\">Général</span>"
 
+#: ui/properties.glade.h:4
+msgid "<span weight=\"bold\">Mailbox List</span>"
+msgstr "<span weight=\"bold\">Liste des Boîtes aux Lettres</span>"
+
 #: ui/properties.glade.h:5
-msgid "<span weight=\"bold\">Mailboxes</span>"
-msgstr "<span weight=\"bold\">Boîtes aux lettres</span>"
+msgid "<span weight=\"bold\">Position</span>"
+msgstr "<span weight=\"bold\">Position</span>"
 
 #: ui/properties.glade.h:6
-msgid "Mail Notification Properties"
-msgstr "Propriétés de la Notification de Courrier"
+msgid "General"
+msgstr "Général"
 
 #: ui/properties.glade.h:7
-msgid "The amount of time to wait between mail checks"
-msgstr "La quantité de temps à attendre entre les vérifications de courrier"
+msgid "Hori_zontal offset:"
+msgstr "Décalage hori_zontal:"
 
 #: ui/properties.glade.h:8
-msgid "The command to run when new mail arrives"
-msgstr "La commande à exécuter lorsque du nouveau courrier arrive"
+msgid "Mail Notification Properties"
+msgstr "Propriétés de la Notification de Courrier"
 
 #: ui/properties.glade.h:9
-msgid "The command to run when the icon is double-clicked"
-msgstr "La commande à exécuter lorsque l'îcone est double-cliquée"
+msgid "Mail Summary Popup"
+msgstr "Popup d'Aperçu du Courrier"
 
 #: ui/properties.glade.h:10
-msgid "When _new mail arrives:"
-msgstr "Lorsque du _nouveau courrier arrive:"
+msgid "Mailboxes"
+msgstr "Boîtes aux Lettres"
 
 #: ui/properties.glade.h:11
-msgid "When double-click_ed:"
-msgstr "Lorsque l'îcone est double-cliqué_e:"
+msgid "P_osition:"
+msgstr "P_osition:"
 
 #: ui/properties.glade.h:12
+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:13
+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:14
+msgid "The command to run when new mail arrives"
+msgstr "La commande à exécuter lorsque du nouveau courrier arrive"
+
+#: ui/properties.glade.h:15
+msgid ""
+"The number of pixels to leave between the left or right side of the screen "
+"and the mail summary popup"
+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:16
+msgid ""
+"The number of pixels to leave between the top or bottom side of the screen "
+"and the mail summary popup"
+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:17
 msgid "Whether the status icon should blink on errors or not"
 msgstr "Si l'icône de status doit clignoter lors d'erreurs ou pas"
 
-#: ui/properties.glade.h:13
-msgid "Whether to run a command when new mail arrives or not"
+#: ui/properties.glade.h:18
+msgid "Whether to automatically close the mail summary popup or not"
 msgstr ""
-"Si une commande doit être exécutée lorsque du nouveau courrier arrive ou pas"
+"Si le popup d'aperçu du courrier doit être automatiquement fermé ou pas"
 
-#: ui/properties.glade.h:14
-msgid "Whether to run a command when the icon is double-clicked or not"
+#: ui/properties.glade.h:19
+msgid "Whether to display the mail summary popup when new mail arrives or not"
 msgstr ""
-"Si une commande doit être exécutée lorsque l'îcone est double-cliquée ou pas"
+"Si le popup d'aperçu du courrier doit être affiché lorsque du nouveau "
+"courrier arrive ou pas"
 
-#: ui/properties.glade.h:15
+#: ui/properties.glade.h:20
+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:21
 msgid ""
 "Whether to start Mail Notification when you log into your GNOME session or "
 "not"
@@ -1154,27 +1425,55 @@ msgstr ""
 "Si la Notification de Courrier doit être démarrée lorsque vous ouvrez votre "
 "session GNOME ou pas"
 
-#: ui/properties.glade.h:16
+#: ui/properties.glade.h:22
+msgid "_Automatically close after:"
+msgstr "_Fermer automatiquement après:"
+
+#: ui/properties.glade.h:23
 msgid "_Blink on errors"
 msgstr "_Clignoter lors d'erreurs"
 
-#: ui/properties.glade.h:17
+#: ui/properties.glade.h:24
 msgid "_Delay between mail checks:"
 msgstr "_Délai entre les vérifications de courrier:"
 
-#: ui/properties.glade.h:18
+#: ui/properties.glade.h:25
+msgid "_Enable mail summary popup"
+msgstr "_Activer le popup d'aperçu du courrier"
+
+#: ui/properties.glade.h:26
+msgid "_Run a command when new mail arrives:"
+msgstr "_Exécuter une commande lorsque du nouveau courrier arrive:"
+
+#: ui/properties.glade.h:27
 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:19
+#: ui/properties.glade.h:28
+msgid "_Vertical offset:"
+msgstr "Décalage _vertical:"
+
+#: ui/properties.glade.h:29
 msgid "minutes"
 msgstr "minutes"
 
-#: ui/properties.glade.h:20
+#: ui/properties.glade.h:30
+msgid "pixels"
+msgstr "pixels"
+
+#: ui/properties.glade.h:31
 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>"
+
 #: ui/welcome.glade.h:1
 msgid ""
 "<span weight=\"bold\" size=\"larger\">First startup</span>\n"
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-09-09 01:43+0200\n"
+"POT-Creation-Date: 2004-10-06 19:31+0200\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"
@@ -31,8 +31,8 @@ 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:38
-#: src/mn-mail-icon.gob:160 src/mn-main.c:221
+#: data/mail-notification.soundlist.in.h:1 src/mn-about-dialog.gob:40
+#: src/mn-mail-icon.gob:163 src/mn-main.c:272
 msgid "Mail Notification"
 msgstr ""
 
@@ -41,109 +41,185 @@ msgid "Get notified when new mail arrives"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:1
-msgid "Blink on errors"
+msgid "Automatically close the mail summary popup"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:2
-msgid "Delay between mail checks (minutes part)."
+msgid "Blink on errors"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:3
-msgid "Delay between mail checks (seconds part)."
+msgid "Delay between mail checks (minutes part)."
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:4
-msgid "Double-clicked command"
+msgid "Delay between mail checks (seconds part)."
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:5
-msgid "Fingerprints of trusted X509 certificates"
+msgid "Do not show the immediate notification error dialog"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:6
-msgid "Has already been run"
+msgid "Enable mail summary popup"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:7
-msgid "Height of properties dialog"
+msgid "Fingerprints of trusted X509 certificates"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:8
-msgid "Mailboxes list"
+msgid "Has already been run"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:9
-msgid "Minutes between mail checks"
+msgid "Height of mail summary dialog"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:10
-msgid "New mail command"
+msgid "Height of properties dialog"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:11
-msgid "Run a command when new mail arrives"
+msgid "Mail summary popup horizontal offset"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:12
-msgid "Run a command when the icon is double-clicked"
+msgid "Mail summary popup position"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:13
-msgid "Seconds between mail checks"
+msgid "Mail summary popup vertical offset"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:14
-msgid "The command to run when new mail arrives."
+msgid "Mailbox list"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:15
-msgid "The command to run when the icon is double-clicked."
+msgid "Minutes between mail checks"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:16
-msgid "The height of the properties dialog in pixels."
+msgid "Minutes to wait before closing the mail summary popup"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:17
-msgid "The list of mailboxes to monitor."
+msgid "New mail command"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:18
+msgid "Run a command when new mail arrives"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:19
+msgid "Seconds between mail checks"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:20
+msgid "Seconds to wait before closing the mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:21
+msgid ""
+"The amount of time to wait before closing the mail summary popup (minutes "
+"part)."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:22
+msgid ""
+"The amount of time to wait before closing the mail summary popup (seconds "
+"part)."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:23
+msgid "The command to run when new mail arrives."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:24
+msgid "The height of the mail summary dialog in pixels."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:25
+msgid "The height of the properties dialog in pixels."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:26
+msgid "The list of mailboxes to monitor."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:27
 msgid ""
 "The list of trusted SSL/TLS servers (hostname:port) lacking a X509 "
 "certificate."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:19
+#: data/mail-notification.schemas.in.h:28
 msgid ""
 "The list of trusted X509 certificates, represented by their MD5 fingerprint."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:20
+#: data/mail-notification.schemas.in.h:29
+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:30
+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:31
+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:32
+msgid "The width of the mail summary dialog in pixels."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:33
 msgid "The width of the properties dialog in pixels."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:21
+#: data/mail-notification.schemas.in.h:34
 msgid "Trusted servers list"
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:22
+#: data/mail-notification.schemas.in.h:35
 msgid "Whether Mail Notification has already been run or not."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:23
+#: data/mail-notification.schemas.in.h:36
 msgid "Whether the status icon should blink on errors or not."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:24
+#: data/mail-notification.schemas.in.h:37
+msgid "Whether to automatically close the mail summary popup or not."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:38
+msgid "Whether to display the mail summary popup when new mail arrives or not."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:39
+msgid ""
+"Whether to prevent the immediate notification error dialog from being "
+"displayed or not."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:40
 msgid "Whether to run a command when new mail arrives or not."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:25
-msgid "Whether to run a command when the icon is double-clicked or not."
+#: data/mail-notification.schemas.in.h:41
+msgid "Width of mail summary dialog"
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:26
+#: data/mail-notification.schemas.in.h:42
 msgid "Width of properties dialog"
 msgstr ""
 
@@ -159,131 +235,118 @@ msgstr ""
 msgid "The orientation of the tray."
 msgstr ""
 
-#: src/mn-about-dialog.gob:41
+#: src/mn-about-dialog.gob:43
 msgid "A Mail Notification Icon"
 msgstr ""
 
-#: src/mn-about-dialog.gob:44
+#. translator: replace with your name and email
+#: src/mn-about-dialog.gob:47
 msgid "Jean-Yves Lefort <jylefort@brutele.be>"
 msgstr ""
 
-#: src/mn-auth-combo-box.gob:99 src/mn-autodetect-mailbox-properties.gob:35
+#: src/mn-auth-combo-box.gob:101 src/mn-autodetect-mailbox-properties.gob:37
 msgid "<span style=\"italic\">autodetect</span>"
 msgstr ""
 
-#: src/mn-autodetect-mailbox-properties.gob:66
+#: src/mn-autodetect-mailbox-properties.gob:68
 msgid "_Location:"
 msgstr ""
 
-#: src/mn-autodetect-mailbox-properties.gob:72
+#: src/mn-autodetect-mailbox-properties.gob:74
 msgid "_Browse..."
 msgstr ""
 
-#: src/mn-autodetect-mailbox-properties.gob:79
+#: src/mn-autodetect-mailbox-properties.gob:81
 msgid "The URI of the mailbox"
 msgstr ""
 
-#: src/mn-autodetect-mailbox-properties.gob:116
+#: src/mn-autodetect-mailbox-properties.gob:118
 msgid "Select a File or Folder"
 msgstr ""
 
-#: src/mn-blinking-image.gob:30
+#: src/mn-blinking-image.gob:32
 msgid "Whether the image is blinking or not"
 msgstr ""
 
-#: src/mn-client-session.c:196 src/mn-client-session.c:203
-#, c-format
-msgid "unable to read from server: %s"
-msgstr ""
-
-#: src/mn-client-session.c:201
-msgid "unable to read from server: EOF"
-msgstr ""
-
-#: src/mn-client-session.c:213
-#, c-format
-msgid "unable to decode data using SASL: %s"
-msgstr ""
-
-#: src/mn-client-session.c:284
+#: src/mn-client-session.c:229
 #, c-format
 msgid "resolving %s"
 msgstr ""
 
-#: src/mn-client-session.c:294
+#: src/mn-client-session.c:239
 #, c-format
 msgid "unable to resolve %s: %s"
 msgstr ""
 
-#: src/mn-client-session.c:331
+#: src/mn-client-session.c:276
 #, c-format
 msgid "%s: unsupported address family"
 msgstr ""
 
-#: src/mn-client-session.c:338
+#: src/mn-client-session.c:283
 #, c-format
 msgid "%s: unable to create socket: %s"
 msgstr ""
 
-#: src/mn-client-session.c:342
+#: src/mn-client-session.c:287
 #, c-format
 msgid "connecting to %s (%s) port %i"
 msgstr ""
 
-#: src/mn-client-session.c:345
+#: src/mn-client-session.c:290
 #, c-format
 msgid "unable to connect: %s"
 msgstr ""
 
-#: src/mn-client-session.c:350
+#: src/mn-client-session.c:295
 msgid "connected successfully"
 msgstr ""
 
 #. if reached, we couldn't find a working address
-#: src/mn-client-session.c:356
+#: src/mn-client-session.c:301
 #, c-format
 msgid "unable to connect to %s"
 msgstr ""
 
-#: src/mn-client-session.c:372
+#: src/mn-client-session.c:317
 #, c-format
 msgid "unable to initialize the OpenSSL library: %s"
 msgstr ""
 
-#: src/mn-client-session.c:380
+#: src/mn-client-session.c:325
 #, c-format
 msgid "unable to create a SSL/TLS object: %s"
 msgstr ""
 
-#: src/mn-client-session.c:386
+#: src/mn-client-session.c:331
 #, c-format
 msgid "unable to set the SSL/TLS file descriptor: %s"
 msgstr ""
 
-#: src/mn-client-session.c:392
+#: src/mn-client-session.c:337
 #, c-format
 msgid "unable to perform the SSL/TLS handshake: %s"
 msgstr ""
 
-#: src/mn-client-session.c:398
+#: src/mn-client-session.c:343
 msgid "untrusted server"
 msgstr ""
 
-#: src/mn-client-session.c:402
+#: src/mn-client-session.c:347
 #, c-format
 msgid "a SSL/TLS layer is now active (%s, %s %i-bit)"
 msgstr ""
 
-#: src/mn-client-session.c:449
+#: src/mn-client-session.c:394
 #, c-format
 msgid "%s, fingerprint: %s"
 msgstr ""
 
-#: src/mn-client-session.c:478
+#: src/mn-client-session.c:423
 msgid "missing certificate"
 msgstr ""
 
-#: src/mn-client-session.c:504
+#: src/mn-client-session.c:449
 #, c-format
 msgid ""
 "Mail Notification was unable to trust \"%s\" (%s). It is possible that "
@@ -295,272 +358,329 @@ msgid ""
 "shown again."
 msgstr ""
 
-#: src/mn-client-session.c:521
+#: src/mn-client-session.c:466
 msgid "Connect to untrusted server?"
 msgstr ""
 
-#: src/mn-client-session.c:526
+#: src/mn-client-session.c:471
 msgid "Co_nnect"
 msgstr ""
 
-#: src/mn-client-session.c:584
+#: src/mn-client-session.c:527
 #, c-format
 msgid "response \"%s\" is not valid in current context"
 msgstr ""
 
-#: src/mn-client-session.c:610
+#: src/mn-client-session.c:553
 #, c-format
 msgid "unable to parse response \"%s\""
 msgstr ""
 
-#: src/mn-client-session.c:657
+#: src/mn-client-session.c:592 src/mn-client-session.c:599
+#, c-format
+msgid "unable to read from server: %s"
+msgstr ""
+
+#: src/mn-client-session.c:597
+msgid "unable to read from server: EOF"
+msgstr ""
+
+#: src/mn-client-session.c:609
+#, c-format
+msgid "unable to decode data using SASL: %s"
+msgstr ""
+
+#: src/mn-client-session.c:746
 #, c-format
 msgid "unable to encode data using SASL: %s"
 msgstr ""
 
-#: src/mn-client-session.c:688 src/mn-client-session.c:695
+#: src/mn-client-session.c:777 src/mn-client-session.c:784
 #, c-format
 msgid "unable to write to server: %s"
 msgstr ""
 
-#: src/mn-client-session.c:693
+#: src/mn-client-session.c:782
 msgid "unable to write to server: EOF"
 msgstr ""
 
-#: src/mn-client-session.c:725
+#: src/mn-client-session.c:814
 #, c-format
 msgid "unable to encode Base64: %s"
 msgstr ""
 
-#: src/mn-client-session.c:828
+#: src/mn-client-session.c:917
 #, c-format
 msgid "unable to initialize the SASL library: %s"
 msgstr ""
 
-#: src/mn-client-session.c:837
+#: src/mn-client-session.c:926
 #, c-format
 msgid "unable to retrieve local address of socket: %s"
 msgstr ""
 
-#: src/mn-client-session.c:843
+#: src/mn-client-session.c:932
 #, c-format
 msgid "unable to retrieve remote address of socket: %s"
 msgstr ""
 
-#: src/mn-client-session.c:877
+#: src/mn-client-session.c:966
 #, c-format
 msgid "warning: unable to set SASL security properties: %s"
 msgstr ""
 
-#: src/mn-client-session.c:916
+#: src/mn-client-session.c:1005
 msgid ""
 "unable to start SASL authentication: SASL asked for something we did not know"
 msgstr ""
 
-#: src/mn-client-session.c:920
+#: src/mn-client-session.c:1009
 #, c-format
 msgid "unable to start SASL authentication: %s"
 msgstr ""
 
-#: src/mn-client-session.c:924
+#: src/mn-client-session.c:1013
 #, c-format
 msgid "unable to create a SASL connection: %s"
 msgstr ""
 
-#: src/mn-client-session.c:974
+#: src/mn-client-session.c:1063
 msgid "SASL asked for something we did not know, aborting SASL authentication"
 msgstr ""
 
-#: src/mn-client-session.c:978
+#: src/mn-client-session.c:1067
 #, c-format
 msgid "%s, aborting SASL authentication"
 msgstr ""
 
 #. compliance error
-#: src/mn-client-session.c:983
+#: src/mn-client-session.c:1072
 #, c-format
 msgid "unable to decode Base64 input from server: %s"
 msgstr ""
 
-#: src/mn-client-session.c:986
+#: src/mn-client-session.c:1075
 msgid ""
 "the server sent a SASL challenge, but there was a pending initial SASL "
 "client response"
 msgstr ""
 
-#: src/mn-client-session.c:1000
+#: src/mn-client-session.c:1089
 msgid ""
 "the server did not send a SASL challenge, but there was no pending initial "
 "SASL client response"
 msgstr ""
 
-#: src/mn-client-session.c:1023
+#: src/mn-client-session.c:1112
 #, 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:1028
+#: src/mn-client-session.c:1117
 #, c-format
 msgid "unable to get SASL_MAXOUTBUF property: %s"
 msgstr ""
 
-#: src/mn-client-session.c:1034
+#: src/mn-client-session.c:1123
 #, c-format
 msgid "warning: unable to get SASL_SSF property: %s"
 msgstr ""
 
-#: src/mn-conf.c:109
+#: src/mn-conf.c:123
 #, c-format
 msgid "recursively unsetting %s"
 msgstr ""
 
-#: src/mn-conf.c:113
+#: src/mn-conf.c:127
 msgid "syncing the GConf database"
 msgstr ""
 
-#: src/mn-conf.c:116
+#: src/mn-conf.c:130
 msgid "completed"
 msgstr ""
 
-#: src/mn-gmail-mailbox-properties.gob:77
+#: src/mn-gmail-mailbox-properties.gob:79
 msgid "Your Gmail username"
 msgstr ""
 
-#: src/mn-gmail-mailbox-properties.gob:78
+#: src/mn-gmail-mailbox-properties.gob:80
 msgid "Your Gmail password"
 msgstr ""
 
-#: src/mn-gmail-mailbox.gob:220
-msgid "logging in"
+#: src/mn-gmail-mailbox.gob:65
+msgid "libsoup has not been compiled with SSL/TLS support"
 msgstr ""
 
-#: src/mn-gmail-mailbox.gob:239 src/mn-gmail-mailbox.gob:279
-#: src/mn-gmail-mailbox.gob:313 src/mn-gmail-mailbox.gob:418
+#: src/mn-gmail-mailbox.gob:110 src/mn-gmail-mailbox.gob:331
 #, c-format
-msgid "unable to transfer data: %s"
+msgid "unable to parse URI \"%s\""
 msgstr ""
 
-#: src/mn-gmail-mailbox.gob:265 src/mn-gmail-mailbox.gob:299
-#: src/mn-gmail-mailbox.gob:334
+#: src/mn-gmail-mailbox.gob:257
+msgid "logging in"
+msgstr ""
+
+#: src/mn-gmail-mailbox.gob:271 src/mn-gmail-mailbox.gob:342
+#: src/mn-gmail-mailbox.gob:380 src/mn-gmail-mailbox.gob:415
 msgid "login failed"
 msgstr ""
 
-#: src/mn-gmail-mailbox.gob:328
+#: src/mn-gmail-mailbox.gob:283 src/mn-gmail-mailbox.gob:356
+#: src/mn-gmail-mailbox.gob:394 src/mn-gmail-mailbox.gob:503
+#, c-format
+msgid "unable to transfer data: %s"
+msgstr ""
+
+#: src/mn-gmail-mailbox.gob:409
 msgid "successfully logged in"
 msgstr ""
 
-#: src/mn-gmail-mailbox.gob:406
+#: src/mn-gmail-mailbox.gob:487
 msgid "searching for unread mail"
 msgstr ""
 
-#: src/mn-gmail-mailbox.gob:427
+#: src/mn-gmail-mailbox.gob:491
+msgid "unable to search for unread mail"
+msgstr ""
+
+#: src/mn-gmail-mailbox.gob:604
 msgid "unable to parse Gmail data"
 msgstr ""
 
-#: src/mn-imap-mailbox-properties.gob:92
+#: src/mn-gmime-stream-vfs.gob:49
+#, c-format
+msgid "unable to read %s: %s"
+msgstr ""
+
+#: src/mn-gmime-stream-vfs.gob:51
+#, c-format
+msgid "unable to write to %s: %s"
+msgstr ""
+
+#: src/mn-gmime-stream-vfs.gob:53
+#, c-format
+msgid "unable to seek in %s: %s"
+msgstr ""
+
+#: src/mn-gmime-stream-vfs.gob:55
+#, c-format
+msgid "unable to tell position of %s: %s"
+msgstr ""
+
+#: src/mn-gmime-stream-vfs.gob:57
+#, c-format
+msgid "unable to close %s: %s"
+msgstr ""
+
+#: src/mn-imap-mailbox-properties.gob:94
 msgid "Mailbox:"
 msgstr ""
 
-#: src/mn-imap-mailbox-properties.gob:96
+#: src/mn-imap-mailbox-properties.gob:98
 msgid "in_box"
 msgstr ""
 
-#: src/mn-imap-mailbox-properties.gob:107
+#: src/mn-imap-mailbox-properties.gob:109
 msgid "oth_er:"
 msgstr ""
 
-#: src/mn-imap-mailbox-properties.gob:122
+#: src/mn-imap-mailbox-properties.gob:124
 msgid "The hostname or IP address of the IMAP server"
 msgstr ""
 
-#: src/mn-imap-mailbox-properties.gob:123
+#: src/mn-imap-mailbox-properties.gob:125
 msgid "Your username on the IMAP server"
 msgstr ""
 
-#: src/mn-imap-mailbox-properties.gob:124
+#: src/mn-imap-mailbox-properties.gob:126
 msgid "Your password on the IMAP server"
 msgstr ""
 
-#: src/mn-imap-mailbox-properties.gob:125
-#: src/mn-imap-mailbox-properties.gob:126
+#: src/mn-imap-mailbox-properties.gob:127
+#: src/mn-imap-mailbox-properties.gob:128
 msgid "The port number of the IMAP server"
 msgstr ""
 
-#: src/mn-imap-mailbox-properties.gob:127
+#: src/mn-imap-mailbox-properties.gob:129
 msgid "The mailbox name"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:112 src/mn-pop3-mailbox.gob:125
+#: src/mn-imap-mailbox.gob:132 src/mn-pop3-mailbox.gob:141
 msgid "SSL/TLS support has not been compiled in"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:179
+#: src/mn-imap-mailbox.gob:203
 msgid "server did not send capabilities"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:292
+#: src/mn-imap-mailbox.gob:318
 msgid "server advertised LOGINDISABLED, not using LOGIN authentication"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:293
+#: src/mn-imap-mailbox.gob:319
 msgid "unable to login"
 msgstr ""
 
 #. compliance error
-#: src/mn-imap-mailbox.gob:361
+#: src/mn-imap-mailbox.gob:447
+msgid "server did not send search results"
+msgstr ""
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:523
+msgid "server did not send all the messages we requested"
+msgstr ""
+
+#: src/mn-imap-mailbox.gob:570
+msgid "unable to fetch message"
+msgstr ""
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:617
 msgid "server did not send status"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:583 src/mn-pop3-mailbox.gob:744
+#: src/mn-imap-mailbox.gob:856 src/mn-pop3-mailbox.gob:903
 msgid "unknown server error"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:656 src/mn-pop3-mailbox.gob:210
+#: src/mn-imap-mailbox.gob:927 src/mn-pop3-mailbox.gob:225
 msgid "server does not support in-band SSL/TLS"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:675 src/mn-pop3-mailbox.gob:674
+#: src/mn-imap-mailbox.gob:946 src/mn-pop3-mailbox.gob:823
 msgid ""
 "a SASL authentication mechanism was selected but SASL support has not been "
 "compiled in"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:683 src/mn-pop3-mailbox.gob:686
+#: src/mn-imap-mailbox.gob:954 src/mn-pop3-mailbox.gob:835
 #, c-format
 msgid "unknown authentication mechanism \"%s\""
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:701
+#: src/mn-imap-mailbox.gob:972
 msgid "falling back to IMAP LOGIN authentication"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:705 src/mn-pop3-mailbox.gob:720
+#: src/mn-imap-mailbox.gob:976 src/mn-pop3-mailbox.gob:869
 msgid "authentication failed"
 msgstr ""
 
-#: src/mn-mail-icon.gob:81
+#: src/mn-mail-icon.gob:84 ui/summary-dialog.glade.h:2
 msgid "_Update"
 msgstr ""
 
-#: src/mn-mail-icon.gob:87
+#: src/mn-mail-icon.gob:90
 msgid "R_emove From Notification Area"
 msgstr ""
 
-#: src/mn-mail-icon.gob:172
-#, c-format
-msgid "_Run %s"
-msgstr ""
-
-#: src/mn-mail-icon.gob:173
-msgid "_Run Default Action"
-msgstr ""
-
 #: src/mn-mailbox-properties-dialog.c:109
 msgid "Add a Mailbox"
 msgstr ""
 
-#: src/mn-mailbox-properties-dialog.c:331
+#: src/mn-mailbox-properties-dialog.c:328
 #, c-format
 msgid "%s Properties"
 msgstr ""
@@ -609,56 +729,61 @@ msgstr ""
 msgid "Whether the properties are completely filled or not"
 msgstr ""
 
-#: src/mn-mailbox-view.gob:254
+#: src/mn-mailbox-view.gob:263 src/mn-message-label.gob:74
 msgid "Mailbox"
 msgstr ""
 
-#: src/mn-mailbox-view.gob:268
+#. format column
+#: src/mn-mailbox-view.gob:279
 msgid "Format"
 msgstr ""
 
-#: src/mn-mailbox-view.gob:543
+#: src/mn-mailbox-view.gob:569
 msgid "Unable to add mailbox"
 msgstr ""
 
-#: src/mn-mailbox-view.gob:543
+#: src/mn-mailbox-view.gob:569
 msgid "The mailbox is already in the list."
 msgstr ""
 
-#: src/mn-mailbox.gob:122
+#: src/mn-mailbox.gob:133
 msgid "The mailbox URI"
 msgstr ""
 
-#: src/mn-mailbox.gob:133
+#: src/mn-mailbox.gob:144
 msgid "The mailbox human-readable name"
 msgstr ""
 
-#: src/mn-mailbox.gob:137
+#: src/mn-mailbox.gob:148
 msgid "Whether the mailbox has to be manually checked or not"
 msgstr ""
 
-#: src/mn-mailbox.gob:142
+#: src/mn-mailbox.gob:153
 msgid "Whether the mailbox has new mail or not"
 msgstr ""
 
-#: src/mn-mailbox.gob:147
+#: src/mn-mailbox.gob:158
+msgid "The list of new and unread MNMessage objects"
+msgstr ""
+
+#: src/mn-mailbox.gob:212
 msgid "The mailbox error, if any"
 msgstr ""
 
-#: src/mn-mailbox.gob:251
+#: src/mn-mailbox.gob:310
 msgid "does not exist"
 msgstr ""
 
-#: src/mn-mailbox.gob:287
+#: src/mn-mailbox.gob:342
 msgid "unknown format"
 msgstr ""
 
-#: src/mn-mailbox.gob:355
+#: src/mn-mailbox.gob:408
 #, c-format
-msgid "unable to monitor %s: %s"
+msgid "unable to enable immediate notification for %s: %s"
 msgstr ""
 
-#: src/mn-mailbox.gob:369
+#: src/mn-mailbox.gob:426
 #, c-format
 msgid ""
 "As a fallback, they will be checked every %i second (this delay is "
@@ -669,7 +794,7 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-mailbox.gob:380
+#: src/mn-mailbox.gob:437
 #, c-format
 msgid ""
 "As a fallback, they will be checked every %i minute (this delay is "
@@ -680,7 +805,7 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-mailbox.gob:391
+#: src/mn-mailbox.gob:448
 #, c-format
 msgid ""
 "As a fallback, they will be checked approximately every %i minute (this "
@@ -691,87 +816,99 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-mailbox.gob:405
+#: src/mn-mailbox.gob:464
 msgid "A monitoring error has occurred"
 msgstr ""
 
-#: src/mn-mailbox.gob:406
+#: src/mn-mailbox.gob:465
 #, 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:133
+msgid "Whether one or more of the mailboxes has to be polled"
+msgstr ""
+
+#: src/mn-mailboxes.gob:266
 #, c-format
 msgid "%s is unsupported: %s"
 msgstr ""
 
-#: src/mn-mailboxes.gob:170
+#: src/mn-mailboxes.gob:297
 #, c-format
 msgid "%s has new mail"
 msgstr ""
 
-#: src/mn-mailboxes.gob:170
+#: src/mn-mailboxes.gob:297
 #, c-format
 msgid "%s has no new mail"
 msgstr ""
 
-#: src/mn-mailboxes.gob:186
+#: src/mn-mailboxes.gob:323
 #, c-format
 msgid "%s reported an error: %s"
 msgstr ""
 
-#: src/mn-maildir-mailbox.gob:109
+#: src/mn-maildir-mailbox.gob:119
 #, c-format
 msgid "unable to open folder \"new\": %s"
 msgstr ""
 
-#: src/mn-maildir-mailbox.gob:137
+#: src/mn-maildir-mailbox.gob:161
 #, c-format
 msgid "unable to close folder \"new\": %s"
 msgstr ""
 
-#: src/mn-maildir-mailbox.gob:140
+#: src/mn-maildir-mailbox.gob:164
 #, c-format
 msgid "error while reading folder \"new\": %s"
 msgstr ""
 
-#: src/mn-main.c:85
+#: src/mn-main.c:97
 #, c-format
 msgid "Compiled-in mailbox backends: %s\n"
 msgstr ""
 
-#: src/mn-main.c:103
+#: src/mn-main.c:114
 #, c-format
 msgid "Compiled-in features: %s\n"
 msgstr ""
 
-#: src/mn-main.c:133
+#: src/mn-main.c:166
 msgid "Enable informational output"
 msgstr ""
 
-#: src/mn-main.c:142
+#: src/mn-main.c:175
 msgid "List compiled-in features and exit"
 msgstr ""
 
-#: src/mn-main.c:151
+#: src/mn-main.c:184
+msgid "Display the mail summary dialog"
+msgstr ""
+
+#: src/mn-main.c:193
 msgid "Display the properties dialog"
 msgstr ""
 
-#: src/mn-main.c:160
+#: src/mn-main.c:202
 msgid "Display the about dialog"
 msgstr ""
 
-#: src/mn-main.c:169
+#: src/mn-main.c:211
+msgid "Close the mail summary popup"
+msgstr ""
+
+#: src/mn-main.c:220
 msgid "Update the mail status"
 msgstr ""
 
-#: src/mn-main.c:178
+#: src/mn-main.c:229
 msgid "Report the mail status"
 msgstr ""
 
-#: src/mn-main.c:187
+#: src/mn-main.c:238
 msgid "Unset obsolete GConf configuration and exit"
 msgstr ""
 
@@ -779,178 +916,241 @@ msgstr ""
 #. * We can't use mn_error_dialog() because gtk_init() has not been
 #. * called yet.
 #.
-#: src/mn-main.c:213
+#: src/mn-main.c:264
 msgid "multi-threading is not available"
 msgstr ""
 
-#: src/mn-main.c:258
+#: src/mn-main.c:309
 msgid ""
 "Bonobo could not locate the automation object. Please check your Mail "
 "Notification installation."
 msgstr ""
 
-#: src/mn-main.c:263
+#: src/mn-main.c:314
 msgid "Unable to initialize the GnomeVFS library."
 msgstr ""
 
-#: src/mn-main.c:285
+#: src/mn-main.c:350
 msgid "updating the mail status"
 msgstr ""
 
-#: src/mn-main.c:301
+#: src/mn-main.c:368
 msgid "Mail Notification is already running"
 msgstr ""
 
-#: src/mn-main.c:308
+#: src/mn-main.c:375
 msgid ""
 "Bonobo could not locate the GNOME_MailNotification_Automation.server file. "
 "Please check your Mail Notification installation."
 msgstr ""
 
-#: src/mn-main.c:312
+#: src/mn-main.c:379
 msgid ""
 "Bonobo was unable to register the automation server. Please check your Mail "
 "Notification installation."
 msgstr ""
 
-#: src/mn-mbox-mailbox.gob:171
+#: src/mn-mbox-mailbox.gob:221
 #, c-format
 msgid "error while reading mailbox: %s"
 msgstr ""
 
-#: src/mn-mbox-mailbox.gob:179
+#: src/mn-mbox-mailbox.gob:230
 #, c-format
 msgid "unable to open mailbox: %s"
 msgstr ""
 
-#: src/mn-mh-mailbox.gob:122
+#: src/mn-message-label.gob:77
+msgid "Unreadable message"
+msgstr ""
+
+#: src/mn-message-label.gob:97
+msgid "From"
+msgstr ""
+
+#: src/mn-message-label.gob:98
+msgid "Subject"
+msgstr ""
+
+#: src/mn-message-label.gob:102
+msgid "Sent"
+msgstr ""
+
+#: src/mn-message-label.gob:151
+#, c-format
+msgid "%i second ago"
+msgid_plural "%i seconds ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:155
+#, c-format
+msgid "%i minute ago"
+msgid_plural "%i minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:160
+#, c-format
+msgid "%i hour ago"
+msgid_plural "%i hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:165
+#, c-format
+msgid "%i day ago"
+msgid_plural "%i days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-mime.c:105
+msgid "unable to parse MIME message"
+msgstr ""
+
+#: src/mn-message.gob:82
+msgid "Unknown"
+msgstr ""
+
+#: src/mn-mh-mailbox.gob:184
 #, c-format
 msgid "error while reading .mh_sequences: %s"
 msgstr ""
 
-#: src/mn-mh-mailbox.gob:130
+#: src/mn-mh-mailbox.gob:196
 #, c-format
 msgid "unable to open .mh_sequences: %s"
 msgstr ""
 
-#: src/mn-pending-mailbox.gob:33
+#: src/mn-pending-mailbox.gob:35
 msgid "detecting"
 msgstr ""
 
-#: src/mn-pi-mailbox-properties.gob:74
+#: src/mn-pi-mailbox-properties.gob:76
 msgid "_Hostname:"
 msgstr ""
 
-#: src/mn-pi-mailbox-properties.gob:92
+#: src/mn-pi-mailbox-properties.gob:94
 msgid "_Details"
 msgstr ""
 
-#: src/mn-pi-mailbox-properties.gob:104
+#: src/mn-pi-mailbox-properties.gob:106
 msgid "sta_ndard"
 msgstr ""
 
-#: src/mn-pi-mailbox-properties.gob:114
+#: src/mn-pi-mailbox-properties.gob:116
 msgid "_in-band SSL/TLS"
 msgstr ""
 
-#: src/mn-pi-mailbox-properties.gob:124
+#: src/mn-pi-mailbox-properties.gob:126
 msgid "SSL/TLS on sepa_rate port"
 msgstr ""
 
-#: src/mn-pop3-mailbox-properties.gob:84
+#: src/mn-pop3-mailbox-properties.gob:86
 msgid "The hostname or IP address of the POP3 server"
 msgstr ""
 
-#: src/mn-pop3-mailbox-properties.gob:85
+#: src/mn-pop3-mailbox-properties.gob:87
 msgid "Your username on the POP3 server"
 msgstr ""
 
-#: src/mn-pop3-mailbox-properties.gob:86
+#: src/mn-pop3-mailbox-properties.gob:88
 msgid "Your password on the POP3 server"
 msgstr ""
 
-#: src/mn-pop3-mailbox-properties.gob:87 src/mn-pop3-mailbox-properties.gob:88
+#: src/mn-pop3-mailbox-properties.gob:89 src/mn-pop3-mailbox-properties.gob:90
 msgid "The port number of the POP3 server"
 msgstr ""
 
-#: src/mn-pop3-mailbox.gob:256
+#: src/mn-pop3-mailbox.gob:271
 msgid "invalid arguments for the LOGIN-DELAY capability"
 msgstr ""
 
-#: src/mn-pop3-mailbox.gob:523
+#: src/mn-pop3-mailbox.gob:536
+msgid "unknown error"
+msgstr ""
+
+#: src/mn-pop3-mailbox.gob:666
 #, 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:682
+#: src/mn-pop3-mailbox.gob:831
 msgid "server does not support APOP authentication"
 msgstr ""
 
-#: src/mn-pop3-mailbox.gob:710
+#: src/mn-pop3-mailbox.gob:859
 msgid "falling back to APOP authentication"
 msgstr ""
 
-#: src/mn-pop3-mailbox.gob:715
+#: src/mn-pop3-mailbox.gob:864
 msgid "falling back to USER/PASS authentication"
 msgstr ""
 
-#: src/mn-properties.c:151
+#: src/mn-properties.c:161
+msgid "top left"
+msgstr ""
+
+#: src/mn-properties.c:162
+msgid "top right"
+msgstr ""
+
+#: src/mn-properties.c:163
+msgid "bottom left"
+msgstr ""
+
+#: src/mn-properties.c:164
+msgid "bottom right"
+msgstr ""
+
+#: src/mn-properties.c:240
 msgid "No mailbox selected."
 msgstr ""
 
-#: src/mn-properties.c:156
+#: src/mn-properties.c:245
 #, c-format
 msgid "%i mailbox selected."
 msgid_plural "%i mailboxes selected."
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-shell.gob:204
-msgid "A command error has occurred"
+#: src/mn-shell.gob:84
+msgid "You have new mail."
+msgstr ""
+
+#: src/mn-shell.gob:96
+msgid "A command error has occurred in Mail Notification"
 msgstr ""
 
-#: src/mn-shell.gob:205
+#: src/mn-shell.gob:97
 #, c-format
-msgid "Unable to execute double-clicked command: %s."
+msgid "Unable to execute new mail command: %s."
 msgstr ""
 
-#: src/mn-shell.gob:292
+#: src/mn-shell.gob:270
 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:296
+#: src/mn-shell.gob:274
 msgid "You have no new mail."
 msgstr ""
 
-#: src/mn-shell.gob:299
+#: src/mn-shell.gob:277
 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:304
+#: src/mn-shell.gob:282
 msgid "The following mailbox is unsupported:\n"
 msgid_plural "The following mailboxes are unsupported:\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-shell.gob:320
-msgid "You have new mail."
-msgstr ""
-
-#: src/mn-shell.gob:330
-msgid "A command error has occurred in Mail Notification"
-msgstr ""
-
-#: src/mn-shell.gob:331
-#, c-format
-msgid "Unable to execute new mail command: %s."
-msgstr ""
-
 #: src/mn-ssl.c:79
 msgid "unknown SSL/TLS error"
 msgstr ""
@@ -959,75 +1159,93 @@ msgstr ""
 msgid "Select _All"
 msgstr ""
 
-#: src/mn-sylpheed-mailbox.gob:93
+#: src/mn-stock.c:29
+msgid "_Mail Summary"
+msgstr ""
+
+#: src/mn-sylpheed-mailbox.gob:122
 #, c-format
 msgid "unable to open folder: %s"
 msgstr ""
 
-#: src/mn-sylpheed-mailbox.gob:127
+#: src/mn-sylpheed-mailbox.gob:180
 #, c-format
 msgid "unable to close folder: %s"
 msgstr ""
 
-#: src/mn-sylpheed-mailbox.gob:130
+#: src/mn-sylpheed-mailbox.gob:183
 #, c-format
 msgid "error while reading folder: %s"
 msgstr ""
 
-#: src/mn-system-mailbox-properties.gob:32 src/mn-uri.gob:391
+#: src/mn-system-mailbox-properties.gob:34 src/mn-uri.gob:393
 msgid "System Mailbox"
 msgstr ""
 
-#: src/mn-system-mailbox-properties.gob:55
+#: src/mn-system-mailbox-properties.gob:57
 #, c-format
 msgid "Your system mailbox (<span weight=\"bold\">%s</span>) will be used."
 msgstr ""
 
-#: src/mn-system-mailbox-properties.gob:62
+#: src/mn-system-mailbox-properties.gob:64
 msgid ""
 "The location of your system mailbox could not be detected. Please set the "
 "MAIL environment variable."
 msgstr ""
 
-#: src/mn-unsupported-mailbox.gob:31
+#: src/mn-unsupported-mailbox.gob:33
 msgid "The reason why the mailbox is unsupported"
 msgstr ""
 
-#: src/mn-unsupported-mailbox.gob:38
+#: src/mn-unsupported-mailbox.gob:40
 msgid "unsupported"
 msgstr ""
 
-#: src/mn-util.c:199
+#: src/mn-util.c:233
 #, c-format
 msgid "error loading image: %s"
 msgstr ""
 
-#: src/mn-util.c:237
+#: src/mn-util.c:271
 #, c-format
-msgid "widget %s not found in interface %s"
+msgid "widget \"%s\" not found in interface \"%s\""
 msgstr ""
 
-#: src/mn-util.c:355
+#: src/mn-util.c:385
 msgid "received an invalid URI list"
 msgstr ""
 
-#: src/mn-util.c:391
+#: src/mn-util.c:421
 msgid "received an invalid Mozilla URL"
 msgstr ""
 
-#: src/mn-util.c:484
+#: src/mn-util.c:514
 msgid "Unable to display help"
 msgstr ""
 
-#: src/mn-util.c:498
+#: src/mn-util.c:528
 #, c-format
 msgid "Unable to create a thread: %s."
 msgstr ""
 
-#: src/mn-util.c:701
+#: src/mn-util.c:705
+msgid "_Do not show this message again"
+msgstr ""
+
+#: src/mn-util.c:789
 msgid "A fatal error has occurred in Mail Notification"
 msgstr ""
 
+#: src/mn-util.c:804
+#, c-format
+msgid "unable to get current time: %s"
+msgstr ""
+
+#: src/mn-util.c:887
+#, c-format
+msgid "invalid signal specification \"%s\""
+msgstr ""
+
 #: ui/mailbox-properties.glade.h:1
 msgid "_Mailbox type:"
 msgstr ""
@@ -1041,79 +1259,135 @@ msgid "*"
 msgstr ""
 
 #: ui/properties.glade.h:3
-msgid "<span weight=\"bold\">Commands</span>"
+msgid "<span weight=\"bold\">General</span>"
 msgstr ""
 
 #: ui/properties.glade.h:4
-msgid "<span weight=\"bold\">General</span>"
+msgid "<span weight=\"bold\">Mailbox List</span>"
 msgstr ""
 
 #: ui/properties.glade.h:5
-msgid "<span weight=\"bold\">Mailboxes</span>"
+msgid "<span weight=\"bold\">Position</span>"
 msgstr ""
 
 #: ui/properties.glade.h:6
-msgid "Mail Notification Properties"
+msgid "General"
 msgstr ""
 
 #: ui/properties.glade.h:7
-msgid "The amount of time to wait between mail checks"
+msgid "Hori_zontal offset:"
 msgstr ""
 
 #: ui/properties.glade.h:8
-msgid "The command to run when new mail arrives"
+msgid "Mail Notification Properties"
 msgstr ""
 
 #: ui/properties.glade.h:9
-msgid "The command to run when the icon is double-clicked"
+msgid "Mail Summary Popup"
 msgstr ""
 
 #: ui/properties.glade.h:10
-msgid "When _new mail arrives:"
+msgid "Mailboxes"
 msgstr ""
 
 #: ui/properties.glade.h:11
-msgid "When double-click_ed:"
+msgid "P_osition:"
 msgstr ""
 
 #: ui/properties.glade.h:12
-msgid "Whether the status icon should blink on errors or not"
+msgid "The amount of time to wait before closing the mail summary popup"
 msgstr ""
 
 #: ui/properties.glade.h:13
-msgid "Whether to run a command when new mail arrives or not"
+msgid "The amount of time to wait between mail checks"
 msgstr ""
 
 #: ui/properties.glade.h:14
-msgid "Whether to run a command when the icon is double-clicked or not"
+msgid "The command to run when new mail arrives"
 msgstr ""
 
 #: ui/properties.glade.h:15
 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:16
+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:17
+msgid "Whether the status icon should blink on errors or not"
+msgstr ""
+
+#: ui/properties.glade.h:18
+msgid "Whether to automatically close the mail summary popup or not"
+msgstr ""
+
+#: ui/properties.glade.h:19
+msgid "Whether to display the mail summary popup when new mail arrives or not"
+msgstr ""
+
+#: ui/properties.glade.h:20
+msgid "Whether to run a command when new mail arrives or not"
+msgstr ""
+
+#: ui/properties.glade.h:21
+msgid ""
 "Whether to start Mail Notification when you log into your GNOME session or "
 "not"
 msgstr ""
 
-#: ui/properties.glade.h:16
+#: ui/properties.glade.h:22
+msgid "_Automatically close after:"
+msgstr ""
+
+#: ui/properties.glade.h:23
 msgid "_Blink on errors"
 msgstr ""
 
-#: ui/properties.glade.h:17
+#: ui/properties.glade.h:24
 msgid "_Delay between mail checks:"
 msgstr ""
 
-#: ui/properties.glade.h:18
+#: ui/properties.glade.h:25
+msgid "_Enable mail summary popup"
+msgstr ""
+
+#: ui/properties.glade.h:26
+msgid "_Run a command when new mail arrives:"
+msgstr ""
+
+#: ui/properties.glade.h:27
 msgid "_Start Mail Notification on GNOME login"
 msgstr ""
 
-#: ui/properties.glade.h:19
+#: ui/properties.glade.h:28
+msgid "_Vertical offset:"
+msgstr ""
+
+#: ui/properties.glade.h:29
 msgid "minutes"
 msgstr ""
 
-#: ui/properties.glade.h:20
+#: ui/properties.glade.h:30
+msgid "pixels"
+msgstr ""
+
+#: ui/properties.glade.h:31
 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 ""
+
 #: ui/welcome.glade.h:1
 msgid ""
 "<span weight=\"bold\" size=\"larger\">First startup</span>\n"
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.6.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2004-09-09 01:43+0200\n"
+"POT-Creation-Date: 2004-10-06 19:31+0200\n"
 "PO-Revision-Date: 2004-09-07 00:04+0200\n"
 "Last-Translator: Duarte Henriques <duarte_henriques@myrealbox.com>\n"
 "Language-Team: Duarte Henriques <duarte_henriques@myrealbox.com>\n"
@@ -33,8 +33,8 @@ 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:38
-#: src/mn-mail-icon.gob:160 src/mn-main.c:221
+#: data/mail-notification.soundlist.in.h:1 src/mn-about-dialog.gob:40
+#: src/mn-mail-icon.gob:163 src/mn-main.c:272
 msgid "Mail Notification"
 msgstr "Notificação de Correio"
 
@@ -43,110 +43,195 @@ msgid "Get notified when new mail arrives"
 msgstr "Notificar quando chega novo correio"
 
 #: data/mail-notification.schemas.in.h:1
-msgid "Blink on errors"
+msgid "Automatically close the mail summary popup"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:2
+msgid "Blink on errors"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:3
 msgid "Delay between mail checks (minutes part)."
 msgstr "Intervalo entre verificações de correio (minutos)."
 
-#: data/mail-notification.schemas.in.h:3
+#: data/mail-notification.schemas.in.h:4
 msgid "Delay between mail checks (seconds part)."
 msgstr "Intervalo entre verificações de correio (segundos)."
 
-#: data/mail-notification.schemas.in.h:4
-msgid "Double-clicked command"
-msgstr "Comando de duplo-clique"
-
 #: data/mail-notification.schemas.in.h:5
-msgid "Fingerprints of trusted X509 certificates"
+msgid "Do not show the immediate notification error dialog"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:6
+msgid "Enable mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:7
+msgid "Fingerprints of trusted X509 certificates"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:8
 msgid "Has already been run"
 msgstr "Já foi executado"
 
-#: data/mail-notification.schemas.in.h:7
+#: data/mail-notification.schemas.in.h:9
+#, fuzzy
+msgid "Height of mail summary dialog"
+msgstr "Altura do diálogo de propriedades"
+
+#: data/mail-notification.schemas.in.h:10
 msgid "Height of properties dialog"
 msgstr "Altura do diálogo de propriedades"
 
-#: data/mail-notification.schemas.in.h:8
-msgid "Mailboxes list"
+#: data/mail-notification.schemas.in.h:11
+msgid "Mail summary popup horizontal offset"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:12
+msgid "Mail summary popup position"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:13
+msgid "Mail summary popup vertical offset"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:14
+#, fuzzy
+msgid "Mailbox list"
 msgstr "Lista de caixas de correio"
 
-#: data/mail-notification.schemas.in.h:9
+#: data/mail-notification.schemas.in.h:15
 msgid "Minutes between mail checks"
 msgstr "Minutos entre verificações de correio"
 
-#: data/mail-notification.schemas.in.h:10
+#: data/mail-notification.schemas.in.h:16
+msgid "Minutes to wait before closing the mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:17
 msgid "New mail command"
 msgstr "Novo comando de correio"
 
-#: data/mail-notification.schemas.in.h:11
+#: data/mail-notification.schemas.in.h:18
 msgid "Run a command when new mail arrives"
 msgstr "Executar um comando quando chega novo correio"
 
-#: data/mail-notification.schemas.in.h:12
-msgid "Run a command when the icon is double-clicked"
-msgstr "Executar um comando quando fizer duplo-clique no ícone"
-
-#: data/mail-notification.schemas.in.h:13
+#: data/mail-notification.schemas.in.h:19
 msgid "Seconds between mail checks"
 msgstr "Segundos entre verificações de correio"
 
-#: data/mail-notification.schemas.in.h:14
+#: data/mail-notification.schemas.in.h:20
+msgid "Seconds to wait before closing the mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:21
+#, fuzzy
+msgid ""
+"The amount of time to wait before closing the mail summary popup (minutes "
+"part)."
+msgstr "A quantidade de tempo a esperar entre verificações de correio"
+
+#: data/mail-notification.schemas.in.h:22
+#, fuzzy
+msgid ""
+"The amount of time to wait before closing the mail summary popup (seconds "
+"part)."
+msgstr "A quantidade de tempo a esperar entre verificações de correio"
+
+#: data/mail-notification.schemas.in.h:23
 msgid "The command to run when new mail arrives."
 msgstr "O comando a executar quando chega novo correio."
 
-#: data/mail-notification.schemas.in.h:15
-msgid "The command to run when the icon is double-clicked."
-msgstr "O comando a executar quando fizer duplo-clique no ícone."
+#: data/mail-notification.schemas.in.h:24
+#, fuzzy
+msgid "The height of the mail summary dialog in pixels."
+msgstr "A altura em pixeis do diálogo de propriedades."
 
-#: data/mail-notification.schemas.in.h:16
+#: data/mail-notification.schemas.in.h:25
 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:17
+#: data/mail-notification.schemas.in.h:26
 msgid "The list of mailboxes to monitor."
 msgstr "A lista de caixas de correio a monitorizar."
 
-#: data/mail-notification.schemas.in.h:18
+#: data/mail-notification.schemas.in.h:27
 msgid ""
 "The list of trusted SSL/TLS servers (hostname:port) lacking a X509 "
 "certificate."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:19
+#: data/mail-notification.schemas.in.h:28
 msgid ""
 "The list of trusted X509 certificates, represented by their MD5 fingerprint."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:20
+#: data/mail-notification.schemas.in.h:29
+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:30
+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:31
+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:32
+#, fuzzy
+msgid "The width of the mail summary dialog in pixels."
+msgstr "A largura em pixeis do diálogo de propriedades."
+
+#: data/mail-notification.schemas.in.h:33
 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:21
+#: data/mail-notification.schemas.in.h:34
 msgid "Trusted servers list"
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:22
+#: data/mail-notification.schemas.in.h:35
 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:23
+#: data/mail-notification.schemas.in.h:36
 #, fuzzy
 msgid "Whether the status icon should blink on errors or not."
 msgstr "Se a imagem pisca ou não"
 
-#: data/mail-notification.schemas.in.h:24
+#: data/mail-notification.schemas.in.h:37
+#, fuzzy
+msgid "Whether to automatically close the mail summary popup or not."
+msgstr "Se um comando deverá ser executado quando chega novo correio."
+
+#: data/mail-notification.schemas.in.h:38
+#, fuzzy
+msgid "Whether to display the mail summary popup when new mail arrives or not."
+msgstr "Se um comando deverá ser executado quando chega novo correio."
+
+#: data/mail-notification.schemas.in.h:39
+msgid ""
+"Whether to prevent the immediate notification error dialog from being "
+"displayed or not."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:40
 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:25
-msgid "Whether to run a command when the icon is double-clicked or not."
-msgstr "Se um comando deverá ser executado quando fizer duplo-clique no ícone."
+#: data/mail-notification.schemas.in.h:41
+#, fuzzy
+msgid "Width of mail summary dialog"
+msgstr "Largura do diálogo de propriedades"
 
-#: data/mail-notification.schemas.in.h:26
+#: data/mail-notification.schemas.in.h:42
 msgid "Width of properties dialog"
 msgstr "Largura do diálogo de propriedades"
 
@@ -162,131 +247,118 @@ msgstr "Orientação"
 msgid "The orientation of the tray."
 msgstr "A orientação do tabuleiro."
 
-#: src/mn-about-dialog.gob:41
+#: src/mn-about-dialog.gob:43
 msgid "A Mail Notification Icon"
 msgstr "Um Ícone de Notificação de Correio"
 
-#: src/mn-about-dialog.gob:44
+#. translator: replace with your name and email
+#: src/mn-about-dialog.gob:47
 msgid "Jean-Yves Lefort <jylefort@brutele.be>"
 msgstr "Duarte Henriques <duarte_henriques@myrealbox.com>"
 
-#: src/mn-auth-combo-box.gob:99 src/mn-autodetect-mailbox-properties.gob:35
+#: src/mn-auth-combo-box.gob:101 src/mn-autodetect-mailbox-properties.gob:37
 msgid "<span style=\"italic\">autodetect</span>"
 msgstr "<span style=\"italic\">autodetectar</span>"
 
-#: src/mn-autodetect-mailbox-properties.gob:66
+#: src/mn-autodetect-mailbox-properties.gob:68
 msgid "_Location:"
 msgstr "_Localização:"
 
-#: src/mn-autodetect-mailbox-properties.gob:72
+#: src/mn-autodetect-mailbox-properties.gob:74
 msgid "_Browse..."
 msgstr "_Procurar..."
 
-#: src/mn-autodetect-mailbox-properties.gob:79
+#: src/mn-autodetect-mailbox-properties.gob:81
 msgid "The URI of the mailbox"
 msgstr "O URI da caixa de correio"
 
-#: src/mn-autodetect-mailbox-properties.gob:116
+#: src/mn-autodetect-mailbox-properties.gob:118
 msgid "Select a File or Folder"
 msgstr "Escolha um Ficheiro ou Pasta"
 
-#: src/mn-blinking-image.gob:30
+#: src/mn-blinking-image.gob:32
 msgid "Whether the image is blinking or not"
 msgstr "Se a imagem pisca ou não"
 
-#: src/mn-client-session.c:196 src/mn-client-session.c:203
-#, c-format
-msgid "unable to read from server: %s"
-msgstr "incapaz de ler do servidor: %s"
-
-#: src/mn-client-session.c:201
-msgid "unable to read from server: EOF"
-msgstr "incapaz de ler do servidor: EOF"
-
-#: src/mn-client-session.c:213
-#, c-format
-msgid "unable to decode data using SASL: %s"
-msgstr "incapaz de descodificar dados usando SASL: %s"
-
-#: src/mn-client-session.c:284
+#: src/mn-client-session.c:229
 #, c-format
 msgid "resolving %s"
 msgstr "resolvendo %s"
 
-#: src/mn-client-session.c:294
+#: src/mn-client-session.c:239
 #, c-format
 msgid "unable to resolve %s: %s"
 msgstr "incapaz de resolver %s: %s"
 
-#: src/mn-client-session.c:331
+#: src/mn-client-session.c:276
 #, c-format
 msgid "%s: unsupported address family"
 msgstr "%s: família de endereços não suportada"
 
-#: src/mn-client-session.c:338
+#: src/mn-client-session.c:283
 #, c-format
 msgid "%s: unable to create socket: %s"
 msgstr "%s: incapaz de criar socket: %s"
 
-#: src/mn-client-session.c:342
+#: src/mn-client-session.c:287
 #, c-format
 msgid "connecting to %s (%s) port %i"
 msgstr "ligando a %s (%s), porto %i"
 
-#: src/mn-client-session.c:345
+#: src/mn-client-session.c:290
 #, c-format
 msgid "unable to connect: %s"
 msgstr "incapaz de ligar: %s"
 
-#: src/mn-client-session.c:350
+#: src/mn-client-session.c:295
 msgid "connected successfully"
 msgstr "ligado com sucesso"
 
 #. if reached, we couldn't find a working address
-#: src/mn-client-session.c:356
+#: src/mn-client-session.c:301
 #, c-format
 msgid "unable to connect to %s"
 msgstr "incapaz de ligar a %s"
 
-#: src/mn-client-session.c:372
+#: src/mn-client-session.c:317
 #, c-format
 msgid "unable to initialize the OpenSSL library: %s"
 msgstr "incapaz de inicializar a biblioteca OpenSSL: %s"
 
-#: src/mn-client-session.c:380
+#: src/mn-client-session.c:325
 #, fuzzy, c-format
 msgid "unable to create a SSL/TLS object: %s"
 msgstr "incapaz de criar um objecto SSL: %s"
 
-#: src/mn-client-session.c:386
+#: src/mn-client-session.c:331
 #, fuzzy, c-format
 msgid "unable to set the SSL/TLS file descriptor: %s"
 msgstr "incapaz de definir o descritor de ficheiro SSL: %s"
 
-#: src/mn-client-session.c:392
+#: src/mn-client-session.c:337
 #, fuzzy, c-format
 msgid "unable to perform the SSL/TLS handshake: %s"
 msgstr "incapaz de definir o descritor de ficheiro SSL: %s"
 
-#: src/mn-client-session.c:398
+#: src/mn-client-session.c:343
 msgid "untrusted server"
 msgstr ""
 
-#: src/mn-client-session.c:402
+#: src/mn-client-session.c:347
 #, c-format
 msgid "a SSL/TLS layer is now active (%s, %s %i-bit)"
 msgstr ""
 
-#: src/mn-client-session.c:449
+#: src/mn-client-session.c:394
 #, c-format
 msgid "%s, fingerprint: %s"
 msgstr ""
 
-#: src/mn-client-session.c:478
+#: src/mn-client-session.c:423
 msgid "missing certificate"
 msgstr ""
 
-#: src/mn-client-session.c:504
+#: src/mn-client-session.c:449
 #, c-format
 msgid ""
 "Mail Notification was unable to trust \"%s\" (%s). It is possible that "
@@ -298,95 +370,109 @@ msgid ""
 "shown again."
 msgstr ""
 
-#: src/mn-client-session.c:521
+#: src/mn-client-session.c:466
 msgid "Connect to untrusted server?"
 msgstr ""
 
-#: src/mn-client-session.c:526
+#: src/mn-client-session.c:471
 msgid "Co_nnect"
 msgstr ""
 
-#: src/mn-client-session.c:584
+#: src/mn-client-session.c:527
 #, c-format
 msgid "response \"%s\" is not valid in current context"
 msgstr "a resposta \"%s\" não é válida no contexto actual"
 
-#: src/mn-client-session.c:610
+#: src/mn-client-session.c:553
 #, c-format
 msgid "unable to parse response \"%s\""
 msgstr "incapaz de processar resposta \"%s\""
 
-#: src/mn-client-session.c:657
+#: src/mn-client-session.c:592 src/mn-client-session.c:599
+#, c-format
+msgid "unable to read from server: %s"
+msgstr "incapaz de ler do servidor: %s"
+
+#: src/mn-client-session.c:597
+msgid "unable to read from server: EOF"
+msgstr "incapaz de ler do servidor: EOF"
+
+#: src/mn-client-session.c:609
+#, c-format
+msgid "unable to decode data using SASL: %s"
+msgstr "incapaz de descodificar dados usando SASL: %s"
+
+#: src/mn-client-session.c:746
 #, c-format
 msgid "unable to encode data using SASL: %s"
 msgstr "incapaz de encodificar dados usando SASL: %s"
 
-#: src/mn-client-session.c:688 src/mn-client-session.c:695
+#: src/mn-client-session.c:777 src/mn-client-session.c:784
 #, c-format
 msgid "unable to write to server: %s"
 msgstr "incapaz de escrever para o servidor: %s"
 
-#: src/mn-client-session.c:693
+#: src/mn-client-session.c:782
 msgid "unable to write to server: EOF"
 msgstr "incapaz de escrever para o servidor: EOF"
 
-#: src/mn-client-session.c:725
+#: src/mn-client-session.c:814
 #, c-format
 msgid "unable to encode Base64: %s"
 msgstr "incapaz de encodificar em Base64: %s"
 
-#: src/mn-client-session.c:828
+#: src/mn-client-session.c:917
 #, c-format
 msgid "unable to initialize the SASL library: %s"
 msgstr "incapaz de inicializar a biblioteca SASL: %s"
 
-#: src/mn-client-session.c:837
+#: src/mn-client-session.c:926
 #, 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:843
+#: src/mn-client-session.c:932
 #, 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:877
+#: src/mn-client-session.c:966
 #, 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:916
+#: src/mn-client-session.c:1005
 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:920
+#: src/mn-client-session.c:1009
 #, c-format
 msgid "unable to start SASL authentication: %s"
 msgstr "incapaz de iniciar autenticação SASL: %s"
 
-#: src/mn-client-session.c:924
+#: src/mn-client-session.c:1013
 #, c-format
 msgid "unable to create a SASL connection: %s"
 msgstr "incapaz de criar uma ligação SASL: %s"
 
-#: src/mn-client-session.c:974
+#: src/mn-client-session.c:1063
 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:978
+#: src/mn-client-session.c:1067
 #, c-format
 msgid "%s, aborting SASL authentication"
 msgstr "%s, abortando a autenticação SASL"
 
 #. compliance error
-#: src/mn-client-session.c:983
+#: src/mn-client-session.c:1072
 #, 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:986
+#: src/mn-client-session.c:1075
 msgid ""
 "the server sent a SASL challenge, but there was a pending initial SASL "
 "client response"
@@ -394,7 +480,7 @@ msgstr ""
 "o servidor enviou um desafio SASL, mas havia uma resposta SASL inicial "
 "pendente do cliente"
 
-#: src/mn-client-session.c:1000
+#: src/mn-client-session.c:1089
 msgid ""
 "the server did not send a SASL challenge, but there was no pending initial "
 "SASL client response"
@@ -402,136 +488,193 @@ 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:1023
+#: src/mn-client-session.c:1112
 #, 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:1028
+#: src/mn-client-session.c:1117
 #, c-format
 msgid "unable to get SASL_MAXOUTBUF property: %s"
 msgstr "incapaz de obter a propriedade SASL_MAXOUTBUF: %s"
 
-#: src/mn-client-session.c:1034
+#: src/mn-client-session.c:1123
 #, 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:109
+#: src/mn-conf.c:123
 #, c-format
 msgid "recursively unsetting %s"
 msgstr ""
 
-#: src/mn-conf.c:113
+#: src/mn-conf.c:127
 msgid "syncing the GConf database"
 msgstr ""
 
-#: src/mn-conf.c:116
+#: src/mn-conf.c:130
 #, fuzzy
 msgid "completed"
 msgstr "Completo"
 
-#: src/mn-gmail-mailbox-properties.gob:77
+#: src/mn-gmail-mailbox-properties.gob:79
 msgid "Your Gmail username"
 msgstr "O seu nome de utilizador Gmail"
 
-#: src/mn-gmail-mailbox-properties.gob:78
+#: src/mn-gmail-mailbox-properties.gob:80
 msgid "Your Gmail password"
 msgstr "A sua senha Gmail"
 
-#: src/mn-gmail-mailbox.gob:220
+#: src/mn-gmail-mailbox.gob:65
+#, fuzzy
+msgid "libsoup has not been compiled with SSL/TLS support"
+msgstr "suporte SSL não foi compilado"
+
+#: src/mn-gmail-mailbox.gob:110 src/mn-gmail-mailbox.gob:331
+#, fuzzy, c-format
+msgid "unable to parse URI \"%s\""
+msgstr "incapaz de processar resposta \"%s\""
+
+#: src/mn-gmail-mailbox.gob:257
 msgid "logging in"
 msgstr "ligando-se"
 
-#: src/mn-gmail-mailbox.gob:239 src/mn-gmail-mailbox.gob:279
-#: src/mn-gmail-mailbox.gob:313 src/mn-gmail-mailbox.gob:418
+#: src/mn-gmail-mailbox.gob:271 src/mn-gmail-mailbox.gob:342
+#: src/mn-gmail-mailbox.gob:380 src/mn-gmail-mailbox.gob:415
+msgid "login failed"
+msgstr "login falhou"
+
+#: src/mn-gmail-mailbox.gob:283 src/mn-gmail-mailbox.gob:356
+#: src/mn-gmail-mailbox.gob:394 src/mn-gmail-mailbox.gob:503
 #, c-format
 msgid "unable to transfer data: %s"
 msgstr "incapaz de transferir dados: %s"
 
-#: src/mn-gmail-mailbox.gob:265 src/mn-gmail-mailbox.gob:299
-#: src/mn-gmail-mailbox.gob:334
-msgid "login failed"
-msgstr "login falhou"
-
-#: src/mn-gmail-mailbox.gob:328
+#: src/mn-gmail-mailbox.gob:409
 msgid "successfully logged in"
 msgstr "ligado com sucesso"
 
-#: src/mn-gmail-mailbox.gob:406
+#: src/mn-gmail-mailbox.gob:487
 msgid "searching for unread mail"
 msgstr "a procurar correio não lido"
 
-#: src/mn-gmail-mailbox.gob:427
+#: src/mn-gmail-mailbox.gob:491
+#, fuzzy
+msgid "unable to search for unread mail"
+msgstr "a procurar correio não lido"
+
+#: src/mn-gmail-mailbox.gob:604
 msgid "unable to parse Gmail data"
 msgstr "incapaz de processar dados Gmail"
 
-#: src/mn-imap-mailbox-properties.gob:92
+#: src/mn-gmime-stream-vfs.gob:49
+#, fuzzy, c-format
+msgid "unable to read %s: %s"
+msgstr "incapaz de resolver %s: %s"
+
+#: src/mn-gmime-stream-vfs.gob:51
+#, fuzzy, c-format
+msgid "unable to write to %s: %s"
+msgstr "incapaz de escrever para o servidor: %s"
+
+#: src/mn-gmime-stream-vfs.gob:53
+#, fuzzy, c-format
+msgid "unable to seek in %s: %s"
+msgstr "incapaz de resolver %s: %s"
+
+#: src/mn-gmime-stream-vfs.gob:55
+#, fuzzy, c-format
+msgid "unable to tell position of %s: %s"
+msgstr "incapaz de monitorizar %s: %s"
+
+#: src/mn-gmime-stream-vfs.gob:57
+#, fuzzy, c-format
+msgid "unable to close %s: %s"
+msgstr "incapaz de fechar pasta: %s"
+
+#: src/mn-imap-mailbox-properties.gob:94
 msgid "Mailbox:"
 msgstr "Caixa de Correio:"
 
-#: src/mn-imap-mailbox-properties.gob:96
+#: src/mn-imap-mailbox-properties.gob:98
 msgid "in_box"
 msgstr "caixa de _entrada"
 
-#: src/mn-imap-mailbox-properties.gob:107
+#: src/mn-imap-mailbox-properties.gob:109
 msgid "oth_er:"
 msgstr "_outros"
 
-#: src/mn-imap-mailbox-properties.gob:122
+#: src/mn-imap-mailbox-properties.gob:124
 msgid "The hostname or IP address of the IMAP server"
 msgstr "O hostname ou endereço IP do servidor IMAP"
 
-#: src/mn-imap-mailbox-properties.gob:123
+#: src/mn-imap-mailbox-properties.gob:125
 msgid "Your username on the IMAP server"
 msgstr "O seu nome de utilizador no servidor IMAP"
 
-#: src/mn-imap-mailbox-properties.gob:124
+#: src/mn-imap-mailbox-properties.gob:126
 msgid "Your password on the IMAP server"
 msgstr "A sua senha no servidor IMAP"
 
-#: src/mn-imap-mailbox-properties.gob:125
-#: src/mn-imap-mailbox-properties.gob:126
+#: src/mn-imap-mailbox-properties.gob:127
+#: src/mn-imap-mailbox-properties.gob:128
 msgid "The port number of the IMAP server"
 msgstr "O número do porto do servidor IMAP"
 
-#: src/mn-imap-mailbox-properties.gob:127
+#: src/mn-imap-mailbox-properties.gob:129
 msgid "The mailbox name"
 msgstr "O nome da caixa de correio"
 
-#: src/mn-imap-mailbox.gob:112 src/mn-pop3-mailbox.gob:125
+#: src/mn-imap-mailbox.gob:132 src/mn-pop3-mailbox.gob:141
 #, fuzzy
 msgid "SSL/TLS support has not been compiled in"
 msgstr "suporte SSL não foi compilado"
 
-#: src/mn-imap-mailbox.gob:179
+#: src/mn-imap-mailbox.gob:203
 msgid "server did not send capabilities"
 msgstr "servidor não enviou habilidades"
 
-#: src/mn-imap-mailbox.gob:292
+#: src/mn-imap-mailbox.gob:318
 msgid "server advertised LOGINDISABLED, not using LOGIN authentication"
 msgstr "servidor anunciou LOGINDISABLED, não usando a autenticação LOGIN"
 
-#: src/mn-imap-mailbox.gob:293
+#: src/mn-imap-mailbox.gob:319
 msgid "unable to login"
 msgstr "incapaz de ligar"
 
 #. compliance error
-#: src/mn-imap-mailbox.gob:361
+#: src/mn-imap-mailbox.gob:447
+#, fuzzy
+msgid "server did not send search results"
+msgstr "servidor não enviou estado"
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:523
+#, fuzzy
+msgid "server did not send all the messages we requested"
+msgstr "servidor não enviou estado"
+
+#: src/mn-imap-mailbox.gob:570
+#, fuzzy
+msgid "unable to fetch message"
+msgstr "incapaz de ligar: %s"
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:617
 msgid "server did not send status"
 msgstr "servidor não enviou estado"
 
-#: src/mn-imap-mailbox.gob:583 src/mn-pop3-mailbox.gob:744
+#: src/mn-imap-mailbox.gob:856 src/mn-pop3-mailbox.gob:903
 msgid "unknown server error"
 msgstr "erro de servidor desconhecido"
 
-#: src/mn-imap-mailbox.gob:656 src/mn-pop3-mailbox.gob:210
+#: src/mn-imap-mailbox.gob:927 src/mn-pop3-mailbox.gob:225
 #, fuzzy
 msgid "server does not support in-band SSL/TLS"
 msgstr "servidor não suporta autenticação APOP"
 
-#: src/mn-imap-mailbox.gob:675 src/mn-pop3-mailbox.gob:674
+#: src/mn-imap-mailbox.gob:946 src/mn-pop3-mailbox.gob:823
 msgid ""
 "a SASL authentication mechanism was selected but SASL support has not been "
 "compiled in"
@@ -539,41 +682,32 @@ msgstr ""
 "foi escolhido um mecanismo de autenticação SASL, mas o suporte SASL não foi "
 "compilado"
 
-#: src/mn-imap-mailbox.gob:683 src/mn-pop3-mailbox.gob:686
+#: src/mn-imap-mailbox.gob:954 src/mn-pop3-mailbox.gob:835
 #, c-format
 msgid "unknown authentication mechanism \"%s\""
 msgstr "mecanismo de autenticação desconhecido \"%s\""
 
-#: src/mn-imap-mailbox.gob:701
+#: src/mn-imap-mailbox.gob:972
 msgid "falling back to IMAP LOGIN authentication"
 msgstr "recorrendo à autenticação IMAP LOGIN"
 
-#: src/mn-imap-mailbox.gob:705 src/mn-pop3-mailbox.gob:720
+#: src/mn-imap-mailbox.gob:976 src/mn-pop3-mailbox.gob:869
 msgid "authentication failed"
 msgstr "autenticação falhou"
 
-#: src/mn-mail-icon.gob:81
+#: src/mn-mail-icon.gob:84 ui/summary-dialog.glade.h:2
 msgid "_Update"
 msgstr "_Actualizar"
 
-#: src/mn-mail-icon.gob:87
+#: src/mn-mail-icon.gob:90
 msgid "R_emove From Notification Area"
 msgstr "_Remover da área de notificação"
 
-#: src/mn-mail-icon.gob:172
-#, c-format
-msgid "_Run %s"
-msgstr "_Executar %s"
-
-#: src/mn-mail-icon.gob:173
-msgid "_Run Default Action"
-msgstr "_Executar acção por omissão"
-
 #: src/mn-mailbox-properties-dialog.c:109
 msgid "Add a Mailbox"
 msgstr "Acrescentar uma Caixa de Correio"
 
-#: src/mn-mailbox-properties-dialog.c:331
+#: src/mn-mailbox-properties-dialog.c:328
 #, c-format
 msgid "%s Properties"
 msgstr "Propriedades de %s"
@@ -622,56 +756,61 @@ msgstr "Completo"
 msgid "Whether the properties are completely filled or not"
 msgstr "Se as propriedades estão completamente preenchidas"
 
-#: src/mn-mailbox-view.gob:254
+#: src/mn-mailbox-view.gob:263 src/mn-message-label.gob:74
 msgid "Mailbox"
 msgstr "Caixa de Correio"
 
-#: src/mn-mailbox-view.gob:268
+#. format column
+#: src/mn-mailbox-view.gob:279
 msgid "Format"
 msgstr "Formato"
 
-#: src/mn-mailbox-view.gob:543
+#: src/mn-mailbox-view.gob:569
 msgid "Unable to add mailbox"
 msgstr "Incapaz de adicionar caixa de correio"
 
-#: src/mn-mailbox-view.gob:543
+#: src/mn-mailbox-view.gob:569
 msgid "The mailbox is already in the list."
 msgstr "A caixa de correio já está na lista."
 
-#: src/mn-mailbox.gob:122
+#: src/mn-mailbox.gob:133
 msgid "The mailbox URI"
 msgstr "O URI da caixa de correio"
 
-#: src/mn-mailbox.gob:133
+#: src/mn-mailbox.gob:144
 msgid "The mailbox human-readable name"
 msgstr "O nome legível da caixa de correio"
 
-#: src/mn-mailbox.gob:137
+#: src/mn-mailbox.gob:148
 msgid "Whether the mailbox has to be manually checked or not"
 msgstr "Se a caixa de correio tem de ser manualmente verificada"
 
-#: src/mn-mailbox.gob:142
+#: src/mn-mailbox.gob:153
 msgid "Whether the mailbox has new mail or not"
 msgstr "Se a caixa de correio tem novo correio"
 
-#: src/mn-mailbox.gob:147
+#: src/mn-mailbox.gob:158
+msgid "The list of new and unread MNMessage objects"
+msgstr ""
+
+#: src/mn-mailbox.gob:212
 msgid "The mailbox error, if any"
 msgstr "O erro da caixa de correio, se houver"
 
-#: src/mn-mailbox.gob:251
+#: src/mn-mailbox.gob:310
 msgid "does not exist"
 msgstr "não existe"
 
-#: src/mn-mailbox.gob:287
+#: src/mn-mailbox.gob:342
 msgid "unknown format"
 msgstr "formato desconhecido"
 
-#: src/mn-mailbox.gob:355
-#, c-format
-msgid "unable to monitor %s: %s"
-msgstr "incapaz de monitorizar %s: %s"
+#: src/mn-mailbox.gob:408
+#, fuzzy, c-format
+msgid "unable to enable immediate notification for %s: %s"
+msgstr "incapaz de iniciar autenticação SASL: %s"
 
-#: src/mn-mailbox.gob:369
+#: src/mn-mailbox.gob:426
 #, c-format
 msgid ""
 "As a fallback, they will be checked every %i second (this delay is "
@@ -686,7 +825,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:380
+#: src/mn-mailbox.gob:437
 #, c-format
 msgid ""
 "As a fallback, they will be checked every %i minute (this delay is "
@@ -701,7 +840,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:391
+#: src/mn-mailbox.gob:448
 #, c-format
 msgid ""
 "As a fallback, they will be checked approximately every %i minute (this "
@@ -716,11 +855,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:405
+#: src/mn-mailbox.gob:464
 msgid "A monitoring error has occurred"
 msgstr "Ocorreu um erro de monitorização"
 
-#: src/mn-mailbox.gob:406
+#: src/mn-mailbox.gob:465
 #, fuzzy, c-format
 msgid ""
 "Mail Notification was unable to enable immediate notification for one or "
@@ -729,76 +868,90 @@ msgstr ""
 "A Notificação de Correio foi incapaz de activar notificação automática para "
 "uma ou mais caixas de correio. %s"
 
-#: src/mn-mailboxes.gob:143
+#: src/mn-mailboxes.gob:133
+#, fuzzy
+msgid "Whether one or more of the mailboxes has to be polled"
+msgstr "Se a caixa de correio tem de ser manualmente verificada"
+
+#: src/mn-mailboxes.gob:266
 #, c-format
 msgid "%s is unsupported: %s"
 msgstr "%s não é suportado: %s"
 
-#: src/mn-mailboxes.gob:170
+#: src/mn-mailboxes.gob:297
 #, c-format
 msgid "%s has new mail"
 msgstr "%s tem correio novo"
 
-#: src/mn-mailboxes.gob:170
+#: src/mn-mailboxes.gob:297
 #, c-format
 msgid "%s has no new mail"
 msgstr "%s não tem correio novo"
 
-#: src/mn-mailboxes.gob:186
+#: src/mn-mailboxes.gob:323
 #, c-format
 msgid "%s reported an error: %s"
 msgstr "%s relatou um erro: %s"
 
-#: src/mn-maildir-mailbox.gob:109
+#: src/mn-maildir-mailbox.gob:119
 #, c-format
 msgid "unable to open folder \"new\": %s"
 msgstr "incapaz de abrir pasta \"new\": %s"
 
-#: src/mn-maildir-mailbox.gob:137
+#: src/mn-maildir-mailbox.gob:161
 #, c-format
 msgid "unable to close folder \"new\": %s"
 msgstr "incapaz de fechar pasta \"new\": %s"
 
-#: src/mn-maildir-mailbox.gob:140
+#: src/mn-maildir-mailbox.gob:164
 #, c-format
 msgid "error while reading folder \"new\": %s"
 msgstr "erro ao ler pasta \"new\": %s"
 
-#: src/mn-main.c:85
+#: src/mn-main.c:97
 #, c-format
 msgid "Compiled-in mailbox backends: %s\n"
 msgstr "Backends mailbox compilados: %s\n"
 
-#: src/mn-main.c:103
+#: src/mn-main.c:114
 #, c-format
 msgid "Compiled-in features: %s\n"
 msgstr "Características compiladas: %s\n"
 
-#: src/mn-main.c:133
+#: src/mn-main.c:166
 msgid "Enable informational output"
 msgstr "Activar output informacional"
 
-#: src/mn-main.c:142
+#: src/mn-main.c:175
 msgid "List compiled-in features and exit"
 msgstr "Listar características compiladas e sair"
 
-#: src/mn-main.c:151
+#: src/mn-main.c:184
+#, fuzzy
+msgid "Display the mail summary dialog"
+msgstr "Mostrar o diálogo Sobre"
+
+#: src/mn-main.c:193
 msgid "Display the properties dialog"
 msgstr "Mostrar o diálogo de propriedades"
 
-#: src/mn-main.c:160
+#: src/mn-main.c:202
 msgid "Display the about dialog"
 msgstr "Mostrar o diálogo Sobre"
 
-#: src/mn-main.c:169
+#: src/mn-main.c:211
+msgid "Close the mail summary popup"
+msgstr ""
+
+#: src/mn-main.c:220
 msgid "Update the mail status"
 msgstr "Actualizar o estado do correio"
 
-#: src/mn-main.c:178
+#: src/mn-main.c:229
 msgid "Report the mail status"
 msgstr "Relatar o estado do correio"
 
-#: src/mn-main.c:187
+#: src/mn-main.c:238
 msgid "Unset obsolete GConf configuration and exit"
 msgstr ""
 
@@ -806,11 +959,11 @@ msgstr ""
 #. * We can't use mn_error_dialog() because gtk_init() has not been
 #. * called yet.
 #.
-#: src/mn-main.c:213
+#: src/mn-main.c:264
 msgid "multi-threading is not available"
 msgstr "multi-threading não está disponível"
 
-#: src/mn-main.c:258
+#: src/mn-main.c:309
 msgid ""
 "Bonobo could not locate the automation object. Please check your Mail "
 "Notification installation."
@@ -818,19 +971,19 @@ msgstr ""
 "Bonobo não conseguiu encontrar o objecto de automação. Por favor verifique a "
 "sua instalação de Notificação de Correio."
 
-#: src/mn-main.c:263
+#: src/mn-main.c:314
 msgid "Unable to initialize the GnomeVFS library."
 msgstr "Incapaz de inicializar a biblioteca GnomeVFS."
 
-#: src/mn-main.c:285
+#: src/mn-main.c:350
 msgid "updating the mail status"
 msgstr "actualizando o estado do correio"
 
-#: src/mn-main.c:301
+#: src/mn-main.c:368
 msgid "Mail Notification is already running"
 msgstr "Notificação de Correio já está a ser executado"
 
-#: src/mn-main.c:308
+#: src/mn-main.c:375
 msgid ""
 "Bonobo could not locate the GNOME_MailNotification_Automation.server file. "
 "Please check your Mail Notification installation."
@@ -838,7 +991,7 @@ msgstr ""
 "Bonobo não conseguiu encontrar o ficheiro GNOME_MailNotification_Automation."
 "server. Por favor verifique a sua instalação da Notificação de Correio."
 
-#: src/mn-main.c:312
+#: src/mn-main.c:379
 msgid ""
 "Bonobo was unable to register the automation server. Please check your Mail "
 "Notification installation."
@@ -846,144 +999,210 @@ msgstr ""
 "Bonobo foi incapaz de registar o servidor de automação. Por favor verifique "
 "a sua instalação da Notificação de Correio."
 
-#: src/mn-mbox-mailbox.gob:171
+#: src/mn-mbox-mailbox.gob:221
 #, c-format
 msgid "error while reading mailbox: %s"
 msgstr "erro ao ler a caixa de correio: %s"
 
-#: src/mn-mbox-mailbox.gob:179
+#: src/mn-mbox-mailbox.gob:230
 #, c-format
 msgid "unable to open mailbox: %s"
 msgstr "erro ao abrir a caixa de correio: %s"
 
-#: src/mn-mh-mailbox.gob:122
+#: src/mn-message-label.gob:77
+msgid "Unreadable message"
+msgstr ""
+
+#: src/mn-message-label.gob:97
+msgid "From"
+msgstr ""
+
+#: src/mn-message-label.gob:98
+msgid "Subject"
+msgstr ""
+
+#: src/mn-message-label.gob:102
+msgid "Sent"
+msgstr ""
+
+#: src/mn-message-label.gob:151
+#, c-format
+msgid "%i second ago"
+msgid_plural "%i seconds ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:155
+#, c-format
+msgid "%i minute ago"
+msgid_plural "%i minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:160
+#, c-format
+msgid "%i hour ago"
+msgid_plural "%i hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:165
+#, c-format
+msgid "%i day ago"
+msgid_plural "%i days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-mime.c:105
+#, fuzzy
+msgid "unable to parse MIME message"
+msgstr "incapaz de processar URI IMAP"
+
+#: src/mn-message.gob:82
+msgid "Unknown"
+msgstr ""
+
+#: src/mn-mh-mailbox.gob:184
 #, c-format
 msgid "error while reading .mh_sequences: %s"
 msgstr "erro ao ler .mh_sequences: %s"
 
-#: src/mn-mh-mailbox.gob:130
+#: src/mn-mh-mailbox.gob:196
 #, c-format
 msgid "unable to open .mh_sequences: %s"
 msgstr "erro ao abrir .mh_sequences: %s"
 
-#: src/mn-pending-mailbox.gob:33
+#: src/mn-pending-mailbox.gob:35
 msgid "detecting"
 msgstr "detectando"
 
-#: src/mn-pi-mailbox-properties.gob:74
+#: src/mn-pi-mailbox-properties.gob:76
 msgid "_Hostname:"
 msgstr "_Hostname:"
 
-#: src/mn-pi-mailbox-properties.gob:92
+#: src/mn-pi-mailbox-properties.gob:94
 msgid "_Details"
 msgstr "_Detalhes"
 
-#: src/mn-pi-mailbox-properties.gob:104
+#: src/mn-pi-mailbox-properties.gob:106
 msgid "sta_ndard"
 msgstr "sta_ndard"
 
-#: src/mn-pi-mailbox-properties.gob:114
+#: src/mn-pi-mailbox-properties.gob:116
 msgid "_in-band SSL/TLS"
 msgstr ""
 
-#: src/mn-pi-mailbox-properties.gob:124
+#: src/mn-pi-mailbox-properties.gob:126
 msgid "SSL/TLS on sepa_rate port"
 msgstr ""
 
-#: src/mn-pop3-mailbox-properties.gob:84
+#: 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:85
+#: 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:86
+#: src/mn-pop3-mailbox-properties.gob:88
 msgid "Your password on the POP3 server"
 msgstr "A sua senha no servidor POP3"
 
-#: src/mn-pop3-mailbox-properties.gob:87 src/mn-pop3-mailbox-properties.gob:88
+#: 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"
 
-#: src/mn-pop3-mailbox.gob:256
+#: src/mn-pop3-mailbox.gob:271
 msgid "invalid arguments for the LOGIN-DELAY capability"
 msgstr "argumentos inválidos para a habilidade LOGIN-DELAY"
 
-#: src/mn-pop3-mailbox.gob:523
+#: src/mn-pop3-mailbox.gob:536
+#, fuzzy
+msgid "unknown error"
+msgstr "erro de servidor desconhecido"
+
+#: src/mn-pop3-mailbox.gob:666
 #, 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:682
+#: src/mn-pop3-mailbox.gob:831
 msgid "server does not support APOP authentication"
 msgstr "servidor não suporta autenticação APOP"
 
-#: src/mn-pop3-mailbox.gob:710
+#: src/mn-pop3-mailbox.gob:859
 msgid "falling back to APOP authentication"
 msgstr "recorrendo a autenticação APOP"
 
-#: src/mn-pop3-mailbox.gob:715
+#: src/mn-pop3-mailbox.gob:864
 msgid "falling back to USER/PASS authentication"
 msgstr "recorrendo a autenticação USER/PASS"
 
-#: src/mn-properties.c:151
+#: src/mn-properties.c:161
+#, fuzzy
+msgid "top left"
+msgstr "Completo"
+
+#: src/mn-properties.c:162
+msgid "top right"
+msgstr ""
+
+#: src/mn-properties.c:163
+msgid "bottom left"
+msgstr ""
+
+#: src/mn-properties.c:164
+msgid "bottom right"
+msgstr ""
+
+#: src/mn-properties.c:240
 msgid "No mailbox selected."
 msgstr "Nenhuma caixa de correio seleccionada."
 
-#: src/mn-properties.c:156
+#: src/mn-properties.c:245
 #, 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:204
-msgid "A command error has occurred"
-msgstr "ocorreu um erro de comando"
+#: src/mn-shell.gob:84
+msgid "You have new mail."
+msgstr "Tem novo correio."
 
-#: src/mn-shell.gob:205
+#: src/mn-shell.gob:96
+msgid "A command error has occurred in Mail Notification"
+msgstr "Ocorreu um erro de comando na Notificação de Correio"
+
+#: src/mn-shell.gob:97
 #, c-format
-msgid "Unable to execute double-clicked command: %s."
-msgstr "Incapaz de executar comando de duplo-clique: %s."
+msgid "Unable to execute new mail command: %s."
+msgstr "Incapaz de executar o novo comando de correio: %s."
 
-#: src/mn-shell.gob:292
+#: src/mn-shell.gob:270
 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:296
+#: src/mn-shell.gob:274
 msgid "You have no new mail."
 msgstr "Não tem correio novo."
 
-#: src/mn-shell.gob:299
+#: src/mn-shell.gob:277
 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:304
+#: src/mn-shell.gob:282
 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 "You have new mail."
-msgstr "Tem novo correio."
-
-#: src/mn-shell.gob:330
-msgid "A command error has occurred in Mail Notification"
-msgstr "Ocorreu um erro de comando na Notificação de Correio"
-
-#: src/mn-shell.gob:331
-#, c-format
-msgid "Unable to execute new mail command: %s."
-msgstr "Incapaz de executar o novo comando de correio: %s."
-
 #: src/mn-ssl.c:79
 #, fuzzy
 msgid "unknown SSL/TLS error"
@@ -993,33 +1212,37 @@ msgstr "erro de servidor desconhecido"
 msgid "Select _All"
 msgstr "Seleccionar _Todas"
 
-#: src/mn-sylpheed-mailbox.gob:93
+#: src/mn-stock.c:29
+msgid "_Mail Summary"
+msgstr ""
+
+#: src/mn-sylpheed-mailbox.gob:122
 #, c-format
 msgid "unable to open folder: %s"
 msgstr "incapaz de abrir pasta: %s"
 
-#: src/mn-sylpheed-mailbox.gob:127
+#: src/mn-sylpheed-mailbox.gob:180
 #, c-format
 msgid "unable to close folder: %s"
 msgstr "incapaz de fechar pasta: %s"
 
-#: src/mn-sylpheed-mailbox.gob:130
+#: src/mn-sylpheed-mailbox.gob:183
 #, c-format
 msgid "error while reading folder: %s"
 msgstr "erro ao ler pasta: %s"
 
-#: src/mn-system-mailbox-properties.gob:32 src/mn-uri.gob:391
+#: src/mn-system-mailbox-properties.gob:34 src/mn-uri.gob:393
 msgid "System Mailbox"
 msgstr "Caixa de Correio de Sistema"
 
-#: src/mn-system-mailbox-properties.gob:55
+#: src/mn-system-mailbox-properties.gob:57
 #, c-format
 msgid "Your system mailbox (<span weight=\"bold\">%s</span>) will be used."
 msgstr ""
 "Será usada a sua caixa de correio de sistema (<span weight=\"bold\">%s</"
 "span>)."
 
-#: src/mn-system-mailbox-properties.gob:62
+#: src/mn-system-mailbox-properties.gob:64
 msgid ""
 "The location of your system mailbox could not be detected. Please set the "
 "MAIL environment variable."
@@ -1027,45 +1250,59 @@ msgstr ""
 "A localização da sua caixa de correi ode sistema não pode ser detectada. Por "
 "favor defina a variável de ambiente MAIL."
 
-#: src/mn-unsupported-mailbox.gob:31
+#: src/mn-unsupported-mailbox.gob:33
 msgid "The reason why the mailbox is unsupported"
 msgstr "A razão pela qual a caixa de correio não é suportada"
 
-#: src/mn-unsupported-mailbox.gob:38
+#: src/mn-unsupported-mailbox.gob:40
 msgid "unsupported"
 msgstr "não suportado"
 
-#: src/mn-util.c:199
+#: src/mn-util.c:233
 #, c-format
 msgid "error loading image: %s"
 msgstr "erro ao carregar imagem: %s"
 
-#: src/mn-util.c:237
-#, c-format
-msgid "widget %s not found in interface %s"
+#: src/mn-util.c:271
+#, fuzzy, c-format
+msgid "widget \"%s\" not found in interface \"%s\""
 msgstr "widget %s não foi encontrada na interface %s"
 
-#: src/mn-util.c:355
+#: src/mn-util.c:385
 msgid "received an invalid URI list"
 msgstr "recebida uma lista de URIs inválida"
 
-#: src/mn-util.c:391
+#: src/mn-util.c:421
 msgid "received an invalid Mozilla URL"
 msgstr "recebido um URL Mozilla inválido"
 
-#: src/mn-util.c:484
+#: src/mn-util.c:514
 msgid "Unable to display help"
 msgstr "Incapaz de mostrar ajuda"
 
-#: src/mn-util.c:498
+#: src/mn-util.c:528
 #, c-format
 msgid "Unable to create a thread: %s."
 msgstr "Incapaz de criar uma thread: %s."
 
-#: src/mn-util.c:701
+#: src/mn-util.c:705
+msgid "_Do not show this message again"
+msgstr ""
+
+#: src/mn-util.c:789
 msgid "A fatal error has occurred in Mail Notification"
 msgstr "Ocorreu um erro fatal na Notificação de Correio"
 
+#: src/mn-util.c:804
+#, fuzzy, c-format
+msgid "unable to get current time: %s"
+msgstr "incapaz de ligar a %s"
+
+#: src/mn-util.c:887
+#, c-format
+msgid "invalid signal specification \"%s\""
+msgstr ""
+
 #: ui/mailbox-properties.glade.h:1
 msgid "_Mailbox type:"
 msgstr "_Tipo de caixa de correio:"
@@ -1079,82 +1316,147 @@ msgid "*"
 msgstr "*"
 
 #: ui/properties.glade.h:3
-msgid "<span weight=\"bold\">Commands</span>"
-msgstr "<span weight=\"bold\">Comandos</span>"
-
-#: ui/properties.glade.h:4
 msgid "<span weight=\"bold\">General</span>"
 msgstr "<span weight=\"bold\">Geral</span>"
 
-#: ui/properties.glade.h:5
-msgid "<span weight=\"bold\">Mailboxes</span>"
+#: ui/properties.glade.h:4
+#, fuzzy
+msgid "<span weight=\"bold\">Mailbox List</span>"
 msgstr "<span weight=\"bold\">Caixas de Correio</span>"
 
+#: ui/properties.glade.h:5
+#, fuzzy
+msgid "<span weight=\"bold\">Position</span>"
+msgstr "<span weight=\"bold\">Comandos</span>"
+
 #: ui/properties.glade.h:6
-msgid "Mail Notification Properties"
-msgstr "Propriedades de Notificação de Correio"
+msgid "General"
+msgstr ""
 
 #: ui/properties.glade.h:7
-msgid "The amount of time to wait between mail checks"
-msgstr "A quantidade de tempo a esperar entre verificações de correio"
+msgid "Hori_zontal offset:"
+msgstr ""
 
 #: ui/properties.glade.h:8
-msgid "The command to run when new mail arrives"
-msgstr "O comando a executar quando chega novo correio"
+msgid "Mail Notification Properties"
+msgstr "Propriedades de Notificação de Correio"
 
 #: ui/properties.glade.h:9
-msgid "The command to run when the icon is double-clicked"
-msgstr "O comando a executar quando fizer duplo-clique no ícone"
+msgid "Mail Summary Popup"
+msgstr ""
 
 #: ui/properties.glade.h:10
-msgid "When _new mail arrives:"
-msgstr "Quando chega _novo correio:"
+#, fuzzy
+msgid "Mailboxes"
+msgstr "Caixa de Correio"
 
 #: ui/properties.glade.h:11
-msgid "When double-click_ed:"
-msgstr "Quando há um duplo-clique:"
+#, fuzzy
+msgid "P_osition:"
+msgstr "_Localização:"
 
 #: ui/properties.glade.h:12
 #, fuzzy
-msgid "Whether the status icon should blink on errors or not"
-msgstr "Se a imagem pisca ou não"
+msgid "The amount of time to wait before closing the mail summary popup"
+msgstr "A quantidade de tempo a esperar entre verificações de correio"
 
 #: ui/properties.glade.h:13
-msgid "Whether to run a command when new mail arrives or not"
-msgstr "Se deve ser executado um comando quando chega novo correio"
+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:14
-msgid "Whether to run a command when the icon is double-clicked or not"
-msgstr "Se deve ser executado um comando quando fizer duplo-clique no ícone"
+msgid "The command to run when new mail arrives"
+msgstr "O comando a executar quando chega novo correio"
 
 #: ui/properties.glade.h:15
+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:16
+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:17
+#, fuzzy
+msgid "Whether the status icon should blink on errors or not"
+msgstr "Se a imagem pisca ou não"
+
+#: ui/properties.glade.h:18
+#, fuzzy
+msgid "Whether to automatically close the mail summary popup or not"
+msgstr "Se a caixa de correio tem novo correio"
+
+#: ui/properties.glade.h:19
+#, fuzzy
+msgid "Whether to display the mail summary popup when new mail arrives or not"
+msgstr "Se deve ser executado um comando quando chega novo correio"
+
+#: ui/properties.glade.h:20
+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:21
 #, fuzzy
 msgid ""
 "Whether to start Mail Notification when you log into your GNOME session or "
 "not"
 msgstr "Se a Notificação de Correio já foi executada ou não."
 
-#: ui/properties.glade.h:16
+#: ui/properties.glade.h:22
+msgid "_Automatically close after:"
+msgstr ""
+
+#: ui/properties.glade.h:23
 msgid "_Blink on errors"
 msgstr ""
 
-#: ui/properties.glade.h:17
+#: ui/properties.glade.h:24
 msgid "_Delay between mail checks:"
 msgstr "_Intervalo entre verificações de correio:"
 
-#: ui/properties.glade.h:18
+#: ui/properties.glade.h:25
+msgid "_Enable mail summary popup"
+msgstr ""
+
+#: ui/properties.glade.h:26
+#, fuzzy
+msgid "_Run a command when new mail arrives:"
+msgstr "Executar um comando quando chega novo correio"
+
+#: ui/properties.glade.h:27
 #, fuzzy
 msgid "_Start Mail Notification on GNOME login"
 msgstr "Um Ícone de Notificação de Correio"
 
-#: ui/properties.glade.h:19
+#: ui/properties.glade.h:28
+msgid "_Vertical offset:"
+msgstr ""
+
+#: ui/properties.glade.h:29
 msgid "minutes"
 msgstr "minutos"
 
-#: ui/properties.glade.h:20
+#: ui/properties.glade.h:30
+msgid "pixels"
+msgstr ""
+
+#: ui/properties.glade.h:31
 msgid "seconds"
 msgstr "segundos"
 
+#: 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>"
+msgstr "<span weight=\"bold\">Caixas de Correio</span>"
+
 #: ui/welcome.glade.h:1
 #, fuzzy
 msgid ""
@@ -1191,14 +1493,48 @@ msgstr "_Configurar Notificação de Correio"
 msgid "_Skip configuration"
 msgstr "_Saltar configuração"
 
+#~ msgid "Double-clicked command"
+#~ msgstr "Comando de duplo-clique"
+
+#~ msgid "Run a command when the icon is double-clicked"
+#~ msgstr "Executar um comando quando fizer duplo-clique no ícone"
+
+#~ msgid "The command to run when the icon is double-clicked."
+#~ msgstr "O comando a executar quando fizer duplo-clique no ícone."
+
+#~ msgid "Whether to run a command when the icon is double-clicked or not."
+#~ msgstr ""
+#~ "Se um comando deverá ser executado quando fizer duplo-clique no ícone."
+
 #~ msgid "unable to parse Gmail URI"
 #~ msgstr "incapaz de processar URI Gmail"
 
-#~ msgid "unable to parse IMAP URI"
-#~ msgstr "incapaz de processar URI IMAP"
+#~ msgid "_Run %s"
+#~ msgstr "_Executar %s"
+
+#~ msgid "_Run Default Action"
+#~ msgstr "_Executar acção por omissão"
 
 #~ msgid "_SSL"
 #~ msgstr "_SSL"
 
 #~ msgid "unable to parse POP3 URI"
 #~ msgstr "incapaz de processar URI POP3"
+
+#~ msgid "A command error has occurred"
+#~ msgstr "ocorreu um erro de comando"
+
+#~ msgid "Unable to execute double-clicked command: %s."
+#~ msgstr "Incapaz de executar comando de duplo-clique: %s."
+
+#~ msgid "The command to run when the icon is double-clicked"
+#~ msgstr "O comando a executar quando fizer duplo-clique no ícone"
+
+#~ msgid "When _new mail arrives:"
+#~ msgstr "Quando chega _novo correio:"
+
+#~ msgid "When double-click_ed:"
+#~ msgstr "Quando há um duplo-clique:"
+
+#~ msgid "Whether to run a command when the icon is double-clicked or not"
+#~ msgstr "Se deve ser executado 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-09-09 01:43+0200\n"
+"POT-Creation-Date: 2004-10-06 19:31+0200\n"
 "PO-Revision-Date: 2004-07-21 21:58+0200\n"
 "Last-Translator: Dan Korostelev <dan@ats.energo.ru>\n"
 "Language-Team: Russian\n"
@@ -37,8 +37,8 @@ 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:38
-#: src/mn-mail-icon.gob:160 src/mn-main.c:221
+#: data/mail-notification.soundlist.in.h:1 src/mn-about-dialog.gob:40
+#: src/mn-mail-icon.gob:163 src/mn-main.c:272
 msgid "Mail Notification"
 msgstr "Иконка входящих сообщений"
 
@@ -48,121 +48,195 @@ msgstr ""
 "Иконка в области уведомления панели, уведомляющая о приходе новой почты."
 
 #: data/mail-notification.schemas.in.h:1
-msgid "Blink on errors"
+msgid "Automatically close the mail summary popup"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:2
-msgid "Delay between mail checks (minutes part)."
+msgid "Blink on errors"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:3
-msgid "Delay between mail checks (seconds part)."
+msgid "Delay between mail checks (minutes part)."
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:4
-msgid "Double-clicked command"
+msgid "Delay between mail checks (seconds part)."
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:5
-msgid "Fingerprints of trusted X509 certificates"
+msgid "Do not show the immediate notification error dialog"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:6
-msgid "Has already been run"
+msgid "Enable mail summary popup"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:7
-msgid "Height of properties dialog"
+msgid "Fingerprints of trusted X509 certificates"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:8
-msgid "Mailboxes list"
+msgid "Has already been run"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:9
-msgid "Minutes between mail checks"
+msgid "Height of mail summary dialog"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:10
-msgid "New mail command"
+msgid "Height of properties dialog"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:11
-#, fuzzy
-msgid "Run a command when new mail arrives"
+msgid "Mail summary popup horizontal offset"
 msgstr ""
-"Иконка в области уведомления панели, уведомляющая о приходе новой почты."
 
 #: data/mail-notification.schemas.in.h:12
-#, fuzzy
-msgid "Run a command when the icon is double-clicked"
+msgid "Mail summary popup position"
 msgstr ""
-"Иконка в области уведомления панели, уведомляющая о приходе новой почты."
 
 #: data/mail-notification.schemas.in.h:13
-msgid "Seconds between mail checks"
+msgid "Mail summary popup vertical offset"
 msgstr ""
 
 #: data/mail-notification.schemas.in.h:14
+msgid "Mailbox list"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:15
+msgid "Minutes between mail checks"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:16
+msgid "Minutes to wait before closing the mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:17
+msgid "New mail command"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:18
 #, fuzzy
-msgid "The command to run when new mail arrives."
+msgid "Run a command when new mail arrives"
 msgstr ""
 "Иконка в области уведомления панели, уведомляющая о приходе новой почты."
 
-#: data/mail-notification.schemas.in.h:15
+#: data/mail-notification.schemas.in.h:19
+msgid "Seconds between mail checks"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:20
+msgid "Seconds to wait before closing the mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:21
+msgid ""
+"The amount of time to wait before closing the mail summary popup (minutes "
+"part)."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:22
+msgid ""
+"The amount of time to wait before closing the mail summary popup (seconds "
+"part)."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:23
 #, fuzzy
-msgid "The command to run when the icon is double-clicked."
+msgid "The command to run when new mail arrives."
 msgstr ""
 "Иконка в области уведомления панели, уведомляющая о приходе новой почты."
 
-#: data/mail-notification.schemas.in.h:16
+#: data/mail-notification.schemas.in.h:24
+msgid "The height of the mail summary dialog in pixels."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:25
 msgid "The height of the properties dialog in pixels."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:17
+#: data/mail-notification.schemas.in.h:26
 msgid "The list of mailboxes to monitor."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:18
+#: data/mail-notification.schemas.in.h:27
 msgid ""
 "The list of trusted SSL/TLS servers (hostname:port) lacking a X509 "
 "certificate."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:19
+#: data/mail-notification.schemas.in.h:28
 msgid ""
 "The list of trusted X509 certificates, represented by their MD5 fingerprint."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:20
+#: data/mail-notification.schemas.in.h:29
+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:30
+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:31
+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:32
+msgid "The width of the mail summary dialog in pixels."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:33
 msgid "The width of the properties dialog in pixels."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:21
+#: data/mail-notification.schemas.in.h:34
 msgid "Trusted servers list"
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:22
+#: data/mail-notification.schemas.in.h:35
 msgid "Whether Mail Notification has already been run or not."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:23
+#: data/mail-notification.schemas.in.h:36
 msgid "Whether the status icon should blink on errors or not."
 msgstr ""
 
-#: data/mail-notification.schemas.in.h:24
+#: data/mail-notification.schemas.in.h:37
 #, fuzzy
-msgid "Whether to run a command when new mail arrives or not."
+msgid "Whether to automatically close the mail summary popup or not."
 msgstr ""
 "Иконка в области уведомления панели, уведомляющая о приходе новой почты."
 
-#: data/mail-notification.schemas.in.h:25
+#: data/mail-notification.schemas.in.h:38
 #, fuzzy
-msgid "Whether to run a command when the icon is double-clicked or not."
+msgid "Whether to display the mail summary popup when new mail arrives or not."
 msgstr ""
 "Иконка в области уведомления панели, уведомляющая о приходе новой почты."
 
-#: data/mail-notification.schemas.in.h:26
+#: data/mail-notification.schemas.in.h:39
+msgid ""
+"Whether to prevent the immediate notification error dialog from being "
+"displayed or not."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:40
+#, fuzzy
+msgid "Whether to run a command when new mail arrives or not."
+msgstr ""
+"Иконка в области уведомления панели, уведомляющая о приходе новой почты."
+
+#: data/mail-notification.schemas.in.h:41
+msgid "Width of mail summary dialog"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:42
 msgid "Width of properties dialog"
 msgstr ""
 
@@ -178,131 +252,118 @@ msgstr ""
 msgid "The orientation of the tray."
 msgstr ""
 
-#: src/mn-about-dialog.gob:41
+#: src/mn-about-dialog.gob:43
 msgid "A Mail Notification Icon"
 msgstr ""
 
-#: src/mn-about-dialog.gob:44
+#. translator: replace with your name and email
+#: src/mn-about-dialog.gob:47
 msgid "Jean-Yves Lefort <jylefort@brutele.be>"
 msgstr "Dan Korostelev <dan@ats.energo.ru>"
 
-#: src/mn-auth-combo-box.gob:99 src/mn-autodetect-mailbox-properties.gob:35
+#: src/mn-auth-combo-box.gob:101 src/mn-autodetect-mailbox-properties.gob:37
 msgid "<span style=\"italic\">autodetect</span>"
 msgstr ""
 
-#: src/mn-autodetect-mailbox-properties.gob:66
+#: src/mn-autodetect-mailbox-properties.gob:68
 msgid "_Location:"
 msgstr ""
 
-#: src/mn-autodetect-mailbox-properties.gob:72
+#: src/mn-autodetect-mailbox-properties.gob:74
 msgid "_Browse..."
 msgstr ""
 
-#: src/mn-autodetect-mailbox-properties.gob:79
+#: src/mn-autodetect-mailbox-properties.gob:81
 msgid "The URI of the mailbox"
 msgstr ""
 
-#: src/mn-autodetect-mailbox-properties.gob:116
+#: src/mn-autodetect-mailbox-properties.gob:118
 msgid "Select a File or Folder"
 msgstr ""
 
-#: src/mn-blinking-image.gob:30
+#: src/mn-blinking-image.gob:32
 msgid "Whether the image is blinking or not"
 msgstr ""
 
-#: src/mn-client-session.c:196 src/mn-client-session.c:203
-#, c-format
-msgid "unable to read from server: %s"
-msgstr ""
-
-#: src/mn-client-session.c:201
-msgid "unable to read from server: EOF"
-msgstr ""
-
-#: src/mn-client-session.c:213
-#, c-format
-msgid "unable to decode data using SASL: %s"
-msgstr ""
-
-#: src/mn-client-session.c:284
+#: src/mn-client-session.c:229
 #, c-format
 msgid "resolving %s"
 msgstr ""
 
-#: src/mn-client-session.c:294
+#: src/mn-client-session.c:239
 #, c-format
 msgid "unable to resolve %s: %s"
 msgstr ""
 
-#: src/mn-client-session.c:331
+#: src/mn-client-session.c:276
 #, c-format
 msgid "%s: unsupported address family"
 msgstr ""
 
-#: src/mn-client-session.c:338
+#: src/mn-client-session.c:283
 #, c-format
 msgid "%s: unable to create socket: %s"
 msgstr ""
 
-#: src/mn-client-session.c:342
+#: src/mn-client-session.c:287
 #, c-format
 msgid "connecting to %s (%s) port %i"
 msgstr ""
 
-#: src/mn-client-session.c:345
+#: src/mn-client-session.c:290
 #, c-format
 msgid "unable to connect: %s"
 msgstr ""
 
-#: src/mn-client-session.c:350
+#: src/mn-client-session.c:295
 msgid "connected successfully"
 msgstr ""
 
 #. if reached, we couldn't find a working address
-#: src/mn-client-session.c:356
+#: src/mn-client-session.c:301
 #, c-format
 msgid "unable to connect to %s"
 msgstr ""
 
-#: src/mn-client-session.c:372
+#: src/mn-client-session.c:317
 #, c-format
 msgid "unable to initialize the OpenSSL library: %s"
 msgstr ""
 
-#: src/mn-client-session.c:380
+#: src/mn-client-session.c:325
 #, c-format
 msgid "unable to create a SSL/TLS object: %s"
 msgstr ""
 
-#: src/mn-client-session.c:386
+#: src/mn-client-session.c:331
 #, c-format
 msgid "unable to set the SSL/TLS file descriptor: %s"
 msgstr ""
 
-#: src/mn-client-session.c:392
+#: src/mn-client-session.c:337
 #, c-format
 msgid "unable to perform the SSL/TLS handshake: %s"
 msgstr ""
 
-#: src/mn-client-session.c:398
+#: src/mn-client-session.c:343
 msgid "untrusted server"
 msgstr ""
 
-#: src/mn-client-session.c:402
+#: src/mn-client-session.c:347
 #, c-format
 msgid "a SSL/TLS layer is now active (%s, %s %i-bit)"
 msgstr ""
 
-#: src/mn-client-session.c:449
+#: src/mn-client-session.c:394
 #, c-format
 msgid "%s, fingerprint: %s"
 msgstr ""
 
-#: src/mn-client-session.c:478
+#: src/mn-client-session.c:423
 msgid "missing certificate"
 msgstr ""
 
-#: src/mn-client-session.c:504
+#: src/mn-client-session.c:449
 #, c-format
 msgid ""
 "Mail Notification was unable to trust \"%s\" (%s). It is possible that "
@@ -314,272 +375,329 @@ msgid ""
 "shown again."
 msgstr ""
 
-#: src/mn-client-session.c:521
+#: src/mn-client-session.c:466
 msgid "Connect to untrusted server?"
 msgstr ""
 
-#: src/mn-client-session.c:526
+#: src/mn-client-session.c:471
 msgid "Co_nnect"
 msgstr ""
 
-#: src/mn-client-session.c:584
+#: src/mn-client-session.c:527
 #, c-format
 msgid "response \"%s\" is not valid in current context"
 msgstr ""
 
-#: src/mn-client-session.c:610
+#: src/mn-client-session.c:553
 #, c-format
 msgid "unable to parse response \"%s\""
 msgstr ""
 
-#: src/mn-client-session.c:657
+#: src/mn-client-session.c:592 src/mn-client-session.c:599
+#, c-format
+msgid "unable to read from server: %s"
+msgstr ""
+
+#: src/mn-client-session.c:597
+msgid "unable to read from server: EOF"
+msgstr ""
+
+#: src/mn-client-session.c:609
+#, c-format
+msgid "unable to decode data using SASL: %s"
+msgstr ""
+
+#: src/mn-client-session.c:746
 #, c-format
 msgid "unable to encode data using SASL: %s"
 msgstr ""
 
-#: src/mn-client-session.c:688 src/mn-client-session.c:695
+#: src/mn-client-session.c:777 src/mn-client-session.c:784
 #, c-format
 msgid "unable to write to server: %s"
 msgstr ""
 
-#: src/mn-client-session.c:693
+#: src/mn-client-session.c:782
 msgid "unable to write to server: EOF"
 msgstr ""
 
-#: src/mn-client-session.c:725
+#: src/mn-client-session.c:814
 #, c-format
 msgid "unable to encode Base64: %s"
 msgstr ""
 
-#: src/mn-client-session.c:828
+#: src/mn-client-session.c:917
 #, c-format
 msgid "unable to initialize the SASL library: %s"
 msgstr ""
 
-#: src/mn-client-session.c:837
+#: src/mn-client-session.c:926
 #, c-format
 msgid "unable to retrieve local address of socket: %s"
 msgstr ""
 
-#: src/mn-client-session.c:843
+#: src/mn-client-session.c:932
 #, c-format
 msgid "unable to retrieve remote address of socket: %s"
 msgstr ""
 
-#: src/mn-client-session.c:877
+#: src/mn-client-session.c:966
 #, c-format
 msgid "warning: unable to set SASL security properties: %s"
 msgstr ""
 
-#: src/mn-client-session.c:916
+#: src/mn-client-session.c:1005
 msgid ""
 "unable to start SASL authentication: SASL asked for something we did not know"
 msgstr ""
 
-#: src/mn-client-session.c:920
+#: src/mn-client-session.c:1009
 #, c-format
 msgid "unable to start SASL authentication: %s"
 msgstr ""
 
-#: src/mn-client-session.c:924
+#: src/mn-client-session.c:1013
 #, c-format
 msgid "unable to create a SASL connection: %s"
 msgstr ""
 
-#: src/mn-client-session.c:974
+#: src/mn-client-session.c:1063
 msgid "SASL asked for something we did not know, aborting SASL authentication"
 msgstr ""
 
-#: src/mn-client-session.c:978
+#: src/mn-client-session.c:1067
 #, c-format
 msgid "%s, aborting SASL authentication"
 msgstr ""
 
 #. compliance error
-#: src/mn-client-session.c:983
+#: src/mn-client-session.c:1072
 #, c-format
 msgid "unable to decode Base64 input from server: %s"
 msgstr ""
 
-#: src/mn-client-session.c:986
+#: src/mn-client-session.c:1075
 msgid ""
 "the server sent a SASL challenge, but there was a pending initial SASL "
 "client response"
 msgstr ""
 
-#: src/mn-client-session.c:1000
+#: src/mn-client-session.c:1089
 msgid ""
 "the server did not send a SASL challenge, but there was no pending initial "
 "SASL client response"
 msgstr ""
 
-#: src/mn-client-session.c:1023
+#: src/mn-client-session.c:1112
 #, 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:1028
+#: src/mn-client-session.c:1117
 #, c-format
 msgid "unable to get SASL_MAXOUTBUF property: %s"
 msgstr ""
 
-#: src/mn-client-session.c:1034
+#: src/mn-client-session.c:1123
 #, c-format
 msgid "warning: unable to get SASL_SSF property: %s"
 msgstr ""
 
-#: src/mn-conf.c:109
+#: src/mn-conf.c:123
 #, c-format
 msgid "recursively unsetting %s"
 msgstr ""
 
-#: src/mn-conf.c:113
+#: src/mn-conf.c:127
 msgid "syncing the GConf database"
 msgstr ""
 
-#: src/mn-conf.c:116
+#: src/mn-conf.c:130
 msgid "completed"
 msgstr ""
 
-#: src/mn-gmail-mailbox-properties.gob:77
+#: src/mn-gmail-mailbox-properties.gob:79
 msgid "Your Gmail username"
 msgstr ""
 
-#: src/mn-gmail-mailbox-properties.gob:78
+#: src/mn-gmail-mailbox-properties.gob:80
 msgid "Your Gmail password"
 msgstr ""
 
-#: src/mn-gmail-mailbox.gob:220
-msgid "logging in"
+#: src/mn-gmail-mailbox.gob:65
+msgid "libsoup has not been compiled with SSL/TLS support"
 msgstr ""
 
-#: src/mn-gmail-mailbox.gob:239 src/mn-gmail-mailbox.gob:279
-#: src/mn-gmail-mailbox.gob:313 src/mn-gmail-mailbox.gob:418
+#: src/mn-gmail-mailbox.gob:110 src/mn-gmail-mailbox.gob:331
 #, c-format
-msgid "unable to transfer data: %s"
+msgid "unable to parse URI \"%s\""
 msgstr ""
 
-#: src/mn-gmail-mailbox.gob:265 src/mn-gmail-mailbox.gob:299
-#: src/mn-gmail-mailbox.gob:334
+#: src/mn-gmail-mailbox.gob:257
+msgid "logging in"
+msgstr ""
+
+#: src/mn-gmail-mailbox.gob:271 src/mn-gmail-mailbox.gob:342
+#: src/mn-gmail-mailbox.gob:380 src/mn-gmail-mailbox.gob:415
 msgid "login failed"
 msgstr ""
 
-#: src/mn-gmail-mailbox.gob:328
+#: src/mn-gmail-mailbox.gob:283 src/mn-gmail-mailbox.gob:356
+#: src/mn-gmail-mailbox.gob:394 src/mn-gmail-mailbox.gob:503
+#, c-format
+msgid "unable to transfer data: %s"
+msgstr ""
+
+#: src/mn-gmail-mailbox.gob:409
 msgid "successfully logged in"
 msgstr ""
 
-#: src/mn-gmail-mailbox.gob:406
+#: src/mn-gmail-mailbox.gob:487
 msgid "searching for unread mail"
 msgstr ""
 
-#: src/mn-gmail-mailbox.gob:427
+#: src/mn-gmail-mailbox.gob:491
+msgid "unable to search for unread mail"
+msgstr ""
+
+#: src/mn-gmail-mailbox.gob:604
 msgid "unable to parse Gmail data"
 msgstr ""
 
-#: src/mn-imap-mailbox-properties.gob:92
+#: src/mn-gmime-stream-vfs.gob:49
+#, c-format
+msgid "unable to read %s: %s"
+msgstr ""
+
+#: src/mn-gmime-stream-vfs.gob:51
+#, c-format
+msgid "unable to write to %s: %s"
+msgstr ""
+
+#: src/mn-gmime-stream-vfs.gob:53
+#, c-format
+msgid "unable to seek in %s: %s"
+msgstr ""
+
+#: src/mn-gmime-stream-vfs.gob:55
+#, c-format
+msgid "unable to tell position of %s: %s"
+msgstr ""
+
+#: src/mn-gmime-stream-vfs.gob:57
+#, c-format
+msgid "unable to close %s: %s"
+msgstr ""
+
+#: src/mn-imap-mailbox-properties.gob:94
 msgid "Mailbox:"
 msgstr ""
 
-#: src/mn-imap-mailbox-properties.gob:96
+#: src/mn-imap-mailbox-properties.gob:98
 msgid "in_box"
 msgstr ""
 
-#: src/mn-imap-mailbox-properties.gob:107
+#: src/mn-imap-mailbox-properties.gob:109
 msgid "oth_er:"
 msgstr ""
 
-#: src/mn-imap-mailbox-properties.gob:122
+#: src/mn-imap-mailbox-properties.gob:124
 msgid "The hostname or IP address of the IMAP server"
 msgstr ""
 
-#: src/mn-imap-mailbox-properties.gob:123
+#: src/mn-imap-mailbox-properties.gob:125
 msgid "Your username on the IMAP server"
 msgstr ""
 
-#: src/mn-imap-mailbox-properties.gob:124
+#: src/mn-imap-mailbox-properties.gob:126
 msgid "Your password on the IMAP server"
 msgstr ""
 
-#: src/mn-imap-mailbox-properties.gob:125
-#: src/mn-imap-mailbox-properties.gob:126
+#: src/mn-imap-mailbox-properties.gob:127
+#: src/mn-imap-mailbox-properties.gob:128
 msgid "The port number of the IMAP server"
 msgstr ""
 
-#: src/mn-imap-mailbox-properties.gob:127
+#: src/mn-imap-mailbox-properties.gob:129
 msgid "The mailbox name"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:112 src/mn-pop3-mailbox.gob:125
+#: src/mn-imap-mailbox.gob:132 src/mn-pop3-mailbox.gob:141
 msgid "SSL/TLS support has not been compiled in"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:179
+#: src/mn-imap-mailbox.gob:203
 msgid "server did not send capabilities"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:292
+#: src/mn-imap-mailbox.gob:318
 msgid "server advertised LOGINDISABLED, not using LOGIN authentication"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:293
+#: src/mn-imap-mailbox.gob:319
 msgid "unable to login"
 msgstr ""
 
 #. compliance error
-#: src/mn-imap-mailbox.gob:361
+#: src/mn-imap-mailbox.gob:447
+msgid "server did not send search results"
+msgstr ""
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:523
+msgid "server did not send all the messages we requested"
+msgstr ""
+
+#: src/mn-imap-mailbox.gob:570
+msgid "unable to fetch message"
+msgstr ""
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:617
 msgid "server did not send status"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:583 src/mn-pop3-mailbox.gob:744
+#: src/mn-imap-mailbox.gob:856 src/mn-pop3-mailbox.gob:903
 msgid "unknown server error"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:656 src/mn-pop3-mailbox.gob:210
+#: src/mn-imap-mailbox.gob:927 src/mn-pop3-mailbox.gob:225
 msgid "server does not support in-band SSL/TLS"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:675 src/mn-pop3-mailbox.gob:674
+#: src/mn-imap-mailbox.gob:946 src/mn-pop3-mailbox.gob:823
 msgid ""
 "a SASL authentication mechanism was selected but SASL support has not been "
 "compiled in"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:683 src/mn-pop3-mailbox.gob:686
+#: src/mn-imap-mailbox.gob:954 src/mn-pop3-mailbox.gob:835
 #, c-format
 msgid "unknown authentication mechanism \"%s\""
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:701
+#: src/mn-imap-mailbox.gob:972
 msgid "falling back to IMAP LOGIN authentication"
 msgstr ""
 
-#: src/mn-imap-mailbox.gob:705 src/mn-pop3-mailbox.gob:720
+#: src/mn-imap-mailbox.gob:976 src/mn-pop3-mailbox.gob:869
 msgid "authentication failed"
 msgstr ""
 
-#: src/mn-mail-icon.gob:81
+#: src/mn-mail-icon.gob:84 ui/summary-dialog.glade.h:2
 msgid "_Update"
 msgstr ""
 
-#: src/mn-mail-icon.gob:87
+#: src/mn-mail-icon.gob:90
 msgid "R_emove From Notification Area"
 msgstr ""
 
-#: src/mn-mail-icon.gob:172
-#, c-format
-msgid "_Run %s"
-msgstr ""
-
-#: src/mn-mail-icon.gob:173
-msgid "_Run Default Action"
-msgstr ""
-
 #: src/mn-mailbox-properties-dialog.c:109
 msgid "Add a Mailbox"
 msgstr ""
 
-#: src/mn-mailbox-properties-dialog.c:331
+#: src/mn-mailbox-properties-dialog.c:328
 #, c-format
 msgid "%s Properties"
 msgstr ""
@@ -628,56 +746,61 @@ msgstr ""
 msgid "Whether the properties are completely filled or not"
 msgstr ""
 
-#: src/mn-mailbox-view.gob:254
+#: src/mn-mailbox-view.gob:263 src/mn-message-label.gob:74
 msgid "Mailbox"
 msgstr ""
 
-#: src/mn-mailbox-view.gob:268
+#. format column
+#: src/mn-mailbox-view.gob:279
 msgid "Format"
 msgstr ""
 
-#: src/mn-mailbox-view.gob:543
+#: src/mn-mailbox-view.gob:569
 msgid "Unable to add mailbox"
 msgstr ""
 
-#: src/mn-mailbox-view.gob:543
+#: src/mn-mailbox-view.gob:569
 msgid "The mailbox is already in the list."
 msgstr ""
 
-#: src/mn-mailbox.gob:122
+#: src/mn-mailbox.gob:133
 msgid "The mailbox URI"
 msgstr ""
 
-#: src/mn-mailbox.gob:133
+#: src/mn-mailbox.gob:144
 msgid "The mailbox human-readable name"
 msgstr ""
 
-#: src/mn-mailbox.gob:137
+#: src/mn-mailbox.gob:148
 msgid "Whether the mailbox has to be manually checked or not"
 msgstr ""
 
-#: src/mn-mailbox.gob:142
+#: src/mn-mailbox.gob:153
 msgid "Whether the mailbox has new mail or not"
 msgstr ""
 
-#: src/mn-mailbox.gob:147
+#: src/mn-mailbox.gob:158
+msgid "The list of new and unread MNMessage objects"
+msgstr ""
+
+#: src/mn-mailbox.gob:212
 msgid "The mailbox error, if any"
 msgstr ""
 
-#: src/mn-mailbox.gob:251
+#: src/mn-mailbox.gob:310
 msgid "does not exist"
 msgstr ""
 
-#: src/mn-mailbox.gob:287
+#: src/mn-mailbox.gob:342
 msgid "unknown format"
 msgstr ""
 
-#: src/mn-mailbox.gob:355
+#: src/mn-mailbox.gob:408
 #, c-format
-msgid "unable to monitor %s: %s"
+msgid "unable to enable immediate notification for %s: %s"
 msgstr ""
 
-#: src/mn-mailbox.gob:369
+#: src/mn-mailbox.gob:426
 #, c-format
 msgid ""
 "As a fallback, they will be checked every %i second (this delay is "
@@ -688,7 +811,7 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-mailbox.gob:380
+#: src/mn-mailbox.gob:437
 #, c-format
 msgid ""
 "As a fallback, they will be checked every %i minute (this delay is "
@@ -699,7 +822,7 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-mailbox.gob:391
+#: src/mn-mailbox.gob:448
 #, c-format
 msgid ""
 "As a fallback, they will be checked approximately every %i minute (this "
@@ -710,87 +833,99 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-mailbox.gob:405
+#: src/mn-mailbox.gob:464
 msgid "A monitoring error has occurred"
 msgstr ""
 
-#: src/mn-mailbox.gob:406
+#: src/mn-mailbox.gob:465
 #, 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:133
+msgid "Whether one or more of the mailboxes has to be polled"
+msgstr ""
+
+#: src/mn-mailboxes.gob:266
 #, c-format
 msgid "%s is unsupported: %s"
 msgstr ""
 
-#: src/mn-mailboxes.gob:170
+#: src/mn-mailboxes.gob:297
 #, c-format
 msgid "%s has new mail"
 msgstr ""
 
-#: src/mn-mailboxes.gob:170
+#: src/mn-mailboxes.gob:297
 #, c-format
 msgid "%s has no new mail"
 msgstr ""
 
-#: src/mn-mailboxes.gob:186
+#: src/mn-mailboxes.gob:323
 #, c-format
 msgid "%s reported an error: %s"
 msgstr ""
 
-#: src/mn-maildir-mailbox.gob:109
+#: src/mn-maildir-mailbox.gob:119
 #, c-format
 msgid "unable to open folder \"new\": %s"
 msgstr ""
 
-#: src/mn-maildir-mailbox.gob:137
+#: src/mn-maildir-mailbox.gob:161
 #, c-format
 msgid "unable to close folder \"new\": %s"
 msgstr ""
 
-#: src/mn-maildir-mailbox.gob:140
+#: src/mn-maildir-mailbox.gob:164
 #, c-format
 msgid "error while reading folder \"new\": %s"
 msgstr ""
 
-#: src/mn-main.c:85
+#: src/mn-main.c:97
 #, c-format
 msgid "Compiled-in mailbox backends: %s\n"
 msgstr ""
 
-#: src/mn-main.c:103
+#: src/mn-main.c:114
 #, c-format
 msgid "Compiled-in features: %s\n"
 msgstr ""
 
-#: src/mn-main.c:133
+#: src/mn-main.c:166
 msgid "Enable informational output"
 msgstr ""
 
-#: src/mn-main.c:142
+#: src/mn-main.c:175
 msgid "List compiled-in features and exit"
 msgstr ""
 
-#: src/mn-main.c:151
+#: src/mn-main.c:184
+msgid "Display the mail summary dialog"
+msgstr ""
+
+#: src/mn-main.c:193
 msgid "Display the properties dialog"
 msgstr ""
 
-#: src/mn-main.c:160
+#: src/mn-main.c:202
 msgid "Display the about dialog"
 msgstr ""
 
-#: src/mn-main.c:169
+#: src/mn-main.c:211
+msgid "Close the mail summary popup"
+msgstr ""
+
+#: src/mn-main.c:220
 msgid "Update the mail status"
 msgstr ""
 
-#: src/mn-main.c:178
+#: src/mn-main.c:229
 msgid "Report the mail status"
 msgstr ""
 
-#: src/mn-main.c:187
+#: src/mn-main.c:238
 msgid "Unset obsolete GConf configuration and exit"
 msgstr ""
 
@@ -798,179 +933,242 @@ msgstr ""
 #. * We can't use mn_error_dialog() because gtk_init() has not been
 #. * called yet.
 #.
-#: src/mn-main.c:213
+#: src/mn-main.c:264
 msgid "multi-threading is not available"
 msgstr ""
 
-#: src/mn-main.c:258
+#: src/mn-main.c:309
 msgid ""
 "Bonobo could not locate the automation object. Please check your Mail "
 "Notification installation."
 msgstr ""
 
-#: src/mn-main.c:263
+#: src/mn-main.c:314
 msgid "Unable to initialize the GnomeVFS library."
 msgstr ""
 
-#: src/mn-main.c:285
+#: src/mn-main.c:350
 msgid "updating the mail status"
 msgstr ""
 
-#: src/mn-main.c:301
+#: src/mn-main.c:368
 #, fuzzy
 msgid "Mail Notification is already running"
 msgstr "Иконка входящих сообщений"
 
-#: src/mn-main.c:308
+#: src/mn-main.c:375
 msgid ""
 "Bonobo could not locate the GNOME_MailNotification_Automation.server file. "
 "Please check your Mail Notification installation."
 msgstr ""
 
-#: src/mn-main.c:312
+#: src/mn-main.c:379
 msgid ""
 "Bonobo was unable to register the automation server. Please check your Mail "
 "Notification installation."
 msgstr ""
 
-#: src/mn-mbox-mailbox.gob:171
+#: src/mn-mbox-mailbox.gob:221
 #, c-format
 msgid "error while reading mailbox: %s"
 msgstr ""
 
-#: src/mn-mbox-mailbox.gob:179
+#: src/mn-mbox-mailbox.gob:230
 #, c-format
 msgid "unable to open mailbox: %s"
 msgstr ""
 
-#: src/mn-mh-mailbox.gob:122
+#: src/mn-message-label.gob:77
+msgid "Unreadable message"
+msgstr ""
+
+#: src/mn-message-label.gob:97
+msgid "From"
+msgstr ""
+
+#: src/mn-message-label.gob:98
+msgid "Subject"
+msgstr ""
+
+#: src/mn-message-label.gob:102
+msgid "Sent"
+msgstr ""
+
+#: src/mn-message-label.gob:151
+#, c-format
+msgid "%i second ago"
+msgid_plural "%i seconds ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:155
+#, c-format
+msgid "%i minute ago"
+msgid_plural "%i minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:160
+#, c-format
+msgid "%i hour ago"
+msgid_plural "%i hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:165
+#, c-format
+msgid "%i day ago"
+msgid_plural "%i days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-mime.c:105
+msgid "unable to parse MIME message"
+msgstr ""
+
+#: src/mn-message.gob:82
+msgid "Unknown"
+msgstr ""
+
+#: src/mn-mh-mailbox.gob:184
 #, c-format
 msgid "error while reading .mh_sequences: %s"
 msgstr ""
 
-#: src/mn-mh-mailbox.gob:130
+#: src/mn-mh-mailbox.gob:196
 #, c-format
 msgid "unable to open .mh_sequences: %s"
 msgstr ""
 
-#: src/mn-pending-mailbox.gob:33
+#: src/mn-pending-mailbox.gob:35
 msgid "detecting"
 msgstr ""
 
-#: src/mn-pi-mailbox-properties.gob:74
+#: src/mn-pi-mailbox-properties.gob:76
 msgid "_Hostname:"
 msgstr ""
 
-#: src/mn-pi-mailbox-properties.gob:92
+#: src/mn-pi-mailbox-properties.gob:94
 msgid "_Details"
 msgstr ""
 
-#: src/mn-pi-mailbox-properties.gob:104
+#: src/mn-pi-mailbox-properties.gob:106
 msgid "sta_ndard"
 msgstr ""
 
-#: src/mn-pi-mailbox-properties.gob:114
+#: src/mn-pi-mailbox-properties.gob:116
 msgid "_in-band SSL/TLS"
 msgstr ""
 
-#: src/mn-pi-mailbox-properties.gob:124
+#: src/mn-pi-mailbox-properties.gob:126
 msgid "SSL/TLS on sepa_rate port"
 msgstr ""
 
-#: src/mn-pop3-mailbox-properties.gob:84
+#: src/mn-pop3-mailbox-properties.gob:86
 msgid "The hostname or IP address of the POP3 server"
 msgstr ""
 
-#: src/mn-pop3-mailbox-properties.gob:85
+#: src/mn-pop3-mailbox-properties.gob:87
 msgid "Your username on the POP3 server"
 msgstr ""
 
-#: src/mn-pop3-mailbox-properties.gob:86
+#: src/mn-pop3-mailbox-properties.gob:88
 msgid "Your password on the POP3 server"
 msgstr ""
 
-#: src/mn-pop3-mailbox-properties.gob:87 src/mn-pop3-mailbox-properties.gob:88
+#: src/mn-pop3-mailbox-properties.gob:89 src/mn-pop3-mailbox-properties.gob:90
 msgid "The port number of the POP3 server"
 msgstr ""
 
-#: src/mn-pop3-mailbox.gob:256
+#: src/mn-pop3-mailbox.gob:271
 msgid "invalid arguments for the LOGIN-DELAY capability"
 msgstr ""
 
-#: src/mn-pop3-mailbox.gob:523
+#: src/mn-pop3-mailbox.gob:536
+msgid "unknown error"
+msgstr ""
+
+#: src/mn-pop3-mailbox.gob:666
 #, 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:682
+#: src/mn-pop3-mailbox.gob:831
 msgid "server does not support APOP authentication"
 msgstr ""
 
-#: src/mn-pop3-mailbox.gob:710
+#: src/mn-pop3-mailbox.gob:859
 msgid "falling back to APOP authentication"
 msgstr ""
 
-#: src/mn-pop3-mailbox.gob:715
+#: src/mn-pop3-mailbox.gob:864
 msgid "falling back to USER/PASS authentication"
 msgstr ""
 
-#: src/mn-properties.c:151
+#: src/mn-properties.c:161
+msgid "top left"
+msgstr ""
+
+#: src/mn-properties.c:162
+msgid "top right"
+msgstr ""
+
+#: src/mn-properties.c:163
+msgid "bottom left"
+msgstr ""
+
+#: src/mn-properties.c:164
+msgid "bottom right"
+msgstr ""
+
+#: src/mn-properties.c:240
 msgid "No mailbox selected."
 msgstr ""
 
-#: src/mn-properties.c:156
+#: src/mn-properties.c:245
 #, c-format
 msgid "%i mailbox selected."
 msgid_plural "%i mailboxes selected."
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-shell.gob:204
-msgid "A command error has occurred"
+#: src/mn-shell.gob:84
+msgid "You have new mail."
 msgstr ""
 
-#: src/mn-shell.gob:205
+#: src/mn-shell.gob:96
+msgid "A command error has occurred in Mail Notification"
+msgstr ""
+
+#: src/mn-shell.gob:97
 #, c-format
-msgid "Unable to execute double-clicked command: %s."
+msgid "Unable to execute new mail command: %s."
 msgstr ""
 
-#: src/mn-shell.gob:292
+#: src/mn-shell.gob:270
 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:296
+#: src/mn-shell.gob:274
 msgid "You have no new mail."
 msgstr ""
 
-#: src/mn-shell.gob:299
+#: src/mn-shell.gob:277
 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:304
+#: src/mn-shell.gob:282
 msgid "The following mailbox is unsupported:\n"
 msgid_plural "The following mailboxes are unsupported:\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-shell.gob:320
-msgid "You have new mail."
-msgstr ""
-
-#: src/mn-shell.gob:330
-msgid "A command error has occurred in Mail Notification"
-msgstr ""
-
-#: src/mn-shell.gob:331
-#, c-format
-msgid "Unable to execute new mail command: %s."
-msgstr ""
-
 #: src/mn-ssl.c:79
 msgid "unknown SSL/TLS error"
 msgstr ""
@@ -979,75 +1177,93 @@ msgstr ""
 msgid "Select _All"
 msgstr ""
 
-#: src/mn-sylpheed-mailbox.gob:93
+#: src/mn-stock.c:29
+msgid "_Mail Summary"
+msgstr ""
+
+#: src/mn-sylpheed-mailbox.gob:122
 #, c-format
 msgid "unable to open folder: %s"
 msgstr ""
 
-#: src/mn-sylpheed-mailbox.gob:127
+#: src/mn-sylpheed-mailbox.gob:180
 #, c-format
 msgid "unable to close folder: %s"
 msgstr ""
 
-#: src/mn-sylpheed-mailbox.gob:130
+#: src/mn-sylpheed-mailbox.gob:183
 #, c-format
 msgid "error while reading folder: %s"
 msgstr ""
 
-#: src/mn-system-mailbox-properties.gob:32 src/mn-uri.gob:391
+#: src/mn-system-mailbox-properties.gob:34 src/mn-uri.gob:393
 msgid "System Mailbox"
 msgstr ""
 
-#: src/mn-system-mailbox-properties.gob:55
+#: src/mn-system-mailbox-properties.gob:57
 #, c-format
 msgid "Your system mailbox (<span weight=\"bold\">%s</span>) will be used."
 msgstr ""
 
-#: src/mn-system-mailbox-properties.gob:62
+#: src/mn-system-mailbox-properties.gob:64
 msgid ""
 "The location of your system mailbox could not be detected. Please set the "
 "MAIL environment variable."
 msgstr ""
 
-#: src/mn-unsupported-mailbox.gob:31
+#: src/mn-unsupported-mailbox.gob:33
 msgid "The reason why the mailbox is unsupported"
 msgstr ""
 
-#: src/mn-unsupported-mailbox.gob:38
+#: src/mn-unsupported-mailbox.gob:40
 msgid "unsupported"
 msgstr ""
 
-#: src/mn-util.c:199
+#: src/mn-util.c:233
 #, c-format
 msgid "error loading image: %s"
 msgstr ""
 
-#: src/mn-util.c:237
+#: src/mn-util.c:271
 #, c-format
-msgid "widget %s not found in interface %s"
+msgid "widget \"%s\" not found in interface \"%s\""
 msgstr ""
 
-#: src/mn-util.c:355
+#: src/mn-util.c:385
 msgid "received an invalid URI list"
 msgstr ""
 
-#: src/mn-util.c:391
+#: src/mn-util.c:421
 msgid "received an invalid Mozilla URL"
 msgstr ""
 
-#: src/mn-util.c:484
+#: src/mn-util.c:514
 msgid "Unable to display help"
 msgstr ""
 
-#: src/mn-util.c:498
+#: src/mn-util.c:528
 #, c-format
 msgid "Unable to create a thread: %s."
 msgstr ""
 
-#: src/mn-util.c:701
+#: src/mn-util.c:705
+msgid "_Do not show this message again"
+msgstr ""
+
+#: src/mn-util.c:789
 msgid "A fatal error has occurred in Mail Notification"
 msgstr ""
 
+#: src/mn-util.c:804
+#, c-format
+msgid "unable to get current time: %s"
+msgstr ""
+
+#: src/mn-util.c:887
+#, c-format
+msgid "invalid signal specification \"%s\""
+msgstr ""
+
 #: ui/mailbox-properties.glade.h:1
 msgid "_Mailbox type:"
 msgstr ""
@@ -1061,85 +1277,141 @@ msgid "*"
 msgstr ""
 
 #: ui/properties.glade.h:3
-msgid "<span weight=\"bold\">Commands</span>"
+msgid "<span weight=\"bold\">General</span>"
 msgstr ""
 
 #: ui/properties.glade.h:4
-msgid "<span weight=\"bold\">General</span>"
+msgid "<span weight=\"bold\">Mailbox List</span>"
 msgstr ""
 
 #: ui/properties.glade.h:5
-msgid "<span weight=\"bold\">Mailboxes</span>"
+msgid "<span weight=\"bold\">Position</span>"
 msgstr ""
 
 #: ui/properties.glade.h:6
-#, fuzzy
-msgid "Mail Notification Properties"
-msgstr "Иконка входящих сообщений"
+msgid "General"
+msgstr ""
 
 #: ui/properties.glade.h:7
-msgid "The amount of time to wait between mail checks"
+msgid "Hori_zontal offset:"
 msgstr ""
 
 #: ui/properties.glade.h:8
-msgid "The command to run when new mail arrives"
-msgstr ""
+#, fuzzy
+msgid "Mail Notification Properties"
+msgstr "Иконка входящих сообщений"
 
 #: ui/properties.glade.h:9
-#, fuzzy
-msgid "The command to run when the icon is double-clicked"
+msgid "Mail Summary Popup"
 msgstr ""
-"Иконка в области уведомления панели, уведомляющая о приходе новой почты."
 
 #: ui/properties.glade.h:10
-msgid "When _new mail arrives:"
+msgid "Mailboxes"
 msgstr ""
 
 #: ui/properties.glade.h:11
-msgid "When double-click_ed:"
+msgid "P_osition:"
 msgstr ""
 
 #: ui/properties.glade.h:12
-msgid "Whether the status icon should blink on errors or not"
+msgid "The amount of time to wait before closing the mail summary popup"
 msgstr ""
 
 #: ui/properties.glade.h:13
-msgid "Whether to run a command when new mail arrives or not"
+msgid "The amount of time to wait between mail checks"
 msgstr ""
 
 #: ui/properties.glade.h:14
+msgid "The command to run when new mail arrives"
+msgstr ""
+
+#: ui/properties.glade.h:15
+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:16
+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:17
+msgid "Whether the status icon should blink on errors or not"
+msgstr ""
+
+#: ui/properties.glade.h:18
+msgid "Whether to automatically close the mail summary popup or not"
+msgstr ""
+
+#: ui/properties.glade.h:19
 #, fuzzy
-msgid "Whether to run a command when the icon is double-clicked or not"
+msgid "Whether to display the mail summary popup when new mail arrives or not"
 msgstr ""
 "Иконка в области уведомления панели, уведомляющая о приходе новой почты."
 
-#: ui/properties.glade.h:15
+#: ui/properties.glade.h:20
+msgid "Whether to run a command when new mail arrives or not"
+msgstr ""
+
+#: ui/properties.glade.h:21
 msgid ""
 "Whether to start Mail Notification when you log into your GNOME session or "
 "not"
 msgstr ""
 
-#: ui/properties.glade.h:16
+#: ui/properties.glade.h:22
+msgid "_Automatically close after:"
+msgstr ""
+
+#: ui/properties.glade.h:23
 msgid "_Blink on errors"
 msgstr ""
 
-#: ui/properties.glade.h:17
+#: ui/properties.glade.h:24
 msgid "_Delay between mail checks:"
 msgstr ""
 
-#: ui/properties.glade.h:18
+#: ui/properties.glade.h:25
+msgid "_Enable mail summary popup"
+msgstr ""
+
+#: ui/properties.glade.h:26
+#, fuzzy
+msgid "_Run a command when new mail arrives:"
+msgstr ""
+"Иконка в области уведомления панели, уведомляющая о приходе новой почты."
+
+#: ui/properties.glade.h:27
 #, fuzzy
 msgid "_Start Mail Notification on GNOME login"
 msgstr "Иконка входящих сообщений"
 
-#: ui/properties.glade.h:19
+#: ui/properties.glade.h:28
+msgid "_Vertical offset:"
+msgstr ""
+
+#: ui/properties.glade.h:29
 msgid "minutes"
 msgstr ""
 
-#: ui/properties.glade.h:20
+#: ui/properties.glade.h:30
+msgid "pixels"
+msgstr ""
+
+#: ui/properties.glade.h:31
 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 ""
+
 #: ui/welcome.glade.h:1
 msgid ""
 "<span weight=\"bold\" size=\"larger\">First startup</span>\n"
diff --git a/po/sr.gmo b/po/sr.gmo
Binary files differ.
diff --git a/po/sr.po b/po/sr.po
@@ -0,0 +1,1542 @@
+# Serbian translations for mail-notification.
+# Copyright (c) 2003, 2004 Jean-Yves Lefort.
+#
+# This file is distributed under the same license as the
+# mail-notification package.
+#
+# Filip Miletic <filmil@gmail.com>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mail-notification 0.6.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-10-06 19:31+0200\n"
+"PO-Revision-Date: 2004-09-30 02:54+0200\n"
+"Last-Translator: Филип Милетић <filmil@gmail.com>\n"
+"Language-Team: Serbian (sr) <gnu@prevod.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3;    plural=n%10==1 && n%100!=11 ? 0 :    n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+
+#: data/GNOME_MailNotification_Automation.server.in.in.h:1
+msgid "Mail Notification automation"
+msgstr "Дојава приспећа поште"
+
+#: data/GNOME_MailNotification_Automation.server.in.in.h:2
+msgid "Mail Notification automation factory"
+msgstr "Фабрика ѕа дојаву приспећа поште"
+
+#: data/mail-notification-properties.desktop.in.h:1
+msgid "Configure Mail Notification"
+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:272
+msgid "Mail Notification"
+msgstr "Дојава поште"
+
+#: data/mail-notification.desktop.in.h:1
+msgid "Get notified when new mail arrives"
+msgstr "Обавести када стигне нова пошта"
+
+#: data/mail-notification.schemas.in.h:1
+msgid "Automatically close the mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:2
+msgid "Blink on errors"
+msgstr "Трепери ако дође до грешке"
+
+#: data/mail-notification.schemas.in.h:3
+msgid "Delay between mail checks (minutes part)."
+msgstr "Размак између две провере (минути)"
+
+#: data/mail-notification.schemas.in.h:4
+msgid "Delay between mail checks (seconds part)."
+msgstr "Размак између две провере (секунде)."
+
+#: data/mail-notification.schemas.in.h:5
+msgid "Do not show the immediate notification error dialog"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:6
+msgid "Enable mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:7
+msgid "Fingerprints of trusted X509 certificates"
+msgstr "Отисци проверених X509 сертификата"
+
+#: data/mail-notification.schemas.in.h:8
+msgid "Has already been run"
+msgstr "Већ је покренут"
+
+#: data/mail-notification.schemas.in.h:9
+#, fuzzy
+msgid "Height of mail summary dialog"
+msgstr "Висина прозора са поставкама"
+
+#: data/mail-notification.schemas.in.h:10
+msgid "Height of properties dialog"
+msgstr "Висина прозора са поставкама"
+
+#: data/mail-notification.schemas.in.h:11
+msgid "Mail summary popup horizontal offset"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:12
+msgid "Mail summary popup position"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:13
+msgid "Mail summary popup vertical offset"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:14
+#, fuzzy
+msgid "Mailbox list"
+msgstr "Списак сандучића"
+
+#: data/mail-notification.schemas.in.h:15
+msgid "Minutes between mail checks"
+msgstr "Минута између две провере"
+
+#: data/mail-notification.schemas.in.h:16
+msgid "Minutes to wait before closing the mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:17
+msgid "New mail command"
+msgstr "Изврши када пошта стигне"
+
+#: data/mail-notification.schemas.in.h:18
+msgid "Run a command when new mail arrives"
+msgstr "Покрени команду када стигне нова пошта"
+
+#: data/mail-notification.schemas.in.h:19
+msgid "Seconds between mail checks"
+msgstr "Секунди између две провере"
+
+#: data/mail-notification.schemas.in.h:20
+msgid "Seconds to wait before closing the mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:21
+#, fuzzy
+msgid ""
+"The amount of time to wait before closing the mail summary popup (minutes "
+"part)."
+msgstr "Пауза између две узастопне провере"
+
+#: data/mail-notification.schemas.in.h:22
+#, fuzzy
+msgid ""
+"The amount of time to wait before closing the mail summary popup (seconds "
+"part)."
+msgstr "Пауза између две узастопне провере"
+
+#: data/mail-notification.schemas.in.h:23
+msgid "The command to run when new mail arrives."
+msgstr "Покрени ову команду када стигне нова пошта."
+
+#: data/mail-notification.schemas.in.h:24
+#, fuzzy
+msgid "The height of the mail summary dialog in pixels."
+msgstr "Висина прозора са поставкама изражена у тачкама."
+
+#: data/mail-notification.schemas.in.h:25
+msgid "The height of the properties dialog in pixels."
+msgstr "Висина прозора са поставкама изражена у тачкама."
+
+#: data/mail-notification.schemas.in.h:26
+msgid "The list of mailboxes to monitor."
+msgstr "Списак сандучића који се прате."
+
+#: data/mail-notification.schemas.in.h:27
+msgid ""
+"The list of trusted SSL/TLS servers (hostname:port) lacking a X509 "
+"certificate."
+msgstr ""
+"Списак проверених SSL/TLS сервера (рачунар:порт) који немају X509 сертификат."
+
+#: data/mail-notification.schemas.in.h:28
+msgid ""
+"The list of trusted X509 certificates, represented by their MD5 fingerprint."
+msgstr "Списак проверених X509 сертификата, представљених MD5 отиском."
+
+#: data/mail-notification.schemas.in.h:29
+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:30
+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:31
+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:32
+#, fuzzy
+msgid "The width of the mail summary dialog in pixels."
+msgstr "Ширина прозора са поставкама изражена у тачкама."
+
+#: data/mail-notification.schemas.in.h:33
+msgid "The width of the properties dialog in pixels."
+msgstr "Ширина прозора са поставкама изражена у тачкама."
+
+#: data/mail-notification.schemas.in.h:34
+msgid "Trusted servers list"
+msgstr "Списак проверених сервера"
+
+#: data/mail-notification.schemas.in.h:35
+msgid "Whether Mail Notification has already been run or not."
+msgstr "Да ли је програм покретан пре или није."
+
+#: data/mail-notification.schemas.in.h:36
+msgid "Whether the status icon should blink on errors or not."
+msgstr "Да ли сличица треба да трепери ако дође до грешке или не."
+
+#: data/mail-notification.schemas.in.h:37
+#, fuzzy
+msgid "Whether to automatically close the mail summary popup or not."
+msgstr "Да ли треба покренути неку команду када стигне нова пошта."
+
+#: data/mail-notification.schemas.in.h:38
+#, fuzzy
+msgid "Whether to display the mail summary popup when new mail arrives or not."
+msgstr "Да ли треба покренути неку команду када стигне нова пошта."
+
+#: data/mail-notification.schemas.in.h:39
+msgid ""
+"Whether to prevent the immediate notification error dialog from being "
+"displayed or not."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:40
+msgid "Whether to run a command when new mail arrives or not."
+msgstr "Да ли треба покренути неку команду када стигне нова пошта."
+
+#: data/mail-notification.schemas.in.h:41
+#, fuzzy
+msgid "Width of mail summary dialog"
+msgstr "Ширина прозора са поставкама"
+
+#: data/mail-notification.schemas.in.h:42
+msgid "Width of properties dialog"
+msgstr "Ширина прозора са поставкама"
+
+#: data/mail-notification.soundlist.in.h:2
+msgid "New Mail"
+msgstr "Нова пошта"
+
+#: src/eggtrayicon.c:109
+msgid "Orientation"
+msgstr "Оријентација"
+
+#: src/eggtrayicon.c:110
+msgid "The orientation of the tray."
+msgstr "Оријентација обавештајне зоне."
+
+#: src/mn-about-dialog.gob:43
+msgid "A Mail Notification Icon"
+msgstr "Сличица за дојаву приспећа поште"
+
+# The email of the translator goes here
+#. translator: replace with your name and email
+#: src/mn-about-dialog.gob:47
+msgid "Jean-Yves Lefort <jylefort@brutele.be>"
+msgstr "Филип Милетић <filmil@gmail.com>"
+
+#: src/mn-auth-combo-box.gob:101 src/mn-autodetect-mailbox-properties.gob:37
+msgid "<span style=\"italic\">autodetect</span>"
+msgstr "<span style=\"italic\">сам пронађи</span>"
+
+#: src/mn-autodetect-mailbox-properties.gob:68
+msgid "_Location:"
+msgstr "_Место:"
+
+#: src/mn-autodetect-mailbox-properties.gob:74
+msgid "_Browse..."
+msgstr "_Прегледај..."
+
+#: src/mn-autodetect-mailbox-properties.gob:81
+msgid "The URI of the mailbox"
+msgstr "URI ознака поштанског сандучега"
+
+#: src/mn-autodetect-mailbox-properties.gob:118
+msgid "Select a File or Folder"
+msgstr "Изаберите датотеку или директоријум"
+
+#: src/mn-blinking-image.gob:32
+msgid "Whether the image is blinking or not"
+msgstr "Да ли слика трепери или не"
+
+#: src/mn-client-session.c:229
+#, c-format
+msgid "resolving %s"
+msgstr "проналазим %s"
+
+#: src/mn-client-session.c:239
+#, c-format
+msgid "unable to resolve %s: %s"
+msgstr "Није могуће пронаћи %s: %s"
+
+#: src/mn-client-session.c:276
+#, c-format
+msgid "%s: unsupported address family"
+msgstr "%s: ова врста адресе није подржана"
+
+#: src/mn-client-session.c:283
+#, c-format
+msgid "%s: unable to create socket: %s"
+msgstr "%s: није могуће направити утичницу: %s"
+
+#: src/mn-client-session.c:287
+#, c-format
+msgid "connecting to %s (%s) port %i"
+msgstr "повезујем се са %s (%s) порт %i"
+
+#: src/mn-client-session.c:290
+#, c-format
+msgid "unable to connect: %s"
+msgstr "није могуће повезати се са: %s"
+
+#: src/mn-client-session.c:295
+msgid "connected successfully"
+msgstr "повезивање је успело"
+
+#. if reached, we couldn't find a working address
+#: src/mn-client-session.c:301
+#, c-format
+msgid "unable to connect to %s"
+msgstr "није могуће повезати се са %s"
+
+#: src/mn-client-session.c:317
+#, c-format
+msgid "unable to initialize the OpenSSL library: %s"
+msgstr "није могуће покренути OpenSSL библиотеку: %s"
+
+#: src/mn-client-session.c:325
+#, c-format
+msgid "unable to create a SSL/TLS object: %s"
+msgstr "није могуће направити SSL/TLS објекат: %s"
+
+#: src/mn-client-session.c:331
+#, c-format
+msgid "unable to set the SSL/TLS file descriptor: %s"
+msgstr "није могуће поставити SSL/TLS опис за датотеку: %s"
+
+#: src/mn-client-session.c:337
+#, c-format
+msgid "unable to perform the SSL/TLS handshake: %s"
+msgstr "није могуће обавити SSL/TLS контакт: %s"
+
+#: src/mn-client-session.c:343
+msgid "untrusted server"
+msgstr "непроверен сервер"
+
+#: src/mn-client-session.c:347
+#, c-format
+msgid "a SSL/TLS layer is now active (%s, %s %i-bit)"
+msgstr "SSL/TLS слој је покренут (%s, %s %i-бит)"
+
+#: src/mn-client-session.c:394
+#, c-format
+msgid "%s, fingerprint: %s"
+msgstr "%s, отисак: %s"
+
+#: src/mn-client-session.c:423
+msgid "missing certificate"
+msgstr "недостаје сертификат"
+
+#: src/mn-client-session.c:449
+#, c-format
+msgid ""
+"Mail Notification was unable to trust \"%s\" (%s). It is possible that "
+"someone is intercepting your communication to obtain your confidential "
+"information.\n"
+"\n"
+"You should only connect to the server if you are certain you are connected "
+"to \"%s\". If you choose to connect to the server, this message will not be "
+"shown again."
+msgstr ""
+"Програм за дојаву приспећа поште не може да провери \"%s\" (%s). То може да "
+"значи да неко пресреће вашу преписку како би дошао до ваших поверљивих "
+"података.\n"
+"\n"
+"На сервер се треба повезивати само ако сте сигурни да се заиста повезујете "
+"са \"%s\". Ако одлучите да се повежете на сервер, ова порука неће поново "
+"бити приказана."
+
+#: src/mn-client-session.c:466
+msgid "Connect to untrusted server?"
+msgstr "Да ли да се повежем на непроверени сервер?"
+
+#: src/mn-client-session.c:471
+msgid "Co_nnect"
+msgstr "_Повежи се"
+
+#: src/mn-client-session.c:527
+#, c-format
+msgid "response \"%s\" is not valid in current context"
+msgstr "одговор \"%s\" није исправан у тренутно важећем контексту"
+
+#: src/mn-client-session.c:553
+#, c-format
+msgid "unable to parse response \"%s\""
+msgstr "није могуће обрадити одговор \"%s\""
+
+#: src/mn-client-session.c:592 src/mn-client-session.c:599
+#, c-format
+msgid "unable to read from server: %s"
+msgstr "Није могуће читање са сервера: %s"
+
+#: src/mn-client-session.c:597
+msgid "unable to read from server: EOF"
+msgstr "Није могуће читање са сервера: EOF"
+
+#: src/mn-client-session.c:609
+#, c-format
+msgid "unable to decode data using SASL: %s"
+msgstr "Не могу се декодовати подаци путем SASL: %s"
+
+#: src/mn-client-session.c:746
+#, 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
+#, c-format
+msgid "unable to write to server: %s"
+msgstr "није могућ упис на сервер: %s"
+
+#: src/mn-client-session.c:782
+msgid "unable to write to server: EOF"
+msgstr "није могућ упис на сервер: EOF"
+
+#: src/mn-client-session.c:814
+#, c-format
+msgid "unable to encode Base64: %s"
+msgstr "није могуће кодирати Base64: %s"
+
+#: src/mn-client-session.c:917
+#, c-format
+msgid "unable to initialize the SASL library: %s"
+msgstr "не може се покренути SASL библиотека: %s"
+
+#: src/mn-client-session.c:926
+#, c-format
+msgid "unable to retrieve local address of socket: %s"
+msgstr "не може да се добави локална адреса утичнице: %s"
+
+#: src/mn-client-session.c:932
+#, c-format
+msgid "unable to retrieve remote address of socket: %s"
+msgstr "не може да се добави удаљена адреса утичнице: %s"
+
+#: src/mn-client-session.c:966
+#, c-format
+msgid "warning: unable to set SASL security properties: %s"
+msgstr "упозорење: није могуће поставити SASL сигурносне поставке %s"
+
+#: src/mn-client-session.c:1005
+msgid ""
+"unable to start SASL authentication: SASL asked for something we did not know"
+msgstr "не може се покренути SASL пријава: SASL тражи податке које немамо"
+
+#: src/mn-client-session.c:1009
+#, c-format
+msgid "unable to start SASL authentication: %s"
+msgstr "не може се покренути SASL пријава: %s"
+
+#: src/mn-client-session.c:1013
+#, c-format
+msgid "unable to create a SASL connection: %s"
+msgstr "није могуће успоставити SASL везу: %s"
+
+#: src/mn-client-session.c:1063
+msgid "SASL asked for something we did not know, aborting SASL authentication"
+msgstr "SASL је тражио нама непознате податке, обустављам SASL пријаву"
+
+#: src/mn-client-session.c:1067
+#, c-format
+msgid "%s, aborting SASL authentication"
+msgstr "%s, обустављам SASL пријаву"
+
+#. compliance error
+#: src/mn-client-session.c:1072
+#, c-format
+msgid "unable to decode Base64 input from server: %s"
+msgstr "није могуће декодовати Base64 улаз са сервера: %s"
+
+#: src/mn-client-session.c:1075
+msgid ""
+"the server sent a SASL challenge, but there was a pending initial SASL "
+"client response"
+msgstr ""
+"сервер је започео SASL разговор, али одговор од клијента стигао пре тога"
+
+#: src/mn-client-session.c:1089
+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
+#, 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
+#, c-format
+msgid "unable to get SASL_MAXOUTBUF property: %s"
+msgstr "не могу да прочитам поставку SASL_MAXOUTBUF: %s"
+
+#: src/mn-client-session.c:1123
+#, c-format
+msgid "warning: unable to get SASL_SSF property: %s"
+msgstr "упозорење: не могу да прочитам поставку SASL_SSF: %s"
+
+#: src/mn-conf.c:123
+#, c-format
+msgid "recursively unsetting %s"
+msgstr "рекурзивно поништавам %s"
+
+#: src/mn-conf.c:127
+msgid "syncing the GConf database"
+msgstr "усклађујем GConf базу података"
+
+#: src/mn-conf.c:130
+msgid "completed"
+msgstr "урађено"
+
+#: src/mn-gmail-mailbox-properties.gob:79
+msgid "Your Gmail username"
+msgstr "Ваше име на сервису Gmail"
+
+#: src/mn-gmail-mailbox-properties.gob:80
+msgid "Your Gmail password"
+msgstr "Ваша лозинка на сервису Gmail"
+
+#: src/mn-gmail-mailbox.gob:65
+msgid "libsoup has not been compiled with SSL/TLS support"
+msgstr ""
+
+#: src/mn-gmail-mailbox.gob:110 src/mn-gmail-mailbox.gob:331
+#, fuzzy, c-format
+msgid "unable to parse URI \"%s\""
+msgstr "није могуће обрадити одговор \"%s\""
+
+#: src/mn-gmail-mailbox.gob:257
+msgid "logging in"
+msgstr "пријава у току"
+
+#: src/mn-gmail-mailbox.gob:271 src/mn-gmail-mailbox.gob:342
+#: src/mn-gmail-mailbox.gob:380 src/mn-gmail-mailbox.gob:415
+msgid "login failed"
+msgstr "пријава није успела"
+
+#: src/mn-gmail-mailbox.gob:283 src/mn-gmail-mailbox.gob:356
+#: src/mn-gmail-mailbox.gob:394 src/mn-gmail-mailbox.gob:503
+#, c-format
+msgid "unable to transfer data: %s"
+msgstr "не могу да преузмем податке: %s"
+
+#: src/mn-gmail-mailbox.gob:409
+msgid "successfully logged in"
+msgstr "пријава је успела"
+
+#: src/mn-gmail-mailbox.gob:487
+msgid "searching for unread mail"
+msgstr "тражим нову пошту"
+
+#: src/mn-gmail-mailbox.gob:491
+#, fuzzy
+msgid "unable to search for unread mail"
+msgstr "тражим нову пошту"
+
+#: src/mn-gmail-mailbox.gob:604
+msgid "unable to parse Gmail data"
+msgstr "не могу да обрадим податке са Gmail-a"
+
+#: src/mn-gmime-stream-vfs.gob:49
+#, fuzzy, c-format
+msgid "unable to read %s: %s"
+msgstr "Није могуће пронаћи %s: %s"
+
+#: src/mn-gmime-stream-vfs.gob:51
+#, fuzzy, c-format
+msgid "unable to write to %s: %s"
+msgstr "није могућ упис на сервер: %s"
+
+#: src/mn-gmime-stream-vfs.gob:53
+#, fuzzy, c-format
+msgid "unable to seek in %s: %s"
+msgstr "Није могуће пронаћи %s: %s"
+
+#: src/mn-gmime-stream-vfs.gob:55
+#, fuzzy, c-format
+msgid "unable to tell position of %s: %s"
+msgstr "није могуће мотрити на %s: %s"
+
+#: src/mn-gmime-stream-vfs.gob:57
+#, fuzzy, c-format
+msgid "unable to close %s: %s"
+msgstr "није могуће затворити директоријум: %s"
+
+#: src/mn-imap-mailbox-properties.gob:94
+msgid "Mailbox:"
+msgstr "Сандуче:"
+
+#: src/mn-imap-mailbox-properties.gob:98
+msgid "in_box"
+msgstr "in_box"
+
+#: src/mn-imap-mailbox-properties.gob:109
+msgid "oth_er:"
+msgstr "_друго:"
+
+#: src/mn-imap-mailbox-properties.gob:124
+msgid "The hostname or IP address of the IMAP server"
+msgstr "Име или IP број IMAP сервера"
+
+#: src/mn-imap-mailbox-properties.gob:125
+msgid "Your username on the IMAP server"
+msgstr "Ваше име на IMAP серверу"
+
+#: src/mn-imap-mailbox-properties.gob:126
+msgid "Your password on the IMAP server"
+msgstr "Ваша лозинка на IMAP серверу"
+
+#: src/mn-imap-mailbox-properties.gob:127
+#: src/mn-imap-mailbox-properties.gob:128
+msgid "The port number of the IMAP server"
+msgstr "Број порта на IMAP серверу"
+
+#: src/mn-imap-mailbox-properties.gob:129
+msgid "The mailbox name"
+msgstr "Име сандучета"
+
+#: src/mn-imap-mailbox.gob:132 src/mn-pop3-mailbox.gob:141
+msgid "SSL/TLS support has not been compiled in"
+msgstr "Подршка за SSL/TLS није уграђена"
+
+#: src/mn-imap-mailbox.gob:203
+msgid "server did not send capabilities"
+msgstr "сервер није обавестио о својим могућностима"
+
+#: src/mn-imap-mailbox.gob:318
+msgid "server advertised LOGINDISABLED, not using LOGIN authentication"
+msgstr "сервер је рекао LOGINDISABLED, не користим LOGIN пријаву"
+
+#: src/mn-imap-mailbox.gob:319
+msgid "unable to login"
+msgstr "пријава није могућа"
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:447
+#, fuzzy
+msgid "server did not send search results"
+msgstr "сервер није послао статус"
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:523
+#, fuzzy
+msgid "server did not send all the messages we requested"
+msgstr "сервер није послао статус"
+
+#: src/mn-imap-mailbox.gob:570
+#, fuzzy
+msgid "unable to fetch message"
+msgstr "није могуће повезати се са: %s"
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:617
+msgid "server did not send status"
+msgstr "сервер није послао статус"
+
+#: src/mn-imap-mailbox.gob:856 src/mn-pop3-mailbox.gob:903
+msgid "unknown server error"
+msgstr "непозната грешка на серверу"
+
+#: src/mn-imap-mailbox.gob:927 src/mn-pop3-mailbox.gob:225
+msgid "server does not support in-band SSL/TLS"
+msgstr "сервер не подржава заштиту путем SSL/TLS"
+
+#: src/mn-imap-mailbox.gob:946 src/mn-pop3-mailbox.gob:823
+msgid ""
+"a SASL authentication mechanism was selected but SASL support has not been "
+"compiled in"
+msgstr ""
+"изабран је механизам за пријаву који користи SASL али подршка за SASL није "
+"уграђена у програм"
+
+#: src/mn-imap-mailbox.gob:954 src/mn-pop3-mailbox.gob:835
+#, c-format
+msgid "unknown authentication mechanism \"%s\""
+msgstr "непознат механизам за пријаву \"%s\""
+
+#: src/mn-imap-mailbox.gob:972
+msgid "falling back to IMAP LOGIN authentication"
+msgstr "повратак на  IMAP LOGIN пријаву"
+
+#: src/mn-imap-mailbox.gob:976 src/mn-pop3-mailbox.gob:869
+msgid "authentication failed"
+msgstr "пријава није успела"
+
+#: src/mn-mail-icon.gob:84 ui/summary-dialog.glade.h:2
+msgid "_Update"
+msgstr "_Освежи"
+
+#: src/mn-mail-icon.gob:90
+msgid "R_emove From Notification Area"
+msgstr "_Уклони са обавештајне зоне"
+
+#: src/mn-mailbox-properties-dialog.c:109
+msgid "Add a Mailbox"
+msgstr "Додај сандуче"
+
+#: src/mn-mailbox-properties-dialog.c:328
+#, c-format
+msgid "%s Properties"
+msgstr "Поставке за %s"
+
+#: src/mn-mailbox-properties-util.c:77
+msgid "_Username:"
+msgstr "_Кор.име:"
+
+#: src/mn-mailbox-properties-util.c:87
+msgid "_Password:"
+msgstr "_Лозинка:"
+
+#: src/mn-mailbox-properties-util.c:154
+msgid "Connection type:"
+msgstr "Врста везе:"
+
+#: src/mn-mailbox-properties-util.c:161
+msgid "Port:"
+msgstr "Порт:"
+
+#: src/mn-mailbox-properties-util.c:189
+msgid "_Authentication mechanism:"
+msgstr "_Начин пријаве:"
+
+#: src/mn-mailbox-properties.c:63
+msgid "Label"
+msgstr "Ознака"
+
+#: src/mn-mailbox-properties.c:64
+msgid "The marked up text to show in the type combo box"
+msgstr "Означени текст који се појављује у ознаци типа"
+
+#: src/mn-mailbox-properties.c:69
+msgid "Size group"
+msgstr "Величина групе"
+
+#: src/mn-mailbox-properties.c:70
+msgid "A GtkSizeGroup for aligning control labels"
+msgstr "GtkSizeGroup за уравнање контролних ознака"
+
+#: src/mn-mailbox-properties.c:75
+msgid "Complete"
+msgstr "Готово"
+
+#: src/mn-mailbox-properties.c:76
+msgid "Whether the properties are completely filled or not"
+msgstr "Да ли су поставке сасвим попуњене или не"
+
+#: src/mn-mailbox-view.gob:263 src/mn-message-label.gob:74
+msgid "Mailbox"
+msgstr "Сандуче"
+
+#. format column
+#: src/mn-mailbox-view.gob:279
+msgid "Format"
+msgstr "Формат"
+
+#: src/mn-mailbox-view.gob:569
+msgid "Unable to add mailbox"
+msgstr "Није могуће додати сандуче"
+
+#: src/mn-mailbox-view.gob:569
+msgid "The mailbox is already in the list."
+msgstr "Сандуче је већ у списку."
+
+#: src/mn-mailbox.gob:133
+msgid "The mailbox URI"
+msgstr "URI ознака за сандуче"
+
+#: src/mn-mailbox.gob:144
+msgid "The mailbox human-readable name"
+msgstr "Име сандучета"
+
+#: src/mn-mailbox.gob:148
+msgid "Whether the mailbox has to be manually checked or not"
+msgstr "Да ли се ово сандуче ручно проверава или не"
+
+#: src/mn-mailbox.gob:153
+msgid "Whether the mailbox has new mail or not"
+msgstr "Да ли у сандучету стоји нова пошта или не"
+
+#: src/mn-mailbox.gob:158
+msgid "The list of new and unread MNMessage objects"
+msgstr ""
+
+#: src/mn-mailbox.gob:212
+msgid "The mailbox error, if any"
+msgstr "Грешка у приступу сандучету, ако постоји"
+
+#: src/mn-mailbox.gob:310
+msgid "does not exist"
+msgstr "не постоји"
+
+#: src/mn-mailbox.gob:342
+msgid "unknown format"
+msgstr "непознат формат"
+
+#: src/mn-mailbox.gob:408
+#, fuzzy, c-format
+msgid "unable to enable immediate notification for %s: %s"
+msgstr ""
+"Није могуће наместити непосредну дојаву нове поште за један или више "
+"сандучића. %s"
+
+#: src/mn-mailbox.gob:426
+#, c-format
+msgid ""
+"As a fallback, they will be checked every %i second (this delay is "
+"configurable from the Properties Dialog)."
+msgid_plural ""
+"As a fallback, they will be checked every %i seconds (this delay is "
+"configurable from the Properties Dialog)."
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-mailbox.gob:437
+#, c-format
+msgid ""
+"As a fallback, they will be checked every %i minute (this delay is "
+"configurable from the Properties Dialog)."
+msgid_plural ""
+"As a fallback, they will be checked every %i minutes (this delay is "
+"configurable from the Properties Dialog)."
+msgstr[0] ""
+"Пошто нема друге могућности, биће проверавани сваки %i минут (ово кашњење се "
+"може променити из прозора са поставкама)"
+msgstr[1] ""
+"Пошто нема друге могућности, биће проверавани сваких %i минута (ово кашњење "
+"се може променити из прозора са поставкама)"
+msgstr[2] ""
+"Пошто нема друге могућности, биће проверавани сваких %i минута (ово кашњење "
+"се може променити из прозора са поставкама)"
+
+#: src/mn-mailbox.gob:448
+#, c-format
+msgid ""
+"As a fallback, they will be checked approximately every %i minute (this "
+"delay is configurable from the Properties Dialog)."
+msgid_plural ""
+"As a fallback, they will be checked approximately every %i minutes (this "
+"delay is configurable from the Properties Dialog)."
+msgstr[0] ""
+"Пошто нема друге могућности, биће проверавани на око %i минут (ово кашњење "
+"се може променити из прозора са поставкама)"
+msgstr[1] ""
+"Пошто нема друге могућности, биће проверавани на око %i минута (ово кашњење "
+"се може променити из прозора са поставкама)"
+msgstr[2] ""
+"Пошто нема друге могућности, биће проверавани на око %i минута (ово кашњење "
+"се може променити из прозора са поставкама)"
+
+#: src/mn-mailbox.gob:464
+msgid "A monitoring error has occurred"
+msgstr "Дошло је до грешке при мотрењу"
+
+#: src/mn-mailbox.gob:465
+#, c-format
+msgid ""
+"Mail Notification was unable to enable immediate notification for one or "
+"more mailboxes. %s"
+msgstr ""
+"Није могуће наместити непосредну дојаву нове поште за један или више "
+"сандучића. %s"
+
+#: src/mn-mailboxes.gob:133
+#, fuzzy
+msgid "Whether one or more of the mailboxes has to be polled"
+msgstr "Да ли се ово сандуче ручно проверава или не"
+
+#: src/mn-mailboxes.gob:266
+#, c-format
+msgid "%s is unsupported: %s"
+msgstr "%s није подржан: %s"
+
+#: src/mn-mailboxes.gob:297
+#, c-format
+msgid "%s has new mail"
+msgstr "Сандуче %s има нову пошту"
+
+#: src/mn-mailboxes.gob:297
+#, c-format
+msgid "%s has no new mail"
+msgstr "Сандуче %s нема нову пошту"
+
+#: src/mn-mailboxes.gob:323
+#, c-format
+msgid "%s reported an error: %s"
+msgstr "%s је дојавио грешку: %s"
+
+#: src/mn-maildir-mailbox.gob:119
+#, c-format
+msgid "unable to open folder \"new\": %s"
+msgstr "није могуће отворити директоријум \"new\": %s"
+
+#: src/mn-maildir-mailbox.gob:161
+#, c-format
+msgid "unable to close folder \"new\": %s"
+msgstr "није могуће затворити директоријум \"new\": %s"
+
+#: src/mn-maildir-mailbox.gob:164
+#, c-format
+msgid "error while reading folder \"new\": %s"
+msgstr "грешка при читању директоријума \"new\": %s"
+
+#: src/mn-main.c:97
+#, c-format
+msgid "Compiled-in mailbox backends: %s\n"
+msgstr "Програм уме да чита сандучиће у форматима: %s\n"
+
+#: src/mn-main.c:114
+#, c-format
+msgid "Compiled-in features: %s\n"
+msgstr "Уграђене могућности: %s\n"
+
+#: src/mn-main.c:166
+msgid "Enable informational output"
+msgstr "Дозволи речитији излаз"
+
+#: src/mn-main.c:175
+msgid "List compiled-in features and exit"
+msgstr "Испиши уграђене могућности и изађи"
+
+#: src/mn-main.c:184
+#, fuzzy
+msgid "Display the mail summary dialog"
+msgstr "Прикажи податке о програму"
+
+#: src/mn-main.c:193
+msgid "Display the properties dialog"
+msgstr "Прикажи прозор са поставкама"
+
+#: src/mn-main.c:202
+msgid "Display the about dialog"
+msgstr "Прикажи податке о програму"
+
+#: src/mn-main.c:211
+msgid "Close the mail summary popup"
+msgstr ""
+
+#: src/mn-main.c:220
+msgid "Update the mail status"
+msgstr "Освежи податке о пошти"
+
+#: src/mn-main.c:229
+msgid "Report the mail status"
+msgstr "Провери пошту"
+
+#: src/mn-main.c:238
+msgid "Unset obsolete GConf configuration and exit"
+msgstr "Поништи застарела GConf подешавања и изађи"
+
+#.
+#. * We can't use mn_error_dialog() because gtk_init() has not been
+#. * called yet.
+#.
+#: src/mn-main.c:264
+msgid "multi-threading is not available"
+msgstr "вишенитни рад није подржан"
+
+#: src/mn-main.c:309
+msgid ""
+"Bonobo could not locate the automation object. Please check your Mail "
+"Notification installation."
+msgstr ""
+"Бонобо није успео да пронађе објекат за аутоматизацију. Проверите "
+"инсталацију програма за дојаву поште. (Прим. прев: услед грешке у програму "
+"Бонобо у Гному 2.6, када инсталирате програм за обавештења, треба да се "
+"одјавите и поново пријавите на систем да би све почело да ради)"
+
+#: src/mn-main.c:314
+msgid "Unable to initialize the GnomeVFS library."
+msgstr "Није могуће покренути библиотеку GnomeVFS."
+
+#: src/mn-main.c:350
+msgid "updating the mail status"
+msgstr "Проверавам пошту"
+
+#: src/mn-main.c:368
+msgid "Mail Notification is already running"
+msgstr "Програм за дојаву поште је већ покренут."
+
+#: src/mn-main.c:375
+msgid ""
+"Bonobo could not locate the GNOME_MailNotification_Automation.server file. "
+"Please check your Mail Notification installation."
+msgstr ""
+"Бонобо није успео да пронађе објекат за аутоматизацију. Проверите "
+"инсталацију програма за дојаву поште. (Прим. прев: услед грешке у програму "
+"Бонобо у Гному 2.6, када инсталирате програм за обавештења, треба да се "
+"одјавите и поново пријавите на систем да би све почело да ради)"
+
+#: src/mn-main.c:379
+msgid ""
+"Bonobo was unable to register the automation server. Please check your Mail "
+"Notification installation."
+msgstr ""
+"Бонобо није успео да пронађе објекат за аутоматизацију. Проверите "
+"инсталацију програма за дојаву поште. (Прим. прев: услед грешке у програму "
+"Бонобо у Гному 2.6, када инсталирате програм за обавештења, треба да се "
+"одјавите и поново пријавите на систем да би све почело да ради)"
+
+#: src/mn-mbox-mailbox.gob:221
+#, c-format
+msgid "error while reading mailbox: %s"
+msgstr "грешка при читању сандучета: %s"
+
+#: src/mn-mbox-mailbox.gob:230
+#, c-format
+msgid "unable to open mailbox: %s"
+msgstr "није могуће отворити сандуче: %s"
+
+#: src/mn-message-label.gob:77
+msgid "Unreadable message"
+msgstr ""
+
+#: src/mn-message-label.gob:97
+msgid "From"
+msgstr ""
+
+#: src/mn-message-label.gob:98
+msgid "Subject"
+msgstr ""
+
+#: src/mn-message-label.gob:102
+msgid "Sent"
+msgstr ""
+
+#: src/mn-message-label.gob:151
+#, c-format
+msgid "%i second ago"
+msgid_plural "%i seconds ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:155
+#, c-format
+msgid "%i minute ago"
+msgid_plural "%i minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:160
+#, c-format
+msgid "%i hour ago"
+msgid_plural "%i hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:165
+#, c-format
+msgid "%i day ago"
+msgid_plural "%i days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-mime.c:105
+#, fuzzy
+msgid "unable to parse MIME message"
+msgstr "није могуће обрадити одговор \"%s\""
+
+#: src/mn-message.gob:82
+msgid "Unknown"
+msgstr ""
+
+#: src/mn-mh-mailbox.gob:184
+#, c-format
+msgid "error while reading .mh_sequences: %s"
+msgstr "грешка при читању датотеке .mh_sequences: %s"
+
+#: src/mn-mh-mailbox.gob:196
+#, c-format
+msgid "unable to open .mh_sequences: %s"
+msgstr "није могуће отворити датотеку .mh_sequences: %s"
+
+#: src/mn-pending-mailbox.gob:35
+msgid "detecting"
+msgstr "истражујем"
+
+#: src/mn-pi-mailbox-properties.gob:76
+msgid "_Hostname:"
+msgstr "_Рачунар:"
+
+#: src/mn-pi-mailbox-properties.gob:94
+msgid "_Details"
+msgstr "_Детаљи"
+
+#: src/mn-pi-mailbox-properties.gob:106
+msgid "sta_ndard"
+msgstr "_стандард"
+
+#: src/mn-pi-mailbox-properties.gob:116
+msgid "_in-band SSL/TLS"
+msgstr "_уграђени SSL/TLS"
+
+#: src/mn-pi-mailbox-properties.gob:126
+msgid "SSL/TLS on sepa_rate port"
+msgstr "SSL/TLS на посебном порту"
+
+#: 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:87
+msgid "Your username on the POP3 server"
+msgstr "Ваше име на  POP3 серверу"
+
+#: src/mn-pop3-mailbox-properties.gob:88
+msgid "Your password on the POP3 server"
+msgstr "Ваша лозинка на POP3 серверу"
+
+#: src/mn-pop3-mailbox-properties.gob:89 src/mn-pop3-mailbox-properties.gob:90
+msgid "The port number of the POP3 server"
+msgstr "Број порта на POP3 серверу"
+
+#: src/mn-pop3-mailbox.gob:271
+msgid "invalid arguments for the LOGIN-DELAY capability"
+msgstr "параметри за могућност LOGIN-DELAY нису исправно постављени"
+
+#: src/mn-pop3-mailbox.gob:536
+#, fuzzy
+msgid "unknown error"
+msgstr "непозната грешка на серверу"
+
+#: src/mn-pop3-mailbox.gob:666
+#, c-format
+msgid "honouring LOGIN-DELAY, sleeping for %i second"
+msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds"
+msgstr[0] "тражен је застој при пријави, паузирам %i секунду"
+msgstr[1] "тражен је застој при пријави, паузирам %i секундe"
+msgstr[2] "тражен је застој при пријави, паузирам %i секунди"
+
+#: src/mn-pop3-mailbox.gob:831
+msgid "server does not support APOP authentication"
+msgstr "сервер не подржава пријаву коришћењем механизма APOP"
+
+#: src/mn-pop3-mailbox.gob:859
+msgid "falling back to APOP authentication"
+msgstr "прелазим на  APOP пријаву"
+
+#: src/mn-pop3-mailbox.gob:864
+msgid "falling back to USER/PASS authentication"
+msgstr "прелазим на пријаву помоћу имена и лозинке"
+
+#: src/mn-properties.c:161
+#, fuzzy
+msgid "top left"
+msgstr "Готово"
+
+#: src/mn-properties.c:162
+msgid "top right"
+msgstr ""
+
+#: src/mn-properties.c:163
+msgid "bottom left"
+msgstr ""
+
+#: src/mn-properties.c:164
+msgid "bottom right"
+msgstr ""
+
+#: src/mn-properties.c:240
+msgid "No mailbox selected."
+msgstr "Ниједно сандуче није изабрано."
+
+#: src/mn-properties.c:245
+#, c-format
+msgid "%i mailbox selected."
+msgid_plural "%i mailboxes selected."
+msgstr[0] "Изабрано %i сандуче"
+msgstr[1] "Изабрана %i сандучета"
+msgstr[2] "Изабрано %i сандучета"
+
+#: src/mn-shell.gob:84
+msgid "You have new mail."
+msgstr "Имате нову пошту."
+
+#: src/mn-shell.gob:96
+msgid "A command error has occurred in Mail Notification"
+msgstr "Дошло је до грешке у командама"
+
+#: src/mn-shell.gob:97
+#, c-format
+msgid "Unable to execute new mail command: %s."
+msgstr "Није могуће извршити команду за нову пошту: %s."
+
+#: src/mn-shell.gob:270
+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:274
+msgid "You have no new mail."
+msgstr "Нема поште."
+
+#: src/mn-shell.gob:277
+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:282
+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-ssl.c:79
+msgid "unknown SSL/TLS error"
+msgstr "непозната грешка у  SSL/TLS"
+
+#: src/mn-stock.c:28
+msgid "Select _All"
+msgstr "Изабери _све"
+
+#: src/mn-stock.c:29
+msgid "_Mail Summary"
+msgstr ""
+
+#: src/mn-sylpheed-mailbox.gob:122
+#, c-format
+msgid "unable to open folder: %s"
+msgstr "није могуће отворити директоријум: %s"
+
+#: src/mn-sylpheed-mailbox.gob:180
+#, c-format
+msgid "unable to close folder: %s"
+msgstr "није могуће затворити директоријум: %s"
+
+#: src/mn-sylpheed-mailbox.gob:183
+#, c-format
+msgid "error while reading folder: %s"
+msgstr "грешка при читању директоријума: %s"
+
+#: src/mn-system-mailbox-properties.gob:34 src/mn-uri.gob:393
+msgid "System Mailbox"
+msgstr "Локално сандуче"
+
+#: src/mn-system-mailbox-properties.gob:57
+#, c-format
+msgid "Your system mailbox (<span weight=\"bold\">%s</span>) will be used."
+msgstr "Користи се локално сандуче (<span weight=\"bold\">%s</span>)."
+
+#: src/mn-system-mailbox-properties.gob:64
+msgid ""
+"The location of your system mailbox could not be detected. Please set the "
+"MAIL environment variable."
+msgstr ""
+"Програм није успео да пронађе локално сандуче. Поставите променљиву MAIL да "
+"показује на њега."
+
+#: src/mn-unsupported-mailbox.gob:33
+msgid "The reason why the mailbox is unsupported"
+msgstr "Разлог зашто сандуче није подржано"
+
+#: src/mn-unsupported-mailbox.gob:40
+msgid "unsupported"
+msgstr "није подржано"
+
+#: src/mn-util.c:233
+#, c-format
+msgid "error loading image: %s"
+msgstr "грешка при учитавању слике: %s"
+
+#: src/mn-util.c:271
+#, fuzzy, c-format
+msgid "widget \"%s\" not found in interface \"%s\""
+msgstr "елемент %s није пронађен у сучељу %s"
+
+#: src/mn-util.c:385
+msgid "received an invalid URI list"
+msgstr "примљен је неисправан списак URI ознака"
+
+#: src/mn-util.c:421
+msgid "received an invalid Mozilla URL"
+msgstr "примљен је неисправан Мозилин URL"
+
+#: src/mn-util.c:514
+msgid "Unable to display help"
+msgstr "Није могуће приказати помоћ"
+
+#: src/mn-util.c:528
+#, c-format
+msgid "Unable to create a thread: %s."
+msgstr "Није могуће покренути нит: %s."
+
+#: src/mn-util.c:705
+msgid "_Do not show this message again"
+msgstr ""
+
+#: src/mn-util.c:789
+msgid "A fatal error has occurred in Mail Notification"
+msgstr "Дошло је до кобне грешке у програму за дојаву поште"
+
+#: src/mn-util.c:804
+#, fuzzy, c-format
+msgid "unable to get current time: %s"
+msgstr "није могуће повезати се са %s"
+
+#: src/mn-util.c:887
+#, c-format
+msgid "invalid signal specification \"%s\""
+msgstr ""
+
+#: ui/mailbox-properties.glade.h:1
+msgid "_Mailbox type:"
+msgstr "_Врста сандучета:"
+
+#: ui/properties.glade.h:1
+msgid "    "
+msgstr "    "
+
+#: ui/properties.glade.h:2
+msgid "*"
+msgstr "*"
+
+#: ui/properties.glade.h:3
+msgid "<span weight=\"bold\">General</span>"
+msgstr "<span weight=\"bold\">Опште</span>"
+
+#: ui/properties.glade.h:4
+#, fuzzy
+msgid "<span weight=\"bold\">Mailbox List</span>"
+msgstr "<span weight=\"bold\">Сандучићи</span>"
+
+#: ui/properties.glade.h:5
+#, fuzzy
+msgid "<span weight=\"bold\">Position</span>"
+msgstr "<span weight=\"bold\">Наредбе</span>"
+
+#: ui/properties.glade.h:6
+msgid "General"
+msgstr ""
+
+#: ui/properties.glade.h:7
+msgid "Hori_zontal offset:"
+msgstr ""
+
+#: ui/properties.glade.h:8
+msgid "Mail Notification Properties"
+msgstr "Поставке за дојаву"
+
+#: ui/properties.glade.h:9
+msgid "Mail Summary Popup"
+msgstr ""
+
+#: ui/properties.glade.h:10
+#, fuzzy
+msgid "Mailboxes"
+msgstr "Сандуче"
+
+#: ui/properties.glade.h:11
+#, fuzzy
+msgid "P_osition:"
+msgstr "_Место:"
+
+#: ui/properties.glade.h:12
+#, fuzzy
+msgid "The amount of time to wait before closing the mail summary popup"
+msgstr "Пауза између две узастопне провере"
+
+#: ui/properties.glade.h:13
+msgid "The amount of time to wait between mail checks"
+msgstr "Пауза између две узастопне провере"
+
+#: ui/properties.glade.h:14
+msgid "The command to run when new mail arrives"
+msgstr "Наредба која се покреће када стиже нова пошта"
+
+#: ui/properties.glade.h:15
+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:16
+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:17
+msgid "Whether the status icon should blink on errors or not"
+msgstr "Да ли статусна сличица трепери при грешкама или не"
+
+#: ui/properties.glade.h:18
+#, fuzzy
+msgid "Whether to automatically close the mail summary popup or not"
+msgstr "Да ли у сандучету стоји нова пошта или не"
+
+#: ui/properties.glade.h:19
+#, fuzzy
+msgid "Whether to display the mail summary popup when new mail arrives or not"
+msgstr "Да ли се покреће команда када стигне пошта или не"
+
+#: ui/properties.glade.h:20
+msgid "Whether to run a command when new mail arrives or not"
+msgstr "Да ли се покреће команда када стигне пошта или не"
+
+#: ui/properties.glade.h:21
+msgid ""
+"Whether to start Mail Notification when you log into your GNOME session or "
+"not"
+msgstr "Да ли покренути дојаву поште када се пријавите на систем"
+
+#: ui/properties.glade.h:22
+msgid "_Automatically close after:"
+msgstr ""
+
+#: ui/properties.glade.h:23
+msgid "_Blink on errors"
+msgstr "_Трепери при грешкама"
+
+#: ui/properties.glade.h:24
+msgid "_Delay between mail checks:"
+msgstr "_Пауза између провера:"
+
+#: ui/properties.glade.h:25
+msgid "_Enable mail summary popup"
+msgstr ""
+
+#: ui/properties.glade.h:26
+#, fuzzy
+msgid "_Run a command when new mail arrives:"
+msgstr "Покрени команду када стигне нова пошта"
+
+#: ui/properties.glade.h:27
+msgid "_Start Mail Notification on GNOME login"
+msgstr "Покрени _дојаву при пријави"
+
+#: ui/properties.glade.h:28
+msgid "_Vertical offset:"
+msgstr ""
+
+#: ui/properties.glade.h:29
+msgid "minutes"
+msgstr "минута"
+
+#: ui/properties.glade.h:30
+msgid "pixels"
+msgstr ""
+
+#: ui/properties.glade.h:31
+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>"
+msgstr "<span weight=\"bold\">Сандучићи</span>"
+
+#: ui/welcome.glade.h:1
+msgid ""
+"<span weight=\"bold\" size=\"larger\">First startup</span>\n"
+"\n"
+"Mail Notification has been loaded successfully.\n"
+"\n"
+"Since this is the first time you run Mail Notification, you might want to "
+"configure it.\n"
+"\n"
+"Note: this message will not be shown anymore. To configure Mail Notification "
+"again, choose <span weight=\"bold\">Applications</span> → <span weight=\"bold"
+"\">Desktop Preferences</span> → <span weight=\"bold\">Mail Notification</"
+"span> (or on some systems <span weight=\"bold\">Applications → Preferences → "
+"More Preferences → Mail Notification</span>)."
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">Прво покретање</span>\n"
+"\n"
+"Програм за дојаву поште је успешно покренут.\n"
+"\n"
+"Пошто сте програм за дојаву поште први пут покренули, вероватно желите и да "
+"га подесите.\n"
+"\n"
+"Пажња: ова порука се убудуће неће приказивати. Да бисте подесили дојаву "
+"поште, изаберите ставку Програми <span weight=\"bold\">Програми</span> → "
+"<span weight=\"bold\">Поставке окружења</span> → <span weight=\"bold"
+"\">Дојава поште</span> (или на неким системима <span weight=\"bold"
+"\">Програми → Поставке → Још поставки → Дојава поште</span>)."
+
+#: ui/welcome.glade.h:8
+msgid "_Configure Mail Notification"
+msgstr "_Подеси дојаву поште"
+
+#: ui/welcome.glade.h:9
+msgid "_Skip configuration"
+msgstr "П_рескочи подешавања"
+
+#~ msgid "Double-clicked command"
+#~ msgstr "Изврши на двоструки клик"
+
+#~ msgid "Run a command when the icon is double-clicked"
+#~ msgstr "Изврши команду при двоструком клику на икону"
+
+#~ msgid "The command to run when the icon is double-clicked."
+#~ msgstr "Покрени ову команду при двоструком клику на икону."
+
+#~ msgid "Whether to run a command when the icon is double-clicked or not."
+#~ msgstr ""
+#~ "Да ли треба покренути неку команду када при двоструком клику на икону."
+
+#~ msgid "_Run %s"
+#~ msgstr "_Покрени %s"
+
+#~ msgid "_Run Default Action"
+#~ msgstr "П_окрени подразумевано"
+
+#~ msgid "A command error has occurred"
+#~ msgstr "Дошло је до грешке у командама"
+
+#~ msgid "Unable to execute double-clicked command: %s."
+#~ msgstr "Није могуће извршити команду на двоструки клик: %s."
+
+#~ msgid "The command to run when the icon is double-clicked"
+#~ msgstr "Наредба која се покреће при двоструком клику"
+
+#~ msgid "When _new mail arrives:"
+#~ msgstr "Када _стигне нова пошта:"
+
+#~ msgid "When double-click_ed:"
+#~ msgstr "При _двоструком клику:"
+
+#~ msgid "Whether to run a command when the icon is double-clicked or not"
+#~ 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
@@ -0,0 +1,1542 @@
+# Serbian translations for mail-notification.
+# Copyright (c) 2003, 2004 Jean-Yves Lefort.
+#
+# This file is distributed under the same license as the
+# mail-notification package.
+#
+# Filip Miletic <filmil@gmail.com>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mail-notification 0.6.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-10-06 19:31+0200\n"
+"PO-Revision-Date: 2004-09-30 02:54+0200\n"
+"Last-Translator: Filip Miletić <filmil@gmail.com>\n"
+"Language-Team: Serbian (sr) <gnu@prevod.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3;    plural=n%10==1 && n%100!=11 ? 0 :    n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+
+#: data/GNOME_MailNotification_Automation.server.in.in.h:1
+msgid "Mail Notification automation"
+msgstr "Dojava prispeća pošte"
+
+#: data/GNOME_MailNotification_Automation.server.in.in.h:2
+msgid "Mail Notification automation factory"
+msgstr "Fabrika ѕa dojavu prispeća pošte"
+
+#: data/mail-notification-properties.desktop.in.h:1
+msgid "Configure Mail Notification"
+msgstr "Podesi dojavu 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:272
+msgid "Mail Notification"
+msgstr "Dojava pošte"
+
+#: data/mail-notification.desktop.in.h:1
+msgid "Get notified when new mail arrives"
+msgstr "Obavesti kada stigne nova pošta"
+
+#: data/mail-notification.schemas.in.h:1
+msgid "Automatically close the mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:2
+msgid "Blink on errors"
+msgstr "Treperi ako dođe do greške"
+
+#: data/mail-notification.schemas.in.h:3
+msgid "Delay between mail checks (minutes part)."
+msgstr "Razmak između dve provere (minuti)"
+
+#: data/mail-notification.schemas.in.h:4
+msgid "Delay between mail checks (seconds part)."
+msgstr "Razmak između dve provere (sekunde)."
+
+#: data/mail-notification.schemas.in.h:5
+msgid "Do not show the immediate notification error dialog"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:6
+msgid "Enable mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:7
+msgid "Fingerprints of trusted X509 certificates"
+msgstr "Otisci proverenih X509 sertifikata"
+
+#: data/mail-notification.schemas.in.h:8
+msgid "Has already been run"
+msgstr "Već je pokrenut"
+
+#: data/mail-notification.schemas.in.h:9
+#, fuzzy
+msgid "Height of mail summary dialog"
+msgstr "Visina prozora sa postavkama"
+
+#: data/mail-notification.schemas.in.h:10
+msgid "Height of properties dialog"
+msgstr "Visina prozora sa postavkama"
+
+#: data/mail-notification.schemas.in.h:11
+msgid "Mail summary popup horizontal offset"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:12
+msgid "Mail summary popup position"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:13
+msgid "Mail summary popup vertical offset"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:14
+#, fuzzy
+msgid "Mailbox list"
+msgstr "Spisak sandučića"
+
+#: data/mail-notification.schemas.in.h:15
+msgid "Minutes between mail checks"
+msgstr "Minuta između dve provere"
+
+#: data/mail-notification.schemas.in.h:16
+msgid "Minutes to wait before closing the mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:17
+msgid "New mail command"
+msgstr "Izvrši kada pošta stigne"
+
+#: data/mail-notification.schemas.in.h:18
+msgid "Run a command when new mail arrives"
+msgstr "Pokreni komandu kada stigne nova pošta"
+
+#: data/mail-notification.schemas.in.h:19
+msgid "Seconds between mail checks"
+msgstr "Sekundi između dve provere"
+
+#: data/mail-notification.schemas.in.h:20
+msgid "Seconds to wait before closing the mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:21
+#, fuzzy
+msgid ""
+"The amount of time to wait before closing the mail summary popup (minutes "
+"part)."
+msgstr "Pauza između dve uzastopne provere"
+
+#: data/mail-notification.schemas.in.h:22
+#, fuzzy
+msgid ""
+"The amount of time to wait before closing the mail summary popup (seconds "
+"part)."
+msgstr "Pauza između dve uzastopne provere"
+
+#: data/mail-notification.schemas.in.h:23
+msgid "The command to run when new mail arrives."
+msgstr "Pokreni ovu komandu kada stigne nova pošta."
+
+#: data/mail-notification.schemas.in.h:24
+#, fuzzy
+msgid "The height of the mail summary dialog in pixels."
+msgstr "Visina prozora sa postavkama izražena u tačkama."
+
+#: data/mail-notification.schemas.in.h:25
+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:26
+msgid "The list of mailboxes to monitor."
+msgstr "Spisak sandučića koji se prate."
+
+#: data/mail-notification.schemas.in.h:27
+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:28
+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:29
+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:30
+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:31
+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:32
+#, fuzzy
+msgid "The width of the mail summary dialog in pixels."
+msgstr "Širina prozora sa postavkama izražena u tačkama."
+
+#: data/mail-notification.schemas.in.h:33
+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:34
+msgid "Trusted servers list"
+msgstr "Spisak proverenih servera"
+
+#: data/mail-notification.schemas.in.h:35
+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:36
+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:37
+#, fuzzy
+msgid "Whether to automatically close the mail summary popup or not."
+msgstr "Da li treba pokrenuti neku komandu kada stigne nova pošta."
+
+#: data/mail-notification.schemas.in.h:38
+#, fuzzy
+msgid "Whether to display the mail summary popup when new mail arrives or not."
+msgstr "Da li treba pokrenuti neku komandu kada stigne nova pošta."
+
+#: data/mail-notification.schemas.in.h:39
+msgid ""
+"Whether to prevent the immediate notification error dialog from being "
+"displayed or not."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:40
+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:41
+#, fuzzy
+msgid "Width of mail summary dialog"
+msgstr "Širina prozora sa postavkama"
+
+#: data/mail-notification.schemas.in.h:42
+msgid "Width of properties dialog"
+msgstr "Širina prozora sa postavkama"
+
+#: data/mail-notification.soundlist.in.h:2
+msgid "New Mail"
+msgstr "Nova pošta"
+
+#: src/eggtrayicon.c:109
+msgid "Orientation"
+msgstr "Orijentacija"
+
+#: src/eggtrayicon.c:110
+msgid "The orientation of the tray."
+msgstr "Orijentacija obaveštajne zone."
+
+#: src/mn-about-dialog.gob:43
+msgid "A Mail Notification Icon"
+msgstr "Sličica za dojavu prispeća pošte"
+
+# The email of the translator goes here
+#. translator: replace with your name and email
+#: src/mn-about-dialog.gob:47
+msgid "Jean-Yves Lefort <jylefort@brutele.be>"
+msgstr "Filip Miletić <filmil@gmail.com>"
+
+#: src/mn-auth-combo-box.gob:101 src/mn-autodetect-mailbox-properties.gob:37
+msgid "<span style=\"italic\">autodetect</span>"
+msgstr "<span style=\"italic\">sam pronađi</span>"
+
+#: src/mn-autodetect-mailbox-properties.gob:68
+msgid "_Location:"
+msgstr "_Mesto:"
+
+#: src/mn-autodetect-mailbox-properties.gob:74
+msgid "_Browse..."
+msgstr "_Pregledaj..."
+
+#: src/mn-autodetect-mailbox-properties.gob:81
+msgid "The URI of the mailbox"
+msgstr "URI oznaka poštanskog sandučega"
+
+#: src/mn-autodetect-mailbox-properties.gob:118
+msgid "Select a File or Folder"
+msgstr "Izaberite datoteku ili direktorijum"
+
+#: src/mn-blinking-image.gob:32
+msgid "Whether the image is blinking or not"
+msgstr "Da li slika treperi ili ne"
+
+#: src/mn-client-session.c:229
+#, c-format
+msgid "resolving %s"
+msgstr "pronalazim %s"
+
+#: src/mn-client-session.c:239
+#, c-format
+msgid "unable to resolve %s: %s"
+msgstr "Nije moguće pronaći %s: %s"
+
+#: src/mn-client-session.c:276
+#, c-format
+msgid "%s: unsupported address family"
+msgstr "%s: ova vrsta adrese nije podržana"
+
+#: src/mn-client-session.c:283
+#, c-format
+msgid "%s: unable to create socket: %s"
+msgstr "%s: nije moguće napraviti utičnicu: %s"
+
+#: src/mn-client-session.c:287
+#, c-format
+msgid "connecting to %s (%s) port %i"
+msgstr "povezujem se sa %s (%s) port %i"
+
+#: src/mn-client-session.c:290
+#, c-format
+msgid "unable to connect: %s"
+msgstr "nije moguće povezati se sa: %s"
+
+#: src/mn-client-session.c:295
+msgid "connected successfully"
+msgstr "povezivanje je uspelo"
+
+#. if reached, we couldn't find a working address
+#: src/mn-client-session.c:301
+#, c-format
+msgid "unable to connect to %s"
+msgstr "nije moguće povezati se sa %s"
+
+#: src/mn-client-session.c:317
+#, c-format
+msgid "unable to initialize the OpenSSL library: %s"
+msgstr "nije moguće pokrenuti OpenSSL biblioteku: %s"
+
+#: src/mn-client-session.c:325
+#, c-format
+msgid "unable to create a SSL/TLS object: %s"
+msgstr "nije moguće napraviti SSL/TLS objekat: %s"
+
+#: src/mn-client-session.c:331
+#, c-format
+msgid "unable to set the SSL/TLS file descriptor: %s"
+msgstr "nije moguće postaviti SSL/TLS opis za datoteku: %s"
+
+#: src/mn-client-session.c:337
+#, c-format
+msgid "unable to perform the SSL/TLS handshake: %s"
+msgstr "nije moguće obaviti SSL/TLS kontakt: %s"
+
+#: src/mn-client-session.c:343
+msgid "untrusted server"
+msgstr "neproveren server"
+
+#: src/mn-client-session.c:347
+#, c-format
+msgid "a SSL/TLS layer is now active (%s, %s %i-bit)"
+msgstr "SSL/TLS sloj je pokrenut (%s, %s %i-bit)"
+
+#: src/mn-client-session.c:394
+#, c-format
+msgid "%s, fingerprint: %s"
+msgstr "%s, otisak: %s"
+
+#: src/mn-client-session.c:423
+msgid "missing certificate"
+msgstr "nedostaje sertifikat"
+
+#: src/mn-client-session.c:449
+#, c-format
+msgid ""
+"Mail Notification was unable to trust \"%s\" (%s). It is possible that "
+"someone is intercepting your communication to obtain your confidential "
+"information.\n"
+"\n"
+"You should only connect to the server if you are certain you are connected "
+"to \"%s\". If you choose to connect to the server, this message will not be "
+"shown again."
+msgstr ""
+"Program za dojavu prispeća pošte ne može da proveri \"%s\" (%s). To može da "
+"znači da neko presreće vašu prepisku kako bi došao do vaših poverljivih "
+"podataka.\n"
+"\n"
+"Na server se treba povezivati samo ako ste sigurni da se zaista povezujete "
+"sa \"%s\". Ako odlučite da se povežete na server, ova poruka neće ponovo "
+"biti prikazana."
+
+#: src/mn-client-session.c:466
+msgid "Connect to untrusted server?"
+msgstr "Da li da se povežem na neprovereni server?"
+
+#: src/mn-client-session.c:471
+msgid "Co_nnect"
+msgstr "_Poveži se"
+
+#: src/mn-client-session.c:527
+#, c-format
+msgid "response \"%s\" is not valid in current context"
+msgstr "odgovor \"%s\" nije ispravan u trenutno važećem kontekstu"
+
+#: src/mn-client-session.c:553
+#, c-format
+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
+#, c-format
+msgid "unable to read from server: %s"
+msgstr "Nije moguće čitanje sa servera: %s"
+
+#: src/mn-client-session.c:597
+msgid "unable to read from server: EOF"
+msgstr "Nije moguće čitanje sa servera: EOF"
+
+#: src/mn-client-session.c:609
+#, 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
+#, 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
+#, c-format
+msgid "unable to write to server: %s"
+msgstr "nije moguć upis na server: %s"
+
+#: src/mn-client-session.c:782
+msgid "unable to write to server: EOF"
+msgstr "nije moguć upis na server: EOF"
+
+#: src/mn-client-session.c:814
+#, c-format
+msgid "unable to encode Base64: %s"
+msgstr "nije moguće kodirati Base64: %s"
+
+#: src/mn-client-session.c:917
+#, 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
+#, 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
+#, 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
+#, 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
+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
+#, c-format
+msgid "unable to start SASL authentication: %s"
+msgstr "ne može se pokrenuti SASL prijava: %s"
+
+#: src/mn-client-session.c:1013
+#, c-format
+msgid "unable to create a SASL connection: %s"
+msgstr "nije moguće uspostaviti SASL vezu: %s"
+
+#: src/mn-client-session.c:1063
+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
+#, c-format
+msgid "%s, aborting SASL authentication"
+msgstr "%s, obustavljam SASL prijavu"
+
+#. compliance error
+#: src/mn-client-session.c:1072
+#, 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
+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
+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
+#, 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
+#, 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
+#, 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
+#, c-format
+msgid "recursively unsetting %s"
+msgstr "rekurzivno poništavam %s"
+
+#: src/mn-conf.c:127
+msgid "syncing the GConf database"
+msgstr "usklađujem GConf bazu podataka"
+
+#: src/mn-conf.c:130
+msgid "completed"
+msgstr "urađeno"
+
+#: src/mn-gmail-mailbox-properties.gob:79
+msgid "Your Gmail username"
+msgstr "Vaše ime na servisu Gmail"
+
+#: src/mn-gmail-mailbox-properties.gob:80
+msgid "Your Gmail password"
+msgstr "Vaša lozinka na servisu Gmail"
+
+#: src/mn-gmail-mailbox.gob:65
+msgid "libsoup has not been compiled with SSL/TLS support"
+msgstr ""
+
+#: src/mn-gmail-mailbox.gob:110 src/mn-gmail-mailbox.gob:331
+#, fuzzy, c-format
+msgid "unable to parse URI \"%s\""
+msgstr "nije moguće obraditi odgovor \"%s\""
+
+#: src/mn-gmail-mailbox.gob:257
+msgid "logging in"
+msgstr "prijava u toku"
+
+#: src/mn-gmail-mailbox.gob:271 src/mn-gmail-mailbox.gob:342
+#: src/mn-gmail-mailbox.gob:380 src/mn-gmail-mailbox.gob:415
+msgid "login failed"
+msgstr "prijava nije uspela"
+
+#: src/mn-gmail-mailbox.gob:283 src/mn-gmail-mailbox.gob:356
+#: src/mn-gmail-mailbox.gob:394 src/mn-gmail-mailbox.gob:503
+#, c-format
+msgid "unable to transfer data: %s"
+msgstr "ne mogu da preuzmem podatke: %s"
+
+#: src/mn-gmail-mailbox.gob:409
+msgid "successfully logged in"
+msgstr "prijava je uspela"
+
+#: src/mn-gmail-mailbox.gob:487
+msgid "searching for unread mail"
+msgstr "tražim novu poštu"
+
+#: src/mn-gmail-mailbox.gob:491
+#, fuzzy
+msgid "unable to search for unread mail"
+msgstr "tražim novu poštu"
+
+#: src/mn-gmail-mailbox.gob:604
+msgid "unable to parse Gmail data"
+msgstr "ne mogu da obradim podatke sa Gmail-a"
+
+#: src/mn-gmime-stream-vfs.gob:49
+#, fuzzy, c-format
+msgid "unable to read %s: %s"
+msgstr "Nije moguće pronaći %s: %s"
+
+#: src/mn-gmime-stream-vfs.gob:51
+#, fuzzy, c-format
+msgid "unable to write to %s: %s"
+msgstr "nije moguć upis na server: %s"
+
+#: src/mn-gmime-stream-vfs.gob:53
+#, fuzzy, c-format
+msgid "unable to seek in %s: %s"
+msgstr "Nije moguće pronaći %s: %s"
+
+#: src/mn-gmime-stream-vfs.gob:55
+#, fuzzy, c-format
+msgid "unable to tell position of %s: %s"
+msgstr "nije moguće motriti na %s: %s"
+
+#: src/mn-gmime-stream-vfs.gob:57
+#, fuzzy, c-format
+msgid "unable to close %s: %s"
+msgstr "nije moguće zatvoriti direktorijum: %s"
+
+#: src/mn-imap-mailbox-properties.gob:94
+msgid "Mailbox:"
+msgstr "Sanduče:"
+
+#: src/mn-imap-mailbox-properties.gob:98
+msgid "in_box"
+msgstr "in_box"
+
+#: src/mn-imap-mailbox-properties.gob:109
+msgid "oth_er:"
+msgstr "_drugo:"
+
+#: src/mn-imap-mailbox-properties.gob:124
+msgid "The hostname or IP address of the IMAP server"
+msgstr "Ime ili IP broj IMAP servera"
+
+#: src/mn-imap-mailbox-properties.gob:125
+msgid "Your username on the IMAP server"
+msgstr "Vaše ime na IMAP serveru"
+
+#: src/mn-imap-mailbox-properties.gob:126
+msgid "Your password on the IMAP server"
+msgstr "Vaša lozinka na IMAP serveru"
+
+#: src/mn-imap-mailbox-properties.gob:127
+#: src/mn-imap-mailbox-properties.gob:128
+msgid "The port number of the IMAP server"
+msgstr "Broj porta na IMAP serveru"
+
+#: src/mn-imap-mailbox-properties.gob:129
+msgid "The mailbox name"
+msgstr "Ime sandučeta"
+
+#: src/mn-imap-mailbox.gob:132 src/mn-pop3-mailbox.gob:141
+msgid "SSL/TLS support has not been compiled in"
+msgstr "Podrška za SSL/TLS nije ugrađena"
+
+#: src/mn-imap-mailbox.gob:203
+msgid "server did not send capabilities"
+msgstr "server nije obavestio o svojim mogućnostima"
+
+#: src/mn-imap-mailbox.gob:318
+msgid "server advertised LOGINDISABLED, not using LOGIN authentication"
+msgstr "server je rekao LOGINDISABLED, ne koristim LOGIN prijavu"
+
+#: src/mn-imap-mailbox.gob:319
+msgid "unable to login"
+msgstr "prijava nije moguća"
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:447
+#, fuzzy
+msgid "server did not send search results"
+msgstr "server nije poslao status"
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:523
+#, fuzzy
+msgid "server did not send all the messages we requested"
+msgstr "server nije poslao status"
+
+#: src/mn-imap-mailbox.gob:570
+#, fuzzy
+msgid "unable to fetch message"
+msgstr "nije moguće povezati se sa: %s"
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:617
+msgid "server did not send status"
+msgstr "server nije poslao status"
+
+#: src/mn-imap-mailbox.gob:856 src/mn-pop3-mailbox.gob:903
+msgid "unknown server error"
+msgstr "nepoznata greška na serveru"
+
+#: src/mn-imap-mailbox.gob:927 src/mn-pop3-mailbox.gob:225
+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:823
+msgid ""
+"a SASL authentication mechanism was selected but SASL support has not been "
+"compiled in"
+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:835
+#, c-format
+msgid "unknown authentication mechanism \"%s\""
+msgstr "nepoznat mehanizam za prijavu \"%s\""
+
+#: src/mn-imap-mailbox.gob:972
+msgid "falling back to IMAP LOGIN authentication"
+msgstr "povratak na  IMAP LOGIN prijavu"
+
+#: src/mn-imap-mailbox.gob:976 src/mn-pop3-mailbox.gob:869
+msgid "authentication failed"
+msgstr "prijava nije uspela"
+
+#: src/mn-mail-icon.gob:84 ui/summary-dialog.glade.h:2
+msgid "_Update"
+msgstr "_Osveži"
+
+#: src/mn-mail-icon.gob:90
+msgid "R_emove From Notification Area"
+msgstr "_Ukloni sa obaveštajne zone"
+
+#: src/mn-mailbox-properties-dialog.c:109
+msgid "Add a Mailbox"
+msgstr "Dodaj sanduče"
+
+#: src/mn-mailbox-properties-dialog.c:328
+#, c-format
+msgid "%s Properties"
+msgstr "Postavke za %s"
+
+#: src/mn-mailbox-properties-util.c:77
+msgid "_Username:"
+msgstr "_Kor.ime:"
+
+#: src/mn-mailbox-properties-util.c:87
+msgid "_Password:"
+msgstr "_Lozinka:"
+
+#: src/mn-mailbox-properties-util.c:154
+msgid "Connection type:"
+msgstr "Vrsta veze:"
+
+#: src/mn-mailbox-properties-util.c:161
+msgid "Port:"
+msgstr "Port:"
+
+#: src/mn-mailbox-properties-util.c:189
+msgid "_Authentication mechanism:"
+msgstr "_Način prijave:"
+
+#: src/mn-mailbox-properties.c:63
+msgid "Label"
+msgstr "Oznaka"
+
+#: src/mn-mailbox-properties.c:64
+msgid "The marked up text to show in the type combo box"
+msgstr "Označeni tekst koji se pojavljuje u oznaci tipa"
+
+#: src/mn-mailbox-properties.c:69
+msgid "Size group"
+msgstr "Veličina grupe"
+
+#: src/mn-mailbox-properties.c:70
+msgid "A GtkSizeGroup for aligning control labels"
+msgstr "GtkSizeGroup za uravnanje kontrolnih oznaka"
+
+#: src/mn-mailbox-properties.c:75
+msgid "Complete"
+msgstr "Gotovo"
+
+#: src/mn-mailbox-properties.c:76
+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
+msgid "Mailbox"
+msgstr "Sanduče"
+
+#. format column
+#: src/mn-mailbox-view.gob:279
+msgid "Format"
+msgstr "Format"
+
+#: src/mn-mailbox-view.gob:569
+msgid "Unable to add mailbox"
+msgstr "Nije moguće dodati sanduče"
+
+#: src/mn-mailbox-view.gob:569
+msgid "The mailbox is already in the list."
+msgstr "Sanduče je već u spisku."
+
+#: src/mn-mailbox.gob:133
+msgid "The mailbox URI"
+msgstr "URI oznaka za sanduče"
+
+#: src/mn-mailbox.gob:144
+msgid "The mailbox human-readable name"
+msgstr "Ime sandučeta"
+
+#: src/mn-mailbox.gob:148
+msgid "Whether the mailbox has to be manually checked or not"
+msgstr "Da li se ovo sanduče ručno proverava ili ne"
+
+#: src/mn-mailbox.gob:153
+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:158
+msgid "The list of new and unread MNMessage objects"
+msgstr ""
+
+#: src/mn-mailbox.gob:212
+msgid "The mailbox error, if any"
+msgstr "Greška u pristupu sandučetu, ako postoji"
+
+#: src/mn-mailbox.gob:310
+msgid "does not exist"
+msgstr "ne postoji"
+
+#: src/mn-mailbox.gob:342
+msgid "unknown format"
+msgstr "nepoznat format"
+
+#: src/mn-mailbox.gob:408
+#, fuzzy, c-format
+msgid "unable to enable immediate notification for %s: %s"
+msgstr ""
+"Nije moguće namestiti neposrednu dojavu nove pošte za jedan ili više "
+"sandučića. %s"
+
+#: src/mn-mailbox.gob:426
+#, c-format
+msgid ""
+"As a fallback, they will be checked every %i second (this delay is "
+"configurable from the Properties Dialog)."
+msgid_plural ""
+"As a fallback, they will be checked every %i seconds (this delay is "
+"configurable from the Properties Dialog)."
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-mailbox.gob:437
+#, c-format
+msgid ""
+"As a fallback, they will be checked every %i minute (this delay is "
+"configurable from the Properties Dialog)."
+msgid_plural ""
+"As a fallback, they will be checked every %i minutes (this delay is "
+"configurable from the Properties Dialog)."
+msgstr[0] ""
+"Pošto nema druge mogućnosti, biće proveravani svaki %i minut (ovo kašnjenje "
+"se može promeniti iz prozora sa postavkama)"
+msgstr[1] ""
+"Pošto nema druge mogućnosti, biće proveravani svakih %i minuta (ovo "
+"kašnjenje se može promeniti iz prozora sa postavkama)"
+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:448
+#, c-format
+msgid ""
+"As a fallback, they will be checked approximately every %i minute (this "
+"delay is configurable from the Properties Dialog)."
+msgid_plural ""
+"As a fallback, they will be checked approximately every %i minutes (this "
+"delay is configurable from the Properties Dialog)."
+msgstr[0] ""
+"Pošto nema druge mogućnosti, biće proveravani na oko %i minut (ovo kašnjenje "
+"se može promeniti iz prozora sa postavkama)"
+msgstr[1] ""
+"Pošto nema druge mogućnosti, biće proveravani na oko %i minuta (ovo "
+"kašnjenje se može promeniti iz prozora sa postavkama)"
+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:464
+msgid "A monitoring error has occurred"
+msgstr "Došlo je do greške pri motrenju"
+
+#: src/mn-mailbox.gob:465
+#, c-format
+msgid ""
+"Mail Notification was unable to enable immediate notification for one or "
+"more mailboxes. %s"
+msgstr ""
+"Nije moguće namestiti neposrednu dojavu nove pošte za jedan ili više "
+"sandučića. %s"
+
+#: src/mn-mailboxes.gob:133
+#, fuzzy
+msgid "Whether one or more of the mailboxes has to be polled"
+msgstr "Da li se ovo sanduče ručno proverava ili ne"
+
+#: src/mn-mailboxes.gob:266
+#, c-format
+msgid "%s is unsupported: %s"
+msgstr "%s nije podržan: %s"
+
+#: src/mn-mailboxes.gob:297
+#, c-format
+msgid "%s has new mail"
+msgstr "Sanduče %s ima novu poštu"
+
+#: src/mn-mailboxes.gob:297
+#, c-format
+msgid "%s has no new mail"
+msgstr "Sanduče %s nema novu poštu"
+
+#: src/mn-mailboxes.gob:323
+#, c-format
+msgid "%s reported an error: %s"
+msgstr "%s je dojavio grešku: %s"
+
+#: src/mn-maildir-mailbox.gob:119
+#, c-format
+msgid "unable to open folder \"new\": %s"
+msgstr "nije moguće otvoriti direktorijum \"new\": %s"
+
+#: src/mn-maildir-mailbox.gob:161
+#, c-format
+msgid "unable to close folder \"new\": %s"
+msgstr "nije moguće zatvoriti direktorijum \"new\": %s"
+
+#: src/mn-maildir-mailbox.gob:164
+#, c-format
+msgid "error while reading folder \"new\": %s"
+msgstr "greška pri čitanju direktorijuma \"new\": %s"
+
+#: src/mn-main.c:97
+#, c-format
+msgid "Compiled-in mailbox backends: %s\n"
+msgstr "Program ume da čita sandučiće u formatima: %s\n"
+
+#: src/mn-main.c:114
+#, c-format
+msgid "Compiled-in features: %s\n"
+msgstr "Ugrađene mogućnosti: %s\n"
+
+#: src/mn-main.c:166
+msgid "Enable informational output"
+msgstr "Dozvoli rečitiji izlaz"
+
+#: src/mn-main.c:175
+msgid "List compiled-in features and exit"
+msgstr "Ispiši ugrađene mogućnosti i izađi"
+
+#: src/mn-main.c:184
+#, fuzzy
+msgid "Display the mail summary dialog"
+msgstr "Prikaži podatke o programu"
+
+#: src/mn-main.c:193
+msgid "Display the properties dialog"
+msgstr "Prikaži prozor sa postavkama"
+
+#: src/mn-main.c:202
+msgid "Display the about dialog"
+msgstr "Prikaži podatke o programu"
+
+#: src/mn-main.c:211
+msgid "Close the mail summary popup"
+msgstr ""
+
+#: src/mn-main.c:220
+msgid "Update the mail status"
+msgstr "Osveži podatke o pošti"
+
+#: src/mn-main.c:229
+msgid "Report the mail status"
+msgstr "Proveri poštu"
+
+#: src/mn-main.c:238
+msgid "Unset obsolete GConf configuration and exit"
+msgstr "Poništi zastarela GConf podešavanja i izađi"
+
+#.
+#. * We can't use mn_error_dialog() because gtk_init() has not been
+#. * called yet.
+#.
+#: src/mn-main.c:264
+msgid "multi-threading is not available"
+msgstr "višenitni rad nije podržan"
+
+#: src/mn-main.c:309
+msgid ""
+"Bonobo could not locate the automation object. Please check your Mail "
+"Notification installation."
+msgstr ""
+"Bonobo nije uspeo da pronađe objekat za automatizaciju. Proverite "
+"instalaciju programa za dojavu pošte. (Prim. prev: usled greške u programu "
+"Bonobo u Gnomu 2.6, kada instalirate program za obaveštenja, treba da se "
+"odjavite i ponovo prijavite na sistem da bi sve počelo da radi)"
+
+#: src/mn-main.c:314
+msgid "Unable to initialize the GnomeVFS library."
+msgstr "Nije moguće pokrenuti biblioteku GnomeVFS."
+
+#: src/mn-main.c:350
+msgid "updating the mail status"
+msgstr "Proveravam poštu"
+
+#: src/mn-main.c:368
+msgid "Mail Notification is already running"
+msgstr "Program za dojavu pošte je već pokrenut."
+
+#: src/mn-main.c:375
+msgid ""
+"Bonobo could not locate the GNOME_MailNotification_Automation.server file. "
+"Please check your Mail Notification installation."
+msgstr ""
+"Bonobo nije uspeo da pronađe objekat za automatizaciju. Proverite "
+"instalaciju programa za dojavu pošte. (Prim. prev: usled greške u programu "
+"Bonobo u Gnomu 2.6, kada instalirate program za obaveštenja, treba da se "
+"odjavite i ponovo prijavite na sistem da bi sve počelo da radi)"
+
+#: src/mn-main.c:379
+msgid ""
+"Bonobo was unable to register the automation server. Please check your Mail "
+"Notification installation."
+msgstr ""
+"Bonobo nije uspeo da pronađe objekat za automatizaciju. Proverite "
+"instalaciju programa za dojavu pošte. (Prim. prev: usled greške u programu "
+"Bonobo u Gnomu 2.6, kada instalirate program za obaveštenja, treba da se "
+"odjavite i ponovo prijavite na sistem da bi sve počelo da radi)"
+
+#: src/mn-mbox-mailbox.gob:221
+#, c-format
+msgid "error while reading mailbox: %s"
+msgstr "greška pri čitanju sandučeta: %s"
+
+#: src/mn-mbox-mailbox.gob:230
+#, c-format
+msgid "unable to open mailbox: %s"
+msgstr "nije moguće otvoriti sanduče: %s"
+
+#: src/mn-message-label.gob:77
+msgid "Unreadable message"
+msgstr ""
+
+#: src/mn-message-label.gob:97
+msgid "From"
+msgstr ""
+
+#: src/mn-message-label.gob:98
+msgid "Subject"
+msgstr ""
+
+#: src/mn-message-label.gob:102
+msgid "Sent"
+msgstr ""
+
+#: src/mn-message-label.gob:151
+#, c-format
+msgid "%i second ago"
+msgid_plural "%i seconds ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:155
+#, c-format
+msgid "%i minute ago"
+msgid_plural "%i minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:160
+#, c-format
+msgid "%i hour ago"
+msgid_plural "%i hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:165
+#, c-format
+msgid "%i day ago"
+msgid_plural "%i days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-mime.c:105
+#, fuzzy
+msgid "unable to parse MIME message"
+msgstr "nije moguće obraditi odgovor \"%s\""
+
+#: src/mn-message.gob:82
+msgid "Unknown"
+msgstr ""
+
+#: src/mn-mh-mailbox.gob:184
+#, c-format
+msgid "error while reading .mh_sequences: %s"
+msgstr "greška pri čitanju datoteke .mh_sequences: %s"
+
+#: src/mn-mh-mailbox.gob:196
+#, c-format
+msgid "unable to open .mh_sequences: %s"
+msgstr "nije moguće otvoriti datoteku .mh_sequences: %s"
+
+#: src/mn-pending-mailbox.gob:35
+msgid "detecting"
+msgstr "istražujem"
+
+#: src/mn-pi-mailbox-properties.gob:76
+msgid "_Hostname:"
+msgstr "_Računar:"
+
+#: src/mn-pi-mailbox-properties.gob:94
+msgid "_Details"
+msgstr "_Detalji"
+
+#: src/mn-pi-mailbox-properties.gob:106
+msgid "sta_ndard"
+msgstr "_standard"
+
+#: src/mn-pi-mailbox-properties.gob:116
+msgid "_in-band SSL/TLS"
+msgstr "_ugrađeni SSL/TLS"
+
+#: src/mn-pi-mailbox-properties.gob:126
+msgid "SSL/TLS on sepa_rate port"
+msgstr "SSL/TLS na posebnom portu"
+
+#: 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:87
+msgid "Your username on the POP3 server"
+msgstr "Vaše ime na  POP3 serveru"
+
+#: src/mn-pop3-mailbox-properties.gob:88
+msgid "Your password on the POP3 server"
+msgstr "Vaša lozinka na POP3 serveru"
+
+#: 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"
+
+#: src/mn-pop3-mailbox.gob:271
+msgid "invalid arguments for the LOGIN-DELAY capability"
+msgstr "parametri za mogućnost LOGIN-DELAY nisu ispravno postavljeni"
+
+#: src/mn-pop3-mailbox.gob:536
+#, fuzzy
+msgid "unknown error"
+msgstr "nepoznata greška na serveru"
+
+#: src/mn-pop3-mailbox.gob:666
+#, c-format
+msgid "honouring LOGIN-DELAY, sleeping for %i second"
+msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds"
+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:831
+msgid "server does not support APOP authentication"
+msgstr "server ne podržava prijavu korišćenjem mehanizma APOP"
+
+#: src/mn-pop3-mailbox.gob:859
+msgid "falling back to APOP authentication"
+msgstr "prelazim na  APOP prijavu"
+
+#: src/mn-pop3-mailbox.gob:864
+msgid "falling back to USER/PASS authentication"
+msgstr "prelazim na prijavu pomoću imena i lozinke"
+
+#: src/mn-properties.c:161
+#, fuzzy
+msgid "top left"
+msgstr "Gotovo"
+
+#: src/mn-properties.c:162
+msgid "top right"
+msgstr ""
+
+#: src/mn-properties.c:163
+msgid "bottom left"
+msgstr ""
+
+#: src/mn-properties.c:164
+msgid "bottom right"
+msgstr ""
+
+#: src/mn-properties.c:240
+msgid "No mailbox selected."
+msgstr "Nijedno sanduče nije izabrano."
+
+#: src/mn-properties.c:245
+#, c-format
+msgid "%i mailbox selected."
+msgid_plural "%i mailboxes selected."
+msgstr[0] "Izabrano %i sanduče"
+msgstr[1] "Izabrana %i sandučeta"
+msgstr[2] "Izabrano %i sandučeta"
+
+#: src/mn-shell.gob:84
+msgid "You have new mail."
+msgstr "Imate novu poštu."
+
+#: src/mn-shell.gob:96
+msgid "A command error has occurred in Mail Notification"
+msgstr "Došlo je do greške u komandama"
+
+#: src/mn-shell.gob:97
+#, c-format
+msgid "Unable to execute new mail command: %s."
+msgstr "Nije moguće izvršiti komandu za novu poštu: %s."
+
+#: src/mn-shell.gob:270
+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:274
+msgid "You have no new mail."
+msgstr "Nema pošte."
+
+#: src/mn-shell.gob:277
+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:282
+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-ssl.c:79
+msgid "unknown SSL/TLS error"
+msgstr "nepoznata greška u  SSL/TLS"
+
+#: src/mn-stock.c:28
+msgid "Select _All"
+msgstr "Izaberi _sve"
+
+#: src/mn-stock.c:29
+msgid "_Mail Summary"
+msgstr ""
+
+#: src/mn-sylpheed-mailbox.gob:122
+#, c-format
+msgid "unable to open folder: %s"
+msgstr "nije moguće otvoriti direktorijum: %s"
+
+#: src/mn-sylpheed-mailbox.gob:180
+#, c-format
+msgid "unable to close folder: %s"
+msgstr "nije moguće zatvoriti direktorijum: %s"
+
+#: src/mn-sylpheed-mailbox.gob:183
+#, c-format
+msgid "error while reading folder: %s"
+msgstr "greška pri čitanju direktorijuma: %s"
+
+#: src/mn-system-mailbox-properties.gob:34 src/mn-uri.gob:393
+msgid "System Mailbox"
+msgstr "Lokalno sanduče"
+
+#: src/mn-system-mailbox-properties.gob:57
+#, c-format
+msgid "Your system mailbox (<span weight=\"bold\">%s</span>) will be used."
+msgstr "Koristi se lokalno sanduče (<span weight=\"bold\">%s</span>)."
+
+#: src/mn-system-mailbox-properties.gob:64
+msgid ""
+"The location of your system mailbox could not be detected. Please set the "
+"MAIL environment variable."
+msgstr ""
+"Program nije uspeo da pronađe lokalno sanduče. Postavite promenljivu MAIL da "
+"pokazuje na njega."
+
+#: src/mn-unsupported-mailbox.gob:33
+msgid "The reason why the mailbox is unsupported"
+msgstr "Razlog zašto sanduče nije podržano"
+
+#: src/mn-unsupported-mailbox.gob:40
+msgid "unsupported"
+msgstr "nije podržano"
+
+#: src/mn-util.c:233
+#, c-format
+msgid "error loading image: %s"
+msgstr "greška pri učitavanju slike: %s"
+
+#: src/mn-util.c:271
+#, fuzzy, c-format
+msgid "widget \"%s\" not found in interface \"%s\""
+msgstr "element %s nije pronađen u sučelju %s"
+
+#: src/mn-util.c:385
+msgid "received an invalid URI list"
+msgstr "primljen je neispravan spisak URI oznaka"
+
+#: src/mn-util.c:421
+msgid "received an invalid Mozilla URL"
+msgstr "primljen je neispravan Mozilin URL"
+
+#: src/mn-util.c:514
+msgid "Unable to display help"
+msgstr "Nije moguće prikazati pomoć"
+
+#: src/mn-util.c:528
+#, c-format
+msgid "Unable to create a thread: %s."
+msgstr "Nije moguće pokrenuti nit: %s."
+
+#: src/mn-util.c:705
+msgid "_Do not show this message again"
+msgstr ""
+
+#: src/mn-util.c:789
+msgid "A fatal error has occurred in Mail Notification"
+msgstr "Došlo je do kobne greške u programu za dojavu pošte"
+
+#: src/mn-util.c:804
+#, fuzzy, c-format
+msgid "unable to get current time: %s"
+msgstr "nije moguće povezati se sa %s"
+
+#: src/mn-util.c:887
+#, c-format
+msgid "invalid signal specification \"%s\""
+msgstr ""
+
+#: ui/mailbox-properties.glade.h:1
+msgid "_Mailbox type:"
+msgstr "_Vrsta sandučeta:"
+
+#: ui/properties.glade.h:1
+msgid "    "
+msgstr "    "
+
+#: ui/properties.glade.h:2
+msgid "*"
+msgstr "*"
+
+#: ui/properties.glade.h:3
+msgid "<span weight=\"bold\">General</span>"
+msgstr "<span weight=\"bold\">Opšte</span>"
+
+#: ui/properties.glade.h:4
+#, fuzzy
+msgid "<span weight=\"bold\">Mailbox List</span>"
+msgstr "<span weight=\"bold\">Sandučići</span>"
+
+#: ui/properties.glade.h:5
+#, fuzzy
+msgid "<span weight=\"bold\">Position</span>"
+msgstr "<span weight=\"bold\">Naredbe</span>"
+
+#: ui/properties.glade.h:6
+msgid "General"
+msgstr ""
+
+#: ui/properties.glade.h:7
+msgid "Hori_zontal offset:"
+msgstr ""
+
+#: ui/properties.glade.h:8
+msgid "Mail Notification Properties"
+msgstr "Postavke za dojavu"
+
+#: ui/properties.glade.h:9
+msgid "Mail Summary Popup"
+msgstr ""
+
+#: ui/properties.glade.h:10
+#, fuzzy
+msgid "Mailboxes"
+msgstr "Sanduče"
+
+#: ui/properties.glade.h:11
+#, fuzzy
+msgid "P_osition:"
+msgstr "_Mesto:"
+
+#: ui/properties.glade.h:12
+#, fuzzy
+msgid "The amount of time to wait before closing the mail summary popup"
+msgstr "Pauza između dve uzastopne provere"
+
+#: ui/properties.glade.h:13
+msgid "The amount of time to wait between mail checks"
+msgstr "Pauza između dve uzastopne provere"
+
+#: ui/properties.glade.h:14
+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:15
+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:16
+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:17
+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:18
+#, fuzzy
+msgid "Whether to automatically close the mail summary popup or not"
+msgstr "Da li u sandučetu stoji nova pošta ili ne"
+
+#: ui/properties.glade.h:19
+#, fuzzy
+msgid "Whether to display the mail summary popup when new mail arrives or not"
+msgstr "Da li se pokreće komanda kada stigne pošta ili ne"
+
+#: ui/properties.glade.h:20
+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:21
+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:22
+msgid "_Automatically close after:"
+msgstr ""
+
+#: ui/properties.glade.h:23
+msgid "_Blink on errors"
+msgstr "_Treperi pri greškama"
+
+#: ui/properties.glade.h:24
+msgid "_Delay between mail checks:"
+msgstr "_Pauza između provera:"
+
+#: ui/properties.glade.h:25
+msgid "_Enable mail summary popup"
+msgstr ""
+
+#: ui/properties.glade.h:26
+#, fuzzy
+msgid "_Run a command when new mail arrives:"
+msgstr "Pokreni komandu kada stigne nova pošta"
+
+#: ui/properties.glade.h:27
+msgid "_Start Mail Notification on GNOME login"
+msgstr "Pokreni _dojavu pri prijavi"
+
+#: ui/properties.glade.h:28
+msgid "_Vertical offset:"
+msgstr ""
+
+#: ui/properties.glade.h:29
+msgid "minutes"
+msgstr "minuta"
+
+#: ui/properties.glade.h:30
+msgid "pixels"
+msgstr ""
+
+#: ui/properties.glade.h:31
+msgid "seconds"
+msgstr "sekundi"
+
+#: 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>"
+msgstr "<span weight=\"bold\">Sandučići</span>"
+
+#: ui/welcome.glade.h:1
+msgid ""
+"<span weight=\"bold\" size=\"larger\">First startup</span>\n"
+"\n"
+"Mail Notification has been loaded successfully.\n"
+"\n"
+"Since this is the first time you run Mail Notification, you might want to "
+"configure it.\n"
+"\n"
+"Note: this message will not be shown anymore. To configure Mail Notification "
+"again, choose <span weight=\"bold\">Applications</span> → <span weight=\"bold"
+"\">Desktop Preferences</span> → <span weight=\"bold\">Mail Notification</"
+"span> (or on some systems <span weight=\"bold\">Applications → Preferences → "
+"More Preferences → Mail Notification</span>)."
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">Prvo pokretanje</span>\n"
+"\n"
+"Program za dojavu pošte je uspešno pokrenut.\n"
+"\n"
+"Pošto ste program za dojavu pošte prvi put pokrenuli, verovatno želite i da "
+"ga podesite.\n"
+"\n"
+"Pažnja: ova poruka se ubuduće neće prikazivati. Da biste podesili dojavu "
+"pošte, izaberite stavku Programi <span weight=\"bold\">Programi</span> → "
+"<span weight=\"bold\">Postavke okruženja</span> → <span weight=\"bold"
+"\">Dojava pošte</span> (ili na nekim sistemima <span weight=\"bold"
+"\">Programi → Postavke → Još postavki → Dojava pošte</span>)."
+
+#: ui/welcome.glade.h:8
+msgid "_Configure Mail Notification"
+msgstr "_Podesi dojavu pošte"
+
+#: ui/welcome.glade.h:9
+msgid "_Skip configuration"
+msgstr "P_reskoči podešavanja"
+
+#~ msgid "Double-clicked command"
+#~ msgstr "Izvrši na dvostruki klik"
+
+#~ msgid "Run a command when the icon is double-clicked"
+#~ msgstr "Izvrši komandu pri dvostrukom kliku na ikonu"
+
+#~ msgid "The command to run when the icon is double-clicked."
+#~ msgstr "Pokreni ovu komandu pri dvostrukom kliku na ikonu."
+
+#~ msgid "Whether to run a command when the icon is double-clicked or not."
+#~ msgstr ""
+#~ "Da li treba pokrenuti neku komandu kada pri dvostrukom kliku na ikonu."
+
+#~ msgid "_Run %s"
+#~ msgstr "_Pokreni %s"
+
+#~ msgid "_Run Default Action"
+#~ msgstr "P_okreni podrazumevano"
+
+#~ msgid "A command error has occurred"
+#~ msgstr "Došlo je do greške u komandama"
+
+#~ msgid "Unable to execute double-clicked command: %s."
+#~ msgstr "Nije moguće izvršiti komandu na dvostruki klik: %s."
+
+#~ msgid "The command to run when the icon is double-clicked"
+#~ msgstr "Naredba koja se pokreće pri dvostrukom kliku"
+
+#~ msgid "When _new mail arrives:"
+#~ msgstr "Kada _stigne nova pošta:"
+
+#~ msgid "When double-click_ed:"
+#~ msgstr "Pri _dvostrukom kliku:"
+
+#~ msgid "Whether to run a command when the icon is double-clicked or not"
+#~ msgstr "Da li se pokreće komanda pri dvostrukom kliku ili ne"
diff --git a/src/MNAutomation.idl b/src/MNAutomation.idl
@@ -24,7 +24,9 @@ module GNOME
   {
     void update ();
     void report (out string report);
+    void displayMailSummary ();
     void displayProperties ();
     void displayAbout ();
+    void closePopup ();
   };
 };
diff --git a/src/Makefile.am b/src/Makefile.am
@@ -84,10 +84,25 @@ gmail_gob_built_sources = \
 	mn-gmail-mailbox-private.h		\
 	mn-gmail-mailbox.c			\
 	mn-gmail-mailbox.h
+gmail_sources = \
+	mn-sgml-ref.c	\
+	mn-sgml-ref.h	\
+	mn-soup.c	\
+	mn-soup.h
+gmail_built_sources = \
+	mn-sgml-entities.h
 endif
 
-if HAVE_SOUP
-soup_sources = mn-soup.c mn-soup.h
+if WITH_MIME
+mime_gob_sources = \
+	mn-gmime-stream-vfs.gob
+mime_gob_built_sources = \
+	mn-gmime-stream-vfs-private.h	\
+	mn-gmime-stream-vfs.c		\
+	mn-gmime-stream-vfs.h
+mime_sources = \
+	mn-message-mime.c	\
+	mn-message-mime.h
 endif
 
 if WITH_SSL
@@ -114,6 +129,7 @@ gob_sources = \
 	$(pi_gob_sources)			\
 	$(sylpheed_gob_sources)			\
 	$(gmail_gob_sources)			\
+	$(mime_gob_sources)			\
 	mn-about-dialog.gob			\
 	mn-autodetect-mailbox-properties.gob	\
 	mn-automation.gob			\
@@ -122,6 +138,8 @@ gob_sources = \
 	mn-mailbox-view.gob			\
 	mn-mailbox.gob				\
 	mn-mailboxes.gob			\
+	mn-message-label.gob			\
+	mn-message.gob				\
 	mn-pending-mailbox.gob			\
 	mn-shell.gob				\
 	mn-system-mailbox-properties.gob	\
@@ -136,6 +154,7 @@ gob_built_sources = \
 	$(pi_gob_built_sources)				\
 	$(sylpheed_gob_built_sources)			\
 	$(gmail_gob_built_sources)			\
+	$(mime_gob_built_sources)			\
 	mn-about-dialog-private.h			\
 	mn-about-dialog.c				\
 	mn-about-dialog.h				\
@@ -160,6 +179,12 @@ 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-private.h				\
+	mn-message.c					\
+	mn-message.h					\
 	mn-pending-mailbox-private.h			\
 	mn-pending-mailbox.c				\
 	mn-pending-mailbox.h				\
@@ -181,11 +206,13 @@ mail_notification_SOURCES = \
 	$(idl_sources)			\
 	$(gob_sources)			\
 	$(gob_built_sources)		\
+	$(gmail_sources)		\
+	$(gmail_built_sources)		\
 	$(md5_sources)			\
 	$(client_session_sources)	\
-	$(soup_sources)			\
 	$(ssl_sources)			\
 	$(sasl_sources)			\
+	$(mime_sources)			\
 	eggtrayicon.c			\
 	eggtrayicon.h			\
 	mn-conf.c			\
@@ -201,13 +228,22 @@ mail_notification_SOURCES = \
 	mn-properties.h			\
 	mn-stock.c			\
 	mn-stock.h			\
+	mn-summary-dialog.c		\
+	mn-summary-dialog.h		\
+	mn-summary-popup.c		\
+	mn-summary-popup.h		\
+	mn-summary.c			\
+	mn-summary.h			\
 	mn-util.c			\
 	mn-util.h			\
 	mn-vfs.c			\
 	mn-vfs.h
-BUILT_SOURCES = $(idl_built_sources) $(gob_built_sources)
+BUILT_SOURCES = \
+	$(idl_built_sources)		\
+	$(gob_built_sources)		\
+	$(gmail_built_sources)
 
-AM_CPPFLAGS = $(WARN_CFLAGS) $(G_ASSERTIONS) $(GNOME_CFLAGS) $(SOUP_CFLAGS) $(OPENSSL_CFLAGS) $(SASL_CFLAGS) \
+AM_CPPFLAGS = $(WARN_CFLAGS) $(GNOME_CFLAGS) $(GMIME_CFLAGS) $(SOUP_CFLAGS) $(OPENSSL_CFLAGS) $(SASL_CFLAGS) \
 	-I$(top_srcdir) \
 	-DPREFIX="\"$(prefix)\"" \
 	-DSYSCONFDIR="\"$(sysconfdir)\"" \
@@ -216,12 +252,18 @@ AM_CPPFLAGS = $(WARN_CFLAGS) $(G_ASSERTIONS) $(GNOME_CFLAGS) $(SOUP_CFLAGS) $(OP
 	-DGNOMELOCALEDIR="\"$(datadir)/locale\"" \
 	-DUIDIR="\"$(pkgdatadir)/ui\"" \
 	-DG_LOG_DOMAIN="\"$(PACKAGE)\""
-AM_LDFLAGS = $(INTLLIBS) $(GNOME_LIBS) $(SOUP_LIBS) $(OPENSSL_LIBS) $(SASL_LIBS)
+AM_LDFLAGS = $(INTLLIBS) $(GNOME_LIBS) $(GMIME_LIBS) $(SOUP_LIBS) $(OPENSSL_LIBS) $(SASL_LIBS)
 
 CLEANFILES = $(idl_built_sources)
-MAINTAINERCLEANFILES = $(gob_built_sources)
+MAINTAINERCLEANFILES = $(gob_built_sources) $(gmail_built_sources)
+
+entity_sets = xhtml-lat1.ent xhtml-special.ent xhtml-symbol.ent
+EXTRA_DIST = ent2h.sh $(entity_sets)
 
 %.c %.h %-private.h: %.gob
 	$(GOB2) --always-private-header --exit-on-warn $<
 %-common.c %-stubs.c %-skels.c %.h: %.idl $(ORBIT_IDL)
 	$(ORBIT_IDL) -I$(LIBBONOBO_IDL) -I$(BONOBO_ACTIVATION_IDL) $<
+
+mn-sgml-entities.h: ent2h.sh $(entity_sets)
+	./ent2h.sh $(entity_sets) > $@
diff --git a/src/Makefile.in b/src/Makefile.in
@@ -57,10 +57,11 @@ am__mail_notification_SOURCES_DIST = MNAutomation.idl \
 	mn-imap-mailbox-properties.gob mn-imap-mailbox.gob \
 	mn-auth-combo-box.gob mn-pi-mailbox-properties.gob \
 	mn-sylpheed-mailbox.gob mn-gmail-mailbox-properties.gob \
-	mn-gmail-mailbox.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-pending-mailbox.gob \
+	mn-gmail-mailbox.gob 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-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 \
@@ -79,8 +80,10 @@ am__mail_notification_SOURCES_DIST = MNAutomation.idl \
 	mn-sylpheed-mailbox.h mn-gmail-mailbox-properties-private.h \
 	mn-gmail-mailbox-properties.c mn-gmail-mailbox-properties.h \
 	mn-gmail-mailbox-private.h mn-gmail-mailbox.c \
-	mn-gmail-mailbox.h mn-about-dialog-private.h mn-about-dialog.c \
-	mn-about-dialog.h mn-autodetect-mailbox-properties-private.h \
+	mn-gmail-mailbox.h mn-gmime-stream-vfs-private.h \
+	mn-gmime-stream-vfs.c mn-gmime-stream-vfs.h \
+	mn-about-dialog-private.h mn-about-dialog.c mn-about-dialog.h \
+	mn-autodetect-mailbox-properties-private.h \
 	mn-autodetect-mailbox-properties.c \
 	mn-autodetect-mailbox-properties.h mn-automation-private.h \
 	mn-automation.c mn-automation.h mn-blinking-image-private.h \
@@ -88,24 +91,30 @@ 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-pending-mailbox-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-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-unsupported-mailbox-private.h mn-unsupported-mailbox.c \
 	mn-unsupported-mailbox.h mn-uri-private.h mn-uri.c mn-uri.h \
-	mn-md5.c mn-md5.h mn-client-session.c mn-client-session.h \
-	mn-soup.c mn-soup.h mn-ssl.c mn-ssl.h mn-sasl.c mn-sasl.h \
-	eggtrayicon.c eggtrayicon.h mn-conf.c mn-conf.h \
+	mn-sgml-ref.c mn-sgml-ref.h mn-soup.c mn-soup.h \
+	mn-sgml-entities.h mn-md5.c mn-md5.h mn-client-session.c \
+	mn-client-session.h mn-ssl.c mn-ssl.h mn-sasl.c mn-sasl.h \
+	mn-message-mime.c mn-message-mime.h eggtrayicon.c \
+	eggtrayicon.h mn-conf.c mn-conf.h \
 	mn-mailbox-properties-dialog.c mn-mailbox-properties-dialog.h \
 	mn-mailbox-properties-util.c mn-mailbox-properties-util.h \
 	mn-mailbox-properties.c mn-mailbox-properties.h mn-main.c \
 	mn-properties.c mn-properties.h mn-stock.c mn-stock.h \
-	mn-util.c mn-util.h mn-vfs.c mn-vfs.h
+	mn-summary-dialog.c mn-summary-dialog.h mn-summary-popup.c \
+	mn-summary-popup.h mn-summary.c mn-summary.h mn-util.c \
+	mn-util.h mn-vfs.c mn-vfs.h
 am__objects_1 =
 am__objects_2 = $(am__objects_1) $(am__objects_1) $(am__objects_1) \
 	$(am__objects_1) $(am__objects_1) $(am__objects_1) \
-	$(am__objects_1) $(am__objects_1)
+	$(am__objects_1) $(am__objects_1) $(am__objects_1)
 @WITH_MBOX_TRUE@am__objects_3 = mn-mbox-mailbox.$(OBJEXT)
 @WITH_MH_TRUE@am__objects_4 = mn-mh-mailbox.$(OBJEXT)
 @WITH_MAILDIR_TRUE@am__objects_5 = mn-maildir-mailbox.$(OBJEXT)
@@ -119,33 +128,39 @@ am__objects_2 = $(am__objects_1) $(am__objects_1) $(am__objects_1) \
 @WITH_GMAIL_TRUE@am__objects_10 =  \
 @WITH_GMAIL_TRUE@	mn-gmail-mailbox-properties.$(OBJEXT) \
 @WITH_GMAIL_TRUE@	mn-gmail-mailbox.$(OBJEXT)
-am__objects_11 = $(am__objects_3) $(am__objects_4) $(am__objects_5) \
+@WITH_MIME_TRUE@am__objects_11 = mn-gmime-stream-vfs.$(OBJEXT)
+am__objects_12 = $(am__objects_3) $(am__objects_4) $(am__objects_5) \
 	$(am__objects_6) $(am__objects_7) $(am__objects_8) \
-	$(am__objects_9) $(am__objects_10) mn-about-dialog.$(OBJEXT) \
+	$(am__objects_9) $(am__objects_10) $(am__objects_11) \
+	mn-about-dialog.$(OBJEXT) \
 	mn-autodetect-mailbox-properties.$(OBJEXT) \
 	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-pending-mailbox.$(OBJEXT) mn-shell.$(OBJEXT) \
 	mn-system-mailbox-properties.$(OBJEXT) \
 	mn-unsupported-mailbox.$(OBJEXT) mn-uri.$(OBJEXT)
-@WITH_POP3_TRUE@am__objects_12 = mn-md5.$(OBJEXT)
-@WITH_POP3_OR_IMAP_TRUE@am__objects_13 = mn-client-session.$(OBJEXT)
-@HAVE_SOUP_TRUE@am__objects_14 = mn-soup.$(OBJEXT)
-@WITH_SSL_TRUE@am__objects_15 = mn-ssl.$(OBJEXT)
-@WITH_SASL_TRUE@am__objects_16 = mn-sasl.$(OBJEXT)
+@WITH_GMAIL_TRUE@am__objects_13 = mn-sgml-ref.$(OBJEXT) \
+@WITH_GMAIL_TRUE@	mn-soup.$(OBJEXT)
+@WITH_POP3_TRUE@am__objects_14 = mn-md5.$(OBJEXT)
+@WITH_POP3_OR_IMAP_TRUE@am__objects_15 = mn-client-session.$(OBJEXT)
+@WITH_SSL_TRUE@am__objects_16 = mn-ssl.$(OBJEXT)
+@WITH_SASL_TRUE@am__objects_17 = mn-sasl.$(OBJEXT)
+@WITH_MIME_TRUE@am__objects_18 = mn-message-mime.$(OBJEXT)
 am_mail_notification_OBJECTS = $(am__objects_1) $(am__objects_2) \
-	$(am__objects_11) $(am__objects_12) $(am__objects_13) \
+	$(am__objects_12) $(am__objects_13) $(am__objects_1) \
 	$(am__objects_14) $(am__objects_15) $(am__objects_16) \
-	eggtrayicon.$(OBJEXT) mn-conf.$(OBJEXT) \
-	mn-mailbox-properties-dialog.$(OBJEXT) \
+	$(am__objects_17) $(am__objects_18) eggtrayicon.$(OBJEXT) \
+	mn-conf.$(OBJEXT) mn-mailbox-properties-dialog.$(OBJEXT) \
 	mn-mailbox-properties-util.$(OBJEXT) \
 	mn-mailbox-properties.$(OBJEXT) mn-main.$(OBJEXT) \
-	mn-properties.$(OBJEXT) mn-stock.$(OBJEXT) mn-util.$(OBJEXT) \
-	mn-vfs.$(OBJEXT)
-am__objects_17 = MNAutomation-common.$(OBJEXT) \
+	mn-properties.$(OBJEXT) mn-stock.$(OBJEXT) \
+	mn-summary-dialog.$(OBJEXT) mn-summary-popup.$(OBJEXT) \
+	mn-summary.$(OBJEXT) mn-util.$(OBJEXT) mn-vfs.$(OBJEXT)
+am__objects_19 = MNAutomation-common.$(OBJEXT) \
 	MNAutomation-stubs.$(OBJEXT) MNAutomation-skels.$(OBJEXT)
-nodist_mail_notification_OBJECTS = $(am__objects_17)
+nodist_mail_notification_OBJECTS = $(am__objects_19)
 mail_notification_OBJECTS = $(am_mail_notification_OBJECTS) \
 	$(nodist_mail_notification_OBJECTS)
 mail_notification_LDADD = $(LDADD)
@@ -165,6 +180,7 @@ am__depfiles_maybe = depfiles
 @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 \
@@ -177,15 +193,22 @@ am__depfiles_maybe = depfiles
 @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 ./$(DEPDIR)/mn-mh-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-shell.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-soup.Po ./$(DEPDIR)/mn-ssl.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-stock.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 \
@@ -232,6 +255,8 @@ GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
 GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
 GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
 GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMIME_CFLAGS = @GMIME_CFLAGS@
+GMIME_LIBS = @GMIME_LIBS@
 GMOFILES = @GMOFILES@
 GMSGFMT = @GMSGFMT@
 GNOME_CFLAGS = @GNOME_CFLAGS@
@@ -239,9 +264,6 @@ GNOME_LIBS = @GNOME_LIBS@
 GOB2 = @GOB2@
 GTK_CFLAGS = @GTK_CFLAGS@
 GTK_LIBS = @GTK_LIBS@
-G_ASSERTIONS = @G_ASSERTIONS@
-HAVE_SOUP_FALSE = @HAVE_SOUP_FALSE@
-HAVE_SOUP_TRUE = @HAVE_SOUP_TRUE@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -315,6 +337,8 @@ WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
 WITH_MBOX_TRUE = @WITH_MBOX_TRUE@
 WITH_MH_FALSE = @WITH_MH_FALSE@
 WITH_MH_TRUE = @WITH_MH_TRUE@
+WITH_MIME_FALSE = @WITH_MIME_FALSE@
+WITH_MIME_TRUE = @WITH_MIME_TRUE@
 WITH_POP3_FALSE = @WITH_POP3_FALSE@
 WITH_POP3_OR_IMAP_FALSE = @WITH_POP3_OR_IMAP_FALSE@
 WITH_POP3_OR_IMAP_TRUE = @WITH_POP3_OR_IMAP_TRUE@
@@ -429,7 +453,27 @@ target_alias = @target_alias@
 @WITH_GMAIL_TRUE@	mn-gmail-mailbox.c			\
 @WITH_GMAIL_TRUE@	mn-gmail-mailbox.h
 
-@HAVE_SOUP_TRUE@soup_sources = mn-soup.c mn-soup.h
+@WITH_GMAIL_TRUE@gmail_sources = \
+@WITH_GMAIL_TRUE@	mn-sgml-ref.c	\
+@WITH_GMAIL_TRUE@	mn-sgml-ref.h	\
+@WITH_GMAIL_TRUE@	mn-soup.c	\
+@WITH_GMAIL_TRUE@	mn-soup.h
+
+@WITH_GMAIL_TRUE@gmail_built_sources = \
+@WITH_GMAIL_TRUE@	mn-sgml-entities.h
+
+@WITH_MIME_TRUE@mime_gob_sources = \
+@WITH_MIME_TRUE@	mn-gmime-stream-vfs.gob
+
+@WITH_MIME_TRUE@mime_gob_built_sources = \
+@WITH_MIME_TRUE@	mn-gmime-stream-vfs-private.h	\
+@WITH_MIME_TRUE@	mn-gmime-stream-vfs.c		\
+@WITH_MIME_TRUE@	mn-gmime-stream-vfs.h
+
+@WITH_MIME_TRUE@mime_sources = \
+@WITH_MIME_TRUE@	mn-message-mime.c	\
+@WITH_MIME_TRUE@	mn-message-mime.h
+
 @WITH_SSL_TRUE@ssl_sources = mn-ssl.c mn-ssl.h
 @WITH_SASL_TRUE@sasl_sources = mn-sasl.c mn-sasl.h
 idl_sources = MNAutomation.idl
@@ -448,6 +492,7 @@ gob_sources = \
 	$(pi_gob_sources)			\
 	$(sylpheed_gob_sources)			\
 	$(gmail_gob_sources)			\
+	$(mime_gob_sources)			\
 	mn-about-dialog.gob			\
 	mn-autodetect-mailbox-properties.gob	\
 	mn-automation.gob			\
@@ -456,6 +501,8 @@ gob_sources = \
 	mn-mailbox-view.gob			\
 	mn-mailbox.gob				\
 	mn-mailboxes.gob			\
+	mn-message-label.gob			\
+	mn-message.gob				\
 	mn-pending-mailbox.gob			\
 	mn-shell.gob				\
 	mn-system-mailbox-properties.gob	\
@@ -471,6 +518,7 @@ gob_built_sources = \
 	$(pi_gob_built_sources)				\
 	$(sylpheed_gob_built_sources)			\
 	$(gmail_gob_built_sources)			\
+	$(mime_gob_built_sources)			\
 	mn-about-dialog-private.h			\
 	mn-about-dialog.c				\
 	mn-about-dialog.h				\
@@ -495,6 +543,12 @@ 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-private.h				\
+	mn-message.c					\
+	mn-message.h					\
 	mn-pending-mailbox-private.h			\
 	mn-pending-mailbox.c				\
 	mn-pending-mailbox.h				\
@@ -516,11 +570,13 @@ mail_notification_SOURCES = \
 	$(idl_sources)			\
 	$(gob_sources)			\
 	$(gob_built_sources)		\
+	$(gmail_sources)		\
+	$(gmail_built_sources)		\
 	$(md5_sources)			\
 	$(client_session_sources)	\
-	$(soup_sources)			\
 	$(ssl_sources)			\
 	$(sasl_sources)			\
+	$(mime_sources)			\
 	eggtrayicon.c			\
 	eggtrayicon.h			\
 	mn-conf.c			\
@@ -536,13 +592,23 @@ mail_notification_SOURCES = \
 	mn-properties.h			\
 	mn-stock.c			\
 	mn-stock.h			\
+	mn-summary-dialog.c		\
+	mn-summary-dialog.h		\
+	mn-summary-popup.c		\
+	mn-summary-popup.h		\
+	mn-summary.c			\
+	mn-summary.h			\
 	mn-util.c			\
 	mn-util.h			\
 	mn-vfs.c			\
 	mn-vfs.h
 
-BUILT_SOURCES = $(idl_built_sources) $(gob_built_sources)
-AM_CPPFLAGS = $(WARN_CFLAGS) $(G_ASSERTIONS) $(GNOME_CFLAGS) $(SOUP_CFLAGS) $(OPENSSL_CFLAGS) $(SASL_CFLAGS) \
+BUILT_SOURCES = \
+	$(idl_built_sources)		\
+	$(gob_built_sources)		\
+	$(gmail_built_sources)
+
+AM_CPPFLAGS = $(WARN_CFLAGS) $(GNOME_CFLAGS) $(GMIME_CFLAGS) $(SOUP_CFLAGS) $(OPENSSL_CFLAGS) $(SASL_CFLAGS) \
 	-I$(top_srcdir) \
 	-DPREFIX="\"$(prefix)\"" \
 	-DSYSCONFDIR="\"$(sysconfdir)\"" \
@@ -552,9 +618,11 @@ AM_CPPFLAGS = $(WARN_CFLAGS) $(G_ASSERTIONS) $(GNOME_CFLAGS) $(SOUP_CFLAGS) $(OP
 	-DUIDIR="\"$(pkgdatadir)/ui\"" \
 	-DG_LOG_DOMAIN="\"$(PACKAGE)\""
 
-AM_LDFLAGS = $(INTLLIBS) $(GNOME_LIBS) $(SOUP_LIBS) $(OPENSSL_LIBS) $(SASL_LIBS)
+AM_LDFLAGS = $(INTLLIBS) $(GNOME_LIBS) $(GMIME_LIBS) $(SOUP_LIBS) $(OPENSSL_LIBS) $(SASL_LIBS)
 CLEANFILES = $(idl_built_sources)
-MAINTAINERCLEANFILES = $(gob_built_sources)
+MAINTAINERCLEANFILES = $(gob_built_sources) $(gmail_built_sources)
+entity_sets = xhtml-lat1.ent xhtml-special.ent xhtml-symbol.ent
+EXTRA_DIST = ent2h.sh $(entity_sets)
 all: $(BUILT_SOURCES)
 	$(MAKE) $(AM_MAKEFLAGS) all-am
 
@@ -635,6 +703,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-conf.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-gmail-mailbox-properties.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-gmail-mailbox.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-gmime-stream-vfs.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-imap-mailbox-properties.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-imap-mailbox.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-mail-icon.Po@am__quote@
@@ -648,6 +717,9 @@ 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-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@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-pending-mailbox.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-pi-mailbox-properties.Po@am__quote@
@@ -655,10 +727,14 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-pop3-mailbox.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-properties.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-sasl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-sgml-ref.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-shell.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-soup.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-ssl.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-stock.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-summary-dialog.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-summary-popup.Po@am__quote@
+@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-unsupported-mailbox.Po@am__quote@
@@ -792,8 +868,8 @@ distclean-generic:
 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 "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
 	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
 clean: clean-am
 
 clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
@@ -859,6 +935,9 @@ uninstall-am: uninstall-binPROGRAMS uninstall-info-am
 	$(GOB2) --always-private-header --exit-on-warn $<
 %-common.c %-stubs.c %-skels.c %.h: %.idl $(ORBIT_IDL)
 	$(ORBIT_IDL) -I$(LIBBONOBO_IDL) -I$(BONOBO_ACTIVATION_IDL) $<
+
+mn-sgml-entities.h: ent2h.sh $(entity_sets)
+	./ent2h.sh $(entity_sets) > $@
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/src/ent2h.sh b/src/ent2h.sh
@@ -0,0 +1,51 @@
+#!/bin/sh
+#
+# ent2h.sh - convert one or more SGML entity sets to a C header
+# $Id: ent2h.sh,v 1.1 2004/09/20 02:02:54 jylefort Exp $
+#
+# 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.
+
+cat <<EOF
+/*
+ * mn-sgml-entities.h - SGML entities table
+ *
+ * Generated automatically by ent2h.sh.
+ * Do not edit this file directly.
+ */
+
+#ifndef _MN_SGML_ENTITIES_H
+#define _MN_SGML_ENTITIES_H
+
+static const struct
+{
+  const char		*name;
+  unsigned long		character;
+} entities[] = {
+EOF
+
+for f in $@; do
+    echo ""
+    echo "  /* $f */"
+    grep '^<!ENTITY' $f \
+	| sed -E 's/^<!ENTITY ([a-zA-Z]+).*"&#([0-9]+);.*$/  { "\1",	\2 },/'
+done
+
+cat <<EOF
+};
+
+#endif /* _MN_SGML_ENTITIES_H */
+EOF
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.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (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,14 +1,16 @@
-/* Generated by GOB (v2.0.9) on Thu Sep  9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct  6 19:29:53 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 9
+#define GOB_VERSION_PATCHLEVEL 10
 
 #define selfp (self->_priv)
 
+#include <string.h> /* memset() */
+
 #include "mn-about-dialog.h"
 
 #include "mn-about-dialog-private.h"
@@ -21,11 +23,11 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 23 "mn-about-dialog.gob"
+#line 25 "mn-about-dialog.gob"
 
 #include "mn-util.h"
 
-#line 29 "mn-about-dialog.c"
+#line 31 "mn-about-dialog.c"
 /* self casting macros */
 #define SELF(x) MN_ABOUT_DIALOG(x)
 #define SELF_CONST(x) MN_ABOUT_DIALOG_CONST(x)
@@ -99,14 +101,14 @@ mn_about_dialog_class_init (MNAboutDialogClass * c G_GNUC_UNUSED)
 
 }
 #undef __GOB_FUNCTION__
-#line 29 "mn-about-dialog.gob"
+#line 31 "mn-about-dialog.gob"
 static void 
 mn_about_dialog_init (MNAboutDialog * self G_GNUC_UNUSED)
-#line 106 "mn-about-dialog.c"
+#line 108 "mn-about-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:About:Dialog::init"
  {
-#line 30 "mn-about-dialog.gob"
+#line 32 "mn-about-dialog.gob"
 
     const char *authors[] = { "Jean-Yves Lefort <jylefort@brutele.be>", NULL };
     const char *documenters[] = { "Jean-Yves Lefort <jylefort@brutele.be>", NULL };
@@ -121,6 +123,7 @@ mn_about_dialog_init (MNAboutDialog * self G_GNUC_UNUSED)
 			  _("A Mail Notification Icon"),
 			  authors,
 			  documenters,
+			  /* translator: replace with your name and email */
 			  _("Jean-Yves Lefort <jylefort@brutele.be>"),
 			  logo);
     g_object_unref(logo);
@@ -129,23 +132,23 @@ mn_about_dialog_init (MNAboutDialog * self G_GNUC_UNUSED)
     gtk_window_set_icon(GTK_WINDOW(self), icon);
     g_object_unref(icon);
   
-#line 133 "mn-about-dialog.c"
+#line 136 "mn-about-dialog.c"
  }
 }
 #undef __GOB_FUNCTION__
 
 
 
-#line 53 "mn-about-dialog.gob"
+#line 56 "mn-about-dialog.gob"
 GtkWidget * 
 mn_about_dialog_new (void)
-#line 143 "mn-about-dialog.c"
+#line 146 "mn-about-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:About:Dialog::new"
 {
-#line 55 "mn-about-dialog.gob"
+#line 58 "mn-about-dialog.gob"
 	
     return GTK_WIDGET(GET_NEW);
   }}
-#line 151 "mn-about-dialog.c"
+#line 154 "mn-about-dialog.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-about-dialog.gob b/src/mn-about-dialog.gob
@@ -16,6 +16,8 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+requires 2.0.10
+
 %headertop{
 #include "config.h"
 #include <gnome.h>
@@ -41,6 +43,7 @@ class MN:About:Dialog from Gnome:About
 			  _("A Mail Notification Icon"),
 			  authors,
 			  documenters,
+			  /* translator: replace with your name and email */
 			  _("Jean-Yves Lefort <jylefort@brutele.be>"),
 			  logo);
     g_object_unref(logo);
diff --git a/src/mn-about-dialog.h b/src/mn-about-dialog.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (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.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (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,14 +1,16 @@
-/* Generated by GOB (v2.0.9) on Thu Sep  9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct  6 19:29:52 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 9
+#define GOB_VERSION_PATCHLEVEL 10
 
 #define selfp (self->_priv)
 
+#include <string.h> /* memset() */
+
 #include "mn-auth-combo-box.h"
 
 #include "mn-auth-combo-box-private.h"
@@ -21,7 +23,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 22 "mn-auth-combo-box.gob"
+#line 24 "mn-auth-combo-box.gob"
 
 #include "config.h"
 #include <glib/gi18n-lib.h>
@@ -37,7 +39,7 @@
     N_COLUMNS
   };
 
-#line 41 "mn-auth-combo-box.c"
+#line 43 "mn-auth-combo-box.c"
 /* self casting macros */
 #define SELF(x) MN_AUTH_COMBO_BOX(x)
 #define SELF_CONST(x) MN_AUTH_COMBO_BOX_CONST(x)
@@ -137,14 +139,14 @@ mn_auth_combo_box_class_init (MNAuthComboBoxClass * c G_GNUC_UNUSED)
     }
 }
 #undef __GOB_FUNCTION__
-#line 84 "mn-auth-combo-box.gob"
+#line 86 "mn-auth-combo-box.gob"
 static void 
 mn_auth_combo_box_init (MNAuthComboBox * self G_GNUC_UNUSED)
-#line 144 "mn-auth-combo-box.c"
+#line 146 "mn-auth-combo-box.c"
 {
 #define __GOB_FUNCTION__ "MN:Auth:Combo:Box::init"
  {
-#line 85 "mn-auth-combo-box.gob"
+#line 87 "mn-auth-combo-box.gob"
 
     GtkListStore *store;
     GtkCellRenderer *renderer;
@@ -183,7 +185,7 @@ mn_auth_combo_box_init (MNAuthComboBox * self G_GNUC_UNUSED)
 
     self_set_active_mechanism(self, NULL);
   
-#line 187 "mn-auth-combo-box.c"
+#line 189 "mn-auth-combo-box.c"
  }
 }
 #undef __GOB_FUNCTION__
@@ -202,7 +204,7 @@ ___object_set_property (GObject *object,
 	switch (property_id) {
 	case PROP_ACTIVE_MECHANISM:
 		{
-#line 42 "mn-auth-combo-box.gob"
+#line 44 "mn-auth-combo-box.gob"
 
       const char *mechanism = g_value_get_string(VAL);
       GtkTreeModel *model;
@@ -231,7 +233,7 @@ ___object_set_property (GObject *object,
 	  valid = gtk_tree_model_iter_next(model, &iter);
 	}
     
-#line 235 "mn-auth-combo-box.c"
+#line 237 "mn-auth-combo-box.c"
 		}
 		break;
 	default:
@@ -260,7 +262,7 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_ACTIVE_MECHANISM:
 		{
-#line 71 "mn-auth-combo-box.gob"
+#line 73 "mn-auth-combo-box.gob"
 
       char *mechanism = NULL;
       GtkTreeModel *model;
@@ -273,7 +275,7 @@ ___object_get_property (GObject *object,
       g_value_set_string(VAL, mechanism);
       g_free(mechanism);
     
-#line 277 "mn-auth-combo-box.c"
+#line 279 "mn-auth-combo-box.c"
 		}
 		break;
 	default:
@@ -289,48 +291,48 @@ ___object_get_property (GObject *object,
 #undef __GOB_FUNCTION__
 
 
-#line 71 "mn-auth-combo-box.gob"
+#line 73 "mn-auth-combo-box.gob"
 gchar * 
 mn_auth_combo_box_get_active_mechanism (MNAuthComboBox * self)
-#line 296 "mn-auth-combo-box.c"
+#line 298 "mn-auth-combo-box.c"
 {
 #define __GOB_FUNCTION__ "MN:Auth:Combo:Box::get_active_mechanism"
 {
-#line 40 "mn-auth-combo-box.gob"
+#line 42 "mn-auth-combo-box.gob"
 		gchar* val; g_object_get (G_OBJECT (self), "active_mechanism", &val, NULL); return val;
 }}
-#line 303 "mn-auth-combo-box.c"
+#line 305 "mn-auth-combo-box.c"
 #undef __GOB_FUNCTION__
 
-#line 42 "mn-auth-combo-box.gob"
+#line 44 "mn-auth-combo-box.gob"
 void 
 mn_auth_combo_box_set_active_mechanism (MNAuthComboBox * self, gchar * val)
-#line 309 "mn-auth-combo-box.c"
+#line 311 "mn-auth-combo-box.c"
 {
 #define __GOB_FUNCTION__ "MN:Auth:Combo:Box::set_active_mechanism"
 {
-#line 40 "mn-auth-combo-box.gob"
+#line 42 "mn-auth-combo-box.gob"
 		g_object_set (G_OBJECT (self), "active_mechanism", val, NULL);
 }}
-#line 316 "mn-auth-combo-box.c"
+#line 318 "mn-auth-combo-box.c"
 #undef __GOB_FUNCTION__
 
 
-#line 124 "mn-auth-combo-box.gob"
+#line 126 "mn-auth-combo-box.gob"
 void 
 mn_auth_combo_box_append (MNAuthComboBox * self, const char * mechanism, const char * label)
-#line 323 "mn-auth-combo-box.c"
+#line 325 "mn-auth-combo-box.c"
 {
 #define __GOB_FUNCTION__ "MN:Auth:Combo:Box::append"
-#line 124 "mn-auth-combo-box.gob"
+#line 126 "mn-auth-combo-box.gob"
 	g_return_if_fail (self != NULL);
-#line 124 "mn-auth-combo-box.gob"
+#line 126 "mn-auth-combo-box.gob"
 	g_return_if_fail (MN_IS_AUTH_COMBO_BOX (self));
-#line 124 "mn-auth-combo-box.gob"
+#line 126 "mn-auth-combo-box.gob"
 	g_return_if_fail (label != NULL);
-#line 332 "mn-auth-combo-box.c"
+#line 334 "mn-auth-combo-box.c"
 {
-#line 126 "mn-auth-combo-box.gob"
+#line 128 "mn-auth-combo-box.gob"
 	
     GtkTreeModel *model;
     GtkTreeIter iter;
@@ -343,19 +345,19 @@ mn_auth_combo_box_append (MNAuthComboBox * self, const char * mechanism, const c
 		       COLUMN_LABEL, label,
 		       -1);
   }}
-#line 347 "mn-auth-combo-box.c"
+#line 349 "mn-auth-combo-box.c"
 #undef __GOB_FUNCTION__
 
-#line 139 "mn-auth-combo-box.gob"
+#line 141 "mn-auth-combo-box.gob"
 GtkWidget * 
 mn_auth_combo_box_new (void)
-#line 353 "mn-auth-combo-box.c"
+#line 355 "mn-auth-combo-box.c"
 {
 #define __GOB_FUNCTION__ "MN:Auth:Combo:Box::new"
 {
-#line 141 "mn-auth-combo-box.gob"
+#line 143 "mn-auth-combo-box.gob"
 	
     return GTK_WIDGET(GET_NEW);
   }}
-#line 361 "mn-auth-combo-box.c"
+#line 363 "mn-auth-combo-box.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-auth-combo-box.gob b/src/mn-auth-combo-box.gob
@@ -16,6 +16,8 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+requires 2.0.10
+
 %headertop{
 #include <gtk/gtk.h>
 %}
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.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (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.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (do not edit directly) */
 
 #ifndef __MN_AUTODETECT_MAILBOX_PROPERTIES_PRIVATE_H__
 #define __MN_AUTODETECT_MAILBOX_PROPERTIES_PRIVATE_H__
@@ -10,11 +10,11 @@ extern "C" {
 #endif /* __cplusplus */
 
 struct _MNAutodetectMailboxPropertiesPrivate {
-#line 37 "mn-autodetect-mailbox-properties.gob"
+#line 39 "mn-autodetect-mailbox-properties.gob"
 	GtkSizeGroup * size_group;
-#line 49 "mn-autodetect-mailbox-properties.gob"
+#line 51 "mn-autodetect-mailbox-properties.gob"
 	GtkTooltips * tooltips;
-#line 50 "mn-autodetect-mailbox-properties.gob"
+#line 52 "mn-autodetect-mailbox-properties.gob"
 	GtkWidget * location_entry;
 #line 20 "mn-autodetect-mailbox-properties-private.h"
 };
diff --git a/src/mn-autodetect-mailbox-properties.c b/src/mn-autodetect-mailbox-properties.c
@@ -1,14 +1,16 @@
-/* Generated by GOB (v2.0.9) on Thu Sep  9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct  6 19:29:53 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 9
+#define GOB_VERSION_PATCHLEVEL 10
 
 #define selfp (self->_priv)
 
+#include <string.h> /* memset() */
+
 #include "mn-autodetect-mailbox-properties.h"
 
 #include "mn-autodetect-mailbox-properties-private.h"
@@ -21,7 +23,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 22 "mn-autodetect-mailbox-properties.gob"
+#line 24 "mn-autodetect-mailbox-properties.gob"
 
 #include "config.h"
 #include <glib/gi18n-lib.h>
@@ -31,7 +33,7 @@
 
   static char *current_folder_uri = NULL;
 
-#line 35 "mn-autodetect-mailbox-properties.c"
+#line 37 "mn-autodetect-mailbox-properties.c"
 /* self casting macros */
 #define SELF(x) MN_AUTODETECT_MAILBOX_PROPERTIES(x)
 #define SELF_CONST(x) MN_AUTODETECT_MAILBOX_PROPERTIES_CONST(x)
@@ -78,11 +80,11 @@ static GtkHBoxClass *parent_class = NULL;
 static void
 ___MN_Mailbox_Properties_init (MNMailboxPropertiesIface *iface)
 {
-#line 155 "mn-autodetect-mailbox-properties.gob"
+#line 157 "mn-autodetect-mailbox-properties.gob"
 	iface->set_uri = self_set_uri;
-#line 163 "mn-autodetect-mailbox-properties.gob"
+#line 165 "mn-autodetect-mailbox-properties.gob"
 	iface->get_uri = self_get_uri;
-#line 86 "mn-autodetect-mailbox-properties.c"
+#line 88 "mn-autodetect-mailbox-properties.c"
 }
 
 GType
@@ -144,12 +146,12 @@ ___dispose (GObject *obj_self)
 	MNAutodetectMailboxProperties *self G_GNUC_UNUSED = MN_AUTODETECT_MAILBOX_PROPERTIES (obj_self);
 	if (G_OBJECT_CLASS (parent_class)->dispose) \
 		(* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
-#line 37 "mn-autodetect-mailbox-properties.gob"
-	if(self->_priv->size_group) { ((*(void (*)(void *))g_object_unref)) (self->_priv->size_group); self->_priv->size_group = NULL; }
-#line 150 "mn-autodetect-mailbox-properties.c"
-#line 49 "mn-autodetect-mailbox-properties.gob"
-	if(self->_priv->tooltips) { ((*(void (*)(void *))g_object_unref)) (self->_priv->tooltips); self->_priv->tooltips = NULL; }
-#line 153 "mn-autodetect-mailbox-properties.c"
+#line 39 "mn-autodetect-mailbox-properties.gob"
+	if(self->_priv->size_group) { g_object_unref ((gpointer) self->_priv->size_group); self->_priv->size_group = NULL; }
+#line 152 "mn-autodetect-mailbox-properties.c"
+#line 51 "mn-autodetect-mailbox-properties.gob"
+	if(self->_priv->tooltips) { g_object_unref ((gpointer) self->_priv->tooltips); self->_priv->tooltips = NULL; }
+#line 155 "mn-autodetect-mailbox-properties.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -158,11 +160,10 @@ static void
 ___finalize(GObject *obj_self)
 {
 #define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::finalize"
-	MNAutodetectMailboxProperties *self  G_GNUC_UNUSED = MN_AUTODETECT_MAILBOX_PROPERTIES (obj_self);
-	gpointer priv = self->_priv;
+	MNAutodetectMailboxProperties *self G_GNUC_UNUSED = MN_AUTODETECT_MAILBOX_PROPERTIES (obj_self);
+	gpointer priv G_GNUC_UNUSED = self->_priv;
 	if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-	g_free (priv);
 }
 #undef __GOB_FUNCTION__
 
@@ -170,10 +171,10 @@ static void
 mn_autodetect_mailbox_properties_init (MNAutodetectMailboxProperties * o G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::init"
-	o->_priv = g_new0 (MNAutodetectMailboxPropertiesPrivate, 1);
-#line 49 "mn-autodetect-mailbox-properties.gob"
+	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,TYPE_SELF,MNAutodetectMailboxPropertiesPrivate);
+#line 51 "mn-autodetect-mailbox-properties.gob"
 	o->_priv->tooltips = mn_tooltips_new();
-#line 177 "mn-autodetect-mailbox-properties.c"
+#line 178 "mn-autodetect-mailbox-properties.c"
 }
 #undef __GOB_FUNCTION__
 static void 
@@ -182,11 +183,13 @@ mn_autodetect_mailbox_properties_class_init (MNAutodetectMailboxPropertiesClass 
 #define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
 
+	g_type_class_add_private(c,sizeof(MNAutodetectMailboxPropertiesPrivate));
+
 	parent_class = g_type_class_ref (GTK_TYPE_HBOX);
 
-#line 52 "mn-autodetect-mailbox-properties.gob"
+#line 54 "mn-autodetect-mailbox-properties.gob"
 	g_object_class->constructor = ___1_mn_autodetect_mailbox_properties_constructor;
-#line 190 "mn-autodetect-mailbox-properties.c"
+#line 193 "mn-autodetect-mailbox-properties.c"
 	g_object_class->dispose = ___dispose;
 	g_object_class->finalize = ___finalize;
 	g_object_class->get_property = ___object_get_property;
@@ -219,9 +222,9 @@ ___object_set_property (GObject *object,
 	switch (property_id) {
 	case PROP_SIZE_GROUP:
 		{
-#line 38 "mn-autodetect-mailbox-properties.gob"
+#line 40 "mn-autodetect-mailbox-properties.gob"
 { GObject *___old = (GObject *)self->_priv->size_group; self->_priv->size_group = (void *)g_value_dup_object (VAL); if (___old != NULL) { g_object_unref (G_OBJECT (___old)); } }
-#line 225 "mn-autodetect-mailbox-properties.c"
+#line 228 "mn-autodetect-mailbox-properties.c"
 		}
 		break;
 	default:
@@ -250,28 +253,28 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_LABEL:
 		{
-#line 35 "mn-autodetect-mailbox-properties.gob"
+#line 37 "mn-autodetect-mailbox-properties.gob"
  g_value_set_string(VAL, _("<span style=\"italic\">autodetect</span>")); 
-#line 256 "mn-autodetect-mailbox-properties.c"
+#line 259 "mn-autodetect-mailbox-properties.c"
 		}
 		break;
 	case PROP_SIZE_GROUP:
 		{
-#line 38 "mn-autodetect-mailbox-properties.gob"
+#line 40 "mn-autodetect-mailbox-properties.gob"
 g_value_set_object (VAL, (gpointer)self->_priv->size_group);
-#line 263 "mn-autodetect-mailbox-properties.c"
+#line 266 "mn-autodetect-mailbox-properties.c"
 		}
 		break;
 	case PROP_COMPLETE:
 		{
-#line 42 "mn-autodetect-mailbox-properties.gob"
+#line 44 "mn-autodetect-mailbox-properties.gob"
 
       const char *location;
       
       location = gtk_entry_get_text(GTK_ENTRY(SELF(self)->_priv->location_entry));
       g_value_set_boolean(VAL, *location != 0);
     
-#line 275 "mn-autodetect-mailbox-properties.c"
+#line 278 "mn-autodetect-mailbox-properties.c"
 		}
 		break;
 	default:
@@ -288,10 +291,10 @@ g_value_set_object (VAL, (gpointer)self->_priv->size_group);
 
 
 
-#line 52 "mn-autodetect-mailbox-properties.gob"
+#line 54 "mn-autodetect-mailbox-properties.gob"
 static GObject * 
 ___1_mn_autodetect_mailbox_properties_constructor (GType type G_GNUC_UNUSED, guint n_construct_properties, GObjectConstructParam * construct_params)
-#line 295 "mn-autodetect-mailbox-properties.c"
+#line 298 "mn-autodetect-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): \
@@ -299,7 +302,7 @@ ___1_mn_autodetect_mailbox_properties_constructor (GType type G_GNUC_UNUSED, gui
 {
 #define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::constructor"
 {
-#line 54 "mn-autodetect-mailbox-properties.gob"
+#line 56 "mn-autodetect-mailbox-properties.gob"
 	
     GObject *object;
     Self *self;
@@ -338,52 +341,52 @@ ___1_mn_autodetect_mailbox_properties_constructor (GType type G_GNUC_UNUSED, gui
 
     gtk_size_group_add_widget(selfp->size_group, label);
 
-    g_signal_connect(G_OBJECT(selfp->location_entry), "changed", G_CALLBACK(self_entry_changed_h), self);
-    g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(self_browse_clicked_h), self);
+    g_signal_connect(selfp->location_entry, "changed", G_CALLBACK(self_entry_changed_h), self);
+    g_signal_connect(button, "clicked", G_CALLBACK(self_browse_clicked_h), self);
 
     return object;
   }}
-#line 347 "mn-autodetect-mailbox-properties.c"
+#line 350 "mn-autodetect-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 98 "mn-autodetect-mailbox-properties.gob"
+#line 100 "mn-autodetect-mailbox-properties.gob"
 static void 
 mn_autodetect_mailbox_properties_entry_changed_h (GtkEditable * editable, gpointer user_data)
-#line 354 "mn-autodetect-mailbox-properties.c"
+#line 357 "mn-autodetect-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::entry_changed_h"
-#line 98 "mn-autodetect-mailbox-properties.gob"
+#line 100 "mn-autodetect-mailbox-properties.gob"
 	g_return_if_fail (editable != NULL);
-#line 98 "mn-autodetect-mailbox-properties.gob"
+#line 100 "mn-autodetect-mailbox-properties.gob"
 	g_return_if_fail (GTK_IS_EDITABLE (editable));
-#line 98 "mn-autodetect-mailbox-properties.gob"
+#line 100 "mn-autodetect-mailbox-properties.gob"
 	g_return_if_fail (user_data != NULL);
-#line 363 "mn-autodetect-mailbox-properties.c"
+#line 366 "mn-autodetect-mailbox-properties.c"
 {
-#line 101 "mn-autodetect-mailbox-properties.gob"
+#line 103 "mn-autodetect-mailbox-properties.gob"
 	
     Self *self = user_data;
     g_object_notify(G_OBJECT(self), "complete");
   }}
-#line 370 "mn-autodetect-mailbox-properties.c"
+#line 373 "mn-autodetect-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 106 "mn-autodetect-mailbox-properties.gob"
+#line 108 "mn-autodetect-mailbox-properties.gob"
 static void 
 mn_autodetect_mailbox_properties_browse_clicked_h (GtkButton * button, gpointer user_data)
-#line 376 "mn-autodetect-mailbox-properties.c"
+#line 379 "mn-autodetect-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::browse_clicked_h"
-#line 106 "mn-autodetect-mailbox-properties.gob"
+#line 108 "mn-autodetect-mailbox-properties.gob"
 	g_return_if_fail (button != NULL);
-#line 106 "mn-autodetect-mailbox-properties.gob"
+#line 108 "mn-autodetect-mailbox-properties.gob"
 	g_return_if_fail (GTK_IS_BUTTON (button));
-#line 106 "mn-autodetect-mailbox-properties.gob"
+#line 108 "mn-autodetect-mailbox-properties.gob"
 	g_return_if_fail (user_data != NULL);
-#line 385 "mn-autodetect-mailbox-properties.c"
+#line 388 "mn-autodetect-mailbox-properties.c"
 {
-#line 109 "mn-autodetect-mailbox-properties.gob"
+#line 111 "mn-autodetect-mailbox-properties.gob"
 	
     Self *self = user_data;
     GtkWidget *toplevel;
@@ -408,7 +411,7 @@ mn_autodetect_mailbox_properties_browse_clicked_h (GtkButton * button, gpointer 
     else if (current_folder_uri)
       gtk_file_chooser_set_current_folder_uri(GTK_FILE_CHOOSER(chooser), current_folder_uri);
       
-    g_signal_connect(G_OBJECT(chooser), "current-folder-changed", G_CALLBACK(self_current_folder_changed_h), self);
+    g_signal_connect(chooser, "current-folder-changed", G_CALLBACK(self_current_folder_changed_h), self);
 
     if (gtk_dialog_run(GTK_DIALOG(chooser)) == 1)
       {
@@ -421,71 +424,71 @@ mn_autodetect_mailbox_properties_browse_clicked_h (GtkButton * button, gpointer 
     
     gtk_widget_destroy(chooser);
   }}
-#line 425 "mn-autodetect-mailbox-properties.c"
+#line 428 "mn-autodetect-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 147 "mn-autodetect-mailbox-properties.gob"
+#line 149 "mn-autodetect-mailbox-properties.gob"
 static void 
 mn_autodetect_mailbox_properties_current_folder_changed_h (GtkFileChooser * chooser, gpointer user_data)
-#line 431 "mn-autodetect-mailbox-properties.c"
+#line 434 "mn-autodetect-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::current_folder_changed_h"
-#line 147 "mn-autodetect-mailbox-properties.gob"
+#line 149 "mn-autodetect-mailbox-properties.gob"
 	g_return_if_fail (chooser != NULL);
-#line 147 "mn-autodetect-mailbox-properties.gob"
+#line 149 "mn-autodetect-mailbox-properties.gob"
 	g_return_if_fail (GTK_IS_FILE_CHOOSER (chooser));
-#line 438 "mn-autodetect-mailbox-properties.c"
+#line 441 "mn-autodetect-mailbox-properties.c"
 {
-#line 150 "mn-autodetect-mailbox-properties.gob"
+#line 152 "mn-autodetect-mailbox-properties.gob"
 	
     g_free(current_folder_uri);
     current_folder_uri = gtk_file_chooser_get_current_folder_uri(chooser);
   }}
-#line 445 "mn-autodetect-mailbox-properties.c"
+#line 448 "mn-autodetect-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 155 "mn-autodetect-mailbox-properties.gob"
+#line 157 "mn-autodetect-mailbox-properties.gob"
 static gboolean 
 mn_autodetect_mailbox_properties_set_uri (MNMailboxProperties * self, MNURI * uri)
-#line 451 "mn-autodetect-mailbox-properties.c"
+#line 454 "mn-autodetect-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::set_uri"
-#line 155 "mn-autodetect-mailbox-properties.gob"
+#line 157 "mn-autodetect-mailbox-properties.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 155 "mn-autodetect-mailbox-properties.gob"
+#line 157 "mn-autodetect-mailbox-properties.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES (self), (gboolean )0);
-#line 155 "mn-autodetect-mailbox-properties.gob"
+#line 157 "mn-autodetect-mailbox-properties.gob"
 	g_return_val_if_fail (uri != NULL, (gboolean )0);
-#line 155 "mn-autodetect-mailbox-properties.gob"
+#line 157 "mn-autodetect-mailbox-properties.gob"
 	g_return_val_if_fail (MN_IS_URI (uri), (gboolean )0);
-#line 462 "mn-autodetect-mailbox-properties.c"
+#line 465 "mn-autodetect-mailbox-properties.c"
 {
-#line 158 "mn-autodetect-mailbox-properties.gob"
+#line 160 "mn-autodetect-mailbox-properties.gob"
 	
     gtk_entry_set_text(GTK_ENTRY(SELF(self)->_priv->location_entry), uri->text);
     return TRUE;
   }}
-#line 469 "mn-autodetect-mailbox-properties.c"
+#line 472 "mn-autodetect-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 163 "mn-autodetect-mailbox-properties.gob"
+#line 165 "mn-autodetect-mailbox-properties.gob"
 static MNURI * 
 mn_autodetect_mailbox_properties_get_uri (MNMailboxProperties * self)
-#line 475 "mn-autodetect-mailbox-properties.c"
+#line 478 "mn-autodetect-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::get_uri"
-#line 163 "mn-autodetect-mailbox-properties.gob"
+#line 165 "mn-autodetect-mailbox-properties.gob"
 	g_return_val_if_fail (self != NULL, (MNURI * )0);
-#line 163 "mn-autodetect-mailbox-properties.gob"
+#line 165 "mn-autodetect-mailbox-properties.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES (self), (MNURI * )0);
-#line 482 "mn-autodetect-mailbox-properties.c"
+#line 485 "mn-autodetect-mailbox-properties.c"
 {
-#line 165 "mn-autodetect-mailbox-properties.gob"
+#line 167 "mn-autodetect-mailbox-properties.gob"
 	
     const char *location;
 
     location = gtk_entry_get_text(GTK_ENTRY(SELF(self)->_priv->location_entry));
     return mn_uri_new(location);
   }}
-#line 491 "mn-autodetect-mailbox-properties.c"
+#line 494 "mn-autodetect-mailbox-properties.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-autodetect-mailbox-properties.gob b/src/mn-autodetect-mailbox-properties.gob
@@ -16,6 +16,8 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+requires 2.0.10
+
 %headertop{
 #include <gtk/gtk.h>
 %}
@@ -89,8 +91,8 @@ class MN:Autodetect:Mailbox:Properties from Gtk:HBox (interface MN:Mailbox:Prope
 
     gtk_size_group_add_widget(selfp->size_group, label);
 
-    g_signal_connect(G_OBJECT(selfp->location_entry), "changed", G_CALLBACK(self_entry_changed_h), self);
-    g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(self_browse_clicked_h), self);
+    g_signal_connect(selfp->location_entry, "changed", G_CALLBACK(self_entry_changed_h), self);
+    g_signal_connect(button, "clicked", G_CALLBACK(self_browse_clicked_h), self);
 
     return object;
   }
@@ -130,7 +132,7 @@ class MN:Autodetect:Mailbox:Properties from Gtk:HBox (interface MN:Mailbox:Prope
     else if (current_folder_uri)
       gtk_file_chooser_set_current_folder_uri(GTK_FILE_CHOOSER(chooser), current_folder_uri);
       
-    g_signal_connect(G_OBJECT(chooser), "current-folder-changed", G_CALLBACK(self_current_folder_changed_h), self);
+    g_signal_connect(chooser, "current-folder-changed", G_CALLBACK(self_current_folder_changed_h), self);
 
     if (gtk_dialog_run(GTK_DIALOG(chooser)) == 1)
       {
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.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (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.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (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,14 +1,16 @@
-/* Generated by GOB (v2.0.9) on Thu Sep  9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct  6 19:29:53 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 9
+#define GOB_VERSION_PATCHLEVEL 10
 
 #define selfp (self->_priv)
 
+#include <string.h> /* memset() */
+
 #include "mn-automation.h"
 
 #include "mn-automation-private.h"
@@ -21,12 +23,14 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 23 "mn-automation.gob"
+#line 25 "mn-automation.gob"
 
+#include "mn-summary-dialog.h"
+#include "mn-summary-popup.h"
 #include "mn-properties.h"
 #include "mn-shell.h"
 
-#line 30 "mn-automation.c"
+#line 34 "mn-automation.c"
 /* self casting macros */
 #define SELF(x) MN_AUTOMATION(x)
 #define SELF_CONST(x) MN_AUTOMATION_CONST(x)
@@ -45,8 +49,10 @@ static void mn_automation_init (MNAutomation * o) G_GNUC_UNUSED;
 static void mn_automation_class_init (MNAutomationClass * c) G_GNUC_UNUSED;
 static void mn_automation_update (PortableServer_Servant servant, CORBA_Environment * env) G_GNUC_UNUSED;
 static void mn_automation_report (PortableServer_Servant servant, CORBA_char ** report, CORBA_Environment * env) G_GNUC_UNUSED;
+static void mn_automation_displayMailSummary (PortableServer_Servant servant, CORBA_Environment * env) G_GNUC_UNUSED;
 static void mn_automation_displayProperties (PortableServer_Servant servant, CORBA_Environment * env) G_GNUC_UNUSED;
 static void mn_automation_displayAbout (PortableServer_Servant servant, CORBA_Environment * env) G_GNUC_UNUSED;
+static void mn_automation_closePopup (PortableServer_Servant servant, CORBA_Environment * env) G_GNUC_UNUSED;
 
 /* pointer to the class of our parent */
 static BonoboObjectClass *parent_class = NULL;
@@ -54,8 +60,10 @@ static BonoboObjectClass *parent_class = NULL;
 /* Short form macros */
 #define self_update mn_automation_update
 #define self_report mn_automation_report
+#define self_displayMailSummary mn_automation_displayMailSummary
 #define self_displayProperties mn_automation_displayProperties
 #define self_displayAbout mn_automation_displayAbout
+#define self_closePopup mn_automation_closePopup
 #define self_new mn_automation_new
 GType
 mn_automation_get_type (void)
@@ -116,90 +124,124 @@ mn_automation_class_init (MNAutomationClass * c G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (BONOBO_TYPE_OBJECT);
 
-#line 30 "mn-automation.gob"
+#line 34 "mn-automation.gob"
 	c->_epv.update = self_update;
-#line 37 "mn-automation.gob"
+#line 41 "mn-automation.gob"
 	c->_epv.report = self_report;
-#line 46 "mn-automation.gob"
+#line 50 "mn-automation.gob"
+	c->_epv.displayMailSummary = self_displayMailSummary;
+#line 57 "mn-automation.gob"
 	c->_epv.displayProperties = self_displayProperties;
-#line 53 "mn-automation.gob"
+#line 64 "mn-automation.gob"
 	c->_epv.displayAbout = self_displayAbout;
-#line 128 "mn-automation.c"
+#line 71 "mn-automation.gob"
+	c->_epv.closePopup = self_closePopup;
+#line 140 "mn-automation.c"
 }
 #undef __GOB_FUNCTION__
 
 
 
-#line 30 "mn-automation.gob"
+#line 34 "mn-automation.gob"
 static void 
 mn_automation_update (PortableServer_Servant servant, CORBA_Environment * env)
-#line 137 "mn-automation.c"
+#line 149 "mn-automation.c"
 {
 #define __GOB_FUNCTION__ "MN:Automation::update"
 {
-#line 32 "mn-automation.gob"
+#line 36 "mn-automation.gob"
 	
     g_return_if_fail(mn_shell != NULL);
     mn_mailboxes_check(mn_shell->mailboxes);
   }}
-#line 146 "mn-automation.c"
+#line 158 "mn-automation.c"
 #undef __GOB_FUNCTION__
 
-#line 37 "mn-automation.gob"
+#line 41 "mn-automation.gob"
 static void 
 mn_automation_report (PortableServer_Servant servant, CORBA_char ** report, CORBA_Environment * env)
-#line 152 "mn-automation.c"
+#line 164 "mn-automation.c"
 {
 #define __GOB_FUNCTION__ "MN:Automation::report"
 {
-#line 41 "mn-automation.gob"
+#line 45 "mn-automation.gob"
 	
     g_return_if_fail(mn_shell != NULL);
     mn_shell_report(mn_shell, report);
   }}
-#line 161 "mn-automation.c"
+#line 173 "mn-automation.c"
+#undef __GOB_FUNCTION__
+
+#line 50 "mn-automation.gob"
+static void 
+mn_automation_displayMailSummary (PortableServer_Servant servant, CORBA_Environment * env)
+#line 179 "mn-automation.c"
+{
+#define __GOB_FUNCTION__ "MN:Automation::displayMailSummary"
+{
+#line 52 "mn-automation.gob"
+	
+    g_return_if_fail(mn_shell != NULL);
+    mn_summary_dialog_display();
+  }}
+#line 188 "mn-automation.c"
 #undef __GOB_FUNCTION__
 
-#line 46 "mn-automation.gob"
+#line 57 "mn-automation.gob"
 static void 
 mn_automation_displayProperties (PortableServer_Servant servant, CORBA_Environment * env)
-#line 167 "mn-automation.c"
+#line 194 "mn-automation.c"
 {
 #define __GOB_FUNCTION__ "MN:Automation::displayProperties"
 {
-#line 48 "mn-automation.gob"
+#line 59 "mn-automation.gob"
 	
     g_return_if_fail(mn_shell != NULL);
     mn_properties_display();
   }}
-#line 176 "mn-automation.c"
+#line 203 "mn-automation.c"
 #undef __GOB_FUNCTION__
 
-#line 53 "mn-automation.gob"
+#line 64 "mn-automation.gob"
 static void 
 mn_automation_displayAbout (PortableServer_Servant servant, CORBA_Environment * env)
-#line 182 "mn-automation.c"
+#line 209 "mn-automation.c"
 {
 #define __GOB_FUNCTION__ "MN:Automation::displayAbout"
 {
-#line 55 "mn-automation.gob"
+#line 66 "mn-automation.gob"
 	
     g_return_if_fail(mn_shell != NULL);
     mn_shell_display_about(mn_shell);
   }}
-#line 191 "mn-automation.c"
+#line 218 "mn-automation.c"
+#undef __GOB_FUNCTION__
+
+#line 71 "mn-automation.gob"
+static void 
+mn_automation_closePopup (PortableServer_Servant servant, CORBA_Environment * env)
+#line 224 "mn-automation.c"
+{
+#define __GOB_FUNCTION__ "MN:Automation::closePopup"
+{
+#line 73 "mn-automation.gob"
+	
+    g_return_if_fail(mn_shell != NULL);
+    mn_summary_popup_destroy();
+  }}
+#line 233 "mn-automation.c"
 #undef __GOB_FUNCTION__
 
-#line 60 "mn-automation.gob"
+#line 78 "mn-automation.gob"
 MNAutomation * 
 mn_automation_new (void)
-#line 197 "mn-automation.c"
+#line 239 "mn-automation.c"
 {
 #define __GOB_FUNCTION__ "MN:Automation::new"
 {
-#line 62 "mn-automation.gob"
+#line 80 "mn-automation.gob"
 	
     return GET_NEW;
   }}
-#line 205 "mn-automation.c"
+#line 247 "mn-automation.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-automation.gob b/src/mn-automation.gob
@@ -16,11 +16,15 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+requires 2.0.10
+
 %headertop{
 #include <libbonobo.h>
 #include "MNAutomation.h"
 %}
 %{
+#include "mn-summary-dialog.h"
+#include "mn-summary-popup.h"
 #include "mn-properties.h"
 #include "mn-shell.h"
 %}
@@ -44,6 +48,13 @@ class MN:Automation from Bonobo:Object (BonoboObject GNOME_MNAutomation)
   }
 
   BonoboObject private void
+    displayMailSummary (PortableServer_Servant servant, CORBA_Environment *env)
+  {
+    g_return_if_fail(mn_shell != NULL);
+    mn_summary_dialog_display();
+  }
+
+  BonoboObject private void
     displayProperties (PortableServer_Servant servant, CORBA_Environment *env)
   {
     g_return_if_fail(mn_shell != NULL);
@@ -57,6 +68,13 @@ class MN:Automation from Bonobo:Object (BonoboObject GNOME_MNAutomation)
     mn_shell_display_about(mn_shell);
   }
 
+  BonoboObject private void
+    closePopup (PortableServer_Servant servant, CORBA_Environment *env)
+  {
+    g_return_if_fail(mn_shell != NULL);
+    mn_summary_popup_destroy();
+  }
+
   public MNAutomation *
     new (void)
   {
diff --git a/src/mn-automation.h b/src/mn-automation.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (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.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (do not edit directly) */
 
 #ifndef __MN_BLINKING_IMAGE_PRIVATE_H__
 #define __MN_BLINKING_IMAGE_PRIVATE_H__
@@ -10,15 +10,15 @@ extern "C" {
 #endif /* __cplusplus */
 
 struct _MNBlinkingImagePrivate {
-#line 29 "mn-blinking-image.gob"
+#line 31 "mn-blinking-image.gob"
 	gboolean blinking;
-#line 49 "mn-blinking-image.gob"
+#line 51 "mn-blinking-image.gob"
 	unsigned int timeout_id;
-#line 50 "mn-blinking-image.gob"
+#line 52 "mn-blinking-image.gob"
 	gboolean is_on;
-#line 51 "mn-blinking-image.gob"
+#line 53 "mn-blinking-image.gob"
 	GdkPixbuf * on_pixbuf;
-#line 52 "mn-blinking-image.gob"
+#line 54 "mn-blinking-image.gob"
 	GdkPixbuf * off_pixbuf;
 #line 24 "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.9) on Thu Sep  9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct  6 19:29:53 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 9
+#define GOB_VERSION_PATCHLEVEL 10
 
 #define selfp (self->_priv)
 
@@ -23,7 +23,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 22 "mn-blinking-image.gob"
+#line 24 "mn-blinking-image.gob"
 
 #include "config.h"
 #include <glib/gi18n-lib.h>
@@ -47,6 +47,7 @@ static void ___object_set_property (GObject *object, guint property_id, const GV
 static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec);
 static void mn_blinking_image_init (MNBlinkingImage * o) G_GNUC_UNUSED;
 static void mn_blinking_image_class_init (MNBlinkingImageClass * c) G_GNUC_UNUSED;
+static void ___3_mn_blinking_image_finalize (GObject * object) G_GNUC_UNUSED;
 static void mn_blinking_image_update (MNBlinkingImage * self, gboolean is_on) G_GNUC_UNUSED;
 static gboolean mn_blinking_image_timeout_cb (gpointer data) G_GNUC_UNUSED;
 
@@ -114,12 +115,12 @@ ___dispose (GObject *obj_self)
 	MNBlinkingImage *self G_GNUC_UNUSED = MN_BLINKING_IMAGE (obj_self);
 	if (G_OBJECT_CLASS (parent_class)->dispose) \
 		(* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
-#line 51 "mn-blinking-image.gob"
-	if(self->_priv->on_pixbuf) { ((*(void (*)(void *))g_object_unref)) (self->_priv->on_pixbuf); self->_priv->on_pixbuf = NULL; }
-#line 120 "mn-blinking-image.c"
-#line 52 "mn-blinking-image.gob"
-	if(self->_priv->off_pixbuf) { ((*(void (*)(void *))g_object_unref)) (self->_priv->off_pixbuf); self->_priv->off_pixbuf = NULL; }
-#line 123 "mn-blinking-image.c"
+#line 53 "mn-blinking-image.gob"
+	if(self->_priv->on_pixbuf) { g_object_unref ((gpointer) self->_priv->on_pixbuf); self->_priv->on_pixbuf = NULL; }
+#line 121 "mn-blinking-image.c"
+#line 54 "mn-blinking-image.gob"
+	if(self->_priv->off_pixbuf) { g_object_unref ((gpointer) self->_priv->off_pixbuf); self->_priv->off_pixbuf = NULL; }
+#line 124 "mn-blinking-image.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -128,20 +129,11 @@ static void
 ___finalize(GObject *obj_self)
 {
 #define __GOB_FUNCTION__ "MN:Blinking:Image::finalize"
-	MNBlinkingImage *self  G_GNUC_UNUSED = MN_BLINKING_IMAGE (obj_self);
-	gpointer priv = self->_priv;
-	if(G_OBJECT_CLASS(parent_class)->finalize) \
-		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-#define timeout_id (self->_priv->timeout_id)
-#define VAR timeout_id
-	{
-#line 49 "mn-blinking-image.gob"
-	 if (VAR) g_source_remove(VAR); }
-#line 141 "mn-blinking-image.c"
-	memset(&timeout_id, 0, sizeof(timeout_id));
-#undef VAR
-#undef timeout_id
-	g_free (priv);
+	MNBlinkingImage *self G_GNUC_UNUSED = MN_BLINKING_IMAGE (obj_self);
+	gpointer priv G_GNUC_UNUSED = self->_priv;
+#line 56 "mn-blinking-image.gob"
+	___3_mn_blinking_image_finalize(obj_self);
+#line 137 "mn-blinking-image.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -149,10 +141,10 @@ static void
 mn_blinking_image_init (MNBlinkingImage * o G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:Blinking:Image::init"
-	o->_priv = g_new0 (MNBlinkingImagePrivate, 1);
-#line 49 "mn-blinking-image.gob"
+	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,TYPE_SELF,MNBlinkingImagePrivate);
+#line 47 "mn-blinking-image.gob"
 	o->_priv->is_on = TRUE;
-#line 156 "mn-blinking-image.c"
+#line 148 "mn-blinking-image.c"
 }
 #undef __GOB_FUNCTION__
 static void 
@@ -161,10 +153,14 @@ mn_blinking_image_class_init (MNBlinkingImageClass * c G_GNUC_UNUSED)
 #define __GOB_FUNCTION__ "MN:Blinking:Image::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
 
+	g_type_class_add_private(c,sizeof(MNBlinkingImagePrivate));
+
 	parent_class = g_type_class_ref (GTK_TYPE_IMAGE);
 
-	g_object_class->dispose = ___dispose;
+#line 56 "mn-blinking-image.gob"
 	g_object_class->finalize = ___finalize;
+#line 163 "mn-blinking-image.c"
+	g_object_class->dispose = ___dispose;
 	g_object_class->get_property = ___object_get_property;
 	g_object_class->set_property = ___object_set_property;
     {
@@ -197,7 +193,7 @@ ___object_set_property (GObject *object,
 	switch (property_id) {
 	case PROP_BLINKING:
 		{
-#line 33 "mn-blinking-image.gob"
+#line 35 "mn-blinking-image.gob"
 
       if (selfp->blinking)
 	{
@@ -209,7 +205,7 @@ ___object_set_property (GObject *object,
       if (selfp->blinking)
 	selfp->timeout_id = g_timeout_add(500, self_timeout_cb, self);
     
-#line 213 "mn-blinking-image.c"
+#line 209 "mn-blinking-image.c"
 		}
 		break;
 	default:
@@ -238,11 +234,11 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_BLINKING:
 		{
-#line 45 "mn-blinking-image.gob"
+#line 47 "mn-blinking-image.gob"
 
       g_value_set_boolean(VAL, selfp->blinking);
     
-#line 246 "mn-blinking-image.c"
+#line 242 "mn-blinking-image.c"
 		}
 		break;
 	default:
@@ -259,63 +255,91 @@ ___object_get_property (GObject *object,
 
 
 
-#line 45 "mn-blinking-image.gob"
+#line 47 "mn-blinking-image.gob"
 gboolean 
 mn_blinking_image_get_blinking (MNBlinkingImage * self)
-#line 266 "mn-blinking-image.c"
+#line 262 "mn-blinking-image.c"
 {
 #define __GOB_FUNCTION__ "MN:Blinking:Image::get_blinking"
 {
-#line 30 "mn-blinking-image.gob"
+#line 32 "mn-blinking-image.gob"
 		gboolean val; g_object_get (G_OBJECT (self), "blinking", &val, NULL); return val;
 }}
-#line 273 "mn-blinking-image.c"
+#line 269 "mn-blinking-image.c"
 #undef __GOB_FUNCTION__
 
-#line 33 "mn-blinking-image.gob"
+#line 35 "mn-blinking-image.gob"
 void 
 mn_blinking_image_set_blinking (MNBlinkingImage * self, gboolean val)
-#line 279 "mn-blinking-image.c"
+#line 275 "mn-blinking-image.c"
 {
 #define __GOB_FUNCTION__ "MN:Blinking:Image::set_blinking"
 {
-#line 30 "mn-blinking-image.gob"
+#line 32 "mn-blinking-image.gob"
 		g_object_set (G_OBJECT (self), "blinking", val, NULL);
 }}
-#line 286 "mn-blinking-image.c"
+#line 282 "mn-blinking-image.c"
 #undef __GOB_FUNCTION__
 
-#line 54 "mn-blinking-image.gob"
+#line 56 "mn-blinking-image.gob"
+static void 
+___3_mn_blinking_image_finalize (GObject * object G_GNUC_UNUSED)
+#line 288 "mn-blinking-image.c"
+#define PARENT_HANDLER(___object) \
+	{ if(G_OBJECT_CLASS(parent_class)->finalize) \
+		(* G_OBJECT_CLASS(parent_class)->finalize)(___object); }
+{
+#define __GOB_FUNCTION__ "MN:Blinking:Image::finalize"
+#line 56 "mn-blinking-image.gob"
+	g_return_if_fail (object != NULL);
+#line 56 "mn-blinking-image.gob"
+	g_return_if_fail (G_IS_OBJECT (object));
+#line 298 "mn-blinking-image.c"
+{
+#line 58 "mn-blinking-image.gob"
+	
+    Self *self = SELF(object);
+
+    if (selfp->timeout_id)
+      g_source_remove(selfp->timeout_id);
+
+    PARENT_HANDLER(object);
+  }}
+#line 309 "mn-blinking-image.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 67 "mn-blinking-image.gob"
 static void 
 mn_blinking_image_update (MNBlinkingImage * self, gboolean is_on)
-#line 292 "mn-blinking-image.c"
+#line 316 "mn-blinking-image.c"
 {
 #define __GOB_FUNCTION__ "MN:Blinking:Image::update"
-#line 54 "mn-blinking-image.gob"
+#line 67 "mn-blinking-image.gob"
 	g_return_if_fail (self != NULL);
-#line 54 "mn-blinking-image.gob"
+#line 67 "mn-blinking-image.gob"
 	g_return_if_fail (MN_IS_BLINKING_IMAGE (self));
-#line 299 "mn-blinking-image.c"
+#line 323 "mn-blinking-image.c"
 {
-#line 56 "mn-blinking-image.gob"
+#line 69 "mn-blinking-image.gob"
 	
     gtk_image_set_from_pixbuf(GTK_IMAGE(self), is_on ? selfp->on_pixbuf : selfp->off_pixbuf);
     selfp->is_on = is_on;
   }}
-#line 306 "mn-blinking-image.c"
+#line 330 "mn-blinking-image.c"
 #undef __GOB_FUNCTION__
 
-#line 61 "mn-blinking-image.gob"
+#line 74 "mn-blinking-image.gob"
 static gboolean 
 mn_blinking_image_timeout_cb (gpointer data)
-#line 312 "mn-blinking-image.c"
+#line 336 "mn-blinking-image.c"
 {
 #define __GOB_FUNCTION__ "MN:Blinking:Image::timeout_cb"
-#line 61 "mn-blinking-image.gob"
+#line 74 "mn-blinking-image.gob"
 	g_return_val_if_fail (data != NULL, (gboolean )0);
-#line 317 "mn-blinking-image.c"
+#line 341 "mn-blinking-image.c"
 {
-#line 63 "mn-blinking-image.gob"
+#line 76 "mn-blinking-image.gob"
 	
     Self *self = data;
 
@@ -325,20 +349,20 @@ mn_blinking_image_timeout_cb (gpointer data)
 
     return TRUE;
   }}
-#line 329 "mn-blinking-image.c"
+#line 353 "mn-blinking-image.c"
 #undef __GOB_FUNCTION__
 
-#line 73 "mn-blinking-image.gob"
+#line 86 "mn-blinking-image.gob"
 GtkWidget * 
 mn_blinking_image_new_from_stock (const char * stock_id, GtkIconSize icon_size)
-#line 335 "mn-blinking-image.c"
+#line 359 "mn-blinking-image.c"
 {
 #define __GOB_FUNCTION__ "MN:Blinking:Image::new_from_stock"
-#line 73 "mn-blinking-image.gob"
+#line 86 "mn-blinking-image.gob"
 	g_return_val_if_fail (stock_id != NULL, (GtkWidget * )0);
-#line 340 "mn-blinking-image.c"
+#line 364 "mn-blinking-image.c"
 {
-#line 76 "mn-blinking-image.gob"
+#line 89 "mn-blinking-image.gob"
 	
     Self *self;
     int width, height;
@@ -361,5 +385,5 @@ mn_blinking_image_new_from_stock (const char * stock_id, GtkIconSize icon_size)
 
     return GTK_WIDGET(self);
   }}
-#line 365 "mn-blinking-image.c"
+#line 389 "mn-blinking-image.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-blinking-image.gob b/src/mn-blinking-image.gob
@@ -16,6 +16,8 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+requires 2.0.10
+
 %headertop{
 #include <gtk/gtk.h>
 %}
@@ -46,11 +48,22 @@ class MN:Blinking:Image from Gtk:Image
       g_value_set_boolean(VAL, selfp->blinking);
     };
 
-  private unsigned int timeout_id destroy { if (VAR) g_source_remove(VAR); };
+  private unsigned int timeout_id;
   private gboolean is_on = TRUE; /* is currently displaying the on pixbuf? */
   private GdkPixbuf *on_pixbuf unrefwith g_object_unref;
   private GdkPixbuf *off_pixbuf unrefwith g_object_unref;
 
+  override (G:Object) void
+    finalize (G:Object *object (check null type))
+  {
+    Self *self = SELF(object);
+
+    if (selfp->timeout_id)
+      g_source_remove(selfp->timeout_id);
+
+    PARENT_HANDLER(object);
+  }
+  
   private void
     update (self, gboolean is_on)
   {
diff --git a/src/mn-blinking-image.h b/src/mn-blinking-image.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (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
@@ -48,7 +48,7 @@
 /*** cpp *********************************************************************/
 
 #define READ_BUFSIZE				2048
-
+  
 /*** types *******************************************************************/
 
 struct _MNClientSession
@@ -63,6 +63,8 @@ struct _MNClientSession
   MNClientSessionState		*state;
   char				*error;
   MNClientSessionPrivate	*private;
+  GByteArray			*input_buffer;
+  unsigned int			bytes_to_remove;
   
 #ifdef WITH_SSL
   SSL				*ssl;
@@ -106,6 +108,8 @@ static gboolean mn_client_session_run_untrusted_dialog (const char *hostname,
 static int mn_client_session_enter_state (MNClientSession *session, int id);
 static gboolean mn_client_session_handle_input (MNClientSession *session, const char *input);
 
+static void mn_client_session_prepare_input_buffer (MNClientSession *session);
+
 #ifdef WITH_SASL
 static int mn_client_session_write_base64 (MNClientSession *session,
 					   const char *buf,
@@ -132,7 +136,7 @@ mn_client_session_run (MNClientSessionState *states,
 {
   MNClientSession session;
   struct addrinfo *addrinfo;
-  GString *input_buffer;
+  const char *line;
 
   g_return_val_if_fail(states != NULL, FALSE);
   g_return_val_if_fail(callbacks != NULL, FALSE);
@@ -170,70 +174,11 @@ mn_client_session_run (MNClientSessionState *states,
 
   mn_client_session_enter_state(&session, MN_CLIENT_SESSION_INITIAL_STATE);
 
-  input_buffer = g_string_new(NULL);
-  while (TRUE)
-    {
-      char buf[READ_BUFSIZE];
-      ssize_t bytes_read;
-      const char *in = NULL;
-      unsigned int inlen;
-      char *terminator;
-      gboolean cont = TRUE;
-
-#ifdef WITH_SSL
-      if (session.ssl)
-	bytes_read = SSL_read(session.ssl, buf, sizeof(buf));
-      else
-#endif /* WITH_SSL */
-	do
-	  bytes_read = read(session.s, buf, sizeof(buf));
-	while (bytes_read < 0 && errno == EINTR);
-	  
-      if (bytes_read <= 0)
-	{
-#ifdef WITH_SSL
-	  if (session.ssl)
-	    mn_client_session_error(&session, _("unable to read from server: %s"), mn_ssl_get_error());
-	  else
-#endif /* WITH_SSL */
-	    {
-	      if (bytes_read == 0)
-		mn_client_session_error(&session, _("unable to read from server: EOF"));
-	      else
-		mn_client_session_error(&session, _("unable to read from server: %s"), g_strerror(errno));
-	    }
-	  break;		/* end */
-	}
-
-#ifdef WITH_SASL
-      if (session.sasl_ssf)
-	{
-	  if (sasl_decode(session.sasl_conn, buf, bytes_read, &in, &inlen) != SASL_OK)
-	    {
-	      mn_client_session_error(&session, _("unable to decode data using SASL: %s"), sasl_errdetail(session.sasl_conn));
-	      break;		/* end */
-	    }
-	}
-#endif /* WITH_SASL */
-
-      if (! in)
-	{
-	  in = buf;
-	  inlen = bytes_read;
-	}
-      
-      g_string_append_len(input_buffer, in, inlen);
-      while (cont && (terminator = strstr(input_buffer->str, "\r\n")))
-	{
-	  *terminator = 0;
-	  cont = mn_client_session_handle_input(&session, input_buffer->str);
-	  g_string_erase(input_buffer, 0, terminator - input_buffer->str + 2);
-	}
-      
-      if (! cont)
-	break;
-    }
-  g_string_free(input_buffer, TRUE);
+  session.input_buffer = g_byte_array_new();
+  while ((line = mn_client_session_read_line(&session)))
+    if (! mn_client_session_handle_input(&session, line))
+      break;
+  g_byte_array_free(session.input_buffer, TRUE);
   
  end:
   g_free(session.hostname);
@@ -564,8 +509,6 @@ mn_client_session_handle_input (MNClientSession *session, const char *input)
   g_return_val_if_fail(session != NULL, FALSE);
   g_return_val_if_fail(input != NULL, FALSE);
 
-  mn_client_session_notice(session, "< %s", input);
-
   response = session->callbacks->response_new(session, input, session->private);
   if (response)
     {
@@ -597,7 +540,7 @@ mn_client_session_handle_input (MNClientSession *session, const char *input)
 	    result = mn_client_session_enter_state(session, result);
 	  else			/* custom result */
 	    {
-	      g_return_val_if_fail(session->callbacks->custom_handler != NULL, NULL);
+	      g_return_val_if_fail(session->callbacks->custom_handler != NULL, FALSE);
 	      result = session->callbacks->custom_handler(session, response, result, session->private);
 	    }
 	  goto loop;
@@ -614,6 +557,152 @@ mn_client_session_handle_input (MNClientSession *session, const char *input)
   return cont;
 }
 
+static void
+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);
+}
+
+static gboolean
+mn_client_session_fill_input_buffer (MNClientSession *session)
+{
+  char buf[READ_BUFSIZE];
+  ssize_t bytes_read;
+  const char *in = NULL;
+  unsigned int inlen;
+  
+  g_return_val_if_fail(session != NULL, FALSE);
+
+#ifdef WITH_SSL
+  if (session->ssl)
+    bytes_read = SSL_read(session->ssl, buf, sizeof(buf));
+  else
+#endif /* WITH_SSL */
+    do
+      bytes_read = read(session->s, buf, sizeof(buf));
+    while (bytes_read < 0 && errno == EINTR);
+	  
+  if (bytes_read <= 0)
+    {
+#ifdef WITH_SSL
+      if (session->ssl)
+	mn_client_session_error(session, _("unable to read from server: %s"), mn_ssl_get_error());
+      else
+#endif /* WITH_SSL */
+	{
+	  if (bytes_read == 0)
+	    mn_client_session_error(session, _("unable to read from server: EOF"));
+	  else
+	    mn_client_session_error(session, _("unable to read from server: %s"), g_strerror(errno));
+	}
+      return FALSE;
+    }
+
+#ifdef WITH_SASL
+  if (session->sasl_ssf)
+    {
+      if (sasl_decode(session->sasl_conn, buf, bytes_read, &in, &inlen) != SASL_OK)
+	{
+	  mn_client_session_error(session, _("unable to decode data using SASL: %s"), sasl_errdetail(session->sasl_conn));
+	  return FALSE;
+	}
+    }
+#endif /* WITH_SASL */
+
+  if (! in)
+    {
+      in = buf;
+      inlen = bytes_read;
+    }
+
+  g_byte_array_append(session->input_buffer, in, inlen);
+  return TRUE;
+}
+
+/**
+ * mn_client_session_read:
+ * @session: a #MNClientSession object to read from
+ * @nbytes: the number of bytes to read
+ *
+ * Reads exactly @nbytes from @session. If an error occurs,
+ * mn_client_session_error() will be called on @session.
+ *
+ * Return value: a pointer to a buffer containing @nbytes on success,
+ *               %NULL on failure. The pointer will be valid until the
+ *               next call to mn_client_session_read() or
+ *               mn_client_session_read_line().
+ **/
+gconstpointer
+mn_client_session_read (MNClientSession *session, unsigned int nbytes)
+{
+  GString *printable;
+  int i;
+
+  g_return_val_if_fail(session != NULL, FALSE);
+  g_return_val_if_fail(session->input_buffer != NULL, FALSE);
+  g_return_val_if_fail(nbytes >= 0, FALSE);
+
+  mn_client_session_prepare_input_buffer(session);
+
+  while (session->input_buffer->len < nbytes)
+    if (! mn_client_session_fill_input_buffer(session))
+      return FALSE;
+
+  session->bytes_to_remove = nbytes;
+
+  printable = g_string_new(NULL);
+  for (i = 0; i < nbytes; i++)
+    if (g_ascii_isprint(session->input_buffer->data[i]))
+      g_string_append_c(printable, session->input_buffer->data[i]);
+    else
+      g_string_append_printf(printable, "<%02X>", (int) session->input_buffer->data[i]);
+  mn_client_session_notice(session, "< %s", printable->str);
+  g_string_free(printable, TRUE);
+  
+  return session->input_buffer->data;
+}
+
+/**
+ * mn_client_session_read_line:
+ * @session: a #MNClientSession object to read from
+ *
+ * Reads a crlf-terminated line from @session. If an error occurs,
+ * mn_client_session_error() will be called on @session.
+ *
+ * Return value: the line read on success, %NULL on failure. The
+ *               pointer will be valid until the next call to
+ *               mn_client_session_read() or mn_client_session_read_line().
+ **/
+const char *
+mn_client_session_read_line (MNClientSession *session)
+{
+  char *terminator;
+  const char *line;
+
+  g_return_val_if_fail(session != NULL, NULL);
+  g_return_val_if_fail(session->input_buffer != NULL, NULL);
+
+  mn_client_session_prepare_input_buffer(session);
+
+  while (! (session->input_buffer->data
+	    && (terminator = g_strstr_len(session->input_buffer->data,
+					  session->input_buffer->len,
+					  "\r\n"))))
+    if (! mn_client_session_fill_input_buffer(session))
+      return NULL;
+    
+  *terminator = 0;
+  session->bytes_to_remove = terminator - (char *) session->input_buffer->data + 2;
+
+  line = session->input_buffer->data;
+  mn_client_session_notice(session, "< %s", line);
+
+  return line;
+}
+
 int
 mn_client_session_write (MNClientSession *session,
 			 const char *format,
diff --git a/src/mn-client-session.h b/src/mn-client-session.h
@@ -77,9 +77,12 @@ gboolean mn_client_session_run (MNClientSessionState *states,
 				MNClientSessionPrivate *private,
 				GError **err);
 
+gconstpointer mn_client_session_read (MNClientSession *session, unsigned int nbytes);
+const char *mn_client_session_read_line (MNClientSession *session);
+
 int mn_client_session_write (MNClientSession *session,
 			     const char *format,
-			     ...);
+			     ...) G_GNUC_PRINTF(2, 3);
 
 #ifdef WITH_SSL
 gboolean mn_client_session_enable_ssl (MNClientSession *session);
@@ -98,9 +101,9 @@ gboolean mn_client_session_sasl_authentication_done (MNClientSession *session);
 
 void mn_client_session_notice (MNClientSession *session,
 			       const char *format,
-			       ...);
+			       ...) G_GNUC_PRINTF(2, 3);
 int mn_client_session_error (MNClientSession *session,
 			     const char *format,
-			     ...);
+			     ...) G_GNUC_PRINTF(2, 3);
 
 #endif /* _MN_CLIENT_SESSION_H */
diff --git a/src/mn-conf.c b/src/mn-conf.c
@@ -32,6 +32,9 @@
 #define WINDOW_WIDTH_KEY		"mn-conf-window-width-key"
 #define WINDOW_HEIGHT_KEY		"mn-conf-window-height-key"
 
+#define COMBO_BOX_KEY			"mn-conf-combo-box-key"
+#define COMBO_BOX_STRING_COLUMN		"mn-conf-combo-box-string-column"
+
 /*** types *******************************************************************/
 
 typedef struct
@@ -43,6 +46,16 @@ typedef struct
 
 /*** functions ***************************************************************/
 
+static void mn_conf_link_combo_box_to_string_update_active (GtkComboBox *combo,
+							    int string_column,
+							    const char *value);
+static void mn_conf_link_combo_box_to_string_changed_h (GtkComboBox *combo,
+							gpointer user_data);
+static void mn_conf_link_combo_box_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);
@@ -100,6 +113,7 @@ mn_conf_unset_obsolete (void)
     MN_CONF_LOCAL_NAMESPACE,
     MN_CONF_REMOTE_NAMESPACE,
     MN_CONF_COMMANDS_CLICKED_NAMESPACE,
+    MN_CONF_COMMANDS_DOUBLE_CLICKED_NAMESPACE,
     MN_CONF_PREFERENCES_DIALOG
   };
   int i;
@@ -208,6 +222,100 @@ mn_conf_link (GtkWidget *widget, ...)
   va_end(args);
 }
 
+void
+mn_conf_link_combo_box_to_string (GtkComboBox *combo,
+				  int string_column,
+				  const char *key)
+{
+  char *value;
+  unsigned int notification_id;
+
+  g_return_if_fail(GTK_IS_COMBO_BOX(combo));
+  g_return_if_fail(key != NULL);
+
+  g_object_set_data_full(G_OBJECT(combo), COMBO_BOX_KEY, g_strdup(key), g_free);
+  g_object_set_data(G_OBJECT(combo), COMBO_BOX_STRING_COLUMN, GINT_TO_POINTER(string_column));
+
+  value = eel_gconf_get_string(key);
+  mn_conf_link_combo_box_to_string_update_active(combo, string_column, value);
+  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));
+}
+
+static void
+mn_conf_link_combo_box_to_string_update_active (GtkComboBox *combo,
+						int string_column,
+						const char *value)
+{
+  g_return_if_fail(GTK_IS_COMBO_BOX(combo));
+
+  if (value)
+    {
+      GtkTreeModel *model;
+      GtkTreeIter iter;
+      gboolean valid;
+      
+      model = gtk_combo_box_get_model(combo);
+      valid = gtk_tree_model_get_iter_first(model, &iter);
+
+      while (valid)
+	{
+	  char *this_value;
+	  gboolean found;
+	  
+	  gtk_tree_model_get(model, &iter, string_column, &this_value, -1);
+	  found = this_value && ! strcmp(this_value, value);
+	  g_free(this_value);
+	  
+	  if (found)
+	    {
+	      gtk_combo_box_set_active_iter(combo, &iter);
+	      break;
+	    }
+	  
+	  valid = gtk_tree_model_iter_next(model, &iter);
+	}
+    }
+}
+
+static void
+mn_conf_link_combo_box_to_string_changed_h (GtkComboBox *combo,
+					    gpointer user_data)
+{
+  GtkTreeModel *model;
+  GtkTreeIter iter;
+
+  model = gtk_combo_box_get_model(combo);
+  if (gtk_combo_box_get_active_iter(combo, &iter))
+    {
+      const char *key = g_object_get_data(G_OBJECT(combo), COMBO_BOX_KEY);
+      int string_column = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(combo), COMBO_BOX_STRING_COLUMN));
+      char *value;
+
+      gtk_tree_model_get(model, &iter, string_column, &value, -1);
+      eel_gconf_set_string(key, value);
+      g_free(value);
+    }
+}
+
+static void
+mn_conf_link_combo_box_to_string_notify_cb (GConfClient *client,
+					    guint cnxn_id,
+					    GConfEntry *entry,
+					    gpointer user_data)
+{
+  GtkComboBox *combo = user_data;
+  GConfValue *value = gconf_entry_get_value(entry);
+  int string_column = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(combo), COMBO_BOX_STRING_COLUMN));
+
+  GDK_THREADS_ENTER();
+  mn_conf_link_combo_box_to_string_update_active(combo, string_column, gconf_value_get_string(value));
+  GDK_THREADS_LEAVE();
+}
+
 static gboolean
 mn_conf_link_window_h (GtkWidget *widget,
 		       GdkEventConfigure *event,
@@ -507,3 +615,29 @@ mn_conf_set_autostart (gboolean autostart)
     }
   mn_conf_startup_clients_free(clients);
 }
+
+GEnumValue *
+mn_conf_get_enum_value (GType enum_type, const char *key)
+{
+  GEnumClass *enum_class;
+  GEnumValue *enum_value = NULL;
+
+  g_return_val_if_fail(key != NULL, NULL);
+
+  enum_class = g_type_class_ref(enum_type);
+  if (enum_class)
+    {
+      char *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);
+    }
+
+  return enum_value;
+}
diff --git a/src/mn-conf.h b/src/mn-conf.h
@@ -20,6 +20,7 @@
 #define _MN_CONF_H
 
 #include <stdarg.h>
+#include <gtk/gtk.h>
 #include <eel/eel.h>
 
 #define MN_CONF_NAMESPACE \
@@ -61,11 +62,11 @@
 #define MN_CONF_COMMANDS_CLICKED_COMMAND \
   MN_CONF_COMMANDS_CLICKED_NAMESPACE "/command"	/* obsolete */
 #define MN_CONF_COMMANDS_DOUBLE_CLICKED_NAMESPACE \
-  MN_CONF_COMMANDS_NAMESPACE "/double-clicked"
+  MN_CONF_COMMANDS_NAMESPACE "/double-clicked"		/* obsolete */
 #define MN_CONF_COMMANDS_DOUBLE_CLICKED_ENABLED	\
-  MN_CONF_COMMANDS_DOUBLE_CLICKED_NAMESPACE "/enabled"
+  MN_CONF_COMMANDS_DOUBLE_CLICKED_NAMESPACE "/enabled"	/* obsolete */
 #define MN_CONF_COMMANDS_DOUBLE_CLICKED_COMMAND	\
-  MN_CONF_COMMANDS_DOUBLE_CLICKED_NAMESPACE "/command"
+  MN_CONF_COMMANDS_DOUBLE_CLICKED_NAMESPACE "/command"	/* obsolete */
 #define MN_CONF_MAILBOXES \
   MN_CONF_NAMESPACE "/mailboxes"
 #define MN_CONF_UI_NAMESPACE \
@@ -74,6 +75,12 @@
   MN_CONF_UI_NAMESPACE "/preferences-dialog"	/* obsolete */
 #define MN_CONF_PROPERTIES_DIALOG \
   MN_CONF_UI_NAMESPACE "/properties-dialog"
+#define MN_CONF_SUMMARY_DIALOG \
+  MN_CONF_UI_NAMESPACE "/summary-dialog"
+#define MN_CONF_IMMEDIATE_NOTIFICATION_ERROR_DIALOG_NAMESPACE \
+  MN_CONF_UI_NAMESPACE "/immediate-notification-error-dialog"
+#define MN_CONF_IMMEDIATE_NOTIFICATION_ERROR_DIALOG_DO_NOT_SHOW \
+  MN_CONF_IMMEDIATE_NOTIFICATION_ERROR_DIALOG_NAMESPACE "/do-not-show"
 #define MN_CONF_ALREADY_RUN \
   MN_CONF_NAMESPACE "/already-run"
 #define MN_CONF_BLINK_ON_ERRORS \
@@ -82,6 +89,26 @@
   MN_CONF_NAMESPACE "/trusted-x509-certificates"
 #define MN_CONF_TRUSTED_SERVERS \
   MN_CONF_NAMESPACE "/trusted-servers"
+#define MN_CONF_MAIL_SUMMARY_POPUP_NAMESPACE \
+  MN_CONF_NAMESPACE "/mail-summary-popup"
+#define MN_CONF_MAIL_SUMMARY_POPUP_ENABLE \
+  MN_CONF_MAIL_SUMMARY_POPUP_NAMESPACE "/enable"
+#define MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE \
+  MN_CONF_MAIL_SUMMARY_POPUP_NAMESPACE "/autoclose"
+#define MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_NAMESPACE \
+  MN_CONF_MAIL_SUMMARY_POPUP_NAMESPACE "/autoclose-delay"
+#define MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_MINUTES \
+  MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_NAMESPACE "/minutes"
+#define MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_SECONDS \
+  MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_NAMESPACE "/seconds"
+#define MN_CONF_MAIL_SUMMARY_POPUP_POSITION \
+  MN_CONF_MAIL_SUMMARY_POPUP_NAMESPACE "/position"
+#define MN_CONF_MAIL_SUMMARY_POPUP_OFFSET_NAMESPACE \
+  MN_CONF_MAIL_SUMMARY_POPUP_NAMESPACE "/offset"
+#define MN_CONF_MAIL_SUMMARY_POPUP_HORIZONTAL_OFFSET \
+  MN_CONF_MAIL_SUMMARY_POPUP_OFFSET_NAMESPACE "/horizontal"
+#define MN_CONF_MAIL_SUMMARY_POPUP_VERTICAL_OFFSET \
+  MN_CONF_MAIL_SUMMARY_POPUP_OFFSET_NAMESPACE "/vertical"
 
 void		mn_conf_init		(void);
 void		mn_conf_unset_obsolete	(void);
@@ -91,8 +118,14 @@ void		mn_conf_recursive_unset	(const char	*key,
 
 void		mn_conf_link		(GtkWidget	*widget,
 					 ...);
+void		mn_conf_link_combo_box_to_string (GtkComboBox	*combo,
+						  int		string_column,
+						  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,
+					 const char	*key);
+
 #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.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (do not edit directly) */
 
 #ifndef __MN_GMAIL_MAILBOX_PRIVATE_H__
 #define __MN_GMAIL_MAILBOX_PRIVATE_H__
@@ -9,12 +9,20 @@
 extern "C" {
 #endif /* __cplusplus */
 
+
+#line 25 "mn-gmail-mailbox.gob"
+
+#include "mn-soup.h"
+
+#line 18 "mn-gmail-mailbox-private.h"
 struct _MNGmailMailboxPrivate {
-#line 37 "mn-gmail-mailbox.gob"
+#line 47 "mn-gmail-mailbox.gob"
+	SoupSession * session;
+#line 48 "mn-gmail-mailbox.gob"
 	GHashTable * cookies;
-#line 38 "mn-gmail-mailbox.gob"
+#line 49 "mn-gmail-mailbox.gob"
 	gboolean logged_in;
-#line 18 "mn-gmail-mailbox-private.h"
+#line 26 "mn-gmail-mailbox-private.h"
 };
 
 #ifdef __cplusplus
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.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (do not edit directly) */
 
 #ifndef __MN_GMAIL_MAILBOX_PROPERTIES_PRIVATE_H__
 #define __MN_GMAIL_MAILBOX_PROPERTIES_PRIVATE_H__
@@ -10,13 +10,13 @@ extern "C" {
 #endif /* __cplusplus */
 
 struct _MNGmailMailboxPropertiesPrivate {
-#line 35 "mn-gmail-mailbox-properties.gob"
+#line 37 "mn-gmail-mailbox-properties.gob"
 	GtkSizeGroup * size_group;
-#line 50 "mn-gmail-mailbox-properties.gob"
+#line 52 "mn-gmail-mailbox-properties.gob"
 	GtkWidget * username_entry;
-#line 51 "mn-gmail-mailbox-properties.gob"
+#line 53 "mn-gmail-mailbox-properties.gob"
 	GtkWidget * password_entry;
-#line 52 "mn-gmail-mailbox-properties.gob"
+#line 54 "mn-gmail-mailbox-properties.gob"
 	GtkTooltips * tooltips;
 #line 22 "mn-gmail-mailbox-properties-private.h"
 };
diff --git a/src/mn-gmail-mailbox-properties.c b/src/mn-gmail-mailbox-properties.c
@@ -1,14 +1,16 @@
-/* Generated by GOB (v2.0.9) on Thu Sep  9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct  6 19:29:53 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 9
+#define GOB_VERSION_PATCHLEVEL 10
 
 #define selfp (self->_priv)
 
+#include <string.h> /* memset() */
+
 #include "mn-gmail-mailbox-properties.h"
 
 #include "mn-gmail-mailbox-properties-private.h"
@@ -21,7 +23,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 22 "mn-gmail-mailbox-properties.gob"
+#line 24 "mn-gmail-mailbox-properties.gob"
 
 #include "config.h"
 #include <glib/gi18n-lib.h>
@@ -29,7 +31,7 @@
 #include "mn-mailbox-properties-util.h"
 #include "mn-util.h"
 
-#line 33 "mn-gmail-mailbox-properties.c"
+#line 35 "mn-gmail-mailbox-properties.c"
 /* self casting macros */
 #define SELF(x) MN_GMAIL_MAILBOX_PROPERTIES(x)
 #define SELF_CONST(x) MN_GMAIL_MAILBOX_PROPERTIES_CONST(x)
@@ -72,11 +74,11 @@ static GtkVBoxClass *parent_class = NULL;
 static void
 ___MN_Mailbox_Properties_init (MNMailboxPropertiesIface *iface)
 {
-#line 99 "mn-gmail-mailbox-properties.gob"
+#line 101 "mn-gmail-mailbox-properties.gob"
 	iface->set_uri = self_set_uri;
-#line 114 "mn-gmail-mailbox-properties.gob"
+#line 116 "mn-gmail-mailbox-properties.gob"
 	iface->get_uri = self_get_uri;
-#line 80 "mn-gmail-mailbox-properties.c"
+#line 82 "mn-gmail-mailbox-properties.c"
 }
 
 GType
@@ -138,12 +140,12 @@ ___dispose (GObject *obj_self)
 	MNGmailMailboxProperties *self G_GNUC_UNUSED = MN_GMAIL_MAILBOX_PROPERTIES (obj_self);
 	if (G_OBJECT_CLASS (parent_class)->dispose) \
 		(* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
-#line 35 "mn-gmail-mailbox-properties.gob"
-	if(self->_priv->size_group) { ((*(void (*)(void *))g_object_unref)) (self->_priv->size_group); self->_priv->size_group = NULL; }
-#line 144 "mn-gmail-mailbox-properties.c"
-#line 52 "mn-gmail-mailbox-properties.gob"
-	if(self->_priv->tooltips) { ((*(void (*)(void *))g_object_unref)) (self->_priv->tooltips); self->_priv->tooltips = NULL; }
-#line 147 "mn-gmail-mailbox-properties.c"
+#line 37 "mn-gmail-mailbox-properties.gob"
+	if(self->_priv->size_group) { g_object_unref ((gpointer) self->_priv->size_group); self->_priv->size_group = NULL; }
+#line 146 "mn-gmail-mailbox-properties.c"
+#line 54 "mn-gmail-mailbox-properties.gob"
+	if(self->_priv->tooltips) { g_object_unref ((gpointer) self->_priv->tooltips); self->_priv->tooltips = NULL; }
+#line 149 "mn-gmail-mailbox-properties.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -152,11 +154,10 @@ static void
 ___finalize(GObject *obj_self)
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox:Properties::finalize"
-	MNGmailMailboxProperties *self  G_GNUC_UNUSED = MN_GMAIL_MAILBOX_PROPERTIES (obj_self);
-	gpointer priv = self->_priv;
+	MNGmailMailboxProperties *self G_GNUC_UNUSED = MN_GMAIL_MAILBOX_PROPERTIES (obj_self);
+	gpointer priv G_GNUC_UNUSED = self->_priv;
 	if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-	g_free (priv);
 }
 #undef __GOB_FUNCTION__
 
@@ -164,10 +165,10 @@ static void
 mn_gmail_mailbox_properties_init (MNGmailMailboxProperties * o G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox:Properties::init"
-	o->_priv = g_new0 (MNGmailMailboxPropertiesPrivate, 1);
-#line 52 "mn-gmail-mailbox-properties.gob"
+	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,TYPE_SELF,MNGmailMailboxPropertiesPrivate);
+#line 54 "mn-gmail-mailbox-properties.gob"
 	o->_priv->tooltips = mn_tooltips_new();
-#line 171 "mn-gmail-mailbox-properties.c"
+#line 172 "mn-gmail-mailbox-properties.c"
 }
 #undef __GOB_FUNCTION__
 static void 
@@ -176,11 +177,13 @@ mn_gmail_mailbox_properties_class_init (MNGmailMailboxPropertiesClass * c G_GNUC
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox:Properties::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
 
+	g_type_class_add_private(c,sizeof(MNGmailMailboxPropertiesPrivate));
+
 	parent_class = g_type_class_ref (GTK_TYPE_VBOX);
 
-#line 54 "mn-gmail-mailbox-properties.gob"
+#line 56 "mn-gmail-mailbox-properties.gob"
 	g_object_class->constructor = ___1_mn_gmail_mailbox_properties_constructor;
-#line 184 "mn-gmail-mailbox-properties.c"
+#line 187 "mn-gmail-mailbox-properties.c"
 	g_object_class->dispose = ___dispose;
 	g_object_class->finalize = ___finalize;
 	g_object_class->get_property = ___object_get_property;
@@ -213,9 +216,9 @@ ___object_set_property (GObject *object,
 	switch (property_id) {
 	case PROP_SIZE_GROUP:
 		{
-#line 36 "mn-gmail-mailbox-properties.gob"
+#line 38 "mn-gmail-mailbox-properties.gob"
 { GObject *___old = (GObject *)self->_priv->size_group; self->_priv->size_group = (void *)g_value_dup_object (VAL); if (___old != NULL) { g_object_unref (G_OBJECT (___old)); } }
-#line 219 "mn-gmail-mailbox-properties.c"
+#line 222 "mn-gmail-mailbox-properties.c"
 		}
 		break;
 	default:
@@ -244,21 +247,21 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_LABEL:
 		{
-#line 33 "mn-gmail-mailbox-properties.gob"
+#line 35 "mn-gmail-mailbox-properties.gob"
  g_value_set_string(VAL, "Gmail"); 
-#line 250 "mn-gmail-mailbox-properties.c"
+#line 253 "mn-gmail-mailbox-properties.c"
 		}
 		break;
 	case PROP_SIZE_GROUP:
 		{
-#line 36 "mn-gmail-mailbox-properties.gob"
+#line 38 "mn-gmail-mailbox-properties.gob"
 g_value_set_object (VAL, (gpointer)self->_priv->size_group);
-#line 257 "mn-gmail-mailbox-properties.c"
+#line 260 "mn-gmail-mailbox-properties.c"
 		}
 		break;
 	case PROP_COMPLETE:
 		{
-#line 40 "mn-gmail-mailbox-properties.gob"
+#line 42 "mn-gmail-mailbox-properties.gob"
 
       const char *username;
       const char *password;
@@ -268,7 +271,7 @@ g_value_set_object (VAL, (gpointer)self->_priv->size_group);
       
       g_value_set_boolean(VAL, *username && *password);
     
-#line 272 "mn-gmail-mailbox-properties.c"
+#line 275 "mn-gmail-mailbox-properties.c"
 		}
 		break;
 	default:
@@ -285,10 +288,10 @@ g_value_set_object (VAL, (gpointer)self->_priv->size_group);
 
 
 
-#line 54 "mn-gmail-mailbox-properties.gob"
+#line 56 "mn-gmail-mailbox-properties.gob"
 static GObject * 
 ___1_mn_gmail_mailbox_properties_constructor (GType type G_GNUC_UNUSED, guint n_construct_properties, GObjectConstructParam * construct_params)
-#line 292 "mn-gmail-mailbox-properties.c"
+#line 295 "mn-gmail-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): \
@@ -296,7 +299,7 @@ ___1_mn_gmail_mailbox_properties_constructor (GType type G_GNUC_UNUSED, guint n_
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox:Properties::constructor"
 {
-#line 56 "mn-gmail-mailbox-properties.gob"
+#line 58 "mn-gmail-mailbox-properties.gob"
 	
     GObject *object;
     Self *self;
@@ -326,54 +329,54 @@ ___1_mn_gmail_mailbox_properties_constructor (GType type G_GNUC_UNUSED, guint n_
 				       GTK_ENTRY(selfp->password_entry),
 				       NULL);
 
-    g_signal_connect(G_OBJECT(selfp->username_entry), "changed", G_CALLBACK(self_entry_changed_h), self);
-    g_signal_connect(G_OBJECT(selfp->password_entry), "changed", G_CALLBACK(self_entry_changed_h), self);
+    g_signal_connect(selfp->username_entry, "changed", G_CALLBACK(self_entry_changed_h), self);
+    g_signal_connect(selfp->password_entry, "changed", G_CALLBACK(self_entry_changed_h), self);
     
     return object;
   }}
-#line 335 "mn-gmail-mailbox-properties.c"
+#line 338 "mn-gmail-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 91 "mn-gmail-mailbox-properties.gob"
+#line 93 "mn-gmail-mailbox-properties.gob"
 static void 
 mn_gmail_mailbox_properties_entry_changed_h (GtkEditable * editable, gpointer user_data)
-#line 342 "mn-gmail-mailbox-properties.c"
+#line 345 "mn-gmail-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox:Properties::entry_changed_h"
-#line 91 "mn-gmail-mailbox-properties.gob"
+#line 93 "mn-gmail-mailbox-properties.gob"
 	g_return_if_fail (editable != NULL);
-#line 91 "mn-gmail-mailbox-properties.gob"
+#line 93 "mn-gmail-mailbox-properties.gob"
 	g_return_if_fail (GTK_IS_EDITABLE (editable));
-#line 91 "mn-gmail-mailbox-properties.gob"
+#line 93 "mn-gmail-mailbox-properties.gob"
 	g_return_if_fail (user_data != NULL);
-#line 351 "mn-gmail-mailbox-properties.c"
+#line 354 "mn-gmail-mailbox-properties.c"
 {
-#line 94 "mn-gmail-mailbox-properties.gob"
+#line 96 "mn-gmail-mailbox-properties.gob"
 	
     Self *self = user_data;
     g_object_notify(G_OBJECT(self), "complete");
   }}
-#line 358 "mn-gmail-mailbox-properties.c"
+#line 361 "mn-gmail-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 99 "mn-gmail-mailbox-properties.gob"
+#line 101 "mn-gmail-mailbox-properties.gob"
 static gboolean 
 mn_gmail_mailbox_properties_set_uri (MNMailboxProperties * self, MNURI * uri)
-#line 364 "mn-gmail-mailbox-properties.c"
+#line 367 "mn-gmail-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox:Properties::set_uri"
-#line 99 "mn-gmail-mailbox-properties.gob"
+#line 101 "mn-gmail-mailbox-properties.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 99 "mn-gmail-mailbox-properties.gob"
+#line 101 "mn-gmail-mailbox-properties.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES (self), (gboolean )0);
-#line 99 "mn-gmail-mailbox-properties.gob"
+#line 101 "mn-gmail-mailbox-properties.gob"
 	g_return_val_if_fail (uri != NULL, (gboolean )0);
-#line 99 "mn-gmail-mailbox-properties.gob"
+#line 101 "mn-gmail-mailbox-properties.gob"
 	g_return_val_if_fail (MN_IS_URI (uri), (gboolean )0);
-#line 375 "mn-gmail-mailbox-properties.c"
+#line 378 "mn-gmail-mailbox-properties.c"
 {
-#line 102 "mn-gmail-mailbox-properties.gob"
+#line 104 "mn-gmail-mailbox-properties.gob"
 	
     if (MN_URI_IS_GMAIL(uri))
       {
@@ -385,22 +388,22 @@ mn_gmail_mailbox_properties_set_uri (MNMailboxProperties * self, MNURI * uri)
     else
       return FALSE;
   }}
-#line 389 "mn-gmail-mailbox-properties.c"
+#line 392 "mn-gmail-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 114 "mn-gmail-mailbox-properties.gob"
+#line 116 "mn-gmail-mailbox-properties.gob"
 static MNURI * 
 mn_gmail_mailbox_properties_get_uri (MNMailboxProperties * self)
-#line 395 "mn-gmail-mailbox-properties.c"
+#line 398 "mn-gmail-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox:Properties::get_uri"
-#line 114 "mn-gmail-mailbox-properties.gob"
+#line 116 "mn-gmail-mailbox-properties.gob"
 	g_return_val_if_fail (self != NULL, (MNURI * )0);
-#line 114 "mn-gmail-mailbox-properties.gob"
+#line 116 "mn-gmail-mailbox-properties.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES (self), (MNURI * )0);
-#line 402 "mn-gmail-mailbox-properties.c"
+#line 405 "mn-gmail-mailbox-properties.c"
 {
-#line 116 "mn-gmail-mailbox-properties.gob"
+#line 118 "mn-gmail-mailbox-properties.gob"
 	
     const char *username;
     const char *password;
@@ -410,5 +413,5 @@ mn_gmail_mailbox_properties_get_uri (MNMailboxProperties * self)
 
     return mn_uri_new_gmail(username, password);
   }}
-#line 414 "mn-gmail-mailbox-properties.c"
+#line 417 "mn-gmail-mailbox-properties.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-gmail-mailbox-properties.gob b/src/mn-gmail-mailbox-properties.gob
@@ -16,6 +16,8 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+requires 2.0.10
+
 %headertop{
 #include <gtk/gtk.h>
 %}
@@ -82,8 +84,8 @@ class MN:Gmail:Mailbox:Properties from Gtk:VBox (interface MN:Mailbox:Properties
 				       GTK_ENTRY(selfp->password_entry),
 				       NULL);
 
-    g_signal_connect(G_OBJECT(selfp->username_entry), "changed", G_CALLBACK(self_entry_changed_h), self);
-    g_signal_connect(G_OBJECT(selfp->password_entry), "changed", G_CALLBACK(self_entry_changed_h), self);
+    g_signal_connect(selfp->username_entry, "changed", G_CALLBACK(self_entry_changed_h), self);
+    g_signal_connect(selfp->password_entry, "changed", G_CALLBACK(self_entry_changed_h), self);
     
     return object;
   }
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.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (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.9) on Thu Sep  9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct  6 19:29:53 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 9
+#define GOB_VERSION_PATCHLEVEL 10
 
 #define selfp (self->_priv)
 
@@ -21,20 +21,23 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 22 "mn-gmail-mailbox.gob"
+#line 29 "mn-gmail-mailbox.gob"
 
 #include "config.h"
+#include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
+#include <time.h>
 #include <glib/gi18n-lib.h>
-#include <libgnomevfs/gnome-vfs-utils.h>
-#include <libsoup/soup.h>
 #include "mn-mailbox-private.h"
 #include "mn-util.h"
 #include "mn-stock.h"
-#include "mn-soup.h"
+#include "mn-sgml-ref.h"
 
-#line 38 "mn-gmail-mailbox.c"
+#define MESSAGE_IS_ERROR(message) \
+  (! SOUP_STATUS_IS_SUCCESSFUL((message)->status_code))
+
+#line 41 "mn-gmail-mailbox.c"
 /* self casting macros */
 #define SELF(x) MN_GMAIL_MAILBOX(x)
 #define SELF_CONST(x) MN_GMAIL_MAILBOX_CONST(x)
@@ -52,10 +55,12 @@ typedef MNGmailMailboxClass SelfClass;
 static void mn_gmail_mailbox_init (MNGmailMailbox * o) G_GNUC_UNUSED;
 static void mn_gmail_mailbox_class_init (MNGmailMailboxClass * class) G_GNUC_UNUSED;
 static GObject * ___2_mn_gmail_mailbox_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_params) G_GNUC_UNUSED;
-static void ___3_mn_gmail_mailbox_finalize (GObject * object) G_GNUC_UNUSED;
-static gboolean ___4_mn_gmail_mailbox_impl_is (MNMailbox * dummy, MNURI * uri) G_GNUC_UNUSED;
-static void ___5_mn_gmail_mailbox_impl_check (MNMailbox * mailbox) G_GNUC_UNUSED;
-static void mn_gmail_mailbox_get (MNGmailMailbox * self, const char * uri, SoupCallbackFn callback) G_GNUC_UNUSED;
+static gboolean ___3_mn_gmail_mailbox_impl_is (MNMailbox * dummy, MNURI * uri) G_GNUC_UNUSED;
+static void ___4_mn_gmail_mailbox_impl_check (MNMailbox * mailbox) G_GNUC_UNUSED;
+static void mn_gmail_mailbox_end_check (MNGmailMailbox * self) G_GNUC_UNUSED;
+static gboolean mn_gmail_mailbox_get (MNGmailMailbox * self, const char * uri_string, SoupMessageCallbackFn callback) G_GNUC_UNUSED;
+static void mn_gmail_mailbox_get_from_uri (MNGmailMailbox * self, SoupUri * uri, SoupMessageCallbackFn callback) G_GNUC_UNUSED;
+static void mn_gmail_mailbox_get_from_message (MNGmailMailbox * self, SoupMessage * message, SoupMessageCallbackFn callback) G_GNUC_UNUSED;
 static void mn_gmail_mailbox_dump_request (MNGmailMailbox * self, SoupMessage * message) G_GNUC_UNUSED;
 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) G_GNUC_UNUSED;
@@ -70,13 +75,17 @@ static char * mn_gmail_mailbox_build_cookie (MNGmailMailbox * self) G_GNUC_UNUSE
 static void mn_gmail_mailbox_build_cookie_cb (gpointer key, gpointer value, gpointer user_data) G_GNUC_UNUSED;
 static void mn_gmail_mailbox_check_internal (MNGmailMailbox * self) G_GNUC_UNUSED;
 static void mn_gmail_mailbox_check_internal_cb (SoupMessage * message, gpointer user_data) G_GNUC_UNUSED;
-static int mn_gmail_mailbox_get_unread_count (SoupMessage * message) G_GNUC_UNUSED;
+static void mn_gmail_mailbox_parse_unread (MNGmailMailbox * self, SoupMessage * message) G_GNUC_UNUSED;
+static time_t mn_gmail_mailbox_parse_date (const char * date) G_GNUC_UNUSED;
 
 /* pointer to the class of our parent */
 static MNMailboxClass *parent_class = NULL;
 
 /* Short form macros */
+#define self_end_check mn_gmail_mailbox_end_check
 #define self_get mn_gmail_mailbox_get
+#define self_get_from_uri mn_gmail_mailbox_get_from_uri
+#define self_get_from_message mn_gmail_mailbox_get_from_message
 #define self_dump_request mn_gmail_mailbox_dump_request
 #define self_dump_request_cb mn_gmail_mailbox_dump_request_cb
 #define self_dump_response mn_gmail_mailbox_dump_response
@@ -91,7 +100,8 @@ static MNMailboxClass *parent_class = NULL;
 #define self_build_cookie_cb mn_gmail_mailbox_build_cookie_cb
 #define self_check_internal mn_gmail_mailbox_check_internal
 #define self_check_internal_cb mn_gmail_mailbox_check_internal_cb
-#define self_get_unread_count mn_gmail_mailbox_get_unread_count
+#define self_parse_unread mn_gmail_mailbox_parse_unread
+#define self_parse_date mn_gmail_mailbox_parse_date
 GType
 mn_gmail_mailbox_get_type (void)
 {
@@ -139,15 +149,13 @@ static void
 ___finalize(GObject *obj_self)
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::finalize"
-	MNGmailMailbox *self  G_GNUC_UNUSED = MN_GMAIL_MAILBOX (obj_self);
-	gpointer priv = self->_priv;
-#line 58 "mn-gmail-mailbox.gob"
-	___3_mn_gmail_mailbox_finalize(obj_self);
-#line 147 "mn-gmail-mailbox.c"
-#line 37 "mn-gmail-mailbox.gob"
-	if(self->_priv->cookies) { ((*(void (*)(void *))g_hash_table_destroy)) (self->_priv->cookies); self->_priv->cookies = NULL; }
-#line 150 "mn-gmail-mailbox.c"
-	g_free (priv);
+	MNGmailMailbox *self G_GNUC_UNUSED = MN_GMAIL_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 48 "mn-gmail-mailbox.gob"
+	if(self->_priv->cookies) { g_hash_table_destroy ((gpointer) self->_priv->cookies); self->_priv->cookies = NULL; }
+#line 159 "mn-gmail-mailbox.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -155,46 +163,47 @@ static void
 mn_gmail_mailbox_init (MNGmailMailbox * o G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::init"
-	o->_priv = g_new0 (MNGmailMailboxPrivate, 1);
+	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,TYPE_SELF,MNGmailMailboxPrivate);
 }
 #undef __GOB_FUNCTION__
-#line 40 "mn-gmail-mailbox.gob"
+#line 51 "mn-gmail-mailbox.gob"
 static void 
 mn_gmail_mailbox_class_init (MNGmailMailboxClass * class G_GNUC_UNUSED)
-#line 165 "mn-gmail-mailbox.c"
+#line 173 "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;
 
 	parent_class = g_type_class_ref (MN_TYPE_MAILBOX);
 
-#line 46 "mn-gmail-mailbox.gob"
+#line 57 "mn-gmail-mailbox.gob"
 	g_object_class->constructor = ___2_mn_gmail_mailbox_constructor;
-#line 58 "mn-gmail-mailbox.gob"
+#line 70 "mn-gmail-mailbox.gob"
+	mn_mailbox_class->impl_is = ___3_mn_gmail_mailbox_impl_is;
+#line 76 "mn-gmail-mailbox.gob"
+	mn_mailbox_class->impl_check = ___4_mn_gmail_mailbox_impl_check;
+#line 189 "mn-gmail-mailbox.c"
 	g_object_class->finalize = ___finalize;
-#line 65 "mn-gmail-mailbox.gob"
-	mn_mailbox_class->impl_is = ___4_mn_gmail_mailbox_impl_is;
-#line 71 "mn-gmail-mailbox.gob"
-	mn_mailbox_class->impl_check = ___5_mn_gmail_mailbox_impl_check;
-#line 181 "mn-gmail-mailbox.c"
  {
-#line 41 "mn-gmail-mailbox.gob"
+#line 52 "mn-gmail-mailbox.gob"
 
     MN_MAILBOX_CLASS(class)->stock_id = MN_STOCK_GMAIL;
     MN_MAILBOX_CLASS(class)->format = "Gmail";
   
-#line 188 "mn-gmail-mailbox.c"
+#line 197 "mn-gmail-mailbox.c"
  }
 }
 #undef __GOB_FUNCTION__
 
 
 
-#line 46 "mn-gmail-mailbox.gob"
+#line 57 "mn-gmail-mailbox.gob"
 static GObject * 
 ___2_mn_gmail_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_properties, GObjectConstructParam * construct_params)
-#line 198 "mn-gmail-mailbox.c"
+#line 207 "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): \
@@ -202,118 +211,176 @@ ___2_mn_gmail_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_p
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::constructor"
 {
-#line 48 "mn-gmail-mailbox.gob"
+#line 59 "mn-gmail-mailbox.gob"
 	
     GObject *object;
 
     object = PARENT_HANDLER(type, n_construct_properties, construct_params);
     
-    mn_soup_use();
+    if (! soup_ssl_supported)
+      mn_mailbox_set_init_error(MN_MAILBOX(object), _("libsoup has not been compiled with SSL/TLS support"));
 
     return object;
   }}
-#line 216 "mn-gmail-mailbox.c"
-#undef __GOB_FUNCTION__
-#undef PARENT_HANDLER
-
-#line 58 "mn-gmail-mailbox.gob"
-static void 
-___3_mn_gmail_mailbox_finalize (GObject * object G_GNUC_UNUSED)
-#line 223 "mn-gmail-mailbox.c"
-#define PARENT_HANDLER(___object) \
-	{ if(G_OBJECT_CLASS(parent_class)->finalize) \
-		(* G_OBJECT_CLASS(parent_class)->finalize)(___object); }
-{
-#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::finalize"
-{
-#line 60 "mn-gmail-mailbox.gob"
-	
-    mn_soup_unuse();
-    PARENT_HANDLER(object);
-  }}
-#line 235 "mn-gmail-mailbox.c"
+#line 226 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 65 "mn-gmail-mailbox.gob"
+#line 70 "mn-gmail-mailbox.gob"
 static gboolean 
-___4_mn_gmail_mailbox_impl_is (MNMailbox * dummy G_GNUC_UNUSED, MNURI * uri)
-#line 242 "mn-gmail-mailbox.c"
+___3_mn_gmail_mailbox_impl_is (MNMailbox * dummy G_GNUC_UNUSED, MNURI * uri)
+#line 233 "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 65 "mn-gmail-mailbox.gob"
+#line 70 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (uri != NULL, (gboolean )0);
-#line 65 "mn-gmail-mailbox.gob"
+#line 70 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (MN_IS_URI (uri), (gboolean )0);
-#line 253 "mn-gmail-mailbox.c"
+#line 244 "mn-gmail-mailbox.c"
 {
-#line 67 "mn-gmail-mailbox.gob"
+#line 72 "mn-gmail-mailbox.gob"
 	
     return MN_URI_IS_GMAIL(uri);
   }}
-#line 259 "mn-gmail-mailbox.c"
+#line 250 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 71 "mn-gmail-mailbox.gob"
+#line 76 "mn-gmail-mailbox.gob"
 static void 
-___5_mn_gmail_mailbox_impl_check (MNMailbox * mailbox G_GNUC_UNUSED)
-#line 266 "mn-gmail-mailbox.c"
+___4_mn_gmail_mailbox_impl_check (MNMailbox * mailbox G_GNUC_UNUSED)
+#line 257 "mn-gmail-mailbox.c"
 #define PARENT_HANDLER(___mailbox) \
 	{ if(MN_MAILBOX_CLASS(parent_class)->impl_check) \
 		(* MN_MAILBOX_CLASS(parent_class)->impl_check)(___mailbox); }
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::impl_check"
-#line 71 "mn-gmail-mailbox.gob"
+#line 76 "mn-gmail-mailbox.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 71 "mn-gmail-mailbox.gob"
+#line 76 "mn-gmail-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 276 "mn-gmail-mailbox.c"
+#line 267 "mn-gmail-mailbox.c"
 {
-#line 73 "mn-gmail-mailbox.gob"
+#line 78 "mn-gmail-mailbox.gob"
 	
     Self *self = SELF(mailbox);
 
+    selfp->session = mn_soup_session_new();
     if (selfp->logged_in)
       self_check_internal(self);
     else
       self_login(self);
   }}
-#line 287 "mn-gmail-mailbox.c"
+#line 279 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 82 "mn-gmail-mailbox.gob"
+#line 88 "mn-gmail-mailbox.gob"
 static void 
-mn_gmail_mailbox_get (MNGmailMailbox * self, const char * uri, SoupCallbackFn callback)
-#line 294 "mn-gmail-mailbox.c"
+mn_gmail_mailbox_end_check (MNGmailMailbox * self)
+#line 286 "mn-gmail-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::end_check"
+#line 88 "mn-gmail-mailbox.gob"
+	g_return_if_fail (self != NULL);
+#line 88 "mn-gmail-mailbox.gob"
+	g_return_if_fail (MN_IS_GMAIL_MAILBOX (self));
+#line 293 "mn-gmail-mailbox.c"
+{
+#line 90 "mn-gmail-mailbox.gob"
+	
+    g_object_unref(selfp->session);
+    mn_mailbox_end_check(MN_MAILBOX(self));
+  }}
+#line 300 "mn-gmail-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 95 "mn-gmail-mailbox.gob"
+static gboolean 
+mn_gmail_mailbox_get (MNGmailMailbox * self, const char * uri_string, SoupMessageCallbackFn callback)
+#line 306 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::get"
-#line 82 "mn-gmail-mailbox.gob"
+#line 95 "mn-gmail-mailbox.gob"
+	g_return_val_if_fail (self != NULL, (gboolean )0);
+#line 95 "mn-gmail-mailbox.gob"
+	g_return_val_if_fail (MN_IS_GMAIL_MAILBOX (self), (gboolean )0);
+#line 95 "mn-gmail-mailbox.gob"
+	g_return_val_if_fail (uri_string != NULL, (gboolean )0);
+#line 95 "mn-gmail-mailbox.gob"
+	g_return_val_if_fail (callback != NULL, (gboolean )0);
+#line 317 "mn-gmail-mailbox.c"
+{
+#line 99 "mn-gmail-mailbox.gob"
+	
+    SoupMessage *message;
+
+    message = soup_message_new(SOUP_METHOD_GET, uri_string);
+    if (message)
+      {
+	self_get_from_message(self, soup_message_new(SOUP_METHOD_GET, uri_string), callback);
+	return TRUE;
+      }
+    else
+      {
+	mn_mailbox_notice(MN_MAILBOX(self), _("unable to parse URI \"%s\""), uri_string);
+	return FALSE;
+      }
+  }}
+#line 335 "mn-gmail-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 115 "mn-gmail-mailbox.gob"
+static void 
+mn_gmail_mailbox_get_from_uri (MNGmailMailbox * self, SoupUri * uri, SoupMessageCallbackFn callback)
+#line 341 "mn-gmail-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::get_from_uri"
+#line 115 "mn-gmail-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 82 "mn-gmail-mailbox.gob"
+#line 115 "mn-gmail-mailbox.gob"
 	g_return_if_fail (MN_IS_GMAIL_MAILBOX (self));
-#line 82 "mn-gmail-mailbox.gob"
+#line 115 "mn-gmail-mailbox.gob"
 	g_return_if_fail (uri != NULL);
-#line 82 "mn-gmail-mailbox.gob"
+#line 115 "mn-gmail-mailbox.gob"
 	g_return_if_fail (callback != NULL);
-#line 305 "mn-gmail-mailbox.c"
+#line 352 "mn-gmail-mailbox.c"
 {
-#line 86 "mn-gmail-mailbox.gob"
+#line 119 "mn-gmail-mailbox.gob"
 	
-    SoupContext *context;
-    SoupMessage *message;
-    char *cookie;
+    self_get_from_message(self, soup_message_new_from_uri(SOUP_METHOD_GET, uri), callback);
+  }}
+#line 358 "mn-gmail-mailbox.c"
+#undef __GOB_FUNCTION__
 
-    context = soup_context_get(uri);
-    message = soup_message_new(context, SOUP_METHOD_GET);
-    soup_context_unref(context);
+#line 123 "mn-gmail-mailbox.gob"
+static void 
+mn_gmail_mailbox_get_from_message (MNGmailMailbox * self, SoupMessage * message, SoupMessageCallbackFn callback)
+#line 364 "mn-gmail-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::get_from_message"
+#line 123 "mn-gmail-mailbox.gob"
+	g_return_if_fail (self != NULL);
+#line 123 "mn-gmail-mailbox.gob"
+	g_return_if_fail (MN_IS_GMAIL_MAILBOX (self));
+#line 123 "mn-gmail-mailbox.gob"
+	g_return_if_fail (message != NULL);
+#line 123 "mn-gmail-mailbox.gob"
+	g_return_if_fail (SOUP_IS_MESSAGE (message));
+#line 123 "mn-gmail-mailbox.gob"
+	g_return_if_fail (callback != NULL);
+#line 377 "mn-gmail-mailbox.c"
+{
+#line 127 "mn-gmail-mailbox.gob"
+	
+    char *cookie;
 
     soup_message_add_header(message->request_headers, "User-Agent", "Mail Notification");
+
     cookie = self_build_cookie(self);
     if (cookie)
       {
@@ -322,56 +389,58 @@ mn_gmail_mailbox_get (MNGmailMailbox * self, const char * uri, SoupCallbackFn ca
       }
     
     self_dump_request(self, message);
-    soup_message_queue(message, callback, self);
-    /* message will be freed by libsoup after invoking the callback */
+    soup_session_queue_message(selfp->session, message, callback, self);
+    /* message will be unreffed by libsoup after invoking the callback */
   }}
-#line 329 "mn-gmail-mailbox.c"
+#line 396 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 108 "mn-gmail-mailbox.gob"
+#line 144 "mn-gmail-mailbox.gob"
 static void 
 mn_gmail_mailbox_dump_request (MNGmailMailbox * self, SoupMessage * message)
-#line 335 "mn-gmail-mailbox.c"
+#line 402 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::dump_request"
-#line 108 "mn-gmail-mailbox.gob"
+#line 144 "mn-gmail-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 108 "mn-gmail-mailbox.gob"
+#line 144 "mn-gmail-mailbox.gob"
 	g_return_if_fail (MN_IS_GMAIL_MAILBOX (self));
-#line 108 "mn-gmail-mailbox.gob"
+#line 144 "mn-gmail-mailbox.gob"
 	g_return_if_fail (message != NULL);
-#line 344 "mn-gmail-mailbox.c"
+#line 144 "mn-gmail-mailbox.gob"
+	g_return_if_fail (SOUP_IS_MESSAGE (message));
+#line 413 "mn-gmail-mailbox.c"
 {
-#line 110 "mn-gmail-mailbox.gob"
+#line 146 "mn-gmail-mailbox.gob"
 	
     const SoupUri *suri;
     char *uri;
 
-    suri = soup_context_get_uri(message->context);
-    uri = soup_uri_to_string(suri, TRUE);
+    suri = soup_message_get_uri(message);
+    uri = soup_uri_to_string(suri, FALSE);
     mn_mailbox_notice(MN_MAILBOX(self), "> GET %s", uri);
     g_free(uri);
 
     soup_message_foreach_header(message->request_headers, self_dump_request_cb, self);
   }}
-#line 358 "mn-gmail-mailbox.c"
+#line 427 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 122 "mn-gmail-mailbox.gob"
+#line 158 "mn-gmail-mailbox.gob"
 static void 
 mn_gmail_mailbox_dump_request_cb (gpointer key, gpointer value, gpointer user_data)
-#line 364 "mn-gmail-mailbox.c"
+#line 433 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::dump_request_cb"
-#line 122 "mn-gmail-mailbox.gob"
+#line 158 "mn-gmail-mailbox.gob"
 	g_return_if_fail (key != NULL);
-#line 122 "mn-gmail-mailbox.gob"
+#line 158 "mn-gmail-mailbox.gob"
 	g_return_if_fail (value != NULL);
-#line 122 "mn-gmail-mailbox.gob"
+#line 158 "mn-gmail-mailbox.gob"
 	g_return_if_fail (user_data != NULL);
-#line 373 "mn-gmail-mailbox.c"
+#line 442 "mn-gmail-mailbox.c"
 {
-#line 126 "mn-gmail-mailbox.gob"
+#line 162 "mn-gmail-mailbox.gob"
 	
     Self *self = user_data;
     const char *header_name = key;
@@ -379,24 +448,26 @@ 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 383 "mn-gmail-mailbox.c"
+#line 452 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 134 "mn-gmail-mailbox.gob"
+#line 170 "mn-gmail-mailbox.gob"
 static void 
 mn_gmail_mailbox_dump_response (MNGmailMailbox * self, SoupMessage * message)
-#line 389 "mn-gmail-mailbox.c"
+#line 458 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::dump_response"
-#line 134 "mn-gmail-mailbox.gob"
+#line 170 "mn-gmail-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 134 "mn-gmail-mailbox.gob"
+#line 170 "mn-gmail-mailbox.gob"
 	g_return_if_fail (MN_IS_GMAIL_MAILBOX (self));
-#line 134 "mn-gmail-mailbox.gob"
+#line 170 "mn-gmail-mailbox.gob"
 	g_return_if_fail (message != NULL);
-#line 398 "mn-gmail-mailbox.c"
+#line 170 "mn-gmail-mailbox.gob"
+	g_return_if_fail (SOUP_IS_MESSAGE (message));
+#line 469 "mn-gmail-mailbox.c"
 {
-#line 136 "mn-gmail-mailbox.gob"
+#line 172 "mn-gmail-mailbox.gob"
 	
     char *body;
     char **lines;
@@ -412,24 +483,24 @@ mn_gmail_mailbox_dump_response (MNGmailMailbox * self, SoupMessage * message)
       mn_mailbox_notice(MN_MAILBOX(self), "< %s", lines[i]);
     g_strfreev(lines);
   }}
-#line 416 "mn-gmail-mailbox.c"
+#line 487 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 152 "mn-gmail-mailbox.gob"
+#line 188 "mn-gmail-mailbox.gob"
 static void 
 mn_gmail_mailbox_dump_response_cb (gpointer key, gpointer value, gpointer user_data)
-#line 422 "mn-gmail-mailbox.c"
+#line 493 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::dump_response_cb"
-#line 152 "mn-gmail-mailbox.gob"
+#line 188 "mn-gmail-mailbox.gob"
 	g_return_if_fail (key != NULL);
-#line 152 "mn-gmail-mailbox.gob"
+#line 188 "mn-gmail-mailbox.gob"
 	g_return_if_fail (value != NULL);
-#line 152 "mn-gmail-mailbox.gob"
+#line 188 "mn-gmail-mailbox.gob"
 	g_return_if_fail (user_data != NULL);
-#line 431 "mn-gmail-mailbox.c"
+#line 502 "mn-gmail-mailbox.c"
 {
-#line 156 "mn-gmail-mailbox.gob"
+#line 192 "mn-gmail-mailbox.gob"
 	
     Self *self = user_data;
     const char *header_name = key;
@@ -437,7 +508,7 @@ 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 441 "mn-gmail-mailbox.c"
+#line 512 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 
 /**
@@ -453,21 +524,21 @@ mn_gmail_mailbox_dump_response_cb (gpointer key, gpointer value, gpointer user_d
  * Return value: a newly allocated string containing the token or
  *               %NULL if not found.
  **/
-#line 177 "mn-gmail-mailbox.gob"
+#line 213 "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 460 "mn-gmail-mailbox.c"
+#line 531 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::get_token"
-#line 177 "mn-gmail-mailbox.gob"
+#line 213 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (str != NULL, (char * )0);
-#line 177 "mn-gmail-mailbox.gob"
+#line 213 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (pre != NULL, (char * )0);
-#line 177 "mn-gmail-mailbox.gob"
+#line 213 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (post != NULL, (char * )0);
-#line 469 "mn-gmail-mailbox.c"
+#line 540 "mn-gmail-mailbox.c"
 {
-#line 183 "mn-gmail-mailbox.gob"
+#line 219 "mn-gmail-mailbox.gob"
 	
     char *token = NULL;
     char *pre_loc;
@@ -491,26 +562,27 @@ mn_gmail_mailbox_get_token (const char * str, const char * pre, const char * pos
     
     return token;
   }}
-#line 495 "mn-gmail-mailbox.c"
+#line 566 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 207 "mn-gmail-mailbox.gob"
+#line 243 "mn-gmail-mailbox.gob"
 static void 
 mn_gmail_mailbox_login (MNGmailMailbox * self)
-#line 501 "mn-gmail-mailbox.c"
+#line 572 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::login"
-#line 207 "mn-gmail-mailbox.gob"
+#line 243 "mn-gmail-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 207 "mn-gmail-mailbox.gob"
+#line 243 "mn-gmail-mailbox.gob"
 	g_return_if_fail (MN_IS_GMAIL_MAILBOX (self));
-#line 508 "mn-gmail-mailbox.c"
+#line 579 "mn-gmail-mailbox.c"
 {
-#line 209 "mn-gmail-mailbox.gob"
+#line 245 "mn-gmail-mailbox.gob"
 	
     char *uri;
     char *escaped_username;
     char *escaped_password;
+    gboolean status;
 
     g_return_if_fail(selfp->logged_in == FALSE);
 
@@ -520,36 +592,45 @@ mn_gmail_mailbox_login (MNGmailMailbox * self)
 	
     mn_mailbox_notice(MN_MAILBOX(self), _("logging in"));
 
-    escaped_username = gnome_vfs_escape_string(MN_MAILBOX(self)->uri->username);
-    escaped_password = gnome_vfs_escape_string(MN_MAILBOX(self)->uri->password);
+#define EXTRA_CHARS ";/?:@&=+$,"/* taken from RFC 2396 2.2 */
+    escaped_username = soup_uri_encode(MN_MAILBOX(self)->uri->username, EXTRA_CHARS);
+    escaped_password = soup_uri_encode(MN_MAILBOX(self)->uri->password, EXTRA_CHARS);
     uri = g_strdup_printf("https://www.google.com/accounts/ServiceLoginBoxAuth?service=mail&continue=http://gmail.google.com/gmail&Email=%s&Passwd=%s", escaped_username, escaped_password);
     g_free(escaped_username);
     g_free(escaped_password);
 
-    self_get(self, uri, self_login_cb1);
+    status = self_get(self, uri, self_login_cb1);
     g_free(uri);
+
+    if (! status)
+      {
+	mn_mailbox_set_error(MN_MAILBOX(self), _("login failed"));
+	self_end_check(self);
+      }
   }}
-#line 533 "mn-gmail-mailbox.c"
+#line 612 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 232 "mn-gmail-mailbox.gob"
+#line 276 "mn-gmail-mailbox.gob"
 static void 
 mn_gmail_mailbox_login_cb1 (SoupMessage * message, gpointer user_data)
-#line 539 "mn-gmail-mailbox.c"
+#line 618 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::login_cb1"
-#line 232 "mn-gmail-mailbox.gob"
+#line 276 "mn-gmail-mailbox.gob"
 	g_return_if_fail (message != NULL);
-#line 232 "mn-gmail-mailbox.gob"
+#line 276 "mn-gmail-mailbox.gob"
+	g_return_if_fail (SOUP_IS_MESSAGE (message));
+#line 276 "mn-gmail-mailbox.gob"
 	g_return_if_fail (user_data != NULL);
-#line 546 "mn-gmail-mailbox.c"
+#line 627 "mn-gmail-mailbox.c"
 {
-#line 235 "mn-gmail-mailbox.gob"
+#line 279 "mn-gmail-mailbox.gob"
 	
     Self *self = user_data;
 
-    if (SOUP_MESSAGE_IS_ERROR(message))
-      mn_mailbox_set_error(MN_MAILBOX(self), _("unable to transfer data: %s"), message->errorphrase);
+    if (MESSAGE_IS_ERROR(message))
+      mn_mailbox_set_error(MN_MAILBOX(self), _("unable to transfer data: %s"), message->reason_phrase);
     else
       {
 	char *body;
@@ -559,49 +640,84 @@ mn_gmail_mailbox_login_cb1 (SoupMessage * message, gpointer user_data)
 	self_update_cookies(self, message);
 
 	body = g_strndup(message->response.body, message->response.length);
-	next_location = self_get_token(body, "top.location = \"", "\"", FALSE, FALSE);
+ 	next_location = self_get_token(body, "top.location = \"", "\"", FALSE, FALSE);
 	g_free(body);
 
 	if (next_location)
 	  {
+	    char *query;	/* pointer into next_location */
 	    char *uri;
+	    SoupUri *suri;
+	    gboolean status;
+
+	    /*
+	     * The following kludges work around http://bugzilla.ximian.com/show_bug.cgi?id=66516.
+	     * FIXME: remove it and bump libsoup version requirement
+	     * when the bug is fixed.
+	     */
+
+	    query = strchr(next_location, '?');
+	    if (query)
+	      *query = 0;
 
 	    uri = g_strdup_printf("https://www.google.com/accounts/%s", next_location);
-	    g_free(next_location);
+	    suri = soup_uri_new(uri);
+
+	    if (suri)
+	      {
+		if (query)
+		  {
+		    suri->query = g_strdup(query + 1);
+		    suri->broken_encoding = TRUE;
+		  }
+
+		self_get_from_uri(self, suri, self_login_cb2);
+		soup_uri_free(suri);
+		
+		status = TRUE;
+	      }
+	    else
+	      {
+		mn_mailbox_notice(MN_MAILBOX(self), _("unable to parse URI \"%s\""), uri);
+		status = FALSE;
+	      }
 
-	    self_get(self, uri, self_login_cb2);
 	    g_free(uri);
-
-	    return;
+	    g_free(next_location);
+	    
+	    if (status)
+	      return;
 	  }
 
 	mn_mailbox_set_error(MN_MAILBOX(self), _("login failed"));
       }
     
     /* if this point is reached, an error occurred */
-    mn_mailbox_end_check(MN_MAILBOX(self));
+    self_end_check(self);
   }}
-#line 585 "mn-gmail-mailbox.c"
+#line 699 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 272 "mn-gmail-mailbox.gob"
+#line 349 "mn-gmail-mailbox.gob"
 static void 
 mn_gmail_mailbox_login_cb2 (SoupMessage * message, gpointer user_data)
-#line 591 "mn-gmail-mailbox.c"
+#line 705 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::login_cb2"
-#line 272 "mn-gmail-mailbox.gob"
+#line 349 "mn-gmail-mailbox.gob"
 	g_return_if_fail (message != NULL);
-#line 272 "mn-gmail-mailbox.gob"
+#line 349 "mn-gmail-mailbox.gob"
+	g_return_if_fail (SOUP_IS_MESSAGE (message));
+#line 349 "mn-gmail-mailbox.gob"
 	g_return_if_fail (user_data != NULL);
-#line 598 "mn-gmail-mailbox.c"
+#line 714 "mn-gmail-mailbox.c"
 {
-#line 275 "mn-gmail-mailbox.gob"
+#line 352 "mn-gmail-mailbox.gob"
 	
     Self *self = user_data;
 
-    if (SOUP_MESSAGE_IS_ERROR(message))
-      mn_mailbox_set_error(MN_MAILBOX(self), _("unable to transfer data: %s"), message->errorphrase);
+    if (MESSAGE_IS_ERROR(message))
+      mn_mailbox_set_error(MN_MAILBOX(self), _("unable to transfer data: %s"), message->reason_phrase);
     else
       {
 	char *body;
@@ -616,38 +732,44 @@ mn_gmail_mailbox_login_cb2 (SoupMessage * message, gpointer user_data)
 
 	if (next_location)
 	  {
-	    self_get(self, next_location, self_login_cb3);
+	    gboolean status;
+
+	    status = self_get(self, next_location, self_login_cb3);
 	    g_free(next_location);
-	    return;
+
+	    if (status)
+	      return;
 	  }
 
 	mn_mailbox_set_error(MN_MAILBOX(self), _("login failed"));
       }
 
     /* if this point is reached, an error occurred */
-    mn_mailbox_end_check(MN_MAILBOX(self));
+    self_end_check(self);
   }}
-#line 631 "mn-gmail-mailbox.c"
+#line 751 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 306 "mn-gmail-mailbox.gob"
+#line 387 "mn-gmail-mailbox.gob"
 static void 
 mn_gmail_mailbox_login_cb3 (SoupMessage * message, gpointer user_data)
-#line 637 "mn-gmail-mailbox.c"
+#line 757 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::login_cb3"
-#line 306 "mn-gmail-mailbox.gob"
+#line 387 "mn-gmail-mailbox.gob"
 	g_return_if_fail (message != NULL);
-#line 306 "mn-gmail-mailbox.gob"
+#line 387 "mn-gmail-mailbox.gob"
+	g_return_if_fail (SOUP_IS_MESSAGE (message));
+#line 387 "mn-gmail-mailbox.gob"
 	g_return_if_fail (user_data != NULL);
-#line 644 "mn-gmail-mailbox.c"
+#line 766 "mn-gmail-mailbox.c"
 {
-#line 309 "mn-gmail-mailbox.gob"
+#line 390 "mn-gmail-mailbox.gob"
 	
     Self *self = user_data;
 
-    if (SOUP_MESSAGE_IS_ERROR(message))
-      mn_mailbox_set_error(MN_MAILBOX(self), _("unable to transfer data: %s"), message->errorphrase);
+    if (MESSAGE_IS_ERROR(message))
+      mn_mailbox_set_error(MN_MAILBOX(self), _("unable to transfer data: %s"), message->reason_phrase);
     else
       {
 	char *body;
@@ -672,26 +794,28 @@ mn_gmail_mailbox_login_cb3 (SoupMessage * message, gpointer user_data)
       }
 
     /* if this point is reached, an error occurred */
-    mn_mailbox_end_check(MN_MAILBOX(self));
+    self_end_check(self);
   }}
-#line 678 "mn-gmail-mailbox.c"
+#line 800 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 341 "mn-gmail-mailbox.gob"
+#line 422 "mn-gmail-mailbox.gob"
 static void 
 mn_gmail_mailbox_update_cookies (MNGmailMailbox * self, SoupMessage * message)
-#line 684 "mn-gmail-mailbox.c"
+#line 806 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::update_cookies"
-#line 341 "mn-gmail-mailbox.gob"
+#line 422 "mn-gmail-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 341 "mn-gmail-mailbox.gob"
+#line 422 "mn-gmail-mailbox.gob"
 	g_return_if_fail (MN_IS_GMAIL_MAILBOX (self));
-#line 341 "mn-gmail-mailbox.gob"
+#line 422 "mn-gmail-mailbox.gob"
 	g_return_if_fail (message != NULL);
-#line 693 "mn-gmail-mailbox.c"
+#line 422 "mn-gmail-mailbox.gob"
+	g_return_if_fail (SOUP_IS_MESSAGE (message));
+#line 817 "mn-gmail-mailbox.c"
 {
-#line 343 "mn-gmail-mailbox.gob"
+#line 424 "mn-gmail-mailbox.gob"
 	
     const GSList *set_cookie_headers;
     const GSList *l;
@@ -720,22 +844,22 @@ mn_gmail_mailbox_update_cookies (MNGmailMailbox * self, SoupMessage * message)
 	  }
       }
   }}
-#line 724 "mn-gmail-mailbox.c"
+#line 848 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 372 "mn-gmail-mailbox.gob"
+#line 453 "mn-gmail-mailbox.gob"
 static char * 
 mn_gmail_mailbox_build_cookie (MNGmailMailbox * self)
-#line 730 "mn-gmail-mailbox.c"
+#line 854 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::build_cookie"
-#line 372 "mn-gmail-mailbox.gob"
+#line 453 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (char * )0);
-#line 372 "mn-gmail-mailbox.gob"
+#line 453 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (MN_IS_GMAIL_MAILBOX (self), (char * )0);
-#line 737 "mn-gmail-mailbox.c"
+#line 861 "mn-gmail-mailbox.c"
 {
-#line 374 "mn-gmail-mailbox.gob"
+#line 455 "mn-gmail-mailbox.gob"
 	
     GString *cookie;
     char *str;
@@ -753,17 +877,17 @@ mn_gmail_mailbox_build_cookie (MNGmailMailbox * self)
 
     return str;
   }}
-#line 757 "mn-gmail-mailbox.c"
+#line 881 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 392 "mn-gmail-mailbox.gob"
+#line 473 "mn-gmail-mailbox.gob"
 static void 
 mn_gmail_mailbox_build_cookie_cb (gpointer key, gpointer value, gpointer user_data)
-#line 763 "mn-gmail-mailbox.c"
+#line 887 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::build_cookie_cb"
 {
-#line 394 "mn-gmail-mailbox.gob"
+#line 475 "mn-gmail-mailbox.gob"
 	
     GString *cookie = user_data;
 
@@ -772,88 +896,95 @@ 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 776 "mn-gmail-mailbox.c"
+#line 900 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 403 "mn-gmail-mailbox.gob"
+#line 484 "mn-gmail-mailbox.gob"
 static void 
 mn_gmail_mailbox_check_internal (MNGmailMailbox * self)
-#line 782 "mn-gmail-mailbox.c"
+#line 906 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::check_internal"
-#line 403 "mn-gmail-mailbox.gob"
+#line 484 "mn-gmail-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 403 "mn-gmail-mailbox.gob"
+#line 484 "mn-gmail-mailbox.gob"
 	g_return_if_fail (MN_IS_GMAIL_MAILBOX (self));
-#line 789 "mn-gmail-mailbox.c"
+#line 913 "mn-gmail-mailbox.c"
 {
-#line 405 "mn-gmail-mailbox.gob"
+#line 486 "mn-gmail-mailbox.gob"
 	
     mn_mailbox_notice(MN_MAILBOX(self), _("searching for unread mail"));
 
-    self_get(self, "https://gmail.google.com/gmail?search=adv&as_subset=unread&view=tl&start=0", self_check_internal_cb);
+    if (! self_get(self, "https://gmail.google.com/gmail?search=adv&as_subset=unread&view=tl&start=0", self_check_internal_cb))
+      {
+	mn_mailbox_set_error(MN_MAILBOX(self), _("unable to search for unread mail"));
+	self_end_check(self);
+      }
   }}
-#line 797 "mn-gmail-mailbox.c"
+#line 925 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 411 "mn-gmail-mailbox.gob"
+#line 496 "mn-gmail-mailbox.gob"
 static void 
 mn_gmail_mailbox_check_internal_cb (SoupMessage * message, gpointer user_data)
-#line 803 "mn-gmail-mailbox.c"
+#line 931 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::check_internal_cb"
-#line 411 "mn-gmail-mailbox.gob"
+#line 496 "mn-gmail-mailbox.gob"
 	g_return_if_fail (message != NULL);
-#line 808 "mn-gmail-mailbox.c"
+#line 496 "mn-gmail-mailbox.gob"
+	g_return_if_fail (SOUP_IS_MESSAGE (message));
+#line 938 "mn-gmail-mailbox.c"
 {
-#line 414 "mn-gmail-mailbox.gob"
+#line 499 "mn-gmail-mailbox.gob"
 	
     Self *self = user_data;
 
-    if (SOUP_MESSAGE_IS_ERROR(message))
-      mn_mailbox_set_error(MN_MAILBOX(self), _("unable to transfer data: %s"), message->errorphrase);
+    if (MESSAGE_IS_ERROR(message))
+      mn_mailbox_set_error(MN_MAILBOX(self), _("unable to transfer data: %s"), message->reason_phrase);
     else
       {
-	int count;
-	
 	self_dump_response(self, message);
+	self_parse_unread(self, message);
+      }
 
-	count = self_get_unread_count(message);
-	if (count == -1)
-	  mn_mailbox_set_error(MN_MAILBOX(self), _("unable to parse Gmail data"));
-	else
-	  mn_mailbox_set_has_new(MN_MAILBOX(self), count != 0);
-    }
-
-    mn_mailbox_end_check(MN_MAILBOX(self));
+    self_end_check(self);
   }}
-#line 831 "mn-gmail-mailbox.c"
+#line 954 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 435 "mn-gmail-mailbox.gob"
-static int 
-mn_gmail_mailbox_get_unread_count (SoupMessage * message)
-#line 837 "mn-gmail-mailbox.c"
+#line 513 "mn-gmail-mailbox.gob"
+static void 
+mn_gmail_mailbox_parse_unread (MNGmailMailbox * self, SoupMessage * message)
+#line 960 "mn-gmail-mailbox.c"
 {
-#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::get_unread_count"
-#line 435 "mn-gmail-mailbox.gob"
-	g_return_val_if_fail (message != NULL, (int )0);
-#line 842 "mn-gmail-mailbox.c"
+#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::parse_unread"
+#line 513 "mn-gmail-mailbox.gob"
+	g_return_if_fail (self != NULL);
+#line 513 "mn-gmail-mailbox.gob"
+	g_return_if_fail (MN_IS_GMAIL_MAILBOX (self));
+#line 513 "mn-gmail-mailbox.gob"
+	g_return_if_fail (message != NULL);
+#line 513 "mn-gmail-mailbox.gob"
+	g_return_if_fail (SOUP_IS_MESSAGE (message));
+#line 971 "mn-gmail-mailbox.c"
 {
-#line 437 "mn-gmail-mailbox.gob"
+#line 515 "mn-gmail-mailbox.gob"
 	
+    MNMailbox *mailbox = MN_MAILBOX(self);
     int count = -1;
+    GSList *messages = NULL;
     char *body;
     char *results;
   
     body = g_strndup(message->response.body, message->response.length);
-    
+
     results = strstr(body, "Search results for: is:unread\",\"");
     if (results)
       {
 	char *count_str;
 	
-	count_str = self_get_token(results + 32, "\",", "]", FALSE, FALSE);
+	count_str = self_get_token(results + 32, ",", ",", FALSE, FALSE);
 	if (count_str)
 	  {
 	    if (mn_str_isnumeric(count_str))
@@ -861,10 +992,148 @@ mn_gmail_mailbox_get_unread_count (SoupMessage * message)
 	    g_free(count_str);
 	  }
       }
-  
+
+    if (count != -1)
+      {
+	char *p = results + 32;
+
+	while (p && (p = strstr(p, ",1,0")))
+	  {
+	    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(mailbox->uri,
+							       NULL,
+							       sent_time,
+							       NULL,
+							       from,
+							       expanded_subject));
+
+	    g_free(from);
+	    g_free(expanded_subject);
+
+	    p = strstr(p, "[\"^i\"]");
+	  }
+      }
+
     g_free(body);
-    
-    return count;
+
+    if (count == -1)
+      mn_mailbox_set_error(mailbox, _("unable to parse Gmail data"));
+    else
+      {
+	mn_mailbox_set_has_new(mailbox, count != 0);
+	mn_mailbox_set_messages(mailbox, messages);
+      }
+
+    mn_g_object_slist_free(messages);
+  }}
+#line 1072 "mn-gmail-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 614 "mn-gmail-mailbox.gob"
+static time_t 
+mn_gmail_mailbox_parse_date (const char * date)
+#line 1078 "mn-gmail-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::parse_date"
+#line 614 "mn-gmail-mailbox.gob"
+	g_return_val_if_fail (date != NULL, (time_t )0);
+#line 1083 "mn-gmail-mailbox.c"
+{
+#line 616 "mn-gmail-mailbox.gob"
+	
+    time_t t = 0;
+#ifdef HAVE_TIMEGM
+    time_t now;
+
+    now = mn_time();
+    if (now > 0)
+      {
+	int hours;
+	int minutes;
+	char ampm[3];
+	char month_str[4];
+	int day;
+	struct tm *tm = NULL;
+	
+	/* convert now to UTC-7 (Gmail time) */
+	now -= (7 * 3600);
+	
+	if (sscanf(date, "%d:%d%2s", &hours, &minutes, ampm) == 3)
+	  {
+	    tm = gmtime(&now);
+	    tm->tm_hour = hours;
+	    if (ampm[0] == 'p')
+	      tm->tm_hour += 12;
+	    tm->tm_min = minutes;
+	    tm->tm_sec = 0;
+	  }
+	else if (sscanf(date, "%3s %d", month_str, &day) == 2)
+	  {
+	    const char *months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
+	    int i;
+	    
+	    for (i = 0; i < G_N_ELEMENTS(months); i++)
+	      if (! strcmp(month_str, months[i]))
+		{
+		  tm = gmtime(&now);
+		  tm->tm_mon = i;
+		  tm->tm_mday = day;
+		  tm->tm_hour = 0;
+		  tm->tm_min = 0;
+		  tm->tm_sec = 0;
+		  
+		  break;
+		}
+	  }
+
+	if (tm)
+	  t = timegm(tm) + (7 * 3600); /* add 7 hours, because Gmail time is UTC-7 */
+      }
+#endif /* HAVE_TIMEGM */
+
+    return t;
   }}
-#line 870 "mn-gmail-mailbox.c"
+#line 1139 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-gmail-mailbox.gob b/src/mn-gmail-mailbox.gob
@@ -16,24 +16,35 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+requires 2.0.10
+
 %headertop{
 #include "mn-mailbox.h"
 %}
+
+%privateheader{
+#include "mn-soup.h"
+%}
+
 %{
 #include "config.h"
+#include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
+#include <time.h>
 #include <glib/gi18n-lib.h>
-#include <libgnomevfs/gnome-vfs-utils.h>
-#include <libsoup/soup.h>
 #include "mn-mailbox-private.h"
 #include "mn-util.h"
 #include "mn-stock.h"
-#include "mn-soup.h"
+#include "mn-sgml-ref.h"
+
+#define MESSAGE_IS_ERROR(message) \
+  (! SOUP_STATUS_IS_SUCCESSFUL((message)->status_code))
 %}
 
 class MN:Gmail:Mailbox from MN:Mailbox
 {
+  private SoupSession *session;
   private GHashTable *cookies destroywith g_hash_table_destroy;
   private gboolean logged_in;
 
@@ -50,18 +61,12 @@ class MN:Gmail:Mailbox from MN:Mailbox
 
     object = PARENT_HANDLER(type, n_construct_properties, construct_params);
     
-    mn_soup_use();
+    if (! soup_ssl_supported)
+      mn_mailbox_set_init_error(MN_MAILBOX(object), _("libsoup has not been compiled with SSL/TLS support"));
 
     return object;
   }
 
-  override (G:Object) void
-    finalize (GObject *object)
-  {
-    mn_soup_unuse();
-    PARENT_HANDLER(object);
-  }
-
   override (MN:Mailbox) gboolean
     impl_is (MNMailbox *dummy, MN:URI *uri (check null type))
   {
@@ -73,6 +78,7 @@ class MN:Gmail:Mailbox from MN:Mailbox
   {
     Self *self = SELF(mailbox);
 
+    selfp->session = mn_soup_session_new();
     if (selfp->logged_in)
       self_check_internal(self);
     else
@@ -80,19 +86,49 @@ class MN:Gmail:Mailbox from MN:Mailbox
   }
   
   private void
+    end_check (self)
+  {
+    g_object_unref(selfp->session);
+    mn_mailbox_end_check(MN_MAILBOX(self));
+  }
+  
+  private gboolean
     get (self,
-	 const char *uri (check null),
-	 SoupCallbackFn callback (check null))
+	 const char *uri_string (check null),
+	 SoupMessageCallbackFn callback (check null))
   {
-    SoupContext *context;
     SoupMessage *message;
-    char *cookie;
 
-    context = soup_context_get(uri);
-    message = soup_message_new(context, SOUP_METHOD_GET);
-    soup_context_unref(context);
+    message = soup_message_new(SOUP_METHOD_GET, uri_string);
+    if (message)
+      {
+	self_get_from_message(self, soup_message_new(SOUP_METHOD_GET, uri_string), callback);
+	return TRUE;
+      }
+    else
+      {
+	mn_mailbox_notice(MN_MAILBOX(self), _("unable to parse URI \"%s\""), uri_string);
+	return FALSE;
+      }
+  }
+  
+  private void
+    get_from_uri (self,
+		  SoupUri *uri (check null),
+		  SoupMessageCallbackFn callback (check null))
+  {
+    self_get_from_message(self, soup_message_new_from_uri(SOUP_METHOD_GET, uri), callback);
+  }
+  
+  private void
+    get_from_message (self,
+		      Soup:Message *message (check null type),
+		      SoupMessageCallbackFn callback (check null))
+  {
+    char *cookie;
 
     soup_message_add_header(message->request_headers, "User-Agent", "Mail Notification");
+
     cookie = self_build_cookie(self);
     if (cookie)
       {
@@ -101,18 +137,18 @@ class MN:Gmail:Mailbox from MN:Mailbox
       }
     
     self_dump_request(self, message);
-    soup_message_queue(message, callback, self);
-    /* message will be freed by libsoup after invoking the callback */
+    soup_session_queue_message(selfp->session, message, callback, self);
+    /* message will be unreffed by libsoup after invoking the callback */
   }
   
   private void
-    dump_request (self, SoupMessage *message (check null))
+    dump_request (self, Soup:Message *message (check null type))
   {
     const SoupUri *suri;
     char *uri;
 
-    suri = soup_context_get_uri(message->context);
-    uri = soup_uri_to_string(suri, TRUE);
+    suri = soup_message_get_uri(message);
+    uri = soup_uri_to_string(suri, FALSE);
     mn_mailbox_notice(MN_MAILBOX(self), "> GET %s", uri);
     g_free(uri);
 
@@ -132,7 +168,7 @@ class MN:Gmail:Mailbox from MN:Mailbox
   }
   
   private void
-    dump_response (self, SoupMessage *message (check null))
+    dump_response (self, Soup:Message *message (check null type))
   {
     char *body;
     char **lines;
@@ -210,6 +246,7 @@ class MN:Gmail:Mailbox from MN:Mailbox
     char *uri;
     char *escaped_username;
     char *escaped_password;
+    gboolean status;
 
     g_return_if_fail(selfp->logged_in == FALSE);
 
@@ -219,24 +256,31 @@ class MN:Gmail:Mailbox from MN:Mailbox
 	
     mn_mailbox_notice(MN_MAILBOX(self), _("logging in"));
 
-    escaped_username = gnome_vfs_escape_string(MN_MAILBOX(self)->uri->username);
-    escaped_password = gnome_vfs_escape_string(MN_MAILBOX(self)->uri->password);
+#define EXTRA_CHARS ";/?:@&=+$,"/* taken from RFC 2396 2.2 */
+    escaped_username = soup_uri_encode(MN_MAILBOX(self)->uri->username, EXTRA_CHARS);
+    escaped_password = soup_uri_encode(MN_MAILBOX(self)->uri->password, EXTRA_CHARS);
     uri = g_strdup_printf("https://www.google.com/accounts/ServiceLoginBoxAuth?service=mail&continue=http://gmail.google.com/gmail&Email=%s&Passwd=%s", escaped_username, escaped_password);
     g_free(escaped_username);
     g_free(escaped_password);
 
-    self_get(self, uri, self_login_cb1);
+    status = self_get(self, uri, self_login_cb1);
     g_free(uri);
+
+    if (! status)
+      {
+	mn_mailbox_set_error(MN_MAILBOX(self), _("login failed"));
+	self_end_check(self);
+      }
   }
   
   private void
-    login_cb1 (SoupMessage *message (check null),
+    login_cb1 (Soup:Message *message (check null type),
 	       gpointer user_data (check null))
   {
     Self *self = user_data;
 
-    if (SOUP_MESSAGE_IS_ERROR(message))
-      mn_mailbox_set_error(MN_MAILBOX(self), _("unable to transfer data: %s"), message->errorphrase);
+    if (MESSAGE_IS_ERROR(message))
+      mn_mailbox_set_error(MN_MAILBOX(self), _("unable to transfer data: %s"), message->reason_phrase);
     else
       {
 	char *body;
@@ -246,37 +290,70 @@ class MN:Gmail:Mailbox from MN:Mailbox
 	self_update_cookies(self, message);
 
 	body = g_strndup(message->response.body, message->response.length);
-	next_location = self_get_token(body, "top.location = \"", "\"", FALSE, FALSE);
+ 	next_location = self_get_token(body, "top.location = \"", "\"", FALSE, FALSE);
 	g_free(body);
 
 	if (next_location)
 	  {
+	    char *query;	/* pointer into next_location */
 	    char *uri;
+	    SoupUri *suri;
+	    gboolean status;
+
+	    /*
+	     * The following kludges work around http://bugzilla.ximian.com/show_bug.cgi?id=66516.
+	     * FIXME: remove it and bump libsoup version requirement
+	     * when the bug is fixed.
+	     */
+
+	    query = strchr(next_location, '?');
+	    if (query)
+	      *query = 0;
 
 	    uri = g_strdup_printf("https://www.google.com/accounts/%s", next_location);
-	    g_free(next_location);
+	    suri = soup_uri_new(uri);
+
+	    if (suri)
+	      {
+		if (query)
+		  {
+		    suri->query = g_strdup(query + 1);
+		    suri->broken_encoding = TRUE;
+		  }
+
+		self_get_from_uri(self, suri, self_login_cb2);
+		soup_uri_free(suri);
+		
+		status = TRUE;
+	      }
+	    else
+	      {
+		mn_mailbox_notice(MN_MAILBOX(self), _("unable to parse URI \"%s\""), uri);
+		status = FALSE;
+	      }
 
-	    self_get(self, uri, self_login_cb2);
 	    g_free(uri);
-
-	    return;
+	    g_free(next_location);
+	    
+	    if (status)
+	      return;
 	  }
 
 	mn_mailbox_set_error(MN_MAILBOX(self), _("login failed"));
       }
     
     /* if this point is reached, an error occurred */
-    mn_mailbox_end_check(MN_MAILBOX(self));
+    self_end_check(self);
   }
   
   private void
-    login_cb2 (SoupMessage *message (check null),
+    login_cb2 (Soup:Message *message (check null type),
 	       gpointer user_data (check null))
   {
     Self *self = user_data;
 
-    if (SOUP_MESSAGE_IS_ERROR(message))
-      mn_mailbox_set_error(MN_MAILBOX(self), _("unable to transfer data: %s"), message->errorphrase);
+    if (MESSAGE_IS_ERROR(message))
+      mn_mailbox_set_error(MN_MAILBOX(self), _("unable to transfer data: %s"), message->reason_phrase);
     else
       {
 	char *body;
@@ -291,26 +368,30 @@ class MN:Gmail:Mailbox from MN:Mailbox
 
 	if (next_location)
 	  {
-	    self_get(self, next_location, self_login_cb3);
+	    gboolean status;
+
+	    status = self_get(self, next_location, self_login_cb3);
 	    g_free(next_location);
-	    return;
+
+	    if (status)
+	      return;
 	  }
 
 	mn_mailbox_set_error(MN_MAILBOX(self), _("login failed"));
       }
 
     /* if this point is reached, an error occurred */
-    mn_mailbox_end_check(MN_MAILBOX(self));
+    self_end_check(self);
   }
   
   private void
-    login_cb3 (SoupMessage *message (check null),
+    login_cb3 (Soup:Message *message (check null type),
 	       gpointer user_data (check null))
   {
     Self *self = user_data;
 
-    if (SOUP_MESSAGE_IS_ERROR(message))
-      mn_mailbox_set_error(MN_MAILBOX(self), _("unable to transfer data: %s"), message->errorphrase);
+    if (MESSAGE_IS_ERROR(message))
+      mn_mailbox_set_error(MN_MAILBOX(self), _("unable to transfer data: %s"), message->reason_phrase);
     else
       {
 	char *body;
@@ -335,11 +416,11 @@ class MN:Gmail:Mailbox from MN:Mailbox
       }
 
     /* if this point is reached, an error occurred */
-    mn_mailbox_end_check(MN_MAILBOX(self));
+    self_end_check(self);
   }
 
   private void
-    update_cookies (self, SoupMessage *message (check null))
+    update_cookies (self, Soup:Message *message (check null type))
   {
     const GSList *set_cookie_headers;
     const GSList *l;
@@ -405,48 +486,47 @@ class MN:Gmail:Mailbox from MN:Mailbox
   {
     mn_mailbox_notice(MN_MAILBOX(self), _("searching for unread mail"));
 
-    self_get(self, "https://gmail.google.com/gmail?search=adv&as_subset=unread&view=tl&start=0", self_check_internal_cb);
+    if (! self_get(self, "https://gmail.google.com/gmail?search=adv&as_subset=unread&view=tl&start=0", self_check_internal_cb))
+      {
+	mn_mailbox_set_error(MN_MAILBOX(self), _("unable to search for unread mail"));
+	self_end_check(self);
+      }
   }
 
   private void
-    check_internal_cb (SoupMessage *message (check null),
+    check_internal_cb (Soup:Message *message (check null type),
 		       gpointer user_data)
   {
     Self *self = user_data;
 
-    if (SOUP_MESSAGE_IS_ERROR(message))
-      mn_mailbox_set_error(MN_MAILBOX(self), _("unable to transfer data: %s"), message->errorphrase);
+    if (MESSAGE_IS_ERROR(message))
+      mn_mailbox_set_error(MN_MAILBOX(self), _("unable to transfer data: %s"), message->reason_phrase);
     else
       {
-	int count;
-	
 	self_dump_response(self, message);
+	self_parse_unread(self, message);
+      }
 
-	count = self_get_unread_count(message);
-	if (count == -1)
-	  mn_mailbox_set_error(MN_MAILBOX(self), _("unable to parse Gmail data"));
-	else
-	  mn_mailbox_set_has_new(MN_MAILBOX(self), count != 0);
-    }
-
-    mn_mailbox_end_check(MN_MAILBOX(self));
+    self_end_check(self);
   }
 
-  private int
-    get_unread_count (SoupMessage *message (check null))
+  private void
+    parse_unread (self, Soup:Message *message (check null type))
   {
+    MNMailbox *mailbox = MN_MAILBOX(self);
     int count = -1;
+    GSList *messages = NULL;
     char *body;
     char *results;
   
     body = g_strndup(message->response.body, message->response.length);
-    
+
     results = strstr(body, "Search results for: is:unread\",\"");
     if (results)
       {
 	char *count_str;
 	
-	count_str = self_get_token(results + 32, "\",", "]", FALSE, FALSE);
+	count_str = self_get_token(results + 32, ",", ",", FALSE, FALSE);
 	if (count_str)
 	  {
 	    if (mn_str_isnumeric(count_str))
@@ -454,9 +534,136 @@ class MN:Gmail:Mailbox from MN:Mailbox
 	    g_free(count_str);
 	  }
       }
-  
+
+    if (count != -1)
+      {
+	char *p = results + 32;
+
+	while (p && (p = strstr(p, ",1,0")))
+	  {
+	    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(mailbox->uri,
+							       NULL,
+							       sent_time,
+							       NULL,
+							       from,
+							       expanded_subject));
+
+	    g_free(from);
+	    g_free(expanded_subject);
+
+	    p = strstr(p, "[\"^i\"]");
+	  }
+      }
+
     g_free(body);
-    
-    return count;
+
+    if (count == -1)
+      mn_mailbox_set_error(mailbox, _("unable to parse Gmail data"));
+    else
+      {
+	mn_mailbox_set_has_new(mailbox, count != 0);
+	mn_mailbox_set_messages(mailbox, messages);
+      }
+
+    mn_g_object_slist_free(messages);
+  }
+
+  private time_t
+    parse_date (const char *date (check null))
+  {
+    time_t t = 0;
+#ifdef HAVE_TIMEGM
+    time_t now;
+
+    now = mn_time();
+    if (now > 0)
+      {
+	int hours;
+	int minutes;
+	char ampm[3];
+	char month_str[4];
+	int day;
+	struct tm *tm = NULL;
+	
+	/* convert now to UTC-7 (Gmail time) */
+	now -= (7 * 3600);
+	
+	if (sscanf(date, "%d:%d%2s", &hours, &minutes, ampm) == 3)
+	  {
+	    tm = gmtime(&now);
+	    tm->tm_hour = hours;
+	    if (ampm[0] == 'p')
+	      tm->tm_hour += 12;
+	    tm->tm_min = minutes;
+	    tm->tm_sec = 0;
+	  }
+	else if (sscanf(date, "%3s %d", month_str, &day) == 2)
+	  {
+	    const char *months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
+	    int i;
+	    
+	    for (i = 0; i < G_N_ELEMENTS(months); i++)
+	      if (! strcmp(month_str, months[i]))
+		{
+		  tm = gmtime(&now);
+		  tm->tm_mon = i;
+		  tm->tm_mday = day;
+		  tm->tm_hour = 0;
+		  tm->tm_min = 0;
+		  tm->tm_sec = 0;
+		  
+		  break;
+		}
+	  }
+
+	if (tm)
+	  t = timegm(tm) + (7 * 3600); /* add 7 hours, because Gmail time is UTC-7 */
+      }
+#endif /* HAVE_TIMEGM */
+
+    return t;
   }
 }
diff --git a/src/mn-gmail-mailbox.h b/src/mn-gmail-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (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
@@ -0,0 +1,26 @@
+/* Generated by GOB (v2.0.10)   (do not edit directly) */
+
+#ifndef __MN_GMIME_STREAM_VFS_PRIVATE_H__
+#define __MN_GMIME_STREAM_VFS_PRIVATE_H__
+
+#include "mn-gmime-stream-vfs.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+struct _MNGMimeStreamVFSPrivate {
+#line 62 "mn-gmime-stream-vfs.gob"
+	GnomeVFSHandle * handle;
+#line 63 "mn-gmime-stream-vfs.gob"
+	char * uri;
+#line 64 "mn-gmime-stream-vfs.gob"
+	gboolean eof;
+#line 20 "mn-gmime-stream-vfs-private.h"
+};
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-gmime-stream-vfs.c b/src/mn-gmime-stream-vfs.c
@@ -0,0 +1,579 @@
+/* Generated by GOB (v2.0.10) on Wed Oct  6 19:29:53 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-gmime-stream-vfs.h"
+
+#include "mn-gmime-stream-vfs-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 26 "mn-gmime-stream-vfs.gob"
+
+#include "config.h"
+#include <glib/gi18n-lib.h>
+
+#define VFS_CALL(stream, expr, fail_format, fail_retval)		\
+  {									\
+    GnomeVFSResult result;						\
+									\
+    result = expr;							\
+    if (result != GNOME_VFS_OK)						\
+      {									\
+	(stream)->_priv->eof = TRUE;					\
+	if (result != GNOME_VFS_ERROR_EOF)				\
+	  {								\
+	    g_warning((fail_format),					\
+		      (stream)->_priv->uri,				\
+		      gnome_vfs_result_to_string(result));		\
+	    return (fail_retval);					\
+	  }								\
+      }									\
+  }
+
+#define VFS_READ(stream, buffer, bytes, bytes_read, fail_retval) \
+  VFS_CALL((stream), gnome_vfs_read((stream)->_priv->handle, (buffer), (bytes), (bytes_read)), _("unable to read %s: %s"), (fail_retval))
+#define VFS_WRITE(stream, buffer, bytes, bytes_written, fail_retval) \
+  VFS_CALL((stream), gnome_vfs_write((stream)->_priv->handle, (buffer), (bytes), (bytes_written)), _("unable to write to %s: %s"), (fail_retval))
+#define VFS_SEEK(stream, whence, offset, fail_retval) \
+  VFS_CALL((stream), gnome_vfs_seek((stream)->_priv->handle, (whence), (offset)), _("unable to seek in %s: %s"), (fail_retval))
+#define VFS_TELL(stream, offset_return, fail_retval) \
+  VFS_CALL((stream), gnome_vfs_tell((stream)->_priv->handle, (offset_return)), _("unable to tell position of %s: %s"), (fail_retval))
+#define VFS_CLOSE(stream, fail_retval) \
+  VFS_CALL((stream), gnome_vfs_close((stream)->_priv->handle), _("unable to close %s: %s"), (fail_retval))
+
+#line 61 "mn-gmime-stream-vfs.c"
+/* self casting macros */
+#define SELF(x) MN_GMIME_STREAM_VFS(x)
+#define SELF_CONST(x) MN_GMIME_STREAM_VFS_CONST(x)
+#define IS_SELF(x) MN_IS_GMIME_STREAM_VFS(x)
+#define TYPE_SELF MN_TYPE_GMIME_STREAM_VFS
+#define SELF_CLASS(x) MN_GMIME_STREAM_VFS_CLASS(x)
+
+#define SELF_GET_CLASS(x) MN_GMIME_STREAM_VFS_GET_CLASS(x)
+
+/* self typedefs */
+typedef MNGMimeStreamVFS Self;
+typedef MNGMimeStreamVFSClass SelfClass;
+
+/* here are local prototypes */
+static void mn_gmime_stream_vfs_init (MNGMimeStreamVFS * o) G_GNUC_UNUSED;
+static void mn_gmime_stream_vfs_class_init (MNGMimeStreamVFSClass * c) G_GNUC_UNUSED;
+static ssize_t ___1_mn_gmime_stream_vfs_read (GMimeStream * stream, char * buf, size_t len) G_GNUC_UNUSED;
+static ssize_t ___2_mn_gmime_stream_vfs_write (GMimeStream * stream, const char * buf, size_t len) G_GNUC_UNUSED;
+static int ___3_mn_gmime_stream_vfs_flush (GMimeStream * stream) G_GNUC_UNUSED;
+static int ___4_mn_gmime_stream_vfs_close (GMimeStream * stream) G_GNUC_UNUSED;
+static gboolean ___5_mn_gmime_stream_vfs_eos (GMimeStream * stream) G_GNUC_UNUSED;
+static int ___6_mn_gmime_stream_vfs_reset (GMimeStream * stream) G_GNUC_UNUSED;
+static off_t ___7_mn_gmime_stream_vfs_seek (GMimeStream * stream, off_t offset, GMimeSeekWhence whence) G_GNUC_UNUSED;
+static off_t ___8_mn_gmime_stream_vfs_tell (GMimeStream * stream) G_GNUC_UNUSED;
+static ssize_t ___9_mn_gmime_stream_vfs_length (GMimeStream * stream) G_GNUC_UNUSED;
+static GMimeStream * ___a_mn_gmime_stream_vfs_substream (GMimeStream * stream, off_t start, off_t end) G_GNUC_UNUSED;
+
+/* pointer to the class of our parent */
+static GMimeStreamClass *parent_class = NULL;
+
+/* Short form macros */
+#define self_new mn_gmime_stream_vfs_new
+GType
+mn_gmime_stream_vfs_get_type (void)
+{
+	static GType type = 0;
+
+	if ___GOB_UNLIKELY(type == 0) {
+		static const GTypeInfo info = {
+			sizeof (MNGMimeStreamVFSClass),
+			(GBaseInitFunc) NULL,
+			(GBaseFinalizeFunc) NULL,
+			(GClassInitFunc) mn_gmime_stream_vfs_class_init,
+			(GClassFinalizeFunc) NULL,
+			NULL /* class_data */,
+			sizeof (MNGMimeStreamVFS),
+			0 /* n_preallocs */,
+			(GInstanceInitFunc) mn_gmime_stream_vfs_init,
+			NULL
+		};
+
+		type = g_type_register_static (GMIME_TYPE_STREAM, "MNGMimeStreamVFS", &info, (GTypeFlags)0);
+	}
+
+	return type;
+}
+
+/* a macro for creating a new object of our type */
+#define GET_NEW ((MNGMimeStreamVFS *)g_object_new(mn_gmime_stream_vfs_get_type(), NULL))
+
+/* a function for creating a new object of our type */
+#include <stdarg.h>
+static MNGMimeStreamVFS * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED;
+static MNGMimeStreamVFS *
+GET_NEW_VARG (const char *first, ...)
+{
+	MNGMimeStreamVFS *ret;
+	va_list ap;
+	va_start (ap, first);
+	ret = (MNGMimeStreamVFS *)g_object_new_valist (mn_gmime_stream_vfs_get_type (), first, ap);
+	va_end (ap);
+	return ret;
+}
+
+
+static void
+___finalize(GObject *obj_self)
+{
+#define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::finalize"
+	MNGMimeStreamVFS *self G_GNUC_UNUSED = MN_GMIME_STREAM_VFS (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 63 "mn-gmime-stream-vfs.gob"
+	if(self->_priv->uri) { g_free ((gpointer) self->_priv->uri); self->_priv->uri = NULL; }
+#line 147 "mn-gmime-stream-vfs.c"
+}
+#undef __GOB_FUNCTION__
+
+static void 
+mn_gmime_stream_vfs_init (MNGMimeStreamVFS * o G_GNUC_UNUSED)
+{
+#define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::init"
+	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,TYPE_SELF,MNGMimeStreamVFSPrivate);
+}
+#undef __GOB_FUNCTION__
+static void 
+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;
+
+	g_type_class_add_private(c,sizeof(MNGMimeStreamVFSPrivate));
+	GMimeStreamClass *gmime_stream_class = (GMimeStreamClass *)c;
+
+	parent_class = g_type_class_ref (GMIME_TYPE_STREAM);
+
+#line 66 "mn-gmime-stream-vfs.gob"
+	gmime_stream_class->read = ___1_mn_gmime_stream_vfs_read;
+#line 88 "mn-gmime-stream-vfs.gob"
+	gmime_stream_class->write = ___2_mn_gmime_stream_vfs_write;
+#line 110 "mn-gmime-stream-vfs.gob"
+	gmime_stream_class->flush = ___3_mn_gmime_stream_vfs_flush;
+#line 117 "mn-gmime-stream-vfs.gob"
+	gmime_stream_class->close = ___4_mn_gmime_stream_vfs_close;
+#line 127 "mn-gmime-stream-vfs.gob"
+	gmime_stream_class->eos = ___5_mn_gmime_stream_vfs_eos;
+#line 138 "mn-gmime-stream-vfs.gob"
+	gmime_stream_class->reset = ___6_mn_gmime_stream_vfs_reset;
+#line 152 "mn-gmime-stream-vfs.gob"
+	gmime_stream_class->seek = ___7_mn_gmime_stream_vfs_seek;
+#line 199 "mn-gmime-stream-vfs.gob"
+	gmime_stream_class->tell = ___8_mn_gmime_stream_vfs_tell;
+#line 205 "mn-gmime-stream-vfs.gob"
+	gmime_stream_class->length = ___9_mn_gmime_stream_vfs_length;
+#line 224 "mn-gmime-stream-vfs.gob"
+	gmime_stream_class->substream = ___a_mn_gmime_stream_vfs_substream;
+#line 189 "mn-gmime-stream-vfs.c"
+	g_object_class->finalize = ___finalize;
+}
+#undef __GOB_FUNCTION__
+
+
+
+#line 66 "mn-gmime-stream-vfs.gob"
+static ssize_t 
+___1_mn_gmime_stream_vfs_read (GMimeStream * stream G_GNUC_UNUSED, char * buf, size_t len)
+#line 199 "mn-gmime-stream-vfs.c"
+#define PARENT_HANDLER(___stream,___buf,___len) \
+	((GMIME_STREAM_CLASS(parent_class)->read)? \
+		(* GMIME_STREAM_CLASS(parent_class)->read)(___stream,___buf,___len): \
+		((ssize_t )0))
+{
+#define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::read"
+#line 66 "mn-gmime-stream-vfs.gob"
+	g_return_val_if_fail (stream != NULL, (ssize_t )0);
+#line 66 "mn-gmime-stream-vfs.gob"
+	g_return_val_if_fail (GMIME_IS_STREAM (stream), (ssize_t )0);
+#line 66 "mn-gmime-stream-vfs.gob"
+	g_return_val_if_fail (buf != NULL, (ssize_t )0);
+#line 212 "mn-gmime-stream-vfs.c"
+{
+#line 70 "mn-gmime-stream-vfs.gob"
+	
+    Self *self = SELF(stream);
+    GnomeVFSFileSize bytes_read;
+
+    if (stream->bound_end != -1 && stream->position >= stream->bound_end)
+      return -1;
+    if (stream->bound_end != -1)
+      len = MIN(stream->bound_end - stream->position, (off_t) len);
+
+    /* make sure we are at the right position */
+    VFS_SEEK(self, GNOME_VFS_SEEK_START, stream->position, -1);
+
+    VFS_READ(self, buf, len, &bytes_read, -1);
+    stream->position += bytes_read;
+    
+    return bytes_read;
+  }}
+#line 232 "mn-gmime-stream-vfs.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 88 "mn-gmime-stream-vfs.gob"
+static ssize_t 
+___2_mn_gmime_stream_vfs_write (GMimeStream * stream G_GNUC_UNUSED, const char * buf, size_t len)
+#line 239 "mn-gmime-stream-vfs.c"
+#define PARENT_HANDLER(___stream,___buf,___len) \
+	((GMIME_STREAM_CLASS(parent_class)->write)? \
+		(* GMIME_STREAM_CLASS(parent_class)->write)(___stream,___buf,___len): \
+		((ssize_t )0))
+{
+#define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::write"
+#line 88 "mn-gmime-stream-vfs.gob"
+	g_return_val_if_fail (stream != NULL, (ssize_t )0);
+#line 88 "mn-gmime-stream-vfs.gob"
+	g_return_val_if_fail (GMIME_IS_STREAM (stream), (ssize_t )0);
+#line 88 "mn-gmime-stream-vfs.gob"
+	g_return_val_if_fail (buf != NULL, (ssize_t )0);
+#line 252 "mn-gmime-stream-vfs.c"
+{
+#line 92 "mn-gmime-stream-vfs.gob"
+	
+    Self *self = SELF(stream);
+    GnomeVFSFileSize bytes_written;
+
+    if (stream->bound_end != -1 && stream->position >= stream->bound_end)
+      return -1;
+    if (stream->bound_end != -1)
+      len = MIN(stream->bound_end - stream->position, (off_t) len);
+
+    /* make sure we are at the right position */
+    VFS_SEEK(self, GNOME_VFS_SEEK_START, stream->position, -1);
+
+    VFS_WRITE(self, buf, len, &bytes_written, -1);
+    stream->position += bytes_written;
+
+    return bytes_written;
+  }}
+#line 272 "mn-gmime-stream-vfs.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 110 "mn-gmime-stream-vfs.gob"
+static int 
+___3_mn_gmime_stream_vfs_flush (GMimeStream * stream G_GNUC_UNUSED)
+#line 279 "mn-gmime-stream-vfs.c"
+#define PARENT_HANDLER(___stream) \
+	((GMIME_STREAM_CLASS(parent_class)->flush)? \
+		(* GMIME_STREAM_CLASS(parent_class)->flush)(___stream): \
+		((int )0))
+{
+#define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::flush"
+#line 110 "mn-gmime-stream-vfs.gob"
+	g_return_val_if_fail (stream != NULL, (int )0);
+#line 110 "mn-gmime-stream-vfs.gob"
+	g_return_val_if_fail (GMIME_IS_STREAM (stream), (int )0);
+#line 290 "mn-gmime-stream-vfs.c"
+{
+#line 112 "mn-gmime-stream-vfs.gob"
+	
+    /* nop */
+    return 0;			/* success */
+  }}
+#line 297 "mn-gmime-stream-vfs.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 117 "mn-gmime-stream-vfs.gob"
+static int 
+___4_mn_gmime_stream_vfs_close (GMimeStream * stream G_GNUC_UNUSED)
+#line 304 "mn-gmime-stream-vfs.c"
+#define PARENT_HANDLER(___stream) \
+	((GMIME_STREAM_CLASS(parent_class)->close)? \
+		(* GMIME_STREAM_CLASS(parent_class)->close)(___stream): \
+		((int )0))
+{
+#define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::close"
+#line 117 "mn-gmime-stream-vfs.gob"
+	g_return_val_if_fail (stream != NULL, (int )0);
+#line 117 "mn-gmime-stream-vfs.gob"
+	g_return_val_if_fail (GMIME_IS_STREAM (stream), (int )0);
+#line 315 "mn-gmime-stream-vfs.c"
+{
+#line 119 "mn-gmime-stream-vfs.gob"
+	
+    Self *self = SELF(stream);
+
+    VFS_CLOSE(self, -1);
+
+    return 0;			/* success */
+  }}
+#line 325 "mn-gmime-stream-vfs.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 127 "mn-gmime-stream-vfs.gob"
+static gboolean 
+___5_mn_gmime_stream_vfs_eos (GMimeStream * stream G_GNUC_UNUSED)
+#line 332 "mn-gmime-stream-vfs.c"
+#define PARENT_HANDLER(___stream) \
+	((GMIME_STREAM_CLASS(parent_class)->eos)? \
+		(* GMIME_STREAM_CLASS(parent_class)->eos)(___stream): \
+		((gboolean )0))
+{
+#define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::eos"
+#line 127 "mn-gmime-stream-vfs.gob"
+	g_return_val_if_fail (stream != NULL, (gboolean )0);
+#line 127 "mn-gmime-stream-vfs.gob"
+	g_return_val_if_fail (GMIME_IS_STREAM (stream), (gboolean )0);
+#line 343 "mn-gmime-stream-vfs.c"
+{
+#line 129 "mn-gmime-stream-vfs.gob"
+	
+    Self *self = SELF(stream);
+
+    if (stream->bound_end == -1)
+      return selfp->eof;
+    else
+      return stream->position >= stream->bound_end;
+  }}
+#line 354 "mn-gmime-stream-vfs.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 138 "mn-gmime-stream-vfs.gob"
+static int 
+___6_mn_gmime_stream_vfs_reset (GMimeStream * stream G_GNUC_UNUSED)
+#line 361 "mn-gmime-stream-vfs.c"
+#define PARENT_HANDLER(___stream) \
+	((GMIME_STREAM_CLASS(parent_class)->reset)? \
+		(* GMIME_STREAM_CLASS(parent_class)->reset)(___stream): \
+		((int )0))
+{
+#define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::reset"
+#line 138 "mn-gmime-stream-vfs.gob"
+	g_return_val_if_fail (stream != NULL, (int )0);
+#line 138 "mn-gmime-stream-vfs.gob"
+	g_return_val_if_fail (GMIME_IS_STREAM (stream), (int )0);
+#line 372 "mn-gmime-stream-vfs.c"
+{
+#line 140 "mn-gmime-stream-vfs.gob"
+	
+    Self *self = SELF(stream);
+
+    if (stream->position == stream->bound_start)
+      return 0;
+
+    VFS_SEEK(self, GNOME_VFS_SEEK_START, stream->bound_start, -1);
+    stream->position = stream->bound_start;
+
+    return 0;
+  }}
+#line 386 "mn-gmime-stream-vfs.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 152 "mn-gmime-stream-vfs.gob"
+static off_t 
+___7_mn_gmime_stream_vfs_seek (GMimeStream * stream G_GNUC_UNUSED, off_t offset, GMimeSeekWhence whence)
+#line 393 "mn-gmime-stream-vfs.c"
+#define PARENT_HANDLER(___stream,___offset,___whence) \
+	((GMIME_STREAM_CLASS(parent_class)->seek)? \
+		(* GMIME_STREAM_CLASS(parent_class)->seek)(___stream,___offset,___whence): \
+		((off_t )0))
+{
+#define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::seek"
+#line 152 "mn-gmime-stream-vfs.gob"
+	g_return_val_if_fail (stream != NULL, (off_t )0);
+#line 152 "mn-gmime-stream-vfs.gob"
+	g_return_val_if_fail (GMIME_IS_STREAM (stream), (off_t )0);
+#line 404 "mn-gmime-stream-vfs.c"
+{
+#line 156 "mn-gmime-stream-vfs.gob"
+	
+    Self *self = SELF(stream);
+    off_t real = stream->position;
+
+    switch (whence)
+      {
+      case GMIME_STREAM_SEEK_SET:
+	real = offset;
+	break;
+
+      case GMIME_STREAM_SEEK_CUR:
+	real = stream->position + offset;
+	break;
+
+      case GMIME_STREAM_SEEK_END:
+	if (stream->bound_end == -1)
+	  {
+	    GnomeVFSFileSize current_position;
+
+	    VFS_SEEK(self, GNOME_VFS_SEEK_END, offset, -1);
+	    VFS_TELL(self, &current_position, -1);
+
+	    real = current_position;
+	    if (real < stream->bound_start)
+	      real = stream->bound_start;
+	    stream->position = real;
+	    
+	    return real;
+	  }
+	real = stream->bound_end + offset;
+	break;
+      }
+    
+    if (stream->bound_end != -1)
+      real = MIN(real, stream->bound_end);
+    real = MAX(real, stream->bound_start);
+
+    VFS_SEEK(self, GNOME_VFS_SEEK_START, real, -1);
+    stream->position = real;
+
+    return real;
+  }}
+#line 449 "mn-gmime-stream-vfs.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 199 "mn-gmime-stream-vfs.gob"
+static off_t 
+___8_mn_gmime_stream_vfs_tell (GMimeStream * stream G_GNUC_UNUSED)
+#line 456 "mn-gmime-stream-vfs.c"
+#define PARENT_HANDLER(___stream) \
+	((GMIME_STREAM_CLASS(parent_class)->tell)? \
+		(* GMIME_STREAM_CLASS(parent_class)->tell)(___stream): \
+		((off_t )0))
+{
+#define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::tell"
+#line 199 "mn-gmime-stream-vfs.gob"
+	g_return_val_if_fail (stream != NULL, (off_t )0);
+#line 199 "mn-gmime-stream-vfs.gob"
+	g_return_val_if_fail (GMIME_IS_STREAM (stream), (off_t )0);
+#line 467 "mn-gmime-stream-vfs.c"
+{
+#line 201 "mn-gmime-stream-vfs.gob"
+	
+    return stream->position;
+  }}
+#line 473 "mn-gmime-stream-vfs.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 205 "mn-gmime-stream-vfs.gob"
+static ssize_t 
+___9_mn_gmime_stream_vfs_length (GMimeStream * stream G_GNUC_UNUSED)
+#line 480 "mn-gmime-stream-vfs.c"
+#define PARENT_HANDLER(___stream) \
+	((GMIME_STREAM_CLASS(parent_class)->length)? \
+		(* GMIME_STREAM_CLASS(parent_class)->length)(___stream): \
+		((ssize_t )0))
+{
+#define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::length"
+#line 205 "mn-gmime-stream-vfs.gob"
+	g_return_val_if_fail (stream != NULL, (ssize_t )0);
+#line 205 "mn-gmime-stream-vfs.gob"
+	g_return_val_if_fail (GMIME_IS_STREAM (stream), (ssize_t )0);
+#line 491 "mn-gmime-stream-vfs.c"
+{
+#line 207 "mn-gmime-stream-vfs.gob"
+	
+    Self *self = SELF(stream);
+    GnomeVFSFileSize bound_end;
+
+    if (stream->bound_start != -1 && stream->bound_end != -1)
+      return stream->bound_end - stream->bound_start;
+
+    VFS_SEEK(self, GNOME_VFS_SEEK_END, 0, -1);
+    VFS_TELL(self, &bound_end, -1);
+    VFS_SEEK(self, GNOME_VFS_SEEK_START, stream->position, -1);
+    
+    if (bound_end < stream->bound_start)
+      return -1;
+    
+    return bound_end - stream->bound_start;
+  }}
+#line 510 "mn-gmime-stream-vfs.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 224 "mn-gmime-stream-vfs.gob"
+static GMimeStream * 
+___a_mn_gmime_stream_vfs_substream (GMimeStream * stream G_GNUC_UNUSED, off_t start, off_t end)
+#line 517 "mn-gmime-stream-vfs.c"
+#define PARENT_HANDLER(___stream,___start,___end) \
+	((GMIME_STREAM_CLASS(parent_class)->substream)? \
+		(* GMIME_STREAM_CLASS(parent_class)->substream)(___stream,___start,___end): \
+		((GMimeStream * )0))
+{
+#define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::substream"
+#line 224 "mn-gmime-stream-vfs.gob"
+	g_return_val_if_fail (stream != NULL, (GMimeStream * )0);
+#line 224 "mn-gmime-stream-vfs.gob"
+	g_return_val_if_fail (GMIME_IS_STREAM (stream), (GMimeStream * )0);
+#line 528 "mn-gmime-stream-vfs.c"
+{
+#line 226 "mn-gmime-stream-vfs.gob"
+	
+    Self *self;
+
+    self = GET_NEW;
+    selfp->handle = SELF(stream)->_priv->handle;
+
+    g_mime_stream_construct(GMIME_STREAM(self), start, end);
+
+    return GMIME_STREAM(self);
+  }}
+#line 541 "mn-gmime-stream-vfs.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 237 "mn-gmime-stream-vfs.gob"
+GMimeStream * 
+mn_gmime_stream_vfs_new (GnomeVFSHandle * handle, const char * uri)
+#line 548 "mn-gmime-stream-vfs.c"
+{
+#define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::new"
+#line 237 "mn-gmime-stream-vfs.gob"
+	g_return_val_if_fail (handle != NULL, (GMimeStream * )0);
+#line 237 "mn-gmime-stream-vfs.gob"
+	g_return_val_if_fail (uri != NULL, (GMimeStream * )0);
+#line 555 "mn-gmime-stream-vfs.c"
+{
+#line 239 "mn-gmime-stream-vfs.gob"
+	
+    Self *self;
+    GMimeStream *stream;
+    GnomeVFSFileSize current_position;
+
+    self = GET_NEW;
+    selfp->handle = handle;
+    selfp->uri = g_strdup(uri);
+    
+    if (gnome_vfs_tell(selfp->handle, &current_position) != GNOME_VFS_OK)
+      current_position = 0;
+    
+    stream = GMIME_STREAM(self);
+    g_mime_stream_construct(stream, current_position, -1);
+    
+    /* check for EOF */
+    if (g_mime_stream_length(stream) <= 0)
+      selfp->eof = TRUE;
+
+    return stream;
+  }}
+#line 579 "mn-gmime-stream-vfs.c"
+#undef __GOB_FUNCTION__
diff --git a/src/mn-gmime-stream-vfs.gob b/src/mn-gmime-stream-vfs.gob
@@ -0,0 +1,260 @@
+/* 
+ * 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 <libgnomevfs/gnome-vfs.h>
+#include <gmime/gmime.h>
+%}
+
+%{
+#include "config.h"
+#include <glib/gi18n-lib.h>
+
+#define VFS_CALL(stream, expr, fail_format, fail_retval)		\
+  {									\
+    GnomeVFSResult result;						\
+									\
+    result = expr;							\
+    if (result != GNOME_VFS_OK)						\
+      {									\
+	(stream)->_priv->eof = TRUE;					\
+	if (result != GNOME_VFS_ERROR_EOF)				\
+	  {								\
+	    g_warning((fail_format),					\
+		      (stream)->_priv->uri,				\
+		      gnome_vfs_result_to_string(result));		\
+	    return (fail_retval);					\
+	  }								\
+      }									\
+  }
+
+#define VFS_READ(stream, buffer, bytes, bytes_read, fail_retval) \
+  VFS_CALL((stream), gnome_vfs_read((stream)->_priv->handle, (buffer), (bytes), (bytes_read)), _("unable to read %s: %s"), (fail_retval))
+#define VFS_WRITE(stream, buffer, bytes, bytes_written, fail_retval) \
+  VFS_CALL((stream), gnome_vfs_write((stream)->_priv->handle, (buffer), (bytes), (bytes_written)), _("unable to write to %s: %s"), (fail_retval))
+#define VFS_SEEK(stream, whence, offset, fail_retval) \
+  VFS_CALL((stream), gnome_vfs_seek((stream)->_priv->handle, (whence), (offset)), _("unable to seek in %s: %s"), (fail_retval))
+#define VFS_TELL(stream, offset_return, fail_retval) \
+  VFS_CALL((stream), gnome_vfs_tell((stream)->_priv->handle, (offset_return)), _("unable to tell position of %s: %s"), (fail_retval))
+#define VFS_CLOSE(stream, fail_retval) \
+  VFS_CALL((stream), gnome_vfs_close((stream)->_priv->handle), _("unable to close %s: %s"), (fail_retval))
+%}
+
+class MN:GMime:Stream:VFS from GMime:Stream
+{
+  private GnomeVFSHandle *handle;
+  private char *uri destroywith g_free; /* used in error messages only */
+  private gboolean eof;
+
+  override (GMime:Stream) ssize_t
+    read (GMime:Stream *stream (check null type),
+	  char *buf (check null),
+	  size_t len)
+  {
+    Self *self = SELF(stream);
+    GnomeVFSFileSize bytes_read;
+
+    if (stream->bound_end != -1 && stream->position >= stream->bound_end)
+      return -1;
+    if (stream->bound_end != -1)
+      len = MIN(stream->bound_end - stream->position, (off_t) len);
+
+    /* make sure we are at the right position */
+    VFS_SEEK(self, GNOME_VFS_SEEK_START, stream->position, -1);
+
+    VFS_READ(self, buf, len, &bytes_read, -1);
+    stream->position += bytes_read;
+    
+    return bytes_read;
+  }
+
+  override (GMime:Stream) ssize_t
+    write (GMime:Stream *stream (check null type),
+	   const char *buf (check null),
+	   size_t len)
+  {
+    Self *self = SELF(stream);
+    GnomeVFSFileSize bytes_written;
+
+    if (stream->bound_end != -1 && stream->position >= stream->bound_end)
+      return -1;
+    if (stream->bound_end != -1)
+      len = MIN(stream->bound_end - stream->position, (off_t) len);
+
+    /* make sure we are at the right position */
+    VFS_SEEK(self, GNOME_VFS_SEEK_START, stream->position, -1);
+
+    VFS_WRITE(self, buf, len, &bytes_written, -1);
+    stream->position += bytes_written;
+
+    return bytes_written;
+  }
+
+  override (GMime:Stream) int
+    flush (GMime:Stream *stream (check null type))
+  {
+    /* nop */
+    return 0;			/* success */
+  }
+  
+  override (GMime:Stream) int
+    close (GMime:Stream *stream (check null type))
+  {
+    Self *self = SELF(stream);
+
+    VFS_CLOSE(self, -1);
+
+    return 0;			/* success */
+  }
+
+  override (GMime:Stream) gboolean
+    eos (GMime:Stream *stream (check null type))
+  {
+    Self *self = SELF(stream);
+
+    if (stream->bound_end == -1)
+      return selfp->eof;
+    else
+      return stream->position >= stream->bound_end;
+  }
+
+  override (GMime:Stream) int
+    reset (GMime:Stream *stream (check null type))
+  {
+    Self *self = SELF(stream);
+
+    if (stream->position == stream->bound_start)
+      return 0;
+
+    VFS_SEEK(self, GNOME_VFS_SEEK_START, stream->bound_start, -1);
+    stream->position = stream->bound_start;
+
+    return 0;
+  }
+
+  override (GMime:Stream) off_t
+    seek (GMime:Stream *stream (check null type),
+	  off_t offset,
+	  GMimeSeekWhence whence)
+  {
+    Self *self = SELF(stream);
+    off_t real = stream->position;
+
+    switch (whence)
+      {
+      case GMIME_STREAM_SEEK_SET:
+	real = offset;
+	break;
+
+      case GMIME_STREAM_SEEK_CUR:
+	real = stream->position + offset;
+	break;
+
+      case GMIME_STREAM_SEEK_END:
+	if (stream->bound_end == -1)
+	  {
+	    GnomeVFSFileSize current_position;
+
+	    VFS_SEEK(self, GNOME_VFS_SEEK_END, offset, -1);
+	    VFS_TELL(self, &current_position, -1);
+
+	    real = current_position;
+	    if (real < stream->bound_start)
+	      real = stream->bound_start;
+	    stream->position = real;
+	    
+	    return real;
+	  }
+	real = stream->bound_end + offset;
+	break;
+      }
+    
+    if (stream->bound_end != -1)
+      real = MIN(real, stream->bound_end);
+    real = MAX(real, stream->bound_start);
+
+    VFS_SEEK(self, GNOME_VFS_SEEK_START, real, -1);
+    stream->position = real;
+
+    return real;
+  }
+  
+  override (GMime:Stream) off_t
+    tell (GMime:Stream *stream (check null type))
+  {
+    return stream->position;
+  }
+  
+  override (GMime:Stream) ssize_t
+    length (GMime:Stream *stream (check null type))
+  {
+    Self *self = SELF(stream);
+    GnomeVFSFileSize bound_end;
+
+    if (stream->bound_start != -1 && stream->bound_end != -1)
+      return stream->bound_end - stream->bound_start;
+
+    VFS_SEEK(self, GNOME_VFS_SEEK_END, 0, -1);
+    VFS_TELL(self, &bound_end, -1);
+    VFS_SEEK(self, GNOME_VFS_SEEK_START, stream->position, -1);
+    
+    if (bound_end < stream->bound_start)
+      return -1;
+    
+    return bound_end - stream->bound_start;
+  }
+
+  override (GMime:Stream) GMimeStream *
+    substream (GMime:Stream *stream (check null type), off_t start, off_t end)
+  {
+    Self *self;
+
+    self = GET_NEW;
+    selfp->handle = SELF(stream)->_priv->handle;
+
+    g_mime_stream_construct(GMIME_STREAM(self), start, end);
+
+    return GMIME_STREAM(self);
+  }
+
+  public GMimeStream *
+    new (GnomeVFSHandle *handle (check null), const char *uri (check null))
+  {
+    Self *self;
+    GMimeStream *stream;
+    GnomeVFSFileSize current_position;
+
+    self = GET_NEW;
+    selfp->handle = handle;
+    selfp->uri = g_strdup(uri);
+    
+    if (gnome_vfs_tell(selfp->handle, &current_position) != GNOME_VFS_OK)
+      current_position = 0;
+    
+    stream = GMIME_STREAM(self);
+    g_mime_stream_construct(stream, current_position, -1);
+    
+    /* check for EOF */
+    if (g_mime_stream_length(stream) <= 0)
+      selfp->eof = TRUE;
+
+    return stream;
+  }
+}
diff --git a/src/mn-gmime-stream-vfs.h b/src/mn-gmime-stream-vfs.h
@@ -0,0 +1,65 @@
+/* Generated by GOB (v2.0.10)   (do not edit directly) */
+
+#include <glib.h>
+#include <glib-object.h>
+
+
+#include <libgnomevfs/gnome-vfs.h>
+#include <gmime/gmime.h>
+
+#ifndef __MN_GMIME_STREAM_VFS_H__
+#define __MN_GMIME_STREAM_VFS_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+/*
+ * Type checking and casting macros
+ */
+#define MN_TYPE_GMIME_STREAM_VFS	(mn_gmime_stream_vfs_get_type())
+#define MN_GMIME_STREAM_VFS(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_gmime_stream_vfs_get_type(), MNGMimeStreamVFS)
+#define MN_GMIME_STREAM_VFS_CONST(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_gmime_stream_vfs_get_type(), MNGMimeStreamVFS const)
+#define MN_GMIME_STREAM_VFS_CLASS(klass)	G_TYPE_CHECK_CLASS_CAST((klass), mn_gmime_stream_vfs_get_type(), MNGMimeStreamVFSClass)
+#define MN_IS_GMIME_STREAM_VFS(obj)	G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_gmime_stream_vfs_get_type ())
+
+#define MN_GMIME_STREAM_VFS_GET_CLASS(obj)	G_TYPE_INSTANCE_GET_CLASS((obj), mn_gmime_stream_vfs_get_type(), MNGMimeStreamVFSClass)
+
+/* Private structure type */
+typedef struct _MNGMimeStreamVFSPrivate MNGMimeStreamVFSPrivate;
+
+/*
+ * Main object structure
+ */
+#ifndef __TYPEDEF_MN_GMIME_STREAM_VFS__
+#define __TYPEDEF_MN_GMIME_STREAM_VFS__
+typedef struct _MNGMimeStreamVFS MNGMimeStreamVFS;
+#endif
+struct _MNGMimeStreamVFS {
+	GMimeStream __parent__;
+	/*< private >*/
+	MNGMimeStreamVFSPrivate *_priv;
+};
+
+/*
+ * Class definition
+ */
+typedef struct _MNGMimeStreamVFSClass MNGMimeStreamVFSClass;
+struct _MNGMimeStreamVFSClass {
+	GMimeStreamClass __parent__;
+};
+
+
+/*
+ * Public methods
+ */
+GType	mn_gmime_stream_vfs_get_type	(void);
+GMimeStream * 	mn_gmime_stream_vfs_new	(GnomeVFSHandle * handle,
+					const char * uri);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
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.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (do not edit directly) */
 
 #ifndef __MN_IMAP_MAILBOX_PRIVATE_H__
 #define __MN_IMAP_MAILBOX_PRIVATE_H__
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.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (do not edit directly) */
 
 #ifndef __MN_IMAP_MAILBOX_PROPERTIES_PRIVATE_H__
 #define __MN_IMAP_MAILBOX_PROPERTIES_PRIVATE_H__
@@ -10,11 +10,11 @@ extern "C" {
 #endif /* __cplusplus */
 
 struct _MNIMAPMailboxPropertiesPrivate {
-#line 66 "mn-imap-mailbox-properties.gob"
+#line 68 "mn-imap-mailbox-properties.gob"
 	GtkWidget * inbox_radio;
-#line 67 "mn-imap-mailbox-properties.gob"
+#line 69 "mn-imap-mailbox-properties.gob"
 	GtkWidget * other_radio;
-#line 68 "mn-imap-mailbox-properties.gob"
+#line 70 "mn-imap-mailbox-properties.gob"
 	GtkWidget * mailbox_entry;
 #line 20 "mn-imap-mailbox-properties-private.h"
 };
diff --git a/src/mn-imap-mailbox-properties.c b/src/mn-imap-mailbox-properties.c
@@ -1,14 +1,16 @@
-/* Generated by GOB (v2.0.9) on Thu Sep  9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct  6 19:29:52 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 9
+#define GOB_VERSION_PATCHLEVEL 10
 
 #define selfp (self->_priv)
 
+#include <string.h> /* memset() */
+
 #include "mn-imap-mailbox-properties.h"
 
 #include "mn-imap-mailbox-properties-private.h"
@@ -21,7 +23,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 22 "mn-imap-mailbox-properties.gob"
+#line 24 "mn-imap-mailbox-properties.gob"
 
 #include "config.h"
 #include <glib/gi18n-lib.h>
@@ -31,7 +33,7 @@
 #include "mn-auth-combo-box.h"
 #include "mn-util.h"
 
-#line 35 "mn-imap-mailbox-properties.c"
+#line 37 "mn-imap-mailbox-properties.c"
 /* self casting macros */
 #define SELF(x) MN_IMAP_MAILBOX_PROPERTIES(x)
 #define SELF_CONST(x) MN_IMAP_MAILBOX_PROPERTIES_CONST(x)
@@ -71,11 +73,11 @@ static MNPIMailboxPropertiesClass *parent_class = NULL;
 static void
 ___MN_Mailbox_Properties_init (MNMailboxPropertiesIface *iface)
 {
-#line 147 "mn-imap-mailbox-properties.gob"
+#line 149 "mn-imap-mailbox-properties.gob"
 	iface->set_uri = self_set_uri;
-#line 178 "mn-imap-mailbox-properties.gob"
+#line 180 "mn-imap-mailbox-properties.gob"
 	iface->get_uri = self_get_uri;
-#line 79 "mn-imap-mailbox-properties.c"
+#line 81 "mn-imap-mailbox-properties.c"
 }
 
 GType
@@ -134,11 +136,10 @@ static void
 ___finalize(GObject *obj_self)
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox:Properties::finalize"
-	MNIMAPMailboxProperties *self  G_GNUC_UNUSED = MN_IMAP_MAILBOX_PROPERTIES (obj_self);
-	gpointer priv = self->_priv;
+	MNIMAPMailboxProperties *self G_GNUC_UNUSED = MN_IMAP_MAILBOX_PROPERTIES (obj_self);
+	gpointer priv G_GNUC_UNUSED = self->_priv;
 	if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-	g_free (priv);
 }
 #undef __GOB_FUNCTION__
 
@@ -146,22 +147,24 @@ static void
 mn_imap_mailbox_properties_init (MNIMAPMailboxProperties * o G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox:Properties::init"
-	o->_priv = g_new0 (MNIMAPMailboxPropertiesPrivate, 1);
+	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,TYPE_SELF,MNIMAPMailboxPropertiesPrivate);
 }
 #undef __GOB_FUNCTION__
-#line 70 "mn-imap-mailbox-properties.gob"
+#line 72 "mn-imap-mailbox-properties.gob"
 static void 
 mn_imap_mailbox_properties_class_init (MNIMAPMailboxPropertiesClass * class G_GNUC_UNUSED)
-#line 156 "mn-imap-mailbox-properties.c"
+#line 157 "mn-imap-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox:Properties::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
 
+	g_type_class_add_private(class,sizeof(MNIMAPMailboxPropertiesPrivate));
+
 	parent_class = g_type_class_ref (MN_TYPE_PI_MAILBOX_PROPERTIES);
 
-#line 79 "mn-imap-mailbox-properties.gob"
+#line 81 "mn-imap-mailbox-properties.gob"
 	g_object_class->constructor = ___2_mn_imap_mailbox_properties_constructor;
-#line 165 "mn-imap-mailbox-properties.c"
+#line 168 "mn-imap-mailbox-properties.c"
 	g_object_class->finalize = ___finalize;
 	g_object_class->get_property = ___object_get_property;
     {
@@ -170,7 +173,7 @@ mn_imap_mailbox_properties_class_init (MNIMAPMailboxPropertiesClass * class G_GN
 		"complete");
     }
  {
-#line 71 "mn-imap-mailbox-properties.gob"
+#line 73 "mn-imap-mailbox-properties.gob"
 
     MNPIMailboxPropertiesClass *pi_class = MN_PI_MAILBOX_PROPERTIES_CLASS(class);
 
@@ -178,7 +181,7 @@ mn_imap_mailbox_properties_class_init (MNIMAPMailboxPropertiesClass * class G_GN
     pi_class->default_port[0] = mn_uri_get_default_port("imap");
     pi_class->default_port[1] = mn_uri_get_default_port("imaps");
   
-#line 182 "mn-imap-mailbox-properties.c"
+#line 185 "mn-imap-mailbox-properties.c"
  }
 }
 #undef __GOB_FUNCTION__
@@ -197,7 +200,7 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_COMPLETE:
 		{
-#line 36 "mn-imap-mailbox-properties.gob"
+#line 38 "mn-imap-mailbox-properties.gob"
 
       MNPIMailboxProperties *pi = MN_PI_MAILBOX_PROPERTIES(self);
       gboolean complete;
@@ -227,7 +230,7 @@ ___object_get_property (GObject *object,
 
       g_value_set_boolean(VAL, complete);
     
-#line 231 "mn-imap-mailbox-properties.c"
+#line 234 "mn-imap-mailbox-properties.c"
 		}
 		break;
 	default:
@@ -244,10 +247,10 @@ ___object_get_property (GObject *object,
 
 
 
-#line 79 "mn-imap-mailbox-properties.gob"
+#line 81 "mn-imap-mailbox-properties.gob"
 static GObject * 
 ___2_mn_imap_mailbox_properties_constructor (GType type G_GNUC_UNUSED, guint n_construct_properties, GObjectConstructParam * construct_params)
-#line 251 "mn-imap-mailbox-properties.c"
+#line 254 "mn-imap-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): \
@@ -255,7 +258,7 @@ ___2_mn_imap_mailbox_properties_constructor (GType type G_GNUC_UNUSED, guint n_c
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox:Properties::constructor"
 {
-#line 81 "mn-imap-mailbox-properties.gob"
+#line 83 "mn-imap-mailbox-properties.gob"
 	
     GObject *object;
     Self *self;
@@ -305,57 +308,57 @@ ___2_mn_imap_mailbox_properties_constructor (GType type G_GNUC_UNUSED, guint n_c
 			 selfp->mailbox_entry, _("The mailbox name"),
 			 NULL);
 
-    g_signal_connect(G_OBJECT(selfp->inbox_radio), "toggled", G_CALLBACK(self_radio_toggled_h), self);
-    g_signal_connect(G_OBJECT(selfp->other_radio), "toggled", G_CALLBACK(self_radio_toggled_h), self);
-    g_signal_connect(G_OBJECT(selfp->mailbox_entry), "changed", G_CALLBACK(mn_pi_mailbox_properties_entry_changed_h), self);
+    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);
+    g_signal_connect(selfp->mailbox_entry, "changed", G_CALLBACK(mn_pi_mailbox_properties_entry_changed_h), self);
     
     return object;
   }}
-#line 315 "mn-imap-mailbox-properties.c"
+#line 318 "mn-imap-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 137 "mn-imap-mailbox-properties.gob"
+#line 139 "mn-imap-mailbox-properties.gob"
 static void 
 mn_imap_mailbox_properties_radio_toggled_h (GtkToggleButton * togglebutton, gpointer user_data)
-#line 322 "mn-imap-mailbox-properties.c"
+#line 325 "mn-imap-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox:Properties::radio_toggled_h"
-#line 137 "mn-imap-mailbox-properties.gob"
+#line 139 "mn-imap-mailbox-properties.gob"
 	g_return_if_fail (togglebutton != NULL);
-#line 137 "mn-imap-mailbox-properties.gob"
+#line 139 "mn-imap-mailbox-properties.gob"
 	g_return_if_fail (GTK_IS_TOGGLE_BUTTON (togglebutton));
-#line 137 "mn-imap-mailbox-properties.gob"
+#line 139 "mn-imap-mailbox-properties.gob"
 	g_return_if_fail (user_data != NULL);
-#line 331 "mn-imap-mailbox-properties.c"
+#line 334 "mn-imap-mailbox-properties.c"
 {
-#line 140 "mn-imap-mailbox-properties.gob"
+#line 142 "mn-imap-mailbox-properties.gob"
 	
     Self *self = user_data;
 
     gtk_widget_set_sensitive(selfp->mailbox_entry, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->other_radio)));
     g_object_notify(G_OBJECT(self), "complete");
   }}
-#line 340 "mn-imap-mailbox-properties.c"
+#line 343 "mn-imap-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 147 "mn-imap-mailbox-properties.gob"
+#line 149 "mn-imap-mailbox-properties.gob"
 static gboolean 
 mn_imap_mailbox_properties_set_uri (MNMailboxProperties * properties, MNURI * uri)
-#line 346 "mn-imap-mailbox-properties.c"
+#line 349 "mn-imap-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox:Properties::set_uri"
-#line 147 "mn-imap-mailbox-properties.gob"
+#line 149 "mn-imap-mailbox-properties.gob"
 	g_return_val_if_fail (properties != NULL, (gboolean )0);
-#line 147 "mn-imap-mailbox-properties.gob"
+#line 149 "mn-imap-mailbox-properties.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES (properties), (gboolean )0);
-#line 147 "mn-imap-mailbox-properties.gob"
+#line 149 "mn-imap-mailbox-properties.gob"
 	g_return_val_if_fail (uri != NULL, (gboolean )0);
-#line 147 "mn-imap-mailbox-properties.gob"
+#line 149 "mn-imap-mailbox-properties.gob"
 	g_return_val_if_fail (MN_IS_URI (uri), (gboolean )0);
-#line 357 "mn-imap-mailbox-properties.c"
+#line 360 "mn-imap-mailbox-properties.c"
 {
-#line 150 "mn-imap-mailbox-properties.gob"
+#line 152 "mn-imap-mailbox-properties.gob"
 	
     Self *self = SELF(properties);
     
@@ -383,22 +386,22 @@ mn_imap_mailbox_properties_set_uri (MNMailboxProperties * properties, MNURI * ur
     else
       return FALSE;
   }}
-#line 387 "mn-imap-mailbox-properties.c"
+#line 390 "mn-imap-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 178 "mn-imap-mailbox-properties.gob"
+#line 180 "mn-imap-mailbox-properties.gob"
 static MNURI * 
 mn_imap_mailbox_properties_get_uri (MNMailboxProperties * properties)
-#line 393 "mn-imap-mailbox-properties.c"
+#line 396 "mn-imap-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox:Properties::get_uri"
-#line 178 "mn-imap-mailbox-properties.gob"
+#line 180 "mn-imap-mailbox-properties.gob"
 	g_return_val_if_fail (properties != NULL, (MNURI * )0);
-#line 178 "mn-imap-mailbox-properties.gob"
+#line 180 "mn-imap-mailbox-properties.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES (properties), (MNURI * )0);
-#line 400 "mn-imap-mailbox-properties.c"
+#line 403 "mn-imap-mailbox-properties.c"
 {
-#line 180 "mn-imap-mailbox-properties.gob"
+#line 182 "mn-imap-mailbox-properties.gob"
 	
     Self *self = SELF(properties);
     gboolean ssl;
@@ -429,5 +432,5 @@ mn_imap_mailbox_properties_get_uri (MNMailboxProperties * properties)
 
     return uri;
   }}
-#line 433 "mn-imap-mailbox-properties.c"
+#line 436 "mn-imap-mailbox-properties.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-imap-mailbox-properties.gob b/src/mn-imap-mailbox-properties.gob
@@ -16,6 +16,8 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+requires 2.0.10
+
 %headertop{
 #include "mn-pi-mailbox-properties.h"
 %}
@@ -127,9 +129,9 @@ class MN:IMAP:Mailbox:Properties from MN:PI:Mailbox:Properties (interface MN:Mai
 			 selfp->mailbox_entry, _("The mailbox name"),
 			 NULL);
 
-    g_signal_connect(G_OBJECT(selfp->inbox_radio), "toggled", G_CALLBACK(self_radio_toggled_h), self);
-    g_signal_connect(G_OBJECT(selfp->other_radio), "toggled", G_CALLBACK(self_radio_toggled_h), self);
-    g_signal_connect(G_OBJECT(selfp->mailbox_entry), "changed", G_CALLBACK(mn_pi_mailbox_properties_entry_changed_h), self);
+    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);
+    g_signal_connect(selfp->mailbox_entry, "changed", G_CALLBACK(mn_pi_mailbox_properties_entry_changed_h), self);
     
     return object;
   }
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.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (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.9) on Thu Sep  9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct  6 19:29:52 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 9
+#define GOB_VERSION_PATCHLEVEL 10
 
 #define selfp (self->_priv)
 
@@ -21,18 +21,22 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 25 "mn-imap-mailbox.gob"
+#line 27 "mn-imap-mailbox.gob"
 
 #include "config.h"
 #include <stdio.h>
 #include <string.h>
 #include <stdarg.h>
+#include <stdlib.h>
 #include <glib/gi18n-lib.h>
 #include <libgnomevfs/gnome-vfs-utils.h>
 #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
 
 #define HAS_CURRENT_TAG(response, priv)	(! strcmp((response)->tag, (priv)->tag))
 #define IS(response, token)		(! strcmp((response)->response, (token)))
@@ -52,7 +56,13 @@
     STATE_AUTHENTICATE,
 #endif
     STATE_LOGIN,
+#ifdef WITH_MIME
+    STATE_EXAMINE,
+    STATE_SEARCH,
+    STATE_FETCH,
+#else /* WITH_MIME */
     STATE_STATUS,
+#endif
     STATE_LOGOUT
   };
   
@@ -69,10 +79,18 @@
     MNIMAPMailbox	*self;
     MNClientSession	*session;
     int			numeric_tag;
-    char		*tag;
+    char		tag[5];
     char		**capabilities;
     GSList		*auth_mechanisms;
+#ifdef WITH_MIME
+    gboolean		search_received;
+    GSList		*fetch_numbers;
+    char		*fetch_set;
+    GSList		*received_numbers;
+    GSList		*messages;
+#else /* WITH_MIME */
     gboolean		status_received;
+#endif
 #ifdef WITH_SSL
     gboolean		starttls_completed;
 #endif
@@ -90,7 +108,7 @@
     char		*arguments;
   };
 
-#line 94 "mn-imap-mailbox.c"
+#line 112 "mn-imap-mailbox.c"
 /* self casting macros */
 #define SELF(x) MN_IMAP_MAILBOX(x)
 #define SELF_CONST(x) MN_IMAP_MAILBOX_CONST(x)
@@ -118,11 +136,17 @@ static int mn_imap_mailbox_enter_authenticate_cb (MNClientSession * session, MNC
 static int mn_imap_mailbox_handle_authenticate_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_imap_mailbox_enter_login_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_imap_mailbox_handle_login_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+static int mn_imap_mailbox_enter_examine_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+static int mn_imap_mailbox_handle_examine_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+static int mn_imap_mailbox_enter_search_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+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_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 void ___11_mn_imap_mailbox_impl_threaded_check (MNMailbox * mailbox) G_GNUC_UNUSED;
+static void ___17_mn_imap_mailbox_impl_threaded_check (MNMailbox * mailbox) 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;
@@ -134,6 +158,7 @@ static gboolean mn_imap_mailbox_session_has_capability (MNClientSessionPrivate *
 static int mn_imap_mailbox_session_after_capability (MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_imap_mailbox_session_authenticate (MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_imap_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+static int mn_imap_mailbox_session_check_mail (MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static char * mn_imap_mailbox_quote (const char * str) G_GNUC_UNUSED;
 
 /* pointer to the class of our parent */
@@ -149,6 +174,12 @@ static MNMailboxClass *parent_class = NULL;
 #define self_handle_authenticate_cb mn_imap_mailbox_handle_authenticate_cb
 #define self_enter_login_cb mn_imap_mailbox_enter_login_cb
 #define self_handle_login_cb mn_imap_mailbox_handle_login_cb
+#define self_enter_examine_cb mn_imap_mailbox_enter_examine_cb
+#define self_handle_examine_cb mn_imap_mailbox_handle_examine_cb
+#define self_enter_search_cb mn_imap_mailbox_enter_search_cb
+#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_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
@@ -164,6 +195,7 @@ static MNMailboxClass *parent_class = NULL;
 #define self_session_after_capability mn_imap_mailbox_session_after_capability
 #define self_session_authenticate mn_imap_mailbox_session_authenticate
 #define self_session_authenticate_fallback mn_imap_mailbox_session_authenticate_fallback
+#define self_session_check_mail mn_imap_mailbox_session_check_mail
 #define self_quote mn_imap_mailbox_quote
 GType
 mn_imap_mailbox_get_type (void)
@@ -213,10 +245,10 @@ mn_imap_mailbox_init (MNIMAPMailbox * o G_GNUC_UNUSED)
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::init"
 }
 #undef __GOB_FUNCTION__
-#line 96 "mn-imap-mailbox.gob"
+#line 116 "mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_class_init (MNIMAPMailboxClass * class G_GNUC_UNUSED)
-#line 220 "mn-imap-mailbox.c"
+#line 252 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::class_init"
 	GObjectClass *g_object_class = (GObjectClass *)class;
@@ -224,29 +256,29 @@ mn_imap_mailbox_class_init (MNIMAPMailboxClass * class G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (MN_TYPE_MAILBOX);
 
-#line 101 "mn-imap-mailbox.gob"
+#line 121 "mn-imap-mailbox.gob"
 	g_object_class->constructor = ___2_mn_imap_mailbox_constructor;
-#line 118 "mn-imap-mailbox.gob"
+#line 138 "mn-imap-mailbox.gob"
 	mn_mailbox_class->impl_is = ___3_mn_imap_mailbox_impl_is;
-#line 416 "mn-imap-mailbox.gob"
-	mn_mailbox_class->impl_threaded_check = ___11_mn_imap_mailbox_impl_threaded_check;
-#line 234 "mn-imap-mailbox.c"
+#line 677 "mn-imap-mailbox.gob"
+	mn_mailbox_class->impl_threaded_check = ___17_mn_imap_mailbox_impl_threaded_check;
+#line 266 "mn-imap-mailbox.c"
  {
-#line 97 "mn-imap-mailbox.gob"
+#line 117 "mn-imap-mailbox.gob"
 
     MN_MAILBOX_CLASS(class)->format = "IMAP";
   
-#line 240 "mn-imap-mailbox.c"
+#line 272 "mn-imap-mailbox.c"
  }
 }
 #undef __GOB_FUNCTION__
 
 
 
-#line 101 "mn-imap-mailbox.gob"
+#line 121 "mn-imap-mailbox.gob"
 static GObject * 
 ___2_mn_imap_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_properties, GObjectConstructParam * construct_params)
-#line 250 "mn-imap-mailbox.c"
+#line 282 "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): \
@@ -254,7 +286,7 @@ ___2_mn_imap_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_pr
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::constructor"
 {
-#line 103 "mn-imap-mailbox.gob"
+#line 123 "mn-imap-mailbox.gob"
 	
     GObject *object;
     MNMailbox *mailbox;
@@ -269,53 +301,55 @@ ___2_mn_imap_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_pr
 
     return object;
   }}
-#line 273 "mn-imap-mailbox.c"
+#line 305 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 118 "mn-imap-mailbox.gob"
+#line 138 "mn-imap-mailbox.gob"
 static gboolean 
 ___3_mn_imap_mailbox_impl_is (MNMailbox * dummy G_GNUC_UNUSED, MNURI * uri)
-#line 280 "mn-imap-mailbox.c"
+#line 312 "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 118 "mn-imap-mailbox.gob"
+#line 138 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (uri != NULL, (gboolean )0);
-#line 118 "mn-imap-mailbox.gob"
+#line 138 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (MN_IS_URI (uri), (gboolean )0);
-#line 291 "mn-imap-mailbox.c"
+#line 323 "mn-imap-mailbox.c"
 {
-#line 120 "mn-imap-mailbox.gob"
+#line 140 "mn-imap-mailbox.gob"
 	
     return MN_URI_IS_IMAP(uri);
   }}
-#line 297 "mn-imap-mailbox.c"
+#line 329 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 124 "mn-imap-mailbox.gob"
+#line 144 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_greeting_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 304 "mn-imap-mailbox.c"
+#line 336 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_greeting_cb"
-#line 124 "mn-imap-mailbox.gob"
+#line 144 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 124 "mn-imap-mailbox.gob"
+#line 144 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 124 "mn-imap-mailbox.gob"
+#line 144 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 313 "mn-imap-mailbox.c"
+#line 345 "mn-imap-mailbox.c"
 {
-#line 128 "mn-imap-mailbox.gob"
+#line 148 "mn-imap-mailbox.gob"
 	
     priv->session = session;
 
-    if (! response->tag && IS_OK(response))
+    if (response->continuation)
+      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+    else if (! response->tag && IS_OK(response))
       {
 	if (response->code)
 	  {
@@ -330,28 +364,28 @@ mn_imap_mailbox_handle_greeting_cb (MNClientSession * session, MNClientSessionRe
 	  : STATE_CAPABILITY;
       }
     else if (! response->tag && IS(response, "PREAUTH"))
-      return STATE_STATUS;
+      return self_session_check_mail(priv);
     else if (! response->tag && IS_BYE(response))
       return RESULT_ERROR_END;
     else
       return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
   }}
-#line 340 "mn-imap-mailbox.c"
+#line 374 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 153 "mn-imap-mailbox.gob"
+#line 175 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_capability_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 346 "mn-imap-mailbox.c"
+#line 380 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_capability_cb"
-#line 153 "mn-imap-mailbox.gob"
+#line 175 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 153 "mn-imap-mailbox.gob"
+#line 175 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 353 "mn-imap-mailbox.c"
+#line 387 "mn-imap-mailbox.c"
 {
-#line 156 "mn-imap-mailbox.gob"
+#line 178 "mn-imap-mailbox.gob"
 	
     g_strfreev(priv->capabilities);
     priv->capabilities = NULL;
@@ -361,26 +395,28 @@ mn_imap_mailbox_enter_capability_cb (MNClientSession * session, MNClientSessionP
 
     return self_session_write(priv, "CAPABILITY");
   }}
-#line 365 "mn-imap-mailbox.c"
+#line 399 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 166 "mn-imap-mailbox.gob"
+#line 188 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_capability_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 371 "mn-imap-mailbox.c"
+#line 405 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_capability_cb"
-#line 166 "mn-imap-mailbox.gob"
+#line 188 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 166 "mn-imap-mailbox.gob"
+#line 188 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 166 "mn-imap-mailbox.gob"
+#line 188 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 380 "mn-imap-mailbox.c"
+#line 414 "mn-imap-mailbox.c"
 {
-#line 170 "mn-imap-mailbox.gob"
+#line 192 "mn-imap-mailbox.gob"
 	
-    if (response->tag)
+    if (response->continuation)
+      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+    else if (response->tag)
       {
 	if (HAS_CURRENT_TAG(response, priv))
 	  {
@@ -404,22 +440,22 @@ mn_imap_mailbox_handle_capability_cb (MNClientSession * session, MNClientSession
     
     return RESULT_DEFAULT_HANDLER;
   }}
-#line 408 "mn-imap-mailbox.c"
+#line 444 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 196 "mn-imap-mailbox.gob"
+#line 220 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_starttls_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 414 "mn-imap-mailbox.c"
+#line 450 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_starttls_cb"
-#line 196 "mn-imap-mailbox.gob"
+#line 220 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 196 "mn-imap-mailbox.gob"
+#line 220 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 421 "mn-imap-mailbox.c"
+#line 457 "mn-imap-mailbox.c"
 {
-#line 199 "mn-imap-mailbox.gob"
+#line 223 "mn-imap-mailbox.gob"
 	
 #ifdef WITH_SSL
     return self_session_write(priv, "STARTTLS");
@@ -427,27 +463,29 @@ mn_imap_mailbox_enter_starttls_cb (MNClientSession * session, MNClientSessionPri
     g_return_val_if_reached(0);
 #endif /* WITH_SSL */
   }}
-#line 431 "mn-imap-mailbox.c"
+#line 467 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 207 "mn-imap-mailbox.gob"
+#line 231 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_starttls_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 437 "mn-imap-mailbox.c"
+#line 473 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_starttls_cb"
-#line 207 "mn-imap-mailbox.gob"
+#line 231 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 207 "mn-imap-mailbox.gob"
+#line 231 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 207 "mn-imap-mailbox.gob"
+#line 231 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 446 "mn-imap-mailbox.c"
+#line 482 "mn-imap-mailbox.c"
 {
-#line 211 "mn-imap-mailbox.gob"
+#line 235 "mn-imap-mailbox.gob"
 	
 #ifdef WITH_SSL
-    if (response->tag)
+    if (response->continuation)
+      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+    else if (response->tag)
       {
 	if (HAS_CURRENT_TAG(response, priv))
 	  {
@@ -470,22 +508,22 @@ mn_imap_mailbox_handle_starttls_cb (MNClientSession * session, MNClientSessionRe
     g_return_val_if_reached(0);
 #endif /* WITH_SSL */
   }}
-#line 474 "mn-imap-mailbox.c"
+#line 512 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 237 "mn-imap-mailbox.gob"
+#line 263 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_authenticate_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 480 "mn-imap-mailbox.c"
+#line 518 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_authenticate_cb"
-#line 237 "mn-imap-mailbox.gob"
+#line 263 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 237 "mn-imap-mailbox.gob"
+#line 263 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 487 "mn-imap-mailbox.c"
+#line 525 "mn-imap-mailbox.c"
 {
-#line 240 "mn-imap-mailbox.gob"
+#line 266 "mn-imap-mailbox.gob"
 	
 #ifdef WITH_SASL
     if (mn_client_session_sasl_authentication_start(priv->session,
@@ -500,24 +538,24 @@ mn_imap_mailbox_enter_authenticate_cb (MNClientSession * session, MNClientSessio
     g_return_val_if_reached(0);
 #endif /* WITH_SASL */
   }}
-#line 504 "mn-imap-mailbox.c"
+#line 542 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 255 "mn-imap-mailbox.gob"
+#line 281 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_authenticate_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 510 "mn-imap-mailbox.c"
+#line 548 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_authenticate_cb"
-#line 255 "mn-imap-mailbox.gob"
+#line 281 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 255 "mn-imap-mailbox.gob"
+#line 281 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 255 "mn-imap-mailbox.gob"
+#line 281 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 519 "mn-imap-mailbox.c"
+#line 557 "mn-imap-mailbox.c"
 {
-#line 259 "mn-imap-mailbox.gob"
+#line 285 "mn-imap-mailbox.gob"
 	
 #ifdef WITH_SASL
     if (response->tag)
@@ -527,7 +565,7 @@ mn_imap_mailbox_handle_authenticate_cb (MNClientSession * session, MNClientSessi
 	    if (IS_OK(response))
 	      {
 		return mn_client_session_sasl_authentication_done(session)
-		  ? STATE_STATUS
+		  ? self_session_check_mail(priv)
 		  : MN_CLIENT_SESSION_RESULT_END;
 	      }
 	    else if (IS_NO(response) || IS_BAD(response))
@@ -544,22 +582,22 @@ mn_imap_mailbox_handle_authenticate_cb (MNClientSession * session, MNClientSessi
     g_return_val_if_reached(0);
 #endif /* WITH_SASL */
   }}
-#line 548 "mn-imap-mailbox.c"
+#line 586 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 286 "mn-imap-mailbox.gob"
+#line 312 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_login_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 554 "mn-imap-mailbox.c"
+#line 592 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_login_cb"
-#line 286 "mn-imap-mailbox.gob"
+#line 312 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 286 "mn-imap-mailbox.gob"
+#line 312 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 561 "mn-imap-mailbox.c"
+#line 599 "mn-imap-mailbox.c"
 {
-#line 289 "mn-imap-mailbox.gob"
+#line 315 "mn-imap-mailbox.gob"
 	
     if (self_session_has_capability(priv, "LOGINDISABLED"))
       {
@@ -582,31 +620,33 @@ mn_imap_mailbox_enter_login_cb (MNClientSession * session, MNClientSessionPrivat
 	return result;
       }
   }}
-#line 586 "mn-imap-mailbox.c"
+#line 624 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 312 "mn-imap-mailbox.gob"
+#line 338 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_login_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 592 "mn-imap-mailbox.c"
+#line 630 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_login_cb"
-#line 312 "mn-imap-mailbox.gob"
+#line 338 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 312 "mn-imap-mailbox.gob"
+#line 338 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 312 "mn-imap-mailbox.gob"
+#line 338 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 601 "mn-imap-mailbox.c"
+#line 639 "mn-imap-mailbox.c"
 {
-#line 316 "mn-imap-mailbox.gob"
+#line 342 "mn-imap-mailbox.gob"
 	
-    if (response->tag)
+    if (response->continuation)
+      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+    else if (response->tag)
       {
 	if (HAS_CURRENT_TAG(response, priv))
 	  {
 	    if (IS_OK(response))
-	      return STATE_STATUS;
+	      return self_session_check_mail(priv);
 	    else if (IS_NO(response) || IS_BAD(response))
 	      return RESULT_ERROR_LOGOUT;
 	    else
@@ -616,23 +656,320 @@ mn_imap_mailbox_handle_login_cb (MNClientSession * session, MNClientSessionRespo
     
     return RESULT_DEFAULT_HANDLER;
   }}
-#line 620 "mn-imap-mailbox.c"
+#line 660 "mn-imap-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 361 "mn-imap-mailbox.gob"
+static int 
+mn_imap_mailbox_enter_examine_cb (MNClientSession * session, MNClientSessionPrivate * priv)
+#line 666 "mn-imap-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_examine_cb"
+#line 361 "mn-imap-mailbox.gob"
+	g_return_val_if_fail (session != NULL, (int )0);
+#line 361 "mn-imap-mailbox.gob"
+	g_return_val_if_fail (priv != NULL, (int )0);
+#line 673 "mn-imap-mailbox.c"
+{
+#line 364 "mn-imap-mailbox.gob"
+	
+#ifdef WITH_MIME
+    char *quoted_mailbox;
+    int result;
+
+    quoted_mailbox = self_quote(priv->mailbox->uri->path);
+    result = self_session_write(priv, "EXAMINE %s", quoted_mailbox);
+    g_free(quoted_mailbox);
+
+    return result;
+#else /* WITH_MIME */
+    g_return_val_if_reached(0);
+#endif
+  }}
+#line 690 "mn-imap-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 379 "mn-imap-mailbox.gob"
+static int 
+mn_imap_mailbox_handle_examine_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
+#line 696 "mn-imap-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_examine_cb"
+#line 379 "mn-imap-mailbox.gob"
+	g_return_val_if_fail (session != NULL, (int )0);
+#line 379 "mn-imap-mailbox.gob"
+	g_return_val_if_fail (response != NULL, (int )0);
+#line 379 "mn-imap-mailbox.gob"
+	g_return_val_if_fail (priv != NULL, (int )0);
+#line 705 "mn-imap-mailbox.c"
+{
+#line 383 "mn-imap-mailbox.gob"
+	
+#ifdef WITH_MIME
+    if (response->continuation)
+      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+    else if (response->tag)
+      {
+	if (HAS_CURRENT_TAG(response, priv))
+	  {
+	    if (IS_OK(response))
+	      return STATE_SEARCH;
+	    else if (IS_NO(response) || IS_BAD(response))
+	      return RESULT_ERROR_LOGOUT;
+	    else
+	      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+	  }
+      }
+
+    return RESULT_DEFAULT_HANDLER;
+#else /* WITH_MIME */
+    g_return_val_if_reached(0);
+#endif
+  }}
+#line 730 "mn-imap-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 406 "mn-imap-mailbox.gob"
+static int 
+mn_imap_mailbox_enter_search_cb (MNClientSession * session, MNClientSessionPrivate * priv)
+#line 736 "mn-imap-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_search_cb"
+#line 406 "mn-imap-mailbox.gob"
+	g_return_val_if_fail (session != NULL, (int )0);
+#line 406 "mn-imap-mailbox.gob"
+	g_return_val_if_fail (priv != NULL, (int )0);
+#line 743 "mn-imap-mailbox.c"
+{
+#line 409 "mn-imap-mailbox.gob"
+	
+#ifdef WITH_MIME
+    return self_session_write(priv, "SEARCH UNSEEN");
+#else
+    g_return_val_if_reached(0);
+#endif
+  }}
+#line 753 "mn-imap-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 417 "mn-imap-mailbox.gob"
+static int 
+mn_imap_mailbox_handle_search_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
+#line 759 "mn-imap-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_search_cb"
+#line 417 "mn-imap-mailbox.gob"
+	g_return_val_if_fail (session != NULL, (int )0);
+#line 417 "mn-imap-mailbox.gob"
+	g_return_val_if_fail (response != NULL, (int )0);
+#line 417 "mn-imap-mailbox.gob"
+	g_return_val_if_fail (priv != NULL, (int )0);
+#line 768 "mn-imap-mailbox.c"
+{
+#line 421 "mn-imap-mailbox.gob"
+	
+#ifdef WITH_MIME
+    if (response->continuation)
+      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+    else if (response->tag)
+      {
+	if (HAS_CURRENT_TAG(response, priv))
+	  {
+	    if (IS_OK(response))
+	      {
+		if (priv->search_received)
+		  {
+		    if (priv->fetch_set)
+		      return STATE_FETCH;
+		    else
+		      {
+			GDK_THREADS_ENTER();
+			mn_mailbox_set_has_new(priv->mailbox, FALSE);
+			mn_mailbox_set_messages(priv->mailbox, NULL);
+			gdk_flush();
+			GDK_THREADS_LEAVE();
+
+			return STATE_LOGOUT;
+		      }
+		  }
+		else		/* compliance error */
+		  return mn_client_session_error(session, _("server did not send search results"));
+	      }
+	    else if (IS_NO(response) || IS_BAD(response))
+	      return RESULT_ERROR_LOGOUT;
+	    else
+	      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+	  }
+      }
+    else if (IS(response, "SEARCH"))
+      {
+	if (response->arguments)
+	  {
+	    char **numbers;
+	    GString *string;
+	    int i;
+
+	    numbers = g_strsplit(response->arguments, " ", 0);
+	    string = g_string_new(NULL);
+
+	    for (i = 0; numbers[i]; i++)
+	      if (mn_str_isnumeric(numbers[i]))
+		{
+		  int n = atoi(numbers[i]);
+
+		  if (*string->str)
+		    g_string_append_c(string, ',');
+		  g_string_append(string, numbers[i]);
+
+		  priv->fetch_numbers = g_slist_append(priv->fetch_numbers, GINT_TO_POINTER(n));
+		}
+
+	    g_strfreev(numbers);
+	    priv->fetch_set = g_string_free(string, FALSE);
+	  }
+
+	priv->search_received = TRUE;
+	return MN_CLIENT_SESSION_RESULT_CONTINUE;
+      }
+
+    return RESULT_DEFAULT_HANDLER;
+#else /* WITH_MIME */
+    g_return_val_if_reached(0);
+#endif
+  }}
+#line 841 "mn-imap-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 492 "mn-imap-mailbox.gob"
+static int 
+mn_imap_mailbox_enter_fetch_cb (MNClientSession * session, MNClientSessionPrivate * priv)
+#line 847 "mn-imap-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_fetch_cb"
+#line 492 "mn-imap-mailbox.gob"
+	g_return_val_if_fail (session != NULL, (int )0);
+#line 492 "mn-imap-mailbox.gob"
+	g_return_val_if_fail (priv != NULL, (int )0);
+#line 854 "mn-imap-mailbox.c"
+{
+#line 495 "mn-imap-mailbox.gob"
+	
+#ifdef WITH_MIME
+    g_return_val_if_fail(priv->fetch_set != NULL, 0);
+    return self_session_write(priv, "FETCH %s BODY[HEADER]", priv->fetch_set);
+#else /* WITH_MIME */
+    g_return_val_if_reached(0);
+#endif
+  }}
+#line 865 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 333 "mn-imap-mailbox.gob"
+#line 504 "mn-imap-mailbox.gob"
+static int 
+mn_imap_mailbox_handle_fetch_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
+#line 871 "mn-imap-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_fetch_cb"
+#line 504 "mn-imap-mailbox.gob"
+	g_return_val_if_fail (session != NULL, (int )0);
+#line 504 "mn-imap-mailbox.gob"
+	g_return_val_if_fail (response != NULL, (int )0);
+#line 504 "mn-imap-mailbox.gob"
+	g_return_val_if_fail (priv != NULL, (int )0);
+#line 880 "mn-imap-mailbox.c"
+{
+#line 508 "mn-imap-mailbox.gob"
+	
+#ifdef WITH_MIME
+    if (response->continuation)
+      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+    else if (response->tag)
+      {
+	if (HAS_CURRENT_TAG(response, priv))
+	  {
+	    if (IS_OK(response))
+	      {
+		GSList *l;
+
+		MN_LIST_FOREACH(l, priv->fetch_numbers)
+		  if (! g_slist_find(priv->received_numbers, l->data))
+		    /* compliance error */
+		    return mn_client_session_error(session, _("server did not send all the messages we requested"));
+		    
+		GDK_THREADS_ENTER();
+		mn_mailbox_set_has_new(priv->mailbox, priv->messages != NULL);
+		mn_mailbox_set_messages(priv->mailbox, priv->messages);
+		gdk_flush();
+		GDK_THREADS_LEAVE();
+		
+		return STATE_LOGOUT;
+	      }
+	    else if (IS_NO(response) || IS_BAD(response))
+	      return RESULT_ERROR_LOGOUT;
+	    else
+	      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+	  }
+      }
+    else if (mn_str_isnumeric(response->response)
+	     && response->arguments
+	     && ! strncmp(response->arguments, "FETCH ", 6))
+      {
+	int n = atoi(response->response);
+
+	if (g_slist_find(priv->fetch_numbers, GINT_TO_POINTER(n)))
+	  {
+	    char *p;
+	    int len;
+
+	    priv->received_numbers = g_slist_append(priv->received_numbers, GINT_TO_POINTER(n));
+
+	    /* we assume the header string will be in literal form */
+
+	    p = strrchr(response->arguments, '{');
+	    if (p && sscanf(p, "{%d}", &len) == 1 && len >= 0)
+	      {
+		gconstpointer buf;
+		
+		buf = mn_client_session_read(session, len);
+		if (! buf)
+		  return MN_CLIENT_SESSION_RESULT_END;
+		
+		priv->messages = g_slist_append(priv->messages, mn_message_new_from_buffer(priv->mailbox->uri, buf, len));
+		
+		/* read end of line (after literal) */
+		if (! mn_client_session_read_line(session))
+		  return MN_CLIENT_SESSION_RESULT_END;
+	      }
+	    else
+	      priv->messages = g_slist_append(priv->messages, mn_message_new_from_error(priv->mailbox->uri, _("unable to fetch message")));
+
+	    return MN_CLIENT_SESSION_RESULT_CONTINUE;
+	  }
+      }
+	
+    return RESULT_DEFAULT_HANDLER;
+#else /* WITH_MIME */
+    g_return_val_if_reached(0);
+#endif
+  }}
+#line 956 "mn-imap-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 582 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_status_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 626 "mn-imap-mailbox.c"
+#line 962 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_status_cb"
-#line 333 "mn-imap-mailbox.gob"
+#line 582 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 333 "mn-imap-mailbox.gob"
+#line 582 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 633 "mn-imap-mailbox.c"
+#line 969 "mn-imap-mailbox.c"
 {
-#line 336 "mn-imap-mailbox.gob"
+#line 585 "mn-imap-mailbox.gob"
 	
+#ifndef WITH_MIME
     char *quoted_mailbox;
     int result;
 
@@ -641,27 +978,33 @@ mn_imap_mailbox_enter_status_cb (MNClientSession * session, MNClientSessionPriva
     g_free(quoted_mailbox);
 
     return result;
+#else /* ! WITH_MIME */
+    g_return_val_if_reached(0);
+#endif
   }}
-#line 646 "mn-imap-mailbox.c"
+#line 986 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 347 "mn-imap-mailbox.gob"
+#line 600 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_status_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 652 "mn-imap-mailbox.c"
+#line 992 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_status_cb"
-#line 347 "mn-imap-mailbox.gob"
+#line 600 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 347 "mn-imap-mailbox.gob"
+#line 600 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 347 "mn-imap-mailbox.gob"
+#line 600 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 661 "mn-imap-mailbox.c"
+#line 1001 "mn-imap-mailbox.c"
 {
-#line 351 "mn-imap-mailbox.gob"
+#line 604 "mn-imap-mailbox.gob"
 	
-    if (response->tag)
+#ifndef WITH_MIME
+    if (response->continuation)
+      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+    else if (response->tag)
       {
 	if (HAS_CURRENT_TAG(response, priv))
 	  {
@@ -698,46 +1041,51 @@ mn_imap_mailbox_handle_status_cb (MNClientSession * session, MNClientSessionResp
       }
     
     return RESULT_DEFAULT_HANDLER;
+#else /* ! WITH_MIME */
+    g_return_val_if_reached(0);
+#endif
   }}
-#line 703 "mn-imap-mailbox.c"
+#line 1049 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 391 "mn-imap-mailbox.gob"
+#line 650 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_logout_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 709 "mn-imap-mailbox.c"
+#line 1055 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_logout_cb"
-#line 391 "mn-imap-mailbox.gob"
+#line 650 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 391 "mn-imap-mailbox.gob"
+#line 650 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 716 "mn-imap-mailbox.c"
+#line 1062 "mn-imap-mailbox.c"
 {
-#line 394 "mn-imap-mailbox.gob"
+#line 653 "mn-imap-mailbox.gob"
 	
     return self_session_write(priv, "LOGOUT");
   }}
-#line 722 "mn-imap-mailbox.c"
+#line 1068 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 398 "mn-imap-mailbox.gob"
+#line 657 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_logout_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 728 "mn-imap-mailbox.c"
+#line 1074 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_logout_cb"
-#line 398 "mn-imap-mailbox.gob"
+#line 657 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 398 "mn-imap-mailbox.gob"
+#line 657 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 398 "mn-imap-mailbox.gob"
+#line 657 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 737 "mn-imap-mailbox.c"
+#line 1083 "mn-imap-mailbox.c"
 {
-#line 402 "mn-imap-mailbox.gob"
+#line 661 "mn-imap-mailbox.gob"
 	
-    if (response->tag && HAS_CURRENT_TAG(response, priv))
+    if (response->continuation)
+      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+    else if (response->tag && HAS_CURRENT_TAG(response, priv))
       {
 	if (IS_OK(response))
 	  return MN_CLIENT_SESSION_RESULT_END;
@@ -749,25 +1097,25 @@ mn_imap_mailbox_handle_logout_cb (MNClientSession * session, MNClientSessionResp
     else
       return MN_CLIENT_SESSION_RESULT_CONTINUE;
   }}
-#line 753 "mn-imap-mailbox.c"
+#line 1101 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 416 "mn-imap-mailbox.gob"
+#line 677 "mn-imap-mailbox.gob"
 static void 
-___11_mn_imap_mailbox_impl_threaded_check (MNMailbox * mailbox G_GNUC_UNUSED)
-#line 759 "mn-imap-mailbox.c"
+___17_mn_imap_mailbox_impl_threaded_check (MNMailbox * mailbox G_GNUC_UNUSED)
+#line 1107 "mn-imap-mailbox.c"
 #define PARENT_HANDLER(___mailbox) \
 	{ if(MN_MAILBOX_CLASS(parent_class)->impl_threaded_check) \
 		(* MN_MAILBOX_CLASS(parent_class)->impl_threaded_check)(___mailbox); }
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::impl_threaded_check"
-#line 416 "mn-imap-mailbox.gob"
+#line 677 "mn-imap-mailbox.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 416 "mn-imap-mailbox.gob"
+#line 677 "mn-imap-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 769 "mn-imap-mailbox.c"
+#line 1117 "mn-imap-mailbox.c"
 {
-#line 418 "mn-imap-mailbox.gob"
+#line 679 "mn-imap-mailbox.gob"
 	
     Self *self = SELF(mailbox);
     MNClientSessionState states[] = {
@@ -780,7 +1128,13 @@ ___11_mn_imap_mailbox_impl_threaded_check (MNMailbox * mailbox G_GNUC_UNUSED)
       { 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 },
+      { STATE_FETCH,		self_enter_fetch_cb,		self_handle_fetch_cb },
+#else /* WITH_MIME */
       { STATE_STATUS,		self_enter_status_cb,		self_handle_status_cb },
+#endif
       { STATE_LOGOUT,		self_enter_logout_cb,		self_handle_logout_cb },
       
       MN_CLIENT_SESSION_STATES_END
@@ -822,50 +1176,56 @@ ___11_mn_imap_mailbox_impl_threaded_check (MNMailbox * mailbox G_GNUC_UNUSED)
     gdk_flush();
     GDK_THREADS_LEAVE();
     
-    g_free(priv.tag);
     g_strfreev(priv.capabilities);
     eel_g_slist_free_deep(priv.auth_mechanisms);
+
+#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);
+#endif
   }}
-#line 830 "mn-imap-mailbox.c"
+#line 1190 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 477 "mn-imap-mailbox.gob"
+#line 750 "mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_notice_cb (MNClientSession * session, const char * str, MNClientSessionPrivate * priv)
-#line 837 "mn-imap-mailbox.c"
+#line 1197 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::notice_cb"
-#line 477 "mn-imap-mailbox.gob"
+#line 750 "mn-imap-mailbox.gob"
 	g_return_if_fail (session != NULL);
-#line 477 "mn-imap-mailbox.gob"
+#line 750 "mn-imap-mailbox.gob"
 	g_return_if_fail (str != NULL);
-#line 477 "mn-imap-mailbox.gob"
+#line 750 "mn-imap-mailbox.gob"
 	g_return_if_fail (priv != NULL);
-#line 846 "mn-imap-mailbox.c"
+#line 1206 "mn-imap-mailbox.c"
 {
-#line 481 "mn-imap-mailbox.gob"
+#line 754 "mn-imap-mailbox.gob"
 	
     mn_mailbox_notice(priv->mailbox, "%s", str);
   }}
-#line 852 "mn-imap-mailbox.c"
+#line 1212 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 485 "mn-imap-mailbox.gob"
+#line 758 "mn-imap-mailbox.gob"
 static MNClientSessionResponse * 
 mn_imap_mailbox_response_new_cb (MNClientSession * session, const char * input, MNClientSessionPrivate * priv)
-#line 858 "mn-imap-mailbox.c"
+#line 1218 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::response_new_cb"
-#line 485 "mn-imap-mailbox.gob"
+#line 758 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (MNClientSessionResponse * )0);
-#line 485 "mn-imap-mailbox.gob"
+#line 758 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (input != NULL, (MNClientSessionResponse * )0);
-#line 485 "mn-imap-mailbox.gob"
+#line 758 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (MNClientSessionResponse * )0);
-#line 867 "mn-imap-mailbox.c"
+#line 1227 "mn-imap-mailbox.c"
 {
-#line 489 "mn-imap-mailbox.gob"
+#line 762 "mn-imap-mailbox.gob"
 	
     MNClientSessionResponse *response = NULL;
 
@@ -912,24 +1272,24 @@ mn_imap_mailbox_response_new_cb (MNClientSession * session, const char * input, 
     
     return response;
   }}
-#line 916 "mn-imap-mailbox.c"
+#line 1276 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 536 "mn-imap-mailbox.gob"
+#line 809 "mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_response_free_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 922 "mn-imap-mailbox.c"
+#line 1282 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::response_free_cb"
-#line 536 "mn-imap-mailbox.gob"
+#line 809 "mn-imap-mailbox.gob"
 	g_return_if_fail (session != NULL);
-#line 536 "mn-imap-mailbox.gob"
+#line 809 "mn-imap-mailbox.gob"
 	g_return_if_fail (response != NULL);
-#line 536 "mn-imap-mailbox.gob"
+#line 809 "mn-imap-mailbox.gob"
 	g_return_if_fail (priv != NULL);
-#line 931 "mn-imap-mailbox.c"
+#line 1291 "mn-imap-mailbox.c"
 {
-#line 540 "mn-imap-mailbox.gob"
+#line 813 "mn-imap-mailbox.gob"
 	
     g_free(response->continuation);
     g_free(response->tag);
@@ -938,24 +1298,24 @@ mn_imap_mailbox_response_free_cb (MNClientSession * session, MNClientSessionResp
     g_free(response->arguments);
     g_free(response);
   }}
-#line 942 "mn-imap-mailbox.c"
+#line 1302 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 549 "mn-imap-mailbox.gob"
+#line 822 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_custom_handler_cb (MNClientSession * session, MNClientSessionResponse * response, int result, MNClientSessionPrivate * priv)
-#line 948 "mn-imap-mailbox.c"
+#line 1308 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::custom_handler_cb"
-#line 549 "mn-imap-mailbox.gob"
+#line 822 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 549 "mn-imap-mailbox.gob"
+#line 822 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 549 "mn-imap-mailbox.gob"
+#line 822 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 957 "mn-imap-mailbox.c"
+#line 1317 "mn-imap-mailbox.c"
 {
-#line 554 "mn-imap-mailbox.gob"
+#line 827 "mn-imap-mailbox.gob"
 	
     switch (result)
       {
@@ -977,44 +1337,44 @@ mn_imap_mailbox_custom_handler_cb (MNClientSession * session, MNClientSessionRes
 	g_return_val_if_reached(0);
       }
   }}
-#line 981 "mn-imap-mailbox.c"
+#line 1341 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 576 "mn-imap-mailbox.gob"
+#line 849 "mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_session_set_error_from_arguments (MNClientSessionPrivate * priv, MNClientSessionResponse * response)
-#line 987 "mn-imap-mailbox.c"
+#line 1347 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_set_error_from_arguments"
-#line 576 "mn-imap-mailbox.gob"
+#line 849 "mn-imap-mailbox.gob"
 	g_return_if_fail (priv != NULL);
-#line 576 "mn-imap-mailbox.gob"
+#line 849 "mn-imap-mailbox.gob"
 	g_return_if_fail (response != NULL);
-#line 994 "mn-imap-mailbox.c"
+#line 1354 "mn-imap-mailbox.c"
 {
-#line 579 "mn-imap-mailbox.gob"
+#line 852 "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 1003 "mn-imap-mailbox.c"
+#line 1363 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 586 "mn-imap-mailbox.gob"
+#line 859 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_session_write (MNClientSessionPrivate * priv, const char * format, ...)
-#line 1009 "mn-imap-mailbox.c"
+#line 1369 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_write"
-#line 586 "mn-imap-mailbox.gob"
+#line 859 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 586 "mn-imap-mailbox.gob"
+#line 859 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (format != NULL, (int )0);
-#line 1016 "mn-imap-mailbox.c"
+#line 1376 "mn-imap-mailbox.c"
 {
-#line 590 "mn-imap-mailbox.gob"
+#line 863 "mn-imap-mailbox.gob"
 	
     va_list args;
     char *command;
@@ -1026,29 +1386,27 @@ mn_imap_mailbox_session_write (MNClientSessionPrivate * priv, const char * forma
     
     if (priv->numeric_tag == 1000)
       priv->numeric_tag = 0;
-
-    g_free(priv->tag);
-    priv->tag = g_strdup_printf("a%03i", priv->numeric_tag++);
+    sprintf(priv->tag, "a%03i", priv->numeric_tag++);
 
     result = mn_client_session_write(priv->session, "%s %s", priv->tag, command);
     g_free(command);
 
     return result;
   }}
-#line 1039 "mn-imap-mailbox.c"
+#line 1397 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 611 "mn-imap-mailbox.gob"
+#line 882 "mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_session_parse_capabilities (MNClientSessionPrivate * priv, const char * capabilities)
-#line 1045 "mn-imap-mailbox.c"
+#line 1403 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_parse_capabilities"
-#line 611 "mn-imap-mailbox.gob"
+#line 882 "mn-imap-mailbox.gob"
 	g_return_if_fail (priv != NULL);
-#line 1050 "mn-imap-mailbox.c"
+#line 1408 "mn-imap-mailbox.c"
 {
-#line 614 "mn-imap-mailbox.gob"
+#line 885 "mn-imap-mailbox.gob"
 	
     if (capabilities)
       {
@@ -1063,22 +1421,22 @@ mn_imap_mailbox_session_parse_capabilities (MNClientSessionPrivate * priv, const
     else
       priv->capabilities = g_new0(char *, 1);
   }}
-#line 1067 "mn-imap-mailbox.c"
+#line 1425 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 629 "mn-imap-mailbox.gob"
+#line 900 "mn-imap-mailbox.gob"
 static gboolean 
 mn_imap_mailbox_session_has_capability (MNClientSessionPrivate * priv, const char * capability)
-#line 1073 "mn-imap-mailbox.c"
+#line 1431 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_has_capability"
-#line 629 "mn-imap-mailbox.gob"
+#line 900 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (gboolean )0);
-#line 629 "mn-imap-mailbox.gob"
+#line 900 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (capability != NULL, (gboolean )0);
-#line 1080 "mn-imap-mailbox.c"
+#line 1438 "mn-imap-mailbox.c"
 {
-#line 632 "mn-imap-mailbox.gob"
+#line 903 "mn-imap-mailbox.gob"
 	
     int i;
 
@@ -1090,20 +1448,20 @@ mn_imap_mailbox_session_has_capability (MNClientSessionPrivate * priv, const cha
     
     return FALSE;
   }}
-#line 1094 "mn-imap-mailbox.c"
+#line 1452 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 644 "mn-imap-mailbox.gob"
+#line 915 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_session_after_capability (MNClientSessionPrivate * priv)
-#line 1100 "mn-imap-mailbox.c"
+#line 1458 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_after_capability"
-#line 644 "mn-imap-mailbox.gob"
+#line 915 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1105 "mn-imap-mailbox.c"
+#line 1463 "mn-imap-mailbox.c"
 {
-#line 646 "mn-imap-mailbox.gob"
+#line 917 "mn-imap-mailbox.gob"
 	
 #ifdef WITH_SSL
     if (MN_URI_IS_INBAND_SSL(priv->mailbox->uri)
@@ -1122,20 +1480,20 @@ mn_imap_mailbox_session_after_capability (MNClientSessionPrivate * priv)
 #endif /* WITH_SSL */
       return self_session_authenticate(priv);
   }}
-#line 1126 "mn-imap-mailbox.c"
+#line 1484 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 665 "mn-imap-mailbox.gob"
+#line 936 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_session_authenticate (MNClientSessionPrivate * priv)
-#line 1132 "mn-imap-mailbox.c"
+#line 1490 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_authenticate"
-#line 665 "mn-imap-mailbox.gob"
+#line 936 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1137 "mn-imap-mailbox.c"
+#line 1495 "mn-imap-mailbox.c"
 {
-#line 667 "mn-imap-mailbox.gob"
+#line 938 "mn-imap-mailbox.gob"
 	
     if (priv->mailbox->uri->authmech)
       {
@@ -1164,20 +1522,20 @@ mn_imap_mailbox_session_authenticate (MNClientSessionPrivate * priv)
 	return STATE_LOGIN;
       }
   }}
-#line 1168 "mn-imap-mailbox.c"
+#line 1526 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 696 "mn-imap-mailbox.gob"
+#line 967 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv)
-#line 1174 "mn-imap-mailbox.c"
+#line 1532 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_authenticate_fallback"
-#line 696 "mn-imap-mailbox.gob"
+#line 967 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1179 "mn-imap-mailbox.c"
+#line 1537 "mn-imap-mailbox.c"
 {
-#line 698 "mn-imap-mailbox.gob"
+#line 969 "mn-imap-mailbox.gob"
 	
     if (! priv->mailbox->uri->authmech)
       {
@@ -1187,7 +1545,28 @@ mn_imap_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv)
 
     return mn_client_session_error(priv->session, _("authentication failed"));
   }}
-#line 1191 "mn-imap-mailbox.c"
+#line 1549 "mn-imap-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 979 "mn-imap-mailbox.gob"
+static int 
+mn_imap_mailbox_session_check_mail (MNClientSessionPrivate * priv)
+#line 1555 "mn-imap-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_check_mail"
+#line 979 "mn-imap-mailbox.gob"
+	g_return_val_if_fail (priv != NULL, (int )0);
+#line 1560 "mn-imap-mailbox.c"
+{
+#line 981 "mn-imap-mailbox.gob"
+	
+#ifdef WITH_MIME
+    return STATE_EXAMINE;
+#else
+    return STATE_STATUS;
+#endif
+  }}
+#line 1570 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
 /**
@@ -1198,17 +1577,17 @@ mn_imap_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv)
  *
  * Return value: the quoted string.
  **/
-#line 716 "mn-imap-mailbox.gob"
+#line 997 "mn-imap-mailbox.gob"
 static char * 
 mn_imap_mailbox_quote (const char * str)
-#line 1205 "mn-imap-mailbox.c"
+#line 1584 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::quote"
-#line 716 "mn-imap-mailbox.gob"
+#line 997 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (str != NULL, (char * )0);
-#line 1210 "mn-imap-mailbox.c"
+#line 1589 "mn-imap-mailbox.c"
 {
-#line 718 "mn-imap-mailbox.gob"
+#line 999 "mn-imap-mailbox.gob"
 	
     GString *quoted;
     int i;
@@ -1223,5 +1602,5 @@ mn_imap_mailbox_quote (const char * str)
 
     return g_string_free(quoted, FALSE);
   }}
-#line 1227 "mn-imap-mailbox.c"
+#line 1606 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-imap-mailbox.gob b/src/mn-imap-mailbox.gob
@@ -19,6 +19,8 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+requires 2.0.10
+
 %headertop{
 #include "mn-mailbox.h"
 %}
@@ -27,12 +29,16 @@
 #include <stdio.h>
 #include <string.h>
 #include <stdarg.h>
+#include <stdlib.h>
 #include <glib/gi18n-lib.h>
 #include <libgnomevfs/gnome-vfs-utils.h>
 #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
 
 #define HAS_CURRENT_TAG(response, priv)	(! strcmp((response)->tag, (priv)->tag))
 #define IS(response, token)		(! strcmp((response)->response, (token)))
@@ -52,7 +58,13 @@
     STATE_AUTHENTICATE,
 #endif
     STATE_LOGIN,
+#ifdef WITH_MIME
+    STATE_EXAMINE,
+    STATE_SEARCH,
+    STATE_FETCH,
+#else /* WITH_MIME */
     STATE_STATUS,
+#endif
     STATE_LOGOUT
   };
   
@@ -69,10 +81,18 @@
     MNIMAPMailbox	*self;
     MNClientSession	*session;
     int			numeric_tag;
-    char		*tag;
+    char		tag[5];
     char		**capabilities;
     GSList		*auth_mechanisms;
+#ifdef WITH_MIME
+    gboolean		search_received;
+    GSList		*fetch_numbers;
+    char		*fetch_set;
+    GSList		*received_numbers;
+    GSList		*messages;
+#else /* WITH_MIME */
     gboolean		status_received;
+#endif
 #ifdef WITH_SSL
     gboolean		starttls_completed;
 #endif
@@ -128,7 +148,9 @@ class MN:IMAP:Mailbox from MN:Mailbox
   {
     priv->session = session;
 
-    if (! response->tag && IS_OK(response))
+    if (response->continuation)
+      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+    else if (! response->tag && IS_OK(response))
       {
 	if (response->code)
 	  {
@@ -143,7 +165,7 @@ class MN:IMAP:Mailbox from MN:Mailbox
 	  : STATE_CAPABILITY;
       }
     else if (! response->tag && IS(response, "PREAUTH"))
-      return STATE_STATUS;
+      return self_session_check_mail(priv);
     else if (! response->tag && IS_BYE(response))
       return RESULT_ERROR_END;
     else
@@ -168,7 +190,9 @@ class MN:IMAP:Mailbox from MN:Mailbox
 			  MNClientSessionResponse *response (check null),
 			  MNClientSessionPrivate *priv (check null))
   {
-    if (response->tag)
+    if (response->continuation)
+      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+    else if (response->tag)
       {
 	if (HAS_CURRENT_TAG(response, priv))
 	  {
@@ -210,7 +234,9 @@ class MN:IMAP:Mailbox from MN:Mailbox
 			MNClientSessionPrivate *priv (check null))
   {
 #ifdef WITH_SSL
-    if (response->tag)
+    if (response->continuation)
+      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+    else if (response->tag)
       {
 	if (HAS_CURRENT_TAG(response, priv))
 	  {
@@ -265,7 +291,7 @@ class MN:IMAP:Mailbox from MN:Mailbox
 	    if (IS_OK(response))
 	      {
 		return mn_client_session_sasl_authentication_done(session)
-		  ? STATE_STATUS
+		  ? self_session_check_mail(priv)
 		  : MN_CLIENT_SESSION_RESULT_END;
 	      }
 	    else if (IS_NO(response) || IS_BAD(response))
@@ -314,12 +340,14 @@ class MN:IMAP:Mailbox from MN:Mailbox
 		     MNClientSessionResponse *response (check null),
 		     MNClientSessionPrivate *priv (check null))
   {
-    if (response->tag)
+    if (response->continuation)
+      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+    else if (response->tag)
       {
 	if (HAS_CURRENT_TAG(response, priv))
 	  {
 	    if (IS_OK(response))
-	      return STATE_STATUS;
+	      return self_session_check_mail(priv);
 	    else if (IS_NO(response) || IS_BAD(response))
 	      return RESULT_ERROR_LOGOUT;
 	    else
@@ -331,9 +359,231 @@ class MN:IMAP:Mailbox from MN:Mailbox
   }
   
   private int
+    enter_examine_cb (MNClientSession *session (check null),
+		      MNClientSessionPrivate *priv (check null))
+  {
+#ifdef WITH_MIME
+    char *quoted_mailbox;
+    int result;
+
+    quoted_mailbox = self_quote(priv->mailbox->uri->path);
+    result = self_session_write(priv, "EXAMINE %s", quoted_mailbox);
+    g_free(quoted_mailbox);
+
+    return result;
+#else /* WITH_MIME */
+    g_return_val_if_reached(0);
+#endif
+  }
+  
+  private int
+    handle_examine_cb (MNClientSession *session (check null),
+		       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)
+      {
+	if (HAS_CURRENT_TAG(response, priv))
+	  {
+	    if (IS_OK(response))
+	      return STATE_SEARCH;
+	    else if (IS_NO(response) || IS_BAD(response))
+	      return RESULT_ERROR_LOGOUT;
+	    else
+	      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+	  }
+      }
+
+    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
+    return self_session_write(priv, "SEARCH UNSEEN");
+#else
+    g_return_val_if_reached(0);
+#endif
+  }
+  
+  private int
+    handle_search_cb (MNClientSession *session (check null),
+		      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)
+      {
+	if (HAS_CURRENT_TAG(response, priv))
+	  {
+	    if (IS_OK(response))
+	      {
+		if (priv->search_received)
+		  {
+		    if (priv->fetch_set)
+		      return STATE_FETCH;
+		    else
+		      {
+			GDK_THREADS_ENTER();
+			mn_mailbox_set_has_new(priv->mailbox, FALSE);
+			mn_mailbox_set_messages(priv->mailbox, NULL);
+			gdk_flush();
+			GDK_THREADS_LEAVE();
+
+			return STATE_LOGOUT;
+		      }
+		  }
+		else		/* compliance error */
+		  return mn_client_session_error(session, _("server did not send search results"));
+	      }
+	    else if (IS_NO(response) || IS_BAD(response))
+	      return RESULT_ERROR_LOGOUT;
+	    else
+	      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+	  }
+      }
+    else if (IS(response, "SEARCH"))
+      {
+	if (response->arguments)
+	  {
+	    char **numbers;
+	    GString *string;
+	    int i;
+
+	    numbers = g_strsplit(response->arguments, " ", 0);
+	    string = g_string_new(NULL);
+
+	    for (i = 0; numbers[i]; i++)
+	      if (mn_str_isnumeric(numbers[i]))
+		{
+		  int n = atoi(numbers[i]);
+
+		  if (*string->str)
+		    g_string_append_c(string, ',');
+		  g_string_append(string, numbers[i]);
+
+		  priv->fetch_numbers = g_slist_append(priv->fetch_numbers, GINT_TO_POINTER(n));
+		}
+
+	    g_strfreev(numbers);
+	    priv->fetch_set = g_string_free(string, FALSE);
+	  }
+
+	priv->search_received = TRUE;
+	return MN_CLIENT_SESSION_RESULT_CONTINUE;
+      }
+
+    return RESULT_DEFAULT_HANDLER;
+#else /* WITH_MIME */
+    g_return_val_if_reached(0);
+#endif
+  }
+  
+  private int
+    enter_fetch_cb (MNClientSession *session (check null),
+		    MNClientSessionPrivate *priv (check null))
+  {
+#ifdef WITH_MIME
+    g_return_val_if_fail(priv->fetch_set != NULL, 0);
+    return self_session_write(priv, "FETCH %s BODY[HEADER]", priv->fetch_set);
+#else /* WITH_MIME */
+    g_return_val_if_reached(0);
+#endif
+  }
+  
+  private int
+    handle_fetch_cb (MNClientSession *session (check null),
+		     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)
+      {
+	if (HAS_CURRENT_TAG(response, priv))
+	  {
+	    if (IS_OK(response))
+	      {
+		GSList *l;
+
+		MN_LIST_FOREACH(l, priv->fetch_numbers)
+		  if (! g_slist_find(priv->received_numbers, l->data))
+		    /* compliance error */
+		    return mn_client_session_error(session, _("server did not send all the messages we requested"));
+		    
+		GDK_THREADS_ENTER();
+		mn_mailbox_set_has_new(priv->mailbox, priv->messages != NULL);
+		mn_mailbox_set_messages(priv->mailbox, priv->messages);
+		gdk_flush();
+		GDK_THREADS_LEAVE();
+		
+		return STATE_LOGOUT;
+	      }
+	    else if (IS_NO(response) || IS_BAD(response))
+	      return RESULT_ERROR_LOGOUT;
+	    else
+	      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+	  }
+      }
+    else if (mn_str_isnumeric(response->response)
+	     && response->arguments
+	     && ! strncmp(response->arguments, "FETCH ", 6))
+      {
+	int n = atoi(response->response);
+
+	if (g_slist_find(priv->fetch_numbers, GINT_TO_POINTER(n)))
+	  {
+	    char *p;
+	    int len;
+
+	    priv->received_numbers = g_slist_append(priv->received_numbers, GINT_TO_POINTER(n));
+
+	    /* we assume the header string will be in literal form */
+
+	    p = strrchr(response->arguments, '{');
+	    if (p && sscanf(p, "{%d}", &len) == 1 && len >= 0)
+	      {
+		gconstpointer buf;
+		
+		buf = mn_client_session_read(session, len);
+		if (! buf)
+		  return MN_CLIENT_SESSION_RESULT_END;
+		
+		priv->messages = g_slist_append(priv->messages, mn_message_new_from_buffer(priv->mailbox->uri, buf, len));
+		
+		/* read end of line (after literal) */
+		if (! mn_client_session_read_line(session))
+		  return MN_CLIENT_SESSION_RESULT_END;
+	      }
+	    else
+	      priv->messages = g_slist_append(priv->messages, mn_message_new_from_error(priv->mailbox->uri, _("unable to fetch message")));
+
+	    return MN_CLIENT_SESSION_RESULT_CONTINUE;
+	  }
+      }
+	
+    return RESULT_DEFAULT_HANDLER;
+#else /* WITH_MIME */
+    g_return_val_if_reached(0);
+#endif
+  }
+  
+  private int
     enter_status_cb (MNClientSession *session (check null),
 		     MNClientSessionPrivate *priv (check null))
   {
+#ifndef WITH_MIME
     char *quoted_mailbox;
     int result;
 
@@ -342,6 +592,9 @@ class MN:IMAP:Mailbox from MN:Mailbox
     g_free(quoted_mailbox);
 
     return result;
+#else /* ! WITH_MIME */
+    g_return_val_if_reached(0);
+#endif
   }
   
   private int
@@ -349,7 +602,10 @@ class MN:IMAP:Mailbox from MN:Mailbox
 		      MNClientSessionResponse *response (check null),
 		      MNClientSessionPrivate *priv (check null))
   {
-    if (response->tag)
+#ifndef WITH_MIME
+    if (response->continuation)
+      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+    else if (response->tag)
       {
 	if (HAS_CURRENT_TAG(response, priv))
 	  {
@@ -386,8 +642,11 @@ class MN:IMAP:Mailbox from MN:Mailbox
       }
     
     return RESULT_DEFAULT_HANDLER;
+#else /* ! WITH_MIME */
+    g_return_val_if_reached(0);
+#endif
   }
-  
+
   private int
     enter_logout_cb (MNClientSession *session (check null),
 		     MNClientSessionPrivate *priv (check null))
@@ -400,7 +659,9 @@ class MN:IMAP:Mailbox from MN:Mailbox
 		      MNClientSessionResponse *response (check null),
 		      MNClientSessionPrivate *priv (check null))
   {
-    if (response->tag && HAS_CURRENT_TAG(response, priv))
+    if (response->continuation)
+      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+    else if (response->tag && HAS_CURRENT_TAG(response, priv))
       {
 	if (IS_OK(response))
 	  return MN_CLIENT_SESSION_RESULT_END;
@@ -427,7 +688,13 @@ class MN:IMAP:Mailbox from MN: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 },
+      { STATE_FETCH,		self_enter_fetch_cb,		self_handle_fetch_cb },
+#else /* WITH_MIME */
       { STATE_STATUS,		self_enter_status_cb,		self_handle_status_cb },
+#endif
       { STATE_LOGOUT,		self_enter_logout_cb,		self_handle_logout_cb },
       
       MN_CLIENT_SESSION_STATES_END
@@ -469,9 +736,15 @@ class MN:IMAP:Mailbox from MN:Mailbox
     gdk_flush();
     GDK_THREADS_LEAVE();
     
-    g_free(priv.tag);
     g_strfreev(priv.capabilities);
     eel_g_slist_free_deep(priv.auth_mechanisms);
+
+#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);
+#endif
   }
   
   private void
@@ -598,9 +871,7 @@ class MN:IMAP:Mailbox from MN:Mailbox
     
     if (priv->numeric_tag == 1000)
       priv->numeric_tag = 0;
-
-    g_free(priv->tag);
-    priv->tag = g_strdup_printf("a%03i", priv->numeric_tag++);
+    sprintf(priv->tag, "a%03i", priv->numeric_tag++);
 
     result = mn_client_session_write(priv->session, "%s %s", priv->tag, command);
     g_free(command);
@@ -705,6 +976,16 @@ class MN:IMAP:Mailbox from MN:Mailbox
     return mn_client_session_error(priv->session, _("authentication failed"));
   }
 
+  private int
+    session_check_mail (MNClientSessionPrivate *priv (check null))
+  {
+#ifdef WITH_MIME
+    return STATE_EXAMINE;
+#else
+    return STATE_STATUS;
+#endif
+  }
+
   /**
    * quote:
    * @str: the string to quote
diff --git a/src/mn-imap-mailbox.h b/src/mn-imap-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
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.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (do not edit directly) */
 
 #ifndef __MN_MAIL_ICON_PRIVATE_H__
 #define __MN_MAIL_ICON_PRIVATE_H__
@@ -10,11 +10,9 @@ extern "C" {
 #endif /* __cplusplus */
 
 struct _MNMailIconPrivate {
-#line 37 "mn-mail-icon.gob"
+#line 39 "mn-mail-icon.gob"
 	GtkWidget * menu;
-#line 38 "mn-mail-icon.gob"
-	GtkWidget * run_item;
-#line 18 "mn-mail-icon-private.h"
+#line 16 "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.9) on Thu Sep  9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct  6 19:29:53 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 9
+#define GOB_VERSION_PATCHLEVEL 10
 
 #define selfp (self->_priv)
 
@@ -23,7 +23,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 24 "mn-mail-icon.gob"
+#line 26 "mn-mail-icon.gob"
 
 #include "config.h"
 #include <gdk/gdkkeysyms.h>
@@ -47,7 +47,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_run (MNMailIcon * self) G_GNUC_UNUSED;
+static void mn_mail_icon_activate_summary (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;
@@ -65,9 +65,9 @@ static gboolean mn_mail_icon_popup_menu_h (GtkWidget * widget, gpointer user_dat
 #define self_connect__activate(object,func,data)	mn_mail_icon_connect__activate((object),(func),(data))
 #define self_connect_after__activate(object,func,data)	mn_mail_icon_connect_after__activate((object),(func),(data))
 #define self_connect_data__activate(object,func,data,destroy_data,flags)	mn_mail_icon_connect_data__activate((object),(func),(data),(destroy_data),(flags))
-#define self_connect__activate_run(object,func,data)	mn_mail_icon_connect__activate_run((object),(func),(data))
-#define self_connect_after__activate_run(object,func,data)	mn_mail_icon_connect_after__activate_run((object),(func),(data))
-#define self_connect_data__activate_run(object,func,data,destroy_data,flags)	mn_mail_icon_connect_data__activate_run((object),(func),(data),(destroy_data),(flags))
+#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_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))
@@ -86,7 +86,7 @@ static gboolean mn_mail_icon_popup_menu_h (GtkWidget * widget, gpointer user_dat
 
 enum {
 	ACTIVATE_SIGNAL,
-	ACTIVATE_RUN_SIGNAL,
+	ACTIVATE_SUMMARY_SIGNAL,
 	ACTIVATE_UPDATE_SIGNAL,
 	ACTIVATE_PROPERTIES_SIGNAL,
 	ACTIVATE_HELP_SIGNAL,
@@ -102,7 +102,7 @@ static EggTrayIconClass *parent_class = NULL;
 
 /* Short form macros */
 #define self_activate mn_mail_icon_activate
-#define self_activate_run mn_mail_icon_activate_run
+#define self_activate_summary mn_mail_icon_activate_summary
 #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
@@ -112,7 +112,6 @@ static EggTrayIconClass *parent_class = NULL;
 #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_new mn_mail_icon_new
-#define self_set_command mn_mail_icon_set_command
 GType
 mn_mail_icon_get_type (void)
 {
@@ -163,9 +162,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 34 "mn-mail-icon.gob"
-	if(self->tooltips) { ((*(void (*)(void *))g_object_unref)) (self->tooltips); self->tooltips = NULL; }
-#line 169 "mn-mail-icon.c"
+#line 36 "mn-mail-icon.gob"
+	if(self->tooltips) { g_object_unref ((gpointer) self->tooltips); self->tooltips = NULL; }
+#line 168 "mn-mail-icon.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -174,25 +173,26 @@ static void
 ___finalize(GObject *obj_self)
 {
 #define __GOB_FUNCTION__ "MN:Mail:Icon::finalize"
-	MNMailIcon *self  G_GNUC_UNUSED = MN_MAIL_ICON (obj_self);
-	gpointer priv = self->_priv;
+	MNMailIcon *self G_GNUC_UNUSED = MN_MAIL_ICON (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 37 "mn-mail-icon.gob"
-	if(self->_priv->menu) { ((*(void (*)(void *))gtk_widget_destroy)) (self->_priv->menu); self->_priv->menu = NULL; }
-#line 184 "mn-mail-icon.c"
-	g_free (priv);
+#line 39 "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"
 }
 #undef __GOB_FUNCTION__
 
-#line 56 "mn-mail-icon.gob"
+#line 57 "mn-mail-icon.gob"
 static void 
 mn_mail_icon_class_init (MNMailIconClass * class G_GNUC_UNUSED)
-#line 192 "mn-mail-icon.c"
+#line 190 "mn-mail-icon.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Icon::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
 
+	g_type_class_add_private(class,sizeof(MNMailIconPrivate));
+
 	parent_class = g_type_class_ref (EGG_TYPE_TRAY_ICON);
 
 	object_signals[ACTIVATE_SIGNAL] =
@@ -203,11 +203,11 @@ mn_mail_icon_class_init (MNMailIconClass * class G_GNUC_UNUSED)
 			NULL, NULL,
 			g_cclosure_marshal_VOID__VOID,
 			G_TYPE_NONE, 0);
-	object_signals[ACTIVATE_RUN_SIGNAL] =
-		g_signal_new ("activate_run",
+	object_signals[ACTIVATE_SUMMARY_SIGNAL] =
+		g_signal_new ("activate_summary",
 			G_TYPE_FROM_CLASS (g_object_class),
 			(GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
-			G_STRUCT_OFFSET (MNMailIconClass, activate_run),
+			G_STRUCT_OFFSET (MNMailIconClass, activate_summary),
 			NULL, NULL,
 			g_cclosure_marshal_VOID__VOID,
 			G_TYPE_NONE, 0);
@@ -253,7 +253,7 @@ mn_mail_icon_class_init (MNMailIconClass * class G_GNUC_UNUSED)
 			G_TYPE_NONE, 0);
 
 	class->activate = NULL;
-	class->activate_run = NULL;
+	class->activate_summary = NULL;
 	class->activate_update = NULL;
 	class->activate_properties = NULL;
 	class->activate_help = NULL;
@@ -262,7 +262,7 @@ mn_mail_icon_class_init (MNMailIconClass * class G_GNUC_UNUSED)
 	g_object_class->dispose = ___dispose;
 	g_object_class->finalize = ___finalize;
  {
-#line 57 "mn-mail-icon.gob"
+#line 58 "mn-mail-icon.gob"
 
     GtkBindingSet *binding_set;
 
@@ -280,33 +280,35 @@ mn_mail_icon_class_init (MNMailIconClass * class G_GNUC_UNUSED)
  }
 }
 #undef __GOB_FUNCTION__
-#line 71 "mn-mail-icon.gob"
+#line 72 "mn-mail-icon.gob"
 static void 
 mn_mail_icon_init (MNMailIcon * self G_GNUC_UNUSED)
 #line 287 "mn-mail-icon.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Icon::init"
-	self->_priv = g_new0 (MNMailIconPrivate, 1);
-#line 34 "mn-mail-icon.gob"
+	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 35 "mn-mail-icon.gob"
+#line 37 "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 37 "mn-mail-icon.gob"
+#line 39 "mn-mail-icon.gob"
 	self->_priv->menu = gtk_menu_new();
 #line 299 "mn-mail-icon.c"
  {
-#line 72 "mn-mail-icon.gob"
+#line 73 "mn-mail-icon.gob"
 
     GtkMenuShell *shell;
     GtkWidget *event_box;
+    GtkWidget *summary_item;
     GtkWidget *properties_item;
     GtkWidget *help_item;
     GtkWidget *about_item;
     GtkWidget *remove_item;
     
     shell = GTK_MENU_SHELL(selfp->menu);
+    summary_item = mn_menu_shell_append(shell, MN_STOCK_MAIL_SUMMARY, NULL);
     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);
@@ -315,11 +317,12 @@ mn_mail_icon_init (MNMailIcon * self G_GNUC_UNUSED)
     mn_menu_shell_append(shell, NULL, NULL);
     remove_item = mn_menu_shell_append(shell, GTK_STOCK_REMOVE, _("R_emove From Notification Area"));
     
-    g_signal_connect_swapped(G_OBJECT(self->update_item), "activate", G_CALLBACK(self_activate_update), self);
-    g_signal_connect_swapped(G_OBJECT(properties_item), "activate", G_CALLBACK(self_activate_properties), self);
-    g_signal_connect_swapped(G_OBJECT(help_item), "activate", G_CALLBACK(self_activate_help), self);
-    g_signal_connect_swapped(G_OBJECT(about_item), "activate", G_CALLBACK(self_activate_about), self);
-    g_signal_connect_swapped(G_OBJECT(remove_item), "activate", G_CALLBACK(self_activate_remove), self);
+    g_signal_connect_swapped(summary_item, "activate", G_CALLBACK(self_activate_summary), 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);
@@ -328,25 +331,24 @@ mn_mail_icon_init (MNMailIcon * self G_GNUC_UNUSED)
     gtk_container_add(GTK_CONTAINER(event_box), self->image);
     gtk_container_add(GTK_CONTAINER(self), event_box);
   
-    g_signal_connect(G_OBJECT(event_box), "button-press-event",
-		     G_CALLBACK(self_button_press_event_h), self);
-    g_signal_connect(G_OBJECT(event_box), "button-release-event",
-		     G_CALLBACK(self_button_release_event_h), self);
-    g_signal_connect(G_OBJECT(event_box), "popup-menu",
-		     G_CALLBACK(self_popup_menu_h), self);
+    g_object_connect(event_box,
+		     "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);
   
-#line 342 "mn-mail-icon.c"
+#line 344 "mn-mail-icon.c"
  }
 }
 #undef __GOB_FUNCTION__
 
-#line 41 "mn-mail-icon.gob"
+#line 42 "mn-mail-icon.gob"
 static void 
 mn_mail_icon_activate (MNMailIcon * self)
-#line 350 "mn-mail-icon.c"
+#line 352 "mn-mail-icon.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -354,11 +356,11 @@ mn_mail_icon_activate (MNMailIcon * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 41 "mn-mail-icon.gob"
+#line 42 "mn-mail-icon.gob"
 	g_return_if_fail (self != NULL);
-#line 41 "mn-mail-icon.gob"
+#line 42 "mn-mail-icon.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 362 "mn-mail-icon.c"
+#line 364 "mn-mail-icon.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -372,10 +374,10 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[0]);
 }
 
-#line 43 "mn-mail-icon.gob"
+#line 44 "mn-mail-icon.gob"
 static void 
-mn_mail_icon_activate_run (MNMailIcon * self)
-#line 379 "mn-mail-icon.c"
+mn_mail_icon_activate_summary (MNMailIcon * self)
+#line 381 "mn-mail-icon.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -383,28 +385,28 @@ mn_mail_icon_activate_run (MNMailIcon * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 43 "mn-mail-icon.gob"
+#line 44 "mn-mail-icon.gob"
 	g_return_if_fail (self != NULL);
-#line 43 "mn-mail-icon.gob"
+#line 44 "mn-mail-icon.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 391 "mn-mail-icon.c"
+#line 393 "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_RUN_SIGNAL],
+		object_signals[ACTIVATE_SUMMARY_SIGNAL],
 		0 /* detail */,
 		&___return_val);
 
 	g_value_unset (&___param_values[0]);
 }
 
-#line 45 "mn-mail-icon.gob"
+#line 46 "mn-mail-icon.gob"
 static void 
 mn_mail_icon_activate_update (MNMailIcon * self)
-#line 408 "mn-mail-icon.c"
+#line 410 "mn-mail-icon.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -412,11 +414,11 @@ mn_mail_icon_activate_update (MNMailIcon * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 45 "mn-mail-icon.gob"
+#line 46 "mn-mail-icon.gob"
 	g_return_if_fail (self != NULL);
-#line 45 "mn-mail-icon.gob"
+#line 46 "mn-mail-icon.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 420 "mn-mail-icon.c"
+#line 422 "mn-mail-icon.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -430,10 +432,10 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[0]);
 }
 
-#line 47 "mn-mail-icon.gob"
+#line 48 "mn-mail-icon.gob"
 static void 
 mn_mail_icon_activate_properties (MNMailIcon * self)
-#line 437 "mn-mail-icon.c"
+#line 439 "mn-mail-icon.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -441,11 +443,11 @@ mn_mail_icon_activate_properties (MNMailIcon * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 47 "mn-mail-icon.gob"
+#line 48 "mn-mail-icon.gob"
 	g_return_if_fail (self != NULL);
-#line 47 "mn-mail-icon.gob"
+#line 48 "mn-mail-icon.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 449 "mn-mail-icon.c"
+#line 451 "mn-mail-icon.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -459,10 +461,10 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[0]);
 }
 
-#line 49 "mn-mail-icon.gob"
+#line 50 "mn-mail-icon.gob"
 static void 
 mn_mail_icon_activate_help (MNMailIcon * self)
-#line 466 "mn-mail-icon.c"
+#line 468 "mn-mail-icon.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -470,11 +472,11 @@ mn_mail_icon_activate_help (MNMailIcon * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 49 "mn-mail-icon.gob"
+#line 50 "mn-mail-icon.gob"
 	g_return_if_fail (self != NULL);
-#line 49 "mn-mail-icon.gob"
+#line 50 "mn-mail-icon.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 478 "mn-mail-icon.c"
+#line 480 "mn-mail-icon.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -488,10 +490,10 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[0]);
 }
 
-#line 51 "mn-mail-icon.gob"
+#line 52 "mn-mail-icon.gob"
 static void 
 mn_mail_icon_activate_about (MNMailIcon * self)
-#line 495 "mn-mail-icon.c"
+#line 497 "mn-mail-icon.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -499,11 +501,11 @@ mn_mail_icon_activate_about (MNMailIcon * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 51 "mn-mail-icon.gob"
+#line 52 "mn-mail-icon.gob"
 	g_return_if_fail (self != NULL);
-#line 51 "mn-mail-icon.gob"
+#line 52 "mn-mail-icon.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 507 "mn-mail-icon.c"
+#line 509 "mn-mail-icon.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -517,10 +519,10 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[0]);
 }
 
-#line 53 "mn-mail-icon.gob"
+#line 54 "mn-mail-icon.gob"
 static void 
 mn_mail_icon_activate_remove (MNMailIcon * self)
-#line 524 "mn-mail-icon.c"
+#line 526 "mn-mail-icon.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -528,11 +530,11 @@ mn_mail_icon_activate_remove (MNMailIcon * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 53 "mn-mail-icon.gob"
+#line 54 "mn-mail-icon.gob"
 	g_return_if_fail (self != NULL);
-#line 53 "mn-mail-icon.gob"
+#line 54 "mn-mail-icon.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 536 "mn-mail-icon.c"
+#line 538 "mn-mail-icon.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -548,23 +550,23 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 
 
-#line 113 "mn-mail-icon.gob"
+#line 116 "mn-mail-icon.gob"
 static gboolean 
 mn_mail_icon_button_press_event_h (GtkWidget * widget, GdkEventButton * event, gpointer user_data)
-#line 555 "mn-mail-icon.c"
+#line 557 "mn-mail-icon.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Icon::button_press_event_h"
-#line 113 "mn-mail-icon.gob"
+#line 116 "mn-mail-icon.gob"
 	g_return_val_if_fail (widget != NULL, (gboolean )0);
-#line 113 "mn-mail-icon.gob"
+#line 116 "mn-mail-icon.gob"
 	g_return_val_if_fail (GTK_IS_WIDGET (widget), (gboolean )0);
-#line 113 "mn-mail-icon.gob"
+#line 116 "mn-mail-icon.gob"
 	g_return_val_if_fail (event != NULL, (gboolean )0);
-#line 113 "mn-mail-icon.gob"
+#line 116 "mn-mail-icon.gob"
 	g_return_val_if_fail (user_data != NULL, (gboolean )0);
-#line 566 "mn-mail-icon.c"
+#line 568 "mn-mail-icon.c"
 {
-#line 117 "mn-mail-icon.gob"
+#line 120 "mn-mail-icon.gob"
 	
     Self *self = user_data;
 
@@ -578,26 +580,26 @@ mn_mail_icon_button_press_event_h (GtkWidget * widget, GdkEventButton * event, g
 
     return FALSE;		/* propagate event */
   }}
-#line 582 "mn-mail-icon.c"
+#line 584 "mn-mail-icon.c"
 #undef __GOB_FUNCTION__
 
-#line 131 "mn-mail-icon.gob"
+#line 134 "mn-mail-icon.gob"
 static gboolean 
 mn_mail_icon_button_release_event_h (GtkWidget * widget, GdkEventButton * event, gpointer user_data)
-#line 588 "mn-mail-icon.c"
+#line 590 "mn-mail-icon.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Icon::button_release_event_h"
-#line 131 "mn-mail-icon.gob"
+#line 134 "mn-mail-icon.gob"
 	g_return_val_if_fail (widget != NULL, (gboolean )0);
-#line 131 "mn-mail-icon.gob"
+#line 134 "mn-mail-icon.gob"
 	g_return_val_if_fail (GTK_IS_WIDGET (widget), (gboolean )0);
-#line 131 "mn-mail-icon.gob"
+#line 134 "mn-mail-icon.gob"
 	g_return_val_if_fail (event != NULL, (gboolean )0);
-#line 131 "mn-mail-icon.gob"
+#line 134 "mn-mail-icon.gob"
 	g_return_val_if_fail (user_data != NULL, (gboolean )0);
-#line 599 "mn-mail-icon.c"
+#line 601 "mn-mail-icon.c"
 {
-#line 135 "mn-mail-icon.gob"
+#line 138 "mn-mail-icon.gob"
 	
     Self *self = user_data;
 
@@ -609,75 +611,43 @@ mn_mail_icon_button_release_event_h (GtkWidget * widget, GdkEventButton * event,
     
     return FALSE;		/* propagate event */
   }}
-#line 613 "mn-mail-icon.c"
+#line 615 "mn-mail-icon.c"
 #undef __GOB_FUNCTION__
 
-#line 147 "mn-mail-icon.gob"
+#line 150 "mn-mail-icon.gob"
 static gboolean 
 mn_mail_icon_popup_menu_h (GtkWidget * widget, gpointer user_data)
-#line 619 "mn-mail-icon.c"
+#line 621 "mn-mail-icon.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Icon::popup_menu_h"
-#line 147 "mn-mail-icon.gob"
+#line 150 "mn-mail-icon.gob"
 	g_return_val_if_fail (widget != NULL, (gboolean )0);
-#line 147 "mn-mail-icon.gob"
+#line 150 "mn-mail-icon.gob"
 	g_return_val_if_fail (GTK_IS_WIDGET (widget), (gboolean )0);
-#line 147 "mn-mail-icon.gob"
+#line 150 "mn-mail-icon.gob"
 	g_return_val_if_fail (user_data != NULL, (gboolean )0);
-#line 628 "mn-mail-icon.c"
+#line 630 "mn-mail-icon.c"
 {
-#line 150 "mn-mail-icon.gob"
+#line 153 "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 637 "mn-mail-icon.c"
+#line 639 "mn-mail-icon.c"
 #undef __GOB_FUNCTION__
 
-#line 157 "mn-mail-icon.gob"
+#line 160 "mn-mail-icon.gob"
 GtkWidget * 
 mn_mail_icon_new (void)
-#line 643 "mn-mail-icon.c"
+#line 645 "mn-mail-icon.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Icon::new"
 {
-#line 159 "mn-mail-icon.gob"
+#line 162 "mn-mail-icon.gob"
 	
-    return g_object_new(TYPE_SELF, "title", _("Mail Notification"), NULL);
-  }}
-#line 651 "mn-mail-icon.c"
-#undef __GOB_FUNCTION__
-
-#line 163 "mn-mail-icon.gob"
-void 
-mn_mail_icon_set_command (MNMailIcon * self, const char * command)
-#line 657 "mn-mail-icon.c"
-{
-#define __GOB_FUNCTION__ "MN:Mail:Icon::set_command"
-#line 163 "mn-mail-icon.gob"
-	g_return_if_fail (self != NULL);
-#line 163 "mn-mail-icon.gob"
-	g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 664 "mn-mail-icon.c"
-{
-#line 165 "mn-mail-icon.gob"
-	
-    char *mnemonic;
-
-    if (selfp->run_item)
-      gtk_widget_destroy(selfp->run_item);
-
-    mnemonic = command
-      ? g_strdup_printf(_("_Run %s"), command)
-      : g_strdup(_("_Run Default Action"));
-
-    selfp->run_item = mn_menu_shell_prepend(GTK_MENU_SHELL(selfp->menu), GTK_STOCK_EXECUTE, mnemonic);
-    g_free(mnemonic);
-
-    gtk_widget_set_sensitive(selfp->run_item, command != NULL);
-    g_signal_connect_swapped(G_OBJECT(selfp->run_item), "activate", G_CALLBACK(self_activate_run), self);
+    return GTK_WIDGET(GET_NEW_VARG("title", _("Mail Notification"), NULL));
   }}
-#line 683 "mn-mail-icon.c"
+#line 653 "mn-mail-icon.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-mail-icon.gob b/src/mn-mail-icon.gob
@@ -16,6 +16,8 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+requires 2.0.10
+
 %headertop{
 #include <gtk/gtk.h>
 #include "eggtrayicon.h"
@@ -35,13 +37,12 @@ class MN:Mail:Icon from Egg:Tray:Icon
   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;
-  private GtkWidget *run_item;
   public GtkWidget *update_item;
   
   signal (ACTION) private NONE (NONE)
     void activate (self);
   signal (ACTION) private NONE (NONE)
-    void activate_run (self);
+    void activate_summary (self);
   signal (ACTION) private NONE (NONE)
     void activate_update (self);
   signal (ACTION) private NONE (NONE)
@@ -72,12 +73,14 @@ class MN:Mail:Icon from Egg:Tray:Icon
   {
     GtkMenuShell *shell;
     GtkWidget *event_box;
+    GtkWidget *summary_item;
     GtkWidget *properties_item;
     GtkWidget *help_item;
     GtkWidget *about_item;
     GtkWidget *remove_item;
     
     shell = GTK_MENU_SHELL(selfp->menu);
+    summary_item = mn_menu_shell_append(shell, MN_STOCK_MAIL_SUMMARY, NULL);
     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);
@@ -86,11 +89,12 @@ class MN:Mail:Icon from Egg:Tray:Icon
     mn_menu_shell_append(shell, NULL, NULL);
     remove_item = mn_menu_shell_append(shell, GTK_STOCK_REMOVE, _("R_emove From Notification Area"));
     
-    g_signal_connect_swapped(G_OBJECT(self->update_item), "activate", G_CALLBACK(self_activate_update), self);
-    g_signal_connect_swapped(G_OBJECT(properties_item), "activate", G_CALLBACK(self_activate_properties), self);
-    g_signal_connect_swapped(G_OBJECT(help_item), "activate", G_CALLBACK(self_activate_help), self);
-    g_signal_connect_swapped(G_OBJECT(about_item), "activate", G_CALLBACK(self_activate_about), self);
-    g_signal_connect_swapped(G_OBJECT(remove_item), "activate", G_CALLBACK(self_activate_remove), self);
+    g_signal_connect_swapped(summary_item, "activate", G_CALLBACK(self_activate_summary), 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);
@@ -99,12 +103,11 @@ class MN:Mail:Icon from Egg:Tray:Icon
     gtk_container_add(GTK_CONTAINER(event_box), self->image);
     gtk_container_add(GTK_CONTAINER(self), event_box);
   
-    g_signal_connect(G_OBJECT(event_box), "button-press-event",
-		     G_CALLBACK(self_button_press_event_h), self);
-    g_signal_connect(G_OBJECT(event_box), "button-release-event",
-		     G_CALLBACK(self_button_release_event_h), self);
-    g_signal_connect(G_OBJECT(event_box), "popup-menu",
-		     G_CALLBACK(self_popup_menu_h), self);
+    g_object_connect(event_box,
+		     "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);
@@ -157,25 +160,6 @@ class MN:Mail:Icon from Egg:Tray:Icon
   public GtkWidget *
     new (void)
   {
-    return g_object_new(TYPE_SELF, "title", _("Mail Notification"), NULL);
-  }
-
-  public void
-    set_command (self, const char *command)
-  {
-    char *mnemonic;
-
-    if (selfp->run_item)
-      gtk_widget_destroy(selfp->run_item);
-
-    mnemonic = command
-      ? g_strdup_printf(_("_Run %s"), command)
-      : g_strdup(_("_Run Default Action"));
-
-    selfp->run_item = mn_menu_shell_prepend(GTK_MENU_SHELL(selfp->menu), GTK_STOCK_EXECUTE, mnemonic);
-    g_free(mnemonic);
-
-    gtk_widget_set_sensitive(selfp->run_item, command != NULL);
-    g_signal_connect_swapped(G_OBJECT(selfp->run_item), "activate", G_CALLBACK(self_activate_run), self);
+    return GTK_WIDGET(GET_NEW_VARG("title", _("Mail Notification"), NULL));
   }
 }
diff --git a/src/mn-mail-icon.h b/src/mn-mail-icon.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
@@ -54,7 +54,7 @@ typedef struct _MNMailIconClass MNMailIconClass;
 struct _MNMailIconClass {
 	EggTrayIconClass __parent__;
 	/*signal*/void (* activate) (MNMailIcon * self);
-	/*signal*/void (* activate_run) (MNMailIcon * self);
+	/*signal*/void (* activate_summary) (MNMailIcon * self);
 	/*signal*/void (* activate_update) (MNMailIcon * self);
 	/*signal*/void (* activate_properties) (MNMailIcon * self);
 	/*signal*/void (* activate_help) (MNMailIcon * self);
@@ -68,8 +68,6 @@ struct _MNMailIconClass {
  */
 GType	mn_mail_icon_get_type	(void);
 GtkWidget * 	mn_mail_icon_new	(void);
-void 	mn_mail_icon_set_command	(MNMailIcon * self,
-					const char * command);
 
 /*
  * Signal connection wrapper macros
@@ -78,9 +76,9 @@ void 	mn_mail_icon_set_command	(MNMailIcon * self,
 #define mn_mail_icon_connect__activate(object,func,data)	g_signal_connect(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate",(GCallback) __extension__ ({void (* ___activate) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate; }), (data))
 #define mn_mail_icon_connect_after__activate(object,func,data)	g_signal_connect_after(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate",(GCallback) __extension__ ({void (* ___activate) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate; }), (data))
 #define mn_mail_icon_connect_data__activate(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate",(GCallback) __extension__ ({void (* ___activate) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate; }), (data), (destroy_data), (GConnectFlags)(flags))
-#define mn_mail_icon_connect__activate_run(object,func,data)	g_signal_connect(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_run",(GCallback) __extension__ ({void (* ___activate_run) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_run; }), (data))
-#define mn_mail_icon_connect_after__activate_run(object,func,data)	g_signal_connect_after(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_run",(GCallback) __extension__ ({void (* ___activate_run) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_run; }), (data))
-#define mn_mail_icon_connect_data__activate_run(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_run",(GCallback) __extension__ ({void (* ___activate_run) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_run; }), (data), (destroy_data), (GConnectFlags)(flags))
+#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_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))
@@ -100,9 +98,9 @@ void 	mn_mail_icon_set_command	(MNMailIcon * self,
 #define mn_mail_icon_connect__activate(object,func,data)	g_signal_connect(MN_MAIL_ICON(object),"activate",(GCallback)(func),(data))
 #define mn_mail_icon_connect_after__activate(object,func,data)	g_signal_connect_after(MN_MAIL_ICON(object),"activate",(GCallback)(func),(data))
 #define mn_mail_icon_connect_data__activate(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAIL_ICON(object),"activate",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
-#define mn_mail_icon_connect__activate_run(object,func,data)	g_signal_connect(MN_MAIL_ICON(object),"activate_run",(GCallback)(func),(data))
-#define mn_mail_icon_connect_after__activate_run(object,func,data)	g_signal_connect_after(MN_MAIL_ICON(object),"activate_run",(GCallback)(func),(data))
-#define mn_mail_icon_connect_data__activate_run(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAIL_ICON(object),"activate_run",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
+#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_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.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (do not edit directly) */
 
 #ifndef __MN_MAILBOX_PRIVATE_H__
 #define __MN_MAILBOX_PRIVATE_H__
@@ -10,7 +10,7 @@ extern "C" {
 #endif /* __cplusplus */
 
 
-#line 24 "mn-mailbox.gob"
+#line 28 "mn-mailbox.gob"
 
 #include <libgnomevfs/gnome-vfs.h>
 
@@ -26,25 +26,27 @@ extern "C" {
 
 #line 28 "mn-mailbox-private.h"
 struct _MNMailboxPrivate {
-#line 132 "mn-mailbox.gob"
+#line 143 "mn-mailbox.gob"
 	char * name;
-#line 136 "mn-mailbox.gob"
+#line 147 "mn-mailbox.gob"
 	gboolean automatic;
-#line 141 "mn-mailbox.gob"
+#line 152 "mn-mailbox.gob"
 	gboolean has_new;
-#line 146 "mn-mailbox.gob"
+#line 157 "mn-mailbox.gob"
+	GSList * messages;
+#line 211 "mn-mailbox.gob"
 	char * error;
-#line 166 "mn-mailbox.gob"
+#line 231 "mn-mailbox.gob"
 	GnomeVFSMonitorHandle * monitor_handle;
-#line 167 "mn-mailbox.gob"
+#line 232 "mn-mailbox.gob"
 	char * monitor_uri;
-#line 168 "mn-mailbox.gob"
+#line 233 "mn-mailbox.gob"
 	MNMailboxMonitorEventType monitor_events;
-#line 170 "mn-mailbox.gob"
+#line 235 "mn-mailbox.gob"
 	gboolean checking;
-#line 310 "mn-mailbox.gob"
+#line 365 "mn-mailbox.gob"
 	char * init_error;
-#line 48 "mn-mailbox-private.h"
+#line 50 "mn-mailbox-private.h"
 };
 void 	mn_mailbox_set_error	(MNMailbox * self, const char * format, ...);
 void 	mn_mailbox_set_init_error	(MNMailbox * self, const char * format, ...);
diff --git a/src/mn-mailbox-properties-dialog.c b/src/mn-mailbox-properties-dialog.c
@@ -204,7 +204,7 @@ mn_mailbox_properties_dialog_add_type (MNMailboxPropertiesDialog *dialog,
   g_free(label);
 
   gtk_widget_show(GTK_WIDGET(properties));
-  g_signal_connect_swapped(G_OBJECT(properties), "notify::complete", G_CALLBACK(mn_mailbox_properties_dialog_update_sensitivity), dialog);
+  g_signal_connect_swapped(properties, "notify::complete", G_CALLBACK(mn_mailbox_properties_dialog_update_sensitivity), dialog);
 
   g_object_unref(properties);	/* now it belongs to the store */
 }
@@ -231,9 +231,6 @@ mn_mailbox_properties_dialog_select_properties (MNMailboxPropertiesDialog *dialo
   gtk_container_add(GTK_CONTAINER(private->properties_event_box), GTK_WIDGET(properties));
   size_group = mn_mailbox_properties_get_size_group(properties);
   gtk_size_group_add_widget(size_group, private->mailbox_type_label);
-
-  /* force the dialog to recalculate its size */
-  gtk_window_resize(GTK_WINDOW(dialog), 1, 1);
 }
 
 static void
diff --git a/src/mn-mailbox-properties-util.c b/src/mn-mailbox-properties-util.c
@@ -106,7 +106,7 @@ mn_mailbox_properties_link_entries (GtkEntry *first, ...)
       if (next)
 	g_return_if_fail(GTK_IS_ENTRY(next));
 
-      g_signal_connect(G_OBJECT(entry),
+      g_signal_connect(entry,
 		       "activate",
 		       G_CALLBACK(mn_mailbox_properties_entry_activate_h),
 		       next ? next : first);
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.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (do not edit directly) */
 
 #ifndef __MN_MAILBOX_VIEW_PRIVATE_H__
 #define __MN_MAILBOX_VIEW_PRIVATE_H__
@@ -10,17 +10,17 @@ extern "C" {
 #endif /* __cplusplus */
 
 struct _MNMailboxViewPrivate {
-#line 49 "mn-mailbox-view.gob"
+#line 51 "mn-mailbox-view.gob"
 	GtkWidget * menu;
-#line 50 "mn-mailbox-view.gob"
+#line 52 "mn-mailbox-view.gob"
 	GtkWidget * remove_item;
-#line 51 "mn-mailbox-view.gob"
+#line 53 "mn-mailbox-view.gob"
 	GtkWidget * cut_item;
-#line 52 "mn-mailbox-view.gob"
+#line 54 "mn-mailbox-view.gob"
 	GtkWidget * copy_item;
-#line 53 "mn-mailbox-view.gob"
+#line 55 "mn-mailbox-view.gob"
 	GtkWidget * paste_item;
-#line 54 "mn-mailbox-view.gob"
+#line 56 "mn-mailbox-view.gob"
 	GtkWidget * properties_item;
 #line 26 "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.9) on Thu Sep  9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct  6 19:29:53 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 9
+#define GOB_VERSION_PATCHLEVEL 10
 
 #define selfp (self->_priv)
 
@@ -23,7 +23,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 22 "mn-mailbox-view.gob"
+#line 24 "mn-mailbox-view.gob"
 
 #include "config.h"
 #include <glib/gi18n-lib.h>
@@ -73,10 +73,12 @@ static void ___real_mn_mailbox_view_activate_properties (MNMailboxView * self);
 static void mn_mailbox_view_activate_properties_cb (GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data) G_GNUC_UNUSED;
 static void mn_mailbox_view_class_init (MNMailboxViewClass * class) G_GNUC_UNUSED;
 static void mn_mailbox_view_init (MNMailboxView * self) G_GNUC_UNUSED;
-static void ___b_mn_mailbox_view_finalize (GObject * object) G_GNUC_UNUSED;
-static void mn_mailbox_view_update (MNMailboxView * self) G_GNUC_UNUSED;
+static void mn_mailbox_view_append (MNMailboxView * self, MNMailbox * mailbox) G_GNUC_UNUSED;
+static void mn_mailbox_view_mailbox_added_h (MNMailboxes * mailboxes, MNMailbox * mailbox, gpointer user_data) G_GNUC_UNUSED;
+static void mn_mailbox_view_mailbox_changed_h (MNMailboxes * mailboxes, MNMailbox * mailbox, gpointer user_data) G_GNUC_UNUSED;
+static void mn_mailbox_view_mailbox_removed_h (MNMailboxes * mailboxes, MNMailbox * mailbox, gpointer user_data) G_GNUC_UNUSED;
 static void mn_mailbox_view_update_iter (MNMailboxView * self, GtkTreeIter * iter, MNMailbox * mailbox) G_GNUC_UNUSED;
-static gboolean mn_mailbox_view_has_mailbox (MNMailboxView * self, MNMailbox * mailbox) G_GNUC_UNUSED;
+static gboolean mn_mailbox_view_find_mailbox (MNMailboxView * self, MNMailbox * mailbox, GtkTreeIter * iter) G_GNUC_UNUSED;
 static void mn_mailbox_view_update_sensitivity (MNMailboxView * self) G_GNUC_UNUSED;
 static void mn_mailbox_view_remove_mailbox (MNMailboxView * self) G_GNUC_UNUSED;
 static void mn_mailbox_view_remove_mailbox_cb (GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data) G_GNUC_UNUSED;
@@ -139,9 +141,12 @@ static GtkTreeViewClass *parent_class = NULL;
 #define self_activate_paste_receive_cb mn_mailbox_view_activate_paste_receive_cb
 #define self_activate_properties mn_mailbox_view_activate_properties
 #define self_activate_properties_cb mn_mailbox_view_activate_properties_cb
-#define self_update mn_mailbox_view_update
+#define self_append mn_mailbox_view_append
+#define self_mailbox_added_h mn_mailbox_view_mailbox_added_h
+#define self_mailbox_changed_h mn_mailbox_view_mailbox_changed_h
+#define self_mailbox_removed_h mn_mailbox_view_mailbox_removed_h
 #define self_update_iter mn_mailbox_view_update_iter
-#define self_has_mailbox mn_mailbox_view_has_mailbox
+#define self_find_mailbox mn_mailbox_view_find_mailbox
 #define self_update_sensitivity mn_mailbox_view_update_sensitivity
 #define self_remove_mailbox mn_mailbox_view_remove_mailbox
 #define self_remove_mailbox_cb mn_mailbox_view_remove_mailbox_cb
@@ -205,26 +210,26 @@ static void
 ___finalize(GObject *obj_self)
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::finalize"
-	MNMailboxView *self  G_GNUC_UNUSED = MN_MAILBOX_VIEW (obj_self);
-	gpointer priv = self->_priv;
-#line 293 "mn-mailbox-view.gob"
-	___b_mn_mailbox_view_finalize(obj_self);
-#line 213 "mn-mailbox-view.c"
-#line 49 "mn-mailbox-view.gob"
-	if(self->_priv->menu) { ((*(void (*)(void *))gtk_widget_destroy)) (self->_priv->menu); self->_priv->menu = NULL; }
-#line 216 "mn-mailbox-view.c"
-	g_free (priv);
+	MNMailboxView *self G_GNUC_UNUSED = MN_MAILBOX_VIEW (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 51 "mn-mailbox-view.gob"
+	if(self->_priv->menu) { gtk_widget_destroy ((gpointer) self->_priv->menu); self->_priv->menu = NULL; }
+#line 220 "mn-mailbox-view.c"
 }
 #undef __GOB_FUNCTION__
 
-#line 185 "mn-mailbox-view.gob"
+#line 187 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_class_init (MNMailboxViewClass * class G_GNUC_UNUSED)
-#line 224 "mn-mailbox-view.c"
+#line 227 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
 
+	g_type_class_add_private(class,sizeof(MNMailboxViewPrivate));
+
 	parent_class = g_type_class_ref (GTK_TYPE_TREE_VIEW);
 
 	object_signals[ACTIVATE_ADD_SIGNAL] =
@@ -276,23 +281,22 @@ mn_mailbox_view_class_init (MNMailboxViewClass * class G_GNUC_UNUSED)
 			g_cclosure_marshal_VOID__VOID,
 			G_TYPE_NONE, 0);
 
-#line 56 "mn-mailbox-view.gob"
+#line 58 "mn-mailbox-view.gob"
 	class->activate_add = ___real_mn_mailbox_view_activate_add;
-#line 73 "mn-mailbox-view.gob"
+#line 75 "mn-mailbox-view.gob"
 	class->activate_remove = ___real_mn_mailbox_view_activate_remove;
-#line 79 "mn-mailbox-view.gob"
+#line 81 "mn-mailbox-view.gob"
 	class->activate_cut = ___real_mn_mailbox_view_activate_cut;
-#line 86 "mn-mailbox-view.gob"
+#line 88 "mn-mailbox-view.gob"
 	class->activate_copy = ___real_mn_mailbox_view_activate_copy;
-#line 92 "mn-mailbox-view.gob"
+#line 94 "mn-mailbox-view.gob"
 	class->activate_paste = ___real_mn_mailbox_view_activate_paste;
-#line 150 "mn-mailbox-view.gob"
+#line 152 "mn-mailbox-view.gob"
 	class->activate_properties = ___real_mn_mailbox_view_activate_properties;
-#line 293 "mn-mailbox-view.gob"
+#line 297 "mn-mailbox-view.c"
 	g_object_class->finalize = ___finalize;
-#line 294 "mn-mailbox-view.c"
  {
-#line 186 "mn-mailbox-view.gob"
+#line 188 "mn-mailbox-view.gob"
 
     GtkBindingSet *binding_set;
 
@@ -320,22 +324,22 @@ mn_mailbox_view_class_init (MNMailboxViewClass * 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 324 "mn-mailbox-view.c"
+#line 328 "mn-mailbox-view.c"
  }
 }
 #undef __GOB_FUNCTION__
-#line 214 "mn-mailbox-view.gob"
+#line 216 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_init (MNMailboxView * self G_GNUC_UNUSED)
-#line 331 "mn-mailbox-view.c"
+#line 335 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::init"
-	self->_priv = g_new0 (MNMailboxViewPrivate, 1);
-#line 49 "mn-mailbox-view.gob"
+	self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,TYPE_SELF,MNMailboxViewPrivate);
+#line 51 "mn-mailbox-view.gob"
 	self->_priv->menu = gtk_menu_new();
-#line 337 "mn-mailbox-view.c"
+#line 341 "mn-mailbox-view.c"
  {
-#line 215 "mn-mailbox-view.gob"
+#line 217 "mn-mailbox-view.gob"
 
     GtkMenuShell *shell;
     GtkWidget *add_item;
@@ -344,6 +348,9 @@ mn_mailbox_view_init (MNMailboxView * self G_GNUC_UNUSED)
     GtkTreeViewColumn *column;
     GtkCellRenderer *renderer;
     GtkTreeSelection *selection;
+    GSList *l;
+
+    /* popup menu */
 
     shell = GTK_MENU_SHELL(selfp->menu);
     
@@ -358,13 +365,15 @@ mn_mailbox_view_init (MNMailboxView * self G_GNUC_UNUSED)
     mn_menu_shell_append(shell, NULL, NULL);
     selfp->properties_item = mn_menu_shell_append(shell, GTK_STOCK_PROPERTIES, NULL);
     
-    g_signal_connect_swapped(G_OBJECT(add_item), "activate", G_CALLBACK(self_activate_add), self);
-    g_signal_connect_swapped(G_OBJECT(selfp->remove_item), "activate", G_CALLBACK(self_activate_remove), self);
-    g_signal_connect_swapped(G_OBJECT(selfp->cut_item), "activate", G_CALLBACK(self_activate_cut), self);
-    g_signal_connect_swapped(G_OBJECT(selfp->copy_item), "activate", G_CALLBACK(self_activate_copy), self);
-    g_signal_connect_swapped(G_OBJECT(selfp->paste_item), "activate", G_CALLBACK(self_activate_paste), self);
-    g_signal_connect_swapped(G_OBJECT(select_all_item), "activate", G_CALLBACK(self_select_all), self);
-    g_signal_connect_swapped(G_OBJECT(selfp->properties_item), "activate", G_CALLBACK(self_activate_properties), self);
+    g_signal_connect_swapped(add_item, "activate", G_CALLBACK(self_activate_add), self);
+    g_signal_connect_swapped(selfp->remove_item, "activate", G_CALLBACK(self_activate_remove), self);
+    g_signal_connect_swapped(selfp->cut_item, "activate", G_CALLBACK(self_activate_cut), self);
+    g_signal_connect_swapped(selfp->copy_item, "activate", G_CALLBACK(self_activate_copy), self);
+    g_signal_connect_swapped(selfp->paste_item, "activate", G_CALLBACK(self_activate_paste), self);
+    g_signal_connect_swapped(select_all_item, "activate", G_CALLBACK(self_select_all), self);
+    g_signal_connect_swapped(selfp->properties_item, "activate", G_CALLBACK(self_activate_properties), self);
+
+    /* store */
 
     store = gtk_list_store_new(N_COLUMNS,
 			       MN_TYPE_URI,
@@ -374,9 +383,11 @@ mn_mailbox_view_init (MNMailboxView * self G_GNUC_UNUSED)
     gtk_tree_view_set_model(GTK_TREE_VIEW(self), GTK_TREE_MODEL(store));
     g_object_unref(store);
     
+    /* mailbox column */
+
     column = gtk_tree_view_column_new();
     gtk_tree_view_column_set_title(column, _("Mailbox"));
-    gtk_tree_view_column_set_resizable(column, TRUE);
+    gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
     gtk_tree_view_column_set_sort_column_id(column, COLUMN_MAILBOX);
 
     renderer = gtk_cell_renderer_pixbuf_new();
@@ -386,42 +397,55 @@ mn_mailbox_view_init (MNMailboxView * self G_GNUC_UNUSED)
     renderer = gtk_cell_renderer_text_new();
     gtk_tree_view_column_pack_start(column, renderer, TRUE);
     gtk_tree_view_column_add_attribute(column, renderer, "text", COLUMN_MAILBOX);
-    
+
     gtk_tree_view_append_column(GTK_TREE_VIEW(self), column);
 
+    /* format column */
+
     column = gtk_tree_view_column_new_with_attributes(_("Format"),
 						      gtk_cell_renderer_text_new(),
 						      "text", COLUMN_FORMAT,
 						      NULL);
 
-    gtk_tree_view_column_set_resizable(column, TRUE);
+    gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
     gtk_tree_view_column_set_sort_column_id(column, COLUMN_FORMAT);
     gtk_tree_view_append_column(GTK_TREE_VIEW(self), column);
 
+    /* misc */
+
     gtk_tree_view_set_search_column(GTK_TREE_VIEW(self), COLUMN_MAILBOX);
 
     selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self));
     gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE);
     
-    self_update(self);
+    MN_LIST_FOREACH(l, mn_mailboxes_get(mn_shell->mailboxes))
+      self_append(self, l->data);
     self_update_sensitivity(self);
 
-    g_signal_connect_swapped(G_OBJECT(mn_shell->mailboxes), "list-changed", G_CALLBACK(self_update), self);
-    g_signal_connect_swapped(G_OBJECT(selection), "changed", G_CALLBACK(self_update_sensitivity), self);
+    mn_g_object_connect(self,
+			mn_shell->mailboxes,
+			"signal::mailbox-added", self_mailbox_added_h, self,
+			"signal::mailbox-changed", self_mailbox_changed_h, self,
+			"signal::mailbox-removed", self_mailbox_removed_h, self,
+			NULL);
+
+    g_signal_connect_swapped(selection, "changed", G_CALLBACK(self_update_sensitivity), self);
 
-    g_signal_connect(G_OBJECT(self), "popup-menu", G_CALLBACK(self_popup_menu_h), NULL);
-    g_signal_connect(G_OBJECT(self), "button-press-event", G_CALLBACK(self_button_press_event_h), NULL);
-    g_signal_connect(G_OBJECT(self), "row-activated", G_CALLBACK(self_row_activated_h), NULL);
+    g_object_connect(self,
+		     "signal::popup-menu", self_popup_menu_h, NULL,
+		     "signal::button-press-event", self_button_press_event_h, NULL,
+		     "signal::row-activated", self_row_activated_h, NULL,
+		     NULL);
   
-#line 417 "mn-mailbox-view.c"
+#line 441 "mn-mailbox-view.c"
  }
 }
 #undef __GOB_FUNCTION__
 
-#line 56 "mn-mailbox-view.gob"
+#line 58 "mn-mailbox-view.gob"
 void 
 mn_mailbox_view_activate_add (MNMailboxView * self)
-#line 425 "mn-mailbox-view.c"
+#line 449 "mn-mailbox-view.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -429,11 +453,11 @@ mn_mailbox_view_activate_add (MNMailboxView * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 56 "mn-mailbox-view.gob"
+#line 58 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 56 "mn-mailbox-view.gob"
+#line 58 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 437 "mn-mailbox-view.c"
+#line 461 "mn-mailbox-view.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -446,14 +470,14 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 	g_value_unset (&___param_values[0]);
 }
-#line 56 "mn-mailbox-view.gob"
+#line 58 "mn-mailbox-view.gob"
 static void 
 ___real_mn_mailbox_view_activate_add (MNMailboxView * self G_GNUC_UNUSED)
-#line 453 "mn-mailbox-view.c"
+#line 477 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::activate_add"
 {
-#line 58 "mn-mailbox-view.gob"
+#line 60 "mn-mailbox-view.gob"
 	
     GtkWidget *toplevel;
     GtkWidget *dialog;
@@ -461,20 +485,20 @@ ___real_mn_mailbox_view_activate_add (MNMailboxView * self G_GNUC_UNUSED)
     toplevel = gtk_widget_get_toplevel(GTK_WIDGET(self));
     dialog = mn_mailbox_properties_dialog_new((GtkWindow *) toplevel, MN_MAILBOX_PROPERTIES_DIALOG_MODE_ADD);
 
-    g_signal_connect(G_OBJECT(dialog),
+    g_signal_connect(dialog,
 		     "response",
 		     G_CALLBACK(self_properties_add_response_h),
 		     NULL);
-    
+
     gtk_widget_show(dialog);
   }}
-#line 472 "mn-mailbox-view.c"
+#line 496 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 73 "mn-mailbox-view.gob"
+#line 75 "mn-mailbox-view.gob"
 void 
 mn_mailbox_view_activate_remove (MNMailboxView * self)
-#line 478 "mn-mailbox-view.c"
+#line 502 "mn-mailbox-view.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -482,11 +506,11 @@ mn_mailbox_view_activate_remove (MNMailboxView * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 73 "mn-mailbox-view.gob"
+#line 75 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 73 "mn-mailbox-view.gob"
+#line 75 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 490 "mn-mailbox-view.c"
+#line 514 "mn-mailbox-view.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -499,24 +523,24 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 	g_value_unset (&___param_values[0]);
 }
-#line 73 "mn-mailbox-view.gob"
+#line 75 "mn-mailbox-view.gob"
 static void 
 ___real_mn_mailbox_view_activate_remove (MNMailboxView * self G_GNUC_UNUSED)
-#line 506 "mn-mailbox-view.c"
+#line 530 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::activate_remove"
 {
-#line 75 "mn-mailbox-view.gob"
+#line 77 "mn-mailbox-view.gob"
 	
     self_remove_mailbox(self);
   }}
-#line 514 "mn-mailbox-view.c"
+#line 538 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 79 "mn-mailbox-view.gob"
+#line 81 "mn-mailbox-view.gob"
 void 
 mn_mailbox_view_activate_cut (MNMailboxView * self)
-#line 520 "mn-mailbox-view.c"
+#line 544 "mn-mailbox-view.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -524,11 +548,11 @@ mn_mailbox_view_activate_cut (MNMailboxView * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 79 "mn-mailbox-view.gob"
+#line 81 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 79 "mn-mailbox-view.gob"
+#line 81 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 532 "mn-mailbox-view.c"
+#line 556 "mn-mailbox-view.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -541,25 +565,25 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 	g_value_unset (&___param_values[0]);
 }
-#line 79 "mn-mailbox-view.gob"
+#line 81 "mn-mailbox-view.gob"
 static void 
 ___real_mn_mailbox_view_activate_cut (MNMailboxView * self G_GNUC_UNUSED)
-#line 548 "mn-mailbox-view.c"
+#line 572 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::activate_cut"
 {
-#line 81 "mn-mailbox-view.gob"
+#line 83 "mn-mailbox-view.gob"
 	
     self_copy_mailbox(self);
     self_remove_mailbox(self);
   }}
-#line 557 "mn-mailbox-view.c"
+#line 581 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 86 "mn-mailbox-view.gob"
+#line 88 "mn-mailbox-view.gob"
 void 
 mn_mailbox_view_activate_copy (MNMailboxView * self)
-#line 563 "mn-mailbox-view.c"
+#line 587 "mn-mailbox-view.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -567,11 +591,11 @@ mn_mailbox_view_activate_copy (MNMailboxView * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 86 "mn-mailbox-view.gob"
+#line 88 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 86 "mn-mailbox-view.gob"
+#line 88 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 575 "mn-mailbox-view.c"
+#line 599 "mn-mailbox-view.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -584,24 +608,24 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 	g_value_unset (&___param_values[0]);
 }
-#line 86 "mn-mailbox-view.gob"
+#line 88 "mn-mailbox-view.gob"
 static void 
 ___real_mn_mailbox_view_activate_copy (MNMailboxView * self G_GNUC_UNUSED)
-#line 591 "mn-mailbox-view.c"
+#line 615 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::activate_copy"
 {
-#line 88 "mn-mailbox-view.gob"
+#line 90 "mn-mailbox-view.gob"
 	
     self_copy_mailbox(self);
   }}
-#line 599 "mn-mailbox-view.c"
+#line 623 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 92 "mn-mailbox-view.gob"
+#line 94 "mn-mailbox-view.gob"
 void 
 mn_mailbox_view_activate_paste (MNMailboxView * self)
-#line 605 "mn-mailbox-view.c"
+#line 629 "mn-mailbox-view.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -609,11 +633,11 @@ mn_mailbox_view_activate_paste (MNMailboxView * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 92 "mn-mailbox-view.gob"
+#line 94 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 92 "mn-mailbox-view.gob"
+#line 94 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 617 "mn-mailbox-view.c"
+#line 641 "mn-mailbox-view.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -626,36 +650,36 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 	g_value_unset (&___param_values[0]);
 }
-#line 92 "mn-mailbox-view.gob"
+#line 94 "mn-mailbox-view.gob"
 static void 
 ___real_mn_mailbox_view_activate_paste (MNMailboxView * self G_GNUC_UNUSED)
-#line 633 "mn-mailbox-view.c"
+#line 657 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::activate_paste"
 {
-#line 94 "mn-mailbox-view.gob"
+#line 96 "mn-mailbox-view.gob"
 	
     gtk_clipboard_request_contents(global_clipboard,
 				   gnome_copied_files_atom,
 				   self_activate_paste_receive_cb,
 				   NULL);
   }}
-#line 644 "mn-mailbox-view.c"
+#line 668 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 101 "mn-mailbox-view.gob"
+#line 103 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_activate_paste_receive_cb (GtkClipboard * clipboard, GtkSelectionData * selection_data, gpointer data)
-#line 650 "mn-mailbox-view.c"
+#line 674 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::activate_paste_receive_cb"
-#line 101 "mn-mailbox-view.gob"
+#line 103 "mn-mailbox-view.gob"
 	g_return_if_fail (clipboard != NULL);
-#line 101 "mn-mailbox-view.gob"
+#line 103 "mn-mailbox-view.gob"
 	g_return_if_fail (selection_data != NULL);
-#line 657 "mn-mailbox-view.c"
+#line 681 "mn-mailbox-view.c"
 {
-#line 105 "mn-mailbox-view.gob"
+#line 107 "mn-mailbox-view.gob"
 	
     if (selection_data->type == gnome_copied_files_atom
 	&& selection_data->format == 8
@@ -700,13 +724,13 @@ mn_mailbox_view_activate_paste_receive_cb (GtkClipboard * clipboard, GtkSelectio
 	  }
       }
   }}
-#line 704 "mn-mailbox-view.c"
+#line 728 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 150 "mn-mailbox-view.gob"
+#line 152 "mn-mailbox-view.gob"
 void 
 mn_mailbox_view_activate_properties (MNMailboxView * self)
-#line 710 "mn-mailbox-view.c"
+#line 734 "mn-mailbox-view.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -714,11 +738,11 @@ mn_mailbox_view_activate_properties (MNMailboxView * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 150 "mn-mailbox-view.gob"
+#line 152 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 150 "mn-mailbox-view.gob"
+#line 152 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 722 "mn-mailbox-view.c"
+#line 746 "mn-mailbox-view.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -731,42 +755,42 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 	g_value_unset (&___param_values[0]);
 }
-#line 150 "mn-mailbox-view.gob"
+#line 152 "mn-mailbox-view.gob"
 static void 
 ___real_mn_mailbox_view_activate_properties (MNMailboxView * self G_GNUC_UNUSED)
-#line 738 "mn-mailbox-view.c"
+#line 762 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::activate_properties"
 {
-#line 152 "mn-mailbox-view.gob"
+#line 154 "mn-mailbox-view.gob"
 	
     GtkTreeSelection *selection;
 
     selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self));
     gtk_tree_selection_selected_foreach(selection, self_activate_properties_cb, self);
   }}
-#line 749 "mn-mailbox-view.c"
+#line 773 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 159 "mn-mailbox-view.gob"
+#line 161 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_activate_properties_cb (GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data)
-#line 755 "mn-mailbox-view.c"
+#line 779 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::activate_properties_cb"
-#line 159 "mn-mailbox-view.gob"
+#line 161 "mn-mailbox-view.gob"
 	g_return_if_fail (model != NULL);
-#line 159 "mn-mailbox-view.gob"
+#line 161 "mn-mailbox-view.gob"
 	g_return_if_fail (GTK_IS_TREE_MODEL (model));
-#line 159 "mn-mailbox-view.gob"
+#line 161 "mn-mailbox-view.gob"
 	g_return_if_fail (path != NULL);
-#line 159 "mn-mailbox-view.gob"
+#line 161 "mn-mailbox-view.gob"
 	g_return_if_fail (iter != NULL);
-#line 159 "mn-mailbox-view.gob"
+#line 161 "mn-mailbox-view.gob"
 	g_return_if_fail (data != NULL);
-#line 768 "mn-mailbox-view.c"
+#line 792 "mn-mailbox-view.c"
 {
-#line 164 "mn-mailbox-view.gob"
+#line 166 "mn-mailbox-view.gob"
 	
     Self *self = data;
     GtkWidget *toplevel;
@@ -780,119 +804,155 @@ mn_mailbox_view_activate_properties_cb (GtkTreeModel * model, GtkTreePath * path
     mn_mailbox_properties_dialog_set_uri(MN_MAILBOX_PROPERTIES_DIALOG(dialog), uri);
     g_object_unref(uri);
     
-    g_signal_connect(G_OBJECT(dialog),
+    g_signal_connect(dialog,
 		     "response",
 		     G_CALLBACK(self_properties_edit_response_h),
 		     NULL);
 
     gtk_widget_show(dialog);
   }}
-#line 791 "mn-mailbox-view.c"
+#line 815 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
 
 
-#line 293 "mn-mailbox-view.gob"
+#line 315 "mn-mailbox-view.gob"
 static void 
-___b_mn_mailbox_view_finalize (GObject * object G_GNUC_UNUSED)
-#line 799 "mn-mailbox-view.c"
-#define PARENT_HANDLER(___object) \
-	{ if(G_OBJECT_CLASS(parent_class)->finalize) \
-		(* G_OBJECT_CLASS(parent_class)->finalize)(___object); }
+mn_mailbox_view_append (MNMailboxView * self, MNMailbox * mailbox)
+#line 823 "mn-mailbox-view.c"
 {
-#define __GOB_FUNCTION__ "MN:Mailbox:View::finalize"
-#line 293 "mn-mailbox-view.gob"
-	g_return_if_fail (object != NULL);
-#line 293 "mn-mailbox-view.gob"
-	g_return_if_fail (G_IS_OBJECT (object));
-#line 809 "mn-mailbox-view.c"
+#define __GOB_FUNCTION__ "MN:Mailbox:View::append"
+#line 315 "mn-mailbox-view.gob"
+	g_return_if_fail (self != NULL);
+#line 315 "mn-mailbox-view.gob"
+	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
+#line 315 "mn-mailbox-view.gob"
+	g_return_if_fail (mailbox != NULL);
+#line 315 "mn-mailbox-view.gob"
+	g_return_if_fail (MN_IS_MAILBOX (mailbox));
+#line 834 "mn-mailbox-view.c"
 {
-#line 295 "mn-mailbox-view.gob"
+#line 317 "mn-mailbox-view.gob"
 	
-    g_signal_handlers_disconnect_by_func(mn_shell->mailboxes, self_update, object);
-    PARENT_HANDLER(object);
+    GtkTreeModel *model;
+    GtkTreeIter iter;
+
+    model = gtk_tree_view_get_model(GTK_TREE_VIEW(self));
+    gtk_list_store_append(GTK_LIST_STORE(model), &iter);
+    self_update_iter(self, &iter, mailbox);
   }}
-#line 816 "mn-mailbox-view.c"
+#line 845 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
-#undef PARENT_HANDLER
 
-#line 300 "mn-mailbox-view.gob"
+#line 326 "mn-mailbox-view.gob"
 static void 
-mn_mailbox_view_update (MNMailboxView * self)
-#line 823 "mn-mailbox-view.c"
+mn_mailbox_view_mailbox_added_h (MNMailboxes * mailboxes, MNMailbox * mailbox, gpointer user_data)
+#line 851 "mn-mailbox-view.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailbox:View::mailbox_added_h"
+#line 326 "mn-mailbox-view.gob"
+	g_return_if_fail (mailboxes != NULL);
+#line 326 "mn-mailbox-view.gob"
+	g_return_if_fail (MN_IS_MAILBOXES (mailboxes));
+#line 326 "mn-mailbox-view.gob"
+	g_return_if_fail (mailbox != NULL);
+#line 326 "mn-mailbox-view.gob"
+	g_return_if_fail (MN_IS_MAILBOX (mailbox));
+#line 326 "mn-mailbox-view.gob"
+	g_return_if_fail (user_data != NULL);
+#line 864 "mn-mailbox-view.c"
 {
-#define __GOB_FUNCTION__ "MN:Mailbox:View::update"
-#line 300 "mn-mailbox-view.gob"
-	g_return_if_fail (self != NULL);
-#line 300 "mn-mailbox-view.gob"
-	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 830 "mn-mailbox-view.c"
+#line 330 "mn-mailbox-view.gob"
+	
+    Self *self = user_data;
+
+    self_append(self, mailbox);
+  }}
+#line 872 "mn-mailbox-view.c"
+#undef __GOB_FUNCTION__
+
+#line 336 "mn-mailbox-view.gob"
+static void 
+mn_mailbox_view_mailbox_changed_h (MNMailboxes * mailboxes, MNMailbox * mailbox, gpointer user_data)
+#line 878 "mn-mailbox-view.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailbox:View::mailbox_changed_h"
+#line 336 "mn-mailbox-view.gob"
+	g_return_if_fail (mailboxes != NULL);
+#line 336 "mn-mailbox-view.gob"
+	g_return_if_fail (MN_IS_MAILBOXES (mailboxes));
+#line 336 "mn-mailbox-view.gob"
+	g_return_if_fail (mailbox != NULL);
+#line 336 "mn-mailbox-view.gob"
+	g_return_if_fail (MN_IS_MAILBOX (mailbox));
+#line 336 "mn-mailbox-view.gob"
+	g_return_if_fail (user_data != NULL);
+#line 891 "mn-mailbox-view.c"
 {
-#line 302 "mn-mailbox-view.gob"
+#line 340 "mn-mailbox-view.gob"
 	
-    GtkTreeModel *model;
+    Self *self = user_data;
     GtkTreeIter iter;
-    gboolean valid;
-    GSList *l;
-      
-    model = gtk_tree_view_get_model(GTK_TREE_VIEW(self));
 
-    /* first step: remove or update old mailboxes */
+    if (self_find_mailbox(self, mailbox, &iter))
+      self_update_iter(self, &iter, mailbox);
+  }}
+#line 901 "mn-mailbox-view.c"
+#undef __GOB_FUNCTION__
 
-    valid = gtk_tree_model_get_iter_first(model, &iter);
-    while (valid)
-      {
-	MNURI *uri;
-	GSList *elem;
-      
-	gtk_tree_model_get(model, &iter, COLUMN_URI, &uri, -1);
-	elem = mn_mailboxes_find_uri(mn_shell->mailboxes, uri);
-	g_object_unref(uri);
-      
-	if (elem)
-	  {
-	    self_update_iter(self, &iter, elem->data);
-	    valid = gtk_tree_model_iter_next(model, &iter);
-	  }
-	else
-	  valid = gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
-      }
-  
-    /* second step: add new mailboxes */
+#line 348 "mn-mailbox-view.gob"
+static void 
+mn_mailbox_view_mailbox_removed_h (MNMailboxes * mailboxes, MNMailbox * mailbox, gpointer user_data)
+#line 907 "mn-mailbox-view.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailbox:View::mailbox_removed_h"
+#line 348 "mn-mailbox-view.gob"
+	g_return_if_fail (mailboxes != NULL);
+#line 348 "mn-mailbox-view.gob"
+	g_return_if_fail (MN_IS_MAILBOXES (mailboxes));
+#line 348 "mn-mailbox-view.gob"
+	g_return_if_fail (mailbox != NULL);
+#line 348 "mn-mailbox-view.gob"
+	g_return_if_fail (MN_IS_MAILBOX (mailbox));
+#line 348 "mn-mailbox-view.gob"
+	g_return_if_fail (user_data != NULL);
+#line 920 "mn-mailbox-view.c"
+{
+#line 352 "mn-mailbox-view.gob"
+	
+    Self *self = user_data;
+    GtkTreeIter iter;
 
-    MN_LIST_FOREACH(l, mn_mailboxes_get(mn_shell->mailboxes))
+    if (self_find_mailbox(self, mailbox, &iter))
       {
-	MNMailbox *mailbox = l->data;
-
-	if (! self_has_mailbox(self, mailbox))
-	  {
-	    gtk_list_store_append(GTK_LIST_STORE(model), &iter);
-	    self_update_iter(self, &iter, mailbox);
-	  }
+	GtkTreeModel *model;
+	
+	model = gtk_tree_view_get_model(GTK_TREE_VIEW(self));
+	gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
       }
   }}
-#line 875 "mn-mailbox-view.c"
+#line 935 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 345 "mn-mailbox-view.gob"
+#line 365 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_update_iter (MNMailboxView * self, GtkTreeIter * iter, MNMailbox * mailbox)
-#line 881 "mn-mailbox-view.c"
+#line 941 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::update_iter"
-#line 345 "mn-mailbox-view.gob"
+#line 365 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 345 "mn-mailbox-view.gob"
+#line 365 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 345 "mn-mailbox-view.gob"
+#line 365 "mn-mailbox-view.gob"
 	g_return_if_fail (iter != NULL);
-#line 345 "mn-mailbox-view.gob"
+#line 365 "mn-mailbox-view.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 345 "mn-mailbox-view.gob"
+#line 365 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 894 "mn-mailbox-view.c"
+#line 954 "mn-mailbox-view.c"
 {
-#line 349 "mn-mailbox-view.gob"
+#line 369 "mn-mailbox-view.gob"
 	
     MNMailboxClass *class;
     const char *stock_id;
@@ -918,66 +978,72 @@ mn_mailbox_view_update_iter (MNMailboxView * self, GtkTreeIter * iter, MNMailbox
 		       COLUMN_FORMAT, class->format,
 		       -1);
   }}
-#line 922 "mn-mailbox-view.c"
+#line 982 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 375 "mn-mailbox-view.gob"
+#line 395 "mn-mailbox-view.gob"
 static gboolean 
-mn_mailbox_view_has_mailbox (MNMailboxView * self, MNMailbox * mailbox)
-#line 928 "mn-mailbox-view.c"
+mn_mailbox_view_find_mailbox (MNMailboxView * self, MNMailbox * mailbox, GtkTreeIter * iter)
+#line 988 "mn-mailbox-view.c"
 {
-#define __GOB_FUNCTION__ "MN:Mailbox:View::has_mailbox"
-#line 375 "mn-mailbox-view.gob"
+#define __GOB_FUNCTION__ "MN:Mailbox:View::find_mailbox"
+#line 395 "mn-mailbox-view.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 375 "mn-mailbox-view.gob"
+#line 395 "mn-mailbox-view.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX_VIEW (self), (gboolean )0);
-#line 375 "mn-mailbox-view.gob"
+#line 395 "mn-mailbox-view.gob"
 	g_return_val_if_fail (mailbox != NULL, (gboolean )0);
-#line 375 "mn-mailbox-view.gob"
+#line 395 "mn-mailbox-view.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX (mailbox), (gboolean )0);
-#line 939 "mn-mailbox-view.c"
+#line 395 "mn-mailbox-view.gob"
+	g_return_val_if_fail (iter != NULL, (gboolean )0);
+#line 1001 "mn-mailbox-view.c"
 {
-#line 377 "mn-mailbox-view.gob"
+#line 399 "mn-mailbox-view.gob"
 	
     GtkTreeModel *model;
-    GtkTreeIter iter;
+    GtkTreeIter our_iter;
     gboolean valid;
-    gboolean has = FALSE;
 
     model = gtk_tree_view_get_model(GTK_TREE_VIEW(self));
-    valid = gtk_tree_model_get_iter_first(model, &iter);
+    valid = gtk_tree_model_get_iter_first(model, &our_iter);
+
     while (valid)
       {
 	MNURI *uri;
+	gboolean is;
 	
-	gtk_tree_model_get(model, &iter, COLUMN_URI, &uri, -1);
-	has = ! strcmp(uri->text, mailbox->uri->text);
+	gtk_tree_model_get(model, &our_iter, COLUMN_URI, &uri, -1);
+	is = ! strcmp(uri->text, mailbox->uri->text);
 	g_object_unref(uri);
 
-	if (has)
-	  break;
+	if (is)
+	  {
+	    *iter = our_iter;
+	    return TRUE;
+	  }
 
-	valid = gtk_tree_model_iter_next(model, &iter);
+	valid = gtk_tree_model_iter_next(model, &our_iter);
       }
 
-    return has;
+    return FALSE;
   }}
-#line 966 "mn-mailbox-view.c"
+#line 1032 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 402 "mn-mailbox-view.gob"
+#line 428 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_update_sensitivity (MNMailboxView * self)
-#line 972 "mn-mailbox-view.c"
+#line 1038 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::update_sensitivity"
-#line 402 "mn-mailbox-view.gob"
+#line 428 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 402 "mn-mailbox-view.gob"
+#line 428 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 979 "mn-mailbox-view.c"
+#line 1045 "mn-mailbox-view.c"
 {
-#line 404 "mn-mailbox-view.gob"
+#line 430 "mn-mailbox-view.gob"
 	
     GtkTreeSelection *selection;
     gboolean has_selection;
@@ -990,22 +1056,22 @@ mn_mailbox_view_update_sensitivity (MNMailboxView * self)
     gtk_widget_set_sensitive(selfp->copy_item, has_selection);
     gtk_widget_set_sensitive(selfp->properties_item, has_selection);
   }}
-#line 994 "mn-mailbox-view.c"
+#line 1060 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 417 "mn-mailbox-view.gob"
+#line 443 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_remove_mailbox (MNMailboxView * self)
-#line 1000 "mn-mailbox-view.c"
+#line 1066 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::remove_mailbox"
-#line 417 "mn-mailbox-view.gob"
+#line 443 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 417 "mn-mailbox-view.gob"
+#line 443 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 1007 "mn-mailbox-view.c"
+#line 1073 "mn-mailbox-view.c"
 {
-#line 419 "mn-mailbox-view.gob"
+#line 445 "mn-mailbox-view.gob"
 	
     GtkTreeSelection *selection;
     GSList *gconf_mailboxes;
@@ -1017,28 +1083,28 @@ mn_mailbox_view_remove_mailbox (MNMailboxView * self)
     eel_gconf_set_string_list(MN_CONF_MAILBOXES, gconf_mailboxes);
     eel_g_slist_free_deep(gconf_mailboxes);
   }}
-#line 1021 "mn-mailbox-view.c"
+#line 1087 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 431 "mn-mailbox-view.gob"
+#line 457 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_remove_mailbox_cb (GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data)
-#line 1027 "mn-mailbox-view.c"
+#line 1093 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::remove_mailbox_cb"
-#line 431 "mn-mailbox-view.gob"
+#line 457 "mn-mailbox-view.gob"
 	g_return_if_fail (model != NULL);
-#line 431 "mn-mailbox-view.gob"
+#line 457 "mn-mailbox-view.gob"
 	g_return_if_fail (GTK_IS_TREE_MODEL (model));
-#line 431 "mn-mailbox-view.gob"
+#line 457 "mn-mailbox-view.gob"
 	g_return_if_fail (path != NULL);
-#line 431 "mn-mailbox-view.gob"
+#line 457 "mn-mailbox-view.gob"
 	g_return_if_fail (iter != NULL);
-#line 431 "mn-mailbox-view.gob"
+#line 457 "mn-mailbox-view.gob"
 	g_return_if_fail (data != NULL);
-#line 1040 "mn-mailbox-view.c"
+#line 1106 "mn-mailbox-view.c"
 {
-#line 436 "mn-mailbox-view.gob"
+#line 462 "mn-mailbox-view.gob"
 	
     GSList **gconf_mailboxes = data;
     MNURI *uri;
@@ -1052,22 +1118,22 @@ mn_mailbox_view_remove_mailbox_cb (GtkTreeModel * model, GtkTreePath * path, Gtk
 
     g_object_unref(uri);
   }}
-#line 1056 "mn-mailbox-view.c"
+#line 1122 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 450 "mn-mailbox-view.gob"
+#line 476 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_copy_mailbox (MNMailboxView * self)
-#line 1062 "mn-mailbox-view.c"
+#line 1128 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::copy_mailbox"
-#line 450 "mn-mailbox-view.gob"
+#line 476 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 450 "mn-mailbox-view.gob"
+#line 476 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 1069 "mn-mailbox-view.c"
+#line 1135 "mn-mailbox-view.c"
 {
-#line 452 "mn-mailbox-view.gob"
+#line 478 "mn-mailbox-view.gob"
 	
     GtkTreeSelection *selection;
     GSList *uri_list = NULL;
@@ -1089,28 +1155,28 @@ mn_mailbox_view_copy_mailbox (MNMailboxView * self)
 					 gnome_copied_files);
     g_return_if_fail(status == TRUE);
   }}
-#line 1093 "mn-mailbox-view.c"
+#line 1159 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 474 "mn-mailbox-view.gob"
+#line 500 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_copy_mailbox_cb (GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data)
-#line 1099 "mn-mailbox-view.c"
+#line 1165 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::copy_mailbox_cb"
-#line 474 "mn-mailbox-view.gob"
+#line 500 "mn-mailbox-view.gob"
 	g_return_if_fail (model != NULL);
-#line 474 "mn-mailbox-view.gob"
+#line 500 "mn-mailbox-view.gob"
 	g_return_if_fail (GTK_IS_TREE_MODEL (model));
-#line 474 "mn-mailbox-view.gob"
+#line 500 "mn-mailbox-view.gob"
 	g_return_if_fail (path != NULL);
-#line 474 "mn-mailbox-view.gob"
+#line 500 "mn-mailbox-view.gob"
 	g_return_if_fail (iter != NULL);
-#line 474 "mn-mailbox-view.gob"
+#line 500 "mn-mailbox-view.gob"
 	g_return_if_fail (data != NULL);
-#line 1112 "mn-mailbox-view.c"
+#line 1178 "mn-mailbox-view.c"
 {
-#line 479 "mn-mailbox-view.gob"
+#line 505 "mn-mailbox-view.gob"
 	
     GSList **uri_list = data;
     MNURI *uri;
@@ -1119,89 +1185,89 @@ mn_mailbox_view_copy_mailbox_cb (GtkTreeModel * model, GtkTreePath * path, GtkTr
     *uri_list = g_slist_append(*uri_list, g_strdup(uri->text));
     g_object_unref(uri);
   }}
-#line 1123 "mn-mailbox-view.c"
+#line 1189 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 488 "mn-mailbox-view.gob"
+#line 514 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_get_clipboard_cb (GtkClipboard * clipboard, GtkSelectionData * selection_data, unsigned int info, gpointer user_data_or_owner)
-#line 1129 "mn-mailbox-view.c"
+#line 1195 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::get_clipboard_cb"
-#line 488 "mn-mailbox-view.gob"
+#line 514 "mn-mailbox-view.gob"
 	g_return_if_fail (clipboard != NULL);
-#line 488 "mn-mailbox-view.gob"
+#line 514 "mn-mailbox-view.gob"
 	g_return_if_fail (selection_data != NULL);
-#line 488 "mn-mailbox-view.gob"
+#line 514 "mn-mailbox-view.gob"
 	g_return_if_fail (user_data_or_owner != NULL);
-#line 1138 "mn-mailbox-view.c"
+#line 1204 "mn-mailbox-view.c"
 {
-#line 493 "mn-mailbox-view.gob"
+#line 519 "mn-mailbox-view.gob"
 	
     const char *gnome_copied_files = user_data_or_owner;
     gtk_selection_data_set(selection_data, gnome_copied_files_atom, 8, gnome_copied_files, strlen(gnome_copied_files));
   }}
-#line 1145 "mn-mailbox-view.c"
+#line 1211 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 498 "mn-mailbox-view.gob"
+#line 524 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_clear_clipboard_cb (GtkClipboard * clipboard, gpointer user_data_or_owner)
-#line 1151 "mn-mailbox-view.c"
+#line 1217 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::clear_clipboard_cb"
-#line 498 "mn-mailbox-view.gob"
+#line 524 "mn-mailbox-view.gob"
 	g_return_if_fail (clipboard != NULL);
-#line 498 "mn-mailbox-view.gob"
+#line 524 "mn-mailbox-view.gob"
 	g_return_if_fail (user_data_or_owner != NULL);
-#line 1158 "mn-mailbox-view.c"
+#line 1224 "mn-mailbox-view.c"
 {
-#line 501 "mn-mailbox-view.gob"
+#line 527 "mn-mailbox-view.gob"
 	
     char *gnome_copied_files = user_data_or_owner;
     g_free(gnome_copied_files);
   }}
-#line 1165 "mn-mailbox-view.c"
+#line 1231 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 506 "mn-mailbox-view.gob"
+#line 532 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_select_all (MNMailboxView * self)
-#line 1171 "mn-mailbox-view.c"
+#line 1237 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::select_all"
-#line 506 "mn-mailbox-view.gob"
+#line 532 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 506 "mn-mailbox-view.gob"
+#line 532 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 1178 "mn-mailbox-view.c"
+#line 1244 "mn-mailbox-view.c"
 {
-#line 508 "mn-mailbox-view.gob"
+#line 534 "mn-mailbox-view.gob"
 	
     GtkTreeSelection *selection;
     
     selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self));
     gtk_tree_selection_select_all(selection);
   }}
-#line 1187 "mn-mailbox-view.c"
+#line 1253 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 515 "mn-mailbox-view.gob"
+#line 541 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_properties_add_response_h (GtkDialog * dialog, int response, gpointer user_data)
-#line 1193 "mn-mailbox-view.c"
+#line 1259 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::properties_add_response_h"
-#line 515 "mn-mailbox-view.gob"
+#line 541 "mn-mailbox-view.gob"
 	g_return_if_fail (dialog != NULL);
-#line 515 "mn-mailbox-view.gob"
+#line 541 "mn-mailbox-view.gob"
 	g_return_if_fail (GTK_IS_DIALOG (dialog));
-#line 1200 "mn-mailbox-view.c"
+#line 1266 "mn-mailbox-view.c"
 {
-#line 519 "mn-mailbox-view.gob"
+#line 545 "mn-mailbox-view.gob"
 	
     if (response == GTK_RESPONSE_HELP)
-      mn_display_help("mailbox-properties");
+      mn_display_help(GTK_WINDOW(dialog), "mailbox-properties");
     else if (response == GTK_RESPONSE_CANCEL)
       gtk_widget_destroy(GTK_WIDGET(dialog));
     else if (response == GTK_RESPONSE_ACCEPT)
@@ -1223,30 +1289,30 @@ mn_mailbox_view_properties_add_response_h (GtkDialog * dialog, int response, gpo
 	    gtk_widget_destroy(GTK_WIDGET(dialog));
 	  }
 	else
-	  mn_error_dialog(NULL, _("Unable to add mailbox"), _("The mailbox is already in the list."));
+	  mn_error_dialog(GTK_WINDOW(dialog), NULL, NULL, _("Unable to add mailbox"), _("The mailbox is already in the list."));
 
 	g_object_unref(uri);
       }
   }}
-#line 1232 "mn-mailbox-view.c"
+#line 1298 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 549 "mn-mailbox-view.gob"
+#line 575 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_properties_edit_response_h (GtkDialog * dialog, int response, gpointer user_data)
-#line 1238 "mn-mailbox-view.c"
+#line 1304 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::properties_edit_response_h"
-#line 549 "mn-mailbox-view.gob"
+#line 575 "mn-mailbox-view.gob"
 	g_return_if_fail (dialog != NULL);
-#line 549 "mn-mailbox-view.gob"
+#line 575 "mn-mailbox-view.gob"
 	g_return_if_fail (GTK_IS_DIALOG (dialog));
-#line 1245 "mn-mailbox-view.c"
+#line 1311 "mn-mailbox-view.c"
 {
-#line 553 "mn-mailbox-view.gob"
+#line 579 "mn-mailbox-view.gob"
 	
     if (response == GTK_RESPONSE_HELP)
-      mn_display_help("mailbox-properties");
+      mn_display_help(GTK_WINDOW(dialog), "mailbox-properties");
     else
       {
 	if (response == GTK_RESPONSE_APPLY || response == GTK_RESPONSE_OK)
@@ -1255,22 +1321,22 @@ mn_mailbox_view_properties_edit_response_h (GtkDialog * dialog, int response, gp
 	  gtk_widget_destroy(GTK_WIDGET(dialog));
       }
   }}
-#line 1259 "mn-mailbox-view.c"
+#line 1325 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 565 "mn-mailbox-view.gob"
+#line 591 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_popup_menu (MNMailboxView * self, unsigned int button, guint32 activate_time)
-#line 1265 "mn-mailbox-view.c"
+#line 1331 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::popup_menu"
-#line 565 "mn-mailbox-view.gob"
+#line 591 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 565 "mn-mailbox-view.gob"
+#line 591 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 1272 "mn-mailbox-view.c"
+#line 1338 "mn-mailbox-view.c"
 {
-#line 567 "mn-mailbox-view.gob"
+#line 593 "mn-mailbox-view.gob"
 	
     gtk_clipboard_request_contents(global_clipboard,
 				   gnome_copied_files_atom,
@@ -1278,24 +1344,24 @@ mn_mailbox_view_popup_menu (MNMailboxView * self, unsigned int button, guint32 a
 				   self);
     gtk_menu_popup(GTK_MENU(selfp->menu), NULL, NULL, NULL, NULL, button, activate_time);
   }}
-#line 1282 "mn-mailbox-view.c"
+#line 1348 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 575 "mn-mailbox-view.gob"
+#line 601 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_popup_menu_receive_cb (GtkClipboard * clipboard, GtkSelectionData * selection_data, gpointer data)
-#line 1288 "mn-mailbox-view.c"
+#line 1354 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::popup_menu_receive_cb"
-#line 575 "mn-mailbox-view.gob"
+#line 601 "mn-mailbox-view.gob"
 	g_return_if_fail (clipboard != NULL);
-#line 575 "mn-mailbox-view.gob"
+#line 601 "mn-mailbox-view.gob"
 	g_return_if_fail (selection_data != NULL);
-#line 575 "mn-mailbox-view.gob"
+#line 601 "mn-mailbox-view.gob"
 	g_return_if_fail (data != NULL);
-#line 1297 "mn-mailbox-view.c"
+#line 1363 "mn-mailbox-view.c"
 {
-#line 579 "mn-mailbox-view.gob"
+#line 605 "mn-mailbox-view.gob"
 	
     Self *self = data;
     gboolean can_paste = FALSE;
@@ -1323,89 +1389,89 @@ mn_mailbox_view_popup_menu_receive_cb (GtkClipboard * clipboard, GtkSelectionDat
 
     gtk_widget_set_sensitive(selfp->paste_item, can_paste);
   }}
-#line 1327 "mn-mailbox-view.c"
+#line 1393 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 607 "mn-mailbox-view.gob"
+#line 633 "mn-mailbox-view.gob"
 static gboolean 
 mn_mailbox_view_popup_menu_h (GtkWidget * widget, gpointer user_data)
-#line 1333 "mn-mailbox-view.c"
+#line 1399 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::popup_menu_h"
-#line 607 "mn-mailbox-view.gob"
+#line 633 "mn-mailbox-view.gob"
 	g_return_val_if_fail (widget != NULL, (gboolean )0);
-#line 607 "mn-mailbox-view.gob"
+#line 633 "mn-mailbox-view.gob"
 	g_return_val_if_fail (GTK_IS_WIDGET (widget), (gboolean )0);
-#line 1340 "mn-mailbox-view.c"
+#line 1406 "mn-mailbox-view.c"
 {
-#line 610 "mn-mailbox-view.gob"
+#line 636 "mn-mailbox-view.gob"
 	
     self_popup_menu(SELF(widget), 0, gtk_get_current_event_time());
     return TRUE;		/* a menu was activated */
   }}
-#line 1347 "mn-mailbox-view.c"
+#line 1413 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 615 "mn-mailbox-view.gob"
+#line 641 "mn-mailbox-view.gob"
 static gboolean 
 mn_mailbox_view_button_press_event_h (GtkWidget * widget, GdkEventButton * event, gpointer user_data)
-#line 1353 "mn-mailbox-view.c"
+#line 1419 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::button_press_event_h"
-#line 615 "mn-mailbox-view.gob"
+#line 641 "mn-mailbox-view.gob"
 	g_return_val_if_fail (widget != NULL, (gboolean )0);
-#line 615 "mn-mailbox-view.gob"
+#line 641 "mn-mailbox-view.gob"
 	g_return_val_if_fail (GTK_IS_WIDGET (widget), (gboolean )0);
-#line 615 "mn-mailbox-view.gob"
+#line 641 "mn-mailbox-view.gob"
 	g_return_val_if_fail (event != NULL, (gboolean )0);
-#line 1362 "mn-mailbox-view.c"
+#line 1428 "mn-mailbox-view.c"
 {
-#line 619 "mn-mailbox-view.gob"
+#line 645 "mn-mailbox-view.gob"
 	
     if (event->button == 3)
       self_popup_menu(SELF(widget), event->button, event->time);
     
     return FALSE;			/* propagate event */
   }}
-#line 1371 "mn-mailbox-view.c"
+#line 1437 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 626 "mn-mailbox-view.gob"
+#line 652 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_row_activated_h (GtkTreeView * treeview, GtkTreePath * path, GtkTreeViewColumn * column, gpointer user_data)
-#line 1377 "mn-mailbox-view.c"
+#line 1443 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::row_activated_h"
-#line 626 "mn-mailbox-view.gob"
+#line 652 "mn-mailbox-view.gob"
 	g_return_if_fail (treeview != NULL);
-#line 626 "mn-mailbox-view.gob"
+#line 652 "mn-mailbox-view.gob"
 	g_return_if_fail (GTK_IS_TREE_VIEW (treeview));
-#line 626 "mn-mailbox-view.gob"
+#line 652 "mn-mailbox-view.gob"
 	g_return_if_fail (path != NULL);
-#line 626 "mn-mailbox-view.gob"
+#line 652 "mn-mailbox-view.gob"
 	g_return_if_fail (column != NULL);
-#line 626 "mn-mailbox-view.gob"
+#line 652 "mn-mailbox-view.gob"
 	g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (column));
-#line 1390 "mn-mailbox-view.c"
+#line 1456 "mn-mailbox-view.c"
 {
-#line 631 "mn-mailbox-view.gob"
+#line 657 "mn-mailbox-view.gob"
 	
     self_activate_properties(SELF(treeview));
   }}
-#line 1396 "mn-mailbox-view.c"
+#line 1462 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 635 "mn-mailbox-view.gob"
+#line 661 "mn-mailbox-view.gob"
 GtkWidget * 
 mn_mailbox_view_new (void)
-#line 1402 "mn-mailbox-view.c"
+#line 1468 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::new"
 {
-#line 637 "mn-mailbox-view.gob"
+#line 663 "mn-mailbox-view.gob"
 	
     g_return_val_if_fail(mn_shell != NULL, NULL);
     return GTK_WIDGET(GET_NEW);
   }}
-#line 1411 "mn-mailbox-view.c"
+#line 1477 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-mailbox-view.gob b/src/mn-mailbox-view.gob
@@ -16,6 +16,8 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+requires 2.0.10
+
 %headertop{
 #include <gtk/gtk.h>
 %}
@@ -62,11 +64,11 @@ class MN:Mailbox:View from Gtk:Tree:View
     toplevel = gtk_widget_get_toplevel(GTK_WIDGET(self));
     dialog = mn_mailbox_properties_dialog_new((GtkWindow *) toplevel, MN_MAILBOX_PROPERTIES_DIALOG_MODE_ADD);
 
-    g_signal_connect(G_OBJECT(dialog),
+    g_signal_connect(dialog,
 		     "response",
 		     G_CALLBACK(self_properties_add_response_h),
 		     NULL);
-    
+
     gtk_widget_show(dialog);
   }
 
@@ -174,7 +176,7 @@ class MN:Mailbox:View from Gtk:Tree:View
     mn_mailbox_properties_dialog_set_uri(MN_MAILBOX_PROPERTIES_DIALOG(dialog), uri);
     g_object_unref(uri);
     
-    g_signal_connect(G_OBJECT(dialog),
+    g_signal_connect(dialog,
 		     "response",
 		     G_CALLBACK(self_properties_edit_response_h),
 		     NULL);
@@ -220,6 +222,9 @@ class MN:Mailbox:View from Gtk:Tree:View
     GtkTreeViewColumn *column;
     GtkCellRenderer *renderer;
     GtkTreeSelection *selection;
+    GSList *l;
+
+    /* popup menu */
 
     shell = GTK_MENU_SHELL(selfp->menu);
     
@@ -234,13 +239,15 @@ class MN:Mailbox:View from Gtk:Tree:View
     mn_menu_shell_append(shell, NULL, NULL);
     selfp->properties_item = mn_menu_shell_append(shell, GTK_STOCK_PROPERTIES, NULL);
     
-    g_signal_connect_swapped(G_OBJECT(add_item), "activate", G_CALLBACK(self_activate_add), self);
-    g_signal_connect_swapped(G_OBJECT(selfp->remove_item), "activate", G_CALLBACK(self_activate_remove), self);
-    g_signal_connect_swapped(G_OBJECT(selfp->cut_item), "activate", G_CALLBACK(self_activate_cut), self);
-    g_signal_connect_swapped(G_OBJECT(selfp->copy_item), "activate", G_CALLBACK(self_activate_copy), self);
-    g_signal_connect_swapped(G_OBJECT(selfp->paste_item), "activate", G_CALLBACK(self_activate_paste), self);
-    g_signal_connect_swapped(G_OBJECT(select_all_item), "activate", G_CALLBACK(self_select_all), self);
-    g_signal_connect_swapped(G_OBJECT(selfp->properties_item), "activate", G_CALLBACK(self_activate_properties), self);
+    g_signal_connect_swapped(add_item, "activate", G_CALLBACK(self_activate_add), self);
+    g_signal_connect_swapped(selfp->remove_item, "activate", G_CALLBACK(self_activate_remove), self);
+    g_signal_connect_swapped(selfp->cut_item, "activate", G_CALLBACK(self_activate_cut), self);
+    g_signal_connect_swapped(selfp->copy_item, "activate", G_CALLBACK(self_activate_copy), self);
+    g_signal_connect_swapped(selfp->paste_item, "activate", G_CALLBACK(self_activate_paste), self);
+    g_signal_connect_swapped(select_all_item, "activate", G_CALLBACK(self_select_all), self);
+    g_signal_connect_swapped(selfp->properties_item, "activate", G_CALLBACK(self_activate_properties), self);
+
+    /* store */
 
     store = gtk_list_store_new(N_COLUMNS,
 			       MN_TYPE_URI,
@@ -250,9 +257,11 @@ class MN:Mailbox:View from Gtk:Tree:View
     gtk_tree_view_set_model(GTK_TREE_VIEW(self), GTK_TREE_MODEL(store));
     g_object_unref(store);
     
+    /* mailbox column */
+
     column = gtk_tree_view_column_new();
     gtk_tree_view_column_set_title(column, _("Mailbox"));
-    gtk_tree_view_column_set_resizable(column, TRUE);
+    gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
     gtk_tree_view_column_set_sort_column_id(column, COLUMN_MAILBOX);
 
     renderer = gtk_cell_renderer_pixbuf_new();
@@ -262,83 +271,94 @@ class MN:Mailbox:View from Gtk:Tree:View
     renderer = gtk_cell_renderer_text_new();
     gtk_tree_view_column_pack_start(column, renderer, TRUE);
     gtk_tree_view_column_add_attribute(column, renderer, "text", COLUMN_MAILBOX);
-    
+
     gtk_tree_view_append_column(GTK_TREE_VIEW(self), column);
 
+    /* format column */
+
     column = gtk_tree_view_column_new_with_attributes(_("Format"),
 						      gtk_cell_renderer_text_new(),
 						      "text", COLUMN_FORMAT,
 						      NULL);
 
-    gtk_tree_view_column_set_resizable(column, TRUE);
+    gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
     gtk_tree_view_column_set_sort_column_id(column, COLUMN_FORMAT);
     gtk_tree_view_append_column(GTK_TREE_VIEW(self), column);
 
+    /* misc */
+
     gtk_tree_view_set_search_column(GTK_TREE_VIEW(self), COLUMN_MAILBOX);
 
     selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self));
     gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE);
     
-    self_update(self);
+    MN_LIST_FOREACH(l, mn_mailboxes_get(mn_shell->mailboxes))
+      self_append(self, l->data);
     self_update_sensitivity(self);
 
-    g_signal_connect_swapped(G_OBJECT(mn_shell->mailboxes), "list-changed", G_CALLBACK(self_update), self);
-    g_signal_connect_swapped(G_OBJECT(selection), "changed", G_CALLBACK(self_update_sensitivity), self);
+    mn_g_object_connect(self,
+			mn_shell->mailboxes,
+			"signal::mailbox-added", self_mailbox_added_h, self,
+			"signal::mailbox-changed", self_mailbox_changed_h, self,
+			"signal::mailbox-removed", self_mailbox_removed_h, self,
+			NULL);
+
+    g_signal_connect_swapped(selection, "changed", G_CALLBACK(self_update_sensitivity), self);
 
-    g_signal_connect(G_OBJECT(self), "popup-menu", G_CALLBACK(self_popup_menu_h), NULL);
-    g_signal_connect(G_OBJECT(self), "button-press-event", G_CALLBACK(self_button_press_event_h), NULL);
-    g_signal_connect(G_OBJECT(self), "row-activated", G_CALLBACK(self_row_activated_h), NULL);
+    g_object_connect(self,
+		     "signal::popup-menu", self_popup_menu_h, NULL,
+		     "signal::button-press-event", self_button_press_event_h, NULL,
+		     "signal::row-activated", self_row_activated_h, NULL,
+		     NULL);
   }
 
-  override (G:Object) void
-    finalize (G:Object *object (check null type))
+  private void
+    append (self, MN:Mailbox *mailbox (check null type))
   {
-    g_signal_handlers_disconnect_by_func(mn_shell->mailboxes, self_update, object);
-    PARENT_HANDLER(object);
+    GtkTreeModel *model;
+    GtkTreeIter iter;
+
+    model = gtk_tree_view_get_model(GTK_TREE_VIEW(self));
+    gtk_list_store_append(GTK_LIST_STORE(model), &iter);
+    self_update_iter(self, &iter, mailbox);
   }
   
   private void
-    update (self)
+    mailbox_added_h (MN:Mailboxes *mailboxes (check null type),
+		     MN:Mailbox *mailbox (check null type),
+		     gpointer user_data (check null))
   {
-    GtkTreeModel *model;
+    Self *self = user_data;
+
+    self_append(self, mailbox);
+  }
+
+  private void
+    mailbox_changed_h (MN:Mailboxes *mailboxes (check null type),
+		       MN:Mailbox *mailbox (check null type),
+		       gpointer user_data (check null))
+  {
+    Self *self = user_data;
     GtkTreeIter iter;
-    gboolean valid;
-    GSList *l;
-      
-    model = gtk_tree_view_get_model(GTK_TREE_VIEW(self));
 
-    /* first step: remove or update old mailboxes */
+    if (self_find_mailbox(self, mailbox, &iter))
+      self_update_iter(self, &iter, mailbox);
+  }
 
-    valid = gtk_tree_model_get_iter_first(model, &iter);
-    while (valid)
-      {
-	MNURI *uri;
-	GSList *elem;
-      
-	gtk_tree_model_get(model, &iter, COLUMN_URI, &uri, -1);
-	elem = mn_mailboxes_find_uri(mn_shell->mailboxes, uri);
-	g_object_unref(uri);
-      
-	if (elem)
-	  {
-	    self_update_iter(self, &iter, elem->data);
-	    valid = gtk_tree_model_iter_next(model, &iter);
-	  }
-	else
-	  valid = gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
-      }
-  
-    /* second step: add new mailboxes */
+  private void
+    mailbox_removed_h (MN:Mailboxes *mailboxes (check null type),
+		       MN:Mailbox *mailbox (check null type),
+		       gpointer user_data (check null))
+  {
+    Self *self = user_data;
+    GtkTreeIter iter;
 
-    MN_LIST_FOREACH(l, mn_mailboxes_get(mn_shell->mailboxes))
+    if (self_find_mailbox(self, mailbox, &iter))
       {
-	MNMailbox *mailbox = l->data;
-
-	if (! self_has_mailbox(self, mailbox))
-	  {
-	    gtk_list_store_append(GTK_LIST_STORE(model), &iter);
-	    self_update_iter(self, &iter, mailbox);
-	  }
+	GtkTreeModel *model;
+	
+	model = gtk_tree_view_get_model(GTK_TREE_VIEW(self));
+	gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
       }
   }
   
@@ -373,30 +393,36 @@ class MN:Mailbox:View from Gtk:Tree:View
   }
 
   private gboolean
-    has_mailbox (self, MN:Mailbox *mailbox (check null type))
+    find_mailbox (self,
+		  MN:Mailbox *mailbox (check null type),
+		  GtkTreeIter *iter (check null))
   {
     GtkTreeModel *model;
-    GtkTreeIter iter;
+    GtkTreeIter our_iter;
     gboolean valid;
-    gboolean has = FALSE;
 
     model = gtk_tree_view_get_model(GTK_TREE_VIEW(self));
-    valid = gtk_tree_model_get_iter_first(model, &iter);
+    valid = gtk_tree_model_get_iter_first(model, &our_iter);
+
     while (valid)
       {
 	MNURI *uri;
+	gboolean is;
 	
-	gtk_tree_model_get(model, &iter, COLUMN_URI, &uri, -1);
-	has = ! strcmp(uri->text, mailbox->uri->text);
+	gtk_tree_model_get(model, &our_iter, COLUMN_URI, &uri, -1);
+	is = ! strcmp(uri->text, mailbox->uri->text);
 	g_object_unref(uri);
 
-	if (has)
-	  break;
+	if (is)
+	  {
+	    *iter = our_iter;
+	    return TRUE;
+	  }
 
-	valid = gtk_tree_model_iter_next(model, &iter);
+	valid = gtk_tree_model_iter_next(model, &our_iter);
       }
 
-    return has;
+    return FALSE;
   }
 
   private void
@@ -518,7 +544,7 @@ class MN:Mailbox:View from Gtk:Tree:View
 			       gpointer user_data)
   {
     if (response == GTK_RESPONSE_HELP)
-      mn_display_help("mailbox-properties");
+      mn_display_help(GTK_WINDOW(dialog), "mailbox-properties");
     else if (response == GTK_RESPONSE_CANCEL)
       gtk_widget_destroy(GTK_WIDGET(dialog));
     else if (response == GTK_RESPONSE_ACCEPT)
@@ -540,7 +566,7 @@ class MN:Mailbox:View from Gtk:Tree:View
 	    gtk_widget_destroy(GTK_WIDGET(dialog));
 	  }
 	else
-	  mn_error_dialog(NULL, _("Unable to add mailbox"), _("The mailbox is already in the list."));
+	  mn_error_dialog(GTK_WINDOW(dialog), NULL, NULL, _("Unable to add mailbox"), _("The mailbox is already in the list."));
 
 	g_object_unref(uri);
       }
@@ -552,7 +578,7 @@ class MN:Mailbox:View from Gtk:Tree:View
 				gpointer user_data)
   {
     if (response == GTK_RESPONSE_HELP)
-      mn_display_help("mailbox-properties");
+      mn_display_help(GTK_WINDOW(dialog), "mailbox-properties");
     else
       {
 	if (response == GTK_RESPONSE_APPLY || response == GTK_RESPONSE_OK)
diff --git a/src/mn-mailbox-view.h b/src/mn-mailbox-view.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (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.9) on Thu Sep  9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct  6 19:29:53 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 9
+#define GOB_VERSION_PATCHLEVEL 10
 
 #define selfp (self->_priv)
 
@@ -23,7 +23,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 44 "mn-mailbox.gob"
+#line 53 "mn-mailbox.gob"
 
 #include "config.h"
 #include <glib/gi18n-lib.h>
@@ -61,7 +61,9 @@ typedef struct
   gpointer	user_data;
 } NewInfo;
 
-#line 65 "mn-mailbox.c"
+ GType mn_mailbox_types[MN_MAILBOX_N_TYPES + 1];
+
+#line 67 "mn-mailbox.c"
 /* self casting macros */
 #define SELF(x) MN_MAILBOX(x)
 #define SELF_CONST(x) MN_MAILBOX_CONST(x)
@@ -79,22 +81,71 @@ typedef MNMailboxClass SelfClass;
 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_mailbox_init (MNMailbox * o) G_GNUC_UNUSED;
-static void mn_mailbox_class_init (MNMailboxClass * c) G_GNUC_UNUSED;
+static void mn_mailbox_messages_changed (MNMailbox * self, gboolean has_new) G_GNUC_UNUSED;
+static void mn_mailbox_class_init (MNMailboxClass * class) G_GNUC_UNUSED;
+static void ___c_mn_mailbox_finalize (GObject * object) G_GNUC_UNUSED;
 static gpointer mn_mailbox_new_async_thread (gpointer data) G_GNUC_UNUSED;
 static void mn_mailbox_monitor_cb (GnomeVFSMonitorHandle * handle, const char * monitor_uri, const char * info_uri, GnomeVFSMonitorEventType event_type, gpointer user_data) G_GNUC_UNUSED;
 static gboolean mn_mailbox_impl_is (MNMailbox * self, MNURI * uri) G_GNUC_UNUSED;
 static void mn_mailbox_impl_check (MNMailbox * self) G_GNUC_UNUSED;
 static void mn_mailbox_impl_threaded_check (MNMailbox * self) G_GNUC_UNUSED;
 
+/*
+ * Signal connection wrapper macro shortcuts
+ */
+#define self_connect__messages_changed(object,func,data)	mn_mailbox_connect__messages_changed((object),(func),(data))
+#define self_connect_after__messages_changed(object,func,data)	mn_mailbox_connect_after__messages_changed((object),(func),(data))
+#define self_connect_data__messages_changed(object,func,data,destroy_data,flags)	mn_mailbox_connect_data__messages_changed((object),(func),(data),(destroy_data),(flags))
+
+typedef void  (*___Sig1) (MNMailbox *, gboolean , gpointer);
+
+static void
+___marshal_Sig1 (GClosure *closure,
+	GValue *return_value G_GNUC_UNUSED,
+	guint n_param_values,
+	const GValue *param_values,
+	gpointer invocation_hint G_GNUC_UNUSED,
+	gpointer marshal_data)
+{
+	register ___Sig1 callback;
+	register GCClosure *cc = (GCClosure*) closure;
+	register gpointer data1, data2;
+
+	g_return_if_fail (n_param_values == 2);
+
+	if (G_CCLOSURE_SWAP_DATA (closure)) {
+		data1 = closure->data;
+		data2 = g_value_peek_pointer (param_values + 0);
+	} else {
+		data1 = g_value_peek_pointer (param_values + 0);
+		data2 = closure->data;
+	}
+
+	callback = (___Sig1) (marshal_data != NULL ? marshal_data : cc->callback);
+
+	callback ((MNMailbox *)data1,
+		(gboolean ) g_value_get_boolean (param_values + 1),
+		data2);
+}
+
+
+enum {
+	MESSAGES_CHANGED_SIGNAL,
+	LAST_SIGNAL
+};
+
 enum {
 	PROP_0,
 	PROP_URI,
 	PROP_NAME,
 	PROP_AUTOMATIC,
 	PROP_HAS_NEW,
+	PROP_MESSAGES,
 	PROP_ERROR
 };
 
+static guint object_signals[LAST_SIGNAL] = {0};
+
 /* pointer to the class of our parent */
 static GObjectClass *parent_class = NULL;
 
@@ -104,9 +155,11 @@ static GObjectClass *parent_class = NULL;
 #define self_set_automatic mn_mailbox_set_automatic
 #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
+#define self_set_messages mn_mailbox_set_messages
+#define self_messages_changed mn_mailbox_messages_changed
 #define self_set_error mn_mailbox_set_error
 #define self_get_error mn_mailbox_get_error
-#define self_get_types mn_mailbox_get_types
 #define self_new_async mn_mailbox_new_async
 #define self_new_async_thread mn_mailbox_new_async_thread
 #define self_set_init_error mn_mailbox_set_init_error
@@ -168,9 +221,9 @@ ___dispose (GObject *obj_self)
 	MNMailbox *self G_GNUC_UNUSED = MN_MAILBOX (obj_self);
 	if (G_OBJECT_CLASS (parent_class)->dispose) \
 		(* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
-#line 121 "mn-mailbox.gob"
-	if(self->uri) { ((*(void (*)(void *))g_object_unref)) (self->uri); self->uri = NULL; }
-#line 174 "mn-mailbox.c"
+#line 132 "mn-mailbox.gob"
+	if(self->uri) { g_object_unref ((gpointer) self->uri); self->uri = NULL; }
+#line 227 "mn-mailbox.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -179,26 +232,26 @@ static void
 ___finalize(GObject *obj_self)
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::finalize"
-	MNMailbox *self  G_GNUC_UNUSED = MN_MAILBOX (obj_self);
-	gpointer priv = self->_priv;
-	if(G_OBJECT_CLASS(parent_class)->finalize) \
-		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-#line 132 "mn-mailbox.gob"
-	if(self->_priv->name) { ((*(void (*)(void *))g_free)) (self->_priv->name); self->_priv->name = NULL; }
-#line 189 "mn-mailbox.c"
-#line 146 "mn-mailbox.gob"
-	if(self->_priv->error) { ((*(void (*)(void *))g_free)) (self->_priv->error); self->_priv->error = NULL; }
-#line 192 "mn-mailbox.c"
-#line 166 "mn-mailbox.gob"
-	if(self->_priv->monitor_handle) { ((*(void (*)(void *))gnome_vfs_monitor_cancel)) (self->_priv->monitor_handle); self->_priv->monitor_handle = NULL; }
-#line 195 "mn-mailbox.c"
-#line 167 "mn-mailbox.gob"
-	if(self->_priv->monitor_uri) { ((*(void (*)(void *))g_free)) (self->_priv->monitor_uri); self->_priv->monitor_uri = NULL; }
-#line 198 "mn-mailbox.c"
-#line 310 "mn-mailbox.gob"
-	if(self->_priv->init_error) { ((*(void (*)(void *))g_free)) (self->_priv->init_error); self->_priv->init_error = NULL; }
-#line 201 "mn-mailbox.c"
-	g_free (priv);
+	MNMailbox *self G_GNUC_UNUSED = MN_MAILBOX (obj_self);
+	gpointer priv G_GNUC_UNUSED = self->_priv;
+#line 265 "mn-mailbox.gob"
+	___c_mn_mailbox_finalize(obj_self);
+#line 240 "mn-mailbox.c"
+#line 143 "mn-mailbox.gob"
+	if(self->_priv->name) { g_free ((gpointer) self->_priv->name); self->_priv->name = NULL; }
+#line 243 "mn-mailbox.c"
+#line 157 "mn-mailbox.gob"
+	if(self->_priv->messages) { mn_g_object_slist_free ((gpointer) self->_priv->messages); self->_priv->messages = NULL; }
+#line 246 "mn-mailbox.c"
+#line 211 "mn-mailbox.gob"
+	if(self->_priv->error) { g_free ((gpointer) self->_priv->error); self->_priv->error = NULL; }
+#line 249 "mn-mailbox.c"
+#line 232 "mn-mailbox.gob"
+	if(self->_priv->monitor_uri) { g_free ((gpointer) self->_priv->monitor_uri); self->_priv->monitor_uri = NULL; }
+#line 252 "mn-mailbox.c"
+#line 365 "mn-mailbox.gob"
+	if(self->_priv->init_error) { g_free ((gpointer) self->_priv->init_error); self->_priv->init_error = NULL; }
+#line 255 "mn-mailbox.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -206,25 +259,45 @@ static void
 mn_mailbox_init (MNMailbox * o G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::init"
-	o->_priv = g_new0 (MNMailboxPrivate, 1);
-#line 44 "mn-mailbox.gob"
+	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,TYPE_SELF,MNMailboxPrivate);
+#line 53 "mn-mailbox.gob"
 	o->uri = NULL;
-#line 213 "mn-mailbox.c"
+#line 266 "mn-mailbox.c"
 }
 #undef __GOB_FUNCTION__
+#line 237 "mn-mailbox.gob"
 static void 
-mn_mailbox_class_init (MNMailboxClass * c G_GNUC_UNUSED)
+mn_mailbox_class_init (MNMailboxClass * class G_GNUC_UNUSED)
+#line 272 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::class_init"
-	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
+	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
+
+	g_type_class_add_private(class,sizeof(MNMailboxPrivate));
 
 	parent_class = g_type_class_ref (G_TYPE_OBJECT);
 
-	c->impl_is = NULL;
-	c->impl_check = NULL;
-	c->impl_threaded_check = NULL;
-	g_object_class->dispose = ___dispose;
+	object_signals[MESSAGES_CHANGED_SIGNAL] =
+		g_signal_new ("messages_changed",
+			G_TYPE_FROM_CLASS (g_object_class),
+			(GSignalFlags)(G_SIGNAL_RUN_LAST),
+			G_STRUCT_OFFSET (MNMailboxClass, messages_changed),
+			NULL, NULL,
+			___marshal_Sig1,
+			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 208: Type mismatch of \"messages_changed\" signal signature");
+	}
+
+	class->messages_changed = NULL;
+#line 265 "mn-mailbox.gob"
 	g_object_class->finalize = ___finalize;
+#line 297 "mn-mailbox.c"
+	class->impl_is = NULL;
+	class->impl_check = NULL;
+	class->impl_threaded_check = NULL;
+	g_object_class->dispose = ___dispose;
 	g_object_class->get_property = ___object_get_property;
 	g_object_class->set_property = ___object_set_property;
     {
@@ -266,6 +339,14 @@ mn_mailbox_class_init (MNMailboxClass * c G_GNUC_UNUSED)
 	g_object_class_install_property (g_object_class,
 		PROP_HAS_NEW,
 		param_spec);
+	param_spec = g_param_spec_pointer
+		("messages" /* name */,
+		 NULL /* nick */,
+		 _("The list of new and unread MNMessage objects") /* blurb */,
+		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE));
+	g_object_class_install_property (g_object_class,
+		PROP_MESSAGES,
+		param_spec);
 	param_spec = g_param_spec_string
 		("error" /* name */,
 		 NULL /* nick */,
@@ -276,6 +357,36 @@ mn_mailbox_class_init (MNMailboxClass * c G_GNUC_UNUSED)
 		PROP_ERROR,
 		param_spec);
     }
+ {
+#line 238 "mn-mailbox.gob"
+
+    int i = 0;
+
+#ifdef WITH_MBOX
+    mn_mailbox_types[i++] = MN_TYPE_MBOX_MAILBOX;
+#endif
+#ifdef WITH_MH
+    mn_mailbox_types[i++] = MN_TYPE_MH_MAILBOX;
+#endif
+#ifdef WITH_MAILDIR
+    mn_mailbox_types[i++] = MN_TYPE_MAILDIR_MAILBOX;
+#endif
+#ifdef WITH_POP3
+    mn_mailbox_types[i++] = MN_TYPE_POP3_MAILBOX;
+#endif
+#ifdef WITH_IMAP
+    mn_mailbox_types[i++] = MN_TYPE_IMAP_MAILBOX;
+#endif
+#ifdef WITH_SYLPHEED
+    mn_mailbox_types[i++] = MN_TYPE_SYLPHEED_MAILBOX;
+#endif
+#ifdef WITH_GMAIL
+    mn_mailbox_types[i++] = MN_TYPE_GMAIL_MAILBOX;
+#endif
+    mn_mailbox_types[i] = 0;
+  
+#line 389 "mn-mailbox.c"
+ }
 }
 #undef __GOB_FUNCTION__
 
@@ -293,41 +404,76 @@ ___object_set_property (GObject *object,
 	switch (property_id) {
 	case PROP_URI:
 		{
-#line 126 "mn-mailbox.gob"
+#line 137 "mn-mailbox.gob"
 
       g_return_if_fail(self->uri == NULL);
       self->uri = MN_URI(g_value_dup_object(VAL));
       selfp->name = g_strdup(self->uri->human_readable);
     
-#line 303 "mn-mailbox.c"
+#line 414 "mn-mailbox.c"
 		}
 		break;
 	case PROP_NAME:
 		{
-#line 133 "mn-mailbox.gob"
+#line 144 "mn-mailbox.gob"
 { char *old = self->_priv->name; self->_priv->name = g_value_dup_string (VAL); g_free (old); }
-#line 310 "mn-mailbox.c"
+#line 421 "mn-mailbox.c"
 		}
 		break;
 	case PROP_AUTOMATIC:
 		{
-#line 137 "mn-mailbox.gob"
+#line 148 "mn-mailbox.gob"
 self->_priv->automatic = g_value_get_boolean (VAL);
-#line 317 "mn-mailbox.c"
+#line 428 "mn-mailbox.c"
 		}
 		break;
 	case PROP_HAS_NEW:
 		{
-#line 142 "mn-mailbox.gob"
+#line 153 "mn-mailbox.gob"
 self->_priv->has_new = g_value_get_boolean (VAL);
-#line 324 "mn-mailbox.c"
+#line 435 "mn-mailbox.c"
+		}
+		break;
+	case PROP_MESSAGES:
+		{
+#line 161 "mn-mailbox.gob"
+
+      GSList *messages;
+      GSList *l;
+      gboolean changed = FALSE;
+      gboolean has_new = FALSE;
+
+      messages = g_value_get_pointer(VAL);
+      
+      MN_LIST_FOREACH(l, selfp->messages)
+	if (! mn_message_slist_find_by_id(messages, l->data))
+	  {
+	    changed = TRUE;
+	    break;
+	  }
+      
+      MN_LIST_FOREACH(l, messages)
+	if (! mn_message_slist_find_by_id(selfp->messages, l->data))
+	  {
+	    changed = TRUE;
+	    has_new = TRUE;
+	    break;
+	  }
+
+      mn_g_object_slist_free(selfp->messages);
+      selfp->messages = mn_g_object_slist_copy(messages);
+
+      if (changed)
+	self_messages_changed(self, has_new);
+    
+#line 470 "mn-mailbox.c"
 		}
 		break;
 	case PROP_ERROR:
 		{
-#line 147 "mn-mailbox.gob"
+#line 212 "mn-mailbox.gob"
 { char *old = self->_priv->error; self->_priv->error = g_value_dup_string (VAL); g_free (old); }
-#line 331 "mn-mailbox.c"
+#line 477 "mn-mailbox.c"
 		}
 		break;
 	default:
@@ -356,30 +502,39 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_NAME:
 		{
-#line 133 "mn-mailbox.gob"
+#line 144 "mn-mailbox.gob"
 g_value_set_string (VAL, self->_priv->name);
-#line 362 "mn-mailbox.c"
+#line 508 "mn-mailbox.c"
 		}
 		break;
 	case PROP_AUTOMATIC:
 		{
-#line 137 "mn-mailbox.gob"
+#line 148 "mn-mailbox.gob"
 g_value_set_boolean (VAL, self->_priv->automatic);
-#line 369 "mn-mailbox.c"
+#line 515 "mn-mailbox.c"
 		}
 		break;
 	case PROP_HAS_NEW:
 		{
-#line 142 "mn-mailbox.gob"
+#line 153 "mn-mailbox.gob"
 g_value_set_boolean (VAL, self->_priv->has_new);
-#line 376 "mn-mailbox.c"
+#line 522 "mn-mailbox.c"
+		}
+		break;
+	case PROP_MESSAGES:
+		{
+#line 191 "mn-mailbox.gob"
+
+      g_value_set_pointer(VAL, selfp->messages);
+    
+#line 531 "mn-mailbox.c"
 		}
 		break;
 	case PROP_ERROR:
 		{
-#line 147 "mn-mailbox.gob"
+#line 212 "mn-mailbox.gob"
 g_value_set_string (VAL, self->_priv->error);
-#line 383 "mn-mailbox.c"
+#line 538 "mn-mailbox.c"
 		}
 		break;
 	default:
@@ -395,89 +550,148 @@ g_value_set_string (VAL, self->_priv->error);
 #undef __GOB_FUNCTION__
 
 
-
-#line 134 "mn-mailbox.gob"
+#line 145 "mn-mailbox.gob"
 const char * 
 mn_mailbox_get_name (MNMailbox * self)
-#line 403 "mn-mailbox.c"
+#line 557 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::get_name"
-#line 134 "mn-mailbox.gob"
+#line 145 "mn-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (const char * )0);
-#line 134 "mn-mailbox.gob"
+#line 145 "mn-mailbox.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX (self), (const char * )0);
-#line 410 "mn-mailbox.c"
+#line 564 "mn-mailbox.c"
 {
-#line 134 "mn-mailbox.gob"
+#line 145 "mn-mailbox.gob"
 	 return selfp->name; }}
-#line 414 "mn-mailbox.c"
+#line 568 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 137 "mn-mailbox.gob"
+#line 148 "mn-mailbox.gob"
 gboolean 
 mn_mailbox_get_automatic (MNMailbox * self)
-#line 420 "mn-mailbox.c"
+#line 574 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::get_automatic"
 {
-#line 137 "mn-mailbox.gob"
+#line 148 "mn-mailbox.gob"
 		gboolean val; g_object_get (G_OBJECT (self), "automatic", &val, NULL); return val;
 }}
-#line 427 "mn-mailbox.c"
+#line 581 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 137 "mn-mailbox.gob"
+#line 148 "mn-mailbox.gob"
 void 
 mn_mailbox_set_automatic (MNMailbox * self, gboolean val)
-#line 433 "mn-mailbox.c"
+#line 587 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::set_automatic"
 {
-#line 137 "mn-mailbox.gob"
+#line 148 "mn-mailbox.gob"
 		g_object_set (G_OBJECT (self), "automatic", val, NULL);
 }}
-#line 440 "mn-mailbox.c"
+#line 594 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 142 "mn-mailbox.gob"
+#line 153 "mn-mailbox.gob"
 gboolean 
 mn_mailbox_get_has_new (MNMailbox * self)
-#line 446 "mn-mailbox.c"
+#line 600 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::get_has_new"
 {
-#line 142 "mn-mailbox.gob"
+#line 153 "mn-mailbox.gob"
 		gboolean val; g_object_get (G_OBJECT (self), "has_new", &val, NULL); return val;
 }}
-#line 453 "mn-mailbox.c"
+#line 607 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 142 "mn-mailbox.gob"
+#line 153 "mn-mailbox.gob"
 void 
 mn_mailbox_set_has_new (MNMailbox * self, gboolean val)
-#line 459 "mn-mailbox.c"
+#line 613 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::set_has_new"
 {
-#line 142 "mn-mailbox.gob"
+#line 153 "mn-mailbox.gob"
 		g_object_set (G_OBJECT (self), "has_new", val, NULL);
 }}
-#line 466 "mn-mailbox.c"
+#line 620 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 148 "mn-mailbox.gob"
+#line 191 "mn-mailbox.gob"
+gpointer 
+mn_mailbox_get_messages (MNMailbox * self)
+#line 626 "mn-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailbox::get_messages"
+{
+#line 158 "mn-mailbox.gob"
+		gpointer val; g_object_get (G_OBJECT (self), "messages", &val, NULL); return val;
+}}
+#line 633 "mn-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 161 "mn-mailbox.gob"
+void 
+mn_mailbox_set_messages (MNMailbox * self, gpointer val)
+#line 639 "mn-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailbox::set_messages"
+{
+#line 158 "mn-mailbox.gob"
+		g_object_set (G_OBJECT (self), "messages", val, NULL);
+}}
+#line 646 "mn-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 208 "mn-mailbox.gob"
+static void 
+mn_mailbox_messages_changed (MNMailbox * self, gboolean has_new)
+#line 652 "mn-mailbox.c"
+{
+	GValue ___param_values[2];
+	GValue ___return_val;
+
+memset (&___return_val, 0, sizeof (___return_val));
+memset (&___param_values, 0, sizeof (___param_values));
+
+#line 208 "mn-mailbox.gob"
+	g_return_if_fail (self != NULL);
+#line 208 "mn-mailbox.gob"
+	g_return_if_fail (MN_IS_MAILBOX (self));
+#line 664 "mn-mailbox.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);
+
+	___param_values[1].g_type = 0;
+	g_value_init (&___param_values[1], G_TYPE_BOOLEAN);
+	g_value_set_boolean (&___param_values[1], (gboolean ) has_new);
+
+	g_signal_emitv (___param_values,
+		object_signals[MESSAGES_CHANGED_SIGNAL],
+		0 /* detail */,
+		&___return_val);
+
+	g_value_unset (&___param_values[0]);
+	g_value_unset (&___param_values[1]);
+}
+
+#line 213 "mn-mailbox.gob"
 void 
 mn_mailbox_set_error (MNMailbox * self, const char * format, ...)
-#line 472 "mn-mailbox.c"
+#line 686 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::set_error"
-#line 148 "mn-mailbox.gob"
+#line 213 "mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 148 "mn-mailbox.gob"
+#line 213 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 479 "mn-mailbox.c"
+#line 693 "mn-mailbox.c"
 {
-#line 150 "mn-mailbox.gob"
+#line 215 "mn-mailbox.gob"
 	
     va_list args;
     char *error = NULL;
@@ -492,78 +706,54 @@ 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 496 "mn-mailbox.c"
+#line 710 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 164 "mn-mailbox.gob"
+#line 229 "mn-mailbox.gob"
 const char * 
 mn_mailbox_get_error (MNMailbox * self)
-#line 502 "mn-mailbox.c"
+#line 716 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::get_error"
-#line 164 "mn-mailbox.gob"
+#line 229 "mn-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (const char * )0);
-#line 164 "mn-mailbox.gob"
+#line 229 "mn-mailbox.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX (self), (const char * )0);
-#line 509 "mn-mailbox.c"
+#line 723 "mn-mailbox.c"
 {
-#line 164 "mn-mailbox.gob"
+#line 229 "mn-mailbox.gob"
 	 return selfp->error; }}
-#line 513 "mn-mailbox.c"
+#line 727 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 172 "mn-mailbox.gob"
-const GType * 
-mn_mailbox_get_types (void)
-#line 519 "mn-mailbox.c"
+
+#line 265 "mn-mailbox.gob"
+static void 
+___c_mn_mailbox_finalize (GObject * object G_GNUC_UNUSED)
+#line 734 "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::get_types"
+#define __GOB_FUNCTION__ "MN:Mailbox::finalize"
+#line 265 "mn-mailbox.gob"
+	g_return_if_fail (object != NULL);
+#line 265 "mn-mailbox.gob"
+	g_return_if_fail (G_IS_OBJECT (object));
+#line 744 "mn-mailbox.c"
 {
-#line 174 "mn-mailbox.gob"
-	
-    static GType *types = NULL;
-    G_LOCK_DEFINE_STATIC(types);
-    
-    G_LOCK(types);
-    if (! types)
-      {
-	GType tmp_types[7];
-	int n_types = 0;
-	int i;
-	
-#ifdef WITH_MBOX
-	tmp_types[n_types++] = MN_TYPE_MBOX_MAILBOX;
-#endif
-#ifdef WITH_MH
-	tmp_types[n_types++] = MN_TYPE_MH_MAILBOX;
-#endif
-#ifdef WITH_MAILDIR
-	tmp_types[n_types++] = MN_TYPE_MAILDIR_MAILBOX;
-#endif
-#ifdef WITH_POP3
-	tmp_types[n_types++] = MN_TYPE_POP3_MAILBOX;
-#endif
-#ifdef WITH_IMAP
-	tmp_types[n_types++] = MN_TYPE_IMAP_MAILBOX;
-#endif
-#ifdef WITH_SYLPHEED
-	tmp_types[n_types++] = MN_TYPE_SYLPHEED_MAILBOX;
-#endif
-#ifdef WITH_GMAIL
-	tmp_types[n_types++] = MN_TYPE_GMAIL_MAILBOX;
-#endif
+#line 267 "mn-mailbox.gob"
 	
-	types = g_new(GType, n_types + 1);
-	for (i = 0; i < n_types; i++)
-	  types[i] = tmp_types[i];
-	types[n_types] = 0;
-      }
-    G_UNLOCK(types);
-    
-    return types;
+    Self *self = SELF(object);
+
+    if (selfp->monitor_handle)
+      gnome_vfs_monitor_cancel(selfp->monitor_handle);
+
+    PARENT_HANDLER(object);
   }}
-#line 566 "mn-mailbox.c"
+#line 755 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
 
 /**
  * mn_mailbox_new_async:
@@ -575,21 +765,21 @@ mn_mailbox_get_types (void)
  * Creates a new #MNMailbox asynchronously. The newly created
  * #MNMailbox will be passed to @callback.
  **/
-#line 227 "mn-mailbox.gob"
+#line 286 "mn-mailbox.gob"
 void 
 mn_mailbox_new_async (MNURI * uri, gpointer callback, gpointer user_data)
-#line 582 "mn-mailbox.c"
+#line 772 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::new_async"
-#line 227 "mn-mailbox.gob"
+#line 286 "mn-mailbox.gob"
 	g_return_if_fail (uri != NULL);
-#line 227 "mn-mailbox.gob"
+#line 286 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_URI (uri));
-#line 227 "mn-mailbox.gob"
+#line 286 "mn-mailbox.gob"
 	g_return_if_fail (callback != NULL);
-#line 591 "mn-mailbox.c"
+#line 781 "mn-mailbox.c"
 {
-#line 231 "mn-mailbox.gob"
+#line 290 "mn-mailbox.gob"
 	
     NewInfo *info;
 
@@ -600,17 +790,17 @@ mn_mailbox_new_async (MNURI * uri, gpointer callback, gpointer user_data)
 
     mn_thread_create(self_new_async_thread, info);
   }}
-#line 604 "mn-mailbox.c"
+#line 794 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 242 "mn-mailbox.gob"
+#line 301 "mn-mailbox.gob"
 static gpointer 
 mn_mailbox_new_async_thread (gpointer data)
-#line 610 "mn-mailbox.c"
+#line 800 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::new_async_thread"
 {
-#line 244 "mn-mailbox.gob"
+#line 303 "mn-mailbox.gob"
 	
     NewInfo *info = data;
     Self *mailbox = NULL;
@@ -623,22 +813,18 @@ mn_mailbox_new_async_thread (gpointer data)
 
     if (! mailbox)
       {
-	const GType *types;
 	int i;
 	
-	types = self_get_types();
-	for (i = 0; types[i]; i++)
+	for (i = 0; mn_mailbox_types[i]; i++)
 	  {
 	    SelfClass *class;
-	    gboolean is;
 
-	    class = g_type_class_ref(types[i]);
-	    is = class->impl_is(NULL, info->uri);
-	    g_type_class_unref(class);
+	    class = g_type_class_peek(mn_mailbox_types[i]);
+	    g_return_val_if_fail(class != NULL, NULL);
 
-	    if (is)
+	    if (class->impl_is(NULL, info->uri))
 	      {
-		mailbox = g_object_new(types[i], MN_MAILBOX_PROP_URI(G_OBJECT(info->uri)), NULL);
+		mailbox = g_object_new(mn_mailbox_types[i], MN_MAILBOX_PROP_URI(G_OBJECT(info->uri)), NULL);
 		if (mailbox->_priv->init_error)
 		  {
 		    MNMailbox *old_mailbox;
@@ -676,24 +862,24 @@ mn_mailbox_new_async_thread (gpointer data)
 
     return NULL;
   }}
-#line 680 "mn-mailbox.c"
+#line 866 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 311 "mn-mailbox.gob"
+#line 366 "mn-mailbox.gob"
 void 
 mn_mailbox_set_init_error (MNMailbox * self, const char * format, ...)
-#line 686 "mn-mailbox.c"
+#line 872 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::set_init_error"
-#line 311 "mn-mailbox.gob"
+#line 366 "mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 311 "mn-mailbox.gob"
+#line 366 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 311 "mn-mailbox.gob"
+#line 366 "mn-mailbox.gob"
 	g_return_if_fail (format != NULL);
-#line 695 "mn-mailbox.c"
+#line 881 "mn-mailbox.c"
 {
-#line 313 "mn-mailbox.gob"
+#line 368 "mn-mailbox.gob"
 	
     va_list args;
 
@@ -703,24 +889,24 @@ mn_mailbox_set_init_error (MNMailbox * self, const char * format, ...)
     selfp->init_error = g_strdup_vprintf(format, args);
     va_end(args);
   }}
-#line 707 "mn-mailbox.c"
+#line 893 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 323 "mn-mailbox.gob"
+#line 378 "mn-mailbox.gob"
 void 
 mn_mailbox_monitor (MNMailbox * self, const char * uri, GnomeVFSMonitorType monitor_type, MNMailboxMonitorEventType events)
-#line 713 "mn-mailbox.c"
+#line 899 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::monitor"
-#line 323 "mn-mailbox.gob"
+#line 378 "mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 323 "mn-mailbox.gob"
+#line 378 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 323 "mn-mailbox.gob"
+#line 378 "mn-mailbox.gob"
 	g_return_if_fail (uri != NULL);
-#line 722 "mn-mailbox.c"
+#line 908 "mn-mailbox.c"
 {
-#line 328 "mn-mailbox.gob"
+#line 383 "mn-mailbox.gob"
 	
     GnomeVFSResult result;
 
@@ -746,79 +932,84 @@ mn_mailbox_monitor (MNMailbox * self, const char * uri, GnomeVFSMonitorType moni
       }
     else
       {
-	static gboolean first_time = TRUE;
+	g_warning(_("unable to enable immediate notification for %s: %s"), uri, gnome_vfs_result_to_string(result));
 
-	g_warning(_("unable to monitor %s: %s"), uri, gnome_vfs_result_to_string(result));
-
-	if (first_time)
+	if (! eel_gconf_get_boolean(MN_CONF_IMMEDIATE_NOTIFICATION_ERROR_DIALOG_DO_NOT_SHOW))
 	  {
-	    int minutes;
-	    int seconds;
-	    char *str;
+	    static gboolean first_time = TRUE;
 	    
-	    first_time = FALSE;
+	    if (first_time)
+	      {
+		int minutes;
+		int seconds;
+		char *str;
 	    
-	    minutes = eel_gconf_get_integer(MN_CONF_DELAY_MINUTES);
-	    seconds = eel_gconf_get_integer(MN_CONF_DELAY_SECONDS);
+		first_time = FALSE;
 	    
-	    if (minutes == 0)
-	      str = g_strdup_printf(ngettext("As a fallback, they will be "
-					     "checked every %i second (this "
-					     "delay is configurable from the "
-					     "Properties Dialog).",
-					     "As a fallback, they will be "
-					     "checked every %i seconds (this "
-					     "delay is configurable from the "
-					     "Properties Dialog).",
+		minutes = eel_gconf_get_integer(MN_CONF_DELAY_MINUTES);
+		seconds = eel_gconf_get_integer(MN_CONF_DELAY_SECONDS);
+		
+		if (minutes == 0)
+		  str = g_strdup_printf(ngettext("As a fallback, they will be "
+						 "checked every %i second (this "
+						 "delay is configurable from the "
+						 "Properties Dialog).",
+						 "As a fallback, they will be "
+						 "checked every %i seconds (this "
+						 "delay is configurable from the "
+						 "Properties Dialog).",
 					     seconds),
-				    seconds);
-	    else if (seconds == 0)
-	      str = g_strdup_printf(ngettext("As a fallback, they will be "
-					     "checked every %i minute (this "
-					     "delay is configurable from the "
-					     "Properties Dialog).",
-					     "As a fallback, they will be "
-					     "checked every %i minutes (this "
-					     "delay is configurable from the "
-					     "Properties Dialog).",
-					     minutes),
-				    minutes);
-	    else
-	      str = g_strdup_printf(ngettext("As a fallback, they will be "
-					     "checked approximately every %i "
-					     "minute (this delay is "
-					     "configurable from the "
-					     "Properties Dialog).",
-					     "As a fallback, they will be "
-					     "checked approximately every %i "
-					     "minutes (this delay is "
-					     "configurable from the "
-					     "Properties Dialog).",
-					     minutes),
-				    minutes);
-	    
-	    mn_error_dialog("immediate-notification",
-			    _("A monitoring error has occurred"),
-			    _("Mail Notification was unable to enable immediate "
-			      "notification for one or more mailboxes. %s"), str);
-	    g_free(str);
+					seconds);
+		else if (seconds == 0)
+		  str = g_strdup_printf(ngettext("As a fallback, they will be "
+						 "checked every %i minute (this "
+						 "delay is configurable from the "
+						 "Properties Dialog).",
+						 "As a fallback, they will be "
+						 "checked every %i minutes (this "
+						 "delay is configurable from the "
+						 "Properties Dialog).",
+						 minutes),
+					minutes);
+		else
+		  str = g_strdup_printf(ngettext("As a fallback, they will be "
+						 "checked approximately every %i "
+						 "minute (this delay is "
+						 "configurable from the "
+						 "Properties Dialog).",
+						 "As a fallback, they will be "
+						 "checked approximately every %i "
+						 "minutes (this delay is "
+						 "configurable from the "
+						 "Properties Dialog).",
+						 minutes),
+					minutes);
+		
+		mn_error_dialog(NULL,
+				MN_CONF_IMMEDIATE_NOTIFICATION_ERROR_DIALOG_DO_NOT_SHOW,
+				"immediate-notification",
+				_("A monitoring error has occurred"),
+				_("Mail Notification was unable to enable immediate "
+				  "notification for one or more mailboxes. %s"), str);
+		g_free(str);
+	      }
 	  }
       }
   }}
-#line 809 "mn-mailbox.c"
+#line 1000 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 413 "mn-mailbox.gob"
+#line 473 "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 815 "mn-mailbox.c"
+#line 1006 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::monitor_cb"
-#line 413 "mn-mailbox.gob"
+#line 473 "mn-mailbox.gob"
 	g_return_if_fail (user_data != NULL);
-#line 820 "mn-mailbox.c"
+#line 1011 "mn-mailbox.c"
 {
-#line 419 "mn-mailbox.gob"
+#line 479 "mn-mailbox.gob"
 	
     Self *self = user_data;
 
@@ -827,20 +1018,20 @@ mn_mailbox_monitor_cb (GnomeVFSMonitorHandle * handle, const char * monitor_uri,
       self_check(self);
     GDK_THREADS_LEAVE();
   }}
-#line 831 "mn-mailbox.c"
+#line 1022 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 428 "mn-mailbox.gob"
+#line 488 "mn-mailbox.gob"
 static gboolean 
 mn_mailbox_impl_is (MNMailbox * self, MNURI * uri)
-#line 837 "mn-mailbox.c"
+#line 1028 "mn-mailbox.c"
 {
 	MNMailboxClass *klass;
-#line 428 "mn-mailbox.gob"
+#line 488 "mn-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 428 "mn-mailbox.gob"
+#line 488 "mn-mailbox.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX (self), (gboolean )0);
-#line 844 "mn-mailbox.c"
+#line 1035 "mn-mailbox.c"
 	klass = MN_MAILBOX_GET_CLASS(self);
 
 	if(klass->impl_is)
@@ -849,53 +1040,53 @@ mn_mailbox_impl_is (MNMailbox * self, MNURI * uri)
 		return (gboolean )(0);
 }
 
-#line 430 "mn-mailbox.gob"
+#line 490 "mn-mailbox.gob"
 static void 
 mn_mailbox_impl_check (MNMailbox * self)
-#line 856 "mn-mailbox.c"
+#line 1047 "mn-mailbox.c"
 {
 	MNMailboxClass *klass;
-#line 430 "mn-mailbox.gob"
+#line 490 "mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 430 "mn-mailbox.gob"
+#line 490 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 863 "mn-mailbox.c"
+#line 1054 "mn-mailbox.c"
 	klass = MN_MAILBOX_GET_CLASS(self);
 
 	if(klass->impl_check)
 		(*klass->impl_check)(self);
 }
 
-#line 432 "mn-mailbox.gob"
+#line 492 "mn-mailbox.gob"
 static void 
 mn_mailbox_impl_threaded_check (MNMailbox * self)
-#line 873 "mn-mailbox.c"
+#line 1064 "mn-mailbox.c"
 {
 	MNMailboxClass *klass;
-#line 432 "mn-mailbox.gob"
+#line 492 "mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 432 "mn-mailbox.gob"
+#line 492 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 880 "mn-mailbox.c"
+#line 1071 "mn-mailbox.c"
 	klass = MN_MAILBOX_GET_CLASS(self);
 
 	if(klass->impl_threaded_check)
 		(*klass->impl_threaded_check)(self);
 }
 
-#line 435 "mn-mailbox.gob"
+#line 495 "mn-mailbox.gob"
 void 
 mn_mailbox_check (MNMailbox * self)
-#line 890 "mn-mailbox.c"
+#line 1081 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::check"
-#line 435 "mn-mailbox.gob"
+#line 495 "mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 435 "mn-mailbox.gob"
+#line 495 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 897 "mn-mailbox.c"
+#line 1088 "mn-mailbox.c"
 {
-#line 437 "mn-mailbox.gob"
+#line 497 "mn-mailbox.gob"
 	
     g_return_if_fail(MN_MAILBOX_CAN_CHECK(self));
 
@@ -911,46 +1102,46 @@ mn_mailbox_check (MNMailbox * self)
 	  SELF_GET_CLASS(self)->impl_check(self);
       }
   }}
-#line 915 "mn-mailbox.c"
+#line 1106 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 453 "mn-mailbox.gob"
+#line 513 "mn-mailbox.gob"
 void 
 mn_mailbox_end_check (MNMailbox * self)
-#line 921 "mn-mailbox.c"
+#line 1112 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::end_check"
-#line 453 "mn-mailbox.gob"
+#line 513 "mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 453 "mn-mailbox.gob"
+#line 513 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 928 "mn-mailbox.c"
+#line 1119 "mn-mailbox.c"
 {
-#line 455 "mn-mailbox.gob"
+#line 515 "mn-mailbox.gob"
 	
     g_return_if_fail(selfp->checking == TRUE);
 
     selfp->checking = FALSE;
     g_object_unref(self);
   }}
-#line 937 "mn-mailbox.c"
+#line 1128 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 462 "mn-mailbox.gob"
+#line 522 "mn-mailbox.gob"
 void 
 mn_mailbox_notice (MNMailbox * self, const char * format, ...)
-#line 943 "mn-mailbox.c"
+#line 1134 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::notice"
-#line 462 "mn-mailbox.gob"
+#line 522 "mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 462 "mn-mailbox.gob"
+#line 522 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 462 "mn-mailbox.gob"
+#line 522 "mn-mailbox.gob"
 	g_return_if_fail (format != NULL);
-#line 952 "mn-mailbox.c"
+#line 1143 "mn-mailbox.c"
 {
-#line 464 "mn-mailbox.gob"
+#line 524 "mn-mailbox.gob"
 	
     va_list args;
     char *notice;
@@ -966,5 +1157,5 @@ mn_mailbox_notice (MNMailbox * self, const char * format, ...)
     mn_info("%s", prefixed_notice);
     g_free(prefixed_notice);
   }}
-#line 970 "mn-mailbox.c"
+#line 1161 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-mailbox.gob b/src/mn-mailbox.gob
@@ -16,8 +16,12 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+requires 2.0.10
+
 %headertop{
+#include "config.h"
 #include <stdarg.h>
+#include "mn-message.h"
 #include "mn-uri.h"
 %}
 
@@ -36,9 +40,14 @@
 %}
 
 %h{
+#define MN_MAILBOX_N_TYPES		7
+  extern GType mn_mailbox_types[MN_MAILBOX_N_TYPES + 1];
+
 #define MN_MAILBOX_CAN_CHECK(self) \
   (MN_MAILBOX_GET_CLASS((self))->impl_check != NULL \
    || MN_MAILBOX_GET_CLASS((self))->impl_threaded_check != NULL)
+#define MN_MAILBOX_MUST_POLL(self) \
+  (MN_MAILBOX_CAN_CHECK((self)) && ! mn_mailbox_get_automatic((self)))
 %}
   
 %{
@@ -77,6 +86,8 @@ typedef struct
 				 gpointer	user_data);
   gpointer	user_data;
 } NewInfo;
+
+ GType mn_mailbox_types[MN_MAILBOX_N_TYPES + 1];
 %}
 
 /******************************************************************************
@@ -143,6 +154,60 @@ class MN:Mailbox from G:Object
 			    link,
 			    export);
 
+  private GSList *messages destroywith mn_g_object_slist_free;
+  property POINTER messages (blurb = _("The list of new and unread MNMessage objects"),
+			     export)
+    set
+    {
+      GSList *messages;
+      GSList *l;
+      gboolean changed = FALSE;
+      gboolean has_new = FALSE;
+
+      messages = g_value_get_pointer(VAL);
+      
+      MN_LIST_FOREACH(l, selfp->messages)
+	if (! mn_message_slist_find_by_id(messages, l->data))
+	  {
+	    changed = TRUE;
+	    break;
+	  }
+      
+      MN_LIST_FOREACH(l, messages)
+	if (! mn_message_slist_find_by_id(selfp->messages, l->data))
+	  {
+	    changed = TRUE;
+	    has_new = TRUE;
+	    break;
+	  }
+
+      mn_g_object_slist_free(selfp->messages);
+      selfp->messages = mn_g_object_slist_copy(messages);
+
+      if (changed)
+	self_messages_changed(self, has_new);
+    }
+    get
+    {
+      g_value_set_pointer(VAL, selfp->messages);
+    };
+
+  /**
+   * messages-changed:
+   * @self: the object which received the signal
+   * @has_new: whether a new message has been received or not
+   *
+   * This signal gets emitted whenever the messages property changes.
+   *
+   * It is considered that the property changes if a new message
+   * appears or if an old message disappears. If an existing message
+   * changes while keeping the same id, this signal is not emitted
+   * (use the "notify::messages" signal if you need notification of
+   * such events).
+   **/
+  signal private NONE (BOOLEAN)
+    void messages_changed (self, gboolean has_new);
+
   private char *error destroywith g_free;
   property STRING error (blurb = _("The mailbox error, if any"), link);
   protected void
@@ -163,57 +228,51 @@ class MN:Mailbox from G:Object
   }
   public const char *get_error (self) { return selfp->error; }
   
-  private GnomeVFSMonitorHandle *monitor_handle destroywith gnome_vfs_monitor_cancel;
+  private GnomeVFSMonitorHandle *monitor_handle;
   private char *monitor_uri destroywith g_free;
   private MNMailboxMonitorEventType monitor_events;
   
   private gboolean checking;
   
-  public const GType *
-    get_types (void)
+  class_init (class)
   {
-    static GType *types = NULL;
-    G_LOCK_DEFINE_STATIC(types);
-    
-    G_LOCK(types);
-    if (! types)
-      {
-	GType tmp_types[7];
-	int n_types = 0;
-	int i;
-	
+    int i = 0;
+
 #ifdef WITH_MBOX
-	tmp_types[n_types++] = MN_TYPE_MBOX_MAILBOX;
+    mn_mailbox_types[i++] = MN_TYPE_MBOX_MAILBOX;
 #endif
 #ifdef WITH_MH
-	tmp_types[n_types++] = MN_TYPE_MH_MAILBOX;
+    mn_mailbox_types[i++] = MN_TYPE_MH_MAILBOX;
 #endif
 #ifdef WITH_MAILDIR
-	tmp_types[n_types++] = MN_TYPE_MAILDIR_MAILBOX;
+    mn_mailbox_types[i++] = MN_TYPE_MAILDIR_MAILBOX;
 #endif
 #ifdef WITH_POP3
-	tmp_types[n_types++] = MN_TYPE_POP3_MAILBOX;
+    mn_mailbox_types[i++] = MN_TYPE_POP3_MAILBOX;
 #endif
 #ifdef WITH_IMAP
-	tmp_types[n_types++] = MN_TYPE_IMAP_MAILBOX;
+    mn_mailbox_types[i++] = MN_TYPE_IMAP_MAILBOX;
 #endif
 #ifdef WITH_SYLPHEED
-	tmp_types[n_types++] = MN_TYPE_SYLPHEED_MAILBOX;
+    mn_mailbox_types[i++] = MN_TYPE_SYLPHEED_MAILBOX;
 #endif
 #ifdef WITH_GMAIL
-	tmp_types[n_types++] = MN_TYPE_GMAIL_MAILBOX;
+    mn_mailbox_types[i++] = MN_TYPE_GMAIL_MAILBOX;
 #endif
-	
-	types = g_new(GType, n_types + 1);
-	for (i = 0; i < n_types; i++)
-	  types[i] = tmp_types[i];
-	types[n_types] = 0;
-      }
-    G_UNLOCK(types);
-    
-    return types;
+    mn_mailbox_types[i] = 0;
   }
+  
+  override (G:Object) void
+    finalize (G:Object *object (check null type))
+  {
+    Self *self = SELF(object);
 
+    if (selfp->monitor_handle)
+      gnome_vfs_monitor_cancel(selfp->monitor_handle);
+
+    PARENT_HANDLER(object);
+  }
+  
   /**
    * new_async:
    * @uri: location of the mailbox
@@ -253,22 +312,18 @@ class MN:Mailbox from G:Object
 
     if (! mailbox)
       {
-	const GType *types;
 	int i;
 	
-	types = self_get_types();
-	for (i = 0; types[i]; i++)
+	for (i = 0; mn_mailbox_types[i]; i++)
 	  {
 	    SelfClass *class;
-	    gboolean is;
 
-	    class = g_type_class_ref(types[i]);
-	    is = class->impl_is(NULL, info->uri);
-	    g_type_class_unref(class);
+	    class = g_type_class_peek(mn_mailbox_types[i]);
+	    g_return_val_if_fail(class != NULL, NULL);
 
-	    if (is)
+	    if (class->impl_is(NULL, info->uri))
 	      {
-		mailbox = g_object_new(types[i], MN_MAILBOX_PROP_URI(G_OBJECT(info->uri)), NULL);
+		mailbox = g_object_new(mn_mailbox_types[i], MN_MAILBOX_PROP_URI(G_OBJECT(info->uri)), NULL);
 		if (mailbox->_priv->init_error)
 		  {
 		    MNMailbox *old_mailbox;
@@ -350,62 +405,67 @@ class MN:Mailbox from G:Object
       }
     else
       {
-	static gboolean first_time = TRUE;
+	g_warning(_("unable to enable immediate notification for %s: %s"), uri, gnome_vfs_result_to_string(result));
 
-	g_warning(_("unable to monitor %s: %s"), uri, gnome_vfs_result_to_string(result));
-
-	if (first_time)
+	if (! eel_gconf_get_boolean(MN_CONF_IMMEDIATE_NOTIFICATION_ERROR_DIALOG_DO_NOT_SHOW))
 	  {
-	    int minutes;
-	    int seconds;
-	    char *str;
+	    static gboolean first_time = TRUE;
 	    
-	    first_time = FALSE;
+	    if (first_time)
+	      {
+		int minutes;
+		int seconds;
+		char *str;
 	    
-	    minutes = eel_gconf_get_integer(MN_CONF_DELAY_MINUTES);
-	    seconds = eel_gconf_get_integer(MN_CONF_DELAY_SECONDS);
+		first_time = FALSE;
 	    
-	    if (minutes == 0)
-	      str = g_strdup_printf(ngettext("As a fallback, they will be "
-					     "checked every %i second (this "
-					     "delay is configurable from the "
-					     "Properties Dialog).",
-					     "As a fallback, they will be "
-					     "checked every %i seconds (this "
-					     "delay is configurable from the "
-					     "Properties Dialog).",
+		minutes = eel_gconf_get_integer(MN_CONF_DELAY_MINUTES);
+		seconds = eel_gconf_get_integer(MN_CONF_DELAY_SECONDS);
+		
+		if (minutes == 0)
+		  str = g_strdup_printf(ngettext("As a fallback, they will be "
+						 "checked every %i second (this "
+						 "delay is configurable from the "
+						 "Properties Dialog).",
+						 "As a fallback, they will be "
+						 "checked every %i seconds (this "
+						 "delay is configurable from the "
+						 "Properties Dialog).",
 					     seconds),
-				    seconds);
-	    else if (seconds == 0)
-	      str = g_strdup_printf(ngettext("As a fallback, they will be "
-					     "checked every %i minute (this "
-					     "delay is configurable from the "
-					     "Properties Dialog).",
-					     "As a fallback, they will be "
-					     "checked every %i minutes (this "
-					     "delay is configurable from the "
-					     "Properties Dialog).",
-					     minutes),
-				    minutes);
-	    else
-	      str = g_strdup_printf(ngettext("As a fallback, they will be "
-					     "checked approximately every %i "
-					     "minute (this delay is "
-					     "configurable from the "
-					     "Properties Dialog).",
-					     "As a fallback, they will be "
-					     "checked approximately every %i "
-					     "minutes (this delay is "
-					     "configurable from the "
-					     "Properties Dialog).",
-					     minutes),
-				    minutes);
-	    
-	    mn_error_dialog("immediate-notification",
-			    _("A monitoring error has occurred"),
-			    _("Mail Notification was unable to enable immediate "
-			      "notification for one or more mailboxes. %s"), str);
-	    g_free(str);
+					seconds);
+		else if (seconds == 0)
+		  str = g_strdup_printf(ngettext("As a fallback, they will be "
+						 "checked every %i minute (this "
+						 "delay is configurable from the "
+						 "Properties Dialog).",
+						 "As a fallback, they will be "
+						 "checked every %i minutes (this "
+						 "delay is configurable from the "
+						 "Properties Dialog).",
+						 minutes),
+					minutes);
+		else
+		  str = g_strdup_printf(ngettext("As a fallback, they will be "
+						 "checked approximately every %i "
+						 "minute (this delay is "
+						 "configurable from the "
+						 "Properties Dialog).",
+						 "As a fallback, they will be "
+						 "checked approximately every %i "
+						 "minutes (this delay is "
+						 "configurable from the "
+						 "Properties Dialog).",
+						 minutes),
+					minutes);
+		
+		mn_error_dialog(NULL,
+				MN_CONF_IMMEDIATE_NOTIFICATION_ERROR_DIALOG_DO_NOT_SHOW,
+				"immediate-notification",
+				_("A monitoring error has occurred"),
+				_("Mail Notification was unable to enable immediate "
+				  "notification for one or more mailboxes. %s"), str);
+		g_free(str);
+	      }
 	  }
       }
   }
diff --git a/src/mn-mailbox.h b/src/mn-mailbox.h
@@ -1,10 +1,12 @@
-/* Generated by GOB (v2.0.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
 
 
+#include "config.h"
 #include <stdarg.h>
+#include "mn-message.h"
 #include "mn-uri.h"
 
 #ifndef __MN_MAILBOX_H__
@@ -16,9 +18,14 @@ extern "C" {
 
 
 
+#define MN_MAILBOX_N_TYPES		7
+  extern GType mn_mailbox_types[MN_MAILBOX_N_TYPES + 1];
+
 #define MN_MAILBOX_CAN_CHECK(self) \
   (MN_MAILBOX_GET_CLASS((self))->impl_check != NULL \
    || MN_MAILBOX_GET_CLASS((self))->impl_threaded_check != NULL)
+#define MN_MAILBOX_MUST_POLL(self) \
+  (MN_MAILBOX_CAN_CHECK((self)) && ! mn_mailbox_get_automatic((self)))
 
 
 /*
@@ -56,6 +63,7 @@ struct _MNMailbox {
 typedef struct _MNMailboxClass MNMailboxClass;
 struct _MNMailboxClass {
 	GObjectClass __parent__;
+	/*signal*/void (* messages_changed) (MNMailbox * self, gboolean has_new);
 	gboolean (* impl_is) (MNMailbox * self, MNURI * uri);
 	void (* impl_check) (MNMailbox * self);
 	void (* impl_threaded_check) (MNMailbox * self);
@@ -75,14 +83,30 @@ void 	mn_mailbox_set_automatic	(MNMailbox * self,
 gboolean 	mn_mailbox_get_has_new	(MNMailbox * self);
 void 	mn_mailbox_set_has_new	(MNMailbox * self,
 					gboolean val);
+gpointer 	mn_mailbox_get_messages	(MNMailbox * self);
+void 	mn_mailbox_set_messages	(MNMailbox * self,
+					gpointer val);
 const char * 	mn_mailbox_get_error	(MNMailbox * self);
-const GType * 	mn_mailbox_get_types	(void);
 void 	mn_mailbox_new_async	(MNURI * uri,
 					gpointer callback,
 					gpointer user_data);
 void 	mn_mailbox_check	(MNMailbox * self);
 
 /*
+ * Signal connection wrapper macros
+ */
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#define mn_mailbox_connect__messages_changed(object,func,data)	g_signal_connect(MN_MAILBOX(__extension__ ({MNMailbox *___object = (object); ___object; })),"messages_changed",(GCallback) __extension__ ({void (* ___messages_changed) (MNMailbox * ___fake___self, gboolean ___fake___has_new, gpointer ___data ) = (func); ___messages_changed; }), (data))
+#define mn_mailbox_connect_after__messages_changed(object,func,data)	g_signal_connect_after(MN_MAILBOX(__extension__ ({MNMailbox *___object = (object); ___object; })),"messages_changed",(GCallback) __extension__ ({void (* ___messages_changed) (MNMailbox * ___fake___self, gboolean ___fake___has_new, gpointer ___data ) = (func); ___messages_changed; }), (data))
+#define mn_mailbox_connect_data__messages_changed(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAILBOX(__extension__ ({MNMailbox *___object = (object); ___object; })),"messages_changed",(GCallback) __extension__ ({void (* ___messages_changed) (MNMailbox * ___fake___self, gboolean ___fake___has_new, gpointer ___data ) = (func); ___messages_changed; }), (data), (destroy_data), (GConnectFlags)(flags))
+#else /* __GNUC__ && !__STRICT_ANSI__ */
+#define mn_mailbox_connect__messages_changed(object,func,data)	g_signal_connect(MN_MAILBOX(object),"messages_changed",(GCallback)(func),(data))
+#define mn_mailbox_connect_after__messages_changed(object,func,data)	g_signal_connect_after(MN_MAILBOX(object),"messages_changed",(GCallback)(func),(data))
+#define mn_mailbox_connect_data__messages_changed(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAILBOX(object),"messages_changed",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
+#endif /* __GNUC__ && !__STRICT_ANSI__ */
+
+
+/*
  * Argument wrapping macros
  */
 #if defined(__GNUC__) && !defined(__STRICT_ANSI__)
@@ -93,6 +117,8 @@ void 	mn_mailbox_check	(MNMailbox * self);
 #define MN_MAILBOX_GET_PROP_AUTOMATIC(arg)	"automatic", __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;})
+#define MN_MAILBOX_GET_PROP_MESSAGES(arg)	"messages", __extension__ ({gpointer *z = (arg); z;})
 #define MN_MAILBOX_PROP_ERROR(arg)    	"error", __extension__ ({gchar *z = (arg); z;})
 #define MN_MAILBOX_GET_PROP_ERROR(arg)	"error", __extension__ ({gchar **z = (arg); z;})
 #else /* __GNUC__ && !__STRICT_ANSI__ */
@@ -103,6 +129,8 @@ void 	mn_mailbox_check	(MNMailbox * self);
 #define MN_MAILBOX_GET_PROP_AUTOMATIC(arg)	"automatic",(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)
+#define MN_MAILBOX_GET_PROP_MESSAGES(arg)	"messages",(gpointer *)(arg)
 #define MN_MAILBOX_PROP_ERROR(arg)    	"error",(gchar *)(arg)
 #define MN_MAILBOX_GET_PROP_ERROR(arg)	"error",(gchar **)(arg)
 #endif /* __GNUC__ && !__STRICT_ANSI__ */
diff --git a/src/mn-mailboxes-private.h b/src/mn-mailboxes-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (do not edit directly) */
 
 #ifndef __MN_MAILBOXES_PRIVATE_H__
 #define __MN_MAILBOXES_PRIVATE_H__
@@ -10,11 +10,11 @@ extern "C" {
 #endif /* __cplusplus */
 
 struct _MNMailboxesPrivate {
-#line 34 "mn-mailboxes.gob"
+#line 36 "mn-mailboxes.gob"
 	GSList * list;
-#line 35 "mn-mailboxes.gob"
-	unsigned int timeout_id;
 #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;
diff --git a/src/mn-mailboxes.c b/src/mn-mailboxes.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.9) on Thu Sep  9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct  6 19:29:53 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 9
+#define GOB_VERSION_PATCHLEVEL 10
 
 #define selfp (self->_priv)
 
@@ -23,7 +23,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 22 "mn-mailboxes.gob"
+#line 24 "mn-mailboxes.gob"
 
 #include "config.h"
 #include <glib/gi18n-lib.h>
@@ -48,15 +48,25 @@ typedef MNMailboxes Self;
 typedef MNMailboxesClass SelfClass;
 
 /* here are local prototypes */
+static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec);
 static void mn_mailboxes_class_init (MNMailboxesClass * c) G_GNUC_UNUSED;
+static void mn_mailboxes_mailbox_added (MNMailboxes * self, MNMailbox * mailbox) G_GNUC_UNUSED;
+static void mn_mailboxes_mailbox_changed (MNMailboxes * self, MNMailbox * mailbox) G_GNUC_UNUSED;
+static void ___real_mn_mailboxes_mailbox_removed (MNMailboxes * self, MNMailbox * mailbox);
+static void mn_mailboxes_mailbox_removed (MNMailboxes * self, MNMailbox * mailbox) G_GNUC_UNUSED;
+static void ___real_mn_mailboxes_list_changed (MNMailboxes * self);
 static void mn_mailboxes_list_changed (MNMailboxes * self) G_GNUC_UNUSED;
-static void mn_mailboxes_status_changed (MNMailboxes * self) G_GNUC_UNUSED;
+static void mn_mailboxes_has_new_changed (MNMailboxes * self) G_GNUC_UNUSED;
+static void mn_mailboxes_messages_changed (MNMailboxes * self, gboolean has_new) G_GNUC_UNUSED;
+static void mn_mailboxes_error_changed (MNMailboxes * self) G_GNUC_UNUSED;
 static void mn_mailboxes_init (MNMailboxes * self) G_GNUC_UNUSED;
+static void ___a_mn_mailboxes_finalize (GObject * object) G_GNUC_UNUSED;
 static void mn_mailboxes_notify_delay_cb (GConfClient * client, guint cnxn_id, GConfEntry * entry, gpointer user_data) G_GNUC_UNUSED;
 static void mn_mailboxes_notify_mailboxes_cb (GConfClient * client, guint cnxn_id, GConfEntry * entry, gpointer user_data) G_GNUC_UNUSED;
 static void mn_mailboxes_update_from_conf (MNMailboxes * self) G_GNUC_UNUSED;
 static void mn_mailboxes_new_cb (MNMailbox * mailbox, gpointer user_data) G_GNUC_UNUSED;
 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_install_timeout (MNMailboxes * self) G_GNUC_UNUSED;
 static gboolean mn_mailboxes_timeout_cb (gpointer data) G_GNUC_UNUSED;
@@ -66,44 +76,140 @@ static int mn_mailboxes_conf_find_compare_func (gconstpointer a, gconstpointer b
 /*
  * Signal connection wrapper macro shortcuts
  */
+#define self_connect__mailbox_added(object,func,data)	mn_mailboxes_connect__mailbox_added((object),(func),(data))
+#define self_connect_after__mailbox_added(object,func,data)	mn_mailboxes_connect_after__mailbox_added((object),(func),(data))
+#define self_connect_data__mailbox_added(object,func,data,destroy_data,flags)	mn_mailboxes_connect_data__mailbox_added((object),(func),(data),(destroy_data),(flags))
+#define self_connect__mailbox_changed(object,func,data)	mn_mailboxes_connect__mailbox_changed((object),(func),(data))
+#define self_connect_after__mailbox_changed(object,func,data)	mn_mailboxes_connect_after__mailbox_changed((object),(func),(data))
+#define self_connect_data__mailbox_changed(object,func,data,destroy_data,flags)	mn_mailboxes_connect_data__mailbox_changed((object),(func),(data),(destroy_data),(flags))
+#define self_connect__mailbox_removed(object,func,data)	mn_mailboxes_connect__mailbox_removed((object),(func),(data))
+#define self_connect_after__mailbox_removed(object,func,data)	mn_mailboxes_connect_after__mailbox_removed((object),(func),(data))
+#define self_connect_data__mailbox_removed(object,func,data,destroy_data,flags)	mn_mailboxes_connect_data__mailbox_removed((object),(func),(data),(destroy_data),(flags))
 #define self_connect__list_changed(object,func,data)	mn_mailboxes_connect__list_changed((object),(func),(data))
 #define self_connect_after__list_changed(object,func,data)	mn_mailboxes_connect_after__list_changed((object),(func),(data))
 #define self_connect_data__list_changed(object,func,data,destroy_data,flags)	mn_mailboxes_connect_data__list_changed((object),(func),(data),(destroy_data),(flags))
-#define self_connect__status_changed(object,func,data)	mn_mailboxes_connect__status_changed((object),(func),(data))
-#define self_connect_after__status_changed(object,func,data)	mn_mailboxes_connect_after__status_changed((object),(func),(data))
-#define self_connect_data__status_changed(object,func,data,destroy_data,flags)	mn_mailboxes_connect_data__status_changed((object),(func),(data),(destroy_data),(flags))
+#define self_connect__has_new_changed(object,func,data)	mn_mailboxes_connect__has_new_changed((object),(func),(data))
+#define self_connect_after__has_new_changed(object,func,data)	mn_mailboxes_connect_after__has_new_changed((object),(func),(data))
+#define self_connect_data__has_new_changed(object,func,data,destroy_data,flags)	mn_mailboxes_connect_data__has_new_changed((object),(func),(data),(destroy_data),(flags))
+#define self_connect__messages_changed(object,func,data)	mn_mailboxes_connect__messages_changed((object),(func),(data))
+#define self_connect_after__messages_changed(object,func,data)	mn_mailboxes_connect_after__messages_changed((object),(func),(data))
+#define self_connect_data__messages_changed(object,func,data,destroy_data,flags)	mn_mailboxes_connect_data__messages_changed((object),(func),(data),(destroy_data),(flags))
+#define self_connect__error_changed(object,func,data)	mn_mailboxes_connect__error_changed((object),(func),(data))
+#define self_connect_after__error_changed(object,func,data)	mn_mailboxes_connect_after__error_changed((object),(func),(data))
+#define self_connect_data__error_changed(object,func,data,destroy_data,flags)	mn_mailboxes_connect_data__error_changed((object),(func),(data),(destroy_data),(flags))
+
+typedef void  (*___Sig1) (MNMailboxes *, GObject *, gpointer);
+
+static void
+___marshal_Sig1 (GClosure *closure,
+	GValue *return_value G_GNUC_UNUSED,
+	guint n_param_values,
+	const GValue *param_values,
+	gpointer invocation_hint G_GNUC_UNUSED,
+	gpointer marshal_data)
+{
+	register ___Sig1 callback;
+	register GCClosure *cc = (GCClosure*) closure;
+	register gpointer data1, data2;
+
+	g_return_if_fail (n_param_values == 2);
+
+	if (G_CCLOSURE_SWAP_DATA (closure)) {
+		data1 = closure->data;
+		data2 = g_value_peek_pointer (param_values + 0);
+	} else {
+		data1 = g_value_peek_pointer (param_values + 0);
+		data2 = closure->data;
+	}
+
+	callback = (___Sig1) (marshal_data != NULL ? marshal_data : cc->callback);
+
+	callback ((MNMailboxes *)data1,
+		(GObject *) g_value_get_object (param_values + 1),
+		data2);
+}
+
+
+typedef void  (*___Sig2) (MNMailboxes *, gboolean , gpointer);
+
+static void
+___marshal_Sig2 (GClosure *closure,
+	GValue *return_value G_GNUC_UNUSED,
+	guint n_param_values,
+	const GValue *param_values,
+	gpointer invocation_hint G_GNUC_UNUSED,
+	gpointer marshal_data)
+{
+	register ___Sig2 callback;
+	register GCClosure *cc = (GCClosure*) closure;
+	register gpointer data1, data2;
+
+	g_return_if_fail (n_param_values == 2);
+
+	if (G_CCLOSURE_SWAP_DATA (closure)) {
+		data1 = closure->data;
+		data2 = g_value_peek_pointer (param_values + 0);
+	} else {
+		data1 = g_value_peek_pointer (param_values + 0);
+		data2 = closure->data;
+	}
+
+	callback = (___Sig2) (marshal_data != NULL ? marshal_data : cc->callback);
+
+	callback ((MNMailboxes *)data1,
+		(gboolean ) g_value_get_boolean (param_values + 1),
+		data2);
+}
+
 
 enum {
+	MAILBOX_ADDED_SIGNAL,
+	MAILBOX_CHANGED_SIGNAL,
+	MAILBOX_REMOVED_SIGNAL,
 	LIST_CHANGED_SIGNAL,
-	STATUS_CHANGED_SIGNAL,
+	HAS_NEW_CHANGED_SIGNAL,
+	MESSAGES_CHANGED_SIGNAL,
+	ERROR_CHANGED_SIGNAL,
 	LAST_SIGNAL
 };
 
+enum {
+	PROP_0,
+	PROP_MUST_POLL
+};
+
 static guint object_signals[LAST_SIGNAL] = {0};
 
 /* pointer to the class of our parent */
 static GObjectClass *parent_class = NULL;
 
 /* Short form macros */
+#define self_mailbox_added mn_mailboxes_mailbox_added
+#define self_mailbox_changed mn_mailboxes_mailbox_changed
+#define self_mailbox_removed mn_mailboxes_mailbox_removed
 #define self_list_changed mn_mailboxes_list_changed
-#define self_status_changed mn_mailboxes_status_changed
+#define self_has_new_changed mn_mailboxes_has_new_changed
+#define self_messages_changed mn_mailboxes_messages_changed
+#define self_error_changed mn_mailboxes_error_changed
+#define self_get_must_poll mn_mailboxes_get_must_poll
 #define self_notify_delay_cb mn_mailboxes_notify_delay_cb
 #define self_notify_mailboxes_cb mn_mailboxes_notify_mailboxes_cb
 #define self_update_from_conf mn_mailboxes_update_from_conf
 #define self_new_cb mn_mailboxes_new_cb
 #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_install_timeout mn_mailboxes_install_timeout
 #define self_timeout_cb mn_mailboxes_timeout_cb
 #define self_check mn_mailboxes_check
 #define self_get mn_mailboxes_get
+#define self_get_messages mn_mailboxes_get_messages
 #define self_find mn_mailboxes_find
 #define self_find_uri mn_mailboxes_find_uri
 #define self_find_compare_func mn_mailboxes_find_compare_func
 #define self_conf_find mn_mailboxes_conf_find
 #define self_conf_find_uri mn_mailboxes_conf_find_uri
 #define self_conf_find_compare_func mn_mailboxes_conf_find_compare_func
-#define self_has_manual mn_mailboxes_has_manual
 #define self_new mn_mailboxes_new
 GType
 mn_mailboxes_get_type (void)
@@ -152,41 +258,14 @@ static void
 ___finalize(GObject *obj_self)
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::finalize"
-	MNMailboxes *self  G_GNUC_UNUSED = MN_MAILBOXES (obj_self);
-	gpointer priv = self->_priv;
-	if(G_OBJECT_CLASS(parent_class)->finalize) \
-		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-#line 34 "mn-mailboxes.gob"
-	if(self->_priv->list) { ((*(void (*)(void *))mn_g_object_slist_free)) (self->_priv->list); self->_priv->list = NULL; }
-#line 162 "mn-mailboxes.c"
-#define timeout_id (self->_priv->timeout_id)
-#define VAR timeout_id
-	{
+	MNMailboxes *self G_GNUC_UNUSED = MN_MAILBOXES (obj_self);
+	gpointer priv G_GNUC_UNUSED = self->_priv;
+#line 159 "mn-mailboxes.gob"
+	___a_mn_mailboxes_finalize(obj_self);
+#line 266 "mn-mailboxes.c"
 #line 36 "mn-mailboxes.gob"
-	 if (VAR) g_source_remove(VAR); }
-#line 168 "mn-mailboxes.c"
-	memset(&timeout_id, 0, sizeof(timeout_id));
-#undef VAR
-#undef timeout_id
-#define delay_notification_id (self->_priv->delay_notification_id)
-#define VAR delay_notification_id
-	{
-#line 38 "mn-mailboxes.gob"
-	 eel_gconf_notification_remove(VAR); }
-#line 177 "mn-mailboxes.c"
-	memset(&delay_notification_id, 0, sizeof(delay_notification_id));
-#undef VAR
-#undef delay_notification_id
-#define mailboxes_notification_id (self->_priv->mailboxes_notification_id)
-#define VAR mailboxes_notification_id
-	{
-#line 40 "mn-mailboxes.gob"
-	 eel_gconf_notification_remove(VAR); }
-#line 186 "mn-mailboxes.c"
-	memset(&mailboxes_notification_id, 0, sizeof(mailboxes_notification_id));
-#undef VAR
-#undef mailboxes_notification_id
-	g_free (priv);
+	if(self->_priv->list) { mn_g_object_slist_free ((gpointer) self->_priv->list); self->_priv->list = NULL; }
+#line 269 "mn-mailboxes.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -196,39 +275,121 @@ mn_mailboxes_class_init (MNMailboxesClass * c G_GNUC_UNUSED)
 #define __GOB_FUNCTION__ "MN:Mailboxes::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
 
+	g_type_class_add_private(c,sizeof(MNMailboxesPrivate));
+
 	parent_class = g_type_class_ref (G_TYPE_OBJECT);
 
+	object_signals[MAILBOX_ADDED_SIGNAL] =
+		g_signal_new ("mailbox_added",
+			G_TYPE_FROM_CLASS (g_object_class),
+			(GSignalFlags)(G_SIGNAL_RUN_LAST),
+			G_STRUCT_OFFSET (MNMailboxesClass, mailbox_added),
+			NULL, NULL,
+			___marshal_Sig1,
+			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");
+	}
+	object_signals[MAILBOX_CHANGED_SIGNAL] =
+		g_signal_new ("mailbox_changed",
+			G_TYPE_FROM_CLASS (g_object_class),
+			(GSignalFlags)(G_SIGNAL_RUN_LAST),
+			G_STRUCT_OFFSET (MNMailboxesClass, mailbox_changed),
+			NULL, NULL,
+			___marshal_Sig1,
+			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");
+	}
+	object_signals[MAILBOX_REMOVED_SIGNAL] =
+		g_signal_new ("mailbox_removed",
+			G_TYPE_FROM_CLASS (g_object_class),
+			(GSignalFlags)(G_SIGNAL_RUN_FIRST),
+			G_STRUCT_OFFSET (MNMailboxesClass, mailbox_removed),
+			NULL, NULL,
+			___marshal_Sig1,
+			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");
+	}
 	object_signals[LIST_CHANGED_SIGNAL] =
 		g_signal_new ("list_changed",
 			G_TYPE_FROM_CLASS (g_object_class),
-			(GSignalFlags)(G_SIGNAL_RUN_LAST),
+			(GSignalFlags)(G_SIGNAL_RUN_FIRST),
 			G_STRUCT_OFFSET (MNMailboxesClass, list_changed),
 			NULL, NULL,
 			g_cclosure_marshal_VOID__VOID,
 			G_TYPE_NONE, 0);
-	object_signals[STATUS_CHANGED_SIGNAL] =
-		g_signal_new ("status_changed",
+	object_signals[HAS_NEW_CHANGED_SIGNAL] =
+		g_signal_new ("has_new_changed",
 			G_TYPE_FROM_CLASS (g_object_class),
 			(GSignalFlags)(G_SIGNAL_RUN_LAST),
-			G_STRUCT_OFFSET (MNMailboxesClass, status_changed),
+			G_STRUCT_OFFSET (MNMailboxesClass, has_new_changed),
+			NULL, NULL,
+			g_cclosure_marshal_VOID__VOID,
+			G_TYPE_NONE, 0);
+	object_signals[MESSAGES_CHANGED_SIGNAL] =
+		g_signal_new ("messages_changed",
+			G_TYPE_FROM_CLASS (g_object_class),
+			(GSignalFlags)(G_SIGNAL_RUN_LAST),
+			G_STRUCT_OFFSET (MNMailboxesClass, messages_changed),
+			NULL, NULL,
+			___marshal_Sig2,
+			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 118: Type mismatch of \"messages_changed\" signal signature");
+	}
+	object_signals[ERROR_CHANGED_SIGNAL] =
+		g_signal_new ("error_changed",
+			G_TYPE_FROM_CLASS (g_object_class),
+			(GSignalFlags)(G_SIGNAL_RUN_LAST),
+			G_STRUCT_OFFSET (MNMailboxesClass, error_changed),
 			NULL, NULL,
 			g_cclosure_marshal_VOID__VOID,
 			G_TYPE_NONE, 0);
 
-	c->list_changed = NULL;
-	c->status_changed = NULL;
+	c->mailbox_added = NULL;
+	c->mailbox_changed = NULL;
+#line 69 "mn-mailboxes.gob"
+	c->mailbox_removed = ___real_mn_mailboxes_mailbox_removed;
+#line 86 "mn-mailboxes.gob"
+	c->list_changed = ___real_mn_mailboxes_list_changed;
+#line 362 "mn-mailboxes.c"
+	c->has_new_changed = NULL;
+	c->messages_changed = NULL;
+	c->error_changed = NULL;
+#line 159 "mn-mailboxes.gob"
 	g_object_class->finalize = ___finalize;
+#line 368 "mn-mailboxes.c"
+	g_object_class->get_property = ___object_get_property;
+    {
+	GParamSpec   *param_spec;
+
+	param_spec = g_param_spec_boolean
+		("must_poll" /* name */,
+		 NULL /* nick */,
+		 _("Whether one or more of the mailboxes has to be polled") /* blurb */,
+		 FALSE /* default_value */,
+		 (GParamFlags)(G_PARAM_READABLE));
+	g_object_class_install_property (g_object_class,
+		PROP_MUST_POLL,
+		param_spec);
+    }
 }
 #undef __GOB_FUNCTION__
-#line 47 "mn-mailboxes.gob"
+#line 150 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_init (MNMailboxes * self G_GNUC_UNUSED)
-#line 227 "mn-mailboxes.c"
+#line 388 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::init"
-	self->_priv = g_new0 (MNMailboxesPrivate, 1);
+	self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,TYPE_SELF,MNMailboxesPrivate);
  {
-#line 48 "mn-mailboxes.gob"
+#line 151 "mn-mailboxes.gob"
 
     self_update_from_conf(self);
     self_install_timeout(self);
@@ -236,16 +397,189 @@ mn_mailboxes_init (MNMailboxes * self G_GNUC_UNUSED)
     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);
   
-#line 240 "mn-mailboxes.c"
+#line 401 "mn-mailboxes.c"
  }
 }
 #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:Mailboxes::get_property"
+{
+	MNMailboxes *self G_GNUC_UNUSED;
+
+	self = MN_MAILBOXES (object);
+
+	switch (property_id) {
+	case PROP_MUST_POLL:
+		{
+#line 136 "mn-mailboxes.gob"
+
+      gboolean must_poll = FALSE;
+      GSList *l;
+
+      MN_LIST_FOREACH(l, selfp->list)
+	if (MN_MAILBOX_MUST_POLL(l->data))
+	  {
+	    must_poll = TRUE;
+	    break;
+	  }
+
+      g_value_set_boolean(VAL, must_poll);
+    
+#line 434 "mn-mailboxes.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 48 "mn-mailboxes.gob"
+static void 
+mn_mailboxes_mailbox_added (MNMailboxes * self, MNMailbox * mailbox)
+#line 453 "mn-mailboxes.c"
+{
+	GValue ___param_values[2];
+	GValue ___return_val;
+
+memset (&___return_val, 0, sizeof (___return_val));
+memset (&___param_values, 0, sizeof (___param_values));
+
+#line 48 "mn-mailboxes.gob"
+	g_return_if_fail (self != NULL);
+#line 48 "mn-mailboxes.gob"
+	g_return_if_fail (MN_IS_MAILBOXES (self));
+#line 48 "mn-mailboxes.gob"
+	g_return_if_fail (mailbox != NULL);
+#line 48 "mn-mailboxes.gob"
+	g_return_if_fail (MN_IS_MAILBOX (mailbox));
+#line 469 "mn-mailboxes.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);
+
+	___param_values[1].g_type = 0;
+	g_value_init (&___param_values[1], G_TYPE_OBJECT);
+	g_value_set_object (&___param_values[1], (GObject *) mailbox);
+
+	g_signal_emitv (___param_values,
+		object_signals[MAILBOX_ADDED_SIGNAL],
+		0 /* detail */,
+		&___return_val);
 
-#line 42 "mn-mailboxes.gob"
+	g_value_unset (&___param_values[0]);
+	g_value_unset (&___param_values[1]);
+}
+
+#line 58 "mn-mailboxes.gob"
+static void 
+mn_mailboxes_mailbox_changed (MNMailboxes * self, MNMailbox * mailbox)
+#line 491 "mn-mailboxes.c"
+{
+	GValue ___param_values[2];
+	GValue ___return_val;
+
+memset (&___return_val, 0, sizeof (___return_val));
+memset (&___param_values, 0, sizeof (___param_values));
+
+#line 58 "mn-mailboxes.gob"
+	g_return_if_fail (self != NULL);
+#line 58 "mn-mailboxes.gob"
+	g_return_if_fail (MN_IS_MAILBOXES (self));
+#line 58 "mn-mailboxes.gob"
+	g_return_if_fail (mailbox != NULL);
+#line 58 "mn-mailboxes.gob"
+	g_return_if_fail (MN_IS_MAILBOX (mailbox));
+#line 507 "mn-mailboxes.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);
+
+	___param_values[1].g_type = 0;
+	g_value_init (&___param_values[1], G_TYPE_OBJECT);
+	g_value_set_object (&___param_values[1], (GObject *) mailbox);
+
+	g_signal_emitv (___param_values,
+		object_signals[MAILBOX_CHANGED_SIGNAL],
+		0 /* detail */,
+		&___return_val);
+
+	g_value_unset (&___param_values[0]);
+	g_value_unset (&___param_values[1]);
+}
+
+#line 69 "mn-mailboxes.gob"
+static void 
+mn_mailboxes_mailbox_removed (MNMailboxes * self, MNMailbox * mailbox)
+#line 529 "mn-mailboxes.c"
+{
+	GValue ___param_values[2];
+	GValue ___return_val;
+
+memset (&___return_val, 0, sizeof (___return_val));
+memset (&___param_values, 0, sizeof (___param_values));
+
+#line 69 "mn-mailboxes.gob"
+	g_return_if_fail (self != NULL);
+#line 69 "mn-mailboxes.gob"
+	g_return_if_fail (MN_IS_MAILBOXES (self));
+#line 69 "mn-mailboxes.gob"
+	g_return_if_fail (mailbox != NULL);
+#line 69 "mn-mailboxes.gob"
+	g_return_if_fail (MN_IS_MAILBOX (mailbox));
+#line 545 "mn-mailboxes.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);
+
+	___param_values[1].g_type = 0;
+	g_value_init (&___param_values[1], G_TYPE_OBJECT);
+	g_value_set_object (&___param_values[1], (GObject *) mailbox);
+
+	g_signal_emitv (___param_values,
+		object_signals[MAILBOX_REMOVED_SIGNAL],
+		0 /* detail */,
+		&___return_val);
+
+	g_value_unset (&___param_values[0]);
+	g_value_unset (&___param_values[1]);
+}
+#line 69 "mn-mailboxes.gob"
+static void 
+___real_mn_mailboxes_mailbox_removed (MNMailboxes * self G_GNUC_UNUSED, MNMailbox * mailbox)
+#line 566 "mn-mailboxes.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailboxes::mailbox_removed"
+{
+#line 71 "mn-mailboxes.gob"
+	
+    /* has-new, messages and error have possibly changed */
+    self_has_new_changed(self);
+    self_messages_changed(self, FALSE);
+    self_error_changed(self);
+  }}
+#line 577 "mn-mailboxes.c"
+#undef __GOB_FUNCTION__
+
+#line 86 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_list_changed (MNMailboxes * self)
-#line 249 "mn-mailboxes.c"
+#line 583 "mn-mailboxes.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -253,11 +587,11 @@ mn_mailboxes_list_changed (MNMailboxes * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 42 "mn-mailboxes.gob"
+#line 86 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 42 "mn-mailboxes.gob"
+#line 86 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 261 "mn-mailboxes.c"
+#line 595 "mn-mailboxes.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -270,11 +604,25 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 	g_value_unset (&___param_values[0]);
 }
+#line 86 "mn-mailboxes.gob"
+static void 
+___real_mn_mailboxes_list_changed (MNMailboxes * self G_GNUC_UNUSED)
+#line 611 "mn-mailboxes.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailboxes::list_changed"
+{
+#line 88 "mn-mailboxes.gob"
+	
+    /* must-poll has possibly changed */
+    g_object_notify(G_OBJECT(self), "must-poll");
+  }}
+#line 620 "mn-mailboxes.c"
+#undef __GOB_FUNCTION__
 
-#line 44 "mn-mailboxes.gob"
+#line 102 "mn-mailboxes.gob"
 static void 
-mn_mailboxes_status_changed (MNMailboxes * self)
-#line 278 "mn-mailboxes.c"
+mn_mailboxes_has_new_changed (MNMailboxes * self)
+#line 626 "mn-mailboxes.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -282,36 +630,143 @@ mn_mailboxes_status_changed (MNMailboxes * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 44 "mn-mailboxes.gob"
+#line 102 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 44 "mn-mailboxes.gob"
+#line 102 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 290 "mn-mailboxes.c"
+#line 638 "mn-mailboxes.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[STATUS_CHANGED_SIGNAL],
+		object_signals[HAS_NEW_CHANGED_SIGNAL],
 		0 /* detail */,
 		&___return_val);
 
 	g_value_unset (&___param_values[0]);
 }
 
+#line 118 "mn-mailboxes.gob"
+static void 
+mn_mailboxes_messages_changed (MNMailboxes * self, gboolean has_new)
+#line 655 "mn-mailboxes.c"
+{
+	GValue ___param_values[2];
+	GValue ___return_val;
+
+memset (&___return_val, 0, sizeof (___return_val));
+memset (&___param_values, 0, sizeof (___param_values));
+
+#line 118 "mn-mailboxes.gob"
+	g_return_if_fail (self != NULL);
+#line 118 "mn-mailboxes.gob"
+	g_return_if_fail (MN_IS_MAILBOXES (self));
+#line 667 "mn-mailboxes.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);
+
+	___param_values[1].g_type = 0;
+	g_value_init (&___param_values[1], G_TYPE_BOOLEAN);
+	g_value_set_boolean (&___param_values[1], (gboolean ) has_new);
+
+	g_signal_emitv (___param_values,
+		object_signals[MESSAGES_CHANGED_SIGNAL],
+		0 /* detail */,
+		&___return_val);
 
-#line 56 "mn-mailboxes.gob"
+	g_value_unset (&___param_values[0]);
+	g_value_unset (&___param_values[1]);
+}
+
+#line 130 "mn-mailboxes.gob"
+static void 
+mn_mailboxes_error_changed (MNMailboxes * self)
+#line 689 "mn-mailboxes.c"
+{
+	GValue ___param_values[1];
+	GValue ___return_val;
+
+memset (&___return_val, 0, sizeof (___return_val));
+memset (&___param_values, 0, sizeof (___param_values));
+
+#line 130 "mn-mailboxes.gob"
+	g_return_if_fail (self != NULL);
+#line 130 "mn-mailboxes.gob"
+	g_return_if_fail (MN_IS_MAILBOXES (self));
+#line 701 "mn-mailboxes.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[ERROR_CHANGED_SIGNAL],
+		0 /* detail */,
+		&___return_val);
+
+	g_value_unset (&___param_values[0]);
+}
+
+#line 136 "mn-mailboxes.gob"
+gboolean 
+mn_mailboxes_get_must_poll (MNMailboxes * self)
+#line 718 "mn-mailboxes.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailboxes::get_must_poll"
+{
+#line 133 "mn-mailboxes.gob"
+		gboolean val; g_object_get (G_OBJECT (self), "must_poll", &val, NULL); return val;
+}}
+#line 725 "mn-mailboxes.c"
+#undef __GOB_FUNCTION__
+
+
+#line 159 "mn-mailboxes.gob"
+static void 
+___a_mn_mailboxes_finalize (GObject * object G_GNUC_UNUSED)
+#line 732 "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 159 "mn-mailboxes.gob"
+	g_return_if_fail (object != NULL);
+#line 159 "mn-mailboxes.gob"
+	g_return_if_fail (G_IS_OBJECT (object));
+#line 742 "mn-mailboxes.c"
+{
+#line 161 "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 756 "mn-mailboxes.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 173 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_notify_delay_cb (GConfClient * client, guint cnxn_id, GConfEntry * entry, gpointer user_data)
-#line 308 "mn-mailboxes.c"
+#line 763 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::notify_delay_cb"
-#line 56 "mn-mailboxes.gob"
+#line 173 "mn-mailboxes.gob"
 	g_return_if_fail (user_data != NULL);
-#line 313 "mn-mailboxes.c"
+#line 768 "mn-mailboxes.c"
 {
-#line 61 "mn-mailboxes.gob"
+#line 178 "mn-mailboxes.gob"
 	
     Self *self = user_data;
 
@@ -319,20 +774,20 @@ mn_mailboxes_notify_delay_cb (GConfClient * client, guint cnxn_id, GConfEntry * 
     self_install_timeout(self);
     GDK_THREADS_LEAVE();
   }}
-#line 323 "mn-mailboxes.c"
+#line 778 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 69 "mn-mailboxes.gob"
+#line 186 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_notify_mailboxes_cb (GConfClient * client, guint cnxn_id, GConfEntry * entry, gpointer user_data)
-#line 329 "mn-mailboxes.c"
+#line 784 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::notify_mailboxes_cb"
-#line 69 "mn-mailboxes.gob"
+#line 186 "mn-mailboxes.gob"
 	g_return_if_fail (user_data != NULL);
-#line 334 "mn-mailboxes.c"
+#line 789 "mn-mailboxes.c"
 {
-#line 74 "mn-mailboxes.gob"
+#line 191 "mn-mailboxes.gob"
 	
     Self *self = user_data;
 
@@ -340,22 +795,22 @@ mn_mailboxes_notify_mailboxes_cb (GConfClient * client, guint cnxn_id, GConfEntr
     self_update_from_conf(self);
     GDK_THREADS_LEAVE();
   }}
-#line 344 "mn-mailboxes.c"
+#line 799 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 82 "mn-mailboxes.gob"
+#line 199 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_update_from_conf (MNMailboxes * self)
-#line 350 "mn-mailboxes.c"
+#line 805 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::update_from_conf"
-#line 82 "mn-mailboxes.gob"
+#line 199 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 82 "mn-mailboxes.gob"
+#line 199 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 357 "mn-mailboxes.c"
+#line 812 "mn-mailboxes.c"
 {
-#line 84 "mn-mailboxes.gob"
+#line 201 "mn-mailboxes.gob"
 	
     GSList *gconf_mailboxes;
     GSList *l;
@@ -372,7 +827,11 @@ mn_mailboxes_update_from_conf (MNMailboxes * self)
 
 	if (! self_conf_find_uri(gconf_mailboxes, mailbox->uri))
 	  {
-	    selfp->list = mn_g_object_slist_delete_link(selfp->list, l);
+	    selfp->list = g_slist_delete_link(selfp->list, l);
+
+	    self_mailbox_removed(self, mailbox);
+	    g_object_unref(mailbox);
+
 	    changed = TRUE;
 	    goto loop;
 	  }
@@ -392,6 +851,8 @@ mn_mailboxes_update_from_conf (MNMailboxes * self)
 
 	    mailbox = mn_pending_mailbox_new(uri);
 	    selfp->list = g_slist_append(selfp->list, mailbox);
+
+	    self_mailbox_added(self, mailbox);
 	    changed = TRUE;
 	    
 	    mn_mailbox_new_async(uri, self_new_cb, self);
@@ -403,24 +864,24 @@ mn_mailboxes_update_from_conf (MNMailboxes * self)
     if (changed)
       self_list_changed(self);
   }}
-#line 407 "mn-mailboxes.c"
+#line 868 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 132 "mn-mailboxes.gob"
+#line 255 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_new_cb (MNMailbox * mailbox, gpointer user_data)
-#line 413 "mn-mailboxes.c"
+#line 874 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::new_cb"
-#line 132 "mn-mailboxes.gob"
+#line 255 "mn-mailboxes.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 132 "mn-mailboxes.gob"
+#line 255 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 132 "mn-mailboxes.gob"
+#line 255 "mn-mailboxes.gob"
 	g_return_if_fail (user_data != NULL);
-#line 422 "mn-mailboxes.c"
+#line 883 "mn-mailboxes.c"
 {
-#line 135 "mn-mailboxes.gob"
+#line 258 "mn-mailboxes.gob"
 	
     Self *self = user_data;
     GSList *elem;
@@ -431,8 +892,11 @@ mn_mailboxes_new_cb (MNMailbox * mailbox, gpointer user_data)
 	if (MN_IS_UNSUPPORTED_MAILBOX(mailbox))
 	  mn_info(_("%s is unsupported: %s"), mn_mailbox_get_name(mailbox), mn_unsupported_mailbox_get_reason(MN_UNSUPPORTED_MAILBOX(mailbox)));
 	
-	g_signal_connect(G_OBJECT(mailbox), "notify::has-new", G_CALLBACK(self_notify_has_new_h), self);
-	g_signal_connect(G_OBJECT(mailbox), "notify::error", G_CALLBACK(self_notify_error_h), self);
+	g_object_connect(mailbox,
+			 "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,
+			 NULL);
 
 	if (MN_MAILBOX_CAN_CHECK(mailbox))
 	  mn_mailbox_check(mailbox);
@@ -440,31 +904,32 @@ mn_mailboxes_new_cb (MNMailbox * mailbox, gpointer user_data)
 	g_object_unref(elem->data);
 	elem->data = mailbox;
 
+	self_mailbox_changed(self, mailbox);
 	self_list_changed(self);
       }
     else
       g_object_unref(mailbox);
   }}
-#line 449 "mn-mailboxes.c"
+#line 914 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 160 "mn-mailboxes.gob"
+#line 287 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_notify_has_new_h (GObject * object, GParamSpec * pspec, gpointer user_data)
-#line 455 "mn-mailboxes.c"
+#line 920 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::notify_has_new_h"
-#line 160 "mn-mailboxes.gob"
+#line 287 "mn-mailboxes.gob"
 	g_return_if_fail (object != NULL);
-#line 160 "mn-mailboxes.gob"
+#line 287 "mn-mailboxes.gob"
 	g_return_if_fail (G_IS_OBJECT (object));
-#line 160 "mn-mailboxes.gob"
+#line 287 "mn-mailboxes.gob"
 	g_return_if_fail (pspec != NULL);
-#line 160 "mn-mailboxes.gob"
+#line 287 "mn-mailboxes.gob"
 	g_return_if_fail (user_data != NULL);
-#line 466 "mn-mailboxes.c"
+#line 931 "mn-mailboxes.c"
 {
-#line 164 "mn-mailboxes.gob"
+#line 291 "mn-mailboxes.gob"
 	
     Self *self = user_data;
     MNMailbox *mailbox = MN_MAILBOX(object);
@@ -473,28 +938,51 @@ mn_mailboxes_notify_has_new_h (GObject * object, GParamSpec * pspec, gpointer us
     has_new = mn_mailbox_get_has_new(mailbox);
     mn_info(has_new ? _("%s has new mail") : _("%s has no new mail"), mn_mailbox_get_name(mailbox));
 
-    self_status_changed(self);
+    self_has_new_changed(self);
   }}
-#line 479 "mn-mailboxes.c"
+#line 944 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 175 "mn-mailboxes.gob"
+#line 302 "mn-mailboxes.gob"
+static void 
+mn_mailboxes_messages_changed_h (MNMailbox * mailbox, gboolean has_new, gpointer user_data)
+#line 950 "mn-mailboxes.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailboxes::messages_changed_h"
+#line 302 "mn-mailboxes.gob"
+	g_return_if_fail (mailbox != NULL);
+#line 302 "mn-mailboxes.gob"
+	g_return_if_fail (MN_IS_MAILBOX (mailbox));
+#line 302 "mn-mailboxes.gob"
+	g_return_if_fail (user_data != NULL);
+#line 959 "mn-mailboxes.c"
+{
+#line 306 "mn-mailboxes.gob"
+	
+    Self *self = user_data;
+
+    self_messages_changed(self, has_new);
+  }}
+#line 967 "mn-mailboxes.c"
+#undef __GOB_FUNCTION__
+
+#line 312 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_notify_error_h (GObject * object, GParamSpec * pspec, gpointer user_data)
-#line 485 "mn-mailboxes.c"
+#line 973 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::notify_error_h"
-#line 175 "mn-mailboxes.gob"
+#line 312 "mn-mailboxes.gob"
 	g_return_if_fail (object != NULL);
-#line 175 "mn-mailboxes.gob"
+#line 312 "mn-mailboxes.gob"
 	g_return_if_fail (G_IS_OBJECT (object));
-#line 175 "mn-mailboxes.gob"
+#line 312 "mn-mailboxes.gob"
 	g_return_if_fail (pspec != NULL);
-#line 175 "mn-mailboxes.gob"
+#line 312 "mn-mailboxes.gob"
 	g_return_if_fail (user_data != NULL);
-#line 496 "mn-mailboxes.c"
+#line 984 "mn-mailboxes.c"
 {
-#line 179 "mn-mailboxes.gob"
+#line 316 "mn-mailboxes.gob"
 	
     Self *self = user_data;
     MNMailbox *mailbox = MN_MAILBOX(object);
@@ -504,24 +992,24 @@ mn_mailboxes_notify_error_h (GObject * object, GParamSpec * pspec, gpointer user
     if (error)
       mn_info(_("%s reported an error: %s"), mn_mailbox_get_name(mailbox), error);
 
-    self_status_changed(self);
+    self_error_changed(self);
   }}
-#line 510 "mn-mailboxes.c"
+#line 998 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 191 "mn-mailboxes.gob"
+#line 328 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_install_timeout (MNMailboxes * self)
-#line 516 "mn-mailboxes.c"
+#line 1004 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::install_timeout"
-#line 191 "mn-mailboxes.gob"
+#line 328 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 191 "mn-mailboxes.gob"
+#line 328 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 523 "mn-mailboxes.c"
+#line 1011 "mn-mailboxes.c"
 {
-#line 193 "mn-mailboxes.gob"
+#line 330 "mn-mailboxes.gob"
 	
     int minutes;
     int seconds;
@@ -540,20 +1028,20 @@ mn_mailboxes_install_timeout (MNMailboxes * self)
 					self_timeout_cb,
 					self);
   }}
-#line 544 "mn-mailboxes.c"
+#line 1032 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 212 "mn-mailboxes.gob"
+#line 349 "mn-mailboxes.gob"
 static gboolean 
 mn_mailboxes_timeout_cb (gpointer data)
-#line 550 "mn-mailboxes.c"
+#line 1038 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::timeout_cb"
-#line 212 "mn-mailboxes.gob"
+#line 349 "mn-mailboxes.gob"
 	g_return_val_if_fail (data != NULL, (gboolean )0);
-#line 555 "mn-mailboxes.c"
+#line 1043 "mn-mailboxes.c"
 {
-#line 214 "mn-mailboxes.gob"
+#line 351 "mn-mailboxes.gob"
 	
     Self *self = data;
 
@@ -563,22 +1051,22 @@ mn_mailboxes_timeout_cb (gpointer data)
     
     return TRUE;		/* continue */
   }}
-#line 567 "mn-mailboxes.c"
+#line 1055 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 224 "mn-mailboxes.gob"
+#line 361 "mn-mailboxes.gob"
 void 
 mn_mailboxes_check (MNMailboxes * self)
-#line 573 "mn-mailboxes.c"
+#line 1061 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::check"
-#line 224 "mn-mailboxes.gob"
+#line 361 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 224 "mn-mailboxes.gob"
+#line 361 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 580 "mn-mailboxes.c"
+#line 1068 "mn-mailboxes.c"
 {
-#line 226 "mn-mailboxes.gob"
+#line 363 "mn-mailboxes.gob"
 	
     GSList *l;
 
@@ -586,47 +1074,78 @@ mn_mailboxes_check (MNMailboxes * self)
       {
 	MNMailbox *mailbox = l->data;
 
-	if (MN_MAILBOX_CAN_CHECK(mailbox) && ! mn_mailbox_get_automatic(mailbox))
+	if (MN_MAILBOX_MUST_POLL(mailbox))
 	  mn_mailbox_check(mailbox);
       }
   }}
-#line 594 "mn-mailboxes.c"
+#line 1082 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 238 "mn-mailboxes.gob"
+#line 375 "mn-mailboxes.gob"
 GSList * 
 mn_mailboxes_get (MNMailboxes * self)
-#line 600 "mn-mailboxes.c"
+#line 1088 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::get"
-#line 238 "mn-mailboxes.gob"
+#line 375 "mn-mailboxes.gob"
 	g_return_val_if_fail (self != NULL, (GSList * )0);
-#line 238 "mn-mailboxes.gob"
+#line 375 "mn-mailboxes.gob"
 	g_return_val_if_fail (MN_IS_MAILBOXES (self), (GSList * )0);
-#line 607 "mn-mailboxes.c"
+#line 1095 "mn-mailboxes.c"
 {
-#line 240 "mn-mailboxes.gob"
+#line 377 "mn-mailboxes.gob"
 	
     return selfp->list;
   }}
-#line 613 "mn-mailboxes.c"
+#line 1101 "mn-mailboxes.c"
+#undef __GOB_FUNCTION__
+
+#line 381 "mn-mailboxes.gob"
+GSList * 
+mn_mailboxes_get_messages (MNMailboxes * self)
+#line 1107 "mn-mailboxes.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailboxes::get_messages"
+#line 381 "mn-mailboxes.gob"
+	g_return_val_if_fail (self != NULL, (GSList * )0);
+#line 381 "mn-mailboxes.gob"
+	g_return_val_if_fail (MN_IS_MAILBOXES (self), (GSList * )0);
+#line 1114 "mn-mailboxes.c"
+{
+#line 383 "mn-mailboxes.gob"
+	
+    GSList *messages = NULL;
+    GSList *l;
+
+    MN_LIST_FOREACH(l, selfp->list)
+      {
+	MNMailbox *mailbox = l->data;
+	messages = g_slist_concat(messages, mn_g_object_slist_copy(mn_mailbox_get_messages(mailbox)));
+      }
+
+    messages = mn_message_slist_sort_by_sent_time(messages);
+    messages = g_slist_reverse(messages);
+
+    return messages;
+  }}
+#line 1132 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 244 "mn-mailboxes.gob"
+#line 399 "mn-mailboxes.gob"
 GSList * 
 mn_mailboxes_find (MNMailboxes * self, const char * text_uri)
-#line 619 "mn-mailboxes.c"
+#line 1138 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::find"
-#line 244 "mn-mailboxes.gob"
+#line 399 "mn-mailboxes.gob"
 	g_return_val_if_fail (self != NULL, (GSList * )0);
-#line 244 "mn-mailboxes.gob"
+#line 399 "mn-mailboxes.gob"
 	g_return_val_if_fail (MN_IS_MAILBOXES (self), (GSList * )0);
-#line 244 "mn-mailboxes.gob"
+#line 399 "mn-mailboxes.gob"
 	g_return_val_if_fail (text_uri != NULL, (GSList * )0);
-#line 628 "mn-mailboxes.c"
+#line 1147 "mn-mailboxes.c"
 {
-#line 246 "mn-mailboxes.gob"
+#line 401 "mn-mailboxes.gob"
 	
     MNURI *uri;
     GSList *elem;
@@ -637,60 +1156,60 @@ mn_mailboxes_find (MNMailboxes * self, const char * text_uri)
 
     return elem;
   }}
-#line 641 "mn-mailboxes.c"
+#line 1160 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 257 "mn-mailboxes.gob"
+#line 412 "mn-mailboxes.gob"
 GSList * 
 mn_mailboxes_find_uri (MNMailboxes * self, MNURI * uri)
-#line 647 "mn-mailboxes.c"
+#line 1166 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::find_uri"
-#line 257 "mn-mailboxes.gob"
+#line 412 "mn-mailboxes.gob"
 	g_return_val_if_fail (self != NULL, (GSList * )0);
-#line 257 "mn-mailboxes.gob"
+#line 412 "mn-mailboxes.gob"
 	g_return_val_if_fail (MN_IS_MAILBOXES (self), (GSList * )0);
-#line 257 "mn-mailboxes.gob"
+#line 412 "mn-mailboxes.gob"
 	g_return_val_if_fail (uri != NULL, (GSList * )0);
-#line 257 "mn-mailboxes.gob"
+#line 412 "mn-mailboxes.gob"
 	g_return_val_if_fail (MN_IS_URI (uri), (GSList * )0);
-#line 658 "mn-mailboxes.c"
+#line 1177 "mn-mailboxes.c"
 {
-#line 259 "mn-mailboxes.gob"
+#line 414 "mn-mailboxes.gob"
 	
     return g_slist_find_custom(selfp->list, uri, self_find_compare_func);
   }}
-#line 664 "mn-mailboxes.c"
+#line 1183 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 263 "mn-mailboxes.gob"
+#line 418 "mn-mailboxes.gob"
 static int 
 mn_mailboxes_find_compare_func (gconstpointer a, gconstpointer b)
-#line 670 "mn-mailboxes.c"
+#line 1189 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::find_compare_func"
 {
-#line 265 "mn-mailboxes.gob"
+#line 420 "mn-mailboxes.gob"
 	
     MNMailbox *mailbox = (MNMailbox *) a;
     MNURI *uri = (MNURI *) b;
 
     return strcmp(mailbox->uri->text, uri->text);
   }}
-#line 681 "mn-mailboxes.c"
+#line 1200 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 272 "mn-mailboxes.gob"
+#line 427 "mn-mailboxes.gob"
 GSList * 
 mn_mailboxes_conf_find (GSList * gconf_mailboxes, const char * text_uri)
-#line 687 "mn-mailboxes.c"
+#line 1206 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::conf_find"
-#line 272 "mn-mailboxes.gob"
+#line 427 "mn-mailboxes.gob"
 	g_return_val_if_fail (text_uri != NULL, (GSList * )0);
-#line 692 "mn-mailboxes.c"
+#line 1211 "mn-mailboxes.c"
 {
-#line 274 "mn-mailboxes.gob"
+#line 429 "mn-mailboxes.gob"
 	
     MNURI *uri;
     GSList *elem;
@@ -701,36 +1220,36 @@ mn_mailboxes_conf_find (GSList * gconf_mailboxes, const char * text_uri)
 
     return elem;
   }}
-#line 705 "mn-mailboxes.c"
+#line 1224 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 285 "mn-mailboxes.gob"
+#line 440 "mn-mailboxes.gob"
 GSList * 
 mn_mailboxes_conf_find_uri (GSList * gconf_mailboxes, MNURI * uri)
-#line 711 "mn-mailboxes.c"
+#line 1230 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::conf_find_uri"
-#line 285 "mn-mailboxes.gob"
+#line 440 "mn-mailboxes.gob"
 	g_return_val_if_fail (uri != NULL, (GSList * )0);
-#line 285 "mn-mailboxes.gob"
+#line 440 "mn-mailboxes.gob"
 	g_return_val_if_fail (MN_IS_URI (uri), (GSList * )0);
-#line 718 "mn-mailboxes.c"
+#line 1237 "mn-mailboxes.c"
 {
-#line 287 "mn-mailboxes.gob"
+#line 442 "mn-mailboxes.gob"
 	
     return g_slist_find_custom(gconf_mailboxes, uri, self_conf_find_compare_func);
   }}
-#line 724 "mn-mailboxes.c"
+#line 1243 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 291 "mn-mailboxes.gob"
+#line 446 "mn-mailboxes.gob"
 static int 
 mn_mailboxes_conf_find_compare_func (gconstpointer a, gconstpointer b)
-#line 730 "mn-mailboxes.c"
+#line 1249 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::conf_find_compare_func"
 {
-#line 293 "mn-mailboxes.gob"
+#line 448 "mn-mailboxes.gob"
 	
     MNURI *uri_a;
     MNURI *uri_b = (MNURI *) b;
@@ -742,52 +1261,19 @@ mn_mailboxes_conf_find_compare_func (gconstpointer a, gconstpointer b)
 
     return cmp;
   }}
-#line 746 "mn-mailboxes.c"
-#undef __GOB_FUNCTION__
-
-#line 305 "mn-mailboxes.gob"
-gboolean 
-mn_mailboxes_has_manual (MNMailboxes * self)
-#line 752 "mn-mailboxes.c"
-{
-#define __GOB_FUNCTION__ "MN:Mailboxes::has_manual"
-#line 305 "mn-mailboxes.gob"
-	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 305 "mn-mailboxes.gob"
-	g_return_val_if_fail (MN_IS_MAILBOXES (self), (gboolean )0);
-#line 759 "mn-mailboxes.c"
-{
-#line 307 "mn-mailboxes.gob"
-	
-    gboolean has_manual = FALSE;
-    GSList *l;
-  
-    MN_LIST_FOREACH(l, selfp->list)
-      {
-	MNMailbox *mailbox = l->data;
-	
-	if (MN_MAILBOX_CAN_CHECK(mailbox) && ! mn_mailbox_get_automatic(mailbox))
-	  {
-	    has_manual = TRUE;
-	    break;
-	  }
-      }
-
-    return has_manual;
-  }}
-#line 779 "mn-mailboxes.c"
+#line 1265 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 325 "mn-mailboxes.gob"
+#line 460 "mn-mailboxes.gob"
 MNMailboxes * 
 mn_mailboxes_new (void)
-#line 785 "mn-mailboxes.c"
+#line 1271 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::new"
 {
-#line 327 "mn-mailboxes.gob"
+#line 462 "mn-mailboxes.gob"
 	
     return MN_MAILBOXES(GET_NEW);
   }}
-#line 793 "mn-mailboxes.c"
+#line 1279 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-mailboxes.gob b/src/mn-mailboxes.gob
@@ -16,6 +16,8 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+requires 2.0.10
+
 %headertop{
 #include "mn-mailbox.h"
 %}
@@ -32,17 +34,118 @@
 class MN:Mailboxes from G:Object
 {
   private GSList *list destroywith mn_g_object_slist_free;
-  private unsigned int timeout_id
-    destroy { if (VAR) g_source_remove(VAR); };
-  private unsigned int delay_notification_id
-    destroy { eel_gconf_notification_remove(VAR); };
-  private unsigned int mailboxes_notification_id
-    destroy { eel_gconf_notification_remove(VAR); };
+  private unsigned int timeout_id;
+  private unsigned int delay_notification_id;
+  private unsigned int mailboxes_notification_id;
     
+  /**
+   * mailbox-added:
+   * @self: the object which received the signal
+   * @mailbox: the mailbox which is about to be added
+   *
+   * This signal gets emitted after a mailbox is added to the list.
+   **/
+  signal private NONE (OBJECT)
+    void mailbox_added (self, MN:Mailbox *mailbox (check null type));
+
+  /**
+   * mailbox-changed:
+   * @self: the object which received the signal
+   * @mailbox: the mailbox which has changed
+   *
+   * This signal gets emitted after a mailbox changes type.
+   **/
+  signal private NONE (OBJECT)
+    void mailbox_changed (self, MN:Mailbox *mailbox (check null type));
+
+  /**
+   * mailbox-removed:
+   * @self: the object which received the signal
+   * @mailbox: the mailbox which is about to be removed
+   *
+   * This signal gets emitted after a mailbox is removed from the
+   * list.
+   **/
+  signal first private NONE (OBJECT)
+    void mailbox_removed (self, MN:Mailbox *mailbox (check null type))
+  {
+    /* has-new, messages and error have possibly changed */
+    self_has_new_changed(self);
+    self_messages_changed(self, FALSE);
+    self_error_changed(self);
+  }
+  
+  /**
+   * list-changed:
+   * @self: the object which received the signal
+   *
+   * This signal gets emitted after the mailbox list changes (but more
+   * than one mailbox may have been added, removed or have changed
+   * between two emissions of this signal).
+   **/
+  signal first private NONE (NONE)
+    void list_changed (self)
+  {
+    /* must-poll has possibly changed */
+    g_object_notify(G_OBJECT(self), "must-poll");
+  }
+  
+  /**
+   * has-new-changed:
+   * @self: the object which received the signal
+   *
+   * This signal gets emitted whenever the global has-new state has
+   * possibly changed, eitheir because one of the mailboxes has-new
+   * property has changed, or because a mailbox has been removed from
+   * the list.
+   **/
   signal private NONE (NONE)
-    void list_changed (self);
+    void has_new_changed (self);
+
+  /**
+   * messages-changed:
+   * @self: the object which received the signal
+   * @has_new: whether a new message has been received or not
+   *
+   * This signal gets emitted whenever a call to
+   * mn_mailboxes_get_messages() would lead to a different list than
+   * before the signal emission.
+   *
+   * Note: messages are only compared by id, therefore two messages
+   * having the same id and different data are not considered
+   * different.
+   **/
+  signal private NONE (BOOLEAN)
+    void messages_changed (self, gboolean has_new);
+
+  /**
+   * error-changed:
+   * @self: the object which received the signal
+   *
+   * This signal gets emitted whenever the global error state has
+   * possibly changed, eitheir because one of the mailboxes error
+   * property has changed, or because a mailbox has been removed from
+   * the list.
+   **/
   signal private NONE (NONE)
-    void status_changed (self);
+    void error_changed (self);
+
+  property BOOLEAN must_poll (blurb = _("Whether one or more of the mailboxes has to be polled"),
+			      export)
+    get
+    {
+      gboolean must_poll = FALSE;
+      GSList *l;
+
+      MN_LIST_FOREACH(l, selfp->list)
+	if (MN_MAILBOX_MUST_POLL(l->data))
+	  {
+	    must_poll = TRUE;
+	    break;
+	  }
+
+      g_value_set_boolean(VAL, must_poll);
+    };
 
   init (self)
   {
@@ -53,6 +156,20 @@ class MN:Mailboxes from G:Object
     selfp->mailboxes_notification_id = eel_gconf_notification_add(MN_CONF_MAILBOXES, self_notify_mailboxes_cb, self);
   }
   
+  override (G:Object) void
+    finalize (G:Object *object (check null type))
+  {
+    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);
+  }
+
   private void
     notify_delay_cb (GConfClient *client,
 		     guint cnxn_id,
@@ -97,7 +214,11 @@ class MN:Mailboxes from G:Object
 
 	if (! self_conf_find_uri(gconf_mailboxes, mailbox->uri))
 	  {
-	    selfp->list = mn_g_object_slist_delete_link(selfp->list, l);
+	    selfp->list = g_slist_delete_link(selfp->list, l);
+
+	    self_mailbox_removed(self, mailbox);
+	    g_object_unref(mailbox);
+
 	    changed = TRUE;
 	    goto loop;
 	  }
@@ -117,6 +238,8 @@ class MN:Mailboxes from G:Object
 
 	    mailbox = mn_pending_mailbox_new(uri);
 	    selfp->list = g_slist_append(selfp->list, mailbox);
+
+	    self_mailbox_added(self, mailbox);
 	    changed = TRUE;
 	    
 	    mn_mailbox_new_async(uri, self_new_cb, self);
@@ -142,8 +265,11 @@ class MN:Mailboxes from G:Object
 	if (MN_IS_UNSUPPORTED_MAILBOX(mailbox))
 	  mn_info(_("%s is unsupported: %s"), mn_mailbox_get_name(mailbox), mn_unsupported_mailbox_get_reason(MN_UNSUPPORTED_MAILBOX(mailbox)));
 	
-	g_signal_connect(G_OBJECT(mailbox), "notify::has-new", G_CALLBACK(self_notify_has_new_h), self);
-	g_signal_connect(G_OBJECT(mailbox), "notify::error", G_CALLBACK(self_notify_error_h), self);
+	g_object_connect(mailbox,
+			 "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,
+			 NULL);
 
 	if (MN_MAILBOX_CAN_CHECK(mailbox))
 	  mn_mailbox_check(mailbox);
@@ -151,6 +277,7 @@ class MN:Mailboxes from G:Object
 	g_object_unref(elem->data);
 	elem->data = mailbox;
 
+	self_mailbox_changed(self, mailbox);
 	self_list_changed(self);
       }
     else
@@ -169,10 +296,20 @@ class MN:Mailboxes from G:Object
     has_new = mn_mailbox_get_has_new(mailbox);
     mn_info(has_new ? _("%s has new mail") : _("%s has no new mail"), mn_mailbox_get_name(mailbox));
 
-    self_status_changed(self);
+    self_has_new_changed(self);
   }
 
   private void
+    messages_changed_h (MN:Mailbox *mailbox (check null type),
+			gboolean has_new,
+			gpointer user_data (check null))
+  {
+    Self *self = user_data;
+
+    self_messages_changed(self, has_new);
+  }
+  
+  private void
     notify_error_h (G:Object *object (check null type),
 		    GParamSpec *pspec (check null),
 		    gpointer user_data (check null))
@@ -185,7 +322,7 @@ class MN:Mailboxes from G:Object
     if (error)
       mn_info(_("%s reported an error: %s"), mn_mailbox_get_name(mailbox), error);
 
-    self_status_changed(self);
+    self_error_changed(self);
   }
 
   private void
@@ -230,7 +367,7 @@ class MN:Mailboxes from G:Object
       {
 	MNMailbox *mailbox = l->data;
 
-	if (MN_MAILBOX_CAN_CHECK(mailbox) && ! mn_mailbox_get_automatic(mailbox))
+	if (MN_MAILBOX_MUST_POLL(mailbox))
 	  mn_mailbox_check(mailbox);
       }
   }
@@ -242,6 +379,24 @@ class MN:Mailboxes from G:Object
   }
 
   public GSList *
+    get_messages (self)
+  {
+    GSList *messages = NULL;
+    GSList *l;
+
+    MN_LIST_FOREACH(l, selfp->list)
+      {
+	MNMailbox *mailbox = l->data;
+	messages = g_slist_concat(messages, mn_g_object_slist_copy(mn_mailbox_get_messages(mailbox)));
+      }
+
+    messages = mn_message_slist_sort_by_sent_time(messages);
+    messages = g_slist_reverse(messages);
+
+    return messages;
+  }
+  
+  public GSList *
     find (self, const char *text_uri (check null))
   {
     MNURI *uri;
@@ -302,26 +457,6 @@ class MN:Mailboxes from G:Object
     return cmp;
   }
   
-  public gboolean
-    has_manual (self)
-  {
-    gboolean has_manual = FALSE;
-    GSList *l;
-  
-    MN_LIST_FOREACH(l, selfp->list)
-      {
-	MNMailbox *mailbox = l->data;
-	
-	if (MN_MAILBOX_CAN_CHECK(mailbox) && ! mn_mailbox_get_automatic(mailbox))
-	  {
-	    has_manual = TRUE;
-	    break;
-	  }
-      }
-
-    return has_manual;
-  }
-  
   public MNMailboxes *
     new (void)
   {
diff --git a/src/mn-mailboxes.h b/src/mn-mailboxes.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
@@ -47,8 +47,13 @@ struct _MNMailboxes {
 typedef struct _MNMailboxesClass MNMailboxesClass;
 struct _MNMailboxesClass {
 	GObjectClass __parent__;
+	/*signal*/void (* mailbox_added) (MNMailboxes * self, MNMailbox * mailbox);
+	/*signal*/void (* mailbox_changed) (MNMailboxes * self, MNMailbox * mailbox);
+	/*signal*/void (* mailbox_removed) (MNMailboxes * self, MNMailbox * mailbox);
 	/*signal*/void (* list_changed) (MNMailboxes * self);
-	/*signal*/void (* status_changed) (MNMailboxes * self);
+	/*signal*/void (* has_new_changed) (MNMailboxes * self);
+	/*signal*/void (* messages_changed) (MNMailboxes * self, gboolean has_new);
+	/*signal*/void (* error_changed) (MNMailboxes * self);
 };
 
 
@@ -56,8 +61,10 @@ struct _MNMailboxesClass {
  * Public methods
  */
 GType	mn_mailboxes_get_type	(void);
+gboolean 	mn_mailboxes_get_must_poll	(MNMailboxes * self);
 void 	mn_mailboxes_check	(MNMailboxes * self);
 GSList * 	mn_mailboxes_get	(MNMailboxes * self);
+GSList * 	mn_mailboxes_get_messages	(MNMailboxes * self);
 GSList * 	mn_mailboxes_find	(MNMailboxes * self,
 					const char * text_uri);
 GSList * 	mn_mailboxes_find_uri	(MNMailboxes * self,
@@ -66,26 +73,65 @@ GSList * 	mn_mailboxes_conf_find	(GSList * gconf_mailboxes,
 					const char * text_uri);
 GSList * 	mn_mailboxes_conf_find_uri	(GSList * gconf_mailboxes,
 					MNURI * uri);
-gboolean 	mn_mailboxes_has_manual	(MNMailboxes * self);
 MNMailboxes * 	mn_mailboxes_new	(void);
 
 /*
  * Signal connection wrapper macros
  */
 #if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#define mn_mailboxes_connect__mailbox_added(object,func,data)	g_signal_connect(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"mailbox_added",(GCallback) __extension__ ({void (* ___mailbox_added) (MNMailboxes * ___fake___self, MNMailbox * ___fake___mailbox, gpointer ___data ) = (func); ___mailbox_added; }), (data))
+#define mn_mailboxes_connect_after__mailbox_added(object,func,data)	g_signal_connect_after(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"mailbox_added",(GCallback) __extension__ ({void (* ___mailbox_added) (MNMailboxes * ___fake___self, MNMailbox * ___fake___mailbox, gpointer ___data ) = (func); ___mailbox_added; }), (data))
+#define mn_mailboxes_connect_data__mailbox_added(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"mailbox_added",(GCallback) __extension__ ({void (* ___mailbox_added) (MNMailboxes * ___fake___self, MNMailbox * ___fake___mailbox, gpointer ___data ) = (func); ___mailbox_added; }), (data), (destroy_data), (GConnectFlags)(flags))
+#define mn_mailboxes_connect__mailbox_changed(object,func,data)	g_signal_connect(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"mailbox_changed",(GCallback) __extension__ ({void (* ___mailbox_changed) (MNMailboxes * ___fake___self, MNMailbox * ___fake___mailbox, gpointer ___data ) = (func); ___mailbox_changed; }), (data))
+#define mn_mailboxes_connect_after__mailbox_changed(object,func,data)	g_signal_connect_after(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"mailbox_changed",(GCallback) __extension__ ({void (* ___mailbox_changed) (MNMailboxes * ___fake___self, MNMailbox * ___fake___mailbox, gpointer ___data ) = (func); ___mailbox_changed; }), (data))
+#define mn_mailboxes_connect_data__mailbox_changed(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"mailbox_changed",(GCallback) __extension__ ({void (* ___mailbox_changed) (MNMailboxes * ___fake___self, MNMailbox * ___fake___mailbox, gpointer ___data ) = (func); ___mailbox_changed; }), (data), (destroy_data), (GConnectFlags)(flags))
+#define mn_mailboxes_connect__mailbox_removed(object,func,data)	g_signal_connect(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"mailbox_removed",(GCallback) __extension__ ({void (* ___mailbox_removed) (MNMailboxes * ___fake___self, MNMailbox * ___fake___mailbox, gpointer ___data ) = (func); ___mailbox_removed; }), (data))
+#define mn_mailboxes_connect_after__mailbox_removed(object,func,data)	g_signal_connect_after(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"mailbox_removed",(GCallback) __extension__ ({void (* ___mailbox_removed) (MNMailboxes * ___fake___self, MNMailbox * ___fake___mailbox, gpointer ___data ) = (func); ___mailbox_removed; }), (data))
+#define mn_mailboxes_connect_data__mailbox_removed(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"mailbox_removed",(GCallback) __extension__ ({void (* ___mailbox_removed) (MNMailboxes * ___fake___self, MNMailbox * ___fake___mailbox, gpointer ___data ) = (func); ___mailbox_removed; }), (data), (destroy_data), (GConnectFlags)(flags))
 #define mn_mailboxes_connect__list_changed(object,func,data)	g_signal_connect(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"list_changed",(GCallback) __extension__ ({void (* ___list_changed) (MNMailboxes * ___fake___self, gpointer ___data ) = (func); ___list_changed; }), (data))
 #define mn_mailboxes_connect_after__list_changed(object,func,data)	g_signal_connect_after(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"list_changed",(GCallback) __extension__ ({void (* ___list_changed) (MNMailboxes * ___fake___self, gpointer ___data ) = (func); ___list_changed; }), (data))
 #define mn_mailboxes_connect_data__list_changed(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"list_changed",(GCallback) __extension__ ({void (* ___list_changed) (MNMailboxes * ___fake___self, gpointer ___data ) = (func); ___list_changed; }), (data), (destroy_data), (GConnectFlags)(flags))
-#define mn_mailboxes_connect__status_changed(object,func,data)	g_signal_connect(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"status_changed",(GCallback) __extension__ ({void (* ___status_changed) (MNMailboxes * ___fake___self, gpointer ___data ) = (func); ___status_changed; }), (data))
-#define mn_mailboxes_connect_after__status_changed(object,func,data)	g_signal_connect_after(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"status_changed",(GCallback) __extension__ ({void (* ___status_changed) (MNMailboxes * ___fake___self, gpointer ___data ) = (func); ___status_changed; }), (data))
-#define mn_mailboxes_connect_data__status_changed(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"status_changed",(GCallback) __extension__ ({void (* ___status_changed) (MNMailboxes * ___fake___self, gpointer ___data ) = (func); ___status_changed; }), (data), (destroy_data), (GConnectFlags)(flags))
+#define mn_mailboxes_connect__has_new_changed(object,func,data)	g_signal_connect(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"has_new_changed",(GCallback) __extension__ ({void (* ___has_new_changed) (MNMailboxes * ___fake___self, gpointer ___data ) = (func); ___has_new_changed; }), (data))
+#define mn_mailboxes_connect_after__has_new_changed(object,func,data)	g_signal_connect_after(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"has_new_changed",(GCallback) __extension__ ({void (* ___has_new_changed) (MNMailboxes * ___fake___self, gpointer ___data ) = (func); ___has_new_changed; }), (data))
+#define mn_mailboxes_connect_data__has_new_changed(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"has_new_changed",(GCallback) __extension__ ({void (* ___has_new_changed) (MNMailboxes * ___fake___self, gpointer ___data ) = (func); ___has_new_changed; }), (data), (destroy_data), (GConnectFlags)(flags))
+#define mn_mailboxes_connect__messages_changed(object,func,data)	g_signal_connect(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"messages_changed",(GCallback) __extension__ ({void (* ___messages_changed) (MNMailboxes * ___fake___self, gboolean ___fake___has_new, gpointer ___data ) = (func); ___messages_changed; }), (data))
+#define mn_mailboxes_connect_after__messages_changed(object,func,data)	g_signal_connect_after(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"messages_changed",(GCallback) __extension__ ({void (* ___messages_changed) (MNMailboxes * ___fake___self, gboolean ___fake___has_new, gpointer ___data ) = (func); ___messages_changed; }), (data))
+#define mn_mailboxes_connect_data__messages_changed(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"messages_changed",(GCallback) __extension__ ({void (* ___messages_changed) (MNMailboxes * ___fake___self, gboolean ___fake___has_new, gpointer ___data ) = (func); ___messages_changed; }), (data), (destroy_data), (GConnectFlags)(flags))
+#define mn_mailboxes_connect__error_changed(object,func,data)	g_signal_connect(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"error_changed",(GCallback) __extension__ ({void (* ___error_changed) (MNMailboxes * ___fake___self, gpointer ___data ) = (func); ___error_changed; }), (data))
+#define mn_mailboxes_connect_after__error_changed(object,func,data)	g_signal_connect_after(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"error_changed",(GCallback) __extension__ ({void (* ___error_changed) (MNMailboxes * ___fake___self, gpointer ___data ) = (func); ___error_changed; }), (data))
+#define mn_mailboxes_connect_data__error_changed(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"error_changed",(GCallback) __extension__ ({void (* ___error_changed) (MNMailboxes * ___fake___self, gpointer ___data ) = (func); ___error_changed; }), (data), (destroy_data), (GConnectFlags)(flags))
 #else /* __GNUC__ && !__STRICT_ANSI__ */
+#define mn_mailboxes_connect__mailbox_added(object,func,data)	g_signal_connect(MN_MAILBOXES(object),"mailbox_added",(GCallback)(func),(data))
+#define mn_mailboxes_connect_after__mailbox_added(object,func,data)	g_signal_connect_after(MN_MAILBOXES(object),"mailbox_added",(GCallback)(func),(data))
+#define mn_mailboxes_connect_data__mailbox_added(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAILBOXES(object),"mailbox_added",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
+#define mn_mailboxes_connect__mailbox_changed(object,func,data)	g_signal_connect(MN_MAILBOXES(object),"mailbox_changed",(GCallback)(func),(data))
+#define mn_mailboxes_connect_after__mailbox_changed(object,func,data)	g_signal_connect_after(MN_MAILBOXES(object),"mailbox_changed",(GCallback)(func),(data))
+#define mn_mailboxes_connect_data__mailbox_changed(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAILBOXES(object),"mailbox_changed",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
+#define mn_mailboxes_connect__mailbox_removed(object,func,data)	g_signal_connect(MN_MAILBOXES(object),"mailbox_removed",(GCallback)(func),(data))
+#define mn_mailboxes_connect_after__mailbox_removed(object,func,data)	g_signal_connect_after(MN_MAILBOXES(object),"mailbox_removed",(GCallback)(func),(data))
+#define mn_mailboxes_connect_data__mailbox_removed(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAILBOXES(object),"mailbox_removed",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
 #define mn_mailboxes_connect__list_changed(object,func,data)	g_signal_connect(MN_MAILBOXES(object),"list_changed",(GCallback)(func),(data))
 #define mn_mailboxes_connect_after__list_changed(object,func,data)	g_signal_connect_after(MN_MAILBOXES(object),"list_changed",(GCallback)(func),(data))
 #define mn_mailboxes_connect_data__list_changed(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAILBOXES(object),"list_changed",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
-#define mn_mailboxes_connect__status_changed(object,func,data)	g_signal_connect(MN_MAILBOXES(object),"status_changed",(GCallback)(func),(data))
-#define mn_mailboxes_connect_after__status_changed(object,func,data)	g_signal_connect_after(MN_MAILBOXES(object),"status_changed",(GCallback)(func),(data))
-#define mn_mailboxes_connect_data__status_changed(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAILBOXES(object),"status_changed",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
+#define mn_mailboxes_connect__has_new_changed(object,func,data)	g_signal_connect(MN_MAILBOXES(object),"has_new_changed",(GCallback)(func),(data))
+#define mn_mailboxes_connect_after__has_new_changed(object,func,data)	g_signal_connect_after(MN_MAILBOXES(object),"has_new_changed",(GCallback)(func),(data))
+#define mn_mailboxes_connect_data__has_new_changed(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAILBOXES(object),"has_new_changed",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
+#define mn_mailboxes_connect__messages_changed(object,func,data)	g_signal_connect(MN_MAILBOXES(object),"messages_changed",(GCallback)(func),(data))
+#define mn_mailboxes_connect_after__messages_changed(object,func,data)	g_signal_connect_after(MN_MAILBOXES(object),"messages_changed",(GCallback)(func),(data))
+#define mn_mailboxes_connect_data__messages_changed(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAILBOXES(object),"messages_changed",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
+#define mn_mailboxes_connect__error_changed(object,func,data)	g_signal_connect(MN_MAILBOXES(object),"error_changed",(GCallback)(func),(data))
+#define mn_mailboxes_connect_after__error_changed(object,func,data)	g_signal_connect_after(MN_MAILBOXES(object),"error_changed",(GCallback)(func),(data))
+#define mn_mailboxes_connect_data__error_changed(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAILBOXES(object),"error_changed",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
+#endif /* __GNUC__ && !__STRICT_ANSI__ */
+
+
+/*
+ * Argument wrapping macros
+ */
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#define MN_MAILBOXES_GET_PROP_MUST_POLL(arg)	"must_poll", __extension__ ({gboolean *z = (arg); z;})
+#else /* __GNUC__ && !__STRICT_ANSI__ */
+#define MN_MAILBOXES_GET_PROP_MUST_POLL(arg)	"must_poll",(gboolean *)(arg)
 #endif /* __GNUC__ && !__STRICT_ANSI__ */
 
 
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.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (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,14 +1,16 @@
-/* Generated by GOB (v2.0.9) on Thu Sep  9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct  6 19:29:52 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 9
+#define GOB_VERSION_PATCHLEVEL 10
 
 #define selfp (self->_priv)
 
+#include <string.h> /* memset() */
+
 #include "mn-maildir-mailbox.h"
 
 #include "mn-maildir-mailbox-private.h"
@@ -21,15 +23,18 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 22 "mn-maildir-mailbox.gob"
+#line 24 "mn-maildir-mailbox.gob"
 
 #include "config.h"
 #include <glib/gi18n-lib.h>
 #include "mn-mailbox-private.h"
 #include "mn-vfs.h"
 #include "mn-util.h"
+#ifdef WITH_MIME
+#include "mn-message-mime.h"
+#endif
 
-#line 33 "mn-maildir-mailbox.c"
+#line 38 "mn-maildir-mailbox.c"
 /* self casting macros */
 #define SELF(x) MN_MAILDIR_MAILBOX(x)
 #define SELF_CONST(x) MN_MAILDIR_MAILBOX_CONST(x)
@@ -101,10 +106,10 @@ mn_maildir_mailbox_init (MNMaildirMailbox * o G_GNUC_UNUSED)
 #define __GOB_FUNCTION__ "MN:Maildir:Mailbox::init"
 }
 #undef __GOB_FUNCTION__
-#line 32 "mn-maildir-mailbox.gob"
+#line 37 "mn-maildir-mailbox.gob"
 static void 
 mn_maildir_mailbox_class_init (MNMaildirMailboxClass * class G_GNUC_UNUSED)
-#line 108 "mn-maildir-mailbox.c"
+#line 113 "mn-maildir-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Maildir:Mailbox::class_init"
 	GObjectClass *g_object_class = (GObjectClass *)class;
@@ -112,29 +117,29 @@ mn_maildir_mailbox_class_init (MNMaildirMailboxClass * class G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (MN_TYPE_MAILBOX);
 
-#line 37 "mn-maildir-mailbox.gob"
+#line 42 "mn-maildir-mailbox.gob"
 	g_object_class->constructor = ___2_mn_maildir_mailbox_constructor;
-#line 65 "mn-maildir-mailbox.gob"
+#line 73 "mn-maildir-mailbox.gob"
 	mn_mailbox_class->impl_is = ___3_mn_maildir_mailbox_impl_is;
-#line 91 "mn-maildir-mailbox.gob"
+#line 99 "mn-maildir-mailbox.gob"
 	mn_mailbox_class->impl_threaded_check = ___4_mn_maildir_mailbox_impl_threaded_check;
-#line 122 "mn-maildir-mailbox.c"
+#line 127 "mn-maildir-mailbox.c"
  {
-#line 33 "mn-maildir-mailbox.gob"
+#line 38 "mn-maildir-mailbox.gob"
 
     MN_MAILBOX_CLASS(class)->format = "Maildir";
   
-#line 128 "mn-maildir-mailbox.c"
+#line 133 "mn-maildir-mailbox.c"
  }
 }
 #undef __GOB_FUNCTION__
 
 
 
-#line 37 "mn-maildir-mailbox.gob"
+#line 42 "mn-maildir-mailbox.gob"
 static GObject * 
 ___2_mn_maildir_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_properties, GObjectConstructParam * construct_params)
-#line 138 "mn-maildir-mailbox.c"
+#line 143 "mn-maildir-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): \
@@ -142,7 +147,7 @@ ___2_mn_maildir_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct
 {
 #define __GOB_FUNCTION__ "MN:Maildir:Mailbox::constructor"
 {
-#line 39 "mn-maildir-mailbox.gob"
+#line 44 "mn-maildir-mailbox.gob"
 	
     GObject *object;
     MNMailbox *self;
@@ -159,6 +164,9 @@ ___2_mn_maildir_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct
 		       new_uri,
 		       GNOME_VFS_MONITOR_DIRECTORY,
 		       MN_MAILBOX_MONITOR_EVENT_DELETED
+#ifdef WITH_MIME
+		       | MN_MAILBOX_MONITOR_EVENT_CHANGED
+#endif
 		       | MN_MAILBOX_MONITOR_EVENT_CREATED);
 
     gdk_flush();
@@ -168,25 +176,25 @@ ___2_mn_maildir_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct
 
     return object;
   }}
-#line 172 "mn-maildir-mailbox.c"
+#line 180 "mn-maildir-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 65 "mn-maildir-mailbox.gob"
+#line 73 "mn-maildir-mailbox.gob"
 static gboolean 
 ___3_mn_maildir_mailbox_impl_is (MNMailbox * dummy G_GNUC_UNUSED, MNURI * uri)
-#line 179 "mn-maildir-mailbox.c"
+#line 187 "mn-maildir-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:Maildir:Mailbox::impl_is"
-#line 65 "mn-maildir-mailbox.gob"
+#line 73 "mn-maildir-mailbox.gob"
 	g_return_val_if_fail (uri != NULL, (gboolean )0);
-#line 188 "mn-maildir-mailbox.c"
+#line 196 "mn-maildir-mailbox.c"
 {
-#line 67 "mn-maildir-mailbox.gob"
+#line 75 "mn-maildir-mailbox.gob"
 	
     gboolean is = FALSE;
 
@@ -210,26 +218,26 @@ ___3_mn_maildir_mailbox_impl_is (MNMailbox * dummy G_GNUC_UNUSED, MNURI * uri)
   
     return is;
   }}
-#line 214 "mn-maildir-mailbox.c"
+#line 222 "mn-maildir-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 91 "mn-maildir-mailbox.gob"
+#line 99 "mn-maildir-mailbox.gob"
 static void 
 ___4_mn_maildir_mailbox_impl_threaded_check (MNMailbox * self G_GNUC_UNUSED)
-#line 221 "mn-maildir-mailbox.c"
+#line 229 "mn-maildir-mailbox.c"
 #define PARENT_HANDLER(___self) \
 	{ if(MN_MAILBOX_CLASS(parent_class)->impl_threaded_check) \
 		(* MN_MAILBOX_CLASS(parent_class)->impl_threaded_check)(___self); }
 {
 #define __GOB_FUNCTION__ "MN:Maildir:Mailbox::impl_threaded_check"
-#line 91 "mn-maildir-mailbox.gob"
+#line 99 "mn-maildir-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 91 "mn-maildir-mailbox.gob"
+#line 99 "mn-maildir-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 231 "mn-maildir-mailbox.c"
+#line 239 "mn-maildir-mailbox.c"
 {
-#line 93 "mn-maildir-mailbox.gob"
+#line 101 "mn-maildir-mailbox.gob"
 	
     GnomeVFSURI *new_uri;
     GnomeVFSResult result;
@@ -237,10 +245,12 @@ ___4_mn_maildir_mailbox_impl_threaded_check (MNMailbox * self G_GNUC_UNUSED)
     GnomeVFSDirectoryHandle *handle;
     GnomeVFSFileInfo *file_info;
     gboolean has_new = FALSE;
+#ifdef WITH_MIME
+    GSList *messages = NULL;
+#endif
     
     new_uri = gnome_vfs_uri_append_path(self->uri->vfs, "new");
     result = gnome_vfs_directory_open_from_uri(&handle, new_uri, GNOME_VFS_FILE_INFO_FOLLOW_LINKS);
-    gnome_vfs_uri_unref(new_uri);
 
     if (result != GNOME_VFS_OK)
       {
@@ -252,18 +262,27 @@ ___4_mn_maildir_mailbox_impl_threaded_check (MNMailbox * self G_GNUC_UNUSED)
 	gdk_flush();
 	GDK_THREADS_LEAVE();
 
-	return;
+	goto end;
       }
   
     file_info = gnome_vfs_file_info_new();
     while ((result = gnome_vfs_directory_read_next(handle, file_info)) == GNOME_VFS_OK)
-      {
-	if (file_info->name[0] != '.')
-	  {
-	    has_new = TRUE;
-	    break;
-	  }
-      }
+      if (file_info->name[0] != '.')
+	{
+#ifdef WITH_MIME
+	  GnomeVFSURI *message_uri;
+#endif /* WITH_MIME */
+
+	  has_new = TRUE;
+
+#ifdef WITH_MIME
+	  message_uri = gnome_vfs_uri_append_file_name(new_uri, file_info->name);
+	  messages = g_slist_append(messages, mn_message_new_from_uri(self->uri, message_uri));
+	  gnome_vfs_uri_unref(message_uri);
+#else /* WITH_MIME */
+	  break;
+#endif
+	}
     gnome_vfs_file_info_unref(file_info);
     close_result = gnome_vfs_directory_close(handle);
 
@@ -272,7 +291,12 @@ ___4_mn_maildir_mailbox_impl_threaded_check (MNMailbox * self G_GNUC_UNUSED)
     if (result == GNOME_VFS_OK || result == GNOME_VFS_ERROR_EOF)
       {
 	if (close_result == GNOME_VFS_OK)
-	  mn_mailbox_set_has_new(self, has_new);
+	  {
+	    mn_mailbox_set_has_new(self, has_new);
+#ifdef WITH_MIME
+	    mn_mailbox_set_messages(self, messages);
+#endif /* WITH_MIME */
+	  }
 	else
 	  mn_mailbox_set_error(self, _("unable to close folder \"new\": %s"), gnome_vfs_result_to_string(close_result));
       }
@@ -282,7 +306,14 @@ ___4_mn_maildir_mailbox_impl_threaded_check (MNMailbox * self G_GNUC_UNUSED)
 
     gdk_flush();
     GDK_THREADS_LEAVE();
+
+#ifdef WITH_MIME
+    mn_g_object_slist_free(messages);
+#endif
+
+  end:
+    gnome_vfs_uri_unref(new_uri);
   }}
-#line 287 "mn-maildir-mailbox.c"
+#line 318 "mn-maildir-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
diff --git a/src/mn-maildir-mailbox.gob b/src/mn-maildir-mailbox.gob
@@ -16,6 +16,8 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+requires 2.0.10
+
 %headertop{
 #include "mn-mailbox.h"
 %}
@@ -25,6 +27,9 @@
 #include "mn-mailbox-private.h"
 #include "mn-vfs.h"
 #include "mn-util.h"
+#ifdef WITH_MIME
+#include "mn-message-mime.h"
+#endif
 %}
 
 class MN:Maildir:Mailbox from MN:Mailbox
@@ -52,6 +57,9 @@ class MN:Maildir:Mailbox from MN:Mailbox
 		       new_uri,
 		       GNOME_VFS_MONITOR_DIRECTORY,
 		       MN_MAILBOX_MONITOR_EVENT_DELETED
+#ifdef WITH_MIME
+		       | MN_MAILBOX_MONITOR_EVENT_CHANGED
+#endif
 		       | MN_MAILBOX_MONITOR_EVENT_CREATED);
 
     gdk_flush();
@@ -97,10 +105,12 @@ class MN:Maildir:Mailbox from MN:Mailbox
     GnomeVFSDirectoryHandle *handle;
     GnomeVFSFileInfo *file_info;
     gboolean has_new = FALSE;
+#ifdef WITH_MIME
+    GSList *messages = NULL;
+#endif
     
     new_uri = gnome_vfs_uri_append_path(self->uri->vfs, "new");
     result = gnome_vfs_directory_open_from_uri(&handle, new_uri, GNOME_VFS_FILE_INFO_FOLLOW_LINKS);
-    gnome_vfs_uri_unref(new_uri);
 
     if (result != GNOME_VFS_OK)
       {
@@ -112,18 +122,27 @@ class MN:Maildir:Mailbox from MN:Mailbox
 	gdk_flush();
 	GDK_THREADS_LEAVE();
 
-	return;
+	goto end;
       }
   
     file_info = gnome_vfs_file_info_new();
     while ((result = gnome_vfs_directory_read_next(handle, file_info)) == GNOME_VFS_OK)
-      {
-	if (file_info->name[0] != '.')
-	  {
-	    has_new = TRUE;
-	    break;
-	  }
-      }
+      if (file_info->name[0] != '.')
+	{
+#ifdef WITH_MIME
+	  GnomeVFSURI *message_uri;
+#endif /* WITH_MIME */
+
+	  has_new = TRUE;
+
+#ifdef WITH_MIME
+	  message_uri = gnome_vfs_uri_append_file_name(new_uri, file_info->name);
+	  messages = g_slist_append(messages, mn_message_new_from_uri(self->uri, message_uri));
+	  gnome_vfs_uri_unref(message_uri);
+#else /* WITH_MIME */
+	  break;
+#endif
+	}
     gnome_vfs_file_info_unref(file_info);
     close_result = gnome_vfs_directory_close(handle);
 
@@ -132,7 +151,12 @@ class MN:Maildir:Mailbox from MN:Mailbox
     if (result == GNOME_VFS_OK || result == GNOME_VFS_ERROR_EOF)
       {
 	if (close_result == GNOME_VFS_OK)
-	  mn_mailbox_set_has_new(self, has_new);
+	  {
+	    mn_mailbox_set_has_new(self, has_new);
+#ifdef WITH_MIME
+	    mn_mailbox_set_messages(self, messages);
+#endif /* WITH_MIME */
+	  }
 	else
 	  mn_mailbox_set_error(self, _("unable to close folder \"new\": %s"), gnome_vfs_result_to_string(close_result));
       }
@@ -142,5 +166,12 @@ class MN:Maildir:Mailbox from MN:Mailbox
 
     gdk_flush();
     GDK_THREADS_LEAVE();
+
+#ifdef WITH_MIME
+    mn_g_object_slist_free(messages);
+#endif
+
+  end:
+    gnome_vfs_uri_unref(new_uri);
   }
 }
diff --git a/src/mn-maildir-mailbox.h b/src/mn-maildir-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-main.c b/src/mn-main.c
@@ -21,11 +21,17 @@
 #include <signal.h>
 #include <gnome.h>
 #include <libgnomevfs/gnome-vfs.h>
+#ifdef WITH_MIME
+#include <gmime/gmime.h>
+#include "mn-gmime-stream-vfs.h"
+#endif
 #include "mn-conf.h"
 #include "mn-util.h"
 #include "mn-stock.h"
 #include "mn-automation.h"
 #include "mn-shell.h"
+#include "mn-pending-mailbox.h"
+#include "mn-unsupported-mailbox.h"
 
 /*** cpp *********************************************************************/
 
@@ -47,6 +53,8 @@ static void	mn_main_info_log_cb	(const char	*log_domain,
 					 const char	*message,
 					 gpointer	user_data);
 
+static void	mn_main_init_classes	(void);
+
 /*** implementation **********************************************************/
 
 static BonoboObject *
@@ -65,21 +73,25 @@ mn_main_list_features (void)
 {
   GString *backends;
   GString *features;
-  const GType *types;
   int i;
 
+#define ADD_FEATURE(string, feature)		\
+  {						\
+    if (*(string)->str)				\
+      g_string_append((string), ", ");		\
+    g_string_append((string), (feature));	\
+  }
+
   backends = g_string_new(NULL);
-  types = mn_mailbox_get_types();
 
-  for (i = 0; types[i]; i++)
+  for (i = 0; mn_mailbox_types[i]; i++)
     {
       MNMailboxClass *class;
       
-      class = g_type_class_ref(types[i]);
-      if (*backends->str)
-	g_string_append(backends, ", ");
-      g_string_append(backends, class->format);
-      g_type_class_unref(class);
+      class = g_type_class_peek(mn_mailbox_types[i]);
+      g_return_if_fail(class != NULL);
+
+      ADD_FEATURE(backends, class->format);
     }
 
   g_print(_("Compiled-in mailbox backends: %s\n"), backends->str);
@@ -87,18 +99,17 @@ mn_main_list_features (void)
 
   features = g_string_new(NULL);
 #ifdef WITH_SSL
-  g_string_append(features, "SSL/TLS");
-#endif /* WITH_SSL */
+  ADD_FEATURE(features, "SSL/TLS");
+#endif
 #ifdef WITH_SASL
-  if (*features->str)
-    g_string_append(features, ", ");
-  g_string_append(features, "SASL");
-#endif /* WITH_SASL */
+  ADD_FEATURE(features, "SASL");
+#endif
 #ifdef WITH_IPV6
-  if (*features->str)
-    g_string_append(features, ", ");
-  g_string_append(features, "IPv6");
-#endif /* WITH_IPV6 */
+  ADD_FEATURE(features, "IPv6");
+#endif
+#ifdef WITH_MIME
+  ADD_FEATURE(features, "MIME");
+#endif
 
   g_print(_("Compiled-in features: %s\n"), features->str);
   g_string_free(features, TRUE);
@@ -114,12 +125,34 @@ mn_main_info_log_cb (const char *log_domain,
     g_log_default_handler(log_domain, log_level, message, user_data);
 }
 
+static void
+mn_main_init_classes (void)
+{
+  int i;
+
+  g_type_class_ref(MN_TYPE_AUTOMATION);
+#ifdef WITH_MIME
+  g_type_class_ref(MN_TYPE_GMIME_STREAM_VFS);
+#endif
+  g_type_class_ref(MN_TYPE_MAILBOX);
+  for (i = 0; mn_mailbox_types[i]; i++)
+    g_type_class_ref(mn_mailbox_types[i]);
+  g_type_class_ref(MN_TYPE_MAILBOXES);
+  g_type_class_ref(MN_TYPE_MESSAGE);
+  g_type_class_ref(MN_TYPE_PENDING_MAILBOX);
+  g_type_class_ref(MN_TYPE_SHELL);
+  g_type_class_ref(MN_TYPE_UNSUPPORTED_MAILBOX);
+  g_type_class_ref(MN_TYPE_URI);
+}
+
 int
 main (int argc, char **argv)
 {
   gboolean arg_list_features = FALSE;
+  gboolean arg_display_mail_summary = FALSE;
   gboolean arg_display_properties = FALSE;
   gboolean arg_display_about = FALSE;
+  gboolean arg_close_popup = FALSE;
   gboolean arg_update = FALSE;
   gboolean arg_report = FALSE;
   gboolean arg_unset_obsolete_configuration = FALSE;
@@ -143,6 +176,15 @@ main (int argc, char **argv)
       NULL
     },
     {
+      "display-mail-summary",
+      'm',
+      POPT_ARG_NONE,
+      &arg_display_mail_summary,
+      0,
+      N_("Display the mail summary dialog"),
+      NULL
+    },
+    {
       "display-properties",
       'p',
       POPT_ARG_NONE,
@@ -161,6 +203,15 @@ main (int argc, char **argv)
       NULL
     },
     {
+      "close-popup",
+      'c',
+      POPT_ARG_NONE,
+      &arg_close_popup,
+      0,
+      N_("Close the mail summary popup"),
+      NULL
+    },
+    {
       "update",
       'u',
       POPT_ARG_NONE,
@@ -255,15 +306,25 @@ main (int argc, char **argv)
     case Bonobo_ACTIVATION_REG_SUCCESS:
       automation = bonobo_activation_activate_from_id(AUTOMATION_IID, 0, NULL, &ev);
       if (CORBA_Object_is_nil(automation, &ev))
-	mn_fatal_error_dialog(_("Bonobo could not locate the automation object. Please check your Mail Notification installation."));
+	mn_fatal_error_dialog(NULL, _("Bonobo could not locate the automation object. Please check your Mail Notification installation."));
 
       if (result != Bonobo_ACTIVATION_REG_ALREADY_ACTIVE)
 	{
 	  if (! gnome_vfs_init())
-	    mn_fatal_error_dialog(_("Unable to initialize the GnomeVFS library."));
+	    mn_fatal_error_dialog(NULL, _("Unable to initialize the GnomeVFS library."));
+#ifdef WITH_MIME
+	  g_mime_init(0);
+#endif
 
 	  mn_conf_init();
-	  mn_shell = mn_shell_new();
+	  /*
+	   * Work around
+	   * http://bugzilla.gnome.org/show_bug.cgi?id=64764:
+	   * initialize our non GTK-based classes before any thread is
+	   * created.
+	   */
+	  mn_main_init_classes();
+	  mn_shell_new();
 
 	  if (! eel_gconf_get_boolean(MN_CONF_ALREADY_RUN))
 	    {
@@ -273,10 +334,14 @@ main (int argc, char **argv)
 	    }
 	}
       
+      if (arg_display_mail_summary)
+	GNOME_MNAutomation_displayMailSummary(automation, &ev);
       if (arg_display_properties)
 	GNOME_MNAutomation_displayProperties(automation, &ev);
       if (arg_display_about)
 	GNOME_MNAutomation_displayAbout(automation, &ev);
+      if (arg_close_popup)
+	GNOME_MNAutomation_closePopup(automation, &ev);
 
       if (result == Bonobo_ACTIVATION_REG_ALREADY_ACTIVE)
 	{
@@ -294,8 +359,10 @@ main (int argc, char **argv)
 	      CORBA_free(report);
 	    }
 
-	  if (! (arg_display_properties
+	  if (! (arg_display_mail_summary
+		 || arg_display_properties
 		 || arg_display_about
+		 || arg_close_popup
 		 || arg_update
 		 || arg_report))
 	    g_message(_("Mail Notification is already running"));
@@ -305,11 +372,11 @@ main (int argc, char **argv)
       break;
 
     case Bonobo_ACTIVATION_REG_NOT_LISTED:
-      mn_fatal_error_dialog(_("Bonobo could not locate the GNOME_MailNotification_Automation.server file. Please check your Mail Notification installation."));
+      mn_fatal_error_dialog(NULL, _("Bonobo could not locate the GNOME_MailNotification_Automation.server file. Please check your Mail Notification installation."));
       break;
 
     case Bonobo_ACTIVATION_REG_ERROR:
-      mn_fatal_error_dialog(_("Bonobo was unable to register the automation server. Please check your Mail Notification installation."));
+      mn_fatal_error_dialog(NULL, _("Bonobo was unable to register the automation server. Please check your Mail Notification installation."));
       break;
 
     default:
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.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (do not edit directly) */
 
 #ifndef __MN_MBOX_MAILBOX_PRIVATE_H__
 #define __MN_MBOX_MAILBOX_PRIVATE_H__
@@ -10,13 +10,13 @@ extern "C" {
 #endif /* __cplusplus */
 
 
-#line 22 "mn-mbox-mailbox.gob"
+#line 24 "mn-mbox-mailbox.gob"
 
 #include <libgnomevfs/gnome-vfs.h>
 
 #line 18 "mn-mbox-mailbox-private.h"
 struct _MNmboxMailboxPrivate {
-#line 36 "mn-mbox-mailbox.gob"
+#line 43 "mn-mbox-mailbox.gob"
 	time_t last_mtime;
 #line 22 "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.9) on Thu Sep  9 01:42:00 2004
+/* Generated by GOB (v2.0.10) on Wed Oct  6 19:29:52 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 9
+#define GOB_VERSION_PATCHLEVEL 10
 
 #define selfp (self->_priv)
 
@@ -21,7 +21,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 25 "mn-mbox-mailbox.gob"
+#line 27 "mn-mbox-mailbox.gob"
 
 #include "config.h"
 #include <string.h>
@@ -29,8 +29,13 @@
 #include <gdk/gdk.h>
 #include "mn-mailbox-private.h"
 #include "mn-vfs.h"
+#ifdef WITH_MIME
+#include "mn-message-mime.h"
+#include "mn-gmime-stream-vfs.h"
+#endif /* WITH_MIME */
+#include "mn-util.h"
 
-#line 34 "mn-mbox-mailbox.c"
+#line 39 "mn-mbox-mailbox.c"
 /* self casting macros */
 #define SELF(x) MN_MBOX_MAILBOX(x)
 #define SELF_CONST(x) MN_MBOX_MAILBOX_CONST(x)
@@ -101,11 +106,10 @@ static void
 ___finalize(GObject *obj_self)
 {
 #define __GOB_FUNCTION__ "MN:mbox:Mailbox::finalize"
-	MNmboxMailbox *self  G_GNUC_UNUSED = MN_MBOX_MAILBOX (obj_self);
-	gpointer priv = self->_priv;
+	MNmboxMailbox *self G_GNUC_UNUSED = MN_MBOX_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);
-	g_free (priv);
 }
 #undef __GOB_FUNCTION__
 
@@ -113,44 +117,46 @@ static void
 mn_mbox_mailbox_init (MNmboxMailbox * o G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:mbox:Mailbox::init"
-	o->_priv = g_new0 (MNmboxMailboxPrivate, 1);
+	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,TYPE_SELF,MNmboxMailboxPrivate);
 }
 #undef __GOB_FUNCTION__
-#line 38 "mn-mbox-mailbox.gob"
+#line 45 "mn-mbox-mailbox.gob"
 static void 
 mn_mbox_mailbox_class_init (MNmboxMailboxClass * class G_GNUC_UNUSED)
-#line 123 "mn-mbox-mailbox.c"
+#line 127 "mn-mbox-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:mbox:Mailbox::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
+
+	g_type_class_add_private(class,sizeof(MNmboxMailboxPrivate));
 	MNMailboxClass *mn_mailbox_class = (MNMailboxClass *)class;
 
 	parent_class = g_type_class_ref (MN_TYPE_MAILBOX);
 
-#line 43 "mn-mbox-mailbox.gob"
+#line 50 "mn-mbox-mailbox.gob"
 	g_object_class->constructor = ___2_mn_mbox_mailbox_constructor;
-#line 67 "mn-mbox-mailbox.gob"
+#line 74 "mn-mbox-mailbox.gob"
 	mn_mailbox_class->impl_is = ___3_mn_mbox_mailbox_impl_is;
-#line 108 "mn-mbox-mailbox.gob"
+#line 115 "mn-mbox-mailbox.gob"
 	mn_mailbox_class->impl_threaded_check = ___4_mn_mbox_mailbox_impl_threaded_check;
-#line 137 "mn-mbox-mailbox.c"
+#line 143 "mn-mbox-mailbox.c"
 	g_object_class->finalize = ___finalize;
  {
-#line 39 "mn-mbox-mailbox.gob"
+#line 46 "mn-mbox-mailbox.gob"
 
     MN_MAILBOX_CLASS(class)->format = "mbox";
   
-#line 144 "mn-mbox-mailbox.c"
+#line 150 "mn-mbox-mailbox.c"
  }
 }
 #undef __GOB_FUNCTION__
 
 
 
-#line 43 "mn-mbox-mailbox.gob"
+#line 50 "mn-mbox-mailbox.gob"
 static GObject * 
 ___2_mn_mbox_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_properties, GObjectConstructParam * construct_params)
-#line 154 "mn-mbox-mailbox.c"
+#line 160 "mn-mbox-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): \
@@ -158,7 +164,7 @@ ___2_mn_mbox_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_pr
 {
 #define __GOB_FUNCTION__ "MN:mbox:Mailbox::constructor"
 {
-#line 45 "mn-mbox-mailbox.gob"
+#line 52 "mn-mbox-mailbox.gob"
 	
     GObject *object;
     MNMailbox *self;
@@ -180,27 +186,27 @@ ___2_mn_mbox_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_pr
 
     return object;
   }}
-#line 184 "mn-mbox-mailbox.c"
+#line 190 "mn-mbox-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 67 "mn-mbox-mailbox.gob"
+#line 74 "mn-mbox-mailbox.gob"
 static gboolean 
 ___3_mn_mbox_mailbox_impl_is (MNMailbox * dummy G_GNUC_UNUSED, MNURI * uri)
-#line 191 "mn-mbox-mailbox.c"
+#line 197 "mn-mbox-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:mbox:Mailbox::impl_is"
-#line 67 "mn-mbox-mailbox.gob"
+#line 74 "mn-mbox-mailbox.gob"
 	g_return_val_if_fail (uri != NULL, (gboolean )0);
-#line 67 "mn-mbox-mailbox.gob"
+#line 74 "mn-mbox-mailbox.gob"
 	g_return_val_if_fail (MN_IS_URI (uri), (gboolean )0);
-#line 202 "mn-mbox-mailbox.c"
+#line 208 "mn-mbox-mailbox.c"
 {
-#line 69 "mn-mbox-mailbox.gob"
+#line 76 "mn-mbox-mailbox.gob"
 	
     gboolean is = FALSE;
     
@@ -239,26 +245,26 @@ ___3_mn_mbox_mailbox_impl_is (MNMailbox * dummy G_GNUC_UNUSED, MNURI * uri)
     
     return is;
   }}
-#line 243 "mn-mbox-mailbox.c"
+#line 249 "mn-mbox-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 108 "mn-mbox-mailbox.gob"
+#line 115 "mn-mbox-mailbox.gob"
 static void 
 ___4_mn_mbox_mailbox_impl_threaded_check (MNMailbox * mailbox G_GNUC_UNUSED)
-#line 250 "mn-mbox-mailbox.c"
+#line 256 "mn-mbox-mailbox.c"
 #define PARENT_HANDLER(___mailbox) \
 	{ if(MN_MAILBOX_CLASS(parent_class)->impl_threaded_check) \
 		(* MN_MAILBOX_CLASS(parent_class)->impl_threaded_check)(___mailbox); }
 {
 #define __GOB_FUNCTION__ "MN:mbox:Mailbox::impl_threaded_check"
-#line 108 "mn-mbox-mailbox.gob"
+#line 115 "mn-mbox-mailbox.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 108 "mn-mbox-mailbox.gob"
+#line 115 "mn-mbox-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 260 "mn-mbox-mailbox.c"
+#line 266 "mn-mbox-mailbox.c"
 {
-#line 110 "mn-mbox-mailbox.gob"
+#line 117 "mn-mbox-mailbox.gob"
 	
     Self *self = SELF(mailbox);
     gboolean check = TRUE;
@@ -288,6 +294,49 @@ ___4_mn_mbox_mailbox_impl_threaded_check (MNMailbox * mailbox G_GNUC_UNUSED)
 	result = gnome_vfs_open_uri(&handle, mailbox->uri->vfs, GNOME_VFS_OPEN_READ);
 	if (result == GNOME_VFS_OK)
 	  {
+#ifdef WITH_MIME
+	    GMimeStream *stream;
+	    GMimeParser *parser;
+	    GSList *messages = NULL;
+
+	    stream = mn_gmime_stream_vfs_new(handle, mailbox->uri->text);
+	    parser = g_mime_parser_new_with_stream(stream);
+	    g_object_unref(stream);
+
+	    g_mime_parser_set_scan_from(parser, TRUE);
+	    
+	    while (! g_mime_parser_eos(parser))
+	      {
+		GMimeMessage *mime_message;
+
+		mime_message = g_mime_parser_construct_message(parser);
+		if (mime_message)
+		  {
+		    const char *status;
+		    
+		    status = g_mime_message_get_header(mime_message, "Status");
+		    if (! (status && (strchr(status, 'O') || strchr(status, 'R'))))
+		      messages = g_slist_append(messages, mn_message_new_from_mime_message(mailbox->uri, mime_message));
+
+		    g_object_unref(mime_message);
+		  }
+	      }
+
+	    g_object_unref(parser);
+	    gnome_vfs_close(handle);
+	    
+	    GDK_THREADS_ENTER();
+
+	    mn_mailbox_set_has_new(mailbox, messages != NULL);
+	    mn_mailbox_set_messages(mailbox, messages);
+	    
+	    gdk_flush();
+	    GDK_THREADS_LEAVE();
+
+	    mn_g_object_slist_free(messages);
+
+#else /* WITH_MIME */
+
 	    MNVFSReadLineContext *context = NULL;
 	    const char *line;
 	    gboolean in_header = FALSE;
@@ -324,6 +373,7 @@ ___4_mn_mbox_mailbox_impl_threaded_check (MNMailbox * mailbox G_GNUC_UNUSED)
 
 	    gdk_flush();
 	    GDK_THREADS_LEAVE();
+#endif /* WITH_MIME */
 	  }
 	else
 	  {
@@ -339,6 +389,6 @@ ___4_mn_mbox_mailbox_impl_threaded_check (MNMailbox * mailbox G_GNUC_UNUSED)
     gdk_flush();
     GDK_THREADS_LEAVE();
   }}
-#line 343 "mn-mbox-mailbox.c"
+#line 393 "mn-mbox-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
diff --git a/src/mn-mbox-mailbox.gob b/src/mn-mbox-mailbox.gob
@@ -16,6 +16,8 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+requires 2.0.10
+
 %headertop{
 #include "mn-mailbox.h"
 %}
@@ -29,6 +31,11 @@
 #include <gdk/gdk.h>
 #include "mn-mailbox-private.h"
 #include "mn-vfs.h"
+#ifdef WITH_MIME
+#include "mn-message-mime.h"
+#include "mn-gmime-stream-vfs.h"
+#endif /* WITH_MIME */
+#include "mn-util.h"
 %}
 
 class MN:mbox:Mailbox from MN:Mailbox
@@ -136,6 +143,49 @@ class MN:mbox:Mailbox from MN:Mailbox
 	result = gnome_vfs_open_uri(&handle, mailbox->uri->vfs, GNOME_VFS_OPEN_READ);
 	if (result == GNOME_VFS_OK)
 	  {
+#ifdef WITH_MIME
+	    GMimeStream *stream;
+	    GMimeParser *parser;
+	    GSList *messages = NULL;
+
+	    stream = mn_gmime_stream_vfs_new(handle, mailbox->uri->text);
+	    parser = g_mime_parser_new_with_stream(stream);
+	    g_object_unref(stream);
+
+	    g_mime_parser_set_scan_from(parser, TRUE);
+	    
+	    while (! g_mime_parser_eos(parser))
+	      {
+		GMimeMessage *mime_message;
+
+		mime_message = g_mime_parser_construct_message(parser);
+		if (mime_message)
+		  {
+		    const char *status;
+		    
+		    status = g_mime_message_get_header(mime_message, "Status");
+		    if (! (status && (strchr(status, 'O') || strchr(status, 'R'))))
+		      messages = g_slist_append(messages, mn_message_new_from_mime_message(mailbox->uri, mime_message));
+
+		    g_object_unref(mime_message);
+		  }
+	      }
+
+	    g_object_unref(parser);
+	    gnome_vfs_close(handle);
+	    
+	    GDK_THREADS_ENTER();
+
+	    mn_mailbox_set_has_new(mailbox, messages != NULL);
+	    mn_mailbox_set_messages(mailbox, messages);
+	    
+	    gdk_flush();
+	    GDK_THREADS_LEAVE();
+
+	    mn_g_object_slist_free(messages);
+
+#else /* WITH_MIME */
+
 	    MNVFSReadLineContext *context = NULL;
 	    const char *line;
 	    gboolean in_header = FALSE;
@@ -172,6 +222,7 @@ class MN:mbox:Mailbox from MN:Mailbox
 
 	    gdk_flush();
 	    GDK_THREADS_LEAVE();
+#endif /* WITH_MIME */
 	  }
 	else
 	  {
diff --git a/src/mn-mbox-mailbox.h b/src/mn-mbox-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-message-label-private.h b/src/mn-message-label-private.h
@@ -0,0 +1,24 @@
+/* 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
@@ -0,0 +1,468 @@
+/* Generated by GOB (v2.0.10) on Wed Oct  6 19:29:53 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-lib.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 < 3600)
+      {
+	int minutes = delay / 60;
+	str = g_strdup_printf(ngettext("%i minute ago", "%i minutes ago", minutes), minutes);
+      }
+    else if (delay < 86400)
+      {
+	int hours = delay / 3600;
+	str = g_strdup_printf(ngettext("%i hour ago", "%i hours ago", hours), hours);
+      }
+    else
+      {
+	int days = delay / 86400;
+	str = g_strdup_printf(ngettext("%i day ago", "%i days ago", days), days);
+      }
+
+    return str;
+  }}
+#line 449 "mn-message-label.c"
+#undef __GOB_FUNCTION__
+
+#line 171 "mn-message-label.gob"
+GtkWidget * 
+mn_message_label_new (MNMessage * message)
+#line 455 "mn-message-label.c"
+{
+#define __GOB_FUNCTION__ "MN:Message:Label::new"
+#line 171 "mn-message-label.gob"
+	g_return_val_if_fail (message != NULL, (GtkWidget * )0);
+#line 171 "mn-message-label.gob"
+	g_return_val_if_fail (MN_IS_MESSAGE (message), (GtkWidget * )0);
+#line 462 "mn-message-label.c"
+{
+#line 173 "mn-message-label.gob"
+	
+    return GTK_WIDGET(GET_NEW_VARG(MN_MESSAGE_LABEL_PROP_MESSAGE(G_OBJECT(message)), NULL));
+  }}
+#line 468 "mn-message-label.c"
+#undef __GOB_FUNCTION__
diff --git a/src/mn-message-label.gob b/src/mn-message-label.gob
@@ -0,0 +1,176 @@
+/* 
+ * 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-lib.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 < 3600)
+      {
+	int minutes = delay / 60;
+	str = g_strdup_printf(ngettext("%i minute ago", "%i minutes ago", minutes), minutes);
+      }
+    else if (delay < 86400)
+      {
+	int hours = delay / 3600;
+	str = g_strdup_printf(ngettext("%i hour ago", "%i hours ago", hours), hours);
+      }
+    else
+      {
+	int days = delay / 86400;
+	str = g_strdup_printf(ngettext("%i day ago", "%i days ago", days), days);
+      }
+
+    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
@@ -0,0 +1,76 @@
+/* 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-mime.c b/src/mn-message-mime.c
@@ -0,0 +1,158 @@
+/* 
+ * 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.
+ */
+
+#include "config.h"
+#include <glib/gi18n-lib.h>
+#include <libgnomevfs/gnome-vfs.h>
+#include "mn-message-mime.h"
+#include "mn-gmime-stream-vfs.h"
+
+/*** functions ***************************************************************/
+
+static char *mn_message_mime_header_decode_text (const char *str);
+
+/*** implementation **********************************************************/
+
+static char *
+mn_message_mime_header_decode_text (const char *str)
+{
+  char *decoded;
+
+  g_return_val_if_fail(str != NULL, NULL);
+
+  decoded = g_mime_utils_header_decode_text(str);
+  if (g_utf8_validate(decoded, -1, NULL))
+    return decoded;
+  else
+    {
+      char *converted;
+
+      /* assume it is ISO8859-1 */
+      converted = g_convert(decoded, -1, "UTF-8", "ISO8859-1", NULL, NULL, NULL);
+      g_free(decoded);
+
+      return converted ? converted : g_strdup("");
+    }
+}
+
+MNMessage *
+mn_message_new_from_mime_message (MNURI *mailbox_uri,
+				  GMimeMessage *mime_message)
+{
+  MNMessage *message;
+  const char *message_id;
+  time_t sent_time;
+  const char *from;
+  const char *subject;
+  char *decoded_from;
+  char *decoded_subject;
+
+  g_return_val_if_fail(MN_IS_URI(mailbox_uri), NULL);
+  g_return_val_if_fail(GMIME_IS_MESSAGE(mime_message), NULL);
+  
+  message_id = g_mime_message_get_message_id(mime_message);
+  g_mime_message_get_date(mime_message, &sent_time, NULL);
+  from = g_mime_message_get_sender(mime_message);
+  subject = g_mime_message_get_subject(mime_message);
+
+  decoded_from = from ? mn_message_mime_header_decode_text(from) : NULL;
+  decoded_subject = subject ? mn_message_mime_header_decode_text(subject) : NULL;
+
+  message = mn_message_new(mailbox_uri, NULL, sent_time, message_id, decoded_from, decoded_subject);
+
+  g_free(decoded_from);
+  g_free(decoded_subject);
+
+  return message;
+}
+
+MNMessage *
+mn_message_new_from_mime_stream (MNURI *mailbox_uri,
+				 GMimeStream *mime_stream)
+{
+  GMimeParser *parser;
+  GMimeMessage *mime_message;
+  MNMessage *message;
+
+  g_return_val_if_fail(MN_IS_URI(mailbox_uri), NULL);
+  g_return_val_if_fail(GMIME_IS_STREAM(mime_stream), NULL);
+
+  parser = g_mime_parser_new_with_stream(mime_stream);
+  mime_message = g_mime_parser_construct_message(parser);
+  g_object_unref(parser);
+
+  if (mime_message)
+    {
+      message = mn_message_new_from_mime_message(mailbox_uri, mime_message);
+      g_object_unref(mime_message);
+    }
+  else
+    message = mn_message_new_from_error(mailbox_uri, _("unable to parse MIME message"));
+    
+  return message;
+}
+
+MNMessage *
+mn_message_new_from_uri (MNURI *mailbox_uri,
+			 GnomeVFSURI *uri)
+{
+  GnomeVFSResult result;
+  GnomeVFSHandle *handle;
+  MNMessage *message;
+
+  g_return_val_if_fail(MN_IS_URI(mailbox_uri), NULL);
+  g_return_val_if_fail(uri != NULL, NULL);
+
+  result = gnome_vfs_open_uri(&handle, uri, GNOME_VFS_OPEN_READ | GNOME_VFS_OPEN_RANDOM);
+  if (result == GNOME_VFS_OK)
+    {
+      GMimeStream *stream;
+      char *text_uri;
+
+      text_uri = gnome_vfs_uri_to_string(uri, GNOME_VFS_URI_HIDE_NONE);
+      stream = mn_gmime_stream_vfs_new(handle, text_uri);
+      g_free(text_uri);
+
+      message = mn_message_new_from_mime_stream(mailbox_uri, stream);
+      g_object_unref(stream);
+
+      gnome_vfs_close(handle);
+    }
+  else
+    message = mn_message_new_from_error(mailbox_uri, gnome_vfs_result_to_string(result));
+    
+  return message;
+}
+
+MNMessage *
+mn_message_new_from_buffer (MNURI *mailbox_uri,
+			    const char *buffer,
+			    unsigned int len)
+{
+  GMimeStream *stream;
+  MNMessage *message;
+
+  g_return_val_if_fail(MN_IS_URI(mailbox_uri), NULL);
+  g_return_val_if_fail(buffer != NULL, NULL);
+
+  stream = g_mime_stream_mem_new_with_buffer(buffer, len);
+  message = mn_message_new_from_mime_stream(mailbox_uri, stream);
+  g_object_unref(stream);
+
+  return message;
+}
diff --git a/src/mn-message-mime.h b/src/mn-message-mime.h
@@ -0,0 +1,35 @@
+/* 
+ * 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.
+ */
+
+#ifndef _MN_MESSAGE_MIME_H
+#define _MN_MESSAGE_MIME_H
+
+#include <gmime/gmime.h>
+#include "mn-message.h"
+
+MNMessage *mn_message_new_from_mime_message (MNURI *mailbox_uri,
+					     GMimeMessage *mime_message);
+MNMessage *mn_message_new_from_mime_stream (MNURI *mailbox_uri,
+					    GMimeStream *mime_stream);
+MNMessage *mn_message_new_from_uri (MNURI *mailbox_uri,
+				    GnomeVFSURI *uri);
+MNMessage *mn_message_new_from_buffer (MNURI *mailbox_uri,
+				       const char *buffer,
+				       unsigned int len);
+
+#endif /* _MN_MESSAGE_MIME_H */
diff --git a/src/mn-message-private.h b/src/mn-message-private.h
@@ -0,0 +1,17 @@
+/* Generated by GOB (v2.0.10)   (do not edit directly) */
+
+#ifndef __MN_MESSAGE_PRIVATE_H__
+#define __MN_MESSAGE_PRIVATE_H__
+
+#include "mn-message.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-message.c b/src/mn-message.c
@@ -0,0 +1,511 @@
+/* Generated by GOB (v2.0.10) on Wed Oct  6 19:29:53 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.h"
+
+#include "mn-message-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 26 "mn-message.gob"
+
+#include "config.h"
+#include <glib/gi18n-lib.h>
+#include "mn-util.h"
+
+#line 33 "mn-message.c"
+/* self casting macros */
+#define SELF(x) MN_MESSAGE(x)
+#define SELF_CONST(x) MN_MESSAGE_CONST(x)
+#define IS_SELF(x) MN_IS_MESSAGE(x)
+#define TYPE_SELF MN_TYPE_MESSAGE
+#define SELF_CLASS(x) MN_MESSAGE_CLASS(x)
+
+#define SELF_GET_CLASS(x) MN_MESSAGE_GET_CLASS(x)
+
+/* self typedefs */
+typedef MNMessage Self;
+typedef MNMessageClass 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_init (MNMessage * o) G_GNUC_UNUSED;
+static void mn_message_class_init (MNMessageClass * c) G_GNUC_UNUSED;
+static int mn_message_slist_find_by_id_compare_func (gconstpointer a, gconstpointer b) G_GNUC_UNUSED;
+static int mn_message_slist_sort_by_sent_time_compare_func (gconstpointer a, gconstpointer b) G_GNUC_UNUSED;
+
+enum {
+	PROP_0,
+	PROP_MAILBOX_URI,
+	PROP_ERROR,
+	PROP_SENT_TIME,
+	PROP_ID,
+	PROP_FROM,
+	PROP_SUBJECT
+};
+
+/* pointer to the class of our parent */
+static GObjectClass *parent_class = NULL;
+
+/* Short form macros */
+#define self_new mn_message_new
+#define self_new_from_error mn_message_new_from_error
+#define self_slist_find_by_id mn_message_slist_find_by_id
+#define self_slist_find_by_id_compare_func mn_message_slist_find_by_id_compare_func
+#define self_slist_sort_by_sent_time mn_message_slist_sort_by_sent_time
+#define self_slist_sort_by_sent_time_compare_func mn_message_slist_sort_by_sent_time_compare_func
+GType
+mn_message_get_type (void)
+{
+	static GType type = 0;
+
+	if ___GOB_UNLIKELY(type == 0) {
+		static const GTypeInfo info = {
+			sizeof (MNMessageClass),
+			(GBaseInitFunc) NULL,
+			(GBaseFinalizeFunc) NULL,
+			(GClassInitFunc) mn_message_class_init,
+			(GClassFinalizeFunc) NULL,
+			NULL /* class_data */,
+			sizeof (MNMessage),
+			0 /* n_preallocs */,
+			(GInstanceInitFunc) mn_message_init,
+			NULL
+		};
+
+		type = g_type_register_static (G_TYPE_OBJECT, "MNMessage", &info, (GTypeFlags)0);
+	}
+
+	return type;
+}
+
+/* a macro for creating a new object of our type */
+#define GET_NEW ((MNMessage *)g_object_new(mn_message_get_type(), NULL))
+
+/* a function for creating a new object of our type */
+#include <stdarg.h>
+static MNMessage * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED;
+static MNMessage *
+GET_NEW_VARG (const char *first, ...)
+{
+	MNMessage *ret;
+	va_list ap;
+	va_start (ap, first);
+	ret = (MNMessage *)g_object_new_valist (mn_message_get_type (), first, ap);
+	va_end (ap);
+	return ret;
+}
+
+
+static void
+___dispose (GObject *obj_self)
+{
+#define __GOB_FUNCTION__ "MN:Message::dispose"
+	MNMessage *self G_GNUC_UNUSED = MN_MESSAGE (obj_self);
+	if (G_OBJECT_CLASS (parent_class)->dispose) \
+		(* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
+#line 35 "mn-message.gob"
+	if(self->mailbox_uri) { g_object_unref ((gpointer) self->mailbox_uri); self->mailbox_uri = NULL; }
+#line 127 "mn-message.c"
+}
+#undef __GOB_FUNCTION__
+
+
+static void
+___finalize(GObject *obj_self)
+{
+#define __GOB_FUNCTION__ "MN:Message::finalize"
+	MNMessage *self G_GNUC_UNUSED = MN_MESSAGE (obj_self);
+	if(G_OBJECT_CLASS(parent_class)->finalize) \
+		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
+#line 41 "mn-message.gob"
+	if(self->error) { g_free ((gpointer) self->error); self->error = NULL; }
+#line 141 "mn-message.c"
+#line 49 "mn-message.gob"
+	if(self->id) { g_free ((gpointer) self->id); self->id = NULL; }
+#line 144 "mn-message.c"
+#line 75 "mn-message.gob"
+	if(self->from) { g_free ((gpointer) self->from); self->from = NULL; }
+#line 147 "mn-message.c"
+#line 90 "mn-message.gob"
+	if(self->subject) { g_free ((gpointer) self->subject); self->subject = NULL; }
+#line 150 "mn-message.c"
+}
+#undef __GOB_FUNCTION__
+
+static void 
+mn_message_init (MNMessage * o G_GNUC_UNUSED)
+{
+#define __GOB_FUNCTION__ "MN:Message::init"
+}
+#undef __GOB_FUNCTION__
+static void 
+mn_message_class_init (MNMessageClass * c G_GNUC_UNUSED)
+{
+#define __GOB_FUNCTION__ "MN:Message::class_init"
+	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
+
+	parent_class = g_type_class_ref (G_TYPE_OBJECT);
+
+	g_object_class->dispose = ___dispose;
+	g_object_class->finalize = ___finalize;
+	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
+		("mailbox_uri" /* name */,
+		 NULL /* nick */,
+		 NULL /* blurb */,
+		 MN_TYPE_URI /* object_type */,
+		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
+	g_object_class_install_property (g_object_class,
+		PROP_MAILBOX_URI,
+		param_spec);
+	param_spec = g_param_spec_string
+		("error" /* name */,
+		 NULL /* nick */,
+		 NULL /* blurb */,
+		 NULL /* default_value */,
+		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
+	g_object_class_install_property (g_object_class,
+		PROP_ERROR,
+		param_spec);
+	param_spec = g_param_spec_ulong
+		("sent_time" /* name */,
+		 NULL /* nick */,
+		 NULL /* blurb */,
+		 0 /* minimum */,
+		 G_MAXULONG /* maximum */,
+		 0 /* default_value */,
+		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
+	g_object_class_install_property (g_object_class,
+		PROP_SENT_TIME,
+		param_spec);
+	param_spec = g_param_spec_string
+		("id" /* name */,
+		 NULL /* nick */,
+		 NULL /* blurb */,
+		 NULL /* default_value */,
+		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
+	g_object_class_install_property (g_object_class,
+		PROP_ID,
+		param_spec);
+	param_spec = g_param_spec_string
+		("from" /* name */,
+		 NULL /* nick */,
+		 NULL /* blurb */,
+		 NULL /* default_value */,
+		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
+	g_object_class_install_property (g_object_class,
+		PROP_FROM,
+		param_spec);
+	param_spec = g_param_spec_string
+		("subject" /* name */,
+		 NULL /* nick */,
+		 NULL /* blurb */,
+		 NULL /* default_value */,
+		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
+	g_object_class_install_property (g_object_class,
+		PROP_SUBJECT,
+		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::set_property"
+{
+	MNMessage *self G_GNUC_UNUSED;
+
+	self = MN_MESSAGE (object);
+
+	switch (property_id) {
+	case PROP_MAILBOX_URI:
+		{
+#line 36 "mn-message.gob"
+{ GObject *___old = (GObject *)self->mailbox_uri; self->mailbox_uri = (MNURI *)g_value_dup_object (VAL); if (___old != NULL) { g_object_unref (G_OBJECT (___old)); } }
+#line 251 "mn-message.c"
+		}
+		break;
+	case PROP_ERROR:
+		{
+#line 42 "mn-message.gob"
+{ char *old = self->error; self->error = g_value_dup_string (VAL); g_free (old); }
+#line 258 "mn-message.c"
+		}
+		break;
+	case PROP_SENT_TIME:
+		{
+#line 46 "mn-message.gob"
+self->sent_time = g_value_get_ulong (VAL);
+#line 265 "mn-message.c"
+		}
+		break;
+	case PROP_ID:
+		{
+#line 52 "mn-message.gob"
+
+      const char *id = g_value_get_string(VAL);
+
+      g_return_if_fail(self->id == NULL);
+      if (id)
+	self->id = g_strdup(id);
+      else
+	{
+	  static int unique = 0;
+
+	  /*
+	   * Generate an unique identifier (we don't need it do be a
+	   * compliant Message-Id).
+	   */
+	  self->id = g_strdup_printf("%i", g_atomic_int_exchange_and_add(&unique, 1));
+	}
+    
+#line 288 "mn-message.c"
+		}
+		break;
+	case PROP_FROM:
+		{
+#line 78 "mn-message.gob"
+
+      const char *from = g_value_get_string(VAL);
+
+      g_return_if_fail(self->from == NULL);
+      self->from = g_strdup(from ? from : _("Unknown"));
+    
+#line 300 "mn-message.c"
+		}
+		break;
+	case PROP_SUBJECT:
+		{
+#line 93 "mn-message.gob"
+
+      const char *subject = g_value_get_string(VAL);
+
+      g_return_if_fail(self->subject == NULL);
+      self->subject = g_strdup(subject ? subject : "");
+    
+#line 312 "mn-message.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::get_property"
+{
+	MNMessage *self G_GNUC_UNUSED;
+
+	self = MN_MESSAGE (object);
+
+	switch (property_id) {
+	case PROP_MAILBOX_URI:
+		{
+#line 36 "mn-message.gob"
+g_value_set_object (VAL, (gpointer)self->mailbox_uri);
+#line 343 "mn-message.c"
+		}
+		break;
+	case PROP_ERROR:
+		{
+#line 42 "mn-message.gob"
+g_value_set_string (VAL, self->error);
+#line 350 "mn-message.c"
+		}
+		break;
+	case PROP_SENT_TIME:
+		{
+#line 46 "mn-message.gob"
+g_value_set_ulong (VAL, self->sent_time);
+#line 357 "mn-message.c"
+		}
+		break;
+	case PROP_ID:
+		{
+#line 70 "mn-message.gob"
+
+      g_value_set_string(VAL, self->id);
+    
+#line 366 "mn-message.c"
+		}
+		break;
+	case PROP_FROM:
+		{
+#line 85 "mn-message.gob"
+
+      g_value_set_string(VAL, self->from);
+    
+#line 375 "mn-message.c"
+		}
+		break;
+	case PROP_SUBJECT:
+		{
+#line 100 "mn-message.gob"
+
+      g_value_set_string(VAL, self->subject);
+    
+#line 384 "mn-message.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 104 "mn-message.gob"
+MNMessage * 
+mn_message_new (MNURI * mailbox_uri, const char * error, time_t sent_time, const char * id, const char * from, const char * subject)
+#line 404 "mn-message.c"
+{
+#define __GOB_FUNCTION__ "MN:Message::new"
+#line 104 "mn-message.gob"
+	g_return_val_if_fail (mailbox_uri != NULL, (MNMessage * )0);
+#line 104 "mn-message.gob"
+	g_return_val_if_fail (MN_IS_URI (mailbox_uri), (MNMessage * )0);
+#line 411 "mn-message.c"
+{
+#line 111 "mn-message.gob"
+	
+    return GET_NEW_VARG(MN_MESSAGE_PROP_MAILBOX_URI(G_OBJECT(mailbox_uri)),
+			MN_MESSAGE_PROP_ERROR((char *) error),
+			MN_MESSAGE_PROP_SENT_TIME(sent_time),
+			MN_MESSAGE_PROP_ID((char *) id),
+			MN_MESSAGE_PROP_FROM((char *) from),
+			MN_MESSAGE_PROP_SUBJECT((char *) subject),
+			NULL);
+  }}
+#line 423 "mn-message.c"
+#undef __GOB_FUNCTION__
+
+#line 121 "mn-message.gob"
+MNMessage * 
+mn_message_new_from_error (MNURI * mailbox_uri, const char * error)
+#line 429 "mn-message.c"
+{
+#define __GOB_FUNCTION__ "MN:Message::new_from_error"
+#line 121 "mn-message.gob"
+	g_return_val_if_fail (mailbox_uri != NULL, (MNMessage * )0);
+#line 121 "mn-message.gob"
+	g_return_val_if_fail (MN_IS_URI (mailbox_uri), (MNMessage * )0);
+#line 121 "mn-message.gob"
+	g_return_val_if_fail (error != NULL, (MNMessage * )0);
+#line 438 "mn-message.c"
+{
+#line 124 "mn-message.gob"
+	
+    return self_new(mailbox_uri, error, 0, NULL, NULL, NULL);
+  }}
+#line 444 "mn-message.c"
+#undef __GOB_FUNCTION__
+
+#line 128 "mn-message.gob"
+GSList * 
+mn_message_slist_find_by_id (GSList * list, MNMessage * self)
+#line 450 "mn-message.c"
+{
+#define __GOB_FUNCTION__ "MN:Message::slist_find_by_id"
+#line 128 "mn-message.gob"
+	g_return_val_if_fail (self != NULL, (GSList * )0);
+#line 128 "mn-message.gob"
+	g_return_val_if_fail (MN_IS_MESSAGE (self), (GSList * )0);
+#line 457 "mn-message.c"
+{
+#line 130 "mn-message.gob"
+	
+    return g_slist_find_custom(list, self, self_slist_find_by_id_compare_func);
+  }}
+#line 463 "mn-message.c"
+#undef __GOB_FUNCTION__
+
+#line 134 "mn-message.gob"
+static int 
+mn_message_slist_find_by_id_compare_func (gconstpointer a, gconstpointer b)
+#line 469 "mn-message.c"
+{
+#define __GOB_FUNCTION__ "MN:Message::slist_find_by_id_compare_func"
+{
+#line 136 "mn-message.gob"
+	
+    Self *message_a = (Self *) a;
+    Self *message_b = (Self *) b;
+
+    return strcmp(message_a->id, message_b->id);
+  }}
+#line 480 "mn-message.c"
+#undef __GOB_FUNCTION__
+
+#line 143 "mn-message.gob"
+GSList * 
+mn_message_slist_sort_by_sent_time (GSList * list)
+#line 486 "mn-message.c"
+{
+#define __GOB_FUNCTION__ "MN:Message::slist_sort_by_sent_time"
+{
+#line 145 "mn-message.gob"
+	
+    return g_slist_sort(list, self_slist_sort_by_sent_time_compare_func);
+  }}
+#line 494 "mn-message.c"
+#undef __GOB_FUNCTION__
+
+#line 149 "mn-message.gob"
+static int 
+mn_message_slist_sort_by_sent_time_compare_func (gconstpointer a, gconstpointer b)
+#line 500 "mn-message.c"
+{
+#define __GOB_FUNCTION__ "MN:Message::slist_sort_by_sent_time_compare_func"
+{
+#line 151 "mn-message.gob"
+	
+    Self *message_a = (Self *) a;
+    Self *message_b = (Self *) b;
+
+    return message_a->sent_time - message_b->sent_time;
+  }}
+#line 511 "mn-message.c"
+#undef __GOB_FUNCTION__
diff --git a/src/mn-message.gob b/src/mn-message.gob
@@ -0,0 +1,157 @@
+/* 
+ * 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 <time.h>
+#include "mn-uri.h"
+%}
+
+%{
+#include "config.h"
+#include <glib/gi18n-lib.h>
+#include "mn-util.h"
+%}
+
+class MN:Message from G:Object
+{
+  /* always set */
+  public MNURI *mailbox_uri unrefwith g_object_unref;
+  property OBJECT mailbox_uri (flags = CONSTRUCT_ONLY,
+			       object_type = MN:URI,
+			       link);
+  
+  /* may be NULL */
+  public char *error destroywith g_free;
+  property STRING error (flags = CONSTRUCT_ONLY, link);
+
+  /* sent time, may be 0 */
+  public time_t sent_time;
+  property ULONG sent_time (flags = CONSTRUCT_ONLY, link);
+
+  /* always set */
+  public char *id destroywith g_free;
+  property STRING id (flags = CONSTRUCT_ONLY)
+    set
+    {
+      const char *id = g_value_get_string(VAL);
+
+      g_return_if_fail(self->id == NULL);
+      if (id)
+	self->id = g_strdup(id);
+      else
+	{
+	  static int unique = 0;
+
+	  /*
+	   * Generate an unique identifier (we don't need it do be a
+	   * compliant Message-Id).
+	   */
+	  self->id = g_strdup_printf("%i", g_atomic_int_exchange_and_add(&unique, 1));
+	}
+    }
+    get
+    {
+      g_value_set_string(VAL, self->id);
+    };
+  
+  /* always set */
+  public char *from destroywith g_free;
+  property STRING from (flags = CONSTRUCT_ONLY)
+    set
+    {
+      const char *from = g_value_get_string(VAL);
+
+      g_return_if_fail(self->from == NULL);
+      self->from = g_strdup(from ? from : _("Unknown"));
+    }
+    get
+    {
+      g_value_set_string(VAL, self->from);
+    };
+
+  /* always set */
+  public char *subject destroywith g_free;
+  property STRING subject (flags = CONSTRUCT_ONLY)
+    set
+    {
+      const char *subject = g_value_get_string(VAL);
+
+      g_return_if_fail(self->subject == NULL);
+      self->subject = g_strdup(subject ? subject : "");
+    }
+    get
+    {
+      g_value_set_string(VAL, self->subject);
+    };
+
+  public MNMessage *
+    new (MN:URI *mailbox_uri (check null type),
+	 const char *error,
+	 time_t sent_time,
+	 const char *id,
+	 const char *from,
+	 const char *subject)
+  {
+    return GET_NEW_VARG(MN_MESSAGE_PROP_MAILBOX_URI(G_OBJECT(mailbox_uri)),
+			MN_MESSAGE_PROP_ERROR((char *) error),
+			MN_MESSAGE_PROP_SENT_TIME(sent_time),
+			MN_MESSAGE_PROP_ID((char *) id),
+			MN_MESSAGE_PROP_FROM((char *) from),
+			MN_MESSAGE_PROP_SUBJECT((char *) subject),
+			NULL);
+  }
+
+  public MNMessage *
+    new_from_error (MN:URI *mailbox_uri (check null type),
+		    const char *error (check null))
+  {
+    return self_new(mailbox_uri, error, 0, NULL, NULL, NULL);
+  }
+  
+  public GSList *
+    slist_find_by_id (GSList *list, MN:Message *self (check null type))
+  {
+    return g_slist_find_custom(list, self, self_slist_find_by_id_compare_func);
+  }
+
+  private int
+    slist_find_by_id_compare_func (gconstpointer a, gconstpointer b)
+  {
+    Self *message_a = (Self *) a;
+    Self *message_b = (Self *) b;
+
+    return strcmp(message_a->id, message_b->id);
+  }
+  
+  public GSList *
+    slist_sort_by_sent_time (GSList *list)
+  {
+    return g_slist_sort(list, self_slist_sort_by_sent_time_compare_func);
+  }
+
+  private int
+    slist_sort_by_sent_time_compare_func (gconstpointer a, gconstpointer b)
+  {
+    Self *message_a = (Self *) a;
+    Self *message_b = (Self *) b;
+
+    return message_a->sent_time - message_b->sent_time;
+  }
+}
diff --git a/src/mn-message.h b/src/mn-message.h
@@ -0,0 +1,108 @@
+/* Generated by GOB (v2.0.10)   (do not edit directly) */
+
+#include <glib.h>
+#include <glib-object.h>
+
+
+#include <time.h>
+#include "mn-uri.h"
+
+#ifndef __MN_MESSAGE_H__
+#define __MN_MESSAGE_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+/*
+ * Type checking and casting macros
+ */
+#define MN_TYPE_MESSAGE	(mn_message_get_type())
+#define MN_MESSAGE(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_message_get_type(), MNMessage)
+#define MN_MESSAGE_CONST(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_message_get_type(), MNMessage const)
+#define MN_MESSAGE_CLASS(klass)	G_TYPE_CHECK_CLASS_CAST((klass), mn_message_get_type(), MNMessageClass)
+#define MN_IS_MESSAGE(obj)	G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_message_get_type ())
+
+#define MN_MESSAGE_GET_CLASS(obj)	G_TYPE_INSTANCE_GET_CLASS((obj), mn_message_get_type(), MNMessageClass)
+
+/*
+ * Main object structure
+ */
+#ifndef __TYPEDEF_MN_MESSAGE__
+#define __TYPEDEF_MN_MESSAGE__
+typedef struct _MNMessage MNMessage;
+#endif
+struct _MNMessage {
+	GObject __parent__;
+	/*< public >*/
+	MNURI * mailbox_uri;
+	char * error;
+	time_t sent_time;
+	char * id;
+	char * from;
+	char * subject;
+};
+
+/*
+ * Class definition
+ */
+typedef struct _MNMessageClass MNMessageClass;
+struct _MNMessageClass {
+	GObjectClass __parent__;
+};
+
+
+/*
+ * Public methods
+ */
+GType	mn_message_get_type	(void);
+MNMessage * 	mn_message_new	(MNURI * mailbox_uri,
+					const char * error,
+					time_t sent_time,
+					const char * id,
+					const char * from,
+					const char * subject);
+MNMessage * 	mn_message_new_from_error	(MNURI * mailbox_uri,
+					const char * error);
+GSList * 	mn_message_slist_find_by_id	(GSList * list,
+					MNMessage * self);
+GSList * 	mn_message_slist_sort_by_sent_time	(GSList * list);
+
+/*
+ * Argument wrapping macros
+ */
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#define MN_MESSAGE_PROP_MAILBOX_URI(arg)    	"mailbox_uri", __extension__ ({GObject *z = (arg); z;})
+#define MN_MESSAGE_GET_PROP_MAILBOX_URI(arg)	"mailbox_uri", __extension__ ({GObject **z = (arg); z;})
+#define MN_MESSAGE_PROP_ERROR(arg)    	"error", __extension__ ({gchar *z = (arg); z;})
+#define MN_MESSAGE_GET_PROP_ERROR(arg)	"error", __extension__ ({gchar **z = (arg); z;})
+#define MN_MESSAGE_PROP_SENT_TIME(arg)    	"sent_time", __extension__ ({gulong z = (arg); z;})
+#define MN_MESSAGE_GET_PROP_SENT_TIME(arg)	"sent_time", __extension__ ({gulong *z = (arg); z;})
+#define MN_MESSAGE_PROP_ID(arg)    	"id", __extension__ ({gchar *z = (arg); z;})
+#define MN_MESSAGE_GET_PROP_ID(arg)	"id", __extension__ ({gchar **z = (arg); z;})
+#define MN_MESSAGE_PROP_FROM(arg)    	"from", __extension__ ({gchar *z = (arg); z;})
+#define MN_MESSAGE_GET_PROP_FROM(arg)	"from", __extension__ ({gchar **z = (arg); z;})
+#define MN_MESSAGE_PROP_SUBJECT(arg)    	"subject", __extension__ ({gchar *z = (arg); z;})
+#define MN_MESSAGE_GET_PROP_SUBJECT(arg)	"subject", __extension__ ({gchar **z = (arg); z;})
+#else /* __GNUC__ && !__STRICT_ANSI__ */
+#define MN_MESSAGE_PROP_MAILBOX_URI(arg)    	"mailbox_uri",(GObject *)(arg)
+#define MN_MESSAGE_GET_PROP_MAILBOX_URI(arg)	"mailbox_uri",(GObject **)(arg)
+#define MN_MESSAGE_PROP_ERROR(arg)    	"error",(gchar *)(arg)
+#define MN_MESSAGE_GET_PROP_ERROR(arg)	"error",(gchar **)(arg)
+#define MN_MESSAGE_PROP_SENT_TIME(arg)    	"sent_time",(gulong )(arg)
+#define MN_MESSAGE_GET_PROP_SENT_TIME(arg)	"sent_time",(gulong *)(arg)
+#define MN_MESSAGE_PROP_ID(arg)    	"id",(gchar *)(arg)
+#define MN_MESSAGE_GET_PROP_ID(arg)	"id",(gchar **)(arg)
+#define MN_MESSAGE_PROP_FROM(arg)    	"from",(gchar *)(arg)
+#define MN_MESSAGE_GET_PROP_FROM(arg)	"from",(gchar **)(arg)
+#define MN_MESSAGE_PROP_SUBJECT(arg)    	"subject",(gchar *)(arg)
+#define MN_MESSAGE_GET_PROP_SUBJECT(arg)	"subject",(gchar **)(arg)
+#endif /* __GNUC__ && !__STRICT_ANSI__ */
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
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.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (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.9) on Thu Sep  9 01:42:00 2004
+/* Generated by GOB (v2.0.10) on Wed Oct  6 19:29:52 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 9
+#define GOB_VERSION_PATCHLEVEL 10
 
 #define selfp (self->_priv)
 
@@ -21,7 +21,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 22 "mn-mh-mailbox.gob"
+#line 24 "mn-mh-mailbox.gob"
 
 #include "config.h"
 #include <stdio.h>
@@ -30,8 +30,12 @@
 #include <gdk/gdk.h>
 #include "mn-mailbox-private.h"
 #include "mn-vfs.h"
+#include "mn-util.h"
+#ifdef WITH_MIME
+#include "mn-message-mime.h"
+#endif
 
-#line 35 "mn-mh-mailbox.c"
+#line 39 "mn-mh-mailbox.c"
 /* self casting macros */
 #define SELF(x) MN_MH_MAILBOX(x)
 #define SELF_CONST(x) MN_MH_MAILBOX_CONST(x)
@@ -103,10 +107,10 @@ mn_mh_mailbox_init (MNMHMailbox * o G_GNUC_UNUSED)
 #define __GOB_FUNCTION__ "MN:MH:Mailbox::init"
 }
 #undef __GOB_FUNCTION__
-#line 34 "mn-mh-mailbox.gob"
+#line 40 "mn-mh-mailbox.gob"
 static void 
 mn_mh_mailbox_class_init (MNMHMailboxClass * class G_GNUC_UNUSED)
-#line 110 "mn-mh-mailbox.c"
+#line 114 "mn-mh-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:MH:Mailbox::class_init"
 	GObjectClass *g_object_class = (GObjectClass *)class;
@@ -114,29 +118,29 @@ mn_mh_mailbox_class_init (MNMHMailboxClass * class G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (MN_TYPE_MAILBOX);
 
-#line 39 "mn-mh-mailbox.gob"
+#line 45 "mn-mh-mailbox.gob"
 	g_object_class->constructor = ___2_mn_mh_mailbox_constructor;
-#line 68 "mn-mh-mailbox.gob"
+#line 84 "mn-mh-mailbox.gob"
 	mn_mailbox_class->impl_is = ___3_mn_mh_mailbox_impl_is;
-#line 85 "mn-mh-mailbox.gob"
+#line 101 "mn-mh-mailbox.gob"
 	mn_mailbox_class->impl_threaded_check = ___4_mn_mh_mailbox_impl_threaded_check;
-#line 124 "mn-mh-mailbox.c"
+#line 128 "mn-mh-mailbox.c"
  {
-#line 35 "mn-mh-mailbox.gob"
+#line 41 "mn-mh-mailbox.gob"
 
     MN_MAILBOX_CLASS(class)->format = "MH";
   
-#line 130 "mn-mh-mailbox.c"
+#line 134 "mn-mh-mailbox.c"
  }
 }
 #undef __GOB_FUNCTION__
 
 
 
-#line 39 "mn-mh-mailbox.gob"
+#line 45 "mn-mh-mailbox.gob"
 static GObject * 
 ___2_mn_mh_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_properties, GObjectConstructParam * construct_params)
-#line 140 "mn-mh-mailbox.c"
+#line 144 "mn-mh-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): \
@@ -144,54 +148,64 @@ ___2_mn_mh_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_prop
 {
 #define __GOB_FUNCTION__ "MN:MH:Mailbox::constructor"
 {
-#line 41 "mn-mh-mailbox.gob"
+#line 47 "mn-mh-mailbox.gob"
 	
     GObject *object;
     MNMailbox *self;
-    char *sequences_uri;
 
     object = PARENT_HANDLER(type, n_construct_properties, construct_params);
     self = MN_MAILBOX(object);
 
-    sequences_uri = g_build_path("/", self->uri->text, ".mh_sequences", NULL);
-
     GDK_THREADS_ENTER();
 
+#ifdef WITH_MIME
     mn_mailbox_monitor(self,
-		       sequences_uri,
-		       GNOME_VFS_MONITOR_FILE,
+		       self->uri->text,
+		       GNOME_VFS_MONITOR_DIRECTORY,
 		       MN_MAILBOX_MONITOR_EVENT_CHANGED
 		       | MN_MAILBOX_MONITOR_EVENT_DELETED
 		       | MN_MAILBOX_MONITOR_EVENT_CREATED);
+#else /* WITH_MIME */
+    {
+      char *sequences_uri;
+      
+      sequences_uri = g_build_path("/", self->uri->text, ".mh_sequences", NULL);
+      mn_mailbox_monitor(self,
+			 sequences_uri,
+			 GNOME_VFS_MONITOR_FILE,
+			 MN_MAILBOX_MONITOR_EVENT_CHANGED
+			 | MN_MAILBOX_MONITOR_EVENT_DELETED
+			 | MN_MAILBOX_MONITOR_EVENT_CREATED);
+      g_free(sequences_uri);
+    }
+#endif /* WITH_MIME */
 
     gdk_flush();
     GDK_THREADS_LEAVE();
 
-    g_free(sequences_uri);
-
     return object;
   }}
-#line 175 "mn-mh-mailbox.c"
+#line 189 "mn-mh-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 68 "mn-mh-mailbox.gob"
+#line 84 "mn-mh-mailbox.gob"
 static gboolean 
 ___3_mn_mh_mailbox_impl_is (MNMailbox * dummy G_GNUC_UNUSED, MNURI * uri)
-#line 182 "mn-mh-mailbox.c"
+#line 196 "mn-mh-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:MH:Mailbox::impl_is"
-#line 68 "mn-mh-mailbox.gob"
+#line 84 "mn-mh-mailbox.gob"
 	g_return_val_if_fail (uri != NULL, (gboolean )0);
-#line 68 "mn-mh-mailbox.gob"
+#line 84 "mn-mh-mailbox.gob"
 	g_return_val_if_fail (MN_IS_URI (uri), (gboolean )0);
-#line 193 "mn-mh-mailbox.c"
+#line 207 "mn-mh-mailbox.c"
 {
-#line 70 "mn-mh-mailbox.gob"
+#line 86 "mn-mh-mailbox.gob"
 	
     gboolean is = FALSE;
 
@@ -206,26 +220,26 @@ ___3_mn_mh_mailbox_impl_is (MNMailbox * dummy G_GNUC_UNUSED, MNURI * uri)
     
     return is;
   }}
-#line 210 "mn-mh-mailbox.c"
+#line 224 "mn-mh-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 85 "mn-mh-mailbox.gob"
+#line 101 "mn-mh-mailbox.gob"
 static void 
 ___4_mn_mh_mailbox_impl_threaded_check (MNMailbox * self G_GNUC_UNUSED)
-#line 217 "mn-mh-mailbox.c"
+#line 231 "mn-mh-mailbox.c"
 #define PARENT_HANDLER(___self) \
 	{ if(MN_MAILBOX_CLASS(parent_class)->impl_threaded_check) \
 		(* MN_MAILBOX_CLASS(parent_class)->impl_threaded_check)(___self); }
 {
 #define __GOB_FUNCTION__ "MN:MH:Mailbox::impl_threaded_check"
-#line 85 "mn-mh-mailbox.gob"
+#line 101 "mn-mh-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 85 "mn-mh-mailbox.gob"
+#line 101 "mn-mh-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 227 "mn-mh-mailbox.c"
+#line 241 "mn-mh-mailbox.c"
 {
-#line 87 "mn-mh-mailbox.gob"
+#line 103 "mn-mh-mailbox.gob"
 	
     GnomeVFSURI *sequences_uri;
     GnomeVFSResult result;
@@ -239,18 +253,57 @@ ___4_mn_mh_mailbox_impl_threaded_check (MNMailbox * self G_GNUC_UNUSED)
       {
 	MNVFSReadLineContext *context = NULL;
 	const char *line;
+#ifdef WITH_MIME
+	GSList *messages = NULL;
+#else
 	gboolean has_new = FALSE;
-	
+#endif
+
 	while ((result = mn_vfs_read_line(&context, handle, &line)) == GNOME_VFS_OK)
-	  if (! strncmp(line, "unseen", 6))
+	  if (! strncmp(line, "unseen: ", 8))
 	    {
 	      int first;
+#ifdef WITH_MIME
+	      char **elements;
+	      int i;
 	      
+	      elements = g_strsplit(line + 8, " ", 0);
+	      for (i = 0; elements[i]; i++)
+		{
+		  int last;
+		  int n;
+
+		  n = sscanf(elements[i], "%d-%d", &first, &last);
+		  if (n >= 1)
+		    {
+		      int j;
+
+		      if (n == 1)
+			last = first;
+		  
+		      for (j = first; j <= last; j++)
+			{
+			  char *filename;
+			  GnomeVFSURI *message_uri;
+
+			  filename = g_strdup_printf("%i", j);
+			  message_uri = gnome_vfs_uri_append_file_name(self->uri->vfs, filename);
+			  g_free(filename);
+
+			  messages = g_slist_append(messages, mn_message_new_from_uri(self->uri, message_uri));
+			  gnome_vfs_uri_unref(message_uri);
+			}
+		    }
+		}
+	      g_strfreev(elements);
+
+#else /* WITH_MIME */
 	      if (sscanf(line, "unseen: %d", &first) == 1)
 		{
 		  has_new = TRUE;
 		  break;
 		}
+#endif /* WITH_MIME */
 	    }
 
 	mn_vfs_read_line_context_free(context);
@@ -259,12 +312,23 @@ ___4_mn_mh_mailbox_impl_threaded_check (MNMailbox * self G_GNUC_UNUSED)
 	GDK_THREADS_ENTER();
       
 	if (result == GNOME_VFS_OK || result == GNOME_VFS_ERROR_EOF)
-	  mn_mailbox_set_has_new(self, has_new);
+	  {
+#ifdef WITH_MIME
+	    mn_mailbox_set_has_new(self, messages != NULL);
+	    mn_mailbox_set_messages(self, messages);
+#else /* WITH_MIME */
+	    mn_mailbox_set_has_new(self, has_new);
+#endif
+	  }
 	else
 	  mn_mailbox_set_error(self, _("error while reading .mh_sequences: %s"), gnome_vfs_result_to_string(result));
 	
 	gdk_flush();
 	GDK_THREADS_LEAVE();
+
+#ifdef WITH_MIME
+	mn_g_object_slist_free(messages);
+#endif
       }
     else
       {
@@ -279,6 +343,6 @@ ___4_mn_mh_mailbox_impl_threaded_check (MNMailbox * self G_GNUC_UNUSED)
     gdk_flush();
     GDK_THREADS_LEAVE();
   }}
-#line 283 "mn-mh-mailbox.c"
+#line 347 "mn-mh-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
diff --git a/src/mn-mh-mailbox.gob b/src/mn-mh-mailbox.gob
@@ -16,6 +16,8 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+requires 2.0.10
+
 %headertop{
 #include "mn-mailbox.h"
 %}
@@ -27,6 +29,10 @@
 #include <gdk/gdk.h>
 #include "mn-mailbox-private.h"
 #include "mn-vfs.h"
+#include "mn-util.h"
+#ifdef WITH_MIME
+#include "mn-message-mime.h"
+#endif
 %}
 
 class MN:MH:Mailbox from MN:Mailbox
@@ -41,27 +47,37 @@ class MN:MH:Mailbox from MN:Mailbox
   {
     GObject *object;
     MNMailbox *self;
-    char *sequences_uri;
 
     object = PARENT_HANDLER(type, n_construct_properties, construct_params);
     self = MN_MAILBOX(object);
 
-    sequences_uri = g_build_path("/", self->uri->text, ".mh_sequences", NULL);
-
     GDK_THREADS_ENTER();
 
+#ifdef WITH_MIME
     mn_mailbox_monitor(self,
-		       sequences_uri,
-		       GNOME_VFS_MONITOR_FILE,
+		       self->uri->text,
+		       GNOME_VFS_MONITOR_DIRECTORY,
 		       MN_MAILBOX_MONITOR_EVENT_CHANGED
 		       | MN_MAILBOX_MONITOR_EVENT_DELETED
 		       | MN_MAILBOX_MONITOR_EVENT_CREATED);
+#else /* WITH_MIME */
+    {
+      char *sequences_uri;
+      
+      sequences_uri = g_build_path("/", self->uri->text, ".mh_sequences", NULL);
+      mn_mailbox_monitor(self,
+			 sequences_uri,
+			 GNOME_VFS_MONITOR_FILE,
+			 MN_MAILBOX_MONITOR_EVENT_CHANGED
+			 | MN_MAILBOX_MONITOR_EVENT_DELETED
+			 | MN_MAILBOX_MONITOR_EVENT_CREATED);
+      g_free(sequences_uri);
+    }
+#endif /* WITH_MIME */
 
     gdk_flush();
     GDK_THREADS_LEAVE();
 
-    g_free(sequences_uri);
-
     return object;
   }
 
@@ -97,18 +113,57 @@ class MN:MH:Mailbox from MN:Mailbox
       {
 	MNVFSReadLineContext *context = NULL;
 	const char *line;
+#ifdef WITH_MIME
+	GSList *messages = NULL;
+#else
 	gboolean has_new = FALSE;
-	
+#endif
+
 	while ((result = mn_vfs_read_line(&context, handle, &line)) == GNOME_VFS_OK)
-	  if (! strncmp(line, "unseen", 6))
+	  if (! strncmp(line, "unseen: ", 8))
 	    {
 	      int first;
+#ifdef WITH_MIME
+	      char **elements;
+	      int i;
 	      
+	      elements = g_strsplit(line + 8, " ", 0);
+	      for (i = 0; elements[i]; i++)
+		{
+		  int last;
+		  int n;
+
+		  n = sscanf(elements[i], "%d-%d", &first, &last);
+		  if (n >= 1)
+		    {
+		      int j;
+
+		      if (n == 1)
+			last = first;
+		  
+		      for (j = first; j <= last; j++)
+			{
+			  char *filename;
+			  GnomeVFSURI *message_uri;
+
+			  filename = g_strdup_printf("%i", j);
+			  message_uri = gnome_vfs_uri_append_file_name(self->uri->vfs, filename);
+			  g_free(filename);
+
+			  messages = g_slist_append(messages, mn_message_new_from_uri(self->uri, message_uri));
+			  gnome_vfs_uri_unref(message_uri);
+			}
+		    }
+		}
+	      g_strfreev(elements);
+
+#else /* WITH_MIME */
 	      if (sscanf(line, "unseen: %d", &first) == 1)
 		{
 		  has_new = TRUE;
 		  break;
 		}
+#endif /* WITH_MIME */
 	    }
 
 	mn_vfs_read_line_context_free(context);
@@ -117,12 +172,23 @@ class MN:MH:Mailbox from MN:Mailbox
 	GDK_THREADS_ENTER();
       
 	if (result == GNOME_VFS_OK || result == GNOME_VFS_ERROR_EOF)
-	  mn_mailbox_set_has_new(self, has_new);
+	  {
+#ifdef WITH_MIME
+	    mn_mailbox_set_has_new(self, messages != NULL);
+	    mn_mailbox_set_messages(self, messages);
+#else /* WITH_MIME */
+	    mn_mailbox_set_has_new(self, has_new);
+#endif
+	  }
 	else
 	  mn_mailbox_set_error(self, _("error while reading .mh_sequences: %s"), gnome_vfs_result_to_string(result));
 	
 	gdk_flush();
 	GDK_THREADS_LEAVE();
+
+#ifdef WITH_MIME
+	mn_g_object_slist_free(messages);
+#endif
       }
     else
       {
diff --git a/src/mn-mh-mailbox.h b/src/mn-mh-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (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.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (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,14 +1,16 @@
-/* Generated by GOB (v2.0.9) on Thu Sep  9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct  6 19:29:53 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 9
+#define GOB_VERSION_PATCHLEVEL 10
 
 #define selfp (self->_priv)
 
+#include <string.h> /* memset() */
+
 #include "mn-pending-mailbox.h"
 
 #include "mn-pending-mailbox-private.h"
@@ -21,13 +23,13 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 22 "mn-pending-mailbox.gob"
+#line 24 "mn-pending-mailbox.gob"
 
 #include "config.h"
 #include <glib/gi18n-lib.h>
 #include <gtk/gtk.h>
 
-#line 31 "mn-pending-mailbox.c"
+#line 33 "mn-pending-mailbox.c"
 /* self casting macros */
 #define SELF(x) MN_PENDING_MAILBOX(x)
 #define SELF_CONST(x) MN_PENDING_MAILBOX_CONST(x)
@@ -98,43 +100,43 @@ mn_pending_mailbox_init (MNPendingMailbox * o G_GNUC_UNUSED)
 #define __GOB_FUNCTION__ "MN:Pending:Mailbox::init"
 }
 #undef __GOB_FUNCTION__
-#line 30 "mn-pending-mailbox.gob"
+#line 32 "mn-pending-mailbox.gob"
 static void 
 mn_pending_mailbox_class_init (MNPendingMailboxClass * class G_GNUC_UNUSED)
-#line 105 "mn-pending-mailbox.c"
+#line 107 "mn-pending-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Pending:Mailbox::class_init"
 
 	parent_class = g_type_class_ref (MN_TYPE_MAILBOX);
 
  {
-#line 31 "mn-pending-mailbox.gob"
+#line 33 "mn-pending-mailbox.gob"
 
     MN_MAILBOX_CLASS(class)->stock_id = GTK_STOCK_EXECUTE;
     MN_MAILBOX_CLASS(class)->format = _("detecting");
   
-#line 117 "mn-pending-mailbox.c"
+#line 119 "mn-pending-mailbox.c"
  }
 }
 #undef __GOB_FUNCTION__
 
 
 
-#line 36 "mn-pending-mailbox.gob"
+#line 38 "mn-pending-mailbox.gob"
 MNMailbox * 
 mn_pending_mailbox_new (MNURI * uri)
-#line 127 "mn-pending-mailbox.c"
+#line 129 "mn-pending-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Pending:Mailbox::new"
-#line 36 "mn-pending-mailbox.gob"
+#line 38 "mn-pending-mailbox.gob"
 	g_return_val_if_fail (uri != NULL, (MNMailbox * )0);
-#line 36 "mn-pending-mailbox.gob"
+#line 38 "mn-pending-mailbox.gob"
 	g_return_val_if_fail (MN_IS_URI (uri), (MNMailbox * )0);
-#line 134 "mn-pending-mailbox.c"
+#line 136 "mn-pending-mailbox.c"
 {
-#line 38 "mn-pending-mailbox.gob"
+#line 40 "mn-pending-mailbox.gob"
 	
-    return g_object_new(TYPE_SELF, MN_MAILBOX_PROP_URI(G_OBJECT(uri)), NULL);
+    return MN_MAILBOX(GET_NEW_VARG(MN_MAILBOX_PROP_URI(G_OBJECT(uri)), NULL));
   }}
-#line 140 "mn-pending-mailbox.c"
+#line 142 "mn-pending-mailbox.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-pending-mailbox.gob b/src/mn-pending-mailbox.gob
@@ -16,6 +16,8 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+requires 2.0.10
+
 %headertop{
 #include "mn-mailbox.h"
 %}
@@ -36,6 +38,6 @@ class MN:Pending:Mailbox from MN:Mailbox
   public MNMailbox *
     new (MN:URI *uri (check null type))
   {
-    return g_object_new(TYPE_SELF, MN_MAILBOX_PROP_URI(G_OBJECT(uri)), NULL);
+    return MN_MAILBOX(GET_NEW_VARG(MN_MAILBOX_PROP_URI(G_OBJECT(uri)), NULL));
   }
 }
diff --git a/src/mn-pending-mailbox.h b/src/mn-pending-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (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.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (do not edit directly) */
 
 #ifndef __MN_PI_MAILBOX_PROPERTIES_PRIVATE_H__
 #define __MN_PI_MAILBOX_PROPERTIES_PRIVATE_H__
diff --git a/src/mn-pi-mailbox-properties.c b/src/mn-pi-mailbox-properties.c
@@ -1,14 +1,16 @@
-/* Generated by GOB (v2.0.9) on Thu Sep  9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct  6 19:29:52 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 9
+#define GOB_VERSION_PATCHLEVEL 10
 
 #define selfp (self->_priv)
 
+#include <string.h> /* memset() */
+
 #include "mn-pi-mailbox-properties.h"
 
 #include "mn-pi-mailbox-properties-private.h"
@@ -21,7 +23,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 22 "mn-pi-mailbox-properties.gob"
+#line 24 "mn-pi-mailbox-properties.gob"
 
 #include "config.h"
 #include <glib/gi18n-lib.h>
@@ -30,7 +32,7 @@
 #include "mn-auth-combo-box.h"
 #include "mn-util.h"
 
-#line 34 "mn-pi-mailbox-properties.c"
+#line 36 "mn-pi-mailbox-properties.c"
 /* self casting macros */
 #define SELF(x) MN_PI_MAILBOX_PROPERTIES(x)
 #define SELF_CONST(x) MN_PI_MAILBOX_PROPERTIES_CONST(x)
@@ -135,12 +137,12 @@ ___dispose (GObject *obj_self)
 	MNPIMailboxProperties *self G_GNUC_UNUSED = MN_PI_MAILBOX_PROPERTIES (obj_self);
 	if (G_OBJECT_CLASS (parent_class)->dispose) \
 		(* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
-#line 42 "mn-pi-mailbox-properties.gob"
-	if(self->size_group) { ((*(void (*)(void *))g_object_unref)) (self->size_group); self->size_group = NULL; }
-#line 141 "mn-pi-mailbox-properties.c"
-#line 48 "mn-pi-mailbox-properties.gob"
-	if(self->tooltips) { ((*(void (*)(void *))g_object_unref)) (self->tooltips); self->tooltips = NULL; }
-#line 144 "mn-pi-mailbox-properties.c"
+#line 44 "mn-pi-mailbox-properties.gob"
+	if(self->size_group) { g_object_unref ((gpointer) self->size_group); self->size_group = NULL; }
+#line 143 "mn-pi-mailbox-properties.c"
+#line 50 "mn-pi-mailbox-properties.gob"
+	if(self->tooltips) { g_object_unref ((gpointer) self->tooltips); self->tooltips = NULL; }
+#line 146 "mn-pi-mailbox-properties.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -148,9 +150,9 @@ static void
 mn_pi_mailbox_properties_init (MNPIMailboxProperties * o G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::init"
-#line 48 "mn-pi-mailbox-properties.gob"
+#line 50 "mn-pi-mailbox-properties.gob"
 	o->tooltips = mn_tooltips_new();
-#line 154 "mn-pi-mailbox-properties.c"
+#line 156 "mn-pi-mailbox-properties.c"
 }
 #undef __GOB_FUNCTION__
 static void 
@@ -161,9 +163,9 @@ mn_pi_mailbox_properties_class_init (MNPIMailboxPropertiesClass * c G_GNUC_UNUSE
 
 	parent_class = g_type_class_ref (GTK_TYPE_VBOX);
 
-#line 55 "mn-pi-mailbox-properties.gob"
+#line 57 "mn-pi-mailbox-properties.gob"
 	g_object_class->constructor = ___1_mn_pi_mailbox_properties_constructor;
-#line 167 "mn-pi-mailbox-properties.c"
+#line 169 "mn-pi-mailbox-properties.c"
 	g_object_class->dispose = ___dispose;
 	g_object_class->get_property = ___object_get_property;
 	g_object_class->set_property = ___object_set_property;
@@ -195,9 +197,9 @@ ___object_set_property (GObject *object,
 	switch (property_id) {
 	case PROP_SIZE_GROUP:
 		{
-#line 43 "mn-pi-mailbox-properties.gob"
+#line 45 "mn-pi-mailbox-properties.gob"
 { GObject *___old = (GObject *)self->size_group; self->size_group = (void *)g_value_dup_object (VAL); if (___old != NULL) { g_object_unref (G_OBJECT (___old)); } }
-#line 201 "mn-pi-mailbox-properties.c"
+#line 203 "mn-pi-mailbox-properties.c"
 		}
 		break;
 	default:
@@ -226,23 +228,23 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_COMPLETE:
 		{
-#line 37 "mn-pi-mailbox-properties.gob"
+#line 39 "mn-pi-mailbox-properties.gob"
 
-#line 232 "mn-pi-mailbox-properties.c"
+#line 234 "mn-pi-mailbox-properties.c"
 		}
 		break;
 	case PROP_LABEL:
 		{
-#line 40 "mn-pi-mailbox-properties.gob"
+#line 42 "mn-pi-mailbox-properties.gob"
  g_value_set_string(VAL, SELF_GET_CLASS(self)->label); 
-#line 239 "mn-pi-mailbox-properties.c"
+#line 241 "mn-pi-mailbox-properties.c"
 		}
 		break;
 	case PROP_SIZE_GROUP:
 		{
-#line 43 "mn-pi-mailbox-properties.gob"
+#line 45 "mn-pi-mailbox-properties.gob"
 g_value_set_object (VAL, (gpointer)self->size_group);
-#line 246 "mn-pi-mailbox-properties.c"
+#line 248 "mn-pi-mailbox-properties.c"
 		}
 		break;
 	default:
@@ -259,10 +261,10 @@ g_value_set_object (VAL, (gpointer)self->size_group);
 
 
 
-#line 55 "mn-pi-mailbox-properties.gob"
+#line 57 "mn-pi-mailbox-properties.gob"
 static GObject * 
 ___1_mn_pi_mailbox_properties_constructor (GType type G_GNUC_UNUSED, guint n_construct_properties, GObjectConstructParam * construct_params)
-#line 266 "mn-pi-mailbox-properties.c"
+#line 268 "mn-pi-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): \
@@ -270,7 +272,7 @@ ___1_mn_pi_mailbox_properties_constructor (GType type G_GNUC_UNUSED, guint n_con
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::constructor"
 {
-#line 57 "mn-pi-mailbox-properties.gob"
+#line 59 "mn-pi-mailbox-properties.gob"
 	
     GObject *object;
     Self *self;
@@ -368,38 +370,38 @@ ___1_mn_pi_mailbox_properties_constructor (GType type G_GNUC_UNUSED, guint n_con
 				       GTK_ENTRY(self->password_entry),
 				       NULL);
 
-    g_signal_connect(G_OBJECT(expander), "notify::expanded", G_CALLBACK(self_notify_expanded_h), self);
+    g_signal_connect(expander, "notify::expanded", G_CALLBACK(self_notify_expanded_h), self);
 
     for (i = 0; i < 3; i++)
-      g_signal_connect(G_OBJECT(self->conn_radio[i]), "toggled", G_CALLBACK(self_radio_toggled_h), self);
+      g_signal_connect(self->conn_radio[i], "toggled", G_CALLBACK(self_radio_toggled_h), self);
     
-    g_signal_connect(G_OBJECT(self->hostname_entry), "changed", G_CALLBACK(self_entry_changed_h), self);
-    g_signal_connect(G_OBJECT(self->username_entry), "changed", G_CALLBACK(self_entry_changed_h), self);
-    g_signal_connect(G_OBJECT(self->password_entry), "changed", G_CALLBACK(self_entry_changed_h), self);
+    g_signal_connect(self->hostname_entry, "changed", G_CALLBACK(self_entry_changed_h), self);
+    g_signal_connect(self->username_entry, "changed", G_CALLBACK(self_entry_changed_h), self);
+    g_signal_connect(self->password_entry, "changed", G_CALLBACK(self_entry_changed_h), self);
 
     return object;
   }}
-#line 383 "mn-pi-mailbox-properties.c"
+#line 385 "mn-pi-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 166 "mn-pi-mailbox-properties.gob"
+#line 168 "mn-pi-mailbox-properties.gob"
 static void 
 mn_pi_mailbox_properties_notify_expanded_h (GObject * object, GParamSpec * pspec, gpointer user_data)
-#line 390 "mn-pi-mailbox-properties.c"
+#line 392 "mn-pi-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::notify_expanded_h"
-#line 166 "mn-pi-mailbox-properties.gob"
+#line 168 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (object != NULL);
-#line 166 "mn-pi-mailbox-properties.gob"
+#line 168 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (G_IS_OBJECT (object));
-#line 166 "mn-pi-mailbox-properties.gob"
+#line 168 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (pspec != NULL);
-#line 166 "mn-pi-mailbox-properties.gob"
+#line 168 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (user_data != NULL);
-#line 401 "mn-pi-mailbox-properties.c"
+#line 403 "mn-pi-mailbox-properties.c"
 {
-#line 170 "mn-pi-mailbox-properties.gob"
+#line 172 "mn-pi-mailbox-properties.gob"
 	
     Self *self = user_data;
 
@@ -408,46 +410,46 @@ mn_pi_mailbox_properties_notify_expanded_h (GObject * object, GParamSpec * pspec
 			    ? GTK_SIZE_GROUP_HORIZONTAL
 			    : GTK_SIZE_GROUP_NONE);
   }}
-#line 412 "mn-pi-mailbox-properties.c"
+#line 414 "mn-pi-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 179 "mn-pi-mailbox-properties.gob"
+#line 181 "mn-pi-mailbox-properties.gob"
 void 
 mn_pi_mailbox_properties_entry_changed_h (GtkEditable * editable, gpointer user_data)
-#line 418 "mn-pi-mailbox-properties.c"
+#line 420 "mn-pi-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::entry_changed_h"
-#line 179 "mn-pi-mailbox-properties.gob"
+#line 181 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (editable != NULL);
-#line 179 "mn-pi-mailbox-properties.gob"
+#line 181 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (GTK_IS_EDITABLE (editable));
-#line 179 "mn-pi-mailbox-properties.gob"
+#line 181 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (user_data != NULL);
-#line 427 "mn-pi-mailbox-properties.c"
+#line 429 "mn-pi-mailbox-properties.c"
 {
-#line 182 "mn-pi-mailbox-properties.gob"
+#line 184 "mn-pi-mailbox-properties.gob"
 	
     Self *self = user_data;
     g_object_notify(G_OBJECT(self), "complete");
   }}
-#line 434 "mn-pi-mailbox-properties.c"
+#line 436 "mn-pi-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 187 "mn-pi-mailbox-properties.gob"
+#line 189 "mn-pi-mailbox-properties.gob"
 static void 
 mn_pi_mailbox_properties_radio_toggled_h (GtkToggleButton * togglebutton, gpointer user_data)
-#line 440 "mn-pi-mailbox-properties.c"
+#line 442 "mn-pi-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::radio_toggled_h"
-#line 187 "mn-pi-mailbox-properties.gob"
+#line 189 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (togglebutton != NULL);
-#line 187 "mn-pi-mailbox-properties.gob"
+#line 189 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (GTK_IS_TOGGLE_BUTTON (togglebutton));
-#line 187 "mn-pi-mailbox-properties.gob"
+#line 189 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (user_data != NULL);
-#line 449 "mn-pi-mailbox-properties.c"
+#line 451 "mn-pi-mailbox-properties.c"
 {
-#line 190 "mn-pi-mailbox-properties.gob"
+#line 192 "mn-pi-mailbox-properties.gob"
 	
     Self *self = user_data;
     int i;
@@ -457,32 +459,32 @@ mn_pi_mailbox_properties_radio_toggled_h (GtkToggleButton * togglebutton, gpoint
 
     g_object_notify(G_OBJECT(self), "complete");
   }}
-#line 461 "mn-pi-mailbox-properties.c"
+#line 463 "mn-pi-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 200 "mn-pi-mailbox-properties.gob"
+#line 202 "mn-pi-mailbox-properties.gob"
 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)
-#line 467 "mn-pi-mailbox-properties.c"
+#line 469 "mn-pi-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::set_contents"
-#line 200 "mn-pi-mailbox-properties.gob"
+#line 202 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (self != NULL);
-#line 200 "mn-pi-mailbox-properties.gob"
+#line 202 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (MN_IS_PI_MAILBOX_PROPERTIES (self));
-#line 200 "mn-pi-mailbox-properties.gob"
+#line 202 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (username != NULL);
-#line 200 "mn-pi-mailbox-properties.gob"
+#line 202 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (password != NULL);
-#line 200 "mn-pi-mailbox-properties.gob"
+#line 202 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (hostname != NULL);
-#line 200 "mn-pi-mailbox-properties.gob"
+#line 202 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (port >= 0);
-#line 200 "mn-pi-mailbox-properties.gob"
+#line 202 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (port <= 0xFFFF);
-#line 484 "mn-pi-mailbox-properties.c"
+#line 486 "mn-pi-mailbox-properties.c"
 {
-#line 209 "mn-pi-mailbox-properties.gob"
+#line 211 "mn-pi-mailbox-properties.gob"
 	
     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self->conn_radio[ssl ? 2 : (inband_ssl ? 1 : 0)]), TRUE);
     gtk_entry_set_text(GTK_ENTRY(self->username_entry), username);
@@ -491,22 +493,22 @@ mn_pi_mailbox_properties_set_contents (MNPIMailboxProperties * self, gboolean ss
     gtk_entry_set_text(GTK_ENTRY(self->hostname_entry), hostname);
     gtk_spin_button_set_value(GTK_SPIN_BUTTON(self->port_spin[ssl ? 2 : (inband_ssl ? 1 : 0)]), port);
   }}
-#line 495 "mn-pi-mailbox-properties.c"
+#line 497 "mn-pi-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 218 "mn-pi-mailbox-properties.gob"
+#line 220 "mn-pi-mailbox-properties.gob"
 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)
-#line 501 "mn-pi-mailbox-properties.c"
+#line 503 "mn-pi-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::get_contents"
-#line 218 "mn-pi-mailbox-properties.gob"
+#line 220 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (self != NULL);
-#line 218 "mn-pi-mailbox-properties.gob"
+#line 220 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (MN_IS_PI_MAILBOX_PROPERTIES (self));
-#line 508 "mn-pi-mailbox-properties.c"
+#line 510 "mn-pi-mailbox-properties.c"
 {
-#line 227 "mn-pi-mailbox-properties.gob"
+#line 229 "mn-pi-mailbox-properties.gob"
 	
     gboolean _ssl;
     gboolean _inband_ssl;
@@ -529,5 +531,5 @@ mn_pi_mailbox_properties_get_contents (MNPIMailboxProperties * self, gboolean * 
     if (port)
       *port = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(self->port_spin[_ssl ? 2 : (_inband_ssl ? 1 : 0)]));
   }}
-#line 533 "mn-pi-mailbox-properties.c"
+#line 535 "mn-pi-mailbox-properties.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-pi-mailbox-properties.gob b/src/mn-pi-mailbox-properties.gob
@@ -16,6 +16,8 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+requires 2.0.10
+
 %headertop{
 #include <gtk/gtk.h>
 %}
@@ -151,14 +153,14 @@ class MN:PI:Mailbox:Properties from Gtk:VBox (interface MN:Mailbox:Properties)
 				       GTK_ENTRY(self->password_entry),
 				       NULL);
 
-    g_signal_connect(G_OBJECT(expander), "notify::expanded", G_CALLBACK(self_notify_expanded_h), self);
+    g_signal_connect(expander, "notify::expanded", G_CALLBACK(self_notify_expanded_h), self);
 
     for (i = 0; i < 3; i++)
-      g_signal_connect(G_OBJECT(self->conn_radio[i]), "toggled", G_CALLBACK(self_radio_toggled_h), self);
+      g_signal_connect(self->conn_radio[i], "toggled", G_CALLBACK(self_radio_toggled_h), self);
     
-    g_signal_connect(G_OBJECT(self->hostname_entry), "changed", G_CALLBACK(self_entry_changed_h), self);
-    g_signal_connect(G_OBJECT(self->username_entry), "changed", G_CALLBACK(self_entry_changed_h), self);
-    g_signal_connect(G_OBJECT(self->password_entry), "changed", G_CALLBACK(self_entry_changed_h), self);
+    g_signal_connect(self->hostname_entry, "changed", G_CALLBACK(self_entry_changed_h), self);
+    g_signal_connect(self->username_entry, "changed", G_CALLBACK(self_entry_changed_h), self);
+    g_signal_connect(self->password_entry, "changed", G_CALLBACK(self_entry_changed_h), self);
 
     return object;
   }
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.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
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.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (do not edit directly) */
 
 #ifndef __MN_POP3_MAILBOX_PRIVATE_H__
 #define __MN_POP3_MAILBOX_PRIVATE_H__
@@ -10,9 +10,9 @@ extern "C" {
 #endif /* __cplusplus */
 
 struct _MNPOP3MailboxPrivate {
-#line 106 "mn-pop3-mailbox.gob"
+#line 122 "mn-pop3-mailbox.gob"
 	int login_delay;
-#line 107 "mn-pop3-mailbox.gob"
+#line 123 "mn-pop3-mailbox.gob"
 	GTimer * authentication_timer;
 #line 18 "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.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (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,14 +1,16 @@
-/* Generated by GOB (v2.0.9) on Thu Sep  9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct  6 19:29:52 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 9
+#define GOB_VERSION_PATCHLEVEL 10
 
 #define selfp (self->_priv)
 
+#include <string.h> /* memset() */
+
 #include "mn-pop3-mailbox-properties.h"
 
 #include "mn-pop3-mailbox-properties-private.h"
@@ -21,7 +23,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 22 "mn-pop3-mailbox-properties.gob"
+#line 24 "mn-pop3-mailbox-properties.gob"
 
 #include "config.h"
 #include <glib/gi18n-lib.h>
@@ -30,7 +32,7 @@
 #include "mn-auth-combo-box.h"
 #include "mn-util.h"
 
-#line 34 "mn-pop3-mailbox-properties.c"
+#line 36 "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)
@@ -68,11 +70,11 @@ static MNPIMailboxPropertiesClass *parent_class = NULL;
 static void
 ___MN_Mailbox_Properties_init (MNMailboxPropertiesIface *iface)
 {
-#line 94 "mn-pop3-mailbox-properties.gob"
+#line 96 "mn-pop3-mailbox-properties.gob"
 	iface->set_uri = self_set_uri;
-#line 114 "mn-pop3-mailbox-properties.gob"
+#line 116 "mn-pop3-mailbox-properties.gob"
 	iface->get_uri = self_get_uri;
-#line 76 "mn-pop3-mailbox-properties.c"
+#line 78 "mn-pop3-mailbox-properties.c"
 }
 
 GType
@@ -132,19 +134,19 @@ mn_pop3_mailbox_properties_init (MNPOP3MailboxProperties * o G_GNUC_UNUSED)
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox:Properties::init"
 }
 #undef __GOB_FUNCTION__
-#line 60 "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 139 "mn-pop3-mailbox-properties.c"
+#line 141 "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 69 "mn-pop3-mailbox-properties.gob"
+#line 71 "mn-pop3-mailbox-properties.gob"
 	g_object_class->constructor = ___2_mn_pop3_mailbox_properties_constructor;
-#line 148 "mn-pop3-mailbox-properties.c"
+#line 150 "mn-pop3-mailbox-properties.c"
 	g_object_class->get_property = ___object_get_property;
     {
 	g_object_class_override_property (g_object_class,
@@ -152,7 +154,7 @@ mn_pop3_mailbox_properties_class_init (MNPOP3MailboxPropertiesClass * class G_GN
 		"complete");
     }
  {
-#line 61 "mn-pop3-mailbox-properties.gob"
+#line 63 "mn-pop3-mailbox-properties.gob"
 
     MNPIMailboxPropertiesClass *pi_class = MN_PI_MAILBOX_PROPERTIES_CLASS(class);
 
@@ -160,7 +162,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 164 "mn-pop3-mailbox-properties.c"
+#line 166 "mn-pop3-mailbox-properties.c"
  }
 }
 #undef __GOB_FUNCTION__
@@ -179,7 +181,7 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_COMPLETE:
 		{
-#line 35 "mn-pop3-mailbox-properties.gob"
+#line 37 "mn-pop3-mailbox-properties.gob"
 
       MNPIMailboxProperties *pi = MN_PI_MAILBOX_PROPERTIES(self);
       gboolean complete;
@@ -204,7 +206,7 @@ ___object_get_property (GObject *object,
 
       g_value_set_boolean(VAL, complete);
     
-#line 208 "mn-pop3-mailbox-properties.c"
+#line 210 "mn-pop3-mailbox-properties.c"
 		}
 		break;
 	default:
@@ -221,10 +223,10 @@ ___object_get_property (GObject *object,
 
 
 
-#line 69 "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 228 "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): \
@@ -232,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 71 "mn-pop3-mailbox-properties.gob"
+#line 73 "mn-pop3-mailbox-properties.gob"
 	
     GObject *object;
     Self *self;
@@ -255,27 +257,27 @@ ___2_mn_pop3_mailbox_properties_constructor (GType type G_GNUC_UNUSED, guint n_c
 
     return object;
   }}
-#line 259 "mn-pop3-mailbox-properties.c"
+#line 261 "mn-pop3-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 94 "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 266 "mn-pop3-mailbox-properties.c"
+#line 268 "mn-pop3-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox:Properties::set_uri"
-#line 94 "mn-pop3-mailbox-properties.gob"
+#line 96 "mn-pop3-mailbox-properties.gob"
 	g_return_val_if_fail (properties != NULL, (gboolean )0);
-#line 94 "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 94 "mn-pop3-mailbox-properties.gob"
+#line 96 "mn-pop3-mailbox-properties.gob"
 	g_return_val_if_fail (uri != NULL, (gboolean )0);
-#line 94 "mn-pop3-mailbox-properties.gob"
+#line 96 "mn-pop3-mailbox-properties.gob"
 	g_return_val_if_fail (MN_IS_URI (uri), (gboolean )0);
-#line 277 "mn-pop3-mailbox-properties.c"
+#line 279 "mn-pop3-mailbox-properties.c"
 {
-#line 97 "mn-pop3-mailbox-properties.gob"
+#line 99 "mn-pop3-mailbox-properties.gob"
 	
     if (MN_URI_IS_POP(uri))
       {
@@ -292,22 +294,22 @@ mn_pop3_mailbox_properties_set_uri (MNMailboxProperties * properties, MNURI * ur
     else
       return FALSE;
   }}
-#line 296 "mn-pop3-mailbox-properties.c"
+#line 298 "mn-pop3-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 114 "mn-pop3-mailbox-properties.gob"
+#line 116 "mn-pop3-mailbox-properties.gob"
 static MNURI * 
 mn_pop3_mailbox_properties_get_uri (MNMailboxProperties * properties)
-#line 302 "mn-pop3-mailbox-properties.c"
+#line 304 "mn-pop3-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox:Properties::get_uri"
-#line 114 "mn-pop3-mailbox-properties.gob"
+#line 116 "mn-pop3-mailbox-properties.gob"
 	g_return_val_if_fail (properties != NULL, (MNURI * )0);
-#line 114 "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 309 "mn-pop3-mailbox-properties.c"
+#line 311 "mn-pop3-mailbox-properties.c"
 {
-#line 116 "mn-pop3-mailbox-properties.gob"
+#line 118 "mn-pop3-mailbox-properties.gob"
 	
     gboolean ssl;
     gboolean inband_ssl;
@@ -332,5 +334,5 @@ mn_pop3_mailbox_properties_get_uri (MNMailboxProperties * properties)
 
     return uri;
   }}
-#line 336 "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
@@ -16,6 +16,8 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+requires 2.0.10
+
 %headertop{
 #include "mn-pi-mailbox-properties.h"
 %}
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.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (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.9) on Thu Sep  9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct  6 19:29:52 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 9
+#define GOB_VERSION_PATCHLEVEL 10
 
 #define selfp (self->_priv)
 
@@ -21,7 +21,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 31 "mn-pop3-mailbox.gob"
+#line 33 "mn-pop3-mailbox.gob"
 
 #include "config.h"
 #include <stdio.h>
@@ -36,6 +36,9 @@
 #include "mn-client-session.h"
 #include "mn-util.h"
 #include "mn-md5.h"
+#ifdef WITH_MIME
+#include "mn-message-mime.h"
+#endif
 
   enum
   {
@@ -50,7 +53,12 @@
     STATE_APOP,
     STATE_USER,
     STATE_PASS,
+#ifdef WITH_MIME
+    STATE_LIST,
+    STATE_RETR,
+#else /* WITH_MIME */
     STATE_STAT,
+#endif
     STATE_QUIT
   };
 
@@ -77,6 +85,12 @@
 #endif
     gboolean		authenticated;
     gboolean		login_delay_user;
+#ifdef WITH_MIME
+    GSList		*message_numbers;
+    GSList		*current_message_number;
+    GSList		*messages;
+    GString		*current_message;
+#endif
   };
 
   typedef enum
@@ -94,7 +108,7 @@
     char		*arguments;
   };
 
-#line 98 "mn-pop3-mailbox.c"
+#line 112 "mn-pop3-mailbox.c"
 /* self casting macros */
 #define SELF(x) MN_POP3_MAILBOX(x)
 #define SELF_CONST(x) MN_POP3_MAILBOX_CONST(x)
@@ -126,11 +140,15 @@ static int mn_pop3_mailbox_enter_user_cb (MNClientSession * session, MNClientSes
 static int mn_pop3_mailbox_handle_user_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_pop3_mailbox_enter_pass_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_pop3_mailbox_handle_pass_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+static int mn_pop3_mailbox_enter_list_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+static int mn_pop3_mailbox_handle_list_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+static int mn_pop3_mailbox_enter_retr_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+static int mn_pop3_mailbox_handle_retr_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_pop3_mailbox_enter_stat_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_pop3_mailbox_handle_stat_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_pop3_mailbox_enter_quit_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_pop3_mailbox_handle_quit_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
-static void ___15_mn_pop3_mailbox_impl_threaded_check (MNMailbox * mailbox) G_GNUC_UNUSED;
+static void ___19_mn_pop3_mailbox_impl_threaded_check (MNMailbox * mailbox) G_GNUC_UNUSED;
 static void mn_pop3_mailbox_notice_cb (MNClientSession * session, const char * str, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static MNClientSessionResponse * mn_pop3_mailbox_response_new_cb (MNClientSession * session, const char * input, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static void mn_pop3_mailbox_response_free_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
@@ -138,7 +156,9 @@ static int mn_pop3_mailbox_custom_handler_cb (MNClientSession * session, MNClien
 static int mn_pop3_mailbox_session_authenticate (MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_pop3_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv, gboolean tried_apop) G_GNUC_UNUSED;
 static int mn_pop3_mailbox_session_authenticated (MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+static int mn_pop3_mailbox_session_check_mail (MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static void mn_pop3_mailbox_session_set_error_from_arguments (MNClientSessionPrivate * priv, MNClientSessionResponse * response) G_GNUC_UNUSED;
+static void mn_pop3_mailbox_handle_list_response (MNClientSessionPrivate * priv, MNClientSessionResponse * response) G_GNUC_UNUSED;
 
 /* pointer to the class of our parent */
 static MNMailboxClass *parent_class = NULL;
@@ -157,6 +177,10 @@ static MNMailboxClass *parent_class = NULL;
 #define self_handle_user_cb mn_pop3_mailbox_handle_user_cb
 #define self_enter_pass_cb mn_pop3_mailbox_enter_pass_cb
 #define self_handle_pass_cb mn_pop3_mailbox_handle_pass_cb
+#define self_enter_list_cb mn_pop3_mailbox_enter_list_cb
+#define self_handle_list_cb mn_pop3_mailbox_handle_list_cb
+#define self_enter_retr_cb mn_pop3_mailbox_enter_retr_cb
+#define self_handle_retr_cb mn_pop3_mailbox_handle_retr_cb
 #define self_enter_stat_cb mn_pop3_mailbox_enter_stat_cb
 #define self_handle_stat_cb mn_pop3_mailbox_handle_stat_cb
 #define self_enter_quit_cb mn_pop3_mailbox_enter_quit_cb
@@ -168,7 +192,9 @@ static MNMailboxClass *parent_class = NULL;
 #define self_session_authenticate mn_pop3_mailbox_session_authenticate
 #define self_session_authenticate_fallback mn_pop3_mailbox_session_authenticate_fallback
 #define self_session_authenticated mn_pop3_mailbox_session_authenticated
+#define self_session_check_mail mn_pop3_mailbox_session_check_mail
 #define self_session_set_error_from_arguments mn_pop3_mailbox_session_set_error_from_arguments
+#define self_handle_list_response mn_pop3_mailbox_handle_list_response
 GType
 mn_pop3_mailbox_get_type (void)
 {
@@ -216,11 +242,13 @@ static void
 ___finalize(GObject *obj_self)
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::finalize"
-	MNPOP3Mailbox *self  G_GNUC_UNUSED = MN_POP3_MAILBOX (obj_self);
-	gpointer priv = self->_priv;
+	MNPOP3Mailbox *self G_GNUC_UNUSED = MN_POP3_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);
-	g_free (priv);
+#line 123 "mn-pop3-mailbox.gob"
+	if(self->_priv->authentication_timer) { g_timer_destroy ((gpointer) self->_priv->authentication_timer); self->_priv->authentication_timer = NULL; }
+#line 252 "mn-pop3-mailbox.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -228,44 +256,46 @@ static void
 mn_pop3_mailbox_init (MNPOP3Mailbox * o G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::init"
-	o->_priv = g_new0 (MNPOP3MailboxPrivate, 1);
+	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,TYPE_SELF,MNPOP3MailboxPrivate);
 }
 #undef __GOB_FUNCTION__
-#line 109 "mn-pop3-mailbox.gob"
+#line 125 "mn-pop3-mailbox.gob"
 static void 
 mn_pop3_mailbox_class_init (MNPOP3MailboxClass * class G_GNUC_UNUSED)
-#line 238 "mn-pop3-mailbox.c"
+#line 266 "mn-pop3-mailbox.c"
 {
 #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;
 
 	parent_class = g_type_class_ref (MN_TYPE_MAILBOX);
 
-#line 114 "mn-pop3-mailbox.gob"
+#line 130 "mn-pop3-mailbox.gob"
 	g_object_class->constructor = ___2_mn_pop3_mailbox_constructor;
-#line 131 "mn-pop3-mailbox.gob"
+#line 147 "mn-pop3-mailbox.gob"
 	mn_mailbox_class->impl_is = ___3_mn_pop3_mailbox_impl_is;
-#line 480 "mn-pop3-mailbox.gob"
-	mn_mailbox_class->impl_threaded_check = ___15_mn_pop3_mailbox_impl_threaded_check;
-#line 252 "mn-pop3-mailbox.c"
+#line 618 "mn-pop3-mailbox.gob"
+	mn_mailbox_class->impl_threaded_check = ___19_mn_pop3_mailbox_impl_threaded_check;
+#line 282 "mn-pop3-mailbox.c"
 	g_object_class->finalize = ___finalize;
  {
-#line 110 "mn-pop3-mailbox.gob"
+#line 126 "mn-pop3-mailbox.gob"
 
     MN_MAILBOX_CLASS(class)->format = "POP3";
   
-#line 259 "mn-pop3-mailbox.c"
+#line 289 "mn-pop3-mailbox.c"
  }
 }
 #undef __GOB_FUNCTION__
 
 
 
-#line 114 "mn-pop3-mailbox.gob"
+#line 130 "mn-pop3-mailbox.gob"
 static GObject * 
 ___2_mn_pop3_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_properties, GObjectConstructParam * construct_params)
-#line 269 "mn-pop3-mailbox.c"
+#line 299 "mn-pop3-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): \
@@ -273,7 +303,7 @@ ___2_mn_pop3_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_pr
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::constructor"
 {
-#line 116 "mn-pop3-mailbox.gob"
+#line 132 "mn-pop3-mailbox.gob"
 	
     GObject *object;
     MNMailbox *mailbox;
@@ -288,49 +318,49 @@ ___2_mn_pop3_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_pr
   
     return object;
   }}
-#line 292 "mn-pop3-mailbox.c"
+#line 322 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 131 "mn-pop3-mailbox.gob"
+#line 147 "mn-pop3-mailbox.gob"
 static gboolean 
 ___3_mn_pop3_mailbox_impl_is (MNMailbox * dummy G_GNUC_UNUSED, MNURI * uri)
-#line 299 "mn-pop3-mailbox.c"
+#line 329 "mn-pop3-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:POP3:Mailbox::impl_is"
-#line 131 "mn-pop3-mailbox.gob"
+#line 147 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (uri != NULL, (gboolean )0);
-#line 131 "mn-pop3-mailbox.gob"
+#line 147 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (MN_IS_URI (uri), (gboolean )0);
-#line 310 "mn-pop3-mailbox.c"
+#line 340 "mn-pop3-mailbox.c"
 {
-#line 133 "mn-pop3-mailbox.gob"
+#line 149 "mn-pop3-mailbox.gob"
 	
     return MN_URI_IS_POP(uri);
   }}
-#line 316 "mn-pop3-mailbox.c"
+#line 346 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 137 "mn-pop3-mailbox.gob"
+#line 153 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_greeting_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 323 "mn-pop3-mailbox.c"
+#line 353 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_greeting_cb"
-#line 137 "mn-pop3-mailbox.gob"
+#line 153 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 137 "mn-pop3-mailbox.gob"
+#line 153 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 137 "mn-pop3-mailbox.gob"
+#line 153 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 332 "mn-pop3-mailbox.c"
+#line 362 "mn-pop3-mailbox.c"
 {
-#line 141 "mn-pop3-mailbox.gob"
+#line 157 "mn-pop3-mailbox.gob"
 	
     priv->session = session;
     
@@ -357,49 +387,49 @@ mn_pop3_mailbox_handle_greeting_cb (MNClientSession * session, MNClientSessionRe
       default:			return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
       }
   }}
-#line 361 "mn-pop3-mailbox.c"
+#line 391 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 168 "mn-pop3-mailbox.gob"
+#line 184 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_enter_capa_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 367 "mn-pop3-mailbox.c"
+#line 397 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_capa_cb"
-#line 168 "mn-pop3-mailbox.gob"
+#line 184 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 168 "mn-pop3-mailbox.gob"
+#line 184 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 374 "mn-pop3-mailbox.c"
+#line 404 "mn-pop3-mailbox.c"
 {
-#line 171 "mn-pop3-mailbox.gob"
+#line 187 "mn-pop3-mailbox.gob"
 	
     return mn_client_session_write(session, "CAPA");
   }}
-#line 380 "mn-pop3-mailbox.c"
+#line 410 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 175 "mn-pop3-mailbox.gob"
+#line 191 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_capa_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 386 "mn-pop3-mailbox.c"
+#line 416 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_capa_cb"
-#line 175 "mn-pop3-mailbox.gob"
+#line 191 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 175 "mn-pop3-mailbox.gob"
+#line 191 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 175 "mn-pop3-mailbox.gob"
+#line 191 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 395 "mn-pop3-mailbox.c"
+#line 425 "mn-pop3-mailbox.c"
 {
-#line 179 "mn-pop3-mailbox.gob"
+#line 195 "mn-pop3-mailbox.gob"
 	
+    self_handle_list_response(priv, response);
+
     switch (response->type)
       {
       case RESPONSE_OK:
-	priv->in_list = TRUE;
-      
 	eel_g_slist_free_deep(priv->auth_mechanisms);
 	priv->auth_mechanisms = NULL;
 	priv->self->_priv->login_delay = 0;
@@ -412,9 +442,8 @@ mn_pop3_mailbox_handle_capa_cb (MNClientSession * session, MNClientSessionRespon
 	
       case RESPONSE_ERR:
       case RESPONSE_LIST_END:
-	priv->in_list = FALSE;
 	if (priv->authenticated)
-	  return STATE_STAT;
+	  return self_session_check_mail(priv);
 
 #ifdef WITH_SSL
 	if (MN_URI_IS_INBAND_SSL(priv->mailbox->uri)
@@ -476,26 +505,25 @@ mn_pop3_mailbox_handle_capa_cb (MNClientSession * session, MNClientSessionRespon
 	return MN_CLIENT_SESSION_RESULT_CONTINUE;
 	
       default:
-	priv->in_list = FALSE;
 	return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
       }
   }}
-#line 484 "mn-pop3-mailbox.c"
+#line 512 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 266 "mn-pop3-mailbox.gob"
+#line 280 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_enter_stls_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 490 "mn-pop3-mailbox.c"
+#line 518 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_stls_cb"
-#line 266 "mn-pop3-mailbox.gob"
+#line 280 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 266 "mn-pop3-mailbox.gob"
+#line 280 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 497 "mn-pop3-mailbox.c"
+#line 525 "mn-pop3-mailbox.c"
 {
-#line 269 "mn-pop3-mailbox.gob"
+#line 283 "mn-pop3-mailbox.gob"
 	
 #ifdef WITH_SSL
     return mn_client_session_write(session, "STLS");
@@ -503,24 +531,24 @@ mn_pop3_mailbox_enter_stls_cb (MNClientSession * session, MNClientSessionPrivate
     g_return_val_if_reached(0);
 #endif /* WITH_SSL */
   }}
-#line 507 "mn-pop3-mailbox.c"
+#line 535 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 277 "mn-pop3-mailbox.gob"
+#line 291 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_stls_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 513 "mn-pop3-mailbox.c"
+#line 541 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_stls_cb"
-#line 277 "mn-pop3-mailbox.gob"
+#line 291 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 277 "mn-pop3-mailbox.gob"
+#line 291 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 277 "mn-pop3-mailbox.gob"
+#line 291 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 522 "mn-pop3-mailbox.c"
+#line 550 "mn-pop3-mailbox.c"
 {
-#line 281 "mn-pop3-mailbox.gob"
+#line 295 "mn-pop3-mailbox.gob"
 	
 #ifdef WITH_SSL
     switch (response->type)
@@ -541,22 +569,22 @@ mn_pop3_mailbox_handle_stls_cb (MNClientSession * session, MNClientSessionRespon
     g_return_val_if_reached(0);
 #endif /* WITH_SSL */
   }}
-#line 545 "mn-pop3-mailbox.c"
+#line 573 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 302 "mn-pop3-mailbox.gob"
+#line 316 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_enter_auth_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 551 "mn-pop3-mailbox.c"
+#line 579 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_auth_cb"
-#line 302 "mn-pop3-mailbox.gob"
+#line 316 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 302 "mn-pop3-mailbox.gob"
+#line 316 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 558 "mn-pop3-mailbox.c"
+#line 586 "mn-pop3-mailbox.c"
 {
-#line 305 "mn-pop3-mailbox.gob"
+#line 319 "mn-pop3-mailbox.gob"
 	
 #ifdef WITH_SASL
     if (mn_client_session_sasl_authentication_start(priv->session,
@@ -571,24 +599,24 @@ mn_pop3_mailbox_enter_auth_cb (MNClientSession * session, MNClientSessionPrivate
     g_return_val_if_reached(0);
 #endif /* WITH_SASL */
   }}
-#line 575 "mn-pop3-mailbox.c"
+#line 603 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 320 "mn-pop3-mailbox.gob"
+#line 334 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_auth_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 581 "mn-pop3-mailbox.c"
+#line 609 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_auth_cb"
-#line 320 "mn-pop3-mailbox.gob"
+#line 334 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 320 "mn-pop3-mailbox.gob"
+#line 334 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 320 "mn-pop3-mailbox.gob"
+#line 334 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 590 "mn-pop3-mailbox.c"
+#line 618 "mn-pop3-mailbox.c"
 {
-#line 324 "mn-pop3-mailbox.gob"
+#line 338 "mn-pop3-mailbox.gob"
 	
 #ifdef WITH_SASL
     switch (response->type)
@@ -611,22 +639,22 @@ mn_pop3_mailbox_handle_auth_cb (MNClientSession * session, MNClientSessionRespon
     g_return_val_if_reached(0);
 #endif /* WITH_SASL */
   }}
-#line 615 "mn-pop3-mailbox.c"
+#line 643 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 347 "mn-pop3-mailbox.gob"
+#line 361 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_enter_apop_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 621 "mn-pop3-mailbox.c"
+#line 649 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_apop_cb"
-#line 347 "mn-pop3-mailbox.gob"
+#line 361 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 347 "mn-pop3-mailbox.gob"
+#line 361 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 628 "mn-pop3-mailbox.c"
+#line 656 "mn-pop3-mailbox.c"
 {
-#line 350 "mn-pop3-mailbox.gob"
+#line 364 "mn-pop3-mailbox.gob"
 	
     MNMD5Context context;
     char buf[33];
@@ -640,24 +668,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 644 "mn-pop3-mailbox.c"
+#line 672 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 364 "mn-pop3-mailbox.gob"
+#line 378 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_apop_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 650 "mn-pop3-mailbox.c"
+#line 678 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_apop_cb"
-#line 364 "mn-pop3-mailbox.gob"
+#line 378 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 364 "mn-pop3-mailbox.gob"
+#line 378 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 364 "mn-pop3-mailbox.gob"
+#line 378 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 659 "mn-pop3-mailbox.c"
+#line 687 "mn-pop3-mailbox.c"
 {
-#line 368 "mn-pop3-mailbox.gob"
+#line 382 "mn-pop3-mailbox.gob"
 	
     switch (response->type)
       {
@@ -671,43 +699,43 @@ mn_pop3_mailbox_handle_apop_cb (MNClientSession * session, MNClientSessionRespon
 	return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
       }
   }}
-#line 675 "mn-pop3-mailbox.c"
+#line 703 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 382 "mn-pop3-mailbox.gob"
+#line 396 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_enter_user_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 681 "mn-pop3-mailbox.c"
+#line 709 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_user_cb"
-#line 382 "mn-pop3-mailbox.gob"
+#line 396 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 382 "mn-pop3-mailbox.gob"
+#line 396 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 688 "mn-pop3-mailbox.c"
+#line 716 "mn-pop3-mailbox.c"
 {
-#line 385 "mn-pop3-mailbox.gob"
+#line 399 "mn-pop3-mailbox.gob"
 	
     return mn_client_session_write(session, "USER %s", priv->mailbox->uri->username);
   }}
-#line 694 "mn-pop3-mailbox.c"
+#line 722 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 389 "mn-pop3-mailbox.gob"
+#line 403 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_user_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 700 "mn-pop3-mailbox.c"
+#line 728 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_user_cb"
-#line 389 "mn-pop3-mailbox.gob"
+#line 403 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 389 "mn-pop3-mailbox.gob"
+#line 403 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 389 "mn-pop3-mailbox.gob"
+#line 403 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 709 "mn-pop3-mailbox.c"
+#line 737 "mn-pop3-mailbox.c"
 {
-#line 393 "mn-pop3-mailbox.gob"
+#line 407 "mn-pop3-mailbox.gob"
 	
     switch (response->type)
       {
@@ -716,43 +744,43 @@ mn_pop3_mailbox_handle_user_cb (MNClientSession * session, MNClientSessionRespon
       default:			return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
       }
   }}
-#line 720 "mn-pop3-mailbox.c"
+#line 748 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 402 "mn-pop3-mailbox.gob"
+#line 416 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_enter_pass_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 726 "mn-pop3-mailbox.c"
+#line 754 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_pass_cb"
-#line 402 "mn-pop3-mailbox.gob"
+#line 416 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 402 "mn-pop3-mailbox.gob"
+#line 416 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 733 "mn-pop3-mailbox.c"
+#line 761 "mn-pop3-mailbox.c"
 {
-#line 405 "mn-pop3-mailbox.gob"
+#line 419 "mn-pop3-mailbox.gob"
 	
     return mn_client_session_write(session, "PASS %s", priv->mailbox->uri->password);
   }}
-#line 739 "mn-pop3-mailbox.c"
+#line 767 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 409 "mn-pop3-mailbox.gob"
+#line 423 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_pass_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 745 "mn-pop3-mailbox.c"
+#line 773 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_pass_cb"
-#line 409 "mn-pop3-mailbox.gob"
+#line 423 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 409 "mn-pop3-mailbox.gob"
+#line 423 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 409 "mn-pop3-mailbox.gob"
+#line 423 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 754 "mn-pop3-mailbox.c"
+#line 782 "mn-pop3-mailbox.c"
 {
-#line 413 "mn-pop3-mailbox.gob"
+#line 427 "mn-pop3-mailbox.gob"
 	
     switch (response->type)
       {
@@ -761,44 +789,215 @@ mn_pop3_mailbox_handle_pass_cb (MNClientSession * session, MNClientSessionRespon
       default:			return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
       }
   }}
-#line 765 "mn-pop3-mailbox.c"
+#line 793 "mn-pop3-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 436 "mn-pop3-mailbox.gob"
+static int 
+mn_pop3_mailbox_enter_list_cb (MNClientSession * session, MNClientSessionPrivate * priv)
+#line 799 "mn-pop3-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_list_cb"
+#line 436 "mn-pop3-mailbox.gob"
+	g_return_val_if_fail (session != NULL, (int )0);
+#line 436 "mn-pop3-mailbox.gob"
+	g_return_val_if_fail (priv != NULL, (int )0);
+#line 806 "mn-pop3-mailbox.c"
+{
+#line 439 "mn-pop3-mailbox.gob"
+	
+#ifdef WITH_MIME
+    return mn_client_session_write(session, "LIST");
+#else
+    g_return_val_if_reached(0);
+#endif
+  }}
+#line 816 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 422 "mn-pop3-mailbox.gob"
+#line 447 "mn-pop3-mailbox.gob"
+static int 
+mn_pop3_mailbox_handle_list_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
+#line 822 "mn-pop3-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_list_cb"
+#line 447 "mn-pop3-mailbox.gob"
+	g_return_val_if_fail (session != NULL, (int )0);
+#line 447 "mn-pop3-mailbox.gob"
+	g_return_val_if_fail (response != NULL, (int )0);
+#line 447 "mn-pop3-mailbox.gob"
+	g_return_val_if_fail (priv != NULL, (int )0);
+#line 831 "mn-pop3-mailbox.c"
+{
+#line 451 "mn-pop3-mailbox.gob"
+	
+#ifdef WITH_MIME
+    self_handle_list_response(priv, response);
+
+    switch (response->type)
+      {
+      case RESPONSE_OK:
+	return MN_CLIENT_SESSION_RESULT_CONTINUE;
+
+      case RESPONSE_LIST_END:
+	priv->current_message_number = priv->message_numbers;
+	return STATE_RETR;
+
+      case RESPONSE_ERR:
+	return RESULT_ERROR_END;
+
+      case RESPONSE_LIST_ITEM:
+	{
+	  int num;
+	  int size;
+	  
+	  if (sscanf(response->arguments, "%d %d", &num, &size) == 2)
+	    priv->message_numbers = g_slist_append(priv->message_numbers, GINT_TO_POINTER(num));
+	  else			/* compliance error */
+	    return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+	}
+	return MN_CLIENT_SESSION_RESULT_CONTINUE;
+	
+      default:
+	return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+      }
+#else /* WITH_MIME */
+    g_return_val_if_reached(0);
+#endif
+  }}
+#line 869 "mn-pop3-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 487 "mn-pop3-mailbox.gob"
+static int 
+mn_pop3_mailbox_enter_retr_cb (MNClientSession * session, MNClientSessionPrivate * priv)
+#line 875 "mn-pop3-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_retr_cb"
+#line 487 "mn-pop3-mailbox.gob"
+	g_return_val_if_fail (session != NULL, (int )0);
+#line 487 "mn-pop3-mailbox.gob"
+	g_return_val_if_fail (priv != NULL, (int )0);
+#line 882 "mn-pop3-mailbox.c"
+{
+#line 490 "mn-pop3-mailbox.gob"
+	
+#ifdef WITH_MIME
+    if (priv->current_message_number)
+      return mn_client_session_write(session, "RETR %i", GPOINTER_TO_INT(priv->current_message_number->data));
+    else
+      {
+	GDK_THREADS_ENTER();
+	mn_mailbox_set_has_new(priv->mailbox, priv->messages != NULL);
+	mn_mailbox_set_messages(priv->mailbox, priv->messages);
+	gdk_flush();
+	GDK_THREADS_LEAVE();
+	
+	return STATE_QUIT;
+      }
+#else
+    g_return_val_if_reached(0);
+#endif
+  }}
+#line 903 "mn-pop3-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 509 "mn-pop3-mailbox.gob"
+static int 
+mn_pop3_mailbox_handle_retr_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
+#line 909 "mn-pop3-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_retr_cb"
+#line 509 "mn-pop3-mailbox.gob"
+	g_return_val_if_fail (session != NULL, (int )0);
+#line 509 "mn-pop3-mailbox.gob"
+	g_return_val_if_fail (response != NULL, (int )0);
+#line 509 "mn-pop3-mailbox.gob"
+	g_return_val_if_fail (priv != NULL, (int )0);
+#line 918 "mn-pop3-mailbox.c"
+{
+#line 513 "mn-pop3-mailbox.gob"
+	
+#ifdef WITH_MIME
+    self_handle_list_response(priv, response);
+
+    switch (response->type)
+      {
+      case RESPONSE_OK:
+	if (priv->current_message)
+	  g_string_free(priv->current_message, TRUE);
+	priv->current_message = g_string_new(NULL);
+	return MN_CLIENT_SESSION_RESULT_CONTINUE;
+
+      case RESPONSE_LIST_END:
+	priv->messages = g_slist_append(priv->messages,
+					mn_message_new_from_buffer(priv->mailbox->uri,
+								   priv->current_message->str,
+								   priv->current_message->len));
+	priv->current_message_number = priv->current_message_number->next;
+	return STATE_RETR;
+
+      case RESPONSE_ERR:
+	priv->messages = g_slist_append(priv->messages,
+					mn_message_new_from_error(priv->mailbox->uri,
+								  response->arguments ? response->arguments : _("unknown error")));
+	priv->current_message_number = priv->current_message_number->next;
+	return STATE_RETR;
+
+      case RESPONSE_LIST_ITEM:
+	g_string_append_printf(priv->current_message, "%s\n", response->arguments);
+	return MN_CLIENT_SESSION_RESULT_CONTINUE;
+
+      default:
+	return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+      }
+#else
+    g_return_val_if_reached(0);
+#endif
+  }}
+#line 959 "mn-pop3-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 552 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_enter_stat_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 771 "mn-pop3-mailbox.c"
+#line 965 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_stat_cb"
-#line 422 "mn-pop3-mailbox.gob"
+#line 552 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 422 "mn-pop3-mailbox.gob"
+#line 552 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 778 "mn-pop3-mailbox.c"
+#line 972 "mn-pop3-mailbox.c"
 {
-#line 425 "mn-pop3-mailbox.gob"
+#line 555 "mn-pop3-mailbox.gob"
 	
+#ifndef WITH_MIME
     return mn_client_session_write(session, "STAT");
+#else
+    g_return_val_if_reached(0);
+#endif
   }}
-#line 784 "mn-pop3-mailbox.c"
+#line 982 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 429 "mn-pop3-mailbox.gob"
+#line 563 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_stat_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 790 "mn-pop3-mailbox.c"
+#line 988 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_stat_cb"
-#line 429 "mn-pop3-mailbox.gob"
+#line 563 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 429 "mn-pop3-mailbox.gob"
+#line 563 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 429 "mn-pop3-mailbox.gob"
+#line 563 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 799 "mn-pop3-mailbox.c"
+#line 997 "mn-pop3-mailbox.c"
 {
-#line 433 "mn-pop3-mailbox.gob"
+#line 567 "mn-pop3-mailbox.gob"
 	
+#ifndef WITH_MIME
     switch (response->type)
       {
       case RESPONSE_OK:
@@ -823,44 +1022,47 @@ mn_pop3_mailbox_handle_stat_cb (MNClientSession * session, MNClientSessionRespon
       case RESPONSE_ERR:	return RESULT_ERROR_QUIT;
       default:			return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
       }
+#else /* ! WITH_MIME */
+    g_return_val_if_reached(0);
+#endif
   }}
-#line 828 "mn-pop3-mailbox.c"
+#line 1030 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 460 "mn-pop3-mailbox.gob"
+#line 598 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_enter_quit_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 834 "mn-pop3-mailbox.c"
+#line 1036 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_quit_cb"
-#line 460 "mn-pop3-mailbox.gob"
+#line 598 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 460 "mn-pop3-mailbox.gob"
+#line 598 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 841 "mn-pop3-mailbox.c"
+#line 1043 "mn-pop3-mailbox.c"
 {
-#line 463 "mn-pop3-mailbox.gob"
+#line 601 "mn-pop3-mailbox.gob"
 	
     return mn_client_session_write(session, "QUIT");
   }}
-#line 847 "mn-pop3-mailbox.c"
+#line 1049 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 467 "mn-pop3-mailbox.gob"
+#line 605 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_quit_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 853 "mn-pop3-mailbox.c"
+#line 1055 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_quit_cb"
-#line 467 "mn-pop3-mailbox.gob"
+#line 605 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 467 "mn-pop3-mailbox.gob"
+#line 605 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 467 "mn-pop3-mailbox.gob"
+#line 605 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 862 "mn-pop3-mailbox.c"
+#line 1064 "mn-pop3-mailbox.c"
 {
-#line 471 "mn-pop3-mailbox.gob"
+#line 609 "mn-pop3-mailbox.gob"
 	
     switch (response->type)
       {
@@ -869,25 +1071,25 @@ mn_pop3_mailbox_handle_quit_cb (MNClientSession * session, MNClientSessionRespon
       default:			return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
       }
   }}
-#line 873 "mn-pop3-mailbox.c"
+#line 1075 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 480 "mn-pop3-mailbox.gob"
+#line 618 "mn-pop3-mailbox.gob"
 static void 
-___15_mn_pop3_mailbox_impl_threaded_check (MNMailbox * mailbox G_GNUC_UNUSED)
-#line 879 "mn-pop3-mailbox.c"
+___19_mn_pop3_mailbox_impl_threaded_check (MNMailbox * mailbox G_GNUC_UNUSED)
+#line 1081 "mn-pop3-mailbox.c"
 #define PARENT_HANDLER(___mailbox) \
 	{ if(MN_MAILBOX_CLASS(parent_class)->impl_threaded_check) \
 		(* MN_MAILBOX_CLASS(parent_class)->impl_threaded_check)(___mailbox); }
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::impl_threaded_check"
-#line 480 "mn-pop3-mailbox.gob"
+#line 618 "mn-pop3-mailbox.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 480 "mn-pop3-mailbox.gob"
+#line 618 "mn-pop3-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 889 "mn-pop3-mailbox.c"
+#line 1091 "mn-pop3-mailbox.c"
 {
-#line 482 "mn-pop3-mailbox.gob"
+#line 620 "mn-pop3-mailbox.gob"
 	
     Self *self = SELF(mailbox);
     MNClientSessionState states[] = {
@@ -902,7 +1104,12 @@ ___15_mn_pop3_mailbox_impl_threaded_check (MNMailbox * mailbox G_GNUC_UNUSED)
       { STATE_APOP,		self_enter_apop_cb,	self_handle_apop_cb },
       { STATE_USER,		self_enter_user_cb,	self_handle_user_cb },
       { STATE_PASS,		self_enter_pass_cb,	self_handle_pass_cb },
+#ifdef WITH_MIME
+      { STATE_LIST,		self_enter_list_cb,	self_handle_list_cb },
+      { STATE_RETR,		self_enter_retr_cb,	self_handle_retr_cb },
+#else /* WITH_MIME */
       { STATE_STAT,		self_enter_stat_cb,	self_handle_stat_cb },
+#endif
       { STATE_QUIT,		self_enter_quit_cb,	self_handle_quit_cb },
       
       MN_CLIENT_SESSION_STATES_END
@@ -967,47 +1174,53 @@ ___15_mn_pop3_mailbox_impl_threaded_check (MNMailbox * mailbox G_GNUC_UNUSED)
 
     g_free(priv.apop_timestamp);
     eel_g_slist_free_deep(priv.auth_mechanisms);
+#ifdef WITH_MIME
+    g_slist_free(priv.message_numbers);
+    mn_g_object_slist_free(priv.messages);
+    if (priv.current_message)
+      g_string_free(priv.current_message, TRUE);
+#endif
   }}
-#line 972 "mn-pop3-mailbox.c"
+#line 1185 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 563 "mn-pop3-mailbox.gob"
+#line 712 "mn-pop3-mailbox.gob"
 static void 
 mn_pop3_mailbox_notice_cb (MNClientSession * session, const char * str, MNClientSessionPrivate * priv)
-#line 979 "mn-pop3-mailbox.c"
+#line 1192 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::notice_cb"
-#line 563 "mn-pop3-mailbox.gob"
+#line 712 "mn-pop3-mailbox.gob"
 	g_return_if_fail (session != NULL);
-#line 563 "mn-pop3-mailbox.gob"
+#line 712 "mn-pop3-mailbox.gob"
 	g_return_if_fail (str != NULL);
-#line 563 "mn-pop3-mailbox.gob"
+#line 712 "mn-pop3-mailbox.gob"
 	g_return_if_fail (priv != NULL);
-#line 988 "mn-pop3-mailbox.c"
+#line 1201 "mn-pop3-mailbox.c"
 {
-#line 567 "mn-pop3-mailbox.gob"
+#line 716 "mn-pop3-mailbox.gob"
 	
     mn_mailbox_notice(priv->mailbox, "%s", str);
   }}
-#line 994 "mn-pop3-mailbox.c"
+#line 1207 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 571 "mn-pop3-mailbox.gob"
+#line 720 "mn-pop3-mailbox.gob"
 static MNClientSessionResponse * 
 mn_pop3_mailbox_response_new_cb (MNClientSession * session, const char * input, MNClientSessionPrivate * priv)
-#line 1000 "mn-pop3-mailbox.c"
+#line 1213 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::response_new_cb"
-#line 571 "mn-pop3-mailbox.gob"
+#line 720 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (MNClientSessionResponse * )0);
-#line 571 "mn-pop3-mailbox.gob"
+#line 720 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (input != NULL, (MNClientSessionResponse * )0);
-#line 571 "mn-pop3-mailbox.gob"
+#line 720 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (MNClientSessionResponse * )0);
-#line 1009 "mn-pop3-mailbox.c"
+#line 1222 "mn-pop3-mailbox.c"
 {
-#line 575 "mn-pop3-mailbox.gob"
+#line 724 "mn-pop3-mailbox.gob"
 	
     MNClientSessionResponse *response = NULL;
 
@@ -1066,46 +1279,46 @@ mn_pop3_mailbox_response_new_cb (MNClientSession * session, const char * input, 
     
     return response;
   }}
-#line 1070 "mn-pop3-mailbox.c"
+#line 1283 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 634 "mn-pop3-mailbox.gob"
+#line 783 "mn-pop3-mailbox.gob"
 static void 
 mn_pop3_mailbox_response_free_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 1076 "mn-pop3-mailbox.c"
+#line 1289 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::response_free_cb"
-#line 634 "mn-pop3-mailbox.gob"
+#line 783 "mn-pop3-mailbox.gob"
 	g_return_if_fail (session != NULL);
-#line 634 "mn-pop3-mailbox.gob"
+#line 783 "mn-pop3-mailbox.gob"
 	g_return_if_fail (response != NULL);
-#line 634 "mn-pop3-mailbox.gob"
+#line 783 "mn-pop3-mailbox.gob"
 	g_return_if_fail (priv != NULL);
-#line 1085 "mn-pop3-mailbox.c"
+#line 1298 "mn-pop3-mailbox.c"
 {
-#line 638 "mn-pop3-mailbox.gob"
+#line 787 "mn-pop3-mailbox.gob"
 	
     g_free(response->arguments);
     g_free(response);
   }}
-#line 1092 "mn-pop3-mailbox.c"
+#line 1305 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 643 "mn-pop3-mailbox.gob"
+#line 792 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_custom_handler_cb (MNClientSession * session, MNClientSessionResponse * response, int result, MNClientSessionPrivate * priv)
-#line 1098 "mn-pop3-mailbox.c"
+#line 1311 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::custom_handler_cb"
-#line 643 "mn-pop3-mailbox.gob"
+#line 792 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 643 "mn-pop3-mailbox.gob"
+#line 792 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 643 "mn-pop3-mailbox.gob"
+#line 792 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1107 "mn-pop3-mailbox.c"
+#line 1320 "mn-pop3-mailbox.c"
 {
-#line 648 "mn-pop3-mailbox.gob"
+#line 797 "mn-pop3-mailbox.gob"
 	
     switch (result)
       {
@@ -1121,20 +1334,20 @@ mn_pop3_mailbox_custom_handler_cb (MNClientSession * session, MNClientSessionRes
       g_return_val_if_reached(0);
       }
   }}
-#line 1125 "mn-pop3-mailbox.c"
+#line 1338 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 664 "mn-pop3-mailbox.gob"
+#line 813 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_session_authenticate (MNClientSessionPrivate * priv)
-#line 1131 "mn-pop3-mailbox.c"
+#line 1344 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::session_authenticate"
-#line 664 "mn-pop3-mailbox.gob"
+#line 813 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1136 "mn-pop3-mailbox.c"
+#line 1349 "mn-pop3-mailbox.c"
 {
-#line 666 "mn-pop3-mailbox.gob"
+#line 815 "mn-pop3-mailbox.gob"
 	
     if (priv->mailbox->uri->authmech)
       {
@@ -1170,20 +1383,20 @@ mn_pop3_mailbox_session_authenticate (MNClientSessionPrivate * priv)
 	  return STATE_USER;
       }
   }}
-#line 1174 "mn-pop3-mailbox.c"
+#line 1387 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 702 "mn-pop3-mailbox.gob"
+#line 851 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv, gboolean tried_apop)
-#line 1180 "mn-pop3-mailbox.c"
+#line 1393 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::session_authenticate_fallback"
-#line 702 "mn-pop3-mailbox.gob"
+#line 851 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1185 "mn-pop3-mailbox.c"
+#line 1398 "mn-pop3-mailbox.c"
 {
-#line 705 "mn-pop3-mailbox.gob"
+#line 854 "mn-pop3-mailbox.gob"
 	
     if (! priv->mailbox->uri->authmech)
       {
@@ -1201,20 +1414,20 @@ mn_pop3_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv, gb
 
     return mn_client_session_error(priv->session, _("authentication failed"));
   }}
-#line 1205 "mn-pop3-mailbox.c"
+#line 1418 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 723 "mn-pop3-mailbox.gob"
+#line 872 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_session_authenticated (MNClientSessionPrivate * priv)
-#line 1211 "mn-pop3-mailbox.c"
+#line 1424 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::session_authenticated"
-#line 723 "mn-pop3-mailbox.gob"
+#line 872 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1216 "mn-pop3-mailbox.c"
+#line 1429 "mn-pop3-mailbox.c"
 {
-#line 725 "mn-pop3-mailbox.gob"
+#line 874 "mn-pop3-mailbox.gob"
 	
     priv->authenticated = TRUE;
     if (priv->self->_priv->login_delay)
@@ -1224,29 +1437,81 @@ mn_pop3_mailbox_session_authenticated (MNClientSessionPrivate * priv)
 	else
 	  priv->self->_priv->authentication_timer = g_timer_new();
       }
-    return priv->login_delay_user ? STATE_CAPA : STATE_STAT;
+    return priv->login_delay_user ? STATE_CAPA : self_session_check_mail(priv);
+  }}
+#line 1443 "mn-pop3-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 886 "mn-pop3-mailbox.gob"
+static int 
+mn_pop3_mailbox_session_check_mail (MNClientSessionPrivate * priv)
+#line 1449 "mn-pop3-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:POP3:Mailbox::session_check_mail"
+#line 886 "mn-pop3-mailbox.gob"
+	g_return_val_if_fail (priv != NULL, (int )0);
+#line 1454 "mn-pop3-mailbox.c"
+{
+#line 888 "mn-pop3-mailbox.gob"
+	
+#ifdef WITH_MIME
+    return STATE_LIST;
+#else
+    return STATE_STAT;
+#endif
   }}
-#line 1230 "mn-pop3-mailbox.c"
+#line 1464 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 737 "mn-pop3-mailbox.gob"
+#line 896 "mn-pop3-mailbox.gob"
 static void 
 mn_pop3_mailbox_session_set_error_from_arguments (MNClientSessionPrivate * priv, MNClientSessionResponse * response)
-#line 1236 "mn-pop3-mailbox.c"
+#line 1470 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::session_set_error_from_arguments"
-#line 737 "mn-pop3-mailbox.gob"
+#line 896 "mn-pop3-mailbox.gob"
 	g_return_if_fail (priv != NULL);
-#line 737 "mn-pop3-mailbox.gob"
+#line 896 "mn-pop3-mailbox.gob"
 	g_return_if_fail (response != NULL);
-#line 1243 "mn-pop3-mailbox.c"
+#line 1477 "mn-pop3-mailbox.c"
 {
-#line 740 "mn-pop3-mailbox.gob"
+#line 899 "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 1252 "mn-pop3-mailbox.c"
+#line 1486 "mn-pop3-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 906 "mn-pop3-mailbox.gob"
+static void 
+mn_pop3_mailbox_handle_list_response (MNClientSessionPrivate * priv, MNClientSessionResponse * response)
+#line 1492 "mn-pop3-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_list_response"
+#line 906 "mn-pop3-mailbox.gob"
+	g_return_if_fail (priv != NULL);
+#line 906 "mn-pop3-mailbox.gob"
+	g_return_if_fail (response != NULL);
+#line 1499 "mn-pop3-mailbox.c"
+{
+#line 909 "mn-pop3-mailbox.gob"
+	
+    switch (response->type)
+      {
+      case RESPONSE_OK:
+	priv->in_list = TRUE;
+	break;
+
+      case RESPONSE_LIST_ITEM:	/* nop */
+	break;
+
+      default:
+	priv->in_list = FALSE;
+	break;
+      }
+  }}
+#line 1517 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-pop3-mailbox.gob b/src/mn-pop3-mailbox.gob
@@ -25,6 +25,8 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+requires 2.0.10
+
 %headertop{
 #include "mn-mailbox.h"
 %}
@@ -42,6 +44,9 @@
 #include "mn-client-session.h"
 #include "mn-util.h"
 #include "mn-md5.h"
+#ifdef WITH_MIME
+#include "mn-message-mime.h"
+#endif
 
   enum
   {
@@ -56,7 +61,12 @@
     STATE_APOP,
     STATE_USER,
     STATE_PASS,
+#ifdef WITH_MIME
+    STATE_LIST,
+    STATE_RETR,
+#else /* WITH_MIME */
     STATE_STAT,
+#endif
     STATE_QUIT
   };
 
@@ -83,6 +93,12 @@
 #endif
     gboolean		authenticated;
     gboolean		login_delay_user;
+#ifdef WITH_MIME
+    GSList		*message_numbers;
+    GSList		*current_message_number;
+    GSList		*messages;
+    GString		*current_message;
+#endif
   };
 
   typedef enum
@@ -104,7 +120,7 @@
 class MN:POP3:Mailbox from MN:Mailbox
 {
   private int login_delay;
-  private GTimer *authentication_timer;
+  private GTimer *authentication_timer destroywith g_timer_destroy;
 
   class_init (class)
   {
@@ -177,11 +193,11 @@ class MN:POP3:Mailbox from MN:Mailbox
 		    MNClientSessionResponse *response (check null),
 		    MNClientSessionPrivate *priv (check null))
   {
+    self_handle_list_response(priv, response);
+
     switch (response->type)
       {
       case RESPONSE_OK:
-	priv->in_list = TRUE;
-      
 	eel_g_slist_free_deep(priv->auth_mechanisms);
 	priv->auth_mechanisms = NULL;
 	priv->self->_priv->login_delay = 0;
@@ -194,9 +210,8 @@ class MN:POP3:Mailbox from MN:Mailbox
 	
       case RESPONSE_ERR:
       case RESPONSE_LIST_END:
-	priv->in_list = FALSE;
 	if (priv->authenticated)
-	  return STATE_STAT;
+	  return self_session_check_mail(priv);
 
 #ifdef WITH_SSL
 	if (MN_URI_IS_INBAND_SSL(priv->mailbox->uri)
@@ -258,7 +273,6 @@ class MN:POP3:Mailbox from MN:Mailbox
 	return MN_CLIENT_SESSION_RESULT_CONTINUE;
 	
       default:
-	priv->in_list = FALSE;
 	return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
       }
   }
@@ -420,10 +434,130 @@ class MN:POP3:Mailbox from MN:Mailbox
   }
 
   private int
+    enter_list_cb (MNClientSession *session (check null),
+		   MNClientSessionPrivate *priv (check null))
+  {
+#ifdef WITH_MIME
+    return mn_client_session_write(session, "LIST");
+#else
+    g_return_val_if_reached(0);
+#endif
+  }
+
+  private int
+    handle_list_cb (MNClientSession *session (check null),
+		    MNClientSessionResponse *response (check null),
+		    MNClientSessionPrivate *priv (check null))
+  {
+#ifdef WITH_MIME
+    self_handle_list_response(priv, response);
+
+    switch (response->type)
+      {
+      case RESPONSE_OK:
+	return MN_CLIENT_SESSION_RESULT_CONTINUE;
+
+      case RESPONSE_LIST_END:
+	priv->current_message_number = priv->message_numbers;
+	return STATE_RETR;
+
+      case RESPONSE_ERR:
+	return RESULT_ERROR_END;
+
+      case RESPONSE_LIST_ITEM:
+	{
+	  int num;
+	  int size;
+	  
+	  if (sscanf(response->arguments, "%d %d", &num, &size) == 2)
+	    priv->message_numbers = g_slist_append(priv->message_numbers, GINT_TO_POINTER(num));
+	  else			/* compliance error */
+	    return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+	}
+	return MN_CLIENT_SESSION_RESULT_CONTINUE;
+	
+      default:
+	return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+      }
+#else /* WITH_MIME */
+    g_return_val_if_reached(0);
+#endif
+  }
+  
+  private int
+    enter_retr_cb (MNClientSession *session (check null),
+		   MNClientSessionPrivate *priv (check null))
+  {
+#ifdef WITH_MIME
+    if (priv->current_message_number)
+      return mn_client_session_write(session, "RETR %i", GPOINTER_TO_INT(priv->current_message_number->data));
+    else
+      {
+	GDK_THREADS_ENTER();
+	mn_mailbox_set_has_new(priv->mailbox, priv->messages != NULL);
+	mn_mailbox_set_messages(priv->mailbox, priv->messages);
+	gdk_flush();
+	GDK_THREADS_LEAVE();
+	
+	return STATE_QUIT;
+      }
+#else
+    g_return_val_if_reached(0);
+#endif
+  }
+
+  private int
+    handle_retr_cb (MNClientSession *session (check null),
+		    MNClientSessionResponse *response (check null),
+		    MNClientSessionPrivate *priv (check null))
+  {
+#ifdef WITH_MIME
+    self_handle_list_response(priv, response);
+
+    switch (response->type)
+      {
+      case RESPONSE_OK:
+	if (priv->current_message)
+	  g_string_free(priv->current_message, TRUE);
+	priv->current_message = g_string_new(NULL);
+	return MN_CLIENT_SESSION_RESULT_CONTINUE;
+
+      case RESPONSE_LIST_END:
+	priv->messages = g_slist_append(priv->messages,
+					mn_message_new_from_buffer(priv->mailbox->uri,
+								   priv->current_message->str,
+								   priv->current_message->len));
+	priv->current_message_number = priv->current_message_number->next;
+	return STATE_RETR;
+
+      case RESPONSE_ERR:
+	priv->messages = g_slist_append(priv->messages,
+					mn_message_new_from_error(priv->mailbox->uri,
+								  response->arguments ? response->arguments : _("unknown error")));
+	priv->current_message_number = priv->current_message_number->next;
+	return STATE_RETR;
+
+      case RESPONSE_LIST_ITEM:
+	g_string_append_printf(priv->current_message, "%s\n", response->arguments);
+	return MN_CLIENT_SESSION_RESULT_CONTINUE;
+
+      default:
+	return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+      }
+#else
+    g_return_val_if_reached(0);
+#endif
+  }
+  
+  private int
     enter_stat_cb (MNClientSession *session (check null),
 		   MNClientSessionPrivate *priv (check null))
   {
+#ifndef WITH_MIME
     return mn_client_session_write(session, "STAT");
+#else
+    g_return_val_if_reached(0);
+#endif
   }
 
   private int
@@ -431,6 +565,7 @@ class MN:POP3:Mailbox from MN:Mailbox
 		    MNClientSessionResponse *response (check null),
 		    MNClientSessionPrivate *priv (check null))
   {
+#ifndef WITH_MIME
     switch (response->type)
       {
       case RESPONSE_OK:
@@ -455,6 +590,9 @@ class MN:POP3:Mailbox from MN:Mailbox
       case RESPONSE_ERR:	return RESULT_ERROR_QUIT;
       default:			return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
       }
+#else /* ! WITH_MIME */
+    g_return_val_if_reached(0);
+#endif
   }
 
   private int
@@ -493,7 +631,12 @@ class MN:POP3:Mailbox from MN:Mailbox
       { STATE_APOP,		self_enter_apop_cb,	self_handle_apop_cb },
       { STATE_USER,		self_enter_user_cb,	self_handle_user_cb },
       { STATE_PASS,		self_enter_pass_cb,	self_handle_pass_cb },
+#ifdef WITH_MIME
+      { STATE_LIST,		self_enter_list_cb,	self_handle_list_cb },
+      { STATE_RETR,		self_enter_retr_cb,	self_handle_retr_cb },
+#else /* WITH_MIME */
       { STATE_STAT,		self_enter_stat_cb,	self_handle_stat_cb },
+#endif
       { STATE_QUIT,		self_enter_quit_cb,	self_handle_quit_cb },
       
       MN_CLIENT_SESSION_STATES_END
@@ -558,6 +701,12 @@ class MN:POP3:Mailbox from MN:Mailbox
 
     g_free(priv.apop_timestamp);
     eel_g_slist_free_deep(priv.auth_mechanisms);
+#ifdef WITH_MIME
+    g_slist_free(priv.message_numbers);
+    mn_g_object_slist_free(priv.messages);
+    if (priv.current_message)
+      g_string_free(priv.current_message, TRUE);
+#endif
   }
 
   private void
@@ -731,9 +880,19 @@ class MN:POP3:Mailbox from MN:Mailbox
 	else
 	  priv->self->_priv->authentication_timer = g_timer_new();
       }
-    return priv->login_delay_user ? STATE_CAPA : STATE_STAT;
+    return priv->login_delay_user ? STATE_CAPA : self_session_check_mail(priv);
   }
 
+  private int
+    session_check_mail (MNClientSessionPrivate *priv (check null))
+  {
+#ifdef WITH_MIME
+    return STATE_LIST;
+#else
+    return STATE_STAT;
+#endif
+  }
+  
   private void
     session_set_error_from_arguments (MNClientSessionPrivate *priv (check null),
 				      MNClientSessionResponse *response (check null))
@@ -743,4 +902,23 @@ class MN:POP3:Mailbox from MN:Mailbox
     else
       mn_client_session_error(priv->session, _("unknown server error"));
   }
+
+  private void
+    handle_list_response (MNClientSessionPrivate *priv (check null),
+			  MNClientSessionResponse *response (check null))
+  {
+    switch (response->type)
+      {
+      case RESPONSE_OK:
+	priv->in_list = TRUE;
+	break;
+
+      case RESPONSE_LIST_ITEM:	/* nop */
+	break;
+
+      default:
+	priv->in_list = FALSE;
+	break;
+      }
+  }
 }
diff --git a/src/mn-pop3-mailbox.h b/src/mn-pop3-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-properties.c b/src/mn-properties.c
@@ -19,6 +19,7 @@
 #include "config.h"
 #include <glib/gi18n-lib.h>
 #include <gtk/gtk.h>
+#include <eel/eel.h>
 #include "mn-conf.h"
 #include "mn-properties.h"
 #include "mn-util.h"
@@ -30,42 +31,62 @@
 typedef struct
 {
   GtkWidget		*dialog;
+  GtkWidget		*notebook;
 
-  GtkWidget		*delay_label;
-  GtkWidget		*minutes_spin;
-  GtkWidget		*seconds_spin;
-
+  /* general tab */
   GtkWidget		*autostart_check;
   GtkWidget		*blink_check;
+  GtkWidget		*command_new_mail_check;
+  GtkWidget		*command_new_mail_entry;
 
+  /* mailboxes tab */
+  GtkWidget		*delay_label;
+  GtkWidget		*minutes_spin;
+  GtkWidget		*seconds_spin;
   GtkWidget		*scrolled;
   GtkWidget		*list;
   GtkWidget		*selected_label;
   GtkWidget		*remove;
   GtkWidget		*properties;
 
-  GtkWidget		*command_new_mail_check;
-  GtkWidget		*command_new_mail_entry;
-  GtkWidget		*command_double_clicked_check;
-  GtkWidget		*command_double_clicked_entry;
+  /* mail summary popup tab */
+  GtkWidget		*summary_enable_check;
+  GtkWidget		*summary_autoclose_check;
+  GtkWidget		*summary_minutes_spin;
+  GtkWidget		*summary_minutes_label;
+  GtkWidget		*summary_seconds_spin;
+  GtkWidget		*summary_seconds_label;
+  GtkWidget		*summary_position_label;
+  GtkWidget		*summary_position_combo;
+  GtkWidget		*summary_horizontal_offset_label;
+  GtkWidget		*summary_horizontal_offset_spin;
+  GtkWidget		*summary_horizontal_pixels_label;
+  GtkWidget		*summary_vertical_offset_label;
+  GtkWidget		*summary_vertical_offset_spin;
+  GtkWidget		*summary_vertical_pixels_label;
 } PropertiesDialog;
 
+enum {
+  POSITION_COLUMN_NICK,
+  POSITION_COLUMN_LABEL,
+  POSITION_N_COLUMNS
+};
+
 /*** variables ***************************************************************/
 
 static PropertiesDialog properties = { NULL };
   
 /*** functions ***************************************************************/
 
+static void mn_properties_add_position (GtkListStore *store,
+					MNPosition position,
+					const char *label);
+
 static void mn_properties_update_selected_label (void);
 static void mn_properties_update_sensitivity (void);
 
 static void mn_properties_selection_changed_h (GtkTreeSelection *selection,
 					       gpointer user_data);
-static void mn_properties_mailboxes_list_changed_h (MNMailboxes *mailboxes,
-						    gpointer user_data);
-
-static void mn_properties_weak_notify_cb (gpointer data,
-					  GObject *former_properties);
 
 /*** implementation **********************************************************/
 
@@ -74,6 +95,8 @@ mn_properties_display (void)
 {
   GtkSizeGroup *size_group;
   GtkTreeSelection *selection;
+  GtkListStore *position_store;
+  GtkCellRenderer *renderer;
 
   g_return_if_fail(mn_shell != NULL);
 
@@ -85,60 +108,126 @@ mn_properties_display (void)
   
   mn_create_interface("properties",
 		      "dialog", &properties.dialog,
+		      "notebook", &properties.notebook,
+		      "autostart_check", &properties.autostart_check,
+		      "blink_check", &properties.blink_check,
+		      "command_new_mail_check", &properties.command_new_mail_check,
+		      "command_new_mail_entry", &properties.command_new_mail_entry,
 		      "delay_label", &properties.delay_label,
 		      "minutes_spin", &properties.minutes_spin,
 		      "seconds_spin", &properties.seconds_spin,
-		      "autostart_check", &properties.autostart_check,
-		      "blink_check", &properties.blink_check,
 		      "scrolled", &properties.scrolled,
 		      "selected_label", &properties.selected_label,
 		      "remove", &properties.remove,
 		      "properties", &properties.properties,
-		      "command_new_mail_check", &properties.command_new_mail_check,
-		      "command_new_mail_entry", &properties.command_new_mail_entry,
-		      "command_double_clicked_check", &properties.command_double_clicked_check,
-		      "command_double_clicked_entry", &properties.command_double_clicked_entry,
+		      "summary_enable_check", &properties.summary_enable_check,
+		      "summary_autoclose_check", &properties.summary_autoclose_check,
+		      "summary_minutes_spin", &properties.summary_minutes_spin,
+		      "summary_minutes_label", &properties.summary_minutes_label,
+		      "summary_seconds_spin", &properties.summary_seconds_spin,
+		      "summary_seconds_label", &properties.summary_seconds_label,
+		      "summary_position_label", &properties.summary_position_label,
+		      "summary_position_combo", &properties.summary_position_combo,
+		      "summary_horizontal_offset_label", &properties.summary_horizontal_offset_label,
+		      "summary_horizontal_offset_spin", &properties.summary_horizontal_offset_spin,
+		      "summary_horizontal_pixels_label", &properties.summary_horizontal_pixels_label,
+		      "summary_vertical_offset_label", &properties.summary_vertical_offset_label,
+		      "summary_vertical_offset_spin", &properties.summary_vertical_offset_spin,
+		      "summary_vertical_pixels_label", &properties.summary_vertical_pixels_label,
 		      NULL);
 
-  g_object_add_weak_pointer(G_OBJECT(properties.dialog), (gpointer *) &properties.dialog);
+  eel_add_weak_pointer(&properties.dialog);
 
   properties.list = mn_mailbox_view_new();
   gtk_container_add(GTK_CONTAINER(properties.scrolled), properties.list);
   gtk_widget_show(properties.list);
 
   selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(properties.list));
-  g_signal_connect(G_OBJECT(selection), "changed", G_CALLBACK(mn_properties_selection_changed_h), NULL);
+  g_signal_connect(selection, "changed", G_CALLBACK(mn_properties_selection_changed_h), NULL);
   
   mn_setup_dnd(properties.scrolled);
 
   size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
-  gtk_size_group_add_widget(size_group, properties.delay_label);
-  gtk_size_group_add_widget(size_group, properties.command_new_mail_check);
-  gtk_size_group_add_widget(size_group, properties.command_double_clicked_check);
+  gtk_size_group_add_widget(size_group, properties.summary_autoclose_check);
+  gtk_size_group_add_widget(size_group, properties.summary_position_label);
+  gtk_size_group_add_widget(size_group, properties.summary_horizontal_offset_label);
+  gtk_size_group_add_widget(size_group, properties.summary_vertical_offset_label);
   g_object_unref(size_group);
 
   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(properties.autostart_check), mn_conf_get_autostart());
 
+  position_store = gtk_list_store_new(POSITION_N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING);
+
+  mn_properties_add_position(position_store, MN_POSITION_TOP_LEFT, _("top left"));
+  mn_properties_add_position(position_store, MN_POSITION_TOP_RIGHT, _("top right"));
+  mn_properties_add_position(position_store, MN_POSITION_BOTTOM_LEFT, _("bottom left"));
+  mn_properties_add_position(position_store, MN_POSITION_BOTTOM_RIGHT, _("bottom right"));
+
+  renderer = gtk_cell_renderer_text_new();
+  gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(properties.summary_position_combo), renderer, TRUE);
+  gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(properties.summary_position_combo), renderer,
+				 "text", POSITION_COLUMN_LABEL,
+				 NULL);
+
+  gtk_combo_box_set_model(GTK_COMBO_BOX(properties.summary_position_combo), GTK_TREE_MODEL(position_store));
+  g_object_unref(position_store);
+  
   mn_conf_link(properties.dialog, MN_CONF_PROPERTIES_DIALOG,
 	       properties.minutes_spin, MN_CONF_DELAY_MINUTES,
 	       properties.seconds_spin, MN_CONF_DELAY_SECONDS,
 	       properties.blink_check, MN_CONF_BLINK_ON_ERRORS,
+	       properties.summary_enable_check, MN_CONF_MAIL_SUMMARY_POPUP_ENABLE,
+	       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_horizontal_offset_spin, MN_CONF_MAIL_SUMMARY_POPUP_HORIZONTAL_OFFSET,
+	       properties.summary_vertical_offset_spin, MN_CONF_MAIL_SUMMARY_POPUP_VERTICAL_OFFSET,
 	       properties.command_new_mail_check, MN_CONF_COMMANDS_NEW_MAIL_ENABLED,
 	       properties.command_new_mail_entry, MN_CONF_COMMANDS_NEW_MAIL_COMMAND,
-	       properties.command_double_clicked_check, MN_CONF_COMMANDS_DOUBLE_CLICKED_ENABLED,
-	       properties.command_double_clicked_entry, MN_CONF_COMMANDS_DOUBLE_CLICKED_COMMAND,
 	       NULL);
+  mn_conf_link_combo_box_to_string(GTK_COMBO_BOX(properties.summary_position_combo),
+				   POSITION_COLUMN_NICK,
+				   MN_CONF_MAIL_SUMMARY_POPUP_POSITION);
 
   mn_properties_update_selected_label();
   mn_properties_update_sensitivity();
 
-  g_signal_connect(G_OBJECT(mn_shell->mailboxes), "list-changed", G_CALLBACK(mn_properties_mailboxes_list_changed_h), NULL);
-  g_object_weak_ref(G_OBJECT(properties.dialog), mn_properties_weak_notify_cb, NULL);
+  mn_g_object_connect(properties.dialog,
+		      mn_shell->mailboxes,
+		      "signal::notify::must-poll", mn_properties_update_sensitivity, NULL,
+		      NULL);
 
   gtk_widget_show(properties.dialog);
 }
 
 static void
+mn_properties_add_position (GtkListStore *store,
+			    MNPosition position,
+			    const char *label)
+{
+  GEnumClass *enum_class;
+  GEnumValue *enum_value;
+  GtkTreeIter iter;
+
+  g_return_if_fail(GTK_IS_LIST_STORE(store));
+  g_return_if_fail(label != NULL);
+
+  enum_class = g_type_class_ref(MN_TYPE_POSITION);
+  g_return_if_fail(enum_class != NULL);
+
+  enum_value = g_enum_get_value(enum_class, position);
+  g_return_if_fail(enum_value != NULL);
+
+  gtk_list_store_append(store, &iter);
+  gtk_list_store_set(store, &iter,
+		     POSITION_COLUMN_NICK, enum_value->value_nick,
+		     POSITION_COLUMN_LABEL, label,
+		     -1);
+
+  g_type_class_unref(enum_class);
+}
+
+static void
 mn_properties_update_selected_label (void)
 {
   GtkTreeSelection *selection;
@@ -164,15 +253,19 @@ mn_properties_update_selected_label (void)
 static void
 mn_properties_update_sensitivity (void)
 {
-  gboolean has_manual;
+  gboolean command_new_mail_enabled;
+  gboolean must_poll;
   GtkTreeSelection *selection;
   gboolean has_selection;
-  gboolean command_new_mail_enabled;
-  gboolean command_double_clicked_enabled;
+  gboolean summary_enabled = FALSE;
+  gboolean summary_autoclose_enabled = FALSE;
 
-  has_manual = mn_mailboxes_has_manual(mn_shell->mailboxes);
-  gtk_widget_set_sensitive(properties.minutes_spin, has_manual);
-  gtk_widget_set_sensitive(properties.seconds_spin, has_manual);
+  command_new_mail_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(properties.command_new_mail_check));
+  gtk_widget_set_sensitive(properties.command_new_mail_entry, command_new_mail_enabled);
+
+  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);
 
   selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(properties.list));
   has_selection = gtk_tree_selection_count_selected_rows(selection) > 0;
@@ -180,11 +273,22 @@ mn_properties_update_sensitivity (void)
   gtk_widget_set_sensitive(properties.remove, has_selection);
   gtk_widget_set_sensitive(properties.properties, has_selection);
 
-  command_new_mail_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(properties.command_new_mail_check));
-  command_double_clicked_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(properties.command_double_clicked_check));
-
-  gtk_widget_set_sensitive(properties.command_new_mail_entry, command_new_mail_enabled);
-  gtk_widget_set_sensitive(properties.command_double_clicked_entry, command_double_clicked_enabled);
+  summary_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(properties.summary_enable_check));
+  summary_autoclose_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(properties.summary_autoclose_check));
+
+  gtk_widget_set_sensitive(properties.summary_autoclose_check, summary_enabled);
+  gtk_widget_set_sensitive(properties.summary_minutes_spin, summary_enabled && summary_autoclose_enabled);
+  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_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);
+  gtk_widget_set_sensitive(properties.summary_horizontal_offset_spin, summary_enabled);
+  gtk_widget_set_sensitive(properties.summary_horizontal_pixels_label, summary_enabled);
+  gtk_widget_set_sensitive(properties.summary_vertical_offset_label, summary_enabled);
+  gtk_widget_set_sensitive(properties.summary_vertical_offset_spin, summary_enabled);
+  gtk_widget_set_sensitive(properties.summary_vertical_pixels_label, summary_enabled);
 }
 
 static void
@@ -195,19 +299,6 @@ mn_properties_selection_changed_h (GtkTreeSelection *selection,
   mn_properties_update_sensitivity();
 }
 
-static void
-mn_properties_mailboxes_list_changed_h (MNMailboxes *mailboxes,
-					gpointer user_data)
-{
-  mn_properties_update_sensitivity();
-}
-
-static void
-mn_properties_weak_notify_cb (gpointer data, GObject *former_properties)
-{
-  g_signal_handlers_disconnect_by_func(mn_shell->mailboxes, mn_properties_mailboxes_list_changed_h, NULL);
-}
-
 /* libglade callbacks */
 
 void
@@ -263,9 +354,17 @@ mn_properties_response_h (GtkDialog *dialog, int response, gpointer user_data)
   switch (response)
     {
     case GTK_RESPONSE_HELP:
-      mn_display_help("properties");
-      break;
-
+      {
+	int current_page;
+	const char *sections[] = { "properties-general", "properties-mailboxes", "properties-mail-summary-popup" };
+	
+	current_page = gtk_notebook_get_current_page(GTK_NOTEBOOK(properties.notebook));
+	g_return_if_fail(current_page >= 0 && current_page < G_N_ELEMENTS(sections));
+
+	mn_display_help(GTK_WINDOW(dialog), sections[current_page]);
+	break;
+      }
+    
     case GTK_RESPONSE_CLOSE:
       gtk_widget_destroy(properties.dialog);
       break;
diff --git a/src/mn-sgml-entities.h b/src/mn-sgml-entities.h
@@ -0,0 +1,277 @@
+/*
+ * mn-sgml-entities.h - SGML entities table
+ *
+ * Generated automatically by ent2h.sh.
+ * Do not edit this file directly.
+ */
+
+#ifndef _MN_SGML_ENTITIES_H
+#define _MN_SGML_ENTITIES_H
+
+static const struct
+{
+  const char		*name;
+  unsigned long		character;
+} entities[] = {
+
+  /* xhtml-lat1.ent */
+  { "nbsp",	160 },
+  { "iexcl",	161 },
+  { "cent",	162 },
+  { "pound",	163 },
+  { "curren",	164 },
+  { "yen",	165 },
+  { "brvbar",	166 },
+  { "sect",	167 },
+  { "uml",	168 },
+  { "copy",	169 },
+  { "ordf",	170 },
+  { "laquo",	171 },
+  { "not",	172 },
+  { "shy",	173 },
+  { "reg",	174 },
+  { "macr",	175 },
+  { "deg",	176 },
+  { "plusmn",	177 },
+  { "sup",	178 },
+  { "sup",	179 },
+  { "acute",	180 },
+  { "micro",	181 },
+  { "para",	182 },
+  { "middot",	183 },
+  { "cedil",	184 },
+  { "sup",	185 },
+  { "ordm",	186 },
+  { "raquo",	187 },
+  { "frac",	188 },
+  { "frac",	189 },
+  { "frac",	190 },
+  { "iquest",	191 },
+  { "Agrave",	192 },
+  { "Aacute",	193 },
+  { "Acirc",	194 },
+  { "Atilde",	195 },
+  { "Auml",	196 },
+  { "Aring",	197 },
+  { "AElig",	198 },
+  { "Ccedil",	199 },
+  { "Egrave",	200 },
+  { "Eacute",	201 },
+  { "Ecirc",	202 },
+  { "Euml",	203 },
+  { "Igrave",	204 },
+  { "Iacute",	205 },
+  { "Icirc",	206 },
+  { "Iuml",	207 },
+  { "ETH",	208 },
+  { "Ntilde",	209 },
+  { "Ograve",	210 },
+  { "Oacute",	211 },
+  { "Ocirc",	212 },
+  { "Otilde",	213 },
+  { "Ouml",	214 },
+  { "times",	215 },
+  { "Oslash",	216 },
+  { "Ugrave",	217 },
+  { "Uacute",	218 },
+  { "Ucirc",	219 },
+  { "Uuml",	220 },
+  { "Yacute",	221 },
+  { "THORN",	222 },
+  { "szlig",	223 },
+  { "agrave",	224 },
+  { "aacute",	225 },
+  { "acirc",	226 },
+  { "atilde",	227 },
+  { "auml",	228 },
+  { "aring",	229 },
+  { "aelig",	230 },
+  { "ccedil",	231 },
+  { "egrave",	232 },
+  { "eacute",	233 },
+  { "ecirc",	234 },
+  { "euml",	235 },
+  { "igrave",	236 },
+  { "iacute",	237 },
+  { "icirc",	238 },
+  { "iuml",	239 },
+  { "eth",	240 },
+  { "ntilde",	241 },
+  { "ograve",	242 },
+  { "oacute",	243 },
+  { "ocirc",	244 },
+  { "otilde",	245 },
+  { "ouml",	246 },
+  { "divide",	247 },
+  { "oslash",	248 },
+  { "ugrave",	249 },
+  { "uacute",	250 },
+  { "ucirc",	251 },
+  { "uuml",	252 },
+  { "yacute",	253 },
+  { "thorn",	254 },
+  { "yuml",	255 },
+
+  /* xhtml-special.ent */
+  { "quot",	34 },
+  { "amp",	38 },
+  { "lt",	60 },
+  { "gt",	62 },
+  { "apos",	39 },
+  { "OElig",	338 },
+  { "oelig",	339 },
+  { "Scaron",	352 },
+  { "scaron",	353 },
+  { "Yuml",	376 },
+  { "circ",	710 },
+  { "tilde",	732 },
+  { "ensp",	8194 },
+  { "emsp",	8195 },
+  { "thinsp",	8201 },
+  { "zwnj",	8204 },
+  { "zwj",	8205 },
+  { "lrm",	8206 },
+  { "rlm",	8207 },
+  { "ndash",	8211 },
+  { "mdash",	8212 },
+  { "lsquo",	8216 },
+  { "rsquo",	8217 },
+  { "sbquo",	8218 },
+  { "ldquo",	8220 },
+  { "rdquo",	8221 },
+  { "bdquo",	8222 },
+  { "dagger",	8224 },
+  { "Dagger",	8225 },
+  { "permil",	8240 },
+  { "lsaquo",	8249 },
+  { "rsaquo",	8250 },
+  { "euro",	8364 },
+
+  /* xhtml-symbol.ent */
+  { "fnof",	402 },
+  { "Alpha",	913 },
+  { "Beta",	914 },
+  { "Gamma",	915 },
+  { "Delta",	916 },
+  { "Epsilon",	917 },
+  { "Zeta",	918 },
+  { "Eta",	919 },
+  { "Theta",	920 },
+  { "Iota",	921 },
+  { "Kappa",	922 },
+  { "Lambda",	923 },
+  { "Mu",	924 },
+  { "Nu",	925 },
+  { "Xi",	926 },
+  { "Omicron",	927 },
+  { "Pi",	928 },
+  { "Rho",	929 },
+  { "Sigma",	931 },
+  { "Tau",	932 },
+  { "Upsilon",	933 },
+  { "Phi",	934 },
+  { "Chi",	935 },
+  { "Psi",	936 },
+  { "Omega",	937 },
+  { "alpha",	945 },
+  { "beta",	946 },
+  { "gamma",	947 },
+  { "delta",	948 },
+  { "epsilon",	949 },
+  { "zeta",	950 },
+  { "eta",	951 },
+  { "theta",	952 },
+  { "iota",	953 },
+  { "kappa",	954 },
+  { "lambda",	955 },
+  { "mu",	956 },
+  { "nu",	957 },
+  { "xi",	958 },
+  { "omicron",	959 },
+  { "pi",	960 },
+  { "rho",	961 },
+  { "sigmaf",	962 },
+  { "sigma",	963 },
+  { "tau",	964 },
+  { "upsilon",	965 },
+  { "phi",	966 },
+  { "chi",	967 },
+  { "psi",	968 },
+  { "omega",	969 },
+  { "thetasym",	977 },
+  { "upsih",	978 },
+  { "piv",	982 },
+  { "bull",	8226 },
+  { "hellip",	8230 },
+  { "prime",	8242 },
+  { "Prime",	8243 },
+  { "oline",	8254 },
+  { "frasl",	8260 },
+  { "weierp",	8472 },
+  { "image",	8465 },
+  { "real",	8476 },
+  { "trade",	8482 },
+  { "alefsym",	8501 },
+  { "larr",	8592 },
+  { "uarr",	8593 },
+  { "rarr",	8594 },
+  { "darr",	8595 },
+  { "harr",	8596 },
+  { "crarr",	8629 },
+  { "lArr",	8656 },
+  { "uArr",	8657 },
+  { "rArr",	8658 },
+  { "dArr",	8659 },
+  { "hArr",	8660 },
+  { "forall",	8704 },
+  { "part",	8706 },
+  { "exist",	8707 },
+  { "empty",	8709 },
+  { "nabla",	8711 },
+  { "isin",	8712 },
+  { "notin",	8713 },
+  { "ni",	8715 },
+  { "prod",	8719 },
+  { "sum",	8721 },
+  { "minus",	8722 },
+  { "lowast",	8727 },
+  { "radic",	8730 },
+  { "prop",	8733 },
+  { "infin",	8734 },
+  { "ang",	8736 },
+  { "and",	8743 },
+  { "or",	8744 },
+  { "cap",	8745 },
+  { "cup",	8746 },
+  { "int",	8747 },
+  { "there",	8756 },
+  { "sim",	8764 },
+  { "cong",	8773 },
+  { "asymp",	8776 },
+  { "ne",	8800 },
+  { "equiv",	8801 },
+  { "le",	8804 },
+  { "ge",	8805 },
+  { "sub",	8834 },
+  { "sup",	8835 },
+  { "nsub",	8836 },
+  { "sube",	8838 },
+  { "supe",	8839 },
+  { "oplus",	8853 },
+  { "otimes",	8855 },
+  { "perp",	8869 },
+  { "sdot",	8901 },
+  { "lceil",	8968 },
+  { "rceil",	8969 },
+  { "lfloor",	8970 },
+  { "rfloor",	8971 },
+  { "lang",	9001 },
+  { "rang",	9002 },
+  { "loz",	9674 },
+  { "spades",	9824 },
+  { "clubs",	9827 },
+  { "hearts",	9829 },
+  { "diams",	9830 },
+};
+
+#endif /* _MN_SGML_ENTITIES_H */
diff --git a/src/mn-sgml-ref.c b/src/mn-sgml-ref.c
@@ -0,0 +1,128 @@
+/* 
+ * 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.
+ */
+
+#include <string.h>
+#include <stdlib.h>
+#include <limits.h>
+#include <glib.h>
+#include "mn-sgml-entities.h"
+
+/*** functions ***************************************************************/
+
+static gunichar mn_sgml_ref_get_unichar (const char *ref);
+
+/*** implementation **********************************************************/
+
+static gunichar
+mn_sgml_ref_get_unichar (const char *ref)
+{
+  gunichar c = 0;		/* 0 means "invalid reference" */
+
+  g_return_val_if_fail(ref != NULL, 0);
+
+  if (*ref == '#')
+    {				/* numeric reference */
+      const char *nptr;
+      int base;
+
+      if (*(ref + 1) == 'x' || *(ref + 1) == 'X')
+	{			/* hexadecimal number */
+	  nptr = ref + 2;
+	  base = 16;
+	}
+      else
+	{			/* decimal number */
+	  nptr = ref + 1;
+	  base = 10;
+	}
+
+      if (*nptr)
+	{
+	  char *end;
+	  unsigned long code;
+	  
+	  code = strtoul(nptr, &end, base);
+	  if (*end == 0)	/* could convert */
+	    c = code;
+	}
+    }
+  else
+    {				/* entity reference */
+      int i;
+
+      for (i = 0; i < G_N_ELEMENTS(entities); i++)
+	if (! strcmp(ref, entities[i].name))
+	  {
+	    c = entities[i].character;
+	    break;
+	  }
+    }
+  
+  return c;
+}
+
+/**
+ * mn_sgml_ref_expand:
+ * @string: a string to expand
+ *
+ * Parses @str, expanding every SGML character reference to its
+ * Unicode character.
+ *
+ * Return value: a newly-allocated UTF-8 string.
+ **/
+char *
+mn_sgml_ref_expand (const char *str)
+{
+  GString *unescaped;
+  char *ampersand;
+  char *start;
+
+  g_return_val_if_fail(str != NULL, NULL);
+
+  unescaped = g_string_new(NULL);
+  start = (char *) str;
+
+  while ((ampersand = strchr(start, '&')))
+    {
+      char *semicolon = strchr(ampersand, ';');
+
+      if (semicolon)
+	{
+	  char *ref;
+	  gunichar c;
+
+	  ref = g_strndup(ampersand + 1, semicolon - ampersand - 1);
+	  c = mn_sgml_ref_get_unichar(ref);
+	  g_free(ref);
+
+	  g_string_append_len(unescaped, start, ampersand - start);
+	  if (c)
+	    g_string_append_unichar(unescaped, c);
+	  else			/* invalid reference, append it raw */
+	    g_string_append_len(unescaped, ampersand, semicolon - ampersand + 1);
+
+	  start = semicolon + 1;
+	}
+      else
+	break;
+    }
+
+  g_string_append(unescaped, start);
+
+  return g_string_free(unescaped, FALSE);
+}
diff --git a/src/mn-sgml-ref.h b/src/mn-sgml-ref.h
@@ -0,0 +1,24 @@
+/* 
+ * 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.
+ */
+
+#ifndef _MN_SGML_REF_H
+#define _MN_SGML_REF_H
+
+char *mn_sgml_ref_expand (const char *str);
+
+#endif /* _MN_SGML_REF_H */
diff --git a/src/mn-shell-private.h b/src/mn-shell-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (do not edit directly) */
 
 #ifndef __MN_SHELL_PRIVATE_H__
 #define __MN_SHELL_PRIVATE_H__
@@ -10,15 +10,15 @@ extern "C" {
 #endif /* __cplusplus */
 
 
-#line 22 "mn-shell.gob"
+#line 24 "mn-shell.gob"
 
 #include "mn-mail-icon.h"
 
 #line 18 "mn-shell-private.h"
 struct _MNShellPrivate {
-#line 42 "mn-shell.gob"
+#line 47 "mn-shell.gob"
 	MNMailIcon * icon;
-#line 43 "mn-shell.gob"
+#line 48 "mn-shell.gob"
 	GtkWidget * about;
 #line 24 "mn-shell-private.h"
 };
diff --git a/src/mn-shell.c b/src/mn-shell.c
@@ -1,14 +1,16 @@
-/* Generated by GOB (v2.0.9) on Thu Sep  9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct  6 19:29:54 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 9
+#define GOB_VERSION_PATCHLEVEL 10
 
 #define selfp (self->_priv)
 
+#include <string.h> /* memset() */
+
 #include "mn-shell.h"
 
 #include "mn-shell-private.h"
@@ -21,21 +23,24 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 25 "mn-shell.gob"
+#line 27 "mn-shell.gob"
 
 #include "config.h"
 #include <errno.h>
 #include <gnome.h>
+#include <eel/eel.h>
 #include "mn-properties.h"
 #include "mn-util.h"
 #include "mn-conf.h"
 #include "mn-mailboxes.h"
 #include "mn-unsupported-mailbox.h"
 #include "mn-about-dialog.h"
+#include "mn-summary-popup.h"
+#include "mn-summary-dialog.h"
 
   MNShell *mn_shell = NULL;
 
-#line 39 "mn-shell.c"
+#line 44 "mn-shell.c"
 /* self casting macros */
 #define SELF(x) MN_SHELL(x)
 #define SELF_CONST(x) MN_SHELL_CONST(x)
@@ -53,21 +58,17 @@ typedef MNShellClass SelfClass;
 static void mn_shell_class_init (MNShellClass * c) G_GNUC_UNUSED;
 static void mn_shell_init (MNShell * self) G_GNUC_UNUSED;
 static void ___2_mn_shell_finalize (GObject * object) G_GNUC_UNUSED;
-static void mn_shell_mailboxes_list_changed_h (MNMailboxes * mailboxes, gpointer user_data) G_GNUC_UNUSED;
-static void mn_shell_mailboxes_status_changed_h (MNMailboxes * mailboxes, gpointer user_data) 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_double_clicked_command_cb (GConfClient * client, guint cnxn_id, GConfEntry * entry, gpointer user_data) 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_icon_activate_h (MNMailIcon * icon, gpointer user_data) G_GNUC_UNUSED;
-static void mn_shell_icon_activate_run_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_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;
 static void mn_shell_icon_activate_about_h (MNMailIcon * icon, gpointer user_data) G_GNUC_UNUSED;
 static void mn_shell_icon_activate_remove_h (MNMailIcon * icon, gpointer user_data) G_GNUC_UNUSED;
 static void mn_shell_icon_destroy_h (GtkObject * object, gpointer user_data) G_GNUC_UNUSED;
-static void mn_shell_run_double_clicked_command (MNShell * self) G_GNUC_UNUSED;
-static void mn_shell_update_command (MNShell * self) 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;
 
@@ -75,21 +76,17 @@ static void mn_shell_update_icon (MNShell * self) G_GNUC_UNUSED;
 static GObjectClass *parent_class = NULL;
 
 /* Short form macros */
-#define self_mailboxes_list_changed_h mn_shell_mailboxes_list_changed_h
-#define self_mailboxes_status_changed_h mn_shell_mailboxes_status_changed_h
+#define self_mailboxes_messages_changed_h mn_shell_mailboxes_messages_changed_h
 #define self_init_icon mn_shell_init_icon
-#define self_notify_double_clicked_command_cb mn_shell_notify_double_clicked_command_cb
 #define self_notify_blink_on_errors_cb mn_shell_notify_blink_on_errors_cb
 #define self_icon_activate_h mn_shell_icon_activate_h
-#define self_icon_activate_run_h mn_shell_icon_activate_run_h
+#define self_icon_activate_summary_h mn_shell_icon_activate_summary_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
 #define self_icon_activate_about_h mn_shell_icon_activate_about_h
 #define self_icon_activate_remove_h mn_shell_icon_activate_remove_h
 #define self_icon_destroy_h mn_shell_icon_destroy_h
-#define self_run_double_clicked_command mn_shell_run_double_clicked_command
-#define self_update_command mn_shell_update_command
 #define self_update_sensitivity mn_shell_update_sensitivity
 #define self_update_icon mn_shell_update_icon
 #define self_new mn_shell_new
@@ -146,9 +143,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 41 "mn-shell.gob"
-	if(self->mailboxes) { ((*(void (*)(void *))g_object_unref)) (self->mailboxes); self->mailboxes = NULL; }
-#line 152 "mn-shell.c"
+#line 46 "mn-shell.gob"
+	if(self->mailboxes) { g_object_unref ((gpointer) self->mailboxes); self->mailboxes = NULL; }
+#line 149 "mn-shell.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -157,12 +154,11 @@ static void
 ___finalize(GObject *obj_self)
 {
 #define __GOB_FUNCTION__ "MN:Shell::finalize"
-	MNShell *self  G_GNUC_UNUSED = MN_SHELL (obj_self);
-	gpointer priv = self->_priv;
-#line 58 "mn-shell.gob"
+	MNShell *self G_GNUC_UNUSED = MN_SHELL (obj_self);
+	gpointer priv G_GNUC_UNUSED = self->_priv;
+#line 70 "mn-shell.gob"
 	___2_mn_shell_finalize(obj_self);
-#line 165 "mn-shell.c"
-	g_free (priv);
+#line 162 "mn-shell.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -172,174 +168,158 @@ mn_shell_class_init (MNShellClass * c G_GNUC_UNUSED)
 #define __GOB_FUNCTION__ "MN:Shell::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
 
+	g_type_class_add_private(c,sizeof(MNShellPrivate));
+
 	parent_class = g_type_class_ref (G_TYPE_OBJECT);
 
-#line 58 "mn-shell.gob"
+#line 70 "mn-shell.gob"
 	g_object_class->finalize = ___finalize;
-#line 180 "mn-shell.c"
+#line 178 "mn-shell.c"
 	g_object_class->dispose = ___dispose;
 }
 #undef __GOB_FUNCTION__
-#line 45 "mn-shell.gob"
+#line 50 "mn-shell.gob"
 static void 
 mn_shell_init (MNShell * self G_GNUC_UNUSED)
-#line 187 "mn-shell.c"
+#line 185 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::init"
-	self->_priv = g_new0 (MNShellPrivate, 1);
-#line 41 "mn-shell.gob"
+	self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,TYPE_SELF,MNShellPrivate);
+#line 46 "mn-shell.gob"
 	self->mailboxes = mn_mailboxes_new();
-#line 193 "mn-shell.c"
+#line 191 "mn-shell.c"
  {
-#line 46 "mn-shell.gob"
+#line 51 "mn-shell.gob"
 
     g_return_if_fail(mn_shell == NULL);
-    g_object_add_weak_pointer(G_OBJECT(self), (gpointer *) &mn_shell);
+    mn_shell = self;
+    eel_add_weak_pointer(&mn_shell);
 
     self_init_icon(self);
-    eel_gconf_notification_add(MN_CONF_COMMANDS_DOUBLE_CLICKED_COMMAND, self_notify_double_clicked_command_cb, self);
     eel_gconf_notification_add(MN_CONF_BLINK_ON_ERRORS, self_notify_blink_on_errors_cb, self);
 
-    g_signal_connect(G_OBJECT(self->mailboxes), "list-changed", G_CALLBACK(self_mailboxes_list_changed_h), self);
-    g_signal_connect(G_OBJECT(self->mailboxes), "status-changed", G_CALLBACK(self_mailboxes_status_changed_h), 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_icon, self,
+		     "swapped-signal::has-new-changed", self_update_icon, self,
+		     "swapped-signal::error-changed", self_update_icon, self,
+		     NULL);
+
+    mn_summary_popup_init();
   
-#line 207 "mn-shell.c"
+#line 212 "mn-shell.c"
  }
 }
 #undef __GOB_FUNCTION__
 
 
 
-#line 58 "mn-shell.gob"
+#line 70 "mn-shell.gob"
 static void 
 ___2_mn_shell_finalize (GObject * object G_GNUC_UNUSED)
-#line 217 "mn-shell.c"
+#line 222 "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 60 "mn-shell.gob"
+#line 72 "mn-shell.gob"
 	
     gtk_main_quit();
     PARENT_HANDLER(object);
   }}
-#line 229 "mn-shell.c"
+#line 234 "mn-shell.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 65 "mn-shell.gob"
+#line 77 "mn-shell.gob"
 static void 
-mn_shell_mailboxes_list_changed_h (MNMailboxes * mailboxes, gpointer user_data)
-#line 236 "mn-shell.c"
+mn_shell_mailboxes_messages_changed_h (MNMailboxes * mailboxes, gboolean has_new, gpointer user_data)
+#line 241 "mn-shell.c"
 {
-#define __GOB_FUNCTION__ "MN:Shell::mailboxes_list_changed_h"
-#line 65 "mn-shell.gob"
+#define __GOB_FUNCTION__ "MN:Shell::mailboxes_messages_changed_h"
+#line 77 "mn-shell.gob"
 	g_return_if_fail (mailboxes != NULL);
-#line 65 "mn-shell.gob"
+#line 77 "mn-shell.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (mailboxes));
-#line 65 "mn-shell.gob"
+#line 77 "mn-shell.gob"
 	g_return_if_fail (user_data != NULL);
-#line 245 "mn-shell.c"
+#line 250 "mn-shell.c"
 {
-#line 68 "mn-shell.gob"
+#line 81 "mn-shell.gob"
 	
-    Self *self = user_data;
-    
-    self_update_sensitivity(self);
-    self_update_icon(self);
-  }}
-#line 254 "mn-shell.c"
-#undef __GOB_FUNCTION__
-
-#line 75 "mn-shell.gob"
-static void 
-mn_shell_mailboxes_status_changed_h (MNMailboxes * mailboxes, gpointer user_data)
-#line 260 "mn-shell.c"
-{
-#define __GOB_FUNCTION__ "MN:Shell::mailboxes_status_changed_h"
-#line 75 "mn-shell.gob"
-	g_return_if_fail (mailboxes != NULL);
-#line 75 "mn-shell.gob"
-	g_return_if_fail (MN_IS_MAILBOXES (mailboxes));
-#line 75 "mn-shell.gob"
-	g_return_if_fail (user_data != NULL);
-#line 269 "mn-shell.c"
-{
-#line 78 "mn-shell.gob"
-	
-    Self *self = user_data;
-
-    self_update_icon(self);
+    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))
+	  {
+	    char *command;
+		
+	    command = eel_gconf_get_string(MN_CONF_COMMANDS_NEW_MAIL_COMMAND);
+	    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 new mail command: %s."),
+				  g_strerror(errno));
+		    
+		g_free(command);
+	      }
+	  }
+      }
   }}
 #line 277 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 84 "mn-shell.gob"
+#line 106 "mn-shell.gob"
 static void 
 mn_shell_init_icon (MNShell * self)
 #line 283 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::init_icon"
-#line 84 "mn-shell.gob"
+#line 106 "mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 84 "mn-shell.gob"
+#line 106 "mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
 #line 290 "mn-shell.c"
 {
-#line 86 "mn-shell.gob"
+#line 108 "mn-shell.gob"
 	
     selfp->icon = MN_MAIL_ICON(mn_mail_icon_new());
 
-    g_signal_connect(G_OBJECT(selfp->icon), "activate", G_CALLBACK(self_icon_activate_h), self);
-    g_signal_connect(G_OBJECT(selfp->icon), "activate-run", G_CALLBACK(self_icon_activate_run_h), self);
-    g_signal_connect(G_OBJECT(selfp->icon), "activate-update", G_CALLBACK(self_icon_activate_update_h), self);
-    g_signal_connect(G_OBJECT(selfp->icon), "activate-properties", G_CALLBACK(self_icon_activate_properties_h), self);
-    g_signal_connect(G_OBJECT(selfp->icon), "activate-help", G_CALLBACK(self_icon_activate_help_h), self);
-    g_signal_connect(G_OBJECT(selfp->icon), "activate-about", G_CALLBACK(self_icon_activate_about_h), self);
-    g_signal_connect(G_OBJECT(selfp->icon), "activate-remove", G_CALLBACK(self_icon_activate_remove_h), self);
-    g_signal_connect(G_OBJECT(selfp->icon), "destroy", G_CALLBACK(self_icon_destroy_h), self);
-
-    self_update_command(self);
+    g_object_connect(selfp->icon,
+		     "signal::activate", self_icon_activate_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,
+		     "signal::activate-help", self_icon_activate_help_h, self,
+		     "signal::activate-about", self_icon_activate_about_h, self,
+		     "signal::activate-remove", self_icon_activate_remove_h, self,
+		     "signal::destroy", self_icon_destroy_h, self,
+		     NULL);
+		     
     self_update_sensitivity(self);
     self_update_icon(self);
   }}
-#line 309 "mn-shell.c"
-#undef __GOB_FUNCTION__
-
-#line 103 "mn-shell.gob"
-static void 
-mn_shell_notify_double_clicked_command_cb (GConfClient * client, guint cnxn_id, GConfEntry * entry, gpointer user_data)
-#line 315 "mn-shell.c"
-{
-#define __GOB_FUNCTION__ "MN:Shell::notify_double_clicked_command_cb"
-#line 103 "mn-shell.gob"
-	g_return_if_fail (user_data != NULL);
-#line 320 "mn-shell.c"
-{
-#line 108 "mn-shell.gob"
-	
-    Self *self = user_data;
-
-    GDK_THREADS_ENTER();
-    self_update_command(self);
-    GDK_THREADS_LEAVE();
-  }}
-#line 330 "mn-shell.c"
+#line 310 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 116 "mn-shell.gob"
+#line 126 "mn-shell.gob"
 static void 
 mn_shell_notify_blink_on_errors_cb (GConfClient * client, guint cnxn_id, GConfEntry * entry, gpointer user_data)
-#line 336 "mn-shell.c"
+#line 316 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::notify_blink_on_errors_cb"
-#line 116 "mn-shell.gob"
+#line 126 "mn-shell.gob"
 	g_return_if_fail (user_data != NULL);
-#line 341 "mn-shell.c"
+#line 321 "mn-shell.c"
 {
-#line 121 "mn-shell.gob"
+#line 131 "mn-shell.gob"
 	
     Self *self = user_data;
 
@@ -347,272 +327,215 @@ mn_shell_notify_blink_on_errors_cb (GConfClient * client, guint cnxn_id, GConfEn
     self_update_icon(self);
     GDK_THREADS_LEAVE();
   }}
-#line 351 "mn-shell.c"
+#line 331 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 129 "mn-shell.gob"
+#line 139 "mn-shell.gob"
 static void 
 mn_shell_icon_activate_h (MNMailIcon * icon, gpointer user_data)
-#line 357 "mn-shell.c"
+#line 337 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::icon_activate_h"
-#line 129 "mn-shell.gob"
+#line 139 "mn-shell.gob"
 	g_return_if_fail (icon != NULL);
-#line 129 "mn-shell.gob"
+#line 139 "mn-shell.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (icon));
-#line 129 "mn-shell.gob"
+#line 139 "mn-shell.gob"
 	g_return_if_fail (user_data != NULL);
-#line 366 "mn-shell.c"
+#line 346 "mn-shell.c"
 {
-#line 132 "mn-shell.gob"
+#line 142 "mn-shell.gob"
 	
-    Self *self = user_data;
-    if (eel_gconf_get_boolean(MN_CONF_COMMANDS_DOUBLE_CLICKED_ENABLED))
-      self_run_double_clicked_command(self);
+    mn_summary_dialog_display();
   }}
-#line 374 "mn-shell.c"
+#line 352 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 138 "mn-shell.gob"
+#line 146 "mn-shell.gob"
 static void 
-mn_shell_icon_activate_run_h (MNMailIcon * icon, gpointer user_data)
-#line 380 "mn-shell.c"
+mn_shell_icon_activate_summary_h (MNMailIcon * icon, gpointer user_data)
+#line 358 "mn-shell.c"
 {
-#define __GOB_FUNCTION__ "MN:Shell::icon_activate_run_h"
-#line 138 "mn-shell.gob"
+#define __GOB_FUNCTION__ "MN:Shell::icon_activate_summary_h"
+#line 146 "mn-shell.gob"
 	g_return_if_fail (icon != NULL);
-#line 138 "mn-shell.gob"
+#line 146 "mn-shell.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (icon));
-#line 138 "mn-shell.gob"
+#line 146 "mn-shell.gob"
 	g_return_if_fail (user_data != NULL);
-#line 389 "mn-shell.c"
+#line 367 "mn-shell.c"
 {
-#line 141 "mn-shell.gob"
+#line 149 "mn-shell.gob"
 	
-    Self *self = user_data;
-    self_run_double_clicked_command(self);
+    mn_summary_dialog_display();
   }}
-#line 396 "mn-shell.c"
+#line 373 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 146 "mn-shell.gob"
+#line 153 "mn-shell.gob"
 static void 
 mn_shell_icon_activate_update_h (MNMailIcon * icon, gpointer user_data)
-#line 402 "mn-shell.c"
+#line 379 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::icon_activate_update_h"
-#line 146 "mn-shell.gob"
+#line 153 "mn-shell.gob"
 	g_return_if_fail (icon != NULL);
-#line 146 "mn-shell.gob"
+#line 153 "mn-shell.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (icon));
-#line 146 "mn-shell.gob"
+#line 153 "mn-shell.gob"
 	g_return_if_fail (user_data != NULL);
-#line 411 "mn-shell.c"
+#line 388 "mn-shell.c"
 {
-#line 149 "mn-shell.gob"
+#line 156 "mn-shell.gob"
 	
     Self *self = user_data;
     mn_mailboxes_check(self->mailboxes);
   }}
-#line 418 "mn-shell.c"
+#line 395 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 154 "mn-shell.gob"
+#line 161 "mn-shell.gob"
 static void 
 mn_shell_icon_activate_properties_h (MNMailIcon * icon, gpointer user_data)
-#line 424 "mn-shell.c"
+#line 401 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::icon_activate_properties_h"
-#line 154 "mn-shell.gob"
+#line 161 "mn-shell.gob"
 	g_return_if_fail (icon != NULL);
-#line 154 "mn-shell.gob"
+#line 161 "mn-shell.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (icon));
-#line 154 "mn-shell.gob"
+#line 161 "mn-shell.gob"
 	g_return_if_fail (user_data != NULL);
-#line 433 "mn-shell.c"
+#line 410 "mn-shell.c"
 {
-#line 157 "mn-shell.gob"
+#line 164 "mn-shell.gob"
 	
     mn_properties_display();
   }}
-#line 439 "mn-shell.c"
+#line 416 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 161 "mn-shell.gob"
+#line 168 "mn-shell.gob"
 static void 
 mn_shell_icon_activate_help_h (MNMailIcon * icon, gpointer user_data)
-#line 445 "mn-shell.c"
+#line 422 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::icon_activate_help_h"
-#line 161 "mn-shell.gob"
+#line 168 "mn-shell.gob"
 	g_return_if_fail (icon != NULL);
-#line 161 "mn-shell.gob"
+#line 168 "mn-shell.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (icon));
-#line 161 "mn-shell.gob"
+#line 168 "mn-shell.gob"
 	g_return_if_fail (user_data != NULL);
-#line 454 "mn-shell.c"
+#line 431 "mn-shell.c"
 {
-#line 164 "mn-shell.gob"
+#line 171 "mn-shell.gob"
 	
-    mn_display_help(NULL);
+    mn_display_help(NULL, NULL);
   }}
-#line 460 "mn-shell.c"
+#line 437 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 168 "mn-shell.gob"
+#line 175 "mn-shell.gob"
 static void 
 mn_shell_icon_activate_about_h (MNMailIcon * icon, gpointer user_data)
-#line 466 "mn-shell.c"
+#line 443 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::icon_activate_about_h"
-#line 168 "mn-shell.gob"
+#line 175 "mn-shell.gob"
 	g_return_if_fail (icon != NULL);
-#line 168 "mn-shell.gob"
+#line 175 "mn-shell.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (icon));
-#line 168 "mn-shell.gob"
+#line 175 "mn-shell.gob"
 	g_return_if_fail (user_data != NULL);
-#line 475 "mn-shell.c"
+#line 452 "mn-shell.c"
 {
-#line 171 "mn-shell.gob"
+#line 178 "mn-shell.gob"
 	
     Self *self = user_data;
     self_display_about(self);
   }}
-#line 482 "mn-shell.c"
+#line 459 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 176 "mn-shell.gob"
+#line 183 "mn-shell.gob"
 static void 
 mn_shell_icon_activate_remove_h (MNMailIcon * icon, gpointer user_data)
-#line 488 "mn-shell.c"
+#line 465 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::icon_activate_remove_h"
-#line 176 "mn-shell.gob"
+#line 183 "mn-shell.gob"
 	g_return_if_fail (icon != NULL);
-#line 176 "mn-shell.gob"
+#line 183 "mn-shell.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (icon));
-#line 176 "mn-shell.gob"
+#line 183 "mn-shell.gob"
 	g_return_if_fail (user_data != NULL);
-#line 497 "mn-shell.c"
+#line 474 "mn-shell.c"
 {
-#line 179 "mn-shell.gob"
+#line 186 "mn-shell.gob"
 	
     Self *self = user_data;
     g_object_unref(self);
   }}
-#line 504 "mn-shell.c"
+#line 481 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 184 "mn-shell.gob"
+#line 191 "mn-shell.gob"
 static void 
 mn_shell_icon_destroy_h (GtkObject * object, gpointer user_data)
-#line 510 "mn-shell.c"
+#line 487 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::icon_destroy_h"
-#line 184 "mn-shell.gob"
+#line 191 "mn-shell.gob"
 	g_return_if_fail (object != NULL);
-#line 184 "mn-shell.gob"
+#line 191 "mn-shell.gob"
 	g_return_if_fail (GTK_IS_OBJECT (object));
-#line 184 "mn-shell.gob"
+#line 191 "mn-shell.gob"
 	g_return_if_fail (user_data != NULL);
-#line 519 "mn-shell.c"
+#line 496 "mn-shell.c"
 {
-#line 187 "mn-shell.gob"
+#line 194 "mn-shell.gob"
 	
     Self *self = user_data;
 
     /* The Notification Area applet has been terminated. Recreate the icon. */
     self_init_icon(self);
   }}
-#line 528 "mn-shell.c"
-#undef __GOB_FUNCTION__
-
-#line 194 "mn-shell.gob"
-static void 
-mn_shell_run_double_clicked_command (MNShell * self)
-#line 534 "mn-shell.c"
-{
-#define __GOB_FUNCTION__ "MN:Shell::run_double_clicked_command"
-#line 194 "mn-shell.gob"
-	g_return_if_fail (self != NULL);
-#line 194 "mn-shell.gob"
-	g_return_if_fail (MN_IS_SHELL (self));
-#line 541 "mn-shell.c"
-{
-#line 196 "mn-shell.gob"
-	
-    char *command;
-
-    command = eel_gconf_get_string(MN_CONF_COMMANDS_DOUBLE_CLICKED_COMMAND);
-    if (command)
-      {
-	if (gnome_execute_shell(NULL, command) < 0)
-	  mn_error_dialog(NULL,
-			  _("A command error has occurred"),
-			  _("Unable to execute double-clicked command: %s."),
-			  g_strerror(errno));
-	
-	g_free(command);
-      }
-  }}
-#line 559 "mn-shell.c"
-#undef __GOB_FUNCTION__
-
-#line 212 "mn-shell.gob"
-static void 
-mn_shell_update_command (MNShell * self)
-#line 565 "mn-shell.c"
-{
-#define __GOB_FUNCTION__ "MN:Shell::update_command"
-#line 212 "mn-shell.gob"
-	g_return_if_fail (self != NULL);
-#line 212 "mn-shell.gob"
-	g_return_if_fail (MN_IS_SHELL (self));
-#line 572 "mn-shell.c"
-{
-#line 214 "mn-shell.gob"
-	
-    char *command;
-
-    command = eel_gconf_get_string(MN_CONF_COMMANDS_DOUBLE_CLICKED_COMMAND);
-    mn_mail_icon_set_command(selfp->icon, command);
-    g_free(command);
-  }}
-#line 582 "mn-shell.c"
+#line 505 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 222 "mn-shell.gob"
+#line 201 "mn-shell.gob"
 static void 
 mn_shell_update_sensitivity (MNShell * self)
-#line 588 "mn-shell.c"
+#line 511 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::update_sensitivity"
-#line 222 "mn-shell.gob"
+#line 201 "mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 222 "mn-shell.gob"
+#line 201 "mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 595 "mn-shell.c"
+#line 518 "mn-shell.c"
 {
-#line 224 "mn-shell.gob"
+#line 203 "mn-shell.gob"
 	
-    gtk_widget_set_sensitive(selfp->icon->update_item, mn_mailboxes_has_manual(self->mailboxes));
+    gtk_widget_set_sensitive(selfp->icon->update_item, mn_mailboxes_get_must_poll(self->mailboxes));
   }}
-#line 601 "mn-shell.c"
+#line 524 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 228 "mn-shell.gob"
+#line 207 "mn-shell.gob"
 static void 
 mn_shell_update_icon (MNShell * self)
-#line 607 "mn-shell.c"
+#line 530 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::update_icon"
-#line 228 "mn-shell.gob"
+#line 207 "mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 228 "mn-shell.gob"
+#line 207 "mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 614 "mn-shell.c"
+#line 537 "mn-shell.c"
 {
-#line 230 "mn-shell.gob"
+#line 209 "mn-shell.gob"
 	
     GSList *mailboxes;
     gboolean show = FALSE;
@@ -623,7 +546,6 @@ mn_shell_update_icon (MNShell * self)
     if (mailboxes)
       {
 	GSList *l;
-	static int old_n_new = 0;
 	int n_new = 0;
 	int n_error = 0;
 	int n_unsupported = 0;
@@ -700,28 +622,6 @@ mn_shell_update_icon (MNShell * self)
 	g_string_free(new_string, TRUE);
 	g_string_free(error_string, TRUE);
 	g_string_free(unsupported_string, TRUE);
-	
-	if (old_n_new == 0 && n_new > 0)
-	  {
-	    gnome_triggers_do(_("You have new mail."), NULL, "mail-notification", "new-mail", NULL);
-	    if (eel_gconf_get_boolean(MN_CONF_COMMANDS_NEW_MAIL_ENABLED))
-	      {
-		char *command;
-		
-		command = eel_gconf_get_string(MN_CONF_COMMANDS_NEW_MAIL_COMMAND);
-		if (command)
-		  {
-		    if (gnome_execute_shell(NULL, command) < 0)
-		      mn_error_dialog(NULL,
-				      _("A command error has occurred in Mail Notification"),
-				      _("Unable to execute new mail command: %s."),
-				      g_strerror(errno));
-		    
-		    g_free(command);
-		  }
-	      }
-	  }
-	old_n_new = n_new;
       }
     
     if (show || blink)
@@ -736,36 +636,36 @@ mn_shell_update_icon (MNShell * self)
     if (tooltip)
       g_string_free(tooltip, TRUE);
   }}
-#line 740 "mn-shell.c"
+#line 640 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 354 "mn-shell.gob"
+#line 310 "mn-shell.gob"
 MNShell * 
 mn_shell_new (void)
-#line 746 "mn-shell.c"
+#line 646 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::new"
 {
-#line 356 "mn-shell.gob"
+#line 312 "mn-shell.gob"
 	
     return MN_SHELL(GET_NEW);
   }}
-#line 754 "mn-shell.c"
+#line 654 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 360 "mn-shell.gob"
+#line 316 "mn-shell.gob"
 void 
 mn_shell_display_about (MNShell * self)
-#line 760 "mn-shell.c"
+#line 660 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::display_about"
-#line 360 "mn-shell.gob"
+#line 316 "mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 360 "mn-shell.gob"
+#line 316 "mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 767 "mn-shell.c"
+#line 667 "mn-shell.c"
 {
-#line 362 "mn-shell.gob"
+#line 318 "mn-shell.gob"
 	
     if (selfp->about)
       {
@@ -774,25 +674,25 @@ mn_shell_display_about (MNShell * self)
       }
     
     selfp->about = mn_about_dialog_new();
-    g_object_add_weak_pointer(G_OBJECT(selfp->about), (gpointer *) &selfp->about);
+    eel_add_weak_pointer(&selfp->about);
     gtk_widget_show(GTK_WIDGET(selfp->about));
   }}
-#line 781 "mn-shell.c"
+#line 681 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 374 "mn-shell.gob"
+#line 330 "mn-shell.gob"
 void 
 mn_shell_run_welcome (MNShell * self)
-#line 787 "mn-shell.c"
+#line 687 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::run_welcome"
-#line 374 "mn-shell.gob"
+#line 330 "mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 374 "mn-shell.gob"
+#line 330 "mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 794 "mn-shell.c"
+#line 694 "mn-shell.c"
 {
-#line 376 "mn-shell.gob"
+#line 332 "mn-shell.gob"
 	
     GtkWidget *dialog;
     int response;
@@ -806,24 +706,24 @@ mn_shell_run_welcome (MNShell * self)
     if (response == GTK_RESPONSE_OK)
       mn_properties_display();
   }}
-#line 810 "mn-shell.c"
+#line 710 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 390 "mn-shell.gob"
+#line 346 "mn-shell.gob"
 void 
 mn_shell_report (MNShell * self, char ** report)
-#line 816 "mn-shell.c"
+#line 716 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::report"
-#line 390 "mn-shell.gob"
+#line 346 "mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 390 "mn-shell.gob"
+#line 346 "mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 390 "mn-shell.gob"
+#line 346 "mn-shell.gob"
 	g_return_if_fail (report != NULL);
-#line 825 "mn-shell.c"
+#line 725 "mn-shell.c"
 {
-#line 392 "mn-shell.gob"
+#line 348 "mn-shell.gob"
 	
     GString *string;
     GSList *l;
@@ -849,5 +749,5 @@ mn_shell_report (MNShell * self, char ** report)
     *report = string->str;
     g_string_free(string, FALSE);
   }}
-#line 853 "mn-shell.c"
+#line 753 "mn-shell.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-shell.gob b/src/mn-shell.gob
@@ -16,6 +16,8 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+requires 2.0.10
+
 %headertop{
 #include "mn-mailboxes.h"
 %}
@@ -26,12 +28,15 @@
 #include "config.h"
 #include <errno.h>
 #include <gnome.h>
+#include <eel/eel.h>
 #include "mn-properties.h"
 #include "mn-util.h"
 #include "mn-conf.h"
 #include "mn-mailboxes.h"
 #include "mn-unsupported-mailbox.h"
 #include "mn-about-dialog.h"
+#include "mn-summary-popup.h"
+#include "mn-summary-dialog.h"
 
   MNShell *mn_shell = NULL;
 %}
@@ -45,14 +50,21 @@ class MN:Shell from G:Object
   init (self)
   {
     g_return_if_fail(mn_shell == NULL);
-    g_object_add_weak_pointer(G_OBJECT(self), (gpointer *) &mn_shell);
+    mn_shell = self;
+    eel_add_weak_pointer(&mn_shell);
 
     self_init_icon(self);
-    eel_gconf_notification_add(MN_CONF_COMMANDS_DOUBLE_CLICKED_COMMAND, self_notify_double_clicked_command_cb, self);
     eel_gconf_notification_add(MN_CONF_BLINK_ON_ERRORS, self_notify_blink_on_errors_cb, self);
 
-    g_signal_connect(G_OBJECT(self->mailboxes), "list-changed", G_CALLBACK(self_mailboxes_list_changed_h), self);
-    g_signal_connect(G_OBJECT(self->mailboxes), "status-changed", G_CALLBACK(self_mailboxes_status_changed_h), 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_icon, self,
+		     "swapped-signal::has-new-changed", self_update_icon, self,
+		     "swapped-signal::error-changed", self_update_icon, self,
+		     NULL);
+
+    mn_summary_popup_init();
   }
 
   override (G:Object) void
@@ -63,22 +75,32 @@ class MN:Shell from G:Object
   }
   
   private void
-    mailboxes_list_changed_h (MN:Mailboxes *mailboxes (check null type),
-			      gpointer user_data (check null))
-  {
-    Self *self = user_data;
-    
-    self_update_sensitivity(self);
-    self_update_icon(self);
-  }
-
-  private void
-    mailboxes_status_changed_h (MN:Mailboxes *mailboxes (check null type),
-				gpointer user_data (check null))
+    mailboxes_messages_changed_h (MN:Mailboxes *mailboxes (check null type),
+				  gboolean has_new,
+				  gpointer user_data (check null))
   {
-    Self *self = user_data;
-
-    self_update_icon(self);
+    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))
+	  {
+	    char *command;
+		
+	    command = eel_gconf_get_string(MN_CONF_COMMANDS_NEW_MAIL_COMMAND);
+	    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 new mail command: %s."),
+				  g_strerror(errno));
+		    
+		g_free(command);
+	      }
+	  }
+      }
   }
   
   private void
@@ -86,34 +108,22 @@ class MN:Shell from G:Object
   {
     selfp->icon = MN_MAIL_ICON(mn_mail_icon_new());
 
-    g_signal_connect(G_OBJECT(selfp->icon), "activate", G_CALLBACK(self_icon_activate_h), self);
-    g_signal_connect(G_OBJECT(selfp->icon), "activate-run", G_CALLBACK(self_icon_activate_run_h), self);
-    g_signal_connect(G_OBJECT(selfp->icon), "activate-update", G_CALLBACK(self_icon_activate_update_h), self);
-    g_signal_connect(G_OBJECT(selfp->icon), "activate-properties", G_CALLBACK(self_icon_activate_properties_h), self);
-    g_signal_connect(G_OBJECT(selfp->icon), "activate-help", G_CALLBACK(self_icon_activate_help_h), self);
-    g_signal_connect(G_OBJECT(selfp->icon), "activate-about", G_CALLBACK(self_icon_activate_about_h), self);
-    g_signal_connect(G_OBJECT(selfp->icon), "activate-remove", G_CALLBACK(self_icon_activate_remove_h), self);
-    g_signal_connect(G_OBJECT(selfp->icon), "destroy", G_CALLBACK(self_icon_destroy_h), self);
-
-    self_update_command(self);
+    g_object_connect(selfp->icon,
+		     "signal::activate", self_icon_activate_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,
+		     "signal::activate-help", self_icon_activate_help_h, self,
+		     "signal::activate-about", self_icon_activate_about_h, self,
+		     "signal::activate-remove", self_icon_activate_remove_h, self,
+		     "signal::destroy", self_icon_destroy_h, self,
+		     NULL);
+		     
     self_update_sensitivity(self);
     self_update_icon(self);
   }
 
   private void
-    notify_double_clicked_command_cb (GConfClient *client,
-				      guint cnxn_id,
-				      GConfEntry *entry,
-				      gpointer user_data (check null))
-  {
-    Self *self = user_data;
-
-    GDK_THREADS_ENTER();
-    self_update_command(self);
-    GDK_THREADS_LEAVE();
-  }
-
-  private void
     notify_blink_on_errors_cb (GConfClient *client,
 			       guint cnxn_id,
 			       GConfEntry *entry,
@@ -130,17 +140,14 @@ class MN:Shell from G:Object
     icon_activate_h (MN:Mail:Icon *icon (check null type),
 		     gpointer user_data (check null))
   {
-    Self *self = user_data;
-    if (eel_gconf_get_boolean(MN_CONF_COMMANDS_DOUBLE_CLICKED_ENABLED))
-      self_run_double_clicked_command(self);
+    mn_summary_dialog_display();
   }
 
   private void
-    icon_activate_run_h (MN:Mail:Icon *icon (check null type),
-			 gpointer user_data (check null))
+    icon_activate_summary_h (MN:Mail:Icon *icon (check null type),
+			     gpointer user_data (check null))
   {
-    Self *self = user_data;
-    self_run_double_clicked_command(self);
+    mn_summary_dialog_display();
   }
   
   private void
@@ -162,7 +169,7 @@ class MN:Shell from G:Object
     icon_activate_help_h (MN:Mail:Icon *icon (check null type),
 			  gpointer user_data (check null))
   {
-    mn_display_help(NULL);
+    mn_display_help(NULL, NULL);
   }
   
   private void
@@ -192,37 +199,9 @@ class MN:Shell from G:Object
   }
 
   private void
-    run_double_clicked_command (self)
-  {
-    char *command;
-
-    command = eel_gconf_get_string(MN_CONF_COMMANDS_DOUBLE_CLICKED_COMMAND);
-    if (command)
-      {
-	if (gnome_execute_shell(NULL, command) < 0)
-	  mn_error_dialog(NULL,
-			  _("A command error has occurred"),
-			  _("Unable to execute double-clicked command: %s."),
-			  g_strerror(errno));
-	
-	g_free(command);
-      }
-  }
-
-  private void
-    update_command (self)
-  {
-    char *command;
-
-    command = eel_gconf_get_string(MN_CONF_COMMANDS_DOUBLE_CLICKED_COMMAND);
-    mn_mail_icon_set_command(selfp->icon, command);
-    g_free(command);
-  }
-  
-  private void
     update_sensitivity (self)
   {
-    gtk_widget_set_sensitive(selfp->icon->update_item, mn_mailboxes_has_manual(self->mailboxes));
+    gtk_widget_set_sensitive(selfp->icon->update_item, mn_mailboxes_get_must_poll(self->mailboxes));
   }
 
   private void
@@ -237,7 +216,6 @@ class MN:Shell from G:Object
     if (mailboxes)
       {
 	GSList *l;
-	static int old_n_new = 0;
 	int n_new = 0;
 	int n_error = 0;
 	int n_unsupported = 0;
@@ -314,28 +292,6 @@ class MN:Shell from G:Object
 	g_string_free(new_string, TRUE);
 	g_string_free(error_string, TRUE);
 	g_string_free(unsupported_string, TRUE);
-	
-	if (old_n_new == 0 && n_new > 0)
-	  {
-	    gnome_triggers_do(_("You have new mail."), NULL, "mail-notification", "new-mail", NULL);
-	    if (eel_gconf_get_boolean(MN_CONF_COMMANDS_NEW_MAIL_ENABLED))
-	      {
-		char *command;
-		
-		command = eel_gconf_get_string(MN_CONF_COMMANDS_NEW_MAIL_COMMAND);
-		if (command)
-		  {
-		    if (gnome_execute_shell(NULL, command) < 0)
-		      mn_error_dialog(NULL,
-				      _("A command error has occurred in Mail Notification"),
-				      _("Unable to execute new mail command: %s."),
-				      g_strerror(errno));
-		    
-		    g_free(command);
-		  }
-	      }
-	  }
-	old_n_new = n_new;
       }
     
     if (show || blink)
@@ -367,7 +323,7 @@ class MN:Shell from G:Object
       }
     
     selfp->about = mn_about_dialog_new();
-    g_object_add_weak_pointer(G_OBJECT(selfp->about), (gpointer *) &selfp->about);
+    eel_add_weak_pointer(&selfp->about);
     gtk_widget_show(GTK_WIDGET(selfp->about));
   }
 
diff --git a/src/mn-shell.h b/src/mn-shell.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-soup.c b/src/mn-soup.c
@@ -33,72 +33,16 @@
 #define CONF_PROXY_SOCKS_HOST			CONF_PROXY_NAMESPACE "/socks_host"
 #define CONF_PROXY_SOCKS_PORT			CONF_PROXY_NAMESPACE "/socks_port"
 
-/*** variables ***************************************************************/
-
-static int use_count = 0;
-G_LOCK_DEFINE_STATIC(use_count);
-static unsigned int http_proxy_notification_id;
-static unsigned int proxy_notification_id;
-
 /*** functions ***************************************************************/
 
-static void mn_soup_notify_proxy_cb (GConfClient *client,
-				     unsigned int cnxn_id,
-				     GConfEntry *entry,
-				     gpointer user_data);
-static void mn_soup_update_proxy (void);
+static char *mn_soup_build_proxy_uri (void);
 
 /*** implementation **********************************************************/
 
-void
-mn_soup_use (void)
-{
-  G_LOCK(use_count);
-  if (++use_count == 1)
-    {
-      eel_gconf_monitor_add(CONF_HTTP_PROXY_NAMESPACE);
-      eel_gconf_monitor_add(CONF_PROXY_NAMESPACE);
-
-      mn_soup_update_proxy();
-
-      http_proxy_notification_id = eel_gconf_notification_add(CONF_HTTP_PROXY_NAMESPACE, mn_soup_notify_proxy_cb, NULL);
-      proxy_notification_id = eel_gconf_notification_add(CONF_PROXY_NAMESPACE, mn_soup_notify_proxy_cb, NULL);
-    }
-  G_UNLOCK(use_count);
-}
-
-void
-mn_soup_unuse (void)
-{
-  G_LOCK(use_count);
-  g_return_if_fail(use_count > 0);
-  if (--use_count == 0)
-    {
-      eel_gconf_notification_remove(http_proxy_notification_id);
-      eel_gconf_notification_remove(proxy_notification_id);
-      eel_gconf_monitor_remove(CONF_HTTP_PROXY_NAMESPACE);
-      eel_gconf_monitor_remove(CONF_PROXY_NAMESPACE);
-
-      soup_shutdown();
-    }
-  G_UNLOCK(use_count);
-}
-
-static void
-mn_soup_notify_proxy_cb (GConfClient *client,
-			 unsigned int cnxn_id,
-			 GConfEntry *entry,
-			 gpointer user_data)
+static char *
+mn_soup_build_proxy_uri (void)
 {
-  GDK_THREADS_ENTER();
-  mn_soup_update_proxy();
-  GDK_THREADS_LEAVE();
-}
- 
-static void
-mn_soup_update_proxy (void)
-{
-  SoupContext *context = NULL;
+  char *uri = NULL;
   char *mode;
 
   mode = eel_gconf_get_string(CONF_PROXY_MODE);
@@ -114,7 +58,6 @@ mn_soup_update_proxy (void)
 	      if (*socks_host)
 		{
 		  int socks_port;
-		  char *uri;
 
 		  socks_port = eel_gconf_get_integer(CONF_PROXY_SOCKS_PORT);
 		  if (socks_port <= 0 || socks_port > 65535)
@@ -122,9 +65,6 @@ mn_soup_update_proxy (void)
 
 		  /* we assume it's a Socks 5 proxy, since it is not specified */
 		  uri = g_strdup_printf("socks5://%s:%i", socks_host, socks_port);
-		  context = soup_context_get(uri);
-		  
-		  g_free(uri);
 		}
 
 	      g_free(socks_host);
@@ -133,7 +73,7 @@ mn_soup_update_proxy (void)
       g_free(mode);
     }
   
-  if (! context)
+  if (! uri)
     {
       if (eel_gconf_get_boolean(CONF_HTTP_PROXY_USE_HTTP_PROXY))
 	{
@@ -146,10 +86,10 @@ mn_soup_update_proxy (void)
 	    {
 	      if (*host)
 		{
-		  GString *uri;
+		  GString *string;
 		  int port;
 	      
-		  uri = g_string_new("http://");
+		  string = g_string_new("http://");
 		  
 		  port = eel_gconf_get_integer(CONF_HTTP_PROXY_PORT);
 		  if (port <= 0 || port > 65535)
@@ -165,16 +105,14 @@ mn_soup_update_proxy (void)
 		      
 		      if (authentication_user && authentication_password
 			  && *authentication_user && *authentication_password)
-			g_string_append_printf(uri, "%s:%s@", authentication_user, authentication_password);
+			g_string_append_printf(string, "%s:%s@", authentication_user, authentication_password);
 		      
 		      g_free(authentication_user);
 		      g_free(authentication_password);
 		    }
 	      
-		  g_string_append_printf(uri, "%s:%i", host, port);
-	      
-		  context = soup_context_get(uri->str);
-		  g_string_free(uri, TRUE);
+		  g_string_append_printf(string, "%s:%i", host, port);
+		  uri = g_string_free(string, FALSE);
 		}
 
 	      g_free(host);
@@ -182,7 +120,18 @@ mn_soup_update_proxy (void)
 	}
     }
 
-  soup_set_proxy(context);
-  if (context)
-    soup_context_unref(context);
+  return uri;
+}
+
+SoupSession *
+mn_soup_session_new (void)
+{
+  char *proxy_uri;
+  SoupSession *session;
+
+  proxy_uri = mn_soup_build_proxy_uri();
+  session = soup_session_async_new_with_options(SOUP_SESSION_PROXY_URI, proxy_uri, NULL);
+  g_free(proxy_uri);
+
+  return session;
 }
diff --git a/src/mn-soup.h b/src/mn-soup.h
@@ -19,7 +19,8 @@
 #ifndef _MN_SOUP_H
 #define _MN_SOUP_H
 
-void mn_soup_use (void);
-void mn_soup_unuse (void);
+#include <libsoup/soup.h>
+
+SoupSession *mn_soup_session_new (void);
 
 #endif /* _MN_SOUP_H */
diff --git a/src/mn-stock.c b/src/mn-stock.c
@@ -26,6 +26,7 @@
 
 static const GtkStockItem items[] = {
   { MN_STOCK_SELECT_ALL, N_("Select _All"), 0, 0, NULL },
+  { MN_STOCK_MAIL_SUMMARY, N_("_Mail Summary"), 0, 0, NULL }
 };
 
 /*** implementation **********************************************************/
@@ -47,7 +48,8 @@ mn_stock_init (void)
     { MN_STOCK_GMAIL,		"gmail.png", NULL		},
 #endif
     { MN_STOCK_SYSTEM_MAILBOX,	NULL, "gnome-system"		},
-    { MN_STOCK_SELECT_ALL,	NULL, "stock_select-all"	}
+    { MN_STOCK_SELECT_ALL,	NULL, "stock_select-all"	},
+    { MN_STOCK_MAIL_SUMMARY,	"mail-notification.png", NULL	}
   };
   GtkIconFactory *factory;
   GtkIconTheme *icon_theme;
diff --git a/src/mn-stock.h b/src/mn-stock.h
@@ -30,6 +30,7 @@
 #endif
 #define MN_STOCK_SYSTEM_MAILBOX		"mail-notification-system-mailbox"
 #define MN_STOCK_SELECT_ALL		"mail-notification-select-all"
+#define MN_STOCK_MAIL_SUMMARY		"mail-notification-mail-summary"
 
 void mn_stock_init (void);
 
diff --git a/src/mn-summary-dialog.c b/src/mn-summary-dialog.c
@@ -0,0 +1,128 @@
+/* 
+ * 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.
+ */
+
+#include "config.h"
+#include <glib/gi18n-lib.h>
+#include <eel/eel.h>
+#include "mn-util.h"
+#include "mn-shell.h"
+#include "mn-conf.h"
+#include "mn-summary-popup.h"
+#include "mn-summary.h"
+
+/*** types *******************************************************************/
+
+typedef struct
+{
+  GtkWidget	*dialog;
+
+  GtkWidget	*vbox;
+  GtkWidget	*update_button;
+} SummaryDialog;
+
+/*** variables ***************************************************************/
+
+static SummaryDialog summary = { NULL };
+  
+/*** functions ***************************************************************/
+    
+static void mn_summary_dialog_update (void);
+static void mn_summary_dialog_update_sensitivity (void);
+
+/*** implementation **********************************************************/
+
+void
+mn_summary_dialog_display (void)
+{
+  g_return_if_fail(mn_shell != NULL);
+
+  /* we don't need the popup anymore */
+  mn_summary_popup_destroy();
+
+  if (summary.dialog)
+    {
+      gtk_window_present(GTK_WINDOW(summary.dialog));
+      return;
+    }
+  
+  mn_create_interface("summary-dialog",
+		      "dialog", &summary.dialog,
+		      "vbox", &summary.vbox,
+		      "update_button", &summary.update_button,
+		      NULL);
+
+  eel_add_weak_pointer(&summary.dialog);
+
+  mn_conf_link(summary.dialog, MN_CONF_SUMMARY_DIALOG, NULL);
+
+  mn_summary_dialog_update();
+  mn_summary_dialog_update_sensitivity();
+
+  mn_g_object_connect(summary.dialog,
+		      mn_shell->mailboxes,
+		      "signal::notify::must-poll", mn_summary_dialog_update_sensitivity, NULL,
+		      "signal::messages-changed", mn_summary_dialog_update, NULL,
+		      NULL);
+
+  gtk_widget_show(summary.dialog);
+}
+
+gboolean
+mn_summary_dialog_is_displayed (void)
+{
+  return summary.dialog != NULL;
+}
+
+static void
+mn_summary_dialog_update (void)
+{
+  GSList *messages;
+
+  messages = mn_mailboxes_get_messages(mn_shell->mailboxes);
+  mn_summary_update(GTK_VBOX(summary.vbox), messages, TRUE);
+  mn_g_object_slist_free(messages);
+}
+
+static void
+mn_summary_dialog_update_sensitivity (void)
+{
+  gtk_widget_set_sensitive(summary.update_button, mn_mailboxes_get_must_poll(mn_shell->mailboxes));
+}
+
+/* libglade callbacks */
+
+void
+mn_summary_dialog_response_h (GtkDialog *dialog,
+			      int response,
+			      gpointer user_data)
+{
+  switch (response)
+    {
+    case GTK_RESPONSE_HELP:
+      mn_display_help(GTK_WINDOW(dialog), "mail-summary");
+      break;
+
+    case 1:			/* update */
+      mn_mailboxes_check(mn_shell->mailboxes);
+      break;
+
+    case GTK_RESPONSE_CLOSE:
+      gtk_widget_destroy(summary.dialog);
+      break;
+    }
+}
diff --git a/src/mn-summary-dialog.h b/src/mn-summary-dialog.h
@@ -0,0 +1,27 @@
+/* 
+ * 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.
+ */
+
+#ifndef _MN_SUMMARY_DIALOG_H
+#define _MN_SUMMARY_DIALOG_H
+
+#include <glib.h>
+
+void mn_summary_dialog_display (void);
+gboolean mn_summary_dialog_is_displayed (void);
+
+#endif /* _MN_SUMMARY_DIALOG_H */
diff --git a/src/mn-summary-popup.c b/src/mn-summary-popup.c
@@ -0,0 +1,345 @@
+/* 
+ * 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.
+ */
+
+#include "config.h"
+#include <glib/gi18n-lib.h>
+#include <eel/eel.h>
+#include "mn-summary.h"
+#include "mn-util.h"
+#include "mn-shell.h"
+#include "mn-conf.h"
+#include "mn-stock.h"
+#include "mn-summary-dialog.h"
+#include "mn-summary-popup.h"
+
+/*** types *******************************************************************/
+
+typedef struct
+{
+  gboolean	enabled;
+
+  GtkWidget	*popup;
+  GtkWidget	*image;
+  GtkWidget	*vbox;
+  unsigned int	timeout_id;
+} SummaryPopup;
+
+/*** variables ***************************************************************/
+
+static SummaryPopup popup = { FALSE };
+  
+/*** functions ***************************************************************/
+    
+static void mn_summary_popup_notify_enable_cb (GConfClient *client,
+					       guint cnxn_id,
+					       GConfEntry *entry,
+					       gpointer user_data);
+static void mn_summary_popup_notify_autoclose_cb (GConfClient *client,
+						  guint cnxn_id,
+						  GConfEntry *entry,
+						  gpointer user_data);
+static void mn_summary_popup_notify_delay_cb (GConfClient *client,
+					      guint cnxn_id,
+					      GConfEntry *entry,
+					      gpointer user_data);
+static void mn_summary_popup_notify_geometry_cb (GConfClient *client,
+						 guint cnxn_id,
+						 GConfEntry *entry,
+						 gpointer user_data);
+
+static void mn_summary_popup_enable (void);
+static void mn_summary_popup_disable (void);
+
+static void mn_summary_popup_messages_changed_h (MNMailboxes *mailboxes,
+						 gboolean has_new,
+						 gpointer user_data);
+
+static void mn_summary_popup_update (gboolean has_new);
+static void mn_summary_popup_set_geometry (void);
+
+static void mn_summary_popup_install_timeout (void);
+static void mn_summary_popup_remove_timeout (void);
+
+static gboolean mn_summary_popup_timeout_cb (gpointer data);
+
+/*** implementation **********************************************************/
+
+void
+mn_summary_popup_init (void)
+{
+  g_return_if_fail(mn_shell != NULL);
+
+  if (eel_gconf_get_boolean(MN_CONF_MAIL_SUMMARY_POPUP_ENABLE))
+    mn_summary_popup_enable();
+
+  eel_gconf_notification_add(MN_CONF_MAIL_SUMMARY_POPUP_ENABLE, mn_summary_popup_notify_enable_cb, NULL);
+  eel_gconf_notification_add(MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE, mn_summary_popup_notify_autoclose_cb, NULL);
+  eel_gconf_notification_add(MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_NAMESPACE, mn_summary_popup_notify_delay_cb, NULL);
+  eel_gconf_notification_add(MN_CONF_MAIL_SUMMARY_POPUP_POSITION, mn_summary_popup_notify_geometry_cb, NULL);
+  eel_gconf_notification_add(MN_CONF_MAIL_SUMMARY_POPUP_OFFSET_NAMESPACE, mn_summary_popup_notify_geometry_cb, NULL);
+}
+
+static void
+mn_summary_popup_notify_enable_cb (GConfClient *client,
+				   guint cnxn_id,
+				   GConfEntry *entry,
+				   gpointer user_data)
+{
+  GDK_THREADS_ENTER();
+
+  if (eel_gconf_get_boolean(MN_CONF_MAIL_SUMMARY_POPUP_ENABLE))
+    mn_summary_popup_enable();
+  else
+    mn_summary_popup_disable();
+
+  GDK_THREADS_LEAVE();
+}
+
+static void
+mn_summary_popup_notify_autoclose_cb (GConfClient *client,
+				     guint cnxn_id,
+				     GConfEntry *entry,
+				     gpointer user_data)
+{
+  GDK_THREADS_ENTER();
+
+  if (popup.enabled)
+    {
+      if (eel_gconf_get_boolean(MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE))
+	{
+	  if (popup.popup && ! popup.timeout_id)
+	    mn_summary_popup_install_timeout();
+	}
+      else
+	mn_summary_popup_remove_timeout();
+    }
+
+  GDK_THREADS_LEAVE();
+}
+
+static void
+mn_summary_popup_notify_delay_cb (GConfClient *client,
+				  guint cnxn_id,
+				  GConfEntry *entry,
+				  gpointer user_data)
+{
+  GDK_THREADS_ENTER();
+
+  if (popup.enabled && popup.popup && eel_gconf_get_boolean(MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE))
+    {
+      mn_summary_popup_remove_timeout();
+      mn_summary_popup_install_timeout();
+    }
+
+  GDK_THREADS_LEAVE();
+}
+
+static void
+mn_summary_popup_notify_geometry_cb (GConfClient *client,
+				     guint cnxn_id,
+				     GConfEntry *entry,
+				     gpointer user_data)
+{
+  GDK_THREADS_ENTER();
+
+  if (popup.enabled && popup.popup)
+    mn_summary_popup_set_geometry();
+
+  GDK_THREADS_LEAVE();
+}
+
+static void
+mn_summary_popup_enable (void)
+{
+  if (! popup.enabled)
+    {
+      popup.enabled = TRUE;
+      g_signal_connect(mn_shell->mailboxes, "messages-changed", G_CALLBACK(mn_summary_popup_messages_changed_h), NULL);
+    }
+}
+
+static void
+mn_summary_popup_disable (void)
+{
+  if (popup.enabled)
+    {
+      popup.enabled = FALSE;
+      g_signal_handlers_disconnect_by_func(mn_shell->mailboxes, mn_summary_popup_messages_changed_h, NULL);
+      mn_summary_popup_destroy();
+    }
+}
+
+static void
+mn_summary_popup_messages_changed_h (MNMailboxes *mailboxes,
+				     gboolean has_new,
+				     gpointer user_data)
+{
+  mn_summary_popup_update(has_new);
+}
+
+static void
+mn_summary_popup_update (gboolean has_new)
+{
+  gboolean displayed = FALSE;
+
+  if (popup.popup)
+    {
+      displayed = TRUE;
+      gtk_widget_destroy(popup.popup);
+    }
+
+  if (! mn_summary_dialog_is_displayed() && (displayed || has_new))
+    {
+      GSList *messages;
+
+      messages = mn_mailboxes_get_messages(mn_shell->mailboxes);
+      if (messages)
+	{
+	  mn_create_interface("summary-popup",
+			      "popup", &popup.popup,
+			      "image", &popup.image,
+			      "vbox", &popup.vbox,
+			      NULL);
+	  eel_add_weak_pointer(&popup.popup);
+	  
+	  /*
+	   * The popup must:
+	   *
+	   *	- be sticky
+	   *	- be kept above other windows
+	   *	- not be focusable
+	   *	- not be decorated
+	   *	- not appear in the pager
+	   *	- not appear in the taskbar
+	   *
+	   * An easy way to meet these requirements is to use a window
+	   * of type GTK_WINDOW_POPUP, but unfortunately these are not
+	   * hidden by xscreensaver
+	   * (http://bugzilla.gnome.org/show_bug.cgi?id=154529).
+	   *
+	   * We therefore use a window of type GTK_WINDOW_TOPLEVEL,
+	   * and we set the appropriate properties in the glade file
+	   * and below (but a drawback is
+	   * http://bugzilla.gnome.org/show_bug.cgi?id=154593).
+	   */
+
+	  gtk_window_stick(GTK_WINDOW(popup.popup));
+	  gtk_window_set_keep_above(GTK_WINDOW(popup.popup), TRUE);
+	  gtk_window_set_accept_focus(GTK_WINDOW(popup.popup), FALSE);
+
+	  gtk_widget_realize(popup.popup);
+	  gdk_window_set_decorations(popup.popup->window, GDK_DECOR_BORDER);
+
+	  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_popup_set_geometry();
+	  gtk_widget_show(popup.popup);
+
+	  /* we only reset the timeout if there is new mail */
+	  
+	  if (eel_gconf_get_boolean(MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE) && has_new)
+	    {
+	      mn_summary_popup_remove_timeout();
+	      mn_summary_popup_install_timeout();
+	    }
+	}
+    }
+}
+
+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;
+  
+  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),
+			     (position == MN_POSITION_BOTTOM_LEFT || position == MN_POSITION_BOTTOM_RIGHT) ? '-' : '+',
+			     eel_gconf_get_integer(MN_CONF_MAIL_SUMMARY_POPUP_VERTICAL_OFFSET));
+  gtk_window_parse_geometry(GTK_WINDOW(popup.popup), geometry);
+  g_free(geometry);
+}
+
+void
+mn_summary_popup_destroy (void)
+{
+  if (popup.popup)
+    {
+      mn_summary_popup_remove_timeout();
+      gtk_widget_destroy(popup.popup);
+    }
+}
+
+static void
+mn_summary_popup_install_timeout (void)
+{
+  int minutes;
+  int seconds;
+
+  g_return_if_fail(popup.timeout_id == 0);
+
+  minutes = eel_gconf_get_integer(MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_MINUTES);
+  seconds = eel_gconf_get_integer(MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_SECONDS);
+
+  if (minutes != 0 || seconds != 0)
+    popup.timeout_id = g_timeout_add(((minutes * 60) + seconds) * 1000,
+				     mn_summary_popup_timeout_cb,
+				     NULL);
+}
+
+static void
+mn_summary_popup_remove_timeout (void)
+{
+  if (popup.timeout_id)
+    {
+      g_source_remove(popup.timeout_id);
+      popup.timeout_id = 0;
+    }
+}
+
+static gboolean
+mn_summary_popup_timeout_cb (gpointer data)
+{
+  GDK_THREADS_ENTER();
+  gtk_widget_destroy(popup.popup);
+  GDK_THREADS_LEAVE();
+  
+  return FALSE;			/* remove timeout */
+}
+
+/* libglade callbacks */
+
+gboolean
+mn_summary_popup_button_press_event_h (GtkWidget *widget,
+				       GdkEventButton *button,
+				       gpointer user_data)
+{
+  mn_summary_popup_destroy();
+
+  return TRUE;			/* do not propagate event */
+}
diff --git a/src/mn-summary-popup.h b/src/mn-summary-popup.h
@@ -0,0 +1,25 @@
+/* 
+ * 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.
+ */
+
+#ifndef _MN_SUMMARY_POPUP_H
+#define _MN_SUMMARY_POPUP_H
+
+void mn_summary_popup_init (void);
+void mn_summary_popup_destroy (void);
+
+#endif /* _MN_SUMMARY_POPUP_H */
diff --git a/src/mn-summary.c b/src/mn-summary.c
@@ -0,0 +1,52 @@
+/* 
+ * 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.
+ */
+
+#include <gtk/gtk.h>
+#include "mn-util.h"
+#include "mn-message-label.h"
+
+void
+mn_summary_update (GtkVBox *vbox, GSList *messages, gboolean selectable)
+{
+  GSList *l;
+
+  g_return_if_fail(GTK_IS_VBOX(vbox));
+
+  gtk_container_foreach(GTK_CONTAINER(vbox), (GtkCallback) gtk_widget_destroy, NULL);
+
+  MN_LIST_FOREACH(l, messages)
+    {
+      MNMessage *message = l->data;
+      GtkWidget *label;
+
+      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);
+
+      gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
+      gtk_widget_show(label);
+
+      if (l->next)
+	{			/* spacing between messages */
+	  label = gtk_label_new(NULL);
+	  gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
+	  gtk_widget_show(label);
+	}
+    }
+}
diff --git a/src/mn-summary.h b/src/mn-summary.h
@@ -0,0 +1,26 @@
+/* 
+ * 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.
+ */
+
+#ifndef _MN_SUMMARY_H
+#define _MN_SUMMARY_H
+
+#include <gtk/gtk.h>
+
+void mn_summary_update (GtkVBox *vbox, GSList *messages, gboolean selectable);
+
+#endif /* _MN_SUMMARY_H */
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.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (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,14 +1,16 @@
-/* Generated by GOB (v2.0.9) on Thu Sep  9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct  6 19:29:52 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 9
+#define GOB_VERSION_PATCHLEVEL 10
 
 #define selfp (self->_priv)
 
+#include <string.h> /* memset() */
+
 #include "mn-sylpheed-mailbox.h"
 
 #include "mn-sylpheed-mailbox-private.h"
@@ -21,15 +23,33 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 22 "mn-sylpheed-mailbox.gob"
+#line 24 "mn-sylpheed-mailbox.gob"
 
 #include "config.h"
+#include <stdlib.h>
 #include <glib/gi18n-lib.h>
 #include "mn-mailbox-private.h"
 #include "mn-vfs.h"
 #include "mn-util.h"
+#ifdef WITH_MIME
+#include "mn-message-mime.h"
+#endif
+
+/* taken from procmsg.h in the Sylpheed sources */
+#define SYLPHEED_MSG_NEW		(1U << 0)
+#define SYLPHEED_MSG_UNREAD		(1U << 1)
+
+/* taken from defs.h in the Sylpheed sources */
+#define SYLPHEED_MARK_FILE		".sylpheed_mark"
+#define SYLPHEED_MARK_VERSION		2
 
-#line 33 "mn-sylpheed-mailbox.c"
+  typedef struct
+  {
+    int		num;
+    guint32	flags;
+  } MarkEntry;
+
+#line 53 "mn-sylpheed-mailbox.c"
 /* self casting macros */
 #define SELF(x) MN_SYLPHEED_MAILBOX(x)
 #define SELF_CONST(x) MN_SYLPHEED_MAILBOX_CONST(x)
@@ -49,10 +69,13 @@ static void mn_sylpheed_mailbox_class_init (MNSylpheedMailboxClass * class) G_GN
 static GObject * ___2_mn_sylpheed_mailbox_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_params) G_GNUC_UNUSED;
 static gboolean ___3_mn_sylpheed_mailbox_impl_is (MNMailbox * dummy, MNURI * uri) G_GNUC_UNUSED;
 static void ___4_mn_sylpheed_mailbox_impl_threaded_check (MNMailbox * self) G_GNUC_UNUSED;
+static GHashTable * mn_sylpheed_mailbox_get_seen_numbers (MNSylpheedMailbox * self) G_GNUC_UNUSED;
 
 /* pointer to the class of our parent */
 static MNMailboxClass *parent_class = NULL;
 
+/* Short form macros */
+#define self_get_seen_numbers mn_sylpheed_mailbox_get_seen_numbers
 GType
 mn_sylpheed_mailbox_get_type (void)
 {
@@ -101,10 +124,10 @@ mn_sylpheed_mailbox_init (MNSylpheedMailbox * o G_GNUC_UNUSED)
 #define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox::init"
 }
 #undef __GOB_FUNCTION__
-#line 32 "mn-sylpheed-mailbox.gob"
+#line 52 "mn-sylpheed-mailbox.gob"
 static void 
 mn_sylpheed_mailbox_class_init (MNSylpheedMailboxClass * class G_GNUC_UNUSED)
-#line 108 "mn-sylpheed-mailbox.c"
+#line 131 "mn-sylpheed-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox::class_init"
 	GObjectClass *g_object_class = (GObjectClass *)class;
@@ -112,29 +135,29 @@ mn_sylpheed_mailbox_class_init (MNSylpheedMailboxClass * class G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (MN_TYPE_MAILBOX);
 
-#line 37 "mn-sylpheed-mailbox.gob"
+#line 57 "mn-sylpheed-mailbox.gob"
 	g_object_class->constructor = ___2_mn_sylpheed_mailbox_constructor;
-#line 61 "mn-sylpheed-mailbox.gob"
+#line 81 "mn-sylpheed-mailbox.gob"
 	mn_mailbox_class->impl_is = ___3_mn_sylpheed_mailbox_impl_is;
-#line 78 "mn-sylpheed-mailbox.gob"
+#line 98 "mn-sylpheed-mailbox.gob"
 	mn_mailbox_class->impl_threaded_check = ___4_mn_sylpheed_mailbox_impl_threaded_check;
-#line 122 "mn-sylpheed-mailbox.c"
+#line 145 "mn-sylpheed-mailbox.c"
  {
-#line 33 "mn-sylpheed-mailbox.gob"
+#line 53 "mn-sylpheed-mailbox.gob"
 
     MN_MAILBOX_CLASS(class)->format = "Sylpheed";
   
-#line 128 "mn-sylpheed-mailbox.c"
+#line 151 "mn-sylpheed-mailbox.c"
  }
 }
 #undef __GOB_FUNCTION__
 
 
 
-#line 37 "mn-sylpheed-mailbox.gob"
+#line 57 "mn-sylpheed-mailbox.gob"
 static GObject * 
 ___2_mn_sylpheed_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_properties, GObjectConstructParam * construct_params)
-#line 138 "mn-sylpheed-mailbox.c"
+#line 161 "mn-sylpheed-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): \
@@ -142,7 +165,7 @@ ___2_mn_sylpheed_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construc
 {
 #define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox::constructor"
 {
-#line 39 "mn-sylpheed-mailbox.gob"
+#line 59 "mn-sylpheed-mailbox.gob"
 	
     GObject *object;
     MNMailbox *self;
@@ -164,27 +187,27 @@ ___2_mn_sylpheed_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construc
 
     return object;
   }}
-#line 168 "mn-sylpheed-mailbox.c"
+#line 191 "mn-sylpheed-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 61 "mn-sylpheed-mailbox.gob"
+#line 81 "mn-sylpheed-mailbox.gob"
 static gboolean 
 ___3_mn_sylpheed_mailbox_impl_is (MNMailbox * dummy G_GNUC_UNUSED, MNURI * uri)
-#line 175 "mn-sylpheed-mailbox.c"
+#line 198 "mn-sylpheed-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:Sylpheed:Mailbox::impl_is"
-#line 61 "mn-sylpheed-mailbox.gob"
+#line 81 "mn-sylpheed-mailbox.gob"
 	g_return_val_if_fail (uri != NULL, (gboolean )0);
-#line 61 "mn-sylpheed-mailbox.gob"
+#line 81 "mn-sylpheed-mailbox.gob"
 	g_return_val_if_fail (MN_IS_URI (uri), (gboolean )0);
-#line 186 "mn-sylpheed-mailbox.c"
+#line 209 "mn-sylpheed-mailbox.c"
 {
-#line 63 "mn-sylpheed-mailbox.gob"
+#line 83 "mn-sylpheed-mailbox.gob"
 	
     gboolean is = FALSE;
 
@@ -192,40 +215,49 @@ ___3_mn_sylpheed_mailbox_impl_is (MNMailbox * dummy G_GNUC_UNUSED, MNURI * uri)
       {
 	GnomeVFSURI *markfile_uri;
 
-	markfile_uri = gnome_vfs_uri_append_file_name(uri->vfs, ".sylpheed_mark");
+	markfile_uri = gnome_vfs_uri_append_file_name(uri->vfs, SYLPHEED_MARK_FILE);
 	is = mn_vfs_test(markfile_uri, G_FILE_TEST_IS_REGULAR);
 	gnome_vfs_uri_unref(markfile_uri);
       }
 
     return is;
   }}
-#line 203 "mn-sylpheed-mailbox.c"
+#line 226 "mn-sylpheed-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 78 "mn-sylpheed-mailbox.gob"
+#line 98 "mn-sylpheed-mailbox.gob"
 static void 
 ___4_mn_sylpheed_mailbox_impl_threaded_check (MNMailbox * self G_GNUC_UNUSED)
-#line 210 "mn-sylpheed-mailbox.c"
+#line 233 "mn-sylpheed-mailbox.c"
 #define PARENT_HANDLER(___self) \
 	{ if(MN_MAILBOX_CLASS(parent_class)->impl_threaded_check) \
 		(* MN_MAILBOX_CLASS(parent_class)->impl_threaded_check)(___self); }
 {
 #define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox::impl_threaded_check"
-#line 78 "mn-sylpheed-mailbox.gob"
+#line 98 "mn-sylpheed-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 78 "mn-sylpheed-mailbox.gob"
+#line 98 "mn-sylpheed-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 220 "mn-sylpheed-mailbox.c"
+#line 243 "mn-sylpheed-mailbox.c"
 {
-#line 80 "mn-sylpheed-mailbox.gob"
+#line 100 "mn-sylpheed-mailbox.gob"
 	
     GnomeVFSResult result;
     GnomeVFSResult close_result;
     GnomeVFSDirectoryHandle *handle;
     GnomeVFSFileInfo *file_info;
+#ifdef WITH_MIME
+    GHashTable *seen_numbers;
+    GSList *messages = NULL;
+#else /* WITH_MIME */
     int total_count = 0;
     int mark_count = 0;
+#endif /* WITH_MIME */
+
+#ifdef WITH_MIME
+    seen_numbers = self_get_seen_numbers(SELF(self));
+#endif
 
     result = gnome_vfs_directory_open_from_uri(&handle, self->uri->vfs, GNOME_VFS_FILE_INFO_FOLLOW_LINKS);
     if (result != GNOME_VFS_OK)
@@ -247,14 +279,31 @@ ___4_mn_sylpheed_mailbox_impl_threaded_check (MNMailbox * self G_GNUC_UNUSED)
 	if (file_info->name[0] != '.')
 	  {
 	    if (mn_str_isnumeric(file_info->name))
-	      total_count++;
+	      {
+#ifdef WITH_MIME
+		int num = atoi(file_info->name);
+		
+		if (! g_hash_table_lookup(seen_numbers, GINT_TO_POINTER(num)))
+		  {
+		    GnomeVFSURI *message_uri;
+
+		    message_uri = gnome_vfs_uri_append_file_name(self->uri->vfs, file_info->name);
+		    messages = g_slist_append(messages, mn_message_new_from_uri(self->uri, message_uri));
+		    gnome_vfs_uri_unref(message_uri);
+		  }
+#else /* WITH_MIME */
+		total_count++;
+#endif
+	      }
 	  }
-	else if (! strcmp(file_info->name, ".sylpheed_mark") && file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_SIZE)
+#ifndef WITH_MIME
+	else if (! strcmp(file_info->name, SYLPHEED_MARK_FILE) && file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_SIZE)
 	  /*
 	   * Format of a Sylpheed markfile:
-	   * int version, int num, int flags, int num, int flags, ...
+	   * int version, int num, guint32 flags, int num, guint32 flags, ...
 	   */
-	  mark_count = (file_info->size - sizeof(int)) / (sizeof(int) * 2);
+	  mark_count = (file_info->size - sizeof(int)) / (sizeof(int) + sizeof(guint32));
+#endif /* ! WITH_MIME */
       }
     gnome_vfs_file_info_unref(file_info);
     close_result = gnome_vfs_directory_close(handle);
@@ -264,7 +313,14 @@ ___4_mn_sylpheed_mailbox_impl_threaded_check (MNMailbox * self G_GNUC_UNUSED)
     if (result == GNOME_VFS_ERROR_EOF)
       {
 	if (close_result == GNOME_VFS_OK)
-	  mn_mailbox_set_has_new(self, total_count != mark_count);
+	  {
+#ifdef WITH_MIME
+	    mn_mailbox_set_has_new(self, messages != NULL);
+	    mn_mailbox_set_messages(self, messages);
+#else /* WITH_MIME */
+	    mn_mailbox_set_has_new(self, total_count != mark_count);
+#endif
+	  }
 	else
 	  mn_mailbox_set_error(self, _("unable to close folder: %s"), gnome_vfs_result_to_string(close_result));
       }
@@ -274,7 +330,64 @@ ___4_mn_sylpheed_mailbox_impl_threaded_check (MNMailbox * self G_GNUC_UNUSED)
 
     gdk_flush();
     GDK_THREADS_LEAVE();
+
+#ifdef WITH_MIME
+    g_hash_table_destroy(seen_numbers);
+    mn_g_object_slist_free(messages);
+#endif
   }}
-#line 279 "mn-sylpheed-mailbox.c"
+#line 340 "mn-sylpheed-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
+
+#line 195 "mn-sylpheed-mailbox.gob"
+static GHashTable * 
+mn_sylpheed_mailbox_get_seen_numbers (MNSylpheedMailbox * self)
+#line 347 "mn-sylpheed-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox::get_seen_numbers"
+#line 195 "mn-sylpheed-mailbox.gob"
+	g_return_val_if_fail (self != NULL, (GHashTable * )0);
+#line 195 "mn-sylpheed-mailbox.gob"
+	g_return_val_if_fail (MN_IS_SYLPHEED_MAILBOX (self), (GHashTable * )0);
+#line 354 "mn-sylpheed-mailbox.c"
+{
+#line 197 "mn-sylpheed-mailbox.gob"
+	
+#ifdef WITH_MIME
+    GHashTable *seen_numbers;
+    char *uri;
+    int file_size;
+    char *buf;
+    
+    seen_numbers = g_hash_table_new(g_direct_hash, g_direct_equal);
+
+    uri = g_build_path("/", MN_MAILBOX(self)->uri->text, SYLPHEED_MARK_FILE, NULL);
+    if (gnome_vfs_read_entire_file(uri, &file_size, &buf) == GNOME_VFS_OK)
+      {
+	if (file_size >= sizeof(int) && *((int *) buf) == SYLPHEED_MARK_VERSION)
+	  {
+	    int pos = sizeof(int);	/* start after version */
+
+	    while (pos + sizeof(MarkEntry) <= file_size)
+	      {
+		MarkEntry *entry = (MarkEntry *) (buf + pos);
+		
+		if (! (entry->flags & SYLPHEED_MSG_NEW) && ! (entry->flags & SYLPHEED_MSG_UNREAD))
+		  g_hash_table_insert(seen_numbers, GINT_TO_POINTER(entry->num), GINT_TO_POINTER(TRUE));
+		
+		pos += sizeof(MarkEntry);
+	      }
+	  }
+
+	g_free(buf);
+      }
+    g_free(uri);
+    
+    return seen_numbers;
+#else /* WITH_MIME */
+    g_return_val_if_reached(NULL);
+#endif
+  }}
+#line 393 "mn-sylpheed-mailbox.c"
+#undef __GOB_FUNCTION__
diff --git a/src/mn-sylpheed-mailbox.gob b/src/mn-sylpheed-mailbox.gob
@@ -16,15 +16,35 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+requires 2.0.10
+
 %headertop{
 #include "mn-mailbox.h"
 %}
 %{
 #include "config.h"
+#include <stdlib.h>
 #include <glib/gi18n-lib.h>
 #include "mn-mailbox-private.h"
 #include "mn-vfs.h"
 #include "mn-util.h"
+#ifdef WITH_MIME
+#include "mn-message-mime.h"
+#endif
+
+/* taken from procmsg.h in the Sylpheed sources */
+#define SYLPHEED_MSG_NEW		(1U << 0)
+#define SYLPHEED_MSG_UNREAD		(1U << 1)
+
+/* taken from defs.h in the Sylpheed sources */
+#define SYLPHEED_MARK_FILE		".sylpheed_mark"
+#define SYLPHEED_MARK_VERSION		2
+
+  typedef struct
+  {
+    int		num;
+    guint32	flags;
+  } MarkEntry;
 %}
 
 class MN:Sylpheed:Mailbox from MN:Mailbox
@@ -67,7 +87,7 @@ class MN:Sylpheed:Mailbox from MN:Mailbox
       {
 	GnomeVFSURI *markfile_uri;
 
-	markfile_uri = gnome_vfs_uri_append_file_name(uri->vfs, ".sylpheed_mark");
+	markfile_uri = gnome_vfs_uri_append_file_name(uri->vfs, SYLPHEED_MARK_FILE);
 	is = mn_vfs_test(markfile_uri, G_FILE_TEST_IS_REGULAR);
 	gnome_vfs_uri_unref(markfile_uri);
       }
@@ -82,8 +102,17 @@ class MN:Sylpheed:Mailbox from MN:Mailbox
     GnomeVFSResult close_result;
     GnomeVFSDirectoryHandle *handle;
     GnomeVFSFileInfo *file_info;
+#ifdef WITH_MIME
+    GHashTable *seen_numbers;
+    GSList *messages = NULL;
+#else /* WITH_MIME */
     int total_count = 0;
     int mark_count = 0;
+#endif /* WITH_MIME */
+
+#ifdef WITH_MIME
+    seen_numbers = self_get_seen_numbers(SELF(self));
+#endif
 
     result = gnome_vfs_directory_open_from_uri(&handle, self->uri->vfs, GNOME_VFS_FILE_INFO_FOLLOW_LINKS);
     if (result != GNOME_VFS_OK)
@@ -105,14 +134,31 @@ class MN:Sylpheed:Mailbox from MN:Mailbox
 	if (file_info->name[0] != '.')
 	  {
 	    if (mn_str_isnumeric(file_info->name))
-	      total_count++;
+	      {
+#ifdef WITH_MIME
+		int num = atoi(file_info->name);
+		
+		if (! g_hash_table_lookup(seen_numbers, GINT_TO_POINTER(num)))
+		  {
+		    GnomeVFSURI *message_uri;
+
+		    message_uri = gnome_vfs_uri_append_file_name(self->uri->vfs, file_info->name);
+		    messages = g_slist_append(messages, mn_message_new_from_uri(self->uri, message_uri));
+		    gnome_vfs_uri_unref(message_uri);
+		  }
+#else /* WITH_MIME */
+		total_count++;
+#endif
+	      }
 	  }
-	else if (! strcmp(file_info->name, ".sylpheed_mark") && file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_SIZE)
+#ifndef WITH_MIME
+	else if (! strcmp(file_info->name, SYLPHEED_MARK_FILE) && file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_SIZE)
 	  /*
 	   * Format of a Sylpheed markfile:
-	   * int version, int num, int flags, int num, int flags, ...
+	   * int version, int num, guint32 flags, int num, guint32 flags, ...
 	   */
-	  mark_count = (file_info->size - sizeof(int)) / (sizeof(int) * 2);
+	  mark_count = (file_info->size - sizeof(int)) / (sizeof(int) + sizeof(guint32));
+#endif /* ! WITH_MIME */
       }
     gnome_vfs_file_info_unref(file_info);
     close_result = gnome_vfs_directory_close(handle);
@@ -122,7 +168,14 @@ class MN:Sylpheed:Mailbox from MN:Mailbox
     if (result == GNOME_VFS_ERROR_EOF)
       {
 	if (close_result == GNOME_VFS_OK)
-	  mn_mailbox_set_has_new(self, total_count != mark_count);
+	  {
+#ifdef WITH_MIME
+	    mn_mailbox_set_has_new(self, messages != NULL);
+	    mn_mailbox_set_messages(self, messages);
+#else /* WITH_MIME */
+	    mn_mailbox_set_has_new(self, total_count != mark_count);
+#endif
+	  }
 	else
 	  mn_mailbox_set_error(self, _("unable to close folder: %s"), gnome_vfs_result_to_string(close_result));
       }
@@ -132,5 +185,49 @@ class MN:Sylpheed:Mailbox from MN:Mailbox
 
     gdk_flush();
     GDK_THREADS_LEAVE();
+
+#ifdef WITH_MIME
+    g_hash_table_destroy(seen_numbers);
+    mn_g_object_slist_free(messages);
+#endif
+  }
+
+  private GHashTable *
+    get_seen_numbers (self)
+  {
+#ifdef WITH_MIME
+    GHashTable *seen_numbers;
+    char *uri;
+    int file_size;
+    char *buf;
+    
+    seen_numbers = g_hash_table_new(g_direct_hash, g_direct_equal);
+
+    uri = g_build_path("/", MN_MAILBOX(self)->uri->text, SYLPHEED_MARK_FILE, NULL);
+    if (gnome_vfs_read_entire_file(uri, &file_size, &buf) == GNOME_VFS_OK)
+      {
+	if (file_size >= sizeof(int) && *((int *) buf) == SYLPHEED_MARK_VERSION)
+	  {
+	    int pos = sizeof(int);	/* start after version */
+
+	    while (pos + sizeof(MarkEntry) <= file_size)
+	      {
+		MarkEntry *entry = (MarkEntry *) (buf + pos);
+		
+		if (! (entry->flags & SYLPHEED_MSG_NEW) && ! (entry->flags & SYLPHEED_MSG_UNREAD))
+		  g_hash_table_insert(seen_numbers, GINT_TO_POINTER(entry->num), GINT_TO_POINTER(TRUE));
+		
+		pos += sizeof(MarkEntry);
+	      }
+	  }
+
+	g_free(buf);
+      }
+    g_free(uri);
+    
+    return seen_numbers;
+#else /* WITH_MIME */
+    g_return_val_if_reached(NULL);
+#endif
   }
 }
diff --git a/src/mn-sylpheed-mailbox.h b/src/mn-sylpheed-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (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.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (do not edit directly) */
 
 #ifndef __MN_SYSTEM_MAILBOX_PROPERTIES_PRIVATE_H__
 #define __MN_SYSTEM_MAILBOX_PROPERTIES_PRIVATE_H__
@@ -10,9 +10,9 @@ extern "C" {
 #endif /* __cplusplus */
 
 struct _MNSystemMailboxPropertiesPrivate {
-#line 34 "mn-system-mailbox-properties.gob"
+#line 36 "mn-system-mailbox-properties.gob"
 	GtkSizeGroup * size_group;
-#line 40 "mn-system-mailbox-properties.gob"
+#line 42 "mn-system-mailbox-properties.gob"
 	const char * system_uri;
 #line 18 "mn-system-mailbox-properties-private.h"
 };
diff --git a/src/mn-system-mailbox-properties.c b/src/mn-system-mailbox-properties.c
@@ -1,14 +1,16 @@
-/* Generated by GOB (v2.0.9) on Thu Sep  9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct  6 19:29:54 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 9
+#define GOB_VERSION_PATCHLEVEL 10
 
 #define selfp (self->_priv)
 
+#include <string.h> /* memset() */
+
 #include "mn-system-mailbox-properties.h"
 
 #include "mn-system-mailbox-properties-private.h"
@@ -21,14 +23,14 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 22 "mn-system-mailbox-properties.gob"
+#line 24 "mn-system-mailbox-properties.gob"
 
 #include "config.h"
 #include <glib/gi18n-lib.h>
 #include <libgnomevfs/gnome-vfs-utils.h>
 #include "mn-mailbox-properties.h"
 
-#line 32 "mn-system-mailbox-properties.c"
+#line 34 "mn-system-mailbox-properties.c"
 /* self casting macros */
 #define SELF(x) MN_SYSTEM_MAILBOX_PROPERTIES(x)
 #define SELF_CONST(x) MN_SYSTEM_MAILBOX_PROPERTIES_CONST(x)
@@ -68,11 +70,11 @@ static GtkLabelClass *parent_class = NULL;
 static void
 ___MN_Mailbox_Properties_init (MNMailboxPropertiesIface *iface)
 {
-#line 65 "mn-system-mailbox-properties.gob"
+#line 67 "mn-system-mailbox-properties.gob"
 	iface->set_uri = self_set_uri;
-#line 72 "mn-system-mailbox-properties.gob"
+#line 74 "mn-system-mailbox-properties.gob"
 	iface->get_uri = self_get_uri;
-#line 76 "mn-system-mailbox-properties.c"
+#line 78 "mn-system-mailbox-properties.c"
 }
 
 GType
@@ -134,9 +136,9 @@ ___dispose (GObject *obj_self)
 	MNSystemMailboxProperties *self G_GNUC_UNUSED = MN_SYSTEM_MAILBOX_PROPERTIES (obj_self);
 	if (G_OBJECT_CLASS (parent_class)->dispose) \
 		(* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
-#line 34 "mn-system-mailbox-properties.gob"
-	if(self->_priv->size_group) { ((*(void (*)(void *))g_object_unref)) (self->_priv->size_group); self->_priv->size_group = NULL; }
-#line 140 "mn-system-mailbox-properties.c"
+#line 36 "mn-system-mailbox-properties.gob"
+	if(self->_priv->size_group) { g_object_unref ((gpointer) self->_priv->size_group); self->_priv->size_group = NULL; }
+#line 142 "mn-system-mailbox-properties.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -145,11 +147,10 @@ static void
 ___finalize(GObject *obj_self)
 {
 #define __GOB_FUNCTION__ "MN:System:Mailbox:Properties::finalize"
-	MNSystemMailboxProperties *self  G_GNUC_UNUSED = MN_SYSTEM_MAILBOX_PROPERTIES (obj_self);
-	gpointer priv = self->_priv;
+	MNSystemMailboxProperties *self G_GNUC_UNUSED = MN_SYSTEM_MAILBOX_PROPERTIES (obj_self);
+	gpointer priv G_GNUC_UNUSED = self->_priv;
 	if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-	g_free (priv);
 }
 #undef __GOB_FUNCTION__
 
@@ -159,6 +160,8 @@ mn_system_mailbox_properties_class_init (MNSystemMailboxPropertiesClass * c G_GN
 #define __GOB_FUNCTION__ "MN:System:Mailbox:Properties::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
 
+	g_type_class_add_private(c,sizeof(MNSystemMailboxPropertiesPrivate));
+
 	parent_class = g_type_class_ref (GTK_TYPE_LABEL);
 
 	g_object_class->dispose = ___dispose;
@@ -178,15 +181,15 @@ mn_system_mailbox_properties_class_init (MNSystemMailboxPropertiesClass * c G_GN
     }
 }
 #undef __GOB_FUNCTION__
-#line 42 "mn-system-mailbox-properties.gob"
+#line 44 "mn-system-mailbox-properties.gob"
 static void 
 mn_system_mailbox_properties_init (MNSystemMailboxProperties * self G_GNUC_UNUSED)
-#line 185 "mn-system-mailbox-properties.c"
+#line 188 "mn-system-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:System:Mailbox:Properties::init"
-	self->_priv = g_new0 (MNSystemMailboxPropertiesPrivate, 1);
+	self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,TYPE_SELF,MNSystemMailboxPropertiesPrivate);
  {
-#line 43 "mn-system-mailbox-properties.gob"
+#line 45 "mn-system-mailbox-properties.gob"
 
     gtk_label_set_line_wrap(GTK_LABEL(self), TRUE);
     gtk_misc_set_alignment(GTK_MISC(self), 0.0, 0.5);
@@ -208,7 +211,7 @@ mn_system_mailbox_properties_init (MNSystemMailboxProperties * self G_GNUC_UNUSE
     else
       gtk_label_set_text(GTK_LABEL(self), _("The location of your system mailbox could not be detected. Please set the MAIL environment variable."));
   
-#line 212 "mn-system-mailbox-properties.c"
+#line 215 "mn-system-mailbox-properties.c"
  }
 }
 #undef __GOB_FUNCTION__
@@ -227,9 +230,9 @@ ___object_set_property (GObject *object,
 	switch (property_id) {
 	case PROP_SIZE_GROUP:
 		{
-#line 35 "mn-system-mailbox-properties.gob"
+#line 37 "mn-system-mailbox-properties.gob"
 { GObject *___old = (GObject *)self->_priv->size_group; self->_priv->size_group = (void *)g_value_dup_object (VAL); if (___old != NULL) { g_object_unref (G_OBJECT (___old)); } }
-#line 233 "mn-system-mailbox-properties.c"
+#line 236 "mn-system-mailbox-properties.c"
 		}
 		break;
 	default:
@@ -258,23 +261,23 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_LABEL:
 		{
-#line 32 "mn-system-mailbox-properties.gob"
+#line 34 "mn-system-mailbox-properties.gob"
  g_value_set_string(VAL, _("System Mailbox")); 
-#line 264 "mn-system-mailbox-properties.c"
+#line 267 "mn-system-mailbox-properties.c"
 		}
 		break;
 	case PROP_SIZE_GROUP:
 		{
-#line 35 "mn-system-mailbox-properties.gob"
+#line 37 "mn-system-mailbox-properties.gob"
 g_value_set_object (VAL, (gpointer)self->_priv->size_group);
-#line 271 "mn-system-mailbox-properties.c"
+#line 274 "mn-system-mailbox-properties.c"
 		}
 		break;
 	case PROP_COMPLETE:
 		{
-#line 38 "mn-system-mailbox-properties.gob"
+#line 40 "mn-system-mailbox-properties.gob"
  g_value_set_boolean(VAL, selfp->system_uri != NULL); 
-#line 278 "mn-system-mailbox-properties.c"
+#line 281 "mn-system-mailbox-properties.c"
 		}
 		break;
 	default:
@@ -291,42 +294,42 @@ g_value_set_object (VAL, (gpointer)self->_priv->size_group);
 
 
 
-#line 65 "mn-system-mailbox-properties.gob"
+#line 67 "mn-system-mailbox-properties.gob"
 static gboolean 
 mn_system_mailbox_properties_set_uri (MNMailboxProperties * self, MNURI * uri)
-#line 298 "mn-system-mailbox-properties.c"
+#line 301 "mn-system-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:System:Mailbox:Properties::set_uri"
-#line 65 "mn-system-mailbox-properties.gob"
+#line 67 "mn-system-mailbox-properties.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 65 "mn-system-mailbox-properties.gob"
+#line 67 "mn-system-mailbox-properties.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES (self), (gboolean )0);
-#line 65 "mn-system-mailbox-properties.gob"
+#line 67 "mn-system-mailbox-properties.gob"
 	g_return_val_if_fail (uri != NULL, (gboolean )0);
-#line 307 "mn-system-mailbox-properties.c"
+#line 310 "mn-system-mailbox-properties.c"
 {
-#line 68 "mn-system-mailbox-properties.gob"
+#line 70 "mn-system-mailbox-properties.gob"
 	
     return MN_URI_IS_SYSTEM_MAILBOX(uri);
   }}
-#line 313 "mn-system-mailbox-properties.c"
+#line 316 "mn-system-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 72 "mn-system-mailbox-properties.gob"
+#line 74 "mn-system-mailbox-properties.gob"
 static MNURI * 
 mn_system_mailbox_properties_get_uri (MNMailboxProperties * self)
-#line 319 "mn-system-mailbox-properties.c"
+#line 322 "mn-system-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:System:Mailbox:Properties::get_uri"
-#line 72 "mn-system-mailbox-properties.gob"
+#line 74 "mn-system-mailbox-properties.gob"
 	g_return_val_if_fail (self != NULL, (MNURI * )0);
-#line 72 "mn-system-mailbox-properties.gob"
+#line 74 "mn-system-mailbox-properties.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES (self), (MNURI * )0);
-#line 326 "mn-system-mailbox-properties.c"
+#line 329 "mn-system-mailbox-properties.c"
 {
-#line 74 "mn-system-mailbox-properties.gob"
+#line 76 "mn-system-mailbox-properties.gob"
 	
     return mn_uri_new(SELF(self)->_priv->system_uri);
   }}
-#line 332 "mn-system-mailbox-properties.c"
+#line 335 "mn-system-mailbox-properties.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-system-mailbox-properties.gob b/src/mn-system-mailbox-properties.gob
@@ -16,6 +16,8 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+requires 2.0.10
+
 %headertop{
 #include <gtk/gtk.h>
 %}
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.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
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.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (do not edit directly) */
 
 #ifndef __MN_UNSUPPORTED_MAILBOX_PRIVATE_H__
 #define __MN_UNSUPPORTED_MAILBOX_PRIVATE_H__
@@ -10,7 +10,7 @@ extern "C" {
 #endif /* __cplusplus */
 
 struct _MNUnsupportedMailboxPrivate {
-#line 30 "mn-unsupported-mailbox.gob"
+#line 32 "mn-unsupported-mailbox.gob"
 	char * reason;
 #line 16 "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.9) on Thu Sep  9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct  6 19:29:54 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 9
+#define GOB_VERSION_PATCHLEVEL 10
 
 #define selfp (self->_priv)
 
@@ -23,7 +23,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 22 "mn-unsupported-mailbox.gob"
+#line 24 "mn-unsupported-mailbox.gob"
 
 #include "config.h"
 #include <glib/gi18n-lib.h>
@@ -107,14 +107,13 @@ static void
 ___finalize(GObject *obj_self)
 {
 #define __GOB_FUNCTION__ "MN:Unsupported:Mailbox::finalize"
-	MNUnsupportedMailbox *self  G_GNUC_UNUSED = MN_UNSUPPORTED_MAILBOX (obj_self);
-	gpointer priv = self->_priv;
+	MNUnsupportedMailbox *self G_GNUC_UNUSED = MN_UNSUPPORTED_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 30 "mn-unsupported-mailbox.gob"
-	if(self->_priv->reason) { ((*(void (*)(void *))g_free)) (self->_priv->reason); self->_priv->reason = NULL; }
+#line 32 "mn-unsupported-mailbox.gob"
+	if(self->_priv->reason) { g_free ((gpointer) self->_priv->reason); self->_priv->reason = NULL; }
 #line 117 "mn-unsupported-mailbox.c"
-	g_free (priv);
 }
 #undef __GOB_FUNCTION__
 
@@ -122,17 +121,19 @@ static void
 mn_unsupported_mailbox_init (MNUnsupportedMailbox * o G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:Unsupported:Mailbox::init"
-	o->_priv = g_new0 (MNUnsupportedMailboxPrivate, 1);
+	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,TYPE_SELF,MNUnsupportedMailboxPrivate);
 }
 #undef __GOB_FUNCTION__
-#line 35 "mn-unsupported-mailbox.gob"
+#line 37 "mn-unsupported-mailbox.gob"
 static void 
 mn_unsupported_mailbox_class_init (MNUnsupportedMailboxClass * class G_GNUC_UNUSED)
-#line 132 "mn-unsupported-mailbox.c"
+#line 131 "mn-unsupported-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Unsupported:Mailbox::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
 
+	g_type_class_add_private(class,sizeof(MNUnsupportedMailboxPrivate));
+
 	parent_class = g_type_class_ref (MN_TYPE_MAILBOX);
 
 	g_object_class->finalize = ___finalize;
@@ -152,12 +153,12 @@ mn_unsupported_mailbox_class_init (MNUnsupportedMailboxClass * class G_GNUC_UNUS
 		param_spec);
     }
  {
-#line 36 "mn-unsupported-mailbox.gob"
+#line 38 "mn-unsupported-mailbox.gob"
 
     MN_MAILBOX_CLASS(class)->stock_id = MN_STOCK_UNSUPPORTED;
     MN_MAILBOX_CLASS(class)->format = _("unsupported");
   
-#line 161 "mn-unsupported-mailbox.c"
+#line 162 "mn-unsupported-mailbox.c"
  }
 }
 #undef __GOB_FUNCTION__
@@ -176,9 +177,9 @@ ___object_set_property (GObject *object,
 	switch (property_id) {
 	case PROP_REASON:
 		{
-#line 31 "mn-unsupported-mailbox.gob"
+#line 33 "mn-unsupported-mailbox.gob"
 { char *old = self->_priv->reason; self->_priv->reason = g_value_dup_string (VAL); g_free (old); }
-#line 182 "mn-unsupported-mailbox.c"
+#line 183 "mn-unsupported-mailbox.c"
 		}
 		break;
 	default:
@@ -207,9 +208,9 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_REASON:
 		{
-#line 31 "mn-unsupported-mailbox.gob"
+#line 33 "mn-unsupported-mailbox.gob"
 g_value_set_string (VAL, self->_priv->reason);
-#line 213 "mn-unsupported-mailbox.c"
+#line 214 "mn-unsupported-mailbox.c"
 		}
 		break;
 	default:
@@ -225,44 +226,43 @@ g_value_set_string (VAL, self->_priv->reason);
 #undef __GOB_FUNCTION__
 
 
-#line 33 "mn-unsupported-mailbox.gob"
+#line 35 "mn-unsupported-mailbox.gob"
 const char * 
 mn_unsupported_mailbox_get_reason (MNUnsupportedMailbox * self)
-#line 232 "mn-unsupported-mailbox.c"
+#line 233 "mn-unsupported-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Unsupported:Mailbox::get_reason"
-#line 33 "mn-unsupported-mailbox.gob"
+#line 35 "mn-unsupported-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (const char * )0);
-#line 33 "mn-unsupported-mailbox.gob"
+#line 35 "mn-unsupported-mailbox.gob"
 	g_return_val_if_fail (MN_IS_UNSUPPORTED_MAILBOX (self), (const char * )0);
-#line 239 "mn-unsupported-mailbox.c"
+#line 240 "mn-unsupported-mailbox.c"
 {
-#line 33 "mn-unsupported-mailbox.gob"
+#line 35 "mn-unsupported-mailbox.gob"
 	 return selfp->reason; }}
-#line 243 "mn-unsupported-mailbox.c"
+#line 244 "mn-unsupported-mailbox.c"
 #undef __GOB_FUNCTION__
 
 
-#line 41 "mn-unsupported-mailbox.gob"
+#line 43 "mn-unsupported-mailbox.gob"
 MNMailbox * 
 mn_unsupported_mailbox_new (MNURI * uri, const char * reason)
-#line 250 "mn-unsupported-mailbox.c"
+#line 251 "mn-unsupported-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Unsupported:Mailbox::new"
-#line 41 "mn-unsupported-mailbox.gob"
+#line 43 "mn-unsupported-mailbox.gob"
 	g_return_val_if_fail (uri != NULL, (MNMailbox * )0);
-#line 41 "mn-unsupported-mailbox.gob"
+#line 43 "mn-unsupported-mailbox.gob"
 	g_return_val_if_fail (MN_IS_URI (uri), (MNMailbox * )0);
-#line 41 "mn-unsupported-mailbox.gob"
+#line 43 "mn-unsupported-mailbox.gob"
 	g_return_val_if_fail (reason != NULL, (MNMailbox * )0);
-#line 259 "mn-unsupported-mailbox.c"
+#line 260 "mn-unsupported-mailbox.c"
 {
-#line 44 "mn-unsupported-mailbox.gob"
+#line 46 "mn-unsupported-mailbox.gob"
 	
-    return g_object_new(TYPE_SELF,
-			MN_MAILBOX_PROP_URI(G_OBJECT(uri)),
-			MN_UNSUPPORTED_MAILBOX_PROP_REASON((char *) reason),
-			NULL);
+    return MN_MAILBOX(GET_NEW_VARG(MN_MAILBOX_PROP_URI(G_OBJECT(uri)),
+				   MN_UNSUPPORTED_MAILBOX_PROP_REASON((char *) reason),
+				   NULL));
   }}
 #line 268 "mn-unsupported-mailbox.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-unsupported-mailbox.gob b/src/mn-unsupported-mailbox.gob
@@ -16,6 +16,8 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+requires 2.0.10
+
 %headertop{
 #include "mn-mailbox.h"
 %}
@@ -42,9 +44,8 @@ class MN:Unsupported:Mailbox from MN:Mailbox
     new (MN:URI *uri (check null type),
 	 const char *reason (check null))
   {
-    return g_object_new(TYPE_SELF,
-			MN_MAILBOX_PROP_URI(G_OBJECT(uri)),
-			MN_UNSUPPORTED_MAILBOX_PROP_REASON((char *) reason),
-			NULL);
+    return MN_MAILBOX(GET_NEW_VARG(MN_MAILBOX_PROP_URI(G_OBJECT(uri)),
+				   MN_UNSUPPORTED_MAILBOX_PROP_REASON((char *) reason),
+				   NULL));
   }
 }
diff --git a/src/mn-unsupported-mailbox.h b/src/mn-unsupported-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (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.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (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.9) on Thu Sep  9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct  6 19:29:54 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 9
+#define GOB_VERSION_PATCHLEVEL 10
 
 #define selfp (self->_priv)
 
@@ -21,7 +21,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 52 "mn-uri.gob"
+#line 54 "mn-uri.gob"
 
 #include "config.h"
 #include <stdio.h>		/* required by stdlib.h on Darwin */
@@ -148,8 +148,8 @@ ___dispose (GObject *obj_self)
 	MNURI *self G_GNUC_UNUSED = MN_URI (obj_self);
 	if (G_OBJECT_CLASS (parent_class)->dispose) \
 		(* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
-#line 90 "mn-uri.gob"
-	if(self->vfs) { ((*(void (*)(void *))gnome_vfs_uri_unref)) (self->vfs); self->vfs = NULL; }
+#line 92 "mn-uri.gob"
+	if(self->vfs) { gnome_vfs_uri_unref ((gpointer) self->vfs); self->vfs = NULL; }
 #line 154 "mn-uri.c"
 }
 #undef __GOB_FUNCTION__
@@ -159,35 +159,35 @@ static void
 ___finalize(GObject *obj_self)
 {
 #define __GOB_FUNCTION__ "MN:URI::finalize"
-	MNURI *self  G_GNUC_UNUSED = MN_URI (obj_self);
+	MNURI *self G_GNUC_UNUSED = MN_URI (obj_self);
 	if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-#line 89 "mn-uri.gob"
-	if(self->text) { ((*(void (*)(void *))g_free)) (self->text); self->text = NULL; }
-#line 168 "mn-uri.c"
 #line 91 "mn-uri.gob"
-	if(self->human_readable) { ((*(void (*)(void *))g_free)) (self->human_readable); self->human_readable = NULL; }
-#line 171 "mn-uri.c"
+	if(self->text) { g_free ((gpointer) self->text); self->text = NULL; }
+#line 168 "mn-uri.c"
 #line 93 "mn-uri.gob"
-	if(self->scheme) { ((*(void (*)(void *))g_free)) (self->scheme); self->scheme = NULL; }
+	if(self->human_readable) { g_free ((gpointer) self->human_readable); self->human_readable = NULL; }
+#line 171 "mn-uri.c"
+#line 95 "mn-uri.gob"
+	if(self->scheme) { g_free ((gpointer) self->scheme); self->scheme = NULL; }
 #line 174 "mn-uri.c"
-#line 94 "mn-uri.gob"
-	if(self->username) { ((*(void (*)(void *))g_free)) (self->username); self->username = NULL; }
+#line 96 "mn-uri.gob"
+	if(self->username) { g_free ((gpointer) self->username); self->username = NULL; }
 #line 177 "mn-uri.c"
-#line 95 "mn-uri.gob"
-	if(self->password) { ((*(void (*)(void *))g_free)) (self->password); self->password = NULL; }
+#line 97 "mn-uri.gob"
+	if(self->password) { g_free ((gpointer) self->password); self->password = NULL; }
 #line 180 "mn-uri.c"
-#line 96 "mn-uri.gob"
-	if(self->authmech) { ((*(void (*)(void *))g_free)) (self->authmech); self->authmech = NULL; }
+#line 98 "mn-uri.gob"
+	if(self->authmech) { g_free ((gpointer) self->authmech); self->authmech = NULL; }
 #line 183 "mn-uri.c"
-#line 97 "mn-uri.gob"
-	if(self->hostname) { ((*(void (*)(void *))g_free)) (self->hostname); self->hostname = NULL; }
-#line 186 "mn-uri.c"
 #line 99 "mn-uri.gob"
-	if(self->path) { ((*(void (*)(void *))g_free)) (self->path); self->path = NULL; }
+	if(self->hostname) { g_free ((gpointer) self->hostname); self->hostname = NULL; }
+#line 186 "mn-uri.c"
+#line 101 "mn-uri.gob"
+	if(self->path) { g_free ((gpointer) self->path); self->path = NULL; }
 #line 189 "mn-uri.c"
-#line 100 "mn-uri.gob"
-	if(self->queries) { ((*(void (*)(void *))g_strfreev)) (self->queries); self->queries = NULL; }
+#line 102 "mn-uri.gob"
+	if(self->queries) { g_strfreev ((gpointer) self->queries); self->queries = NULL; }
 #line 192 "mn-uri.c"
 }
 #undef __GOB_FUNCTION__
@@ -196,43 +196,43 @@ static void
 mn_uri_init (MNURI * o G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:URI::init"
-#line 52 "mn-uri.gob"
+#line 54 "mn-uri.gob"
 	o->text = NULL;
 #line 202 "mn-uri.c"
-#line 52 "mn-uri.gob"
+#line 54 "mn-uri.gob"
 	o->vfs = NULL;
 #line 205 "mn-uri.c"
-#line 52 "mn-uri.gob"
+#line 54 "mn-uri.gob"
 	o->human_readable = NULL;
 #line 208 "mn-uri.c"
-#line 52 "mn-uri.gob"
+#line 54 "mn-uri.gob"
 	o->scheme = NULL;
 #line 211 "mn-uri.c"
-#line 52 "mn-uri.gob"
+#line 54 "mn-uri.gob"
 	o->username = NULL;
 #line 214 "mn-uri.c"
-#line 52 "mn-uri.gob"
+#line 54 "mn-uri.gob"
 	o->password = NULL;
 #line 217 "mn-uri.c"
-#line 52 "mn-uri.gob"
+#line 54 "mn-uri.gob"
 	o->authmech = NULL;
 #line 220 "mn-uri.c"
-#line 52 "mn-uri.gob"
+#line 54 "mn-uri.gob"
 	o->hostname = NULL;
 #line 223 "mn-uri.c"
-#line 52 "mn-uri.gob"
+#line 54 "mn-uri.gob"
 	o->port = -1;
 #line 226 "mn-uri.c"
-#line 52 "mn-uri.gob"
+#line 54 "mn-uri.gob"
 	o->path = NULL;
 #line 229 "mn-uri.c"
-#line 52 "mn-uri.gob"
+#line 54 "mn-uri.gob"
 	o->queries = NULL;
 #line 232 "mn-uri.c"
-#line 52 "mn-uri.gob"
+#line 54 "mn-uri.gob"
 	o->type = MN_URI_UNKNOWN;
 #line 235 "mn-uri.c"
-#line 52 "mn-uri.gob"
+#line 54 "mn-uri.gob"
 	o->flags = 0;
 #line 238 "mn-uri.c"
 }
@@ -252,14 +252,14 @@ mn_uri_class_init (MNURIClass * c G_GNUC_UNUSED)
 
 
 
-#line 105 "mn-uri.gob"
+#line 107 "mn-uri.gob"
 static gboolean 
 mn_uri_is_ipv6_address (const char * hostname)
 #line 259 "mn-uri.c"
 {
 #define __GOB_FUNCTION__ "MN:URI::is_ipv6_address"
 {
-#line 107 "mn-uri.gob"
+#line 109 "mn-uri.gob"
 	
     char dummy[16];		/* sizeof(struct in6_addr) */
 
@@ -270,35 +270,35 @@ mn_uri_is_ipv6_address (const char * hostname)
 #line 271 "mn-uri.c"
 #undef __GOB_FUNCTION__
 
-#line 115 "mn-uri.gob"
+#line 117 "mn-uri.gob"
 gboolean 
 mn_uri_has_query (MNURI * self, const char * query)
 #line 277 "mn-uri.c"
 {
 #define __GOB_FUNCTION__ "MN:URI::has_query"
-#line 115 "mn-uri.gob"
+#line 117 "mn-uri.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 115 "mn-uri.gob"
+#line 117 "mn-uri.gob"
 	g_return_val_if_fail (MN_IS_URI (self), (gboolean )0);
-#line 115 "mn-uri.gob"
+#line 117 "mn-uri.gob"
 	g_return_val_if_fail (query != NULL, (gboolean )0);
 #line 286 "mn-uri.c"
 {
-#line 117 "mn-uri.gob"
+#line 119 "mn-uri.gob"
 	
     return self->queries && eel_g_strv_find(self->queries, query) != -1;
   }}
 #line 292 "mn-uri.c"
 #undef __GOB_FUNCTION__
 
-#line 121 "mn-uri.gob"
+#line 123 "mn-uri.gob"
 const char * 
 mn_uri_get_system_mailbox (void)
 #line 298 "mn-uri.c"
 {
 #define __GOB_FUNCTION__ "MN:URI::get_system_mailbox"
 {
-#line 123 "mn-uri.gob"
+#line 125 "mn-uri.gob"
 	
     static char *global_uri = NULL;
     G_LOCK_DEFINE_STATIC(global_uri);
@@ -319,14 +319,14 @@ mn_uri_get_system_mailbox (void)
 #line 320 "mn-uri.c"
 #undef __GOB_FUNCTION__
 
-#line 141 "mn-uri.gob"
+#line 143 "mn-uri.gob"
 static const SchemeInfo * 
 mn_uri_get_scheme_info (const char * scheme)
 #line 326 "mn-uri.c"
 {
 #define __GOB_FUNCTION__ "MN:URI::get_scheme_info"
 {
-#line 143 "mn-uri.gob"
+#line 145 "mn-uri.gob"
 	
     int i;
 
@@ -339,17 +339,17 @@ mn_uri_get_scheme_info (const char * scheme)
 #line 340 "mn-uri.c"
 #undef __GOB_FUNCTION__
 
-#line 153 "mn-uri.gob"
+#line 155 "mn-uri.gob"
 int 
 mn_uri_get_default_port (const char * scheme)
 #line 346 "mn-uri.c"
 {
 #define __GOB_FUNCTION__ "MN:URI::get_default_port"
-#line 153 "mn-uri.gob"
+#line 155 "mn-uri.gob"
 	g_return_val_if_fail (scheme != NULL, (int )0);
 #line 351 "mn-uri.c"
 {
-#line 155 "mn-uri.gob"
+#line 157 "mn-uri.gob"
 	
     const SchemeInfo *scheme_info;
 
@@ -359,17 +359,17 @@ mn_uri_get_default_port (const char * scheme)
 #line 360 "mn-uri.c"
 #undef __GOB_FUNCTION__
 
-#line 162 "mn-uri.gob"
+#line 164 "mn-uri.gob"
 const char * 
 mn_uri_get_default_path (const char * scheme)
 #line 366 "mn-uri.c"
 {
 #define __GOB_FUNCTION__ "MN:URI::get_default_path"
-#line 162 "mn-uri.gob"
+#line 164 "mn-uri.gob"
 	g_return_val_if_fail (scheme != NULL, (const char * )0);
 #line 371 "mn-uri.c"
 {
-#line 164 "mn-uri.gob"
+#line 166 "mn-uri.gob"
 	
     const SchemeInfo *scheme_info;
 
@@ -379,19 +379,19 @@ mn_uri_get_default_path (const char * scheme)
 #line 380 "mn-uri.c"
 #undef __GOB_FUNCTION__
 
-#line 171 "mn-uri.gob"
+#line 173 "mn-uri.gob"
 static void 
 mn_uri_parse (MNURI * self)
 #line 386 "mn-uri.c"
 {
 #define __GOB_FUNCTION__ "MN:URI::parse"
-#line 171 "mn-uri.gob"
+#line 173 "mn-uri.gob"
 	g_return_if_fail (self != NULL);
-#line 171 "mn-uri.gob"
+#line 173 "mn-uri.gob"
 	g_return_if_fail (MN_IS_URI (self));
 #line 393 "mn-uri.c"
 {
-#line 173 "mn-uri.gob"
+#line 175 "mn-uri.gob"
 	
     int len;
     int buflen;
@@ -525,19 +525,19 @@ mn_uri_parse (MNURI * self)
 #line 526 "mn-uri.c"
 #undef __GOB_FUNCTION__
 
-#line 304 "mn-uri.gob"
+#line 306 "mn-uri.gob"
 static void 
 mn_uri_build (MNURI * self)
 #line 532 "mn-uri.c"
 {
 #define __GOB_FUNCTION__ "MN:URI::build"
-#line 304 "mn-uri.gob"
+#line 306 "mn-uri.gob"
 	g_return_if_fail (self != NULL);
-#line 304 "mn-uri.gob"
+#line 306 "mn-uri.gob"
 	g_return_if_fail (MN_IS_URI (self));
 #line 539 "mn-uri.c"
 {
-#line 306 "mn-uri.gob"
+#line 308 "mn-uri.gob"
 	
     char *canonical = NULL;
 
@@ -619,19 +619,19 @@ mn_uri_build (MNURI * self)
 #line 620 "mn-uri.c"
 #undef __GOB_FUNCTION__
 
-#line 385 "mn-uri.gob"
+#line 387 "mn-uri.gob"
 static void 
 mn_uri_set_human_readable (MNURI * self)
 #line 626 "mn-uri.c"
 {
 #define __GOB_FUNCTION__ "MN:URI::set_human_readable"
-#line 385 "mn-uri.gob"
+#line 387 "mn-uri.gob"
 	g_return_if_fail (self != NULL);
-#line 385 "mn-uri.gob"
+#line 387 "mn-uri.gob"
 	g_return_if_fail (MN_IS_URI (self));
 #line 633 "mn-uri.c"
 {
-#line 387 "mn-uri.gob"
+#line 389 "mn-uri.gob"
 	
     g_return_if_fail(self->human_readable == NULL);
 
@@ -660,19 +660,19 @@ mn_uri_set_human_readable (MNURI * self)
 #line 661 "mn-uri.c"
 #undef __GOB_FUNCTION__
 
-#line 413 "mn-uri.gob"
+#line 415 "mn-uri.gob"
 static void 
 mn_uri_post_init (MNURI * self)
 #line 667 "mn-uri.c"
 {
 #define __GOB_FUNCTION__ "MN:URI::post_init"
-#line 413 "mn-uri.gob"
+#line 415 "mn-uri.gob"
 	g_return_if_fail (self != NULL);
-#line 413 "mn-uri.gob"
+#line 415 "mn-uri.gob"
 	g_return_if_fail (MN_IS_URI (self));
 #line 674 "mn-uri.c"
 {
-#line 415 "mn-uri.gob"
+#line 417 "mn-uri.gob"
 	
     const char *system_uri;
 
@@ -710,17 +710,17 @@ mn_uri_post_init (MNURI * self)
 #line 711 "mn-uri.c"
 #undef __GOB_FUNCTION__
 
-#line 450 "mn-uri.gob"
+#line 452 "mn-uri.gob"
 MNURI * 
 mn_uri_new (const char * text_uri)
 #line 717 "mn-uri.c"
 {
 #define __GOB_FUNCTION__ "MN:URI::new"
-#line 450 "mn-uri.gob"
+#line 452 "mn-uri.gob"
 	g_return_val_if_fail (text_uri != NULL, (MNURI * )0);
 #line 722 "mn-uri.c"
 {
-#line 452 "mn-uri.gob"
+#line 454 "mn-uri.gob"
 	
     Self *self;
     char *scheme;
@@ -742,21 +742,21 @@ mn_uri_new (const char * text_uri)
 #line 743 "mn-uri.c"
 #undef __GOB_FUNCTION__
 
-#line 471 "mn-uri.gob"
+#line 473 "mn-uri.gob"
 MNURI * 
 mn_uri_new_pop (gboolean ssl, gboolean stls, const char * username, const char * password, const char * authmech, const char * hostname, int port)
 #line 749 "mn-uri.c"
 {
 #define __GOB_FUNCTION__ "MN:URI::new_pop"
-#line 471 "mn-uri.gob"
+#line 473 "mn-uri.gob"
 	g_return_val_if_fail (username != NULL, (MNURI * )0);
-#line 471 "mn-uri.gob"
+#line 473 "mn-uri.gob"
 	g_return_val_if_fail (password != NULL, (MNURI * )0);
-#line 471 "mn-uri.gob"
+#line 473 "mn-uri.gob"
 	g_return_val_if_fail (hostname != NULL, (MNURI * )0);
 #line 758 "mn-uri.c"
 {
-#line 479 "mn-uri.gob"
+#line 481 "mn-uri.gob"
 	
     Self *self;
 
@@ -777,23 +777,23 @@ mn_uri_new_pop (gboolean ssl, gboolean stls, const char * username, const char *
 #line 778 "mn-uri.c"
 #undef __GOB_FUNCTION__
 
-#line 497 "mn-uri.gob"
+#line 499 "mn-uri.gob"
 MNURI * 
 mn_uri_new_imap (gboolean ssl, gboolean starttls, const char * username, const char * password, const char * authmech, const char * hostname, int port, const char * mailbox)
 #line 784 "mn-uri.c"
 {
 #define __GOB_FUNCTION__ "MN:URI::new_imap"
-#line 497 "mn-uri.gob"
+#line 499 "mn-uri.gob"
 	g_return_val_if_fail (username != NULL, (MNURI * )0);
-#line 497 "mn-uri.gob"
+#line 499 "mn-uri.gob"
 	g_return_val_if_fail (password != NULL, (MNURI * )0);
-#line 497 "mn-uri.gob"
+#line 499 "mn-uri.gob"
 	g_return_val_if_fail (hostname != NULL, (MNURI * )0);
-#line 497 "mn-uri.gob"
+#line 499 "mn-uri.gob"
 	g_return_val_if_fail (mailbox != NULL, (MNURI * )0);
 #line 795 "mn-uri.c"
 {
-#line 506 "mn-uri.gob"
+#line 508 "mn-uri.gob"
 	
     Self *self;
 
@@ -815,19 +815,19 @@ mn_uri_new_imap (gboolean ssl, gboolean starttls, const char * username, const c
 #line 816 "mn-uri.c"
 #undef __GOB_FUNCTION__
 
-#line 525 "mn-uri.gob"
+#line 527 "mn-uri.gob"
 MNURI * 
 mn_uri_new_gmail (const char * username, const char * password)
 #line 822 "mn-uri.c"
 {
 #define __GOB_FUNCTION__ "MN:URI::new_gmail"
-#line 525 "mn-uri.gob"
+#line 527 "mn-uri.gob"
 	g_return_val_if_fail (username != NULL, (MNURI * )0);
-#line 525 "mn-uri.gob"
+#line 527 "mn-uri.gob"
 	g_return_val_if_fail (password != NULL, (MNURI * )0);
 #line 829 "mn-uri.c"
 {
-#line 528 "mn-uri.gob"
+#line 530 "mn-uri.gob"
 	
     Self *self;
 
diff --git a/src/mn-uri.gob b/src/mn-uri.gob
@@ -16,6 +16,8 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+requires 2.0.10
+
 %headertop{
 #include <libgnomevfs/gnome-vfs.h>
 %}
diff --git a/src/mn-uri.h b/src/mn-uri.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9)   (do not edit directly) */
+/* Generated by GOB (v2.0.10)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-util.c b/src/mn-util.c
@@ -20,6 +20,8 @@
 #include <string.h>
 #include <stdarg.h>
 #include <stdlib.h>
+#include <time.h>
+#include <errno.h>
 #include <gnome.h>
 #include <glade/glade.h>
 #include <eel/eel.h>
@@ -36,6 +38,12 @@ enum {
   TARGET_MOZ_URL
 };
 
+typedef struct
+{
+  gpointer		instance;
+  unsigned long		id;
+} SignalHandler;
+  
 /*** functions ***************************************************************/
 
 static int mn_g_str_slist_compare_func (gconstpointer a, gconstpointer b);
@@ -57,6 +65,19 @@ static void mn_drag_data_received_h (GtkWidget *widget,
 
 static GtkWidget *mn_menu_item_new (const char *stock_id, const char *mnemonic);
 
+static void mn_error_dialog_real (GtkWindow *parent,
+				  gboolean blocking,
+				  const char *not_again_key,
+				  const char *help_link_id,
+				  const char *primary,
+				  const char *secondary);
+static void mn_error_dialog_real_response_h (GtkDialog *dialog,
+					     int response,
+					     gpointer user_data);
+
+static void mn_g_object_connect_weak_notify_cb (gpointer data,
+						GObject *former_object);
+
 /*** implementation **********************************************************/
 
 void
@@ -127,6 +148,19 @@ mn_g_str_slist_compare_func (gconstpointer a, gconstpointer b)
   return strcmp(a, b);
 }
 
+GSList *
+mn_g_object_slist_ref (GSList *list)
+{
+  g_slist_foreach(list, (GFunc) g_object_ref, NULL);
+  return list;
+}
+
+GSList *
+mn_g_object_slist_copy (GSList *list)
+{
+  return g_slist_copy(mn_g_object_slist_ref(list));
+}
+
 /**
  * mn_g_object_slist_free:
  * @list: a #GSList of #GObject instances
@@ -234,7 +268,7 @@ mn_create_interface (const char *name, ...)
 
       *widget = glade_xml_get_widget(xml, widget_name);
       if (! *widget)
-	g_critical(_("widget %s not found in interface %s"), widget_name, name);
+	g_critical(_("widget \"%s\" not found in interface \"%s\""), widget_name, name);
     }
   va_end(args);
   
@@ -263,14 +297,10 @@ mn_file_chooser_dialog_allow_select_folder (GtkFileChooserDialog *dialog,
 		      || accept_id == GTK_RESPONSE_YES
 		      || accept_id == GTK_RESPONSE_APPLY));
 
-  g_signal_connect(G_OBJECT(dialog),
-		   "file-activated",
-		   G_CALLBACK(mn_file_chooser_dialog_file_activated_h),
-		   GINT_TO_POINTER(accept_id));
-  g_signal_connect(G_OBJECT(dialog),
-		   "response",
-		   G_CALLBACK(mn_file_chooser_dialog_response_h),
-		   GINT_TO_POINTER(accept_id));
+  g_object_connect(dialog,
+		   "signal::file-activated", mn_file_chooser_dialog_file_activated_h, GINT_TO_POINTER(accept_id),
+		   "signal::response", mn_file_chooser_dialog_response_h, GINT_TO_POINTER(accept_id),
+		   NULL);
 }
 
 static void
@@ -323,7 +353,7 @@ mn_setup_dnd (GtkWidget *widget)
 		    targets,
 		    G_N_ELEMENTS(targets),
 		    GDK_ACTION_COPY);
-  g_signal_connect(G_OBJECT(widget),
+  g_signal_connect(widget,
 		   "drag-data-received",
 		   G_CALLBACK(mn_drag_data_received_h),
 		   NULL);
@@ -475,13 +505,13 @@ mn_parse_gnome_copied_files (const char *gnome_copied_files,
 }
 
 void
-mn_display_help (const char *link_id)
+mn_display_help (GtkWindow *parent, const char *link_id)
 {
   GError *err = NULL;
 
   if (! gnome_help_display("mail-notification.xml", link_id, &err))
     {
-      mn_error_dialog(NULL, _("Unable to display help"), "%s", err->message);
+      mn_error_dialog(parent, NULL, _("Unable to display help"), "%s", err->message);
       g_error_free(err);
     }
 }
@@ -495,7 +525,7 @@ mn_thread_create (GThreadFunc func, gpointer data)
   
   if (! g_thread_create(func, data, FALSE, &err))
     {
-      mn_fatal_error_dialog(_("Unable to create a thread: %s."), err->message);
+      mn_fatal_error_dialog(NULL, _("Unable to create a thread: %s."), err->message);
       g_error_free(err);
     }
 }
@@ -648,25 +678,17 @@ mn_menu_item_new (const char *stock_id, const char *mnemonic)
   return item;
 }
 
-void
-mn_error_dialog (const char *help_link_id,
-		 const char *primary,
-		 const char *format,
-		 ...)
+static void
+mn_error_dialog_real (GtkWindow *parent,
+		      gboolean blocking,
+		      const char *not_again_key,
+		      const char *help_link_id,
+		      const char *primary,
+		      const char *secondary)
 {
   GtkWidget *dialog;
-  char *secondary = NULL;
-
-  if (format)
-    {
-      va_list args;
-      
-      va_start(args, format);
-      secondary = g_strdup_vprintf(format, args);
-      va_end(args);
-    }
 
-  dialog = eel_alert_dialog_new(NULL,
+  dialog = eel_alert_dialog_new(parent,
 				GTK_DIALOG_DESTROY_WITH_PARENT,
 				GTK_MESSAGE_ERROR,
 				GTK_BUTTONS_NONE,
@@ -674,20 +696,86 @@ mn_error_dialog (const char *help_link_id,
 				secondary,
 				NULL);
 
+  if (not_again_key)
+    {
+      GtkWidget *alignment;
+      GtkWidget *check;
+
+      alignment = gtk_alignment_new(0.5, 0.5, 0, 0);
+      check = gtk_check_button_new_with_mnemonic(_("_Do not show this message again"));
+
+      gtk_container_add(GTK_CONTAINER(alignment), check);
+      gtk_widget_show_all(alignment);
+
+      gtk_box_pack_end(GTK_BOX(GTK_DIALOG(dialog)->vbox), alignment, FALSE, FALSE, 0);
+
+      mn_conf_link(check, not_again_key, NULL);
+    }
+  
   if (help_link_id != NULL)
     gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_HELP, GTK_RESPONSE_HELP);
   gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_OK, GTK_RESPONSE_OK);
 
   gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK);
 
-  while (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_HELP)
-    mn_display_help(help_link_id);
+  if (blocking)
+    {
+      while (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_HELP)
+	mn_display_help(GTK_WINDOW(dialog), help_link_id);
+      gtk_widget_destroy(dialog);
+    }
+  else
+    {
+      g_signal_connect_data(dialog,
+			    "response",
+			    G_CALLBACK(mn_error_dialog_real_response_h),
+			    g_strdup(help_link_id),
+			    (GClosureNotify) g_free,
+			    0);
+      gtk_widget_show(dialog);
+    }
+}
+
+static void
+mn_error_dialog_real_response_h (GtkDialog *dialog,
+				 int response,
+				 gpointer user_data)
+{
+  char *help_link_id = user_data;
+
+  if (response == GTK_RESPONSE_HELP)
+    mn_display_help(GTK_WINDOW(dialog), help_link_id);
+  else
+    gtk_widget_destroy(GTK_WIDGET(dialog));
+}
+
+void
+mn_error_dialog (GtkWindow *parent,
+		 const char *not_again_key,
+		 const char *help_link_id,
+		 const char *primary,
+		 const char *format,
+		 ...)
+{
+  char *secondary;
+
+  if (format)
+    {
+      va_list args;
+      
+      va_start(args, format);
+      secondary = g_strdup_vprintf(format, args);
+      va_end(args);
+    }
+  else
+    secondary = NULL;
 
-  gtk_widget_destroy(dialog);
+  mn_error_dialog_real(parent, FALSE, not_again_key, help_link_id, primary, secondary);
+  g_free(secondary);
 }
 
 void
-mn_fatal_error_dialog (const char *format, ...)
+mn_fatal_error_dialog (GtkWindow *parent, const char *format, ...)
 {
   va_list args;
   char *secondary;
@@ -698,8 +786,125 @@ mn_fatal_error_dialog (const char *format, ...)
   secondary = g_strdup_vprintf(format, args);
   va_end(args);
 
-  mn_error_dialog(NULL, _("A fatal error has occurred in Mail Notification"), "%s", secondary);
+  mn_error_dialog_real(parent, TRUE, NULL, NULL, _("A fatal error has occurred in Mail Notification"), secondary);
   g_free(secondary);
 
   exit(1);  
 }
+
+time_t
+mn_time (void)
+{
+  time_t t;
+
+  t = time(NULL);
+  if (t < 0)
+    {
+      t = 0;
+      g_warning(_("unable to get current time: %s"), g_strerror(errno));
+    }
+
+  return t;
+}
+
+GType
+mn_position_get_type (void)
+{
+  static GType type = 0;
+
+  if (type == 0)
+    {
+      static const GEnumValue values[] = {
+	{ MN_POSITION_TOP_LEFT, "MN_POSITION_TOP_LEFT", "top-left" },
+	{ MN_POSITION_TOP_RIGHT, "MN_POSITION_TOP_RIGHT", "top-right" },
+	{ MN_POSITION_BOTTOM_LEFT, "MN_POSITION_BOTTOM_LEFT", "bottom-left" },
+	{ MN_POSITION_BOTTOM_RIGHT, "MN_POSITION_BOTTOM_RIGHT", "bottom-right" },
+	{ 0, NULL, NULL }
+      };
+
+      type = g_enum_register_static("MNPosition", values);
+    }
+
+  return type;
+}
+
+/**
+ * mn_g_object_connect:
+ * @object: the object to associate the handlers with
+ * @instance: the instance to connect to
+ * @signal_spec: the spec for the first signal
+ * @...: #GCallback for the first signal, followed by data for the
+ *       first signal, followed optionally by more signal spec/callback/data
+ *       triples, followed by NULL
+ *
+ * Connects to one or more signals of @instance, associating the
+ * handlers with @object. The handlers will be disconnected whenever
+ * @object is finalized.
+ *
+ * Note: this function is not thread-safe. If @object and @instance
+ * are finalized concurrently, the behaviour is undefined.
+ *
+ * The signals specs must be in the same format than those passed to
+ * g_object_connect(), except that object-signal,
+ * swapped-object-signal, object-signal-after and
+ * swapped-object-signal-after are not accepted.
+ *
+ * Return value: @object
+ **/
+gpointer
+mn_g_object_connect (gpointer object,
+		     gpointer instance,
+		     const char *signal_spec,
+		     ...)
+{
+  va_list args;
+
+  g_return_val_if_fail(G_IS_OBJECT(object), NULL);
+  g_return_val_if_fail(G_IS_OBJECT(instance), NULL);
+
+  va_start(args, signal_spec);
+  while (signal_spec)
+    {
+      GCallback callback = va_arg(args, GCallback);
+      gpointer data = va_arg(args, gpointer);
+      SignalHandler *handler;
+
+      handler = g_new(SignalHandler, 1);
+      handler->instance = instance;
+
+      if (! strncmp(signal_spec, "signal::", 8))
+	handler->id = g_signal_connect(instance, signal_spec + 8, callback, data);
+      else if (! strncmp(signal_spec, "swapped_signal", 16)
+	       || ! strncmp(signal_spec, "swapped-signal", 16))
+	handler->id = g_signal_connect_swapped(instance, signal_spec + 16, callback, data);
+      else if (! strncmp(signal_spec, "signal_after::", 14)
+	       || ! strncmp(signal_spec, "signal-after::", 14))
+	handler->id = g_signal_connect_after(instance, signal_spec + 14, callback, data);
+      else if (! strncmp(signal_spec, "swapped_signal_after::", 22)
+	       || ! strncmp(signal_spec, "swapped-signal-after::", 22))
+	handler->id = g_signal_connect_data(instance, signal_spec + 22, callback, data, NULL, G_CONNECT_AFTER | G_CONNECT_SWAPPED);
+      else
+	g_critical(_("invalid signal specification \"%s\""), signal_spec);
+
+      eel_add_weak_pointer(&handler->instance);
+      g_object_weak_ref(object, mn_g_object_connect_weak_notify_cb, handler);
+
+      signal_spec = va_arg(args, const char *);
+    }
+  va_end(args);
+
+  return object;
+}
+
+static void
+mn_g_object_connect_weak_notify_cb (gpointer data, GObject *former_object)
+{
+  SignalHandler *handler = data;
+
+  if (handler->instance)
+    {
+      g_signal_handler_disconnect(handler->instance, handler->id);
+      eel_remove_weak_pointer(&handler->instance);
+    }
+  g_free(handler);
+}
diff --git a/src/mn-util.h b/src/mn-util.h
@@ -21,6 +21,7 @@
 
 #include "config.h"
 #include <stdarg.h>
+#include <time.h>
 #include <gtk/gtk.h>
 
 #define MN_LIST_FOREACH(var, head)		\
@@ -29,7 +30,7 @@ for ((var) = (head);				\
      (var) = (var)->next)
 
 void		mn_info				(const char	*format,
-						 ...);
+						 ...) G_GNUC_PRINTF(1, 2);
 
 GSList		*mn_g_slist_delete_link_deep	(GSList		*list,
 						 GSList		*link_);
@@ -41,6 +42,8 @@ GSList		*mn_g_slist_delete_link_deep_custom (GSList	*list,
 GSList		*mn_g_str_slist_find		(GSList		*list,
 						 const char	*str);
 
+GSList		*mn_g_object_slist_ref		(GSList		*list);
+GSList		*mn_g_object_slist_copy		(GSList		*list);
 void		mn_g_object_slist_free		(GSList		*list);
 GSList		*mn_g_object_slist_delete_link	(GSList		*list,
 						 GSList		*link_);
@@ -68,7 +71,8 @@ gboolean	mn_parse_gnome_copied_files	(const char	*gnome_copied_files,
 						 MNGnomeCopiedFilesType *type,
 						 GSList		**uri_list);
 
-void		mn_display_help			(const char	*link_id);
+void		mn_display_help			(GtkWindow	*parent,
+						 const char	*link_id);
 void		mn_thread_create		(GThreadFunc	func,
 						 gpointer	data);
 
@@ -86,11 +90,32 @@ GtkWidget	*mn_menu_shell_prepend		(GtkMenuShell	*shell,
 						 const char	*stock_id,
 						 const char	*mnemonic);
 
-void		mn_error_dialog			(const char	*help_link_id,
+void		mn_error_dialog			(GtkWindow	*parent,
+						 const char	*not_again_key,
+						 const char	*help_link_id,
 						 const char	*primary,
 						 const char	*format,
-						 ...);
-void		mn_fatal_error_dialog		(const char	*format,
+						 ...) G_GNUC_PRINTF(5, 6);
+void		mn_fatal_error_dialog		(GtkWindow	*parent,
+						 const char	*format,
+						 ...) G_GNUC_PRINTF(2, 3);
+
+time_t		mn_time				(void);
+
+typedef enum
+{
+  MN_POSITION_TOP_LEFT,
+  MN_POSITION_TOP_RIGHT,
+  MN_POSITION_BOTTOM_LEFT,
+  MN_POSITION_BOTTOM_RIGHT
+} MNPosition;
+
+GType		mn_position_get_type		(void);
+#define MN_TYPE_POSITION (mn_position_get_type())
+
+gpointer	mn_g_object_connect		(gpointer	object,
+						 gpointer	instance,
+						 const char	*signal_spec,
 						 ...);
 
 #endif /* _MN_UTIL_H */
diff --git a/src/xhtml-lat1.ent b/src/xhtml-lat1.ent
@@ -0,0 +1,196 @@
+<!-- Portions (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+    <!ENTITY % HTMLlat1 PUBLIC
+       "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+       "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
+    %HTMLlat1;
+-->
+
+<!ENTITY nbsp   "&#160;"> <!-- no-break space = non-breaking space,
+                                  U+00A0 ISOnum -->
+<!ENTITY iexcl  "&#161;"> <!-- inverted exclamation mark, U+00A1 ISOnum -->
+<!ENTITY cent   "&#162;"> <!-- cent sign, U+00A2 ISOnum -->
+<!ENTITY pound  "&#163;"> <!-- pound sign, U+00A3 ISOnum -->
+<!ENTITY curren "&#164;"> <!-- currency sign, U+00A4 ISOnum -->
+<!ENTITY yen    "&#165;"> <!-- yen sign = yuan sign, U+00A5 ISOnum -->
+<!ENTITY brvbar "&#166;"> <!-- broken bar = broken vertical bar,
+                                  U+00A6 ISOnum -->
+<!ENTITY sect   "&#167;"> <!-- section sign, U+00A7 ISOnum -->
+<!ENTITY uml    "&#168;"> <!-- diaeresis = spacing diaeresis,
+                                  U+00A8 ISOdia -->
+<!ENTITY copy   "&#169;"> <!-- copyright sign, U+00A9 ISOnum -->
+<!ENTITY ordf   "&#170;"> <!-- feminine ordinal indicator, U+00AA ISOnum -->
+<!ENTITY laquo  "&#171;"> <!-- left-pointing double angle quotation mark
+                                  = left pointing guillemet, U+00AB ISOnum -->
+<!ENTITY not    "&#172;"> <!-- not sign = discretionary hyphen,
+                                  U+00AC ISOnum -->
+<!ENTITY shy    "&#173;"> <!-- soft hyphen = discretionary hyphen,
+                                  U+00AD ISOnum -->
+<!ENTITY reg    "&#174;"> <!-- registered sign = registered trade mark sign,
+                                  U+00AE ISOnum -->
+<!ENTITY macr   "&#175;"> <!-- macron = spacing macron = overline
+                                  = APL overbar, U+00AF ISOdia -->
+<!ENTITY deg    "&#176;"> <!-- degree sign, U+00B0 ISOnum -->
+<!ENTITY plusmn "&#177;"> <!-- plus-minus sign = plus-or-minus sign,
+                                  U+00B1 ISOnum -->
+<!ENTITY sup2   "&#178;"> <!-- superscript two = superscript digit two
+                                  = squared, U+00B2 ISOnum -->
+<!ENTITY sup3   "&#179;"> <!-- superscript three = superscript digit three
+                                  = cubed, U+00B3 ISOnum -->
+<!ENTITY acute  "&#180;"> <!-- acute accent = spacing acute,
+                                  U+00B4 ISOdia -->
+<!ENTITY micro  "&#181;"> <!-- micro sign, U+00B5 ISOnum -->
+<!ENTITY para   "&#182;"> <!-- pilcrow sign = paragraph sign,
+                                  U+00B6 ISOnum -->
+<!ENTITY middot "&#183;"> <!-- middle dot = Georgian comma
+                                  = Greek middle dot, U+00B7 ISOnum -->
+<!ENTITY cedil  "&#184;"> <!-- cedilla = spacing cedilla, U+00B8 ISOdia -->
+<!ENTITY sup1   "&#185;"> <!-- superscript one = superscript digit one,
+                                  U+00B9 ISOnum -->
+<!ENTITY ordm   "&#186;"> <!-- masculine ordinal indicator,
+                                  U+00BA ISOnum -->
+<!ENTITY raquo  "&#187;"> <!-- right-pointing double angle quotation mark
+                                  = right pointing guillemet, U+00BB ISOnum -->
+<!ENTITY frac14 "&#188;"> <!-- vulgar fraction one quarter
+                                  = fraction one quarter, U+00BC ISOnum -->
+<!ENTITY frac12 "&#189;"> <!-- vulgar fraction one half
+                                  = fraction one half, U+00BD ISOnum -->
+<!ENTITY frac34 "&#190;"> <!-- vulgar fraction three quarters
+                                  = fraction three quarters, U+00BE ISOnum -->
+<!ENTITY iquest "&#191;"> <!-- inverted question mark
+                                  = turned question mark, U+00BF ISOnum -->
+<!ENTITY Agrave "&#192;"> <!-- latin capital letter A with grave
+                                  = latin capital letter A grave,
+                                  U+00C0 ISOlat1 -->
+<!ENTITY Aacute "&#193;"> <!-- latin capital letter A with acute,
+                                  U+00C1 ISOlat1 -->
+<!ENTITY Acirc  "&#194;"> <!-- latin capital letter A with circumflex,
+                                  U+00C2 ISOlat1 -->
+<!ENTITY Atilde "&#195;"> <!-- latin capital letter A with tilde,
+                                  U+00C3 ISOlat1 -->
+<!ENTITY Auml   "&#196;"> <!-- latin capital letter A with diaeresis,
+                                  U+00C4 ISOlat1 -->
+<!ENTITY Aring  "&#197;"> <!-- latin capital letter A with ring above
+                                  = latin capital letter A ring,
+                                  U+00C5 ISOlat1 -->
+<!ENTITY AElig  "&#198;"> <!-- latin capital letter AE
+                                  = latin capital ligature AE,
+                                  U+00C6 ISOlat1 -->
+<!ENTITY Ccedil "&#199;"> <!-- latin capital letter C with cedilla,
+                                  U+00C7 ISOlat1 -->
+<!ENTITY Egrave "&#200;"> <!-- latin capital letter E with grave,
+                                  U+00C8 ISOlat1 -->
+<!ENTITY Eacute "&#201;"> <!-- latin capital letter E with acute,
+                                  U+00C9 ISOlat1 -->
+<!ENTITY Ecirc  "&#202;"> <!-- latin capital letter E with circumflex,
+                                  U+00CA ISOlat1 -->
+<!ENTITY Euml   "&#203;"> <!-- latin capital letter E with diaeresis,
+                                  U+00CB ISOlat1 -->
+<!ENTITY Igrave "&#204;"> <!-- latin capital letter I with grave,
+                                  U+00CC ISOlat1 -->
+<!ENTITY Iacute "&#205;"> <!-- latin capital letter I with acute,
+                                  U+00CD ISOlat1 -->
+<!ENTITY Icirc  "&#206;"> <!-- latin capital letter I with circumflex,
+                                  U+00CE ISOlat1 -->
+<!ENTITY Iuml   "&#207;"> <!-- latin capital letter I with diaeresis,
+                                  U+00CF ISOlat1 -->
+<!ENTITY ETH    "&#208;"> <!-- latin capital letter ETH, U+00D0 ISOlat1 -->
+<!ENTITY Ntilde "&#209;"> <!-- latin capital letter N with tilde,
+                                  U+00D1 ISOlat1 -->
+<!ENTITY Ograve "&#210;"> <!-- latin capital letter O with grave,
+                                  U+00D2 ISOlat1 -->
+<!ENTITY Oacute "&#211;"> <!-- latin capital letter O with acute,
+                                  U+00D3 ISOlat1 -->
+<!ENTITY Ocirc  "&#212;"> <!-- latin capital letter O with circumflex,
+                                  U+00D4 ISOlat1 -->
+<!ENTITY Otilde "&#213;"> <!-- latin capital letter O with tilde,
+                                  U+00D5 ISOlat1 -->
+<!ENTITY Ouml   "&#214;"> <!-- latin capital letter O with diaeresis,
+                                  U+00D6 ISOlat1 -->
+<!ENTITY times  "&#215;"> <!-- multiplication sign, U+00D7 ISOnum -->
+<!ENTITY Oslash "&#216;"> <!-- latin capital letter O with stroke
+                                  = latin capital letter O slash,
+                                  U+00D8 ISOlat1 -->
+<!ENTITY Ugrave "&#217;"> <!-- latin capital letter U with grave,
+                                  U+00D9 ISOlat1 -->
+<!ENTITY Uacute "&#218;"> <!-- latin capital letter U with acute,
+                                  U+00DA ISOlat1 -->
+<!ENTITY Ucirc  "&#219;"> <!-- latin capital letter U with circumflex,
+                                  U+00DB ISOlat1 -->
+<!ENTITY Uuml   "&#220;"> <!-- latin capital letter U with diaeresis,
+                                  U+00DC ISOlat1 -->
+<!ENTITY Yacute "&#221;"> <!-- latin capital letter Y with acute,
+                                  U+00DD ISOlat1 -->
+<!ENTITY THORN  "&#222;"> <!-- latin capital letter THORN,
+                                  U+00DE ISOlat1 -->
+<!ENTITY szlig  "&#223;"> <!-- latin small letter sharp s = ess-zed,
+                                  U+00DF ISOlat1 -->
+<!ENTITY agrave "&#224;"> <!-- latin small letter a with grave
+                                  = latin small letter a grave,
+                                  U+00E0 ISOlat1 -->
+<!ENTITY aacute "&#225;"> <!-- latin small letter a with acute,
+                                  U+00E1 ISOlat1 -->
+<!ENTITY acirc  "&#226;"> <!-- latin small letter a with circumflex,
+                                  U+00E2 ISOlat1 -->
+<!ENTITY atilde "&#227;"> <!-- latin small letter a with tilde,
+                                  U+00E3 ISOlat1 -->
+<!ENTITY auml   "&#228;"> <!-- latin small letter a with diaeresis,
+                                  U+00E4 ISOlat1 -->
+<!ENTITY aring  "&#229;"> <!-- latin small letter a with ring above
+                                  = latin small letter a ring,
+                                  U+00E5 ISOlat1 -->
+<!ENTITY aelig  "&#230;"> <!-- latin small letter ae
+                                  = latin small ligature ae, U+00E6 ISOlat1 -->
+<!ENTITY ccedil "&#231;"> <!-- latin small letter c with cedilla,
+                                  U+00E7 ISOlat1 -->
+<!ENTITY egrave "&#232;"> <!-- latin small letter e with grave,
+                                  U+00E8 ISOlat1 -->
+<!ENTITY eacute "&#233;"> <!-- latin small letter e with acute,
+                                  U+00E9 ISOlat1 -->
+<!ENTITY ecirc  "&#234;"> <!-- latin small letter e with circumflex,
+                                  U+00EA ISOlat1 -->
+<!ENTITY euml   "&#235;"> <!-- latin small letter e with diaeresis,
+                                  U+00EB ISOlat1 -->
+<!ENTITY igrave "&#236;"> <!-- latin small letter i with grave,
+                                  U+00EC ISOlat1 -->
+<!ENTITY iacute "&#237;"> <!-- latin small letter i with acute,
+                                  U+00ED ISOlat1 -->
+<!ENTITY icirc  "&#238;"> <!-- latin small letter i with circumflex,
+                                  U+00EE ISOlat1 -->
+<!ENTITY iuml   "&#239;"> <!-- latin small letter i with diaeresis,
+                                  U+00EF ISOlat1 -->
+<!ENTITY eth    "&#240;"> <!-- latin small letter eth, U+00F0 ISOlat1 -->
+<!ENTITY ntilde "&#241;"> <!-- latin small letter n with tilde,
+                                  U+00F1 ISOlat1 -->
+<!ENTITY ograve "&#242;"> <!-- latin small letter o with grave,
+                                  U+00F2 ISOlat1 -->
+<!ENTITY oacute "&#243;"> <!-- latin small letter o with acute,
+                                  U+00F3 ISOlat1 -->
+<!ENTITY ocirc  "&#244;"> <!-- latin small letter o with circumflex,
+                                  U+00F4 ISOlat1 -->
+<!ENTITY otilde "&#245;"> <!-- latin small letter o with tilde,
+                                  U+00F5 ISOlat1 -->
+<!ENTITY ouml   "&#246;"> <!-- latin small letter o with diaeresis,
+                                  U+00F6 ISOlat1 -->
+<!ENTITY divide "&#247;"> <!-- division sign, U+00F7 ISOnum -->
+<!ENTITY oslash "&#248;"> <!-- latin small letter o with stroke,
+                                  = latin small letter o slash,
+                                  U+00F8 ISOlat1 -->
+<!ENTITY ugrave "&#249;"> <!-- latin small letter u with grave,
+                                  U+00F9 ISOlat1 -->
+<!ENTITY uacute "&#250;"> <!-- latin small letter u with acute,
+                                  U+00FA ISOlat1 -->
+<!ENTITY ucirc  "&#251;"> <!-- latin small letter u with circumflex,
+                                  U+00FB ISOlat1 -->
+<!ENTITY uuml   "&#252;"> <!-- latin small letter u with diaeresis,
+                                  U+00FC ISOlat1 -->
+<!ENTITY yacute "&#253;"> <!-- latin small letter y with acute,
+                                  U+00FD ISOlat1 -->
+<!ENTITY thorn  "&#254;"> <!-- latin small letter thorn with,
+                                  U+00FE ISOlat1 -->
+<!ENTITY yuml   "&#255;"> <!-- latin small letter y with diaeresis,
+                                  U+00FF ISOlat1 -->
diff --git a/src/xhtml-special.ent b/src/xhtml-special.ent
@@ -0,0 +1,79 @@
+<!-- Special characters for HTML -->
+
+<!-- Character entity set. Typical invocation:
+     <!ENTITY % HTMLspecial PUBLIC
+        "-//W3C//ENTITIES Special for XHTML//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
+     %HTMLspecial;
+-->
+
+<!-- Portions (C) International Organization for Standardization 1986:
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+
+<!-- Relevant ISO entity set is given unless names are newly introduced.
+     New names (i.e., not in ISO 8879 list) do not clash with any
+     existing ISO 8879 entity names. ISO 10646 character numbers
+     are given for each character, in hex. values are decimal
+     conversions of the ISO 10646 values and refer to the document
+     character set. Names are Unicode names. 
+-->
+
+<!-- C0 Controls and Basic Latin -->
+<!ENTITY quot    "&#34;"> <!--  quotation mark = APL quote,
+                                    U+0022 ISOnum -->
+<!ENTITY amp     "&#38;"> <!--  ampersand, U+0026 ISOnum -->
+<!ENTITY lt      "&#60;"> <!--  less-than sign, U+003C ISOnum -->
+<!ENTITY gt      "&#62;"> <!--  greater-than sign, U+003E ISOnum -->
+<!ENTITY apos	 "&#39;"> <!--  apostrophe mark, U+0027 ISOnum -->
+
+<!-- Latin Extended-A -->
+<!ENTITY OElig   "&#338;"> <!--  latin capital ligature OE,
+                                    U+0152 ISOlat2 -->
+<!ENTITY oelig   "&#339;"> <!--  latin small ligature oe, U+0153 ISOlat2 -->
+<!-- ligature is a misnomer, this is a separate character in some languages -->
+<!ENTITY Scaron  "&#352;"> <!--  latin capital letter S with caron,
+                                    U+0160 ISOlat2 -->
+<!ENTITY scaron  "&#353;"> <!--  latin small letter s with caron,
+                                    U+0161 ISOlat2 -->
+<!ENTITY Yuml    "&#376;"> <!--  latin capital letter Y with diaeresis,
+                                    U+0178 ISOlat2 -->
+
+<!-- Spacing Modifier Letters -->
+<!ENTITY circ    "&#710;"> <!--  modifier letter circumflex accent,
+                                    U+02C6 ISOpub -->
+<!ENTITY tilde   "&#732;"> <!--  small tilde, U+02DC ISOdia -->
+
+<!-- General Punctuation -->
+<!ENTITY ensp    "&#8194;"> <!-- en space, U+2002 ISOpub -->
+<!ENTITY emsp    "&#8195;"> <!-- em space, U+2003 ISOpub -->
+<!ENTITY thinsp  "&#8201;"> <!-- thin space, U+2009 ISOpub -->
+<!ENTITY zwnj    "&#8204;"> <!-- zero width non-joiner,
+                                    U+200C NEW RFC 2070 -->
+<!ENTITY zwj     "&#8205;"> <!-- zero width joiner, U+200D NEW RFC 2070 -->
+<!ENTITY lrm     "&#8206;"> <!-- left-to-right mark, U+200E NEW RFC 2070 -->
+<!ENTITY rlm     "&#8207;"> <!-- right-to-left mark, U+200F NEW RFC 2070 -->
+<!ENTITY ndash   "&#8211;"> <!-- en dash, U+2013 ISOpub -->
+<!ENTITY mdash   "&#8212;"> <!-- em dash, U+2014 ISOpub -->
+<!ENTITY lsquo   "&#8216;"> <!-- left single quotation mark,
+                                    U+2018 ISOnum -->
+<!ENTITY rsquo   "&#8217;"> <!-- right single quotation mark,
+                                    U+2019 ISOnum -->
+<!ENTITY sbquo   "&#8218;"> <!-- single low-9 quotation mark, U+201A NEW -->
+<!ENTITY ldquo   "&#8220;"> <!-- left double quotation mark,
+                                    U+201C ISOnum -->
+<!ENTITY rdquo   "&#8221;"> <!-- right double quotation mark,
+                                    U+201D ISOnum -->
+<!ENTITY bdquo   "&#8222;"> <!-- double low-9 quotation mark, U+201E NEW -->
+<!ENTITY dagger  "&#8224;"> <!-- dagger, U+2020 ISOpub -->
+<!ENTITY Dagger  "&#8225;"> <!-- double dagger, U+2021 ISOpub -->
+<!ENTITY permil  "&#8240;"> <!-- per mille sign, U+2030 ISOtech -->
+<!ENTITY lsaquo  "&#8249;"> <!-- single left-pointing angle quotation mark,
+                                    U+2039 ISO proposed -->
+<!-- lsaquo is proposed but not yet ISO standardized -->
+<!ENTITY rsaquo  "&#8250;"> <!-- single right-pointing angle quotation mark,
+                                    U+203A ISO proposed -->
+<!-- rsaquo is proposed but not yet ISO standardized -->
+<!ENTITY euro   "&#8364;"> <!--  euro sign, U+20AC NEW -->
diff --git a/src/xhtml-symbol.ent b/src/xhtml-symbol.ent
@@ -0,0 +1,242 @@
+<!-- Mathematical, Greek and Symbolic characters for HTML -->
+
+<!-- Character entity set. Typical invocation:
+     <!ENTITY % HTMLsymbol PUBLIC
+        "-//W3C//ENTITIES Symbols for XHTML//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
+     %HTMLsymbol;
+-->
+
+<!-- Portions (C) International Organization for Standardization 1986:
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+
+<!-- Relevant ISO entity set is given unless names are newly introduced.
+     New names (i.e., not in ISO 8879 list) do not clash with any
+     existing ISO 8879 entity names. ISO 10646 character numbers
+     are given for each character, in hex. values are decimal
+     conversions of the ISO 10646 values and refer to the document
+     character set. Names are Unicode names. 
+-->
+
+<!-- Latin Extended-B -->
+<!ENTITY fnof     "&#402;"> <!-- latin small f with hook = function
+                                    = florin, U+0192 ISOtech -->
+
+<!-- Greek -->
+<!ENTITY Alpha    "&#913;"> <!-- greek capital letter alpha, U+0391 -->
+<!ENTITY Beta     "&#914;"> <!-- greek capital letter beta, U+0392 -->
+<!ENTITY Gamma    "&#915;"> <!-- greek capital letter gamma,
+                                    U+0393 ISOgrk3 -->
+<!ENTITY Delta    "&#916;"> <!-- greek capital letter delta,
+                                    U+0394 ISOgrk3 -->
+<!ENTITY Epsilon  "&#917;"> <!-- greek capital letter epsilon, U+0395 -->
+<!ENTITY Zeta     "&#918;"> <!-- greek capital letter zeta, U+0396 -->
+<!ENTITY Eta      "&#919;"> <!-- greek capital letter eta, U+0397 -->
+<!ENTITY Theta    "&#920;"> <!-- greek capital letter theta,
+                                    U+0398 ISOgrk3 -->
+<!ENTITY Iota     "&#921;"> <!-- greek capital letter iota, U+0399 -->
+<!ENTITY Kappa    "&#922;"> <!-- greek capital letter kappa, U+039A -->
+<!ENTITY Lambda   "&#923;"> <!-- greek capital letter lambda,
+                                    U+039B ISOgrk3 -->
+<!ENTITY Mu       "&#924;"> <!-- greek capital letter mu, U+039C -->
+<!ENTITY Nu       "&#925;"> <!-- greek capital letter nu, U+039D -->
+<!ENTITY Xi       "&#926;"> <!-- greek capital letter xi, U+039E ISOgrk3 -->
+<!ENTITY Omicron  "&#927;"> <!-- greek capital letter omicron, U+039F -->
+<!ENTITY Pi       "&#928;"> <!-- greek capital letter pi, U+03A0 ISOgrk3 -->
+<!ENTITY Rho      "&#929;"> <!-- greek capital letter rho, U+03A1 -->
+<!-- there is no Sigmaf, and no U+03A2 character either -->
+<!ENTITY Sigma    "&#931;"> <!-- greek capital letter sigma,
+                                    U+03A3 ISOgrk3 -->
+<!ENTITY Tau      "&#932;"> <!-- greek capital letter tau, U+03A4 -->
+<!ENTITY Upsilon  "&#933;"> <!-- greek capital letter upsilon,
+                                    U+03A5 ISOgrk3 -->
+<!ENTITY Phi      "&#934;"> <!-- greek capital letter phi,
+                                    U+03A6 ISOgrk3 -->
+<!ENTITY Chi      "&#935;"> <!-- greek capital letter chi, U+03A7 -->
+<!ENTITY Psi      "&#936;"> <!-- greek capital letter psi,
+                                    U+03A8 ISOgrk3 -->
+<!ENTITY Omega    "&#937;"> <!-- greek capital letter omega,
+                                    U+03A9 ISOgrk3 -->
+
+<!ENTITY alpha    "&#945;"> <!-- greek small letter alpha,
+                                    U+03B1 ISOgrk3 -->
+<!ENTITY beta     "&#946;"> <!-- greek small letter beta, U+03B2 ISOgrk3 -->
+<!ENTITY gamma    "&#947;"> <!-- greek small letter gamma,
+                                    U+03B3 ISOgrk3 -->
+<!ENTITY delta    "&#948;"> <!-- greek small letter delta,
+                                    U+03B4 ISOgrk3 -->
+<!ENTITY epsilon  "&#949;"> <!-- greek small letter epsilon,
+                                    U+03B5 ISOgrk3 -->
+<!ENTITY zeta     "&#950;"> <!-- greek small letter zeta, U+03B6 ISOgrk3 -->
+<!ENTITY eta      "&#951;"> <!-- greek small letter eta, U+03B7 ISOgrk3 -->
+<!ENTITY theta    "&#952;"> <!-- greek small letter theta,
+                                    U+03B8 ISOgrk3 -->
+<!ENTITY iota     "&#953;"> <!-- greek small letter iota, U+03B9 ISOgrk3 -->
+<!ENTITY kappa    "&#954;"> <!-- greek small letter kappa,
+                                    U+03BA ISOgrk3 -->
+<!ENTITY lambda   "&#955;"> <!-- greek small letter lambda,
+                                    U+03BB ISOgrk3 -->
+<!ENTITY mu       "&#956;"> <!-- greek small letter mu, U+03BC ISOgrk3 -->
+<!ENTITY nu       "&#957;"> <!-- greek small letter nu, U+03BD ISOgrk3 -->
+<!ENTITY xi       "&#958;"> <!-- greek small letter xi, U+03BE ISOgrk3 -->
+<!ENTITY omicron  "&#959;"> <!-- greek small letter omicron, U+03BF NEW -->
+<!ENTITY pi       "&#960;"> <!-- greek small letter pi, U+03C0 ISOgrk3 -->
+<!ENTITY rho      "&#961;"> <!-- greek small letter rho, U+03C1 ISOgrk3 -->
+<!ENTITY sigmaf   "&#962;"> <!-- greek small letter final sigma,
+                                    U+03C2 ISOgrk3 -->
+<!ENTITY sigma    "&#963;"> <!-- greek small letter sigma,
+                                    U+03C3 ISOgrk3 -->
+<!ENTITY tau      "&#964;"> <!-- greek small letter tau, U+03C4 ISOgrk3 -->
+<!ENTITY upsilon  "&#965;"> <!-- greek small letter upsilon,
+                                    U+03C5 ISOgrk3 -->
+<!ENTITY phi      "&#966;"> <!-- greek small letter phi, U+03C6 ISOgrk3 -->
+<!ENTITY chi      "&#967;"> <!-- greek small letter chi, U+03C7 ISOgrk3 -->
+<!ENTITY psi      "&#968;"> <!-- greek small letter psi, U+03C8 ISOgrk3 -->
+<!ENTITY omega    "&#969;"> <!-- greek small letter omega,
+                                    U+03C9 ISOgrk3 -->
+<!ENTITY thetasym "&#977;"> <!-- greek small letter theta symbol,
+                                    U+03D1 NEW -->
+<!ENTITY upsih    "&#978;"> <!-- greek upsilon with hook symbol,
+                                    U+03D2 NEW -->
+<!ENTITY piv      "&#982;"> <!-- greek pi symbol, U+03D6 ISOgrk3 -->
+
+<!-- General Punctuation -->
+<!ENTITY bull     "&#8226;"> <!-- bullet = black small circle,
+                                     U+2022 ISOpub  -->
+<!-- bullet is NOT the same as bullet operator, U+2219 -->
+<!ENTITY hellip   "&#8230;"> <!-- horizontal ellipsis = three dot leader,
+                                     U+2026 ISOpub  -->
+<!ENTITY prime    "&#8242;"> <!-- prime = minutes = feet, U+2032 ISOtech -->
+<!ENTITY Prime    "&#8243;"> <!-- double prime = seconds = inches,
+                                     U+2033 ISOtech -->
+<!ENTITY oline    "&#8254;"> <!-- overline = spacing overscore,
+                                     U+203E NEW -->
+<!ENTITY frasl    "&#8260;"> <!-- fraction slash, U+2044 NEW -->
+
+<!-- Letterlike Symbols -->
+<!ENTITY weierp   "&#8472;"> <!-- script capital P = power set
+                                     = Weierstrass p, U+2118 ISOamso -->
+<!ENTITY image    "&#8465;"> <!-- blackletter capital I = imaginary part,
+                                     U+2111 ISOamso -->
+<!ENTITY real     "&#8476;"> <!-- blackletter capital R = real part symbol,
+                                     U+211C ISOamso -->
+<!ENTITY trade    "&#8482;"> <!-- trade mark sign, U+2122 ISOnum -->
+<!ENTITY alefsym  "&#8501;"> <!-- alef symbol = first transfinite cardinal,
+                                     U+2135 NEW -->
+<!-- alef symbol is NOT the same as hebrew letter alef,
+     U+05D0 although the same glyph could be used to depict both characters -->
+
+<!-- Arrows -->
+<!ENTITY larr     "&#8592;"> <!-- leftwards arrow, U+2190 ISOnum -->
+<!ENTITY uarr     "&#8593;"> <!-- upwards arrow, U+2191 ISOnum-->
+<!ENTITY rarr     "&#8594;"> <!-- rightwards arrow, U+2192 ISOnum -->
+<!ENTITY darr     "&#8595;"> <!-- downwards arrow, U+2193 ISOnum -->
+<!ENTITY harr     "&#8596;"> <!-- left right arrow, U+2194 ISOamsa -->
+<!ENTITY crarr    "&#8629;"> <!-- downwards arrow with corner leftwards
+                                     = carriage return, U+21B5 NEW -->
+<!ENTITY lArr     "&#8656;"> <!-- leftwards double arrow, U+21D0 ISOtech -->
+<!-- Unicode does not say that lArr is the same as the 'is implied by' arrow
+    but also does not have any other character for that function. So ? lArr can
+    be used for 'is implied by' as ISOtech suggests -->
+<!ENTITY uArr     "&#8657;"> <!-- upwards double arrow, U+21D1 ISOamsa -->
+<!ENTITY rArr     "&#8658;"> <!-- rightwards double arrow,
+                                     U+21D2 ISOtech -->
+<!-- Unicode does not say this is the 'implies' character but does not have 
+     another character with this function so ?
+     rArr can be used for 'implies' as ISOtech suggests -->
+<!ENTITY dArr     "&#8659;"> <!-- downwards double arrow, U+21D3 ISOamsa -->
+<!ENTITY hArr     "&#8660;"> <!-- left right double arrow,
+                                     U+21D4 ISOamsa -->
+
+<!-- Mathematical Operators -->
+<!ENTITY forall   "&#8704;"> <!-- for all, U+2200 ISOtech -->
+<!ENTITY part     "&#8706;"> <!-- partial differential, U+2202 ISOtech  -->
+<!ENTITY exist    "&#8707;"> <!-- there exists, U+2203 ISOtech -->
+<!ENTITY empty    "&#8709;"> <!-- empty set = null set = diameter,
+                                     U+2205 ISOamso -->
+<!ENTITY nabla    "&#8711;"> <!-- nabla = backward difference,
+                                     U+2207 ISOtech -->
+<!ENTITY isin     "&#8712;"> <!-- element of, U+2208 ISOtech -->
+<!ENTITY notin    "&#8713;"> <!-- not an element of, U+2209 ISOtech -->
+<!ENTITY ni       "&#8715;"> <!-- contains as member, U+220B ISOtech -->
+<!-- should there be a more memorable name than 'ni'? -->
+<!ENTITY prod     "&#8719;"> <!-- n-ary product = product sign,
+                                     U+220F ISOamsb -->
+<!-- prod is NOT the same character as U+03A0 'greek capital letter pi' though
+     the same glyph might be used for both -->
+<!ENTITY sum      "&#8721;"> <!-- n-ary sumation, U+2211 ISOamsb -->
+<!-- sum is NOT the same character as U+03A3 'greek capital letter sigma'
+     though the same glyph might be used for both -->
+<!ENTITY minus    "&#8722;"> <!-- minus sign, U+2212 ISOtech -->
+<!ENTITY lowast   "&#8727;"> <!-- asterisk operator, U+2217 ISOtech -->
+<!ENTITY radic    "&#8730;"> <!-- square root = radical sign,
+                                     U+221A ISOtech -->
+<!ENTITY prop     "&#8733;"> <!-- proportional to, U+221D ISOtech -->
+<!ENTITY infin    "&#8734;"> <!-- infinity, U+221E ISOtech -->
+<!ENTITY ang      "&#8736;"> <!-- angle, U+2220 ISOamso -->
+<!ENTITY and      "&#8743;"> <!-- logical and = wedge, U+2227 ISOtech -->
+<!ENTITY or       "&#8744;"> <!-- logical or = vee, U+2228 ISOtech -->
+<!ENTITY cap      "&#8745;"> <!-- intersection = cap, U+2229 ISOtech -->
+<!ENTITY cup      "&#8746;"> <!-- union = cup, U+222A ISOtech -->
+<!ENTITY int      "&#8747;"> <!-- integral, U+222B ISOtech -->
+<!ENTITY there4   "&#8756;"> <!-- therefore, U+2234 ISOtech -->
+<!ENTITY sim      "&#8764;"> <!-- tilde operator = varies with = similar to,
+                                     U+223C ISOtech -->
+<!-- tilde operator is NOT the same character as the tilde, U+007E,
+     although the same glyph might be used to represent both  -->
+<!ENTITY cong     "&#8773;"> <!-- approximately equal to, U+2245 ISOtech -->
+<!ENTITY asymp    "&#8776;"> <!-- almost equal to = asymptotic to,
+                                     U+2248 ISOamsr -->
+<!ENTITY ne       "&#8800;"> <!-- not equal to, U+2260 ISOtech -->
+<!ENTITY equiv    "&#8801;"> <!-- identical to, U+2261 ISOtech -->
+<!ENTITY le       "&#8804;"> <!-- less-than or equal to, U+2264 ISOtech -->
+<!ENTITY ge       "&#8805;"> <!-- greater-than or equal to,
+                                     U+2265 ISOtech -->
+<!ENTITY sub      "&#8834;"> <!-- subset of, U+2282 ISOtech -->
+<!ENTITY sup      "&#8835;"> <!-- superset of, U+2283 ISOtech -->
+<!-- note that nsup, 'not a superset of, U+2283' is not covered by the Symbol 
+     font encoding and is not included. Should it be, for symmetry?
+     It is in ISOamsn  --> 
+<!ENTITY nsub     "&#8836;"> <!-- not a subset of, U+2284 ISOamsn -->
+<!ENTITY sube     "&#8838;"> <!-- subset of or equal to, U+2286 ISOtech -->
+<!ENTITY supe     "&#8839;"> <!-- superset of or equal to,
+                                     U+2287 ISOtech -->
+<!ENTITY oplus    "&#8853;"> <!-- circled plus = direct sum,
+                                     U+2295 ISOamsb -->
+<!ENTITY otimes   "&#8855;"> <!-- circled times = vector product,
+                                     U+2297 ISOamsb -->
+<!ENTITY perp     "&#8869;"> <!-- up tack = orthogonal to = perpendicular,
+                                     U+22A5 ISOtech -->
+<!ENTITY sdot     "&#8901;"> <!-- dot operator, U+22C5 ISOamsb -->
+<!-- dot operator is NOT the same character as U+00B7 middle dot -->
+
+<!-- Miscellaneous Technical -->
+<!ENTITY lceil    "&#8968;"> <!-- left ceiling = apl upstile,
+                                     U+2308 ISOamsc  -->
+<!ENTITY rceil    "&#8969;"> <!-- right ceiling, U+2309 ISOamsc  -->
+<!ENTITY lfloor   "&#8970;"> <!-- left floor = apl downstile,
+                                     U+230A ISOamsc  -->
+<!ENTITY rfloor   "&#8971;"> <!-- right floor, U+230B ISOamsc  -->
+<!ENTITY lang     "&#9001;"> <!-- left-pointing angle bracket = bra,
+                                     U+2329 ISOtech -->
+<!-- lang is NOT the same character as U+003C 'less than' 
+     or U+2039 'single left-pointing angle quotation mark' -->
+<!ENTITY rang     "&#9002;"> <!-- right-pointing angle bracket = ket,
+                                     U+232A ISOtech -->
+<!-- rang is NOT the same character as U+003E 'greater than' 
+     or U+203A 'single right-pointing angle quotation mark' -->
+
+<!-- Geometric Shapes -->
+<!ENTITY loz      "&#9674;"> <!-- lozenge, U+25CA ISOpub -->
+
+<!-- Miscellaneous Symbols -->
+<!ENTITY spades   "&#9824;"> <!-- black spade suit, U+2660 ISOpub -->
+<!-- black here seems to mean filled as opposed to hollow -->
+<!ENTITY clubs    "&#9827;"> <!-- black club suit = shamrock,
+                                     U+2663 ISOpub -->
+<!ENTITY hearts   "&#9829;"> <!-- black heart suit = valentine,
+                                     U+2665 ISOpub -->
+<!ENTITY diams    "&#9830;"> <!-- black diamond suit, U+2666 ISOpub -->
diff --git a/tests/Makefile.in b/tests/Makefile.in
@@ -119,6 +119,8 @@ GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
 GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
 GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
 GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMIME_CFLAGS = @GMIME_CFLAGS@
+GMIME_LIBS = @GMIME_LIBS@
 GMOFILES = @GMOFILES@
 GMSGFMT = @GMSGFMT@
 GNOME_CFLAGS = @GNOME_CFLAGS@
@@ -126,9 +128,6 @@ GNOME_LIBS = @GNOME_LIBS@
 GOB2 = @GOB2@
 GTK_CFLAGS = @GTK_CFLAGS@
 GTK_LIBS = @GTK_LIBS@
-G_ASSERTIONS = @G_ASSERTIONS@
-HAVE_SOUP_FALSE = @HAVE_SOUP_FALSE@
-HAVE_SOUP_TRUE = @HAVE_SOUP_TRUE@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -202,6 +201,8 @@ WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
 WITH_MBOX_TRUE = @WITH_MBOX_TRUE@
 WITH_MH_FALSE = @WITH_MH_FALSE@
 WITH_MH_TRUE = @WITH_MH_TRUE@
+WITH_MIME_FALSE = @WITH_MIME_FALSE@
+WITH_MIME_TRUE = @WITH_MIME_TRUE@
 WITH_POP3_FALSE = @WITH_POP3_FALSE@
 WITH_POP3_OR_IMAP_FALSE = @WITH_POP3_OR_IMAP_FALSE@
 WITH_POP3_OR_IMAP_TRUE = @WITH_POP3_OR_IMAP_TRUE@
diff --git a/tests/test-uri.c b/tests/test-uri.c
@@ -16,6 +16,8 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+#include <stdlib.h>
+#include <string.h>
 #include "mn-uri.h"
 
 static char *
diff --git a/ui/Makefile.am b/ui/Makefile.am
@@ -1,13 +1,19 @@
 uidir = $(pkgdatadir)/ui
 
 interfaces =					\
+	$(mail_summary_interfaces)		\
 	mailbox-properties.glade		\
 	properties.glade			\
+	summary-dialog.glade			\
+	summary-popup.glade			\
 	welcome.glade
 
 projects =					\
+	$(mail_summary_projects)		\
 	mailbox-properties.gladep		\
 	properties.gladep			\
+	summary-dialog.gladep			\
+	summary-popup.gladep			\
 	welcome.gladep
 
 dist_ui_DATA = $(interfaces)
diff --git a/ui/Makefile.in b/ui/Makefile.in
@@ -83,6 +83,8 @@ GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
 GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
 GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
 GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMIME_CFLAGS = @GMIME_CFLAGS@
+GMIME_LIBS = @GMIME_LIBS@
 GMOFILES = @GMOFILES@
 GMSGFMT = @GMSGFMT@
 GNOME_CFLAGS = @GNOME_CFLAGS@
@@ -90,9 +92,6 @@ GNOME_LIBS = @GNOME_LIBS@
 GOB2 = @GOB2@
 GTK_CFLAGS = @GTK_CFLAGS@
 GTK_LIBS = @GTK_LIBS@
-G_ASSERTIONS = @G_ASSERTIONS@
-HAVE_SOUP_FALSE = @HAVE_SOUP_FALSE@
-HAVE_SOUP_TRUE = @HAVE_SOUP_TRUE@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -166,6 +165,8 @@ WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
 WITH_MBOX_TRUE = @WITH_MBOX_TRUE@
 WITH_MH_FALSE = @WITH_MH_FALSE@
 WITH_MH_TRUE = @WITH_MH_TRUE@
+WITH_MIME_FALSE = @WITH_MIME_FALSE@
+WITH_MIME_TRUE = @WITH_MIME_TRUE@
 WITH_POP3_FALSE = @WITH_POP3_FALSE@
 WITH_POP3_OR_IMAP_FALSE = @WITH_POP3_OR_IMAP_FALSE@
 WITH_POP3_OR_IMAP_TRUE = @WITH_POP3_OR_IMAP_TRUE@
@@ -208,13 +209,19 @@ sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 uidir = $(pkgdatadir)/ui
 interfaces = \
+	$(mail_summary_interfaces)		\
 	mailbox-properties.glade		\
 	properties.glade			\
+	summary-dialog.glade			\
+	summary-popup.glade			\
 	welcome.glade
 
 projects = \
+	$(mail_summary_projects)		\
 	mailbox-properties.gladep		\
 	properties.gladep			\
+	summary-dialog.gladep			\
+	summary-popup.gladep			\
 	welcome.gladep
 
 dist_ui_DATA = $(interfaces)
diff --git a/ui/properties.glade b/ui/properties.glade
@@ -19,21 +19,21 @@
   <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
   <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
   <property name="has_separator">False</property>
-  <signal name="response" handler="mn_properties_response_h" last_modification_time="Sat, 06 Dec 2003 12:33:33 GMT"/>
+  <signal name="response" handler="mn_properties_response_h" last_modification_time="Sat, 02 Oct 2004 18:23:37 GMT"/>
 
   <child internal-child="vbox">
-    <widget class="GtkVBox" id="vbox1">
+    <widget class="GtkVBox" id="dialog-vbox1">
       <property name="visible">True</property>
       <property name="homogeneous">False</property>
-      <property name="spacing">12</property>
+      <property name="spacing">0</property>
 
       <child internal-child="action_area">
-	<widget class="GtkHButtonBox" id="hbuttonbox1">
+	<widget class="GtkHButtonBox" id="dialog-action_area1">
 	  <property name="visible">True</property>
 	  <property name="layout_style">GTK_BUTTONBOX_END</property>
 
 	  <child>
-	    <widget class="GtkButton" id="button3">
+	    <widget class="GtkButton" id="helpbutton1">
 	      <property name="visible">True</property>
 	      <property name="can_default">True</property>
 	      <property name="can_focus">True</property>
@@ -46,7 +46,7 @@
 	  </child>
 
 	  <child>
-	    <widget class="GtkButton" id="button4">
+	    <widget class="GtkButton" id="closebutton1">
 	      <property name="visible">True</property>
 	      <property name="can_default">True</property>
 	      <property name="can_focus">True</property>
@@ -67,31 +67,36 @@
       </child>
 
       <child>
-	<widget class="GtkVBox" id="vbox2">
+	<widget class="GtkNotebook" id="notebook">
 	  <property name="border_width">5</property>
 	  <property name="visible">True</property>
-	  <property name="homogeneous">False</property>
-	  <property name="spacing">18</property>
+	  <property name="can_focus">True</property>
+	  <property name="show_tabs">True</property>
+	  <property name="show_border">True</property>
+	  <property name="tab_pos">GTK_POS_TOP</property>
+	  <property name="scrollable">False</property>
+	  <property name="enable_popup">False</property>
 
 	  <child>
-	    <widget class="GtkVBox" id="vbox3">
+	    <widget class="GtkVBox" id="vbox12">
+	      <property name="border_width">12</property>
 	      <property name="visible">True</property>
 	      <property name="homogeneous">False</property>
 	      <property name="spacing">6</property>
 
 	      <child>
-		<widget class="GtkLabel" id="label1">
+		<widget class="GtkCheckButton" id="autostart_check">
 		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">&lt;span weight=&quot;bold&quot;&gt;General&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>
+		  <property name="tooltip" translatable="yes">Whether to start Mail Notification when you log into your GNOME session or not</property>
+		  <property name="can_focus">True</property>
+		  <property name="label" translatable="yes">_Start Mail Notification on GNOME login</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_autostart_toggled_h" last_modification_time="Mon, 23 Aug 2004 01:36:43 GMT"/>
 		</widget>
 		<packing>
 		  <property name="padding">0</property>
@@ -101,21 +106,127 @@
 	      </child>
 
 	      <child>
-		<widget class="GtkHBox" id="hbox1">
+		<widget class="GtkCheckButton" id="blink_check">
+		  <property name="visible">True</property>
+		  <property name="tooltip" translatable="yes">Whether the status icon should blink on errors or not</property>
+		  <property name="can_focus">True</property>
+		  <property name="label" translatable="yes">_Blink on errors</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>
+
+	      <child>
+		<widget class="GtkHBox" id="hbox9">
 		  <property name="visible">True</property>
 		  <property name="homogeneous">False</property>
-		  <property name="spacing">0</property>
+		  <property name="spacing">12</property>
 
 		  <child>
-		    <widget class="GtkLabel" id="label2">
+		    <widget class="GtkCheckButton" id="command_new_mail_check">
 		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">    </property>
+		      <property name="tooltip" translatable="yes">Whether to run a command when new mail arrives or not</property>
+		      <property name="can_focus">True</property>
+		      <property name="label" translatable="yes">_Run a command when new mail arrives:</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="Sun, 27 Jul 2003 08:45:08 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_new_mail_entry">
+		      <property name="visible">True</property>
+		      <property name="tooltip" translatable="yes">The command to run when new mail arrives</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>
+		    </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">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="tab_expand">False</property>
+	      <property name="tab_fill">True</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkLabel" id="label25">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">General</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="type">tab</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkVBox" id="vbox13">
+	      <property name="border_width">12</property>
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">18</property>
+
+	      <child>
+		<widget class="GtkVBox" id="vbox19">
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">6</property>
+
+		  <child>
+		    <widget class="GtkLabel" id="label32">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">&lt;span weight=&quot;bold&quot;&gt;General&lt;/span&gt;</property>
 		      <property name="use_underline">False</property>
-		      <property name="use_markup">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.5</property>
+		      <property name="xalign">0</property>
 		      <property name="yalign">0.5</property>
 		      <property name="xpad">0</property>
 		      <property name="ypad">0</property>
@@ -128,10 +239,31 @@
 		  </child>
 
 		  <child>
-		    <widget class="GtkVBox" id="vbox9">
+		    <widget class="GtkHBox" id="hbox25">
 		      <property name="visible">True</property>
 		      <property name="homogeneous">False</property>
-		      <property name="spacing">6</property>
+		      <property name="spacing">0</property>
+
+		      <child>
+			<widget class="GtkLabel" id="label33">
+			  <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="GtkHBox" id="hbox11">
@@ -262,112 +394,37 @@
 			  <property name="fill">True</property>
 			</packing>
 		      </child>
-
-		      <child>
-			<widget class="GtkCheckButton" id="autostart_check">
-			  <property name="visible">True</property>
-			  <property name="tooltip" translatable="yes">Whether to start Mail Notification when you log into your GNOME session or not</property>
-			  <property name="can_focus">True</property>
-			  <property name="label" translatable="yes">_Start Mail Notification on GNOME login</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_autostart_toggled_h" last_modification_time="Mon, 23 Aug 2004 01:36:43 GMT"/>
-			</widget>
-			<packing>
-			  <property name="padding">0</property>
-			  <property name="expand">False</property>
-			  <property name="fill">False</property>
-			</packing>
-		      </child>
-
-		      <child>
-			<widget class="GtkCheckButton" id="blink_check">
-			  <property name="visible">True</property>
-			  <property name="tooltip" translatable="yes">Whether the status icon should blink on errors or not</property>
-			  <property name="can_focus">True</property>
-			  <property name="label" translatable="yes">_Blink on errors</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>
-		      <property name="expand">True</property>
-		      <property name="fill">True</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">False</property>
-	      <property name="fill">False</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkVBox" id="vbox5">
-	      <property name="visible">True</property>
-	      <property name="homogeneous">False</property>
-	      <property name="spacing">6</property>
-
-	      <child>
-		<widget class="GtkLabel" id="label7">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">&lt;span weight=&quot;bold&quot;&gt;Mailboxes&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="hbox4">
+		<widget class="GtkVBox" id="vbox20">
 		  <property name="visible">True</property>
 		  <property name="homogeneous">False</property>
-		  <property name="spacing">0</property>
+		  <property name="spacing">6</property>
 
 		  <child>
-		    <widget class="GtkLabel" id="label8">
+		    <widget class="GtkLabel" id="label34">
 		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">    </property>
+		      <property name="label" translatable="yes">&lt;span weight=&quot;bold&quot;&gt;Mailbox List&lt;/span&gt;</property>
 		      <property name="use_underline">False</property>
-		      <property name="use_markup">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.5</property>
+		      <property name="xalign">0</property>
 		      <property name="yalign">0.5</property>
 		      <property name="xpad">0</property>
 		      <property name="ypad">0</property>
@@ -380,35 +437,15 @@
 		  </child>
 
 		  <child>
-		    <widget class="GtkVBox" id="vbox6">
+		    <widget class="GtkHBox" id="hbox26">
 		      <property name="visible">True</property>
 		      <property name="homogeneous">False</property>
-		      <property name="spacing">6</property>
+		      <property name="spacing">0</property>
 
 		      <child>
-			<widget class="GtkScrolledWindow" id="scrolled">
+			<widget class="GtkLabel" id="label35">
 			  <property name="visible">True</property>
-			  <property name="can_focus">True</property>
-			  <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-			  <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-			  <property name="shadow_type">GTK_SHADOW_IN</property>
-			  <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
-
-			  <child>
-			    <placeholder/>
-			  </child>
-			</widget>
-			<packing>
-			  <property name="padding">0</property>
-			  <property name="expand">True</property>
-			  <property name="fill">True</property>
-			</packing>
-		      </child>
-
-		      <child>
-			<widget class="GtkLabel" id="selected_label">
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes"></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>
@@ -427,20 +464,23 @@
 		      </child>
 
 		      <child>
-			<widget class="GtkHBox" id="hbox5">
+			<widget class="GtkVBox" id="vbox21">
 			  <property name="visible">True</property>
-			  <property name="homogeneous">True</property>
+			  <property name="homogeneous">False</property>
 			  <property name="spacing">6</property>
 
 			  <child>
-			    <widget class="GtkButton" id="button2">
+			    <widget class="GtkScrolledWindow" id="scrolled">
 			      <property name="visible">True</property>
 			      <property name="can_focus">True</property>
-			      <property name="label">gtk-add</property>
-			      <property name="use_stock">True</property>
-			      <property name="relief">GTK_RELIEF_NORMAL</property>
-			      <property name="focus_on_click">True</property>
-			      <signal name="clicked" handler="mn_properties_add_clicked_h" last_modification_time="Thu, 27 May 2004 20:34:29 GMT"/>
+			      <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+			      <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+			      <property name="shadow_type">GTK_SHADOW_IN</property>
+			      <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+			      <child>
+				<placeholder/>
+			      </child>
 			    </widget>
 			    <packing>
 			      <property name="padding">0</property>
@@ -450,43 +490,94 @@
 			  </child>
 
 			  <child>
-			    <widget class="GtkButton" id="remove">
+			    <widget class="GtkLabel" id="selected_label">
 			      <property name="visible">True</property>
-			      <property name="can_focus">True</property>
-			      <property name="label">gtk-remove</property>
-			      <property name="use_stock">True</property>
-			      <property name="relief">GTK_RELIEF_NORMAL</property>
-			      <property name="focus_on_click">True</property>
-			      <signal name="clicked" handler="mn_properties_remove_clicked_h" last_modification_time="Sat, 06 Dec 2003 14:00:02 GMT"/>
+			      <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">True</property>
-			      <property name="fill">True</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
 			    </packing>
 			  </child>
 
 			  <child>
-			    <widget class="GtkButton" id="properties">
+			    <widget class="GtkHBox" id="hbox5">
 			      <property name="visible">True</property>
-			      <property name="can_focus">True</property>
-			      <property name="label">gtk-properties</property>
-			      <property name="use_stock">True</property>
-			      <property name="relief">GTK_RELIEF_NORMAL</property>
-			      <property name="focus_on_click">True</property>
-			      <signal name="clicked" handler="mn_properties_properties_clicked_h" last_modification_time="Sat, 05 Jun 2004 20:07:54 GMT"/>
+			      <property name="homogeneous">True</property>
+			      <property name="spacing">6</property>
+
+			      <child>
+				<widget class="GtkButton" id="button2">
+				  <property name="visible">True</property>
+				  <property name="can_focus">True</property>
+				  <property name="label">gtk-add</property>
+				  <property name="use_stock">True</property>
+				  <property name="relief">GTK_RELIEF_NORMAL</property>
+				  <property name="focus_on_click">True</property>
+				  <signal name="clicked" handler="mn_properties_add_clicked_h" last_modification_time="Thu, 27 May 2004 20:34:29 GMT"/>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">True</property>
+				  <property name="fill">True</property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkButton" id="remove">
+				  <property name="visible">True</property>
+				  <property name="can_focus">True</property>
+				  <property name="label">gtk-remove</property>
+				  <property name="use_stock">True</property>
+				  <property name="relief">GTK_RELIEF_NORMAL</property>
+				  <property name="focus_on_click">True</property>
+				  <signal name="clicked" handler="mn_properties_remove_clicked_h" last_modification_time="Sat, 06 Dec 2003 14:00:02 GMT"/>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">True</property>
+				  <property name="fill">True</property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkButton" id="properties">
+				  <property name="visible">True</property>
+				  <property name="can_focus">True</property>
+				  <property name="label">gtk-properties</property>
+				  <property name="use_stock">True</property>
+				  <property name="relief">GTK_RELIEF_NORMAL</property>
+				  <property name="focus_on_click">True</property>
+				  <signal name="clicked" handler="mn_properties_properties_clicked_h" last_modification_time="Sat, 05 Jun 2004 20:07:54 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>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
 			    </packing>
 			  </child>
 			</widget>
 			<packing>
 			  <property name="padding">0</property>
-			  <property name="expand">False</property>
-			  <property name="fill">False</property>
+			  <property name="expand">True</property>
+			  <property name="fill">True</property>
 			</packing>
 		      </child>
 		    </widget>
@@ -505,55 +596,53 @@
 	      </child>
 	    </widget>
 	    <packing>
-	      <property name="padding">0</property>
-	      <property name="expand">True</property>
-	      <property name="fill">True</property>
+	      <property name="tab_expand">False</property>
+	      <property name="tab_fill">True</property>
 	    </packing>
 	  </child>
 
 	  <child>
-	    <widget class="GtkVBox" id="vbox7">
+	    <widget class="GtkLabel" id="label26">
 	      <property name="visible">True</property>
-	      <property name="homogeneous">False</property>
-	      <property name="spacing">6</property>
+	      <property name="label" translatable="yes">Mailboxes</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="type">tab</property>
+	    </packing>
+	  </child>
 
-	      <child>
-		<widget class="GtkLabel" id="label11">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">&lt;span weight=&quot;bold&quot;&gt;Commands&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="GtkVBox" id="vbox14">
+	      <property name="border_width">12</property>
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">18</property>
 
 	      <child>
-		<widget class="GtkHBox" id="hbox8">
+		<widget class="GtkVBox" id="vbox15">
 		  <property name="visible">True</property>
 		  <property name="homogeneous">False</property>
-		  <property name="spacing">0</property>
+		  <property name="spacing">6</property>
 
 		  <child>
-		    <widget class="GtkLabel" id="label12">
+		    <widget class="GtkLabel" id="label28">
 		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">    </property>
+		      <property name="label" translatable="yes">&lt;span weight=&quot;bold&quot;&gt;General&lt;/span&gt;</property>
 		      <property name="use_underline">False</property>
-		      <property name="use_markup">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.5</property>
+		      <property name="xalign">0</property>
 		      <property name="yalign">0.5</property>
 		      <property name="xpad">0</property>
 		      <property name="ypad">0</property>
@@ -566,30 +655,51 @@
 		  </child>
 
 		  <child>
-		    <widget class="GtkVBox" id="vbox8">
+		    <widget class="GtkHBox" id="hbox23">
 		      <property name="visible">True</property>
 		      <property name="homogeneous">False</property>
-		      <property name="spacing">6</property>
+		      <property name="spacing">0</property>
 
 		      <child>
-			<widget class="GtkHBox" id="hbox9">
+			<widget class="GtkLabel" id="label29">
+			  <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="vbox16">
 			  <property name="visible">True</property>
 			  <property name="homogeneous">False</property>
-			  <property name="spacing">12</property>
+			  <property name="spacing">6</property>
 
 			  <child>
-			    <widget class="GtkCheckButton" id="command_new_mail_check">
+			    <widget class="GtkCheckButton" id="summary_enable_check">
 			      <property name="visible">True</property>
-			      <property name="tooltip" translatable="yes">Whether to run a command when new mail arrives or not</property>
+			      <property name="tooltip" translatable="yes">Whether to display the mail summary popup when new mail arrives or not</property>
 			      <property name="can_focus">True</property>
-			      <property name="label" translatable="yes">When _new mail arrives:</property>
+			      <property name="label" translatable="yes">_Enable mail summary popup</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="Sun, 27 Jul 2003 08:45:08 GMT"/>
+			      <signal name="toggled" handler="mn_properties_toggled_h" last_modification_time="Wed, 15 Sep 2004 19:20:43 GMT"/>
 			    </widget>
 			    <packing>
 			      <property name="padding">0</property>
@@ -599,17 +709,126 @@
 			  </child>
 
 			  <child>
-			    <widget class="GtkEntry" id="command_new_mail_entry">
+			    <widget class="GtkHBox" id="hbox15">
 			      <property name="visible">True</property>
-			      <property name="tooltip" translatable="yes">The command to run when new mail arrives</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>
+			      <property name="homogeneous">False</property>
+			      <property name="spacing">12</property>
+
+			      <child>
+				<widget class="GtkCheckButton" id="summary_autoclose_check">
+				  <property name="visible">True</property>
+				  <property name="tooltip" translatable="yes">Whether to automatically close the mail summary popup or not</property>
+				  <property name="can_focus">True</property>
+				  <property name="label" translatable="yes">_Automatically close after:</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="Wed, 15 Sep 2004 19:20:52 GMT"/>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">False</property>
+				  <property name="fill">False</property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkHBox" id="hbox16">
+				  <property name="visible">True</property>
+				  <property name="homogeneous">False</property>
+				  <property name="spacing">6</property>
+
+				  <child>
+				    <widget class="GtkSpinButton" id="summary_minutes_spin">
+				      <property name="visible">True</property>
+				      <property name="tooltip" translatable="yes">The amount of time to wait before closing the mail summary popup</property>
+				      <property name="can_focus">True</property>
+				      <property name="climb_rate">1</property>
+				      <property name="digits">0</property>
+				      <property name="numeric">True</property>
+				      <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+				      <property name="snap_to_ticks">False</property>
+				      <property name="wrap">False</property>
+				      <property name="adjustment">1 0 1440 1 10 10</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="summary_minutes_label">
+				      <property name="visible">True</property>
+				      <property name="label" translatable="yes">minutes</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="GtkSpinButton" id="summary_seconds_spin">
+				      <property name="visible">True</property>
+				      <property name="tooltip" translatable="yes">The amount of time to wait before closing the mail summary popup</property>
+				      <property name="can_focus">True</property>
+				      <property name="climb_rate">1</property>
+				      <property name="digits">0</property>
+				      <property name="numeric">True</property>
+				      <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+				      <property name="snap_to_ticks">False</property>
+				      <property name="wrap">False</property>
+				      <property name="adjustment">1 0 59 1 10 10</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="summary_seconds_label">
+				      <property name="visible">True</property>
+				      <property name="label" translatable="yes">seconds</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>
+				</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>
@@ -624,26 +843,119 @@
 			  <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">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkVBox" id="vbox17">
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">6</property>
+
+		  <child>
+		    <widget class="GtkLabel" id="label30">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">&lt;span weight=&quot;bold&quot;&gt;Position&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="hbox24">
+		      <property name="visible">True</property>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">0</property>
+
+		      <child>
+			<widget class="GtkLabel" id="label31">
+			  <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="GtkHBox" id="hbox10">
+			<widget class="GtkVBox" id="vbox18">
 			  <property name="visible">True</property>
 			  <property name="homogeneous">False</property>
-			  <property name="spacing">12</property>
+			  <property name="spacing">6</property>
 
 			  <child>
-			    <widget class="GtkCheckButton" id="command_double_clicked_check">
+			    <widget class="GtkHBox" id="hbox17">
 			      <property name="visible">True</property>
-			      <property name="tooltip" translatable="yes">Whether to run a command when the icon is double-clicked or not</property>
-			      <property name="can_focus">True</property>
-			      <property name="label" translatable="yes">When double-click_ed:</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="Sun, 27 Jul 2003 08:45:01 GMT"/>
+			      <property name="homogeneous">False</property>
+			      <property name="spacing">12</property>
+
+			      <child>
+				<widget class="GtkLabel" id="summary_position_label">
+				  <property name="visible">True</property>
+				  <property name="label" translatable="yes">P_osition:</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</property>
+				  <property name="yalign">0.5</property>
+				  <property name="xpad">0</property>
+				  <property name="ypad">0</property>
+				  <property name="mnemonic_widget">summary_position_combo</property>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">False</property>
+				  <property name="fill">False</property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkComboBox" id="summary_position_combo">
+				  <property name="visible">True</property>
+				</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>
@@ -653,22 +965,180 @@
 			  </child>
 
 			  <child>
-			    <widget class="GtkEntry" id="command_double_clicked_entry">
+			    <widget class="GtkHBox" id="hbox18">
 			      <property name="visible">True</property>
-			      <property name="tooltip" translatable="yes">The command to run when the icon is double-clicked</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>
+			      <property name="homogeneous">False</property>
+			      <property name="spacing">12</property>
+
+			      <child>
+				<widget class="GtkLabel" id="summary_horizontal_offset_label">
+				  <property name="visible">True</property>
+				  <property name="label" translatable="yes">Hori_zontal offset:</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</property>
+				  <property name="yalign">0.5</property>
+				  <property name="xpad">0</property>
+				  <property name="ypad">0</property>
+				  <property name="mnemonic_widget">summary_horizontal_offset_spin</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="hbox19">
+				  <property name="visible">True</property>
+				  <property name="homogeneous">False</property>
+				  <property name="spacing">6</property>
+
+				  <child>
+				    <widget class="GtkSpinButton" id="summary_horizontal_offset_spin">
+				      <property name="visible">True</property>
+				      <property name="tooltip" translatable="yes">The number of pixels to leave between the left or right side of the screen and the mail summary popup</property>
+				      <property name="can_focus">True</property>
+				      <property name="climb_rate">1</property>
+				      <property name="digits">0</property>
+				      <property name="numeric">True</property>
+				      <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+				      <property name="snap_to_ticks">False</property>
+				      <property name="wrap">False</property>
+				      <property name="adjustment">1 0 9999 1 10 10</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="summary_horizontal_pixels_label">
+				      <property name="visible">True</property>
+				      <property name="label" translatable="yes">pixels</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>
+				</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>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkHBox" id="hbox20">
+			      <property name="visible">True</property>
+			      <property name="homogeneous">False</property>
+			      <property name="spacing">12</property>
+
+			      <child>
+				<widget class="GtkLabel" id="summary_vertical_offset_label">
+				  <property name="visible">True</property>
+				  <property name="label" translatable="yes">_Vertical offset:</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</property>
+				  <property name="yalign">0.5</property>
+				  <property name="xpad">0</property>
+				  <property name="ypad">0</property>
+				  <property name="mnemonic_widget">summary_vertical_offset_spin</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="hbox21">
+				  <property name="visible">True</property>
+				  <property name="homogeneous">False</property>
+				  <property name="spacing">6</property>
+
+				  <child>
+				    <widget class="GtkSpinButton" id="summary_vertical_offset_spin">
+				      <property name="visible">True</property>
+				      <property name="tooltip" translatable="yes">The number of pixels to leave between the top or bottom side of the screen and the mail summary popup</property>
+				      <property name="can_focus">True</property>
+				      <property name="climb_rate">1</property>
+				      <property name="digits">0</property>
+				      <property name="numeric">True</property>
+				      <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+				      <property name="snap_to_ticks">False</property>
+				      <property name="wrap">False</property>
+				      <property name="adjustment">1 0 9999 1 10 10</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="summary_vertical_pixels_label">
+				      <property name="visible">True</property>
+				      <property name="label" translatable="yes">pixels</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>
+				</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">False</property>
+			      <property name="fill">False</property>
 			    </packing>
 			  </child>
 			</widget>
@@ -694,9 +1164,27 @@
 	      </child>
 	    </widget>
 	    <packing>
-	      <property name="padding">0</property>
-	      <property name="expand">False</property>
-	      <property name="fill">False</property>
+	      <property name="tab_expand">False</property>
+	      <property name="tab_fill">True</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkLabel" id="label27">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">Mail Summary Popup</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="type">tab</property>
 	    </packing>
 	  </child>
 	</widget>
diff --git a/ui/summary-dialog.glade b/ui/summary-dialog.glade
@@ -0,0 +1,176 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+<requires lib="gnome"/>
+
+<widget class="GtkDialog" id="dialog">
+  <property name="border_width">6</property>
+  <property name="title" translatable="yes">Mail Summary</property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_CENTER</property>
+  <property name="modal">False</property>
+  <property name="resizable">True</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="icon">mail-notification.png</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="has_separator">False</property>
+  <signal name="response" handler="mn_summary_dialog_response_h" last_modification_time="Wed, 15 Sep 2004 22:12:21 GMT"/>
+
+  <child internal-child="vbox">
+    <widget class="GtkVBox" id="dialog-vbox1">
+      <property name="visible">True</property>
+      <property name="homogeneous">False</property>
+      <property name="spacing">12</property>
+
+      <child internal-child="action_area">
+	<widget class="GtkHButtonBox" id="dialog-action_area1">
+	  <property name="visible">True</property>
+	  <property name="layout_style">GTK_BUTTONBOX_END</property>
+
+	  <child>
+	    <widget class="GtkButton" id="helpbutton1">
+	      <property name="visible">True</property>
+	      <property name="can_default">True</property>
+	      <property name="can_focus">True</property>
+	      <property name="label">gtk-help</property>
+	      <property name="use_stock">True</property>
+	      <property name="relief">GTK_RELIEF_NORMAL</property>
+	      <property name="focus_on_click">True</property>
+	      <property name="response_id">-11</property>
+	    </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">1</property>
+
+	      <child>
+		<widget class="GtkAlignment" id="alignment1">
+		  <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="hbox1">
+		      <property name="visible">True</property>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">2</property>
+
+		      <child>
+			<widget class="GtkImage" id="image1">
+			  <property name="visible">True</property>
+			  <property name="stock">gtk-refresh</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="label1">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">_Update</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="button4">
+	      <property name="visible">True</property>
+	      <property name="can_default">True</property>
+	      <property name="can_focus">True</property>
+	      <property name="label">gtk-close</property>
+	      <property name="use_stock">True</property>
+	      <property name="relief">GTK_RELIEF_NORMAL</property>
+	      <property name="focus_on_click">True</property>
+	      <property name="response_id">-7</property>
+	    </widget>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">True</property>
+	  <property name="pack_type">GTK_PACK_END</property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkScrolledWindow" id="scrolledwindow1">
+	  <property name="border_width">5</property>
+	  <property name="visible">True</property>
+	  <property name="can_focus">True</property>
+	  <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+	  <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+	  <property name="shadow_type">GTK_SHADOW_NONE</property>
+	  <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+	  <child>
+	    <widget class="GtkViewport" id="viewport1">
+	      <property name="visible">True</property>
+	      <property name="shadow_type">GTK_SHADOW_IN</property>
+
+	      <child>
+		<widget class="GtkVBox" id="vbox">
+		  <property name="border_width">6</property>
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">0</property>
+		</widget>
+	      </child>
+	    </widget>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">True</property>
+	  <property name="fill">True</property>
+	</packing>
+      </child>
+    </widget>
+  </child>
+</widget>
+
+</glade-interface>
diff --git a/ui/summary-dialog.gladep b/ui/summary-dialog.gladep
@@ -0,0 +1,14 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-project SYSTEM "http://glade.gnome.org/glade-project-2.0.dtd">
+
+<glade-project>
+  <name>Mail Notification Summary Dialog</name>
+  <program_name>mail-notification</program_name>
+  <directory>../</directory>
+  <source_directory>../src</source_directory>
+  <pixmaps_directory>../art</pixmaps_directory>
+  <output_main_file>FALSE</output_main_file>
+  <output_support_files>FALSE</output_support_files>
+  <output_build_files>FALSE</output_build_files>
+  <translatable_strings_file>../</translatable_strings_file>
+</glade-project>
diff --git a/ui/summary-popup.glade b/ui/summary-popup.glade
@@ -0,0 +1,112 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+<requires lib="gnome"/>
+
+<widget class="GtkWindow" id="popup">
+  <property name="title" translatable="yes"></property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_NONE</property>
+  <property name="modal">False</property>
+  <property name="resizable">False</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="decorated">False</property>
+  <property name="skip_taskbar_hint">True</property>
+  <property name="skip_pager_hint">True</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+
+  <child>
+    <widget class="GtkEventBox" id="eventbox1">
+      <property name="visible">True</property>
+      <property name="visible_window">False</property>
+      <property name="above_child">False</property>
+      <signal name="button_press_event" handler="mn_summary_popup_button_press_event_h" last_modification_time="Wed, 15 Sep 2004 18:53:08 GMT"/>
+
+      <child>
+	<widget class="GtkVBox" id="vbox1">
+	  <property name="border_width">12</property>
+	  <property name="visible">True</property>
+	  <property name="homogeneous">False</property>
+	  <property name="spacing">12</property>
+
+	  <child>
+	    <widget class="GtkHBox" id="hbox1">
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">12</property>
+
+	      <child>
+		<widget class="GtkImage" id="image">
+		  <property name="visible">True</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="label1">
+		  <property name="visible">True</property>
+		  <property name="label" translatable="yes">&lt;span size=&quot;larger&quot; weight=&quot;bold&quot;&gt;Mail Summary&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.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>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">False</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkHSeparator" id="hseparator1">
+	      <property name="visible">True</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="vbox">
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">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>
+
+</glade-interface>
diff --git a/ui/summary-popup.gladep b/ui/summary-popup.gladep
@@ -0,0 +1,14 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-project SYSTEM "http://glade.gnome.org/glade-project-2.0.dtd">
+
+<glade-project>
+  <name>Mail Notification Summary Popup</name>
+  <program_name>mail-notification</program_name>
+  <directory>../</directory>
+  <source_directory>../src</source_directory>
+  <pixmaps_directory>../art</pixmaps_directory>
+  <output_main_file>FALSE</output_main_file>
+  <output_support_files>FALSE</output_support_files>
+  <output_build_files>FALSE</output_build_files>
+  <translatable_strings_file>../</translatable_strings_file>
+</glade-project>